open-mem 0.4.0 → 0.4.2
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 +116 -28
- package/dist/ai/compressor.d.ts +1 -0
- package/dist/ai/compressor.d.ts.map +1 -1
- package/dist/ai/parser.d.ts +1 -0
- package/dist/ai/parser.d.ts.map +1 -1
- package/dist/ai/provider.d.ts +2 -1
- package/dist/ai/provider.d.ts.map +1 -1
- package/dist/ai/rate-limiter.d.ts +9 -0
- package/dist/ai/rate-limiter.d.ts.map +1 -0
- package/dist/ai/summarizer.d.ts +1 -0
- package/dist/ai/summarizer.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/context/builder.d.ts.map +1 -1
- package/dist/db/database.d.ts +4 -0
- package/dist/db/database.d.ts.map +1 -1
- package/dist/db/observations.d.ts +7 -0
- package/dist/db/observations.d.ts.map +1 -1
- package/dist/db/pending.d.ts.map +1 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/sessions.d.ts +1 -0
- package/dist/db/sessions.d.ts.map +1 -1
- package/dist/db/summaries.d.ts +1 -0
- package/dist/db/summaries.d.ts.map +1 -1
- package/dist/hooks/chat-capture.d.ts +20 -0
- package/dist/hooks/chat-capture.d.ts.map +1 -0
- package/dist/hooks/session-events.d.ts +3 -2
- package/dist/hooks/session-events.d.ts.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +90 -53
- package/dist/mcp.d.ts +3 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +260 -0
- package/dist/queue/processor.d.ts +3 -1
- package/dist/queue/processor.d.ts.map +1 -1
- package/dist/search/embeddings.d.ts +9 -0
- package/dist/search/embeddings.d.ts.map +1 -0
- package/dist/search/hybrid.d.ts +11 -0
- package/dist/search/hybrid.d.ts.map +1 -0
- package/dist/servers/mcp-server.d.ts +33 -0
- package/dist/servers/mcp-server.d.ts.map +1 -0
- package/dist/tools/export.d.ts +6 -0
- package/dist/tools/export.d.ts.map +1 -0
- package/dist/tools/import.d.ts +6 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/recall.d.ts.map +1 -1
- package/dist/tools/save.d.ts.map +1 -1
- package/dist/tools/search.d.ts +2 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/timeline.d.ts.map +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/agents-md.d.ts +44 -0
- package/dist/utils/agents-md.d.ts.map +1 -0
- package/dist/utils/worktree.d.ts +10 -0
- package/dist/utils/worktree.d.ts.map +1 -0
- package/package.json +7 -8
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
3
|
-
${
|
|
2
|
+
var e0=Object.create;var{getPrototypeOf:$J,defineProperty:h$,getOwnPropertyNames:JJ}=Object;var WJ=Object.prototype.hasOwnProperty;var XJ=($,J,W)=>{W=$!=null?e0($J($)):{};let Q=J||!$||!$.__esModule?h$(W,"default",{value:$,enumerable:!0}):W;for(let X of JJ($))if(!WJ.call(Q,X))h$(Q,X,{get:()=>$[X],enumerable:!0});return Q};var QJ=($,J)=>{for(var W in J)h$($,W,{get:J[W],enumerable:!0,configurable:!0,set:(Q)=>J[W]=()=>Q})};var u=import.meta.require;import{generateText as BJ}from"ai";var HJ=new Set(["decision","bugfix","feature","refactor","discovery","change"]);function F($,J){let W=new RegExp(`<${J}[^>]*>([\\s\\S]*?)</${J}>`,"i"),Q=$.match(W);return Q?Q[1].trim():""}function r($,J){let W=new RegExp(`<${J}[^>]*>([\\s\\S]*?)</${J}>`,"gi"),Q=[];for(let X of $.matchAll(W)){let H=X[1].trim();if(H)Q.push(H)}return Q}function o$($){let J=F($,"observation");if(!J)return null;let W=F(J,"type").toLowerCase(),Q=HJ.has(W)?W:"discovery",X=F(J,"title")||"Untitled observation",H=F(J,"subtitle"),Y=F(J,"narrative"),_=r(F(J,"facts"),"fact"),G=r(F(J,"concepts"),"concept"),B=r(F(J,"files_read"),"file"),O=r(F(J,"files_modified"),"file");return{type:Q,title:X,subtitle:H,facts:_,narrative:Y,concepts:G,filesRead:B,filesModified:O}}function a$($){let J=F($,"session_summary");if(!J)return null;let W=F(J,"summary")||"No summary available",Q=r(F(J,"key_decisions"),"decision"),X=r(F(J,"files_modified"),"file"),H=r(F(J,"concepts"),"concept"),Y=F(J,"request")||void 0,_=F(J,"investigated")||void 0,G=F(J,"learned")||void 0,B=F(J,"completed")||void 0,O=F(J,"next_steps")||void 0;return{summary:W,keyDecisions:Q,filesModified:X,concepts:H,request:Y,investigated:_,learned:G,completed:B,nextSteps:O}}function k($){return Math.ceil($.length/4)}function t$($,J,W){let Q=W?`<session_context>
|
|
3
|
+
${W}
|
|
4
4
|
</session_context>
|
|
5
5
|
|
|
6
6
|
`:"";return`<task>
|
|
@@ -10,7 +10,7 @@ Analyze the following tool output and extract a structured observation.
|
|
|
10
10
|
<tool_name>${$}</tool_name>
|
|
11
11
|
|
|
12
12
|
<tool_output>
|
|
13
|
-
${
|
|
13
|
+
${J}
|
|
14
14
|
</tool_output>
|
|
15
15
|
|
|
16
16
|
${Q}<instructions>
|
|
@@ -47,7 +47,7 @@ Respond with EXACTLY this XML format:
|
|
|
47
47
|
<file>path/to/file/modified</file>
|
|
48
48
|
</files_modified>
|
|
49
49
|
</observation>
|
|
50
|
-
</instructions>`}function
|
|
50
|
+
</instructions>`}function s$($,J){let W=$.map((Q,X)=>` <obs index="${X+1}" type="${Q.type}">
|
|
51
51
|
<title>${Q.title}</title>
|
|
52
52
|
<narrative>${Q.narrative}</narrative>
|
|
53
53
|
</obs>`).join(`
|
|
@@ -55,10 +55,10 @@ Respond with EXACTLY this XML format:
|
|
|
55
55
|
Summarize the following coding session based on its observations.
|
|
56
56
|
</task>
|
|
57
57
|
|
|
58
|
-
<session_id>${
|
|
58
|
+
<session_id>${J}</session_id>
|
|
59
59
|
|
|
60
60
|
<observations>
|
|
61
|
-
${
|
|
61
|
+
${W}
|
|
62
62
|
</observations>
|
|
63
63
|
|
|
64
64
|
<instructions>
|
|
@@ -82,44 +82,53 @@ Respond with EXACTLY this XML format:
|
|
|
82
82
|
<concept>key-concept</concept>
|
|
83
83
|
</concepts>
|
|
84
84
|
</session_summary>
|
|
85
|
-
</instructions>`}var
|
|
85
|
+
</instructions>`}var YJ={"claude-sonnet-4-20250514":"us.anthropic.claude-sonnet-4-20250514-v1:0","claude-opus-4-20250514":"us.anthropic.claude-opus-4-20250514-v1:0","claude-3-5-sonnet-20241022":"us.anthropic.claude-3-5-sonnet-20241022-v2:0","claude-3-5-haiku-20241022":"us.anthropic.claude-3-5-haiku-20241022-v1:0","claude-3-haiku-20240307":"anthropic.claude-3-haiku-20240307-v1:0"};function _J($){if($.includes("."))return $;return YJ[$]||`us.anthropic.${$}-v1:0`}function w$($){switch($.provider){case"anthropic":{let{createAnthropic:J}=u("@ai-sdk/anthropic");return J({apiKey:$.apiKey})($.model)}case"bedrock":{let{createAmazonBedrock:J}=u("@ai-sdk/amazon-bedrock");return J()(_J($.model))}case"openai":{let{createOpenAI:J}=u("@ai-sdk/openai");return J({apiKey:$.apiKey})($.model)}case"google":{let{createGoogleGenerativeAI:J}=u("@ai-sdk/google");return J({apiKey:$.apiKey})($.model)}default:throw Error(`Unknown provider: ${$.provider}. Supported: anthropic, bedrock, openai, google`)}}function e$($){try{switch($.provider){case"google":{let{createGoogleGenerativeAI:J}=u("@ai-sdk/google");return J({apiKey:$.apiKey}).embedding("text-embedding-004")}case"openai":{let{createOpenAI:J}=u("@ai-sdk/openai");return J({apiKey:$.apiKey}).embedding("text-embedding-3-small")}case"bedrock":{let{createAmazonBedrock:J}=u("@ai-sdk/amazon-bedrock");return J().embedding("amazon.titan-embed-text-v2:0")}case"anthropic":return null;default:return null}}catch{return null}}var GJ={"gemini-2.5-flash-lite":10,"gemini-2.5-flash":10,"gemini-2.5-pro":5,"gemini-2.0-flash":15,"gemini-2.0-flash-lite":30,"gemini-3-flash":5},$0=0;async function R$($,J){if(!J)return;let W=GJ[$]||5,Q=Math.ceil(60000/W)+100,H=Date.now()-$0;if(H<Q){let Y=Q-H;await new Promise((_)=>setTimeout(_,Y))}$0=Date.now()}class U${model;config;_generate=BJ;constructor($){this.config=$,this.model=null;let J=$.provider!=="bedrock";if($.compressionEnabled&&(!J||$.apiKey))try{this.model=w$({provider:$.provider,model:$.model,apiKey:$.apiKey})}catch{}}static MAX_INPUT_LENGTH=50000;async compress($,J,W){if(!this.config.compressionEnabled||!this.model)return null;if(J.length<this.config.minOutputLength)return null;let Q=k(J),X=J.length>U$.MAX_INPUT_LENGTH?`${J.substring(0,U$.MAX_INPUT_LENGTH)}
|
|
86
86
|
|
|
87
|
-
[... truncated ...]`:
|
|
87
|
+
[... truncated ...]`:J,H=t$($,X,W),Y=2;for(let _=0;_<=Y;_++)try{if(this.config.provider==="google")await R$(this.config.model,this.config.rateLimitingEnabled);let{text:G}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:H}),B=o$(G);if(B)B.discoveryTokens=Q;return B}catch(G){if(SJ(G)&&_<Y){let B=2**_*1000;await J0(B);continue}return null}return null}async compressBatch($){let J=new Map;for(let W=0;W<$.length;W++){let Q=$[W],X=await this.compress(Q.toolName,Q.toolOutput,Q.sessionContext);if(J.set(Q.callId,X),W<$.length-1)await J0(200)}return J}createFallbackObservation($,J){let W=zJ(J),Q=MJ[$]??"discovery";return{type:Q,title:`${$} execution`,subtitle:J.substring(0,100).replace(/\n/g," "),facts:[],narrative:`Tool ${$} was executed. Output length: ${J.length} chars.`,concepts:[],filesRead:Q==="discovery"?W:[],filesModified:Q==="change"?W:[],discoveryTokens:k(J)}}async isAvailable(){if(!this.model)return!1;try{return await this._generate({model:this.model,maxOutputTokens:10,prompt:"ping"}),!0}catch{return!1}}}var MJ={Read:"discovery",Write:"change",Edit:"change",Bash:"change",Glob:"discovery",Grep:"discovery"},qJ=/(?:^|\s)((?:\.\/|\/|src\/|tests\/|lib\/)\S+\.\w+)/gm;function zJ($){let J=[];for(let W of $.matchAll(qJ))J.push(W[1]);return[...new Set(J)]}function SJ($){if(typeof $!=="object"||$===null)return!1;let J=$,W=J.status;if(W===429||W===500||W===503)return!0;let Q=J.error;if(typeof Q==="object"&&Q!==null&&Q.type==="overloaded_error")return!0;return!1}function J0($){return new Promise((J)=>setTimeout(J,$))}import{generateText as VJ}from"ai";class g${model;config;_generate=VJ;constructor($){this.config=$,this.model=null;let J=$.provider!=="bedrock";if($.compressionEnabled&&(!J||$.apiKey))try{this.model=w$({provider:$.provider,model:$.model,apiKey:$.apiKey})}catch{}}async summarize($,J){if(J.length===0)return null;if(!this.config.compressionEnabled||!this.model)return this.createFallbackSummary(J);let W=s$(J.map((Q)=>({type:Q.type,title:Q.title,narrative:Q.narrative})),$);try{if(this.config.provider==="google")await R$(this.config.model,this.config.rateLimitingEnabled);let{text:Q}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:W}),X=a$(Q);if(!X)return this.createFallbackSummary(J);return X}catch{return this.createFallbackSummary(J)}}createFallbackSummary($){let J=new Set,W=new Set,Q=[];for(let _ of $){for(let G of _.filesModified)J.add(G);for(let G of _.concepts)W.add(G);if(_.type==="decision")Q.push(_.title)}let X=new Map;for(let _ of $)X.set(_.type,(X.get(_.type)??0)+1);let H=Array.from(X.entries()).map(([_,G])=>`${G} ${_}${G>1?"s":""}`).join(", "),Y=Array.from(W).slice(0,5).join(", ");return{summary:`Session with ${$.length} observations: ${H}. Files modified: ${J.size}. Key concepts: ${Y}.`,keyDecisions:Q.slice(0,5),filesModified:Array.from(J),concepts:Array.from(W)}}shouldSummarize($){return $>=2}}var W0={dbPath:".open-mem/memory.db",provider:"google",apiKey:void 0,model:"gemini-2.5-flash-lite",maxTokensPerCompression:1024,compressionEnabled:!0,contextInjectionEnabled:!0,maxContextTokens:4000,batchSize:5,batchIntervalMs:30000,ignoredTools:[],minOutputLength:50,maxIndexEntries:20,sensitivePatterns:[],retentionDays:90,maxDatabaseSizeMb:500,logLevel:"warn",contextShowTokenCosts:!0,contextObservationTypes:"all",contextFullObservationCount:3,maxObservations:50,contextShowLastSummary:!0,rateLimitingEnabled:!0,folderContextEnabled:!0,folderContextMaxDepth:5};function UJ(){let $={};if(process.env.OPEN_MEM_DB_PATH)$.dbPath=process.env.OPEN_MEM_DB_PATH;if(process.env.OPEN_MEM_PROVIDER)$.provider=process.env.OPEN_MEM_PROVIDER;if(process.env.OPEN_MEM_MODEL)$.model=process.env.OPEN_MEM_MODEL;if(process.env.OPEN_MEM_MAX_CONTEXT_TOKENS)$.maxContextTokens=Number.parseInt(process.env.OPEN_MEM_MAX_CONTEXT_TOKENS,10);if(process.env.OPEN_MEM_COMPRESSION==="false")$.compressionEnabled=!1;if(process.env.OPEN_MEM_CONTEXT_INJECTION==="false")$.contextInjectionEnabled=!1;if(process.env.OPEN_MEM_IGNORED_TOOLS)$.ignoredTools=process.env.OPEN_MEM_IGNORED_TOOLS.split(",").map((J)=>J.trim());if(process.env.OPEN_MEM_BATCH_SIZE)$.batchSize=Number.parseInt(process.env.OPEN_MEM_BATCH_SIZE,10);if(process.env.OPEN_MEM_RETENTION_DAYS)$.retentionDays=Number.parseInt(process.env.OPEN_MEM_RETENTION_DAYS,10);if(process.env.OPEN_MEM_LOG_LEVEL)$.logLevel=process.env.OPEN_MEM_LOG_LEVEL;if(process.env.OPEN_MEM_CONTEXT_SHOW_TOKEN_COSTS==="false")$.contextShowTokenCosts=!1;if(process.env.OPEN_MEM_CONTEXT_TYPES)$.contextObservationTypes=process.env.OPEN_MEM_CONTEXT_TYPES==="all"?"all":process.env.OPEN_MEM_CONTEXT_TYPES.split(",").map((J)=>J.trim());if(process.env.OPEN_MEM_CONTEXT_FULL_COUNT)$.contextFullObservationCount=Number.parseInt(process.env.OPEN_MEM_CONTEXT_FULL_COUNT,10);if(process.env.OPEN_MEM_MAX_OBSERVATIONS)$.maxObservations=Number.parseInt(process.env.OPEN_MEM_MAX_OBSERVATIONS,10);if(process.env.OPEN_MEM_CONTEXT_SHOW_LAST_SUMMARY==="false")$.contextShowLastSummary=!1;if(process.env.OPEN_MEM_RATE_LIMITING==="false")$.rateLimitingEnabled=!1;if(process.env.OPEN_MEM_FOLDER_CONTEXT==="false")$.folderContextEnabled=!1;if(process.env.OPEN_MEM_FOLDER_CONTEXT_MAX_DEPTH)$.folderContextMaxDepth=Number.parseInt(process.env.OPEN_MEM_FOLDER_CONTEXT_MAX_DEPTH,10);return $}function x$($,J){let W=UJ(),Q={...W0,...W,...J};if(!Q.dbPath.startsWith("/"))Q.dbPath=`${$}/${Q.dbPath}`;if(!process.env.OPEN_MEM_PROVIDER&&!J?.provider){if(process.env.GOOGLE_GENERATIVE_AI_API_KEY||process.env.GEMINI_API_KEY)Q.provider="google";else if(process.env.ANTHROPIC_API_KEY)Q.provider="anthropic";else if(process.env.AWS_BEARER_TOKEN_BEDROCK||process.env.AWS_ACCESS_KEY_ID||process.env.AWS_PROFILE)Q.provider="bedrock"}if(!Q.apiKey)switch(Q.provider){case"google":Q.apiKey=process.env.GOOGLE_GENERATIVE_AI_API_KEY||process.env.GEMINI_API_KEY;break;case"anthropic":Q.apiKey=process.env.ANTHROPIC_API_KEY;break;case"openai":Q.apiKey=process.env.OPENAI_API_KEY;break;case"bedrock":break}return Q}function X0($){let J=[],W=$.provider!=="bedrock";if($.compressionEnabled&&W&&!$.apiKey)J.push("AI compression enabled but no API key found. Get a free Gemini API key at https://aistudio.google.com/apikey and set GOOGLE_GENERATIVE_AI_API_KEY, or set OPEN_MEM_PROVIDER and the appropriate API key for your provider.");if($.maxContextTokens<500)J.push("maxContextTokens must be at least 500");if($.batchSize<1)J.push("batchSize must be at least 1");if($.minOutputLength<0)J.push("minOutputLength must be non-negative");return J}function EJ(){return{...W0}}async function Q0($){let J=$.dbPath.substring(0,$.dbPath.lastIndexOf("/")),{mkdir:W}=await import("fs/promises");await W(J,{recursive:!0})}import{Database as OJ}from"bun:sqlite";import{existsSync as H0,mkdirSync as AJ,unlinkSync as Y0}from"fs";class _0{db;dbPath;constructor($){this.dbPath=$,this.db=this.open($),this.configure()}open($){let J=$.lastIndexOf("/");if(J>0){let W=$.substring(0,J);AJ(W,{recursive:!0})}return new OJ($,{create:!0})}configure(){try{this.applyPragmas()}catch($){console.warn("[open-mem] Database configure failed, attempting recovery by removing WAL/SHM files:",$.message);try{this.db.close()}catch{}this.deleteSidecarFiles();try{this.db=this.open(this.dbPath),this.applyPragmas(),console.warn("[open-mem] Recovery successful after removing WAL/SHM files");return}catch(J){console.warn("[open-mem] WAL/SHM cleanup insufficient, recreating database from scratch:",J.message);try{this.db.close()}catch{}this.deleteDatabaseFiles();try{this.db=this.open(this.dbPath),this.applyPragmas(),console.warn("[open-mem] Recovery successful after full database recreation");return}catch(W){throw console.warn("[open-mem] All recovery attempts failed, filesystem may be broken:",W.message),$}}}}applyPragmas(){this.db.exec("PRAGMA journal_mode = WAL"),this.db.exec("PRAGMA synchronous = NORMAL"),this.db.exec("PRAGMA foreign_keys = ON"),this.db.exec("PRAGMA busy_timeout = 5000")}deleteSidecarFiles(){for(let $ of["-wal","-shm"]){let J=this.dbPath+$;try{if(H0(J))Y0(J)}catch{}}}deleteDatabaseFiles(){this.deleteSidecarFiles();try{if(H0(this.dbPath))Y0(this.dbPath)}catch{}}ensureMigrationTable(){this.db.exec(`
|
|
88
88
|
CREATE TABLE IF NOT EXISTS _migrations (
|
|
89
89
|
version INTEGER PRIMARY KEY,
|
|
90
90
|
name TEXT NOT NULL,
|
|
91
91
|
applied_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
92
92
|
)
|
|
93
|
-
`)}migrate($){this.ensureMigrationTable();let
|
|
93
|
+
`)}migrate($){this.ensureMigrationTable();let J=this.db.query("SELECT version FROM _migrations ORDER BY version").all(),W=new Set(J.map((X)=>X.version)),Q=$.filter((X)=>!W.has(X.version)).sort((X,H)=>X.version-H.version);for(let X of Q)this.db.transaction(()=>{this.db.exec(X.up),this.db.query("INSERT INTO _migrations (version, name) VALUES ($version, $name)").run({$version:X.version,$name:X.name})})()}run($,J){let W=this.db.query($);if(J)W.run(...J);else W.run()}get($,J){let W=this.db.query($);return J?W.get(...J):W.get()}all($,J){let W=this.db.query($);return J?W.all(...J):W.all()}exec($){this.db.exec($)}transaction($){return this.db.transaction($)()}close(){this.db.close()}get isOpen(){try{return this.db.query("SELECT 1").get(),!0}catch{return!1}}get raw(){return this.db}}function G0($){return new _0($)}import{randomUUID as NJ}from"crypto";class y${db;constructor($){this.db=$}create($){let J=NJ(),W=new Date().toISOString(),Q=$.discoveryTokens??0;return this.db.run(`INSERT INTO observations
|
|
94
|
+
(id, session_id, type, title, subtitle, facts, narrative,
|
|
95
|
+
concepts, files_read, files_modified, raw_tool_output,
|
|
96
|
+
tool_name, created_at, token_count, discovery_tokens)
|
|
97
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[J,$.sessionId,$.type,$.title,$.subtitle,JSON.stringify($.facts),$.narrative,JSON.stringify($.concepts),JSON.stringify($.filesRead),JSON.stringify($.filesModified),$.rawToolOutput,$.toolName,W,$.tokenCount,Q]),{...$,id:J,createdAt:W,discoveryTokens:Q}}importObservation($){this.db.run(`INSERT INTO observations
|
|
94
98
|
(id, session_id, type, title, subtitle, facts, narrative,
|
|
95
99
|
concepts, files_read, files_modified, raw_tool_output,
|
|
96
|
-
tool_name, created_at, token_count)
|
|
97
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[
|
|
100
|
+
tool_name, created_at, token_count, discovery_tokens)
|
|
101
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[$.id,$.sessionId,$.type,$.title,$.subtitle,JSON.stringify($.facts),$.narrative,JSON.stringify($.concepts),JSON.stringify($.filesRead),JSON.stringify($.filesModified),$.rawToolOutput,$.toolName,$.createdAt,$.tokenCount,$.discoveryTokens??0])}getById($){let J=this.db.get("SELECT * FROM observations WHERE id = ?",[$]);return J?this.mapRow(J):null}getBySession($){return this.db.all("SELECT * FROM observations WHERE session_id = ? ORDER BY created_at ASC",[$]).map((J)=>this.mapRow(J))}getCount($){if($)return this.db.get("SELECT COUNT(*) as count FROM observations WHERE session_id = ?",[$])?.count??0;return this.db.get("SELECT COUNT(*) as count FROM observations")?.count??0}getIndex($,J=20){return this.db.all(`SELECT o.id, o.session_id, o.type, o.title, o.token_count, o.discovery_tokens, o.created_at
|
|
98
102
|
FROM observations o
|
|
99
103
|
JOIN sessions s ON o.session_id = s.id
|
|
100
104
|
WHERE s.project_path = ?
|
|
101
105
|
ORDER BY o.created_at DESC
|
|
102
|
-
LIMIT ?`,[$,
|
|
106
|
+
LIMIT ?`,[$,J]).map((W)=>({id:W.id,sessionId:W.session_id,type:W.type,title:W.title,tokenCount:W.token_count,discoveryTokens:W.discovery_tokens??0,createdAt:W.created_at}))}search($){let J=`
|
|
103
107
|
SELECT o.*, rank
|
|
104
108
|
FROM observations o
|
|
105
109
|
JOIN observations_fts fts ON o._rowid = fts.rowid
|
|
106
110
|
WHERE observations_fts MATCH ?
|
|
107
|
-
`,
|
|
111
|
+
`,W=[$.query];if($.sessionId)J+=" AND o.session_id = ?",W.push($.sessionId);if($.type)J+=" AND o.type = ?",W.push($.type);return J+=" ORDER BY rank LIMIT ? OFFSET ?",W.push($.limit??10),W.push($.offset??0),this.db.all(J,W).map((Q)=>({observation:this.mapRow(Q),rank:Q.rank,snippet:Q.title}))}searchByConcept($,J=10){return this.db.all(`SELECT o.*
|
|
108
112
|
FROM observations o
|
|
109
113
|
JOIN observations_fts fts ON o._rowid = fts.rowid
|
|
110
114
|
WHERE observations_fts MATCH ?
|
|
111
115
|
ORDER BY rank
|
|
112
|
-
LIMIT ?`,[`concepts:${$}`,
|
|
116
|
+
LIMIT ?`,[`concepts:${$}`,J]).map((W)=>this.mapRow(W))}searchByFile($,J=10){return this.db.all(`SELECT o.*
|
|
113
117
|
FROM observations o
|
|
114
118
|
JOIN observations_fts fts ON o._rowid = fts.rowid
|
|
115
119
|
WHERE observations_fts MATCH ?
|
|
116
120
|
ORDER BY rank
|
|
117
|
-
LIMIT ?`,[`files_read:"${
|
|
121
|
+
LIMIT ?`,[`files_read:"${$.replace(/"/g,'""')}" OR files_modified:"${$.replace(/"/g,'""')}"`,J]).map((W)=>this.mapRow(W))}setEmbedding($,J){this.db.run("UPDATE observations SET embedding = ? WHERE id = ?",[JSON.stringify(J),$])}getWithEmbeddings($,J){return this.db.all(`SELECT o.id, o.embedding, o.title
|
|
122
|
+
FROM observations o
|
|
123
|
+
JOIN sessions s ON o.session_id = s.id
|
|
124
|
+
WHERE s.project_path = ? AND o.embedding IS NOT NULL
|
|
125
|
+
ORDER BY o.created_at DESC
|
|
126
|
+
LIMIT ?`,[$,J]).map((W)=>{try{return{id:W.id,embedding:JSON.parse(W.embedding),title:W.title}}catch{return null}}).filter((W)=>W!==null)}mapRow($){return{id:$.id,sessionId:$.session_id,type:$.type,title:$.title,subtitle:$.subtitle,facts:JSON.parse($.facts),narrative:$.narrative,concepts:JSON.parse($.concepts),filesRead:JSON.parse($.files_read),filesModified:JSON.parse($.files_modified),rawToolOutput:$.raw_tool_output,toolName:$.tool_name,createdAt:$.created_at,tokenCount:$.token_count,discoveryTokens:$.discovery_tokens??0}}}import{randomUUID as LJ}from"crypto";class m${db;constructor($){this.db=$}create($){let J=LJ(),W=new Date().toISOString();return this.db.run(`INSERT INTO pending_messages
|
|
118
127
|
(id, session_id, tool_name, tool_output, call_id, created_at)
|
|
119
|
-
VALUES (?, ?, ?, ?, ?, ?)`,[
|
|
128
|
+
VALUES (?, ?, ?, ?, ?, ?)`,[J,$.sessionId,$.toolName,$.toolOutput,$.callId,W]),{...$,id:J,createdAt:W,status:"pending",retryCount:0,error:null}}getPending($=10){return this.db.all("SELECT * FROM pending_messages WHERE status = 'pending' ORDER BY created_at ASC LIMIT ?",[$]).map((J)=>this.mapRow(J))}getByStatus($){return this.db.all("SELECT * FROM pending_messages WHERE status = ? ORDER BY created_at ASC",[$]).map((J)=>this.mapRow(J))}markProcessing($){this.db.run("UPDATE pending_messages SET status = 'processing' WHERE id = ?",[$])}markCompleted($){this.db.run("UPDATE pending_messages SET status = 'completed' WHERE id = ?",[$])}markFailed($,J){this.db.run("UPDATE pending_messages SET status = 'failed', error = ?, retry_count = retry_count + 1 WHERE id = ?",[J,$])}resetStale($=5){return this.db.all(`UPDATE pending_messages SET status = 'pending'
|
|
120
129
|
WHERE status = 'processing'
|
|
121
130
|
AND created_at < datetime('now', ? || ' minutes')
|
|
122
|
-
RETURNING id`,[`-${$}`]).length}mapRow($){return{id:$.id,sessionId:$.session_id,toolName:$.tool_name,toolOutput:$.tool_output,callId:$.call_id,createdAt:$.created_at,status:$.status,retryCount:$.retry_count,error:$.error??null}}}var
|
|
131
|
+
RETURNING id`,[`-${$}`]).length}mapRow($){return{id:$.id,sessionId:$.session_id,toolName:$.tool_name,toolOutput:$.tool_output,callId:$.call_id,createdAt:$.created_at,status:$.status,retryCount:$.retry_count,error:$.error??null}}}var jJ=[{version:1,name:"create-core-tables",up:`
|
|
123
132
|
-- Sessions table
|
|
124
133
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
125
134
|
_rowid INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -288,33 +297,61 @@ Respond with EXACTLY this XML format:
|
|
|
288
297
|
ALTER TABLE session_summaries ADD COLUMN learned TEXT NOT NULL DEFAULT '';
|
|
289
298
|
ALTER TABLE session_summaries ADD COLUMN completed TEXT NOT NULL DEFAULT '';
|
|
290
299
|
ALTER TABLE session_summaries ADD COLUMN next_steps TEXT NOT NULL DEFAULT '';
|
|
291
|
-
`}
|
|
292
|
-
|
|
300
|
+
`},{version:4,name:"add-discovery-tokens",up:`
|
|
301
|
+
ALTER TABLE observations ADD COLUMN discovery_tokens INTEGER NOT NULL DEFAULT 0;
|
|
302
|
+
`},{version:5,name:"add-embedding-column",up:`
|
|
303
|
+
ALTER TABLE observations ADD COLUMN embedding TEXT;
|
|
304
|
+
`}];function B0($){$.migrate(jJ)}class Z${db;constructor($){this.db=$}create($,J){let W=new Date().toISOString();return this.db.run(`INSERT INTO sessions (id, project_path, started_at, status)
|
|
305
|
+
VALUES (?, ?, ?, 'active')`,[$,J,W]),this.getById($)}getOrCreate($,J){let W=this.getById($);if(W)return W;return this.create($,J)}getById($){let J=this.db.get("SELECT * FROM sessions WHERE id = ?",[$]);return J?this.mapRow(J):null}getRecent($,J=10){return this.db.all("SELECT * FROM sessions WHERE project_path = ? ORDER BY started_at DESC LIMIT ?",[$,J]).map((W)=>this.mapRow(W))}getAll($){return this.db.all("SELECT * FROM sessions WHERE project_path = ? ORDER BY started_at DESC",[$]).map((J)=>this.mapRow(J))}getActive(){return this.db.all("SELECT * FROM sessions WHERE status = 'active' ORDER BY started_at DESC").map(($)=>this.mapRow($))}updateStatus($,J){this.db.run("UPDATE sessions SET status = ? WHERE id = ?",[J,$])}markCompleted($){this.db.run("UPDATE sessions SET status = 'completed', ended_at = datetime('now') WHERE id = ?",[$])}incrementObservationCount($){this.db.run("UPDATE sessions SET observation_count = observation_count + 1 WHERE id = ?",[$])}setSummary($,J){this.db.run("UPDATE sessions SET summary_id = ? WHERE id = ?",[J,$])}mapRow($){return{id:$.id,projectPath:$.project_path,startedAt:$.started_at,endedAt:$.ended_at??null,status:$.status,observationCount:$.observation_count,summaryId:$.summary_id??null}}}import{randomUUID as KJ}from"crypto";class l${db;constructor($){this.db=$}create($){let J=KJ(),W=new Date().toISOString();return this.db.run(`INSERT INTO session_summaries
|
|
293
306
|
(id, session_id, summary, key_decisions, files_modified,
|
|
294
307
|
concepts, created_at, token_count,
|
|
295
308
|
request, investigated, learned, completed, next_steps)
|
|
296
|
-
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[
|
|
309
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[J,$.sessionId,$.summary,JSON.stringify($.keyDecisions),JSON.stringify($.filesModified),JSON.stringify($.concepts),W,$.tokenCount,$.request??"",$.investigated??"",$.learned??"",$.completed??"",$.nextSteps??""]),{...$,id:J,createdAt:W}}importSummary($){this.db.run(`INSERT INTO session_summaries
|
|
310
|
+
(id, session_id, summary, key_decisions, files_modified,
|
|
311
|
+
concepts, created_at, token_count,
|
|
312
|
+
request, investigated, learned, completed, next_steps)
|
|
313
|
+
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[$.id,$.sessionId,$.summary,JSON.stringify($.keyDecisions),JSON.stringify($.filesModified),JSON.stringify($.concepts),$.createdAt,$.tokenCount,$.request??"",$.investigated??"",$.learned??"",$.completed??"",$.nextSteps??""])}getBySessionId($){let J=this.db.get("SELECT * FROM session_summaries WHERE session_id = ?",[$]);return J?this.mapRow(J):null}getRecent($=10){return this.db.all("SELECT * FROM session_summaries ORDER BY created_at DESC LIMIT ?",[$]).map((J)=>this.mapRow(J))}search($,J=10){return this.db.all(`SELECT ss.*
|
|
297
314
|
FROM session_summaries ss
|
|
298
315
|
JOIN summaries_fts fts ON ss._rowid = fts.rowid
|
|
299
316
|
WHERE summaries_fts MATCH ?
|
|
300
317
|
ORDER BY rank
|
|
301
|
-
LIMIT ?`,[$,
|
|
302
|
-
`)}function
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
`)}function O$($,W,J,Q,X=[]){let H=Q,_=[],G=[];for(let Y of W){let z=Y.tokenCount||Z(Y.summary);if(H-z<0)break;_.push(Y),H-=z}for(let Y of J){let z=Y.tokenCount||Z(Y.title);if(H-z<0)break;G.push(Y),H-=z}return{recentSummaries:_,observationIndex:G,fullObservations:[...X],totalTokens:Q-H}}function $W($,W,J,Q,X){return async(H,_)=>{try{if(!$.contextInjectionEnabled)return;let G=J.getRecent(X,3),Y=G.map((K)=>K.summaryId?Q.getBySessionId(K.id):null).filter((K)=>K!==null),z=W.getIndex(X,10);if(Y.length===0&&z.length===0)return;let A=O$(G,Y,z,Math.floor($.maxContextTokens/2));_.context.push(e$(A))}catch(G){console.error("[open-mem] Compaction hook error:",G)}}}function WW($,W,J,Q,X){return async(H,_)=>{try{if(!$.contextInjectionEnabled)return;let G=J.getRecent(X,5);if(G.length===0)return;let Y=G.map((P)=>P.summaryId?Q.getBySessionId(P.id):null).filter((P)=>P!==null),z=W.getIndex(X,$.maxObservations);if(Y.length===0&&z.length===0)return;let K=z.slice(0,$.contextFullObservationCount).map((P)=>P.id).map((P)=>W.getById(P)).filter((P)=>P!==null),n=O$(G,Y,z,$.maxContextTokens,K),f$={showTokenCosts:$.contextShowTokenCosts,observationTypes:$.contextObservationTypes,fullObservationCount:$.contextFullObservationCount,showLastSummary:$.contextShowLastSummary};_.system.push(s$(n,f$))}catch(G){console.error("[open-mem] Context injection error:",G)}}}function JW($,W,J){return async(Q)=>{try{let{event:X}=Q,H=X.properties.sessionID;switch(X.type){case"session.created":{if(H)W.getOrCreate(H,J);break}case"session.idle":{if(await $.processBatch(),H)W.updateStatus(H,"idle");break}case"session.completed":case"session.ended":{if(H)await $.processBatch(),await $.summarizeSession(H),W.markCompleted(H);break}default:break}}catch(X){console.error("[open-mem] Event handler error:",X)}}}function XW($,W,J,Q){return async(X,H)=>{try{let{tool:_,sessionID:G,callID:Y}=X,{output:z}=H;if($.ignoredTools.includes(_))return;if(!z||z.length<$.minOutputLength)return;let A=z;for(let K of $.sensitivePatterns)try{A=A.replace(new RegExp(K,"g"),"[REDACTED]")}catch{}A=A.replace(/<private>[\s\S]*?<\/private>/g,"[PRIVATE]"),J.getOrCreate(G,Q),W.enqueue(G,_,A,Y)}catch(_){console.error("[open-mem] Tool capture error:",_)}}}class x${config;compressor;summarizer;pendingRepo;observationRepo;sessionRepo;summaryRepo;processing=!1;timer=null;constructor($,W,J,Q,X,H,_){this.config=$;this.compressor=W;this.summarizer=J;this.pendingRepo=Q;this.observationRepo=X;this.sessionRepo=H;this.summaryRepo=_}enqueue($,W,J,Q){this.pendingRepo.create({sessionId:$,toolName:W,toolOutput:J,callId:Q})}async processBatch(){if(this.processing)return 0;this.processing=!0;let $=0;try{this.pendingRepo.resetStale(5);let W=this.pendingRepo.getPending(this.config.batchSize);if(W.length===0)return 0;for(let J of W)try{this.pendingRepo.markProcessing(J.id);let X=await this.compressor.compress(J.toolName,J.toolOutput)??this.compressor.createFallbackObservation(J.toolName,J.toolOutput);this.observationRepo.create({sessionId:J.sessionId,type:X.type,title:X.title,subtitle:X.subtitle,facts:X.facts,narrative:X.narrative,concepts:X.concepts,filesRead:X.filesRead,filesModified:X.filesModified,rawToolOutput:J.toolOutput,toolName:J.toolName,tokenCount:Z(`${X.title} ${X.narrative} ${X.facts.join(" ")}`)}),this.sessionRepo.incrementObservationCount(J.sessionId),this.pendingRepo.markCompleted(J.id),$++}catch(Q){this.pendingRepo.markFailed(J.id,String(Q))}return $}finally{this.processing=!1}}async summarizeSession($){let W=this.observationRepo.getBySession($);if(!this.summarizer.shouldSummarize(W.length))return;if(this.summaryRepo.getBySessionId($))return;let Q=await this.summarizer.summarize($,W);if(!Q)return;let X=this.summaryRepo.create({sessionId:$,summary:Q.summary,keyDecisions:Q.keyDecisions,filesModified:Q.filesModified,concepts:Q.concepts,tokenCount:Z(Q.summary)});this.sessionRepo.setSummary($,X.id)}start(){if(this.timer)return;this.timer=setInterval(async()=>{try{await this.processBatch()}catch{}},this.config.batchIntervalMs)}stop(){if(this.timer)clearInterval(this.timer),this.timer=null}get isRunning(){return this.timer!==null}get isProcessing(){return this.processing}getStats(){return{pending:this.pendingRepo.getPending(1000).length,processing:this.processing}}}var D={};KW(D,{void:()=>v0,util:()=>L,unknown:()=>w0,union:()=>k0,undefined:()=>N0,tuple:()=>h0,transformer:()=>p0,symbol:()=>D0,string:()=>zW,strictObject:()=>b0,setErrorMap:()=>dW,set:()=>x0,record:()=>T0,quotelessJson:()=>pW,promise:()=>c0,preprocess:()=>i0,pipeline:()=>r0,ostring:()=>a0,optional:()=>n0,onumber:()=>o0,oboolean:()=>t0,objectUtil:()=>y$,object:()=>C0,number:()=>jW,nullable:()=>d0,null:()=>O0,never:()=>F0,nativeEnum:()=>u0,nan:()=>L0,map:()=>g0,makeIssue:()=>E$,literal:()=>l0,lazy:()=>Z0,late:()=>U0,isValid:()=>l,isDirty:()=>w$,isAsync:()=>e,isAborted:()=>K$,intersection:()=>I0,instanceof:()=>S0,getParsedType:()=>I,getErrorMap:()=>s,function:()=>y0,enum:()=>m0,effect:()=>p0,discriminatedUnion:()=>P0,defaultErrorMap:()=>g,datetimeRegex:()=>MW,date:()=>R0,custom:()=>qW,coerce:()=>s0,boolean:()=>VW,bigint:()=>A0,array:()=>f0,any:()=>K0,addIssueToContext:()=>q,ZodVoid:()=>S$,ZodUnknown:()=>m,ZodUnion:()=>H$,ZodUndefined:()=>X$,ZodType:()=>S,ZodTuple:()=>T,ZodTransformer:()=>k,ZodSymbol:()=>U$,ZodString:()=>v,ZodSet:()=>o,ZodSchema:()=>S,ZodRecord:()=>L$,ZodReadonly:()=>z$,ZodPromise:()=>t,ZodPipeline:()=>D$,ZodParsedType:()=>B,ZodOptional:()=>C,ZodObject:()=>R,ZodNumber:()=>u,ZodNullable:()=>y,ZodNull:()=>Q$,ZodNever:()=>h,ZodNativeEnum:()=>M$,ZodNaN:()=>R$,ZodMap:()=>A$,ZodLiteral:()=>Y$,ZodLazy:()=>G$,ZodIssueCode:()=>M,ZodIntersection:()=>_$,ZodFunction:()=>W$,ZodFirstPartyTypeKind:()=>E,ZodError:()=>F,ZodEnum:()=>p,ZodEffects:()=>k,ZodDiscriminatedUnion:()=>F$,ZodDefault:()=>B$,ZodDate:()=>r,ZodCatch:()=>q$,ZodBranded:()=>v$,ZodBoolean:()=>J$,ZodBigInt:()=>c,ZodArray:()=>f,ZodAny:()=>a,Schema:()=>S,ParseStatus:()=>O,OK:()=>w,NEVER:()=>e0,INVALID:()=>V,EMPTY_PATH:()=>iW,DIRTY:()=>i,BRAND:()=>E0});var L;(function($){$.assertEqual=(X)=>{};function W(X){}$.assertIs=W;function J(X){throw Error()}$.assertNever=J,$.arrayToEnum=(X)=>{let H={};for(let _ of X)H[_]=_;return H},$.getValidEnumValues=(X)=>{let H=$.objectKeys(X).filter((G)=>typeof X[X[G]]!=="number"),_={};for(let G of H)_[G]=X[G];return $.objectValues(_)},$.objectValues=(X)=>{return $.objectKeys(X).map(function(H){return X[H]})},$.objectKeys=typeof Object.keys==="function"?(X)=>Object.keys(X):(X)=>{let H=[];for(let _ in X)if(Object.prototype.hasOwnProperty.call(X,_))H.push(_);return H},$.find=(X,H)=>{for(let _ of X)if(H(_))return _;return},$.isInteger=typeof Number.isInteger==="function"?(X)=>Number.isInteger(X):(X)=>typeof X==="number"&&Number.isFinite(X)&&Math.floor(X)===X;function Q(X,H=" | "){return X.map((_)=>typeof _==="string"?`'${_}'`:_).join(H)}$.joinValues=Q,$.jsonStringifyReplacer=(X,H)=>{if(typeof H==="bigint")return H.toString();return H}})(L||(L={}));var y$;(function($){$.mergeShapes=(W,J)=>{return{...W,...J}}})(y$||(y$={}));var B=L.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),I=($)=>{switch(typeof $){case"undefined":return B.undefined;case"string":return B.string;case"number":return Number.isNaN($)?B.nan:B.number;case"boolean":return B.boolean;case"function":return B.function;case"bigint":return B.bigint;case"symbol":return B.symbol;case"object":if(Array.isArray($))return B.array;if($===null)return B.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return B.promise;if(typeof Map<"u"&&$ instanceof Map)return B.map;if(typeof Set<"u"&&$ instanceof Set)return B.set;if(typeof Date<"u"&&$ instanceof Date)return B.date;return B.object;default:return B.unknown}};var M=L.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),pW=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class F extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(J)=>{this.issues=[...this.issues,J]},this.addIssues=(J=[])=>{this.issues=[...this.issues,...J]};let W=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,W);else this.__proto__=W;this.name="ZodError",this.issues=$}format($){let W=$||function(X){return X.message},J={_errors:[]},Q=(X)=>{for(let H of X.issues)if(H.code==="invalid_union")H.unionErrors.map(Q);else if(H.code==="invalid_return_type")Q(H.returnTypeError);else if(H.code==="invalid_arguments")Q(H.argumentsError);else if(H.path.length===0)J._errors.push(W(H));else{let _=J,G=0;while(G<H.path.length){let Y=H.path[G];if(G!==H.path.length-1)_[Y]=_[Y]||{_errors:[]};else _[Y]=_[Y]||{_errors:[]},_[Y]._errors.push(W(H));_=_[Y],G++}}};return Q(this),J}static assert($){if(!($ instanceof F))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,L.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(W)=>W.message){let W={},J=[];for(let Q of this.issues)if(Q.path.length>0){let X=Q.path[0];W[X]=W[X]||[],W[X].push($(Q))}else J.push($(Q));return{formErrors:J,fieldErrors:W}}get formErrors(){return this.flatten()}}F.create=($)=>{return new F($)};var nW=($,W)=>{let J;switch($.code){case M.invalid_type:if($.received===B.undefined)J="Required";else J=`Expected ${$.expected}, received ${$.received}`;break;case M.invalid_literal:J=`Invalid literal value, expected ${JSON.stringify($.expected,L.jsonStringifyReplacer)}`;break;case M.unrecognized_keys:J=`Unrecognized key(s) in object: ${L.joinValues($.keys,", ")}`;break;case M.invalid_union:J="Invalid input";break;case M.invalid_union_discriminator:J=`Invalid discriminator value. Expected ${L.joinValues($.options)}`;break;case M.invalid_enum_value:J=`Invalid enum value. Expected ${L.joinValues($.options)}, received '${$.received}'`;break;case M.invalid_arguments:J="Invalid function arguments";break;case M.invalid_return_type:J="Invalid function return type";break;case M.invalid_date:J="Invalid date";break;case M.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(J=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")J=`${J} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)J=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)J=`Invalid input: must end with "${$.validation.endsWith}"`;else L.assertNever($.validation);else if($.validation!=="regex")J=`Invalid ${$.validation}`;else J="Invalid";break;case M.too_small:if($.type==="array")J=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")J=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")J=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")J=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")J=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else J="Invalid input";break;case M.too_big:if($.type==="array")J=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")J=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")J=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")J=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")J=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else J="Invalid input";break;case M.custom:J="Invalid input";break;case M.invalid_intersection_types:J="Intersection results could not be merged";break;case M.not_multiple_of:J=`Number must be a multiple of ${$.multipleOf}`;break;case M.not_finite:J="Number must be finite";break;default:J=W.defaultError,L.assertNever($)}return{message:J}},g=nW;var QW=g;function dW($){QW=$}function s(){return QW}var E$=($)=>{let{data:W,path:J,errorMaps:Q,issueData:X}=$,H=[...J,...X.path||[]],_={...X,path:H};if(X.message!==void 0)return{...X,path:H,message:X.message};let G="",Y=Q.filter((z)=>!!z).slice().reverse();for(let z of Y)G=z(_,{data:W,defaultError:G}).message;return{...X,path:H,message:G}},iW=[];function q($,W){let J=s(),Q=E$({issueData:W,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,J,J===g?void 0:g].filter((X)=>!!X)});$.common.issues.push(Q)}class O{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,W){let J=[];for(let Q of W){if(Q.status==="aborted")return V;if(Q.status==="dirty")$.dirty();J.push(Q.value)}return{status:$.value,value:J}}static async mergeObjectAsync($,W){let J=[];for(let Q of W){let X=await Q.key,H=await Q.value;J.push({key:X,value:H})}return O.mergeObjectSync($,J)}static mergeObjectSync($,W){let J={};for(let Q of W){let{key:X,value:H}=Q;if(X.status==="aborted")return V;if(H.status==="aborted")return V;if(X.status==="dirty")$.dirty();if(H.status==="dirty")$.dirty();if(X.value!=="__proto__"&&(typeof H.value<"u"||Q.alwaysSet))J[X.value]=H.value}return{status:$.value,value:J}}}var V=Object.freeze({status:"aborted"}),i=($)=>({status:"dirty",value:$}),w=($)=>({status:"valid",value:$}),K$=($)=>$.status==="aborted",w$=($)=>$.status==="dirty",l=($)=>$.status==="valid",e=($)=>typeof Promise<"u"&&$ instanceof Promise;var j;(function($){$.errToObj=(W)=>typeof W==="string"?{message:W}:W||{},$.toString=(W)=>typeof W==="string"?W:W?.message})(j||(j={}));class b{constructor($,W,J,Q){this._cachedPath=[],this.parent=$,this.data=W,this._path=J,this._key=Q}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var HW=($,W)=>{if(l(W))return{success:!0,data:W.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let J=new F($.common.issues);return this._error=J,this._error}}}};function U($){if(!$)return{};let{errorMap:W,invalid_type_error:J,required_error:Q,description:X}=$;if(W&&(J||Q))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(W)return{errorMap:W,description:X};return{errorMap:(_,G)=>{let{message:Y}=$;if(_.code==="invalid_enum_value")return{message:Y??G.defaultError};if(typeof G.data>"u")return{message:Y??Q??G.defaultError};if(_.code!=="invalid_type")return{message:G.defaultError};return{message:Y??J??G.defaultError}},description:X}}class S{get description(){return this._def.description}_getType($){return I($.data)}_getOrReturnCtx($,W){return W||{common:$.parent.common,data:$.data,parsedType:I($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new O,ctx:{common:$.parent.common,data:$.data,parsedType:I($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let W=this._parse($);if(e(W))throw Error("Synchronous parse encountered promise.");return W}_parseAsync($){let W=this._parse($);return Promise.resolve(W)}parse($,W){let J=this.safeParse($,W);if(J.success)return J.data;throw J.error}safeParse($,W){let J={common:{issues:[],async:W?.async??!1,contextualErrorMap:W?.errorMap},path:W?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I($)},Q=this._parseSync({data:$,path:J.path,parent:J});return HW(J,Q)}"~validate"($){let W={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I($)};if(!this["~standard"].async)try{let J=this._parseSync({data:$,path:[],parent:W});return l(J)?{value:J.value}:{issues:W.common.issues}}catch(J){if(J?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;W.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:W}).then((J)=>l(J)?{value:J.value}:{issues:W.common.issues})}async parseAsync($,W){let J=await this.safeParseAsync($,W);if(J.success)return J.data;throw J.error}async safeParseAsync($,W){let J={common:{issues:[],contextualErrorMap:W?.errorMap,async:!0},path:W?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I($)},Q=this._parse({data:$,path:J.path,parent:J}),X=await(e(Q)?Q:Promise.resolve(Q));return HW(J,X)}refine($,W){let J=(Q)=>{if(typeof W==="string"||typeof W>"u")return{message:W};else if(typeof W==="function")return W(Q);else return W};return this._refinement((Q,X)=>{let H=$(Q),_=()=>X.addIssue({code:M.custom,...J(Q)});if(typeof Promise<"u"&&H instanceof Promise)return H.then((G)=>{if(!G)return _(),!1;else return!0});if(!H)return _(),!1;else return!0})}refinement($,W){return this._refinement((J,Q)=>{if(!$(J))return Q.addIssue(typeof W==="function"?W(J,Q):W),!1;else return!0})}_refinement($){return new k({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(W)=>this["~validate"](W)}}optional(){return C.create(this,this._def)}nullable(){return y.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return f.create(this)}promise(){return t.create(this,this._def)}or($){return H$.create([this,$],this._def)}and($){return _$.create(this,$,this._def)}transform($){return new k({...U(this._def),schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:$}})}default($){let W=typeof $==="function"?$:()=>$;return new B$({...U(this._def),innerType:this,defaultValue:W,typeName:E.ZodDefault})}brand(){return new v$({typeName:E.ZodBranded,type:this,...U(this._def)})}catch($){let W=typeof $==="function"?$:()=>$;return new q$({...U(this._def),innerType:this,catchValue:W,typeName:E.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return D$.create(this,$)}readonly(){return z$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var rW=/^c[^\s-]{8,}$/i,aW=/^[0-9a-z]+$/,oW=/^[0-9A-HJKMNP-TV-Z]{26}$/i,tW=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,sW=/^[a-z0-9_-]{21}$/i,eW=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,$0=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,W0=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,J0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Z$,X0=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Q0=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,H0=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,_0=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,G0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Y0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,GW="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",M0=new RegExp(`^${GW}$`);function YW($){let W="[0-5]\\d";if($.precision)W=`${W}\\.\\d{${$.precision}}`;else if($.precision==null)W=`${W}(\\.\\d+)?`;let J=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${W})${J}`}function B0($){return new RegExp(`^${YW($)}$`)}function MW($){let W=`${GW}T${YW($)}`,J=[];if(J.push($.local?"Z?":"Z"),$.offset)J.push("([+-]\\d{2}:?\\d{2})");return W=`${W}(${J.join("|")})`,new RegExp(`^${W}$`)}function q0($,W){if((W==="v4"||!W)&&X0.test($))return!0;if((W==="v6"||!W)&&H0.test($))return!0;return!1}function z0($,W){if(!eW.test($))return!1;try{let[J]=$.split(".");if(!J)return!1;let Q=J.replace(/-/g,"+").replace(/_/g,"/").padEnd(J.length+(4-J.length%4)%4,"="),X=JSON.parse(atob(Q));if(typeof X!=="object"||X===null)return!1;if("typ"in X&&X?.typ!=="JWT")return!1;if(!X.alg)return!1;if(W&&X.alg!==W)return!1;return!0}catch{return!1}}function j0($,W){if((W==="v4"||!W)&&Q0.test($))return!0;if((W==="v6"||!W)&&_0.test($))return!0;return!1}class v extends S{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==B.string){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_type,expected:B.string,received:X.parsedType}),V}let J=new O,Q=void 0;for(let X of this._def.checks)if(X.kind==="min"){if($.data.length<X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_small,minimum:X.value,type:"string",inclusive:!0,exact:!1,message:X.message}),J.dirty()}else if(X.kind==="max"){if($.data.length>X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_big,maximum:X.value,type:"string",inclusive:!0,exact:!1,message:X.message}),J.dirty()}else if(X.kind==="length"){let H=$.data.length>X.value,_=$.data.length<X.value;if(H||_){if(Q=this._getOrReturnCtx($,Q),H)q(Q,{code:M.too_big,maximum:X.value,type:"string",inclusive:!0,exact:!0,message:X.message});else if(_)q(Q,{code:M.too_small,minimum:X.value,type:"string",inclusive:!0,exact:!0,message:X.message});J.dirty()}}else if(X.kind==="email"){if(!W0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"email",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="emoji"){if(!Z$)Z$=new RegExp(J0,"u");if(!Z$.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"emoji",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="uuid"){if(!tW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"uuid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="nanoid"){if(!sW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"nanoid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="cuid"){if(!rW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"cuid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="cuid2"){if(!aW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"cuid2",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="ulid"){if(!oW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"ulid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="url")try{new URL($.data)}catch{Q=this._getOrReturnCtx($,Q),q(Q,{validation:"url",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="regex"){if(X.regex.lastIndex=0,!X.regex.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"regex",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="trim")$.data=$.data.trim();else if(X.kind==="includes"){if(!$.data.includes(X.value,X.position))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:{includes:X.value,position:X.position},message:X.message}),J.dirty()}else if(X.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(X.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(X.kind==="startsWith"){if(!$.data.startsWith(X.value))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:{startsWith:X.value},message:X.message}),J.dirty()}else if(X.kind==="endsWith"){if(!$.data.endsWith(X.value))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:{endsWith:X.value},message:X.message}),J.dirty()}else if(X.kind==="datetime"){if(!MW(X).test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:"datetime",message:X.message}),J.dirty()}else if(X.kind==="date"){if(!M0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:"date",message:X.message}),J.dirty()}else if(X.kind==="time"){if(!B0(X).test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:"time",message:X.message}),J.dirty()}else if(X.kind==="duration"){if(!$0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"duration",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="ip"){if(!q0($.data,X.version))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"ip",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="jwt"){if(!z0($.data,X.alg))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"jwt",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="cidr"){if(!j0($.data,X.version))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"cidr",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="base64"){if(!G0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"base64",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="base64url"){if(!Y0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"base64url",code:M.invalid_string,message:X.message}),J.dirty()}else L.assertNever(X);return{status:J.value,value:$.data}}_regex($,W,J){return this.refinement((Q)=>$.test(Q),{validation:W,code:M.invalid_string,...j.errToObj(J)})}_addCheck($){return new v({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...j.errToObj($)})}url($){return this._addCheck({kind:"url",...j.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...j.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...j.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...j.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...j.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...j.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...j.errToObj($)})}base64($){return this._addCheck({kind:"base64",...j.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...j.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...j.errToObj($)})}ip($){return this._addCheck({kind:"ip",...j.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...j.errToObj($)})}datetime($){if(typeof $==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:$});return this._addCheck({kind:"datetime",precision:typeof $?.precision>"u"?null:$?.precision,offset:$?.offset??!1,local:$?.local??!1,...j.errToObj($?.message)})}date($){return this._addCheck({kind:"date",message:$})}time($){if(typeof $==="string")return this._addCheck({kind:"time",precision:null,message:$});return this._addCheck({kind:"time",precision:typeof $?.precision>"u"?null:$?.precision,...j.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...j.errToObj($)})}regex($,W){return this._addCheck({kind:"regex",regex:$,...j.errToObj(W)})}includes($,W){return this._addCheck({kind:"includes",value:$,position:W?.position,...j.errToObj(W?.message)})}startsWith($,W){return this._addCheck({kind:"startsWith",value:$,...j.errToObj(W)})}endsWith($,W){return this._addCheck({kind:"endsWith",value:$,...j.errToObj(W)})}min($,W){return this._addCheck({kind:"min",value:$,...j.errToObj(W)})}max($,W){return this._addCheck({kind:"max",value:$,...j.errToObj(W)})}length($,W){return this._addCheck({kind:"length",value:$,...j.errToObj(W)})}nonempty($){return this.min(1,j.errToObj($))}trim(){return new v({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new v({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new v({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxLength(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}}v.create=($)=>{return new v({checks:[],typeName:E.ZodString,coerce:$?.coerce??!1,...U($)})};function V0($,W){let J=($.toString().split(".")[1]||"").length,Q=(W.toString().split(".")[1]||"").length,X=J>Q?J:Q,H=Number.parseInt($.toFixed(X).replace(".","")),_=Number.parseInt(W.toFixed(X).replace(".",""));return H%_/10**X}class u extends S{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse($){if(this._def.coerce)$.data=Number($.data);if(this._getType($)!==B.number){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_type,expected:B.number,received:X.parsedType}),V}let J=void 0,Q=new O;for(let X of this._def.checks)if(X.kind==="int"){if(!L.isInteger($.data))J=this._getOrReturnCtx($,J),q(J,{code:M.invalid_type,expected:"integer",received:"float",message:X.message}),Q.dirty()}else if(X.kind==="min"){if(X.inclusive?$.data<X.value:$.data<=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_small,minimum:X.value,type:"number",inclusive:X.inclusive,exact:!1,message:X.message}),Q.dirty()}else if(X.kind==="max"){if(X.inclusive?$.data>X.value:$.data>=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_big,maximum:X.value,type:"number",inclusive:X.inclusive,exact:!1,message:X.message}),Q.dirty()}else if(X.kind==="multipleOf"){if(V0($.data,X.value)!==0)J=this._getOrReturnCtx($,J),q(J,{code:M.not_multiple_of,multipleOf:X.value,message:X.message}),Q.dirty()}else if(X.kind==="finite"){if(!Number.isFinite($.data))J=this._getOrReturnCtx($,J),q(J,{code:M.not_finite,message:X.message}),Q.dirty()}else L.assertNever(X);return{status:Q.value,value:$.data}}gte($,W){return this.setLimit("min",$,!0,j.toString(W))}gt($,W){return this.setLimit("min",$,!1,j.toString(W))}lte($,W){return this.setLimit("max",$,!0,j.toString(W))}lt($,W){return this.setLimit("max",$,!1,j.toString(W))}setLimit($,W,J,Q){return new u({...this._def,checks:[...this._def.checks,{kind:$,value:W,inclusive:J,message:j.toString(Q)}]})}_addCheck($){return new u({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:j.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:j.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:j.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:j.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:j.toString($)})}multipleOf($,W){return this._addCheck({kind:"multipleOf",value:$,message:j.toString(W)})}finite($){return this._addCheck({kind:"finite",message:j.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:j.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:j.toString($)})}get minValue(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxValue(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&L.isInteger($.value))}get isFinite(){let $=null,W=null;for(let J of this._def.checks)if(J.kind==="finite"||J.kind==="int"||J.kind==="multipleOf")return!0;else if(J.kind==="min"){if(W===null||J.value>W)W=J.value}else if(J.kind==="max"){if($===null||J.value<$)$=J.value}return Number.isFinite(W)&&Number.isFinite($)}}u.create=($)=>{return new u({checks:[],typeName:E.ZodNumber,coerce:$?.coerce||!1,...U($)})};class c extends S{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse($){if(this._def.coerce)try{$.data=BigInt($.data)}catch{return this._getInvalidInput($)}if(this._getType($)!==B.bigint)return this._getInvalidInput($);let J=void 0,Q=new O;for(let X of this._def.checks)if(X.kind==="min"){if(X.inclusive?$.data<X.value:$.data<=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_small,type:"bigint",minimum:X.value,inclusive:X.inclusive,message:X.message}),Q.dirty()}else if(X.kind==="max"){if(X.inclusive?$.data>X.value:$.data>=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_big,type:"bigint",maximum:X.value,inclusive:X.inclusive,message:X.message}),Q.dirty()}else if(X.kind==="multipleOf"){if($.data%X.value!==BigInt(0))J=this._getOrReturnCtx($,J),q(J,{code:M.not_multiple_of,multipleOf:X.value,message:X.message}),Q.dirty()}else L.assertNever(X);return{status:Q.value,value:$.data}}_getInvalidInput($){let W=this._getOrReturnCtx($);return q(W,{code:M.invalid_type,expected:B.bigint,received:W.parsedType}),V}gte($,W){return this.setLimit("min",$,!0,j.toString(W))}gt($,W){return this.setLimit("min",$,!1,j.toString(W))}lte($,W){return this.setLimit("max",$,!0,j.toString(W))}lt($,W){return this.setLimit("max",$,!1,j.toString(W))}setLimit($,W,J,Q){return new c({...this._def,checks:[...this._def.checks,{kind:$,value:W,inclusive:J,message:j.toString(Q)}]})}_addCheck($){return new c({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:j.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:j.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:j.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:j.toString($)})}multipleOf($,W){return this._addCheck({kind:"multipleOf",value:$,message:j.toString(W)})}get minValue(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxValue(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}}c.create=($)=>{return new c({checks:[],typeName:E.ZodBigInt,coerce:$?.coerce??!1,...U($)})};class J$ extends S{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==B.boolean){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.boolean,received:J.parsedType}),V}return w($.data)}}J$.create=($)=>{return new J$({typeName:E.ZodBoolean,coerce:$?.coerce||!1,...U($)})};class r extends S{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==B.date){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_type,expected:B.date,received:X.parsedType}),V}if(Number.isNaN($.data.getTime())){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_date}),V}let J=new O,Q=void 0;for(let X of this._def.checks)if(X.kind==="min"){if($.data.getTime()<X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_small,message:X.message,inclusive:!0,exact:!1,minimum:X.value,type:"date"}),J.dirty()}else if(X.kind==="max"){if($.data.getTime()>X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_big,message:X.message,inclusive:!0,exact:!1,maximum:X.value,type:"date"}),J.dirty()}else L.assertNever(X);return{status:J.value,value:new Date($.data.getTime())}}_addCheck($){return new r({...this._def,checks:[...this._def.checks,$]})}min($,W){return this._addCheck({kind:"min",value:$.getTime(),message:j.toString(W)})}max($,W){return this._addCheck({kind:"max",value:$.getTime(),message:j.toString(W)})}get minDate(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $!=null?new Date($):null}}r.create=($)=>{return new r({checks:[],coerce:$?.coerce||!1,typeName:E.ZodDate,...U($)})};class U$ extends S{_parse($){if(this._getType($)!==B.symbol){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.symbol,received:J.parsedType}),V}return w($.data)}}U$.create=($)=>{return new U$({typeName:E.ZodSymbol,...U($)})};class X$ extends S{_parse($){if(this._getType($)!==B.undefined){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.undefined,received:J.parsedType}),V}return w($.data)}}X$.create=($)=>{return new X$({typeName:E.ZodUndefined,...U($)})};class Q$ extends S{_parse($){if(this._getType($)!==B.null){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.null,received:J.parsedType}),V}return w($.data)}}Q$.create=($)=>{return new Q$({typeName:E.ZodNull,...U($)})};class a extends S{constructor(){super(...arguments);this._any=!0}_parse($){return w($.data)}}a.create=($)=>{return new a({typeName:E.ZodAny,...U($)})};class m extends S{constructor(){super(...arguments);this._unknown=!0}_parse($){return w($.data)}}m.create=($)=>{return new m({typeName:E.ZodUnknown,...U($)})};class h extends S{_parse($){let W=this._getOrReturnCtx($);return q(W,{code:M.invalid_type,expected:B.never,received:W.parsedType}),V}}h.create=($)=>{return new h({typeName:E.ZodNever,...U($)})};class S$ extends S{_parse($){if(this._getType($)!==B.undefined){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.void,received:J.parsedType}),V}return w($.data)}}S$.create=($)=>{return new S$({typeName:E.ZodVoid,...U($)})};class f extends S{_parse($){let{ctx:W,status:J}=this._processInputParams($),Q=this._def;if(W.parsedType!==B.array)return q(W,{code:M.invalid_type,expected:B.array,received:W.parsedType}),V;if(Q.exactLength!==null){let H=W.data.length>Q.exactLength.value,_=W.data.length<Q.exactLength.value;if(H||_)q(W,{code:H?M.too_big:M.too_small,minimum:_?Q.exactLength.value:void 0,maximum:H?Q.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Q.exactLength.message}),J.dirty()}if(Q.minLength!==null){if(W.data.length<Q.minLength.value)q(W,{code:M.too_small,minimum:Q.minLength.value,type:"array",inclusive:!0,exact:!1,message:Q.minLength.message}),J.dirty()}if(Q.maxLength!==null){if(W.data.length>Q.maxLength.value)q(W,{code:M.too_big,maximum:Q.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Q.maxLength.message}),J.dirty()}if(W.common.async)return Promise.all([...W.data].map((H,_)=>{return Q.type._parseAsync(new b(W,H,W.path,_))})).then((H)=>{return O.mergeArray(J,H)});let X=[...W.data].map((H,_)=>{return Q.type._parseSync(new b(W,H,W.path,_))});return O.mergeArray(J,X)}get element(){return this._def.type}min($,W){return new f({...this._def,minLength:{value:$,message:j.toString(W)}})}max($,W){return new f({...this._def,maxLength:{value:$,message:j.toString(W)}})}length($,W){return new f({...this._def,exactLength:{value:$,message:j.toString(W)}})}nonempty($){return this.min(1,$)}}f.create=($,W)=>{return new f({type:$,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...U(W)})};function $$($){if($ instanceof R){let W={};for(let J in $.shape){let Q=$.shape[J];W[J]=C.create($$(Q))}return new R({...$._def,shape:()=>W})}else if($ instanceof f)return new f({...$._def,type:$$($.element)});else if($ instanceof C)return C.create($$($.unwrap()));else if($ instanceof y)return y.create($$($.unwrap()));else if($ instanceof T)return T.create($.items.map((W)=>$$(W)));else return $}class R extends S{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),W=L.objectKeys($);return this._cached={shape:$,keys:W},this._cached}_parse($){if(this._getType($)!==B.object){let Y=this._getOrReturnCtx($);return q(Y,{code:M.invalid_type,expected:B.object,received:Y.parsedType}),V}let{status:J,ctx:Q}=this._processInputParams($),{shape:X,keys:H}=this._getCached(),_=[];if(!(this._def.catchall instanceof h&&this._def.unknownKeys==="strip")){for(let Y in Q.data)if(!H.includes(Y))_.push(Y)}let G=[];for(let Y of H){let z=X[Y],A=Q.data[Y];G.push({key:{status:"valid",value:Y},value:z._parse(new b(Q,A,Q.path,Y)),alwaysSet:Y in Q.data})}if(this._def.catchall instanceof h){let Y=this._def.unknownKeys;if(Y==="passthrough")for(let z of _)G.push({key:{status:"valid",value:z},value:{status:"valid",value:Q.data[z]}});else if(Y==="strict"){if(_.length>0)q(Q,{code:M.unrecognized_keys,keys:_}),J.dirty()}else if(Y==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let Y=this._def.catchall;for(let z of _){let A=Q.data[z];G.push({key:{status:"valid",value:z},value:Y._parse(new b(Q,A,Q.path,z)),alwaysSet:z in Q.data})}}if(Q.common.async)return Promise.resolve().then(async()=>{let Y=[];for(let z of G){let A=await z.key,K=await z.value;Y.push({key:A,value:K,alwaysSet:z.alwaysSet})}return Y}).then((Y)=>{return O.mergeObjectSync(J,Y)});else return O.mergeObjectSync(J,G)}get shape(){return this._def.shape()}strict($){return j.errToObj,new R({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(W,J)=>{let Q=this._def.errorMap?.(W,J).message??J.defaultError;if(W.code==="unrecognized_keys")return{message:j.errToObj($).message??Q};return{message:Q}}}:{}})}strip(){return new R({...this._def,unknownKeys:"strip"})}passthrough(){return new R({...this._def,unknownKeys:"passthrough"})}extend($){return new R({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new R({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:E.ZodObject})}setKey($,W){return this.augment({[$]:W})}catchall($){return new R({...this._def,catchall:$})}pick($){let W={};for(let J of L.objectKeys($))if($[J]&&this.shape[J])W[J]=this.shape[J];return new R({...this._def,shape:()=>W})}omit($){let W={};for(let J of L.objectKeys(this.shape))if(!$[J])W[J]=this.shape[J];return new R({...this._def,shape:()=>W})}deepPartial(){return $$(this)}partial($){let W={};for(let J of L.objectKeys(this.shape)){let Q=this.shape[J];if($&&!$[J])W[J]=Q;else W[J]=Q.optional()}return new R({...this._def,shape:()=>W})}required($){let W={};for(let J of L.objectKeys(this.shape))if($&&!$[J])W[J]=this.shape[J];else{let X=this.shape[J];while(X instanceof C)X=X._def.innerType;W[J]=X}return new R({...this._def,shape:()=>W})}keyof(){return BW(L.objectKeys(this.shape))}}R.create=($,W)=>{return new R({shape:()=>$,unknownKeys:"strip",catchall:h.create(),typeName:E.ZodObject,...U(W)})};R.strictCreate=($,W)=>{return new R({shape:()=>$,unknownKeys:"strict",catchall:h.create(),typeName:E.ZodObject,...U(W)})};R.lazycreate=($,W)=>{return new R({shape:$,unknownKeys:"strip",catchall:h.create(),typeName:E.ZodObject,...U(W)})};class H$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J=this._def.options;function Q(X){for(let _ of X)if(_.result.status==="valid")return _.result;for(let _ of X)if(_.result.status==="dirty")return W.common.issues.push(..._.ctx.common.issues),_.result;let H=X.map((_)=>new F(_.ctx.common.issues));return q(W,{code:M.invalid_union,unionErrors:H}),V}if(W.common.async)return Promise.all(J.map(async(X)=>{let H={...W,common:{...W.common,issues:[]},parent:null};return{result:await X._parseAsync({data:W.data,path:W.path,parent:H}),ctx:H}})).then(Q);else{let X=void 0,H=[];for(let G of J){let Y={...W,common:{...W.common,issues:[]},parent:null},z=G._parseSync({data:W.data,path:W.path,parent:Y});if(z.status==="valid")return z;else if(z.status==="dirty"&&!X)X={result:z,ctx:Y};if(Y.common.issues.length)H.push(Y.common.issues)}if(X)return W.common.issues.push(...X.ctx.common.issues),X.result;let _=H.map((G)=>new F(G));return q(W,{code:M.invalid_union,unionErrors:_}),V}}get options(){return this._def.options}}H$.create=($,W)=>{return new H$({options:$,typeName:E.ZodUnion,...U(W)})};var x=($)=>{if($ instanceof G$)return x($.schema);else if($ instanceof k)return x($.innerType());else if($ instanceof Y$)return[$.value];else if($ instanceof p)return $.options;else if($ instanceof M$)return L.objectValues($.enum);else if($ instanceof B$)return x($._def.innerType);else if($ instanceof X$)return[void 0];else if($ instanceof Q$)return[null];else if($ instanceof C)return[void 0,...x($.unwrap())];else if($ instanceof y)return[null,...x($.unwrap())];else if($ instanceof v$)return x($.unwrap());else if($ instanceof z$)return x($.unwrap());else if($ instanceof q$)return x($._def.innerType);else return[]};class F$ extends S{_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==B.object)return q(W,{code:M.invalid_type,expected:B.object,received:W.parsedType}),V;let J=this.discriminator,Q=W.data[J],X=this.optionsMap.get(Q);if(!X)return q(W,{code:M.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[J]}),V;if(W.common.async)return X._parseAsync({data:W.data,path:W.path,parent:W});else return X._parseSync({data:W.data,path:W.path,parent:W})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,W,J){let Q=new Map;for(let X of W){let H=x(X.shape[$]);if(!H.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let _ of H){if(Q.has(_))throw Error(`Discriminator property ${String($)} has duplicate value ${String(_)}`);Q.set(_,X)}}return new F$({typeName:E.ZodDiscriminatedUnion,discriminator:$,options:W,optionsMap:Q,...U(J)})}}function l$($,W){let J=I($),Q=I(W);if($===W)return{valid:!0,data:$};else if(J===B.object&&Q===B.object){let X=L.objectKeys(W),H=L.objectKeys($).filter((G)=>X.indexOf(G)!==-1),_={...$,...W};for(let G of H){let Y=l$($[G],W[G]);if(!Y.valid)return{valid:!1};_[G]=Y.data}return{valid:!0,data:_}}else if(J===B.array&&Q===B.array){if($.length!==W.length)return{valid:!1};let X=[];for(let H=0;H<$.length;H++){let _=$[H],G=W[H],Y=l$(_,G);if(!Y.valid)return{valid:!1};X.push(Y.data)}return{valid:!0,data:X}}else if(J===B.date&&Q===B.date&&+$===+W)return{valid:!0,data:$};else return{valid:!1}}class _$ extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($),Q=(X,H)=>{if(K$(X)||K$(H))return V;let _=l$(X.value,H.value);if(!_.valid)return q(J,{code:M.invalid_intersection_types}),V;if(w$(X)||w$(H))W.dirty();return{status:W.value,value:_.data}};if(J.common.async)return Promise.all([this._def.left._parseAsync({data:J.data,path:J.path,parent:J}),this._def.right._parseAsync({data:J.data,path:J.path,parent:J})]).then(([X,H])=>Q(X,H));else return Q(this._def.left._parseSync({data:J.data,path:J.path,parent:J}),this._def.right._parseSync({data:J.data,path:J.path,parent:J}))}}_$.create=($,W,J)=>{return new _$({left:$,right:W,typeName:E.ZodIntersection,...U(J)})};class T extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.array)return q(J,{code:M.invalid_type,expected:B.array,received:J.parsedType}),V;if(J.data.length<this._def.items.length)return q(J,{code:M.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),V;if(!this._def.rest&&J.data.length>this._def.items.length)q(J,{code:M.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),W.dirty();let X=[...J.data].map((H,_)=>{let G=this._def.items[_]||this._def.rest;if(!G)return null;return G._parse(new b(J,H,J.path,_))}).filter((H)=>!!H);if(J.common.async)return Promise.all(X).then((H)=>{return O.mergeArray(W,H)});else return O.mergeArray(W,X)}get items(){return this._def.items}rest($){return new T({...this._def,rest:$})}}T.create=($,W)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new T({items:$,typeName:E.ZodTuple,rest:null,...U(W)})};class L$ extends S{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.object)return q(J,{code:M.invalid_type,expected:B.object,received:J.parsedType}),V;let Q=[],X=this._def.keyType,H=this._def.valueType;for(let _ in J.data)Q.push({key:X._parse(new b(J,_,J.path,_)),value:H._parse(new b(J,J.data[_],J.path,_)),alwaysSet:_ in J.data});if(J.common.async)return O.mergeObjectAsync(W,Q);else return O.mergeObjectSync(W,Q)}get element(){return this._def.valueType}static create($,W,J){if(W instanceof S)return new L$({keyType:$,valueType:W,typeName:E.ZodRecord,...U(J)});return new L$({keyType:v.create(),valueType:$,typeName:E.ZodRecord,...U(W)})}}class A$ extends S{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.map)return q(J,{code:M.invalid_type,expected:B.map,received:J.parsedType}),V;let Q=this._def.keyType,X=this._def.valueType,H=[...J.data.entries()].map(([_,G],Y)=>{return{key:Q._parse(new b(J,_,J.path,[Y,"key"])),value:X._parse(new b(J,G,J.path,[Y,"value"]))}});if(J.common.async){let _=new Map;return Promise.resolve().then(async()=>{for(let G of H){let Y=await G.key,z=await G.value;if(Y.status==="aborted"||z.status==="aborted")return V;if(Y.status==="dirty"||z.status==="dirty")W.dirty();_.set(Y.value,z.value)}return{status:W.value,value:_}})}else{let _=new Map;for(let G of H){let{key:Y,value:z}=G;if(Y.status==="aborted"||z.status==="aborted")return V;if(Y.status==="dirty"||z.status==="dirty")W.dirty();_.set(Y.value,z.value)}return{status:W.value,value:_}}}}A$.create=($,W,J)=>{return new A$({valueType:W,keyType:$,typeName:E.ZodMap,...U(J)})};class o extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.set)return q(J,{code:M.invalid_type,expected:B.set,received:J.parsedType}),V;let Q=this._def;if(Q.minSize!==null){if(J.data.size<Q.minSize.value)q(J,{code:M.too_small,minimum:Q.minSize.value,type:"set",inclusive:!0,exact:!1,message:Q.minSize.message}),W.dirty()}if(Q.maxSize!==null){if(J.data.size>Q.maxSize.value)q(J,{code:M.too_big,maximum:Q.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Q.maxSize.message}),W.dirty()}let X=this._def.valueType;function H(G){let Y=new Set;for(let z of G){if(z.status==="aborted")return V;if(z.status==="dirty")W.dirty();Y.add(z.value)}return{status:W.value,value:Y}}let _=[...J.data.values()].map((G,Y)=>X._parse(new b(J,G,J.path,Y)));if(J.common.async)return Promise.all(_).then((G)=>H(G));else return H(_)}min($,W){return new o({...this._def,minSize:{value:$,message:j.toString(W)}})}max($,W){return new o({...this._def,maxSize:{value:$,message:j.toString(W)}})}size($,W){return this.min($,W).max($,W)}nonempty($){return this.min(1,$)}}o.create=($,W)=>{return new o({valueType:$,minSize:null,maxSize:null,typeName:E.ZodSet,...U(W)})};class W$ extends S{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==B.function)return q(W,{code:M.invalid_type,expected:B.function,received:W.parsedType}),V;function J(_,G){return E$({data:_,path:W.path,errorMaps:[W.common.contextualErrorMap,W.schemaErrorMap,s(),g].filter((Y)=>!!Y),issueData:{code:M.invalid_arguments,argumentsError:G}})}function Q(_,G){return E$({data:_,path:W.path,errorMaps:[W.common.contextualErrorMap,W.schemaErrorMap,s(),g].filter((Y)=>!!Y),issueData:{code:M.invalid_return_type,returnTypeError:G}})}let X={errorMap:W.common.contextualErrorMap},H=W.data;if(this._def.returns instanceof t){let _=this;return w(async function(...G){let Y=new F([]),z=await _._def.args.parseAsync(G,X).catch((n)=>{throw Y.addIssue(J(G,n)),Y}),A=await Reflect.apply(H,this,z);return await _._def.returns._def.type.parseAsync(A,X).catch((n)=>{throw Y.addIssue(Q(A,n)),Y})})}else{let _=this;return w(function(...G){let Y=_._def.args.safeParse(G,X);if(!Y.success)throw new F([J(G,Y.error)]);let z=Reflect.apply(H,this,Y.data),A=_._def.returns.safeParse(z,X);if(!A.success)throw new F([Q(z,A.error)]);return A.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new W$({...this._def,args:T.create($).rest(m.create())})}returns($){return new W$({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,W,J){return new W$({args:$?$:T.create([]).rest(m.create()),returns:W||m.create(),typeName:E.ZodFunction,...U(J)})}}class G$ extends S{get schema(){return this._def.getter()}_parse($){let{ctx:W}=this._processInputParams($);return this._def.getter()._parse({data:W.data,path:W.path,parent:W})}}G$.create=($,W)=>{return new G$({getter:$,typeName:E.ZodLazy,...U(W)})};class Y$ extends S{_parse($){if($.data!==this._def.value){let W=this._getOrReturnCtx($);return q(W,{received:W.data,code:M.invalid_literal,expected:this._def.value}),V}return{status:"valid",value:$.data}}get value(){return this._def.value}}Y$.create=($,W)=>{return new Y$({value:$,typeName:E.ZodLiteral,...U(W)})};function BW($,W){return new p({values:$,typeName:E.ZodEnum,...U(W)})}class p extends S{_parse($){if(typeof $.data!=="string"){let W=this._getOrReturnCtx($),J=this._def.values;return q(W,{expected:L.joinValues(J),received:W.parsedType,code:M.invalid_type}),V}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let W=this._getOrReturnCtx($),J=this._def.values;return q(W,{received:W.data,code:M.invalid_enum_value,options:J}),V}return w($.data)}get options(){return this._def.values}get enum(){let $={};for(let W of this._def.values)$[W]=W;return $}get Values(){let $={};for(let W of this._def.values)$[W]=W;return $}get Enum(){let $={};for(let W of this._def.values)$[W]=W;return $}extract($,W=this._def){return p.create($,{...this._def,...W})}exclude($,W=this._def){return p.create(this.options.filter((J)=>!$.includes(J)),{...this._def,...W})}}p.create=BW;class M$ extends S{_parse($){let W=L.getValidEnumValues(this._def.values),J=this._getOrReturnCtx($);if(J.parsedType!==B.string&&J.parsedType!==B.number){let Q=L.objectValues(W);return q(J,{expected:L.joinValues(Q),received:J.parsedType,code:M.invalid_type}),V}if(!this._cache)this._cache=new Set(L.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let Q=L.objectValues(W);return q(J,{received:J.data,code:M.invalid_enum_value,options:Q}),V}return w($.data)}get enum(){return this._def.values}}M$.create=($,W)=>{return new M$({values:$,typeName:E.ZodNativeEnum,...U(W)})};class t extends S{unwrap(){return this._def.type}_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==B.promise&&W.common.async===!1)return q(W,{code:M.invalid_type,expected:B.promise,received:W.parsedType}),V;let J=W.parsedType===B.promise?W.data:Promise.resolve(W.data);return w(J.then((Q)=>{return this._def.type.parseAsync(Q,{path:W.path,errorMap:W.common.contextualErrorMap})}))}}t.create=($,W)=>{return new t({type:$,typeName:E.ZodPromise,...U(W)})};class k extends S{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===E.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:W,ctx:J}=this._processInputParams($),Q=this._def.effect||null,X={addIssue:(H)=>{if(q(J,H),H.fatal)W.abort();else W.dirty()},get path(){return J.path}};if(X.addIssue=X.addIssue.bind(X),Q.type==="preprocess"){let H=Q.transform(J.data,X);if(J.common.async)return Promise.resolve(H).then(async(_)=>{if(W.value==="aborted")return V;let G=await this._def.schema._parseAsync({data:_,path:J.path,parent:J});if(G.status==="aborted")return V;if(G.status==="dirty")return i(G.value);if(W.value==="dirty")return i(G.value);return G});else{if(W.value==="aborted")return V;let _=this._def.schema._parseSync({data:H,path:J.path,parent:J});if(_.status==="aborted")return V;if(_.status==="dirty")return i(_.value);if(W.value==="dirty")return i(_.value);return _}}if(Q.type==="refinement"){let H=(_)=>{let G=Q.refinement(_,X);if(J.common.async)return Promise.resolve(G);if(G instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return _};if(J.common.async===!1){let _=this._def.schema._parseSync({data:J.data,path:J.path,parent:J});if(_.status==="aborted")return V;if(_.status==="dirty")W.dirty();return H(_.value),{status:W.value,value:_.value}}else return this._def.schema._parseAsync({data:J.data,path:J.path,parent:J}).then((_)=>{if(_.status==="aborted")return V;if(_.status==="dirty")W.dirty();return H(_.value).then(()=>{return{status:W.value,value:_.value}})})}if(Q.type==="transform")if(J.common.async===!1){let H=this._def.schema._parseSync({data:J.data,path:J.path,parent:J});if(!l(H))return V;let _=Q.transform(H.value,X);if(_ instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:W.value,value:_}}else return this._def.schema._parseAsync({data:J.data,path:J.path,parent:J}).then((H)=>{if(!l(H))return V;return Promise.resolve(Q.transform(H.value,X)).then((_)=>({status:W.value,value:_}))});L.assertNever(Q)}}k.create=($,W,J)=>{return new k({schema:$,typeName:E.ZodEffects,effect:W,...U(J)})};k.createWithPreprocess=($,W,J)=>{return new k({schema:W,effect:{type:"preprocess",transform:$},typeName:E.ZodEffects,...U(J)})};class C extends S{_parse($){if(this._getType($)===B.undefined)return w(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}C.create=($,W)=>{return new C({innerType:$,typeName:E.ZodOptional,...U(W)})};class y extends S{_parse($){if(this._getType($)===B.null)return w(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}y.create=($,W)=>{return new y({innerType:$,typeName:E.ZodNullable,...U(W)})};class B$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J=W.data;if(W.parsedType===B.undefined)J=this._def.defaultValue();return this._def.innerType._parse({data:J,path:W.path,parent:W})}removeDefault(){return this._def.innerType}}B$.create=($,W)=>{return new B$({innerType:$,typeName:E.ZodDefault,defaultValue:typeof W.default==="function"?W.default:()=>W.default,...U(W)})};class q$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J={...W,common:{...W.common,issues:[]}},Q=this._def.innerType._parse({data:J.data,path:J.path,parent:{...J}});if(e(Q))return Q.then((X)=>{return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new F(J.common.issues)},input:J.data})}});else return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new F(J.common.issues)},input:J.data})}}removeCatch(){return this._def.innerType}}q$.create=($,W)=>{return new q$({innerType:$,typeName:E.ZodCatch,catchValue:typeof W.catch==="function"?W.catch:()=>W.catch,...U(W)})};class R$ extends S{_parse($){if(this._getType($)!==B.nan){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.nan,received:J.parsedType}),V}return{status:"valid",value:$.data}}}R$.create=($)=>{return new R$({typeName:E.ZodNaN,...U($)})};var E0=Symbol("zod_brand");class v$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J=W.data;return this._def.type._parse({data:J,path:W.path,parent:W})}unwrap(){return this._def.type}}class D$ extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.common.async)return(async()=>{let X=await this._def.in._parseAsync({data:J.data,path:J.path,parent:J});if(X.status==="aborted")return V;if(X.status==="dirty")return W.dirty(),i(X.value);else return this._def.out._parseAsync({data:X.value,path:J.path,parent:J})})();else{let Q=this._def.in._parseSync({data:J.data,path:J.path,parent:J});if(Q.status==="aborted")return V;if(Q.status==="dirty")return W.dirty(),{status:"dirty",value:Q.value};else return this._def.out._parseSync({data:Q.value,path:J.path,parent:J})}}static create($,W){return new D$({in:$,out:W,typeName:E.ZodPipeline})}}class z$ extends S{_parse($){let W=this._def.innerType._parse($),J=(Q)=>{if(l(Q))Q.value=Object.freeze(Q.value);return Q};return e(W)?W.then((Q)=>J(Q)):J(W)}unwrap(){return this._def.innerType}}z$.create=($,W)=>{return new z$({innerType:$,typeName:E.ZodReadonly,...U(W)})};function _W($,W){let J=typeof $==="function"?$(W):typeof $==="string"?{message:$}:$;return typeof J==="string"?{message:J}:J}function qW($,W={},J){if($)return a.create().superRefine((Q,X)=>{let H=$(Q);if(H instanceof Promise)return H.then((_)=>{if(!_){let G=_W(W,Q),Y=G.fatal??J??!0;X.addIssue({code:"custom",...G,fatal:Y})}});if(!H){let _=_W(W,Q),G=_.fatal??J??!0;X.addIssue({code:"custom",..._,fatal:G})}return});return a.create()}var U0={object:R.lazycreate},E;(function($){$.ZodString="ZodString",$.ZodNumber="ZodNumber",$.ZodNaN="ZodNaN",$.ZodBigInt="ZodBigInt",$.ZodBoolean="ZodBoolean",$.ZodDate="ZodDate",$.ZodSymbol="ZodSymbol",$.ZodUndefined="ZodUndefined",$.ZodNull="ZodNull",$.ZodAny="ZodAny",$.ZodUnknown="ZodUnknown",$.ZodNever="ZodNever",$.ZodVoid="ZodVoid",$.ZodArray="ZodArray",$.ZodObject="ZodObject",$.ZodUnion="ZodUnion",$.ZodDiscriminatedUnion="ZodDiscriminatedUnion",$.ZodIntersection="ZodIntersection",$.ZodTuple="ZodTuple",$.ZodRecord="ZodRecord",$.ZodMap="ZodMap",$.ZodSet="ZodSet",$.ZodFunction="ZodFunction",$.ZodLazy="ZodLazy",$.ZodLiteral="ZodLiteral",$.ZodEnum="ZodEnum",$.ZodEffects="ZodEffects",$.ZodNativeEnum="ZodNativeEnum",$.ZodOptional="ZodOptional",$.ZodNullable="ZodNullable",$.ZodDefault="ZodDefault",$.ZodCatch="ZodCatch",$.ZodPromise="ZodPromise",$.ZodBranded="ZodBranded",$.ZodPipeline="ZodPipeline",$.ZodReadonly="ZodReadonly"})(E||(E={}));var S0=($,W={message:`Input not instance of ${$.name}`})=>qW((J)=>J instanceof $,W),zW=v.create,jW=u.create,L0=R$.create,A0=c.create,VW=J$.create,R0=r.create,D0=U$.create,N0=X$.create,O0=Q$.create,K0=a.create,w0=m.create,F0=h.create,v0=S$.create,f0=f.create,C0=R.create,b0=R.strictCreate,k0=H$.create,P0=F$.create,I0=_$.create,h0=T.create,T0=L$.create,g0=A$.create,x0=o.create,y0=W$.create,Z0=G$.create,l0=Y$.create,m0=p.create,u0=M$.create,c0=t.create,p0=k.create,n0=C.create,d0=y.create,i0=k.createWithPreprocess,r0=D$.create,a0=()=>zW().optional(),o0=()=>jW().optional(),t0=()=>VW().optional(),s0={string:($)=>v.create({...$,coerce:!0}),number:($)=>u.create({...$,coerce:!0}),boolean:($)=>J$.create({...$,coerce:!0}),bigint:($)=>c.create({...$,coerce:!0}),date:($)=>r.create({...$,coerce:!0})};var e0=V;function EW($){return{name:"mem-recall",description:"Fetch full observation details by ID. Use after mem-search to get complete narratives, facts, concepts, and file lists for specific observations.",args:{ids:D.array(D.string()).describe("Observation IDs to fetch"),limit:D.number().min(1).max(50).default(10).describe("Maximum number of results")},execute:async(W)=>{try{let J=W.ids,Q=W.limit||10,X=J.slice(0,Q),H=[];for(let _ of X){let G=$.getById(_);if(G)H.push($8(G));else H.push(`## ID: ${_}
|
|
306
|
-
|
|
318
|
+
LIMIT ?`,[$,J]).map((W)=>this.mapRow(W))}mapRow($){return{id:$.id,sessionId:$.session_id,summary:$.summary,keyDecisions:JSON.parse($.key_decisions),filesModified:JSON.parse($.files_modified),concepts:JSON.parse($.concepts),createdAt:$.created_at,tokenCount:$.token_count,request:$.request||void 0,investigated:$.investigated||void 0,learned:$.learned||void 0,completed:$.completed||void 0,nextSteps:$.next_steps||void 0}}}function DJ($){return typeof $==="object"&&$!==null&&"text"in $&&typeof $.text==="string"}function wJ($){let J=[];for(let W of $)if(typeof W==="string")J.push(W);else if(DJ(W))J.push(W.text);return J.join(`
|
|
319
|
+
`).trim()}function RJ($){let J=$.toLowerCase().replace(/[^a-z0-9\s-]/g," ").split(/\s+/).filter((W)=>W.length>4);return[...new Set(J)].slice(0,5)}function M0($,J,W){return async(Q,X)=>{try{let{sessionID:H,agent:Y}=Q;if(Y!==void 0&&Y!=="user")return;let _=wJ(X.parts);if(_.length<20)return;J.getOrCreate(H,W);let B=`User request: ${_.length>60?`${_.slice(0,60)}...`:_}`,O=_.length>2000?`${_.slice(0,2000)}...`:_;$.create({sessionId:H,type:"discovery",title:B,subtitle:"",facts:[],narrative:O,concepts:RJ(_),filesRead:[],filesModified:[],rawToolOutput:"",toolName:"chat.message",tokenCount:Math.ceil(O.length/4),discoveryTokens:0})}catch(H){console.error("[open-mem] Chat capture error:",H)}}}var FJ={showTokenCosts:!0,observationTypes:"all",fullObservationCount:3,showLastSummary:!0},u$={bugfix:"\uD83D\uDD34",feature:"\uD83D\uDFE3",refactor:"\uD83D\uDD04",change:"\u2705",discovery:"\uD83D\uDD35",decision:"\u2696\uFE0F"};function q0($,J=FJ){let W=[];if(W.push("## open-mem: Past Session Memory"),W.push(""),W.push("**\uD83D\uDCA1 Progressive Disclosure:** This is a compact index showing WHAT was observed and retrieval COST."),W.push("Use `mem-search` to find observations by query, then `mem-recall` with IDs to fetch full details."),J.showLastSummary&&$.recentSummaries.length>0){W.push(""),W.push("### Recent Sessions"),W.push("| Session | Summary | Decisions |"),W.push("|---------|---------|-----------|");for(let Y of $.recentSummaries){let _=Y.keyDecisions.length>0?Y.keyDecisions.join("; "):"\u2014";W.push(`| ${Y.sessionId} | ${Y.summary} | ${_} |`)}}let Q=J.observationTypes==="all"?$.observationIndex:$.observationIndex.filter((Y)=>J.observationTypes.includes(Y.type));if(Q.length>0){W.push(""),W.push(`### Recent Observations (${Q.length} entries)`);let Y=fJ(Q,$.fullObservations);for(let[_,G]of Y){if(W.push(""),W.push(`**${_}**`),J.showTokenCosts)W.push("| ID | Type | Title | ~Tokens |"),W.push("|----|------|-------|---------|");else W.push("| ID | Type | Title |"),W.push("|----|------|-------|");for(let B of G){let O=u$[B.type]||"\uD83D\uDCDD";if(J.showTokenCosts)W.push(`| ${B.id} | ${O} | ${B.title} | ~${B.tokenCount} |`);else W.push(`| ${B.id} | ${O} | ${B.title} |`)}}}let X=$.fullObservations.slice(0,J.fullObservationCount);if(X.length>0){W.push(""),W.push("### Full Details (most recent)");for(let Y of X){let _=u$[Y.type]||"\uD83D\uDCDD";if(W.push(""),W.push(`#### ${_} ${Y.title} (${Y.id})`),W.push(Y.narrative),Y.facts.length>0)W.push(`**Facts:** ${Y.facts.map((B)=>`- ${B}`).join(" ")}`);if(Y.concepts.length>0)W.push(`**Concepts:** ${Y.concepts.join(", ")}`);let G=[...Y.filesRead,...Y.filesModified];if(G.length>0)W.push(`**Files:** ${G.join(", ")}`)}}let H=vJ($);if(H)W.push(""),W.push(H);return W.join(`
|
|
320
|
+
`)}function vJ($){let J=0,W=0,Q=new Set($.observationIndex.map((Y)=>Y.id));for(let Y of $.observationIndex)J+=Y.tokenCount,W+=Y.discoveryTokens;for(let Y of $.fullObservations)if(!Q.has(Y.id))J+=Y.tokenCount,W+=Y.discoveryTokens;if(W===0)return null;let X=W-J,H=Math.max(0,Math.round(X/W*100));return`### \uD83D\uDCB0 Memory Economics
|
|
321
|
+
**Read cost:** ~${J}t | **Discovery cost:** ~${W}t | **Savings:** ${H}% (${X}t saved)`}function fJ($,J){let W=new Map;for(let X of J){let H=X.filesModified[0]||X.filesRead[0];if(H)W.set(X.id,H)}let Q=new Map;for(let X of $){let H=W.get(X.id)??"General",Y=Q.get(H)??[];Y.push(X),Q.set(H,Y)}return Q}function z0($){let J=[];if(J.push("[open-mem] Memory context:"),$.recentSummaries.length>0){J.push(`
|
|
322
|
+
Recent sessions:`);for(let W of $.recentSummaries)J.push(`- ${W.summary}`)}if($.observationIndex.length>0){J.push(`
|
|
323
|
+
Recent observations (${$.observationIndex.length} entries):`);for(let W of $.observationIndex)J.push(`- ${u$[W.type]||"\uD83D\uDCDD"} ${W.title}`)}return J.join(`
|
|
324
|
+
`)}function F$($,J,W,Q,X=[]){let H=Q,Y=[],_=[];for(let G of J){let B=G.tokenCount||k(G.summary);if(H-B<0)break;Y.push(G),H-=B}for(let G of W){let B=G.tokenCount||k(G.title);if(H-B<0)break;_.push(G),H-=B}return{recentSummaries:Y,observationIndex:_,fullObservations:[...X],totalTokens:Q-H}}function S0($,J,W,Q,X){return async(H,Y)=>{try{if(!$.contextInjectionEnabled)return;let _=W.getRecent(X,3),G=_.map((w)=>w.summaryId?Q.getBySessionId(w.id):null).filter((w)=>w!==null),B=J.getIndex(X,10);if(G.length===0&&B.length===0)return;let O=F$(_,G,B,Math.floor($.maxContextTokens/2));Y.context.push(z0(O))}catch(_){console.error("[open-mem] Compaction hook error:",_)}}}function V0($,J,W,Q,X){return async(H,Y)=>{try{if(!$.contextInjectionEnabled)return;let _=W.getRecent(X,5);if(_.length===0)return;let G=_.map((V)=>V.summaryId?Q.getBySessionId(V.id):null).filter((V)=>V!==null),B=J.getIndex(X,$.maxObservations);if(G.length===0&&B.length===0)return;let w=B.slice(0,$.contextFullObservationCount).map((V)=>V.id).map((V)=>J.getById(V)).filter((V)=>V!==null),K=F$(_,G,B,$.maxContextTokens,w),R={showTokenCosts:$.contextShowTokenCosts,observationTypes:$.contextObservationTypes,fullObservationCount:$.contextFullObservationCount,showLastSummary:$.contextShowLastSummary};Y.system.push(q0(K,R))}catch(_){console.error("[open-mem] Context injection error:",_)}}}import{existsSync as U0}from"fs";import{readFile as CJ,rename as kJ,writeFile as bJ}from"fs/promises";import{dirname as E0,isAbsolute as O0,join as f$,normalize as IJ,relative as A0,resolve as c$,sep as p$}from"path";var v$="<!-- open-mem-context -->",E$="<!-- /open-mem-context -->",PJ={bugfix:"\uD83D\uDD34",feature:"\uD83D\uDFE3",refactor:"\uD83D\uDD04",change:"\u2705",discovery:"\uD83D\uDD35",decision:"\u2696\uFE0F"},TJ=new Set(["node_modules",".git","dist","coverage",".open-mem","build","__pycache__",".next",".nuxt"]);async function N0($,J,W=5){if(J.length===0)return;let Q=[];for(let Y of J){for(let _ of Y.filesModified)Q.push(_);for(let _ of Y.filesRead)Q.push(_)}let X=yJ(Q,$,W);if(X.size===0)return;let H=mJ(J,X,$);for(let[Y,_]of H)try{let G=hJ(Y,_,$);await gJ(Y,G)}catch(G){console.error(`[open-mem] Failed to update AGENTS.md in ${Y}:`,G)}}function hJ($,J,W){let Q=[...J].sort((G,B)=>B.createdAt.localeCompare(G.createdAt)).slice(0,10),X=A0(W,$)||".",H=[];H.push(`## Recent Activity in \`${X}/\` (auto-generated by open-mem)`),H.push(""),H.push("| Type | Title | Date |"),H.push("|------|-------|------|");for(let G of Q){let B=PJ[G.type]||"\uD83D\uDCDD",O=G.createdAt.split("T")[0],w=G.title.replace(/\|/g,"\\|");H.push(`| ${B} ${G.type} | ${w} | ${O} |`)}let Y=new Set;for(let G of Q)for(let B of G.concepts)Y.add(B);if(Y.size>0){let G=[...Y].slice(0,10).join(", ");H.push(""),H.push(`**Key concepts:** ${G}`)}let _=Q.filter((G)=>G.type==="decision").map((G)=>G.title);if(_.length>0)H.push(""),H.push(`**Recent decisions:** ${_.slice(0,5).join("; ")}`);return H.join(`
|
|
325
|
+
`)}async function gJ($,J){if(!U0($))return;let W=f$($,"AGENTS.md"),Q=f$($,".AGENTS.md.tmp"),X="";try{X=await CJ(W,"utf-8")}catch{}let H=xJ(X,J);await bJ(Q,H,"utf-8"),await kJ(Q,W)}function xJ($,J){if(!$)return`${v$}
|
|
326
|
+
${J}
|
|
327
|
+
${E$}
|
|
328
|
+
`;let W=$.indexOf(v$),Q=$.indexOf(E$);if(W!==-1&&Q!==-1&&Q>W){let X=$.substring(0,W),H=$.substring(Q+E$.length);return`${X}${v$}
|
|
329
|
+
${J}
|
|
330
|
+
${E$}${H}`}return`${$}
|
|
331
|
+
|
|
332
|
+
${v$}
|
|
333
|
+
${J}
|
|
334
|
+
${E$}
|
|
335
|
+
`}function yJ($,J,W){let Q=new Set,X=c$(J);for(let H of $){if(!H||!H.trim())continue;if(H.startsWith("~")||H.startsWith("http"))continue;let Y=O0(H)?H:f$(J,H),_=E0(Y),G=c$(_);if(!G.startsWith(X+p$)&&G!==X)continue;if(G===X)continue;let B=A0(X,G);if(B.split(p$).length>W)continue;if(IJ(B).split(p$).some((K)=>TJ.has(K)))continue;if(!U0(G))continue;Q.add(G)}return Q}function mJ($,J,W){let Q=new Map;for(let X of $){let H=[...X.filesModified,...X.filesRead],Y=new Set;for(let _ of H){if(!_)continue;let G=O0(_)?_:f$(W,_),B=c$(E0(G));if(J.has(B))Y.add(B)}for(let _ of Y){let G=Q.get(_)??[];G.push(X),Q.set(_,G)}}return Q}function j0($,J,W,Q,X){return async(H)=>{try{let{event:Y}=H,_=Y.properties.sessionID,G=typeof _==="string"?_:void 0;switch(Y.type){case"session.created":{if(G)J.getOrCreate(G,W);break}case"session.idle":{if(await $.processBatch(),G)J.updateStatus(G,"idle"),await L0(G,W,Q,X);break}case"session.completed":case"session.ended":{if(G)await $.processBatch(),await $.summarizeSession(G),J.markCompleted(G),await L0(G,W,Q,X);break}default:break}}catch(Y){console.error("[open-mem] Event handler error:",Y)}}}async function L0($,J,W,Q){if(!W.folderContextEnabled)return;try{let X=Q.getBySession($);if(X.length>0)await N0(J,X,W.folderContextMaxDepth)}catch(X){console.error("[open-mem] Folder context update error:",X)}}function K0($,J,W,Q){return async(X,H)=>{try{let{tool:Y,sessionID:_,callID:G}=X,{output:B}=H;if($.ignoredTools.includes(Y))return;if(!B||B.length<$.minOutputLength)return;let O=B;for(let w of $.sensitivePatterns)try{O=O.replace(new RegExp(w,"g"),"[REDACTED]")}catch{}O=O.replace(/<private>[\s\S]*?<\/private>/g,"[PRIVATE]"),W.getOrCreate(_,Q),J.enqueue(_,Y,O,G)}catch(Y){console.error("[open-mem] Tool capture error:",Y)}}}import{embed as ZJ}from"ai";async function C$($,J){try{let{embedding:W}=await ZJ({model:$,value:J});return W}catch{return null}}function D0($,J){if($.length!==J.length||$.length===0)return 0;let W=0,Q=0,X=0;for(let Y=0;Y<$.length;Y++)W+=$[Y]*J[Y],Q+=$[Y]*$[Y],X+=J[Y]*J[Y];let H=Math.sqrt(Q)*Math.sqrt(X);if(H===0)return 0;return W/H}function w0($){let J=[$.title,$.narrative];if($.concepts.length>0)J.push($.concepts.join(", "));return J.join(`
|
|
336
|
+
`)}class n${config;compressor;summarizer;pendingRepo;observationRepo;sessionRepo;summaryRepo;embeddingModel;processing=!1;timer=null;constructor($,J,W,Q,X,H,Y,_=null){this.config=$;this.compressor=J;this.summarizer=W;this.pendingRepo=Q;this.observationRepo=X;this.sessionRepo=H;this.summaryRepo=Y;this.embeddingModel=_}enqueue($,J,W,Q){this.pendingRepo.create({sessionId:$,toolName:J,toolOutput:W,callId:Q})}async processBatch(){if(this.processing)return 0;this.processing=!0;let $=0;try{this.pendingRepo.resetStale(5);let J=this.pendingRepo.getPending(this.config.batchSize);if(J.length===0)return 0;for(let W of J)try{this.pendingRepo.markProcessing(W.id);let X=await this.compressor.compress(W.toolName,W.toolOutput)??this.compressor.createFallbackObservation(W.toolName,W.toolOutput),H=this.observationRepo.create({sessionId:W.sessionId,type:X.type,title:X.title,subtitle:X.subtitle,facts:X.facts,narrative:X.narrative,concepts:X.concepts,filesRead:X.filesRead,filesModified:X.filesModified,rawToolOutput:W.toolOutput,toolName:W.toolName,tokenCount:k(`${X.title} ${X.narrative} ${X.facts.join(" ")}`),discoveryTokens:X.discoveryTokens??k(W.toolOutput)});if(this.embeddingModel)try{let Y=w0({title:H.title,narrative:H.narrative,concepts:H.concepts}),_=await C$(this.embeddingModel,Y);if(_)this.observationRepo.setEmbedding(H.id,_)}catch{}this.sessionRepo.incrementObservationCount(W.sessionId),this.pendingRepo.markCompleted(W.id),$++}catch(Q){this.pendingRepo.markFailed(W.id,String(Q))}return $}finally{this.processing=!1}}async summarizeSession($){let J=this.observationRepo.getBySession($);if(!this.summarizer.shouldSummarize(J.length))return;if(this.summaryRepo.getBySessionId($))return;let Q=await this.summarizer.summarize($,J);if(!Q)return;let X=this.summaryRepo.create({sessionId:$,summary:Q.summary,keyDecisions:Q.keyDecisions,filesModified:Q.filesModified,concepts:Q.concepts,tokenCount:k(Q.summary)});this.sessionRepo.setSummary($,X.id)}start(){if(this.timer)return;this.timer=setInterval(async()=>{try{await this.processBatch()}catch{}},this.config.batchIntervalMs)}stop(){if(this.timer)clearInterval(this.timer),this.timer=null}get isRunning(){return this.timer!==null}get isProcessing(){return this.processing}getStats(){return{pending:this.pendingRepo.getPending(1000).length,processing:this.processing}}}var j={};QJ(j,{void:()=>w1,util:()=>L,unknown:()=>K1,union:()=>f1,undefined:()=>N1,tuple:()=>b1,transformer:()=>l1,symbol:()=>A1,string:()=>P0,strictObject:()=>v1,setErrorMap:()=>pJ,set:()=>T1,record:()=>I1,quotelessJson:()=>lJ,promise:()=>Z1,preprocess:()=>c1,pipeline:()=>n1,ostring:()=>i1,optional:()=>u1,onumber:()=>d1,oboolean:()=>r1,objectUtil:()=>i$,object:()=>F1,number:()=>T0,nullable:()=>p1,null:()=>L1,never:()=>D1,nativeEnum:()=>m1,nan:()=>U1,map:()=>P1,makeIssue:()=>O$,literal:()=>x1,lazy:()=>g1,late:()=>S1,isValid:()=>p,isDirty:()=>b$,isAsync:()=>J$,isAborted:()=>k$,intersection:()=>k1,instanceof:()=>V1,getParsedType:()=>g,getErrorMap:()=>$$,function:()=>h1,enum:()=>y1,effect:()=>l1,discriminatedUnion:()=>C1,defaultErrorMap:()=>m,datetimeRegex:()=>k0,date:()=>O1,custom:()=>I0,coerce:()=>o1,boolean:()=>h0,bigint:()=>E1,array:()=>R1,any:()=>j1,addIssueToContext:()=>z,ZodVoid:()=>N$,ZodUnknown:()=>c,ZodUnion:()=>_$,ZodUndefined:()=>H$,ZodType:()=>N,ZodTuple:()=>y,ZodTransformer:()=>h,ZodSymbol:()=>A$,ZodString:()=>b,ZodSet:()=>s,ZodSchema:()=>N,ZodRecord:()=>L$,ZodReadonly:()=>V$,ZodPromise:()=>e,ZodPipeline:()=>D$,ZodParsedType:()=>q,ZodOptional:()=>P,ZodObject:()=>D,ZodNumber:()=>n,ZodNullable:()=>l,ZodNull:()=>Y$,ZodNever:()=>x,ZodNativeEnum:()=>q$,ZodNaN:()=>K$,ZodMap:()=>j$,ZodLiteral:()=>M$,ZodLazy:()=>B$,ZodIssueCode:()=>M,ZodIntersection:()=>G$,ZodFunction:()=>X$,ZodFirstPartyTypeKind:()=>E,ZodError:()=>C,ZodEnum:()=>d,ZodEffects:()=>h,ZodDiscriminatedUnion:()=>I$,ZodDefault:()=>z$,ZodDate:()=>a,ZodCatch:()=>S$,ZodBranded:()=>P$,ZodBoolean:()=>Q$,ZodBigInt:()=>i,ZodArray:()=>I,ZodAny:()=>t,Schema:()=>N,ParseStatus:()=>v,OK:()=>f,NEVER:()=>a1,INVALID:()=>U,EMPTY_PATH:()=>cJ,DIRTY:()=>o,BRAND:()=>z1});var L;(function($){$.assertEqual=(X)=>{};function J(X){}$.assertIs=J;function W(X){throw Error()}$.assertNever=W,$.arrayToEnum=(X)=>{let H={};for(let Y of X)H[Y]=Y;return H},$.getValidEnumValues=(X)=>{let H=$.objectKeys(X).filter((_)=>typeof X[X[_]]!=="number"),Y={};for(let _ of H)Y[_]=X[_];return $.objectValues(Y)},$.objectValues=(X)=>{return $.objectKeys(X).map(function(H){return X[H]})},$.objectKeys=typeof Object.keys==="function"?(X)=>Object.keys(X):(X)=>{let H=[];for(let Y in X)if(Object.prototype.hasOwnProperty.call(X,Y))H.push(Y);return H},$.find=(X,H)=>{for(let Y of X)if(H(Y))return Y;return},$.isInteger=typeof Number.isInteger==="function"?(X)=>Number.isInteger(X):(X)=>typeof X==="number"&&Number.isFinite(X)&&Math.floor(X)===X;function Q(X,H=" | "){return X.map((Y)=>typeof Y==="string"?`'${Y}'`:Y).join(H)}$.joinValues=Q,$.jsonStringifyReplacer=(X,H)=>{if(typeof H==="bigint")return H.toString();return H}})(L||(L={}));var i$;(function($){$.mergeShapes=(J,W)=>{return{...J,...W}}})(i$||(i$={}));var q=L.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),g=($)=>{switch(typeof $){case"undefined":return q.undefined;case"string":return q.string;case"number":return Number.isNaN($)?q.nan:q.number;case"boolean":return q.boolean;case"function":return q.function;case"bigint":return q.bigint;case"symbol":return q.symbol;case"object":if(Array.isArray($))return q.array;if($===null)return q.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return q.promise;if(typeof Map<"u"&&$ instanceof Map)return q.map;if(typeof Set<"u"&&$ instanceof Set)return q.set;if(typeof Date<"u"&&$ instanceof Date)return q.date;return q.object;default:return q.unknown}};var M=L.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),lJ=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class C extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(W)=>{this.issues=[...this.issues,W]},this.addIssues=(W=[])=>{this.issues=[...this.issues,...W]};let J=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,J);else this.__proto__=J;this.name="ZodError",this.issues=$}format($){let J=$||function(X){return X.message},W={_errors:[]},Q=(X)=>{for(let H of X.issues)if(H.code==="invalid_union")H.unionErrors.map(Q);else if(H.code==="invalid_return_type")Q(H.returnTypeError);else if(H.code==="invalid_arguments")Q(H.argumentsError);else if(H.path.length===0)W._errors.push(J(H));else{let Y=W,_=0;while(_<H.path.length){let G=H.path[_];if(_!==H.path.length-1)Y[G]=Y[G]||{_errors:[]};else Y[G]=Y[G]||{_errors:[]},Y[G]._errors.push(J(H));Y=Y[G],_++}}};return Q(this),W}static assert($){if(!($ instanceof C))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,L.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(J)=>J.message){let J={},W=[];for(let Q of this.issues)if(Q.path.length>0){let X=Q.path[0];J[X]=J[X]||[],J[X].push($(Q))}else W.push($(Q));return{formErrors:W,fieldErrors:J}}get formErrors(){return this.flatten()}}C.create=($)=>{return new C($)};var uJ=($,J)=>{let W;switch($.code){case M.invalid_type:if($.received===q.undefined)W="Required";else W=`Expected ${$.expected}, received ${$.received}`;break;case M.invalid_literal:W=`Invalid literal value, expected ${JSON.stringify($.expected,L.jsonStringifyReplacer)}`;break;case M.unrecognized_keys:W=`Unrecognized key(s) in object: ${L.joinValues($.keys,", ")}`;break;case M.invalid_union:W="Invalid input";break;case M.invalid_union_discriminator:W=`Invalid discriminator value. Expected ${L.joinValues($.options)}`;break;case M.invalid_enum_value:W=`Invalid enum value. Expected ${L.joinValues($.options)}, received '${$.received}'`;break;case M.invalid_arguments:W="Invalid function arguments";break;case M.invalid_return_type:W="Invalid function return type";break;case M.invalid_date:W="Invalid date";break;case M.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(W=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")W=`${W} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)W=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)W=`Invalid input: must end with "${$.validation.endsWith}"`;else L.assertNever($.validation);else if($.validation!=="regex")W=`Invalid ${$.validation}`;else W="Invalid";break;case M.too_small:if($.type==="array")W=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")W=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")W=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")W=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")W=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else W="Invalid input";break;case M.too_big:if($.type==="array")W=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")W=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")W=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")W=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")W=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else W="Invalid input";break;case M.custom:W="Invalid input";break;case M.invalid_intersection_types:W="Intersection results could not be merged";break;case M.not_multiple_of:W=`Number must be a multiple of ${$.multipleOf}`;break;case M.not_finite:W="Number must be finite";break;default:W=J.defaultError,L.assertNever($)}return{message:W}},m=uJ;var R0=m;function pJ($){R0=$}function $$(){return R0}var O$=($)=>{let{data:J,path:W,errorMaps:Q,issueData:X}=$,H=[...W,...X.path||[]],Y={...X,path:H};if(X.message!==void 0)return{...X,path:H,message:X.message};let _="",G=Q.filter((B)=>!!B).slice().reverse();for(let B of G)_=B(Y,{data:J,defaultError:_}).message;return{...X,path:H,message:_}},cJ=[];function z($,J){let W=$$(),Q=O$({issueData:J,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,W,W===m?void 0:m].filter((X)=>!!X)});$.common.issues.push(Q)}class v{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,J){let W=[];for(let Q of J){if(Q.status==="aborted")return U;if(Q.status==="dirty")$.dirty();W.push(Q.value)}return{status:$.value,value:W}}static async mergeObjectAsync($,J){let W=[];for(let Q of J){let X=await Q.key,H=await Q.value;W.push({key:X,value:H})}return v.mergeObjectSync($,W)}static mergeObjectSync($,J){let W={};for(let Q of J){let{key:X,value:H}=Q;if(X.status==="aborted")return U;if(H.status==="aborted")return U;if(X.status==="dirty")$.dirty();if(H.status==="dirty")$.dirty();if(X.value!=="__proto__"&&(typeof H.value<"u"||Q.alwaysSet))W[X.value]=H.value}return{status:$.value,value:W}}}var U=Object.freeze({status:"aborted"}),o=($)=>({status:"dirty",value:$}),f=($)=>({status:"valid",value:$}),k$=($)=>$.status==="aborted",b$=($)=>$.status==="dirty",p=($)=>$.status==="valid",J$=($)=>typeof Promise<"u"&&$ instanceof Promise;var S;(function($){$.errToObj=(J)=>typeof J==="string"?{message:J}:J||{},$.toString=(J)=>typeof J==="string"?J:J?.message})(S||(S={}));class T{constructor($,J,W,Q){this._cachedPath=[],this.parent=$,this.data=J,this._path=W,this._key=Q}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var F0=($,J)=>{if(p(J))return{success:!0,data:J.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let W=new C($.common.issues);return this._error=W,this._error}}}};function A($){if(!$)return{};let{errorMap:J,invalid_type_error:W,required_error:Q,description:X}=$;if(J&&(W||Q))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(J)return{errorMap:J,description:X};return{errorMap:(Y,_)=>{let{message:G}=$;if(Y.code==="invalid_enum_value")return{message:G??_.defaultError};if(typeof _.data>"u")return{message:G??Q??_.defaultError};if(Y.code!=="invalid_type")return{message:_.defaultError};return{message:G??W??_.defaultError}},description:X}}class N{get description(){return this._def.description}_getType($){return g($.data)}_getOrReturnCtx($,J){return J||{common:$.parent.common,data:$.data,parsedType:g($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new v,ctx:{common:$.parent.common,data:$.data,parsedType:g($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let J=this._parse($);if(J$(J))throw Error("Synchronous parse encountered promise.");return J}_parseAsync($){let J=this._parse($);return Promise.resolve(J)}parse($,J){let W=this.safeParse($,J);if(W.success)return W.data;throw W.error}safeParse($,J){let W={common:{issues:[],async:J?.async??!1,contextualErrorMap:J?.errorMap},path:J?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:g($)},Q=this._parseSync({data:$,path:W.path,parent:W});return F0(W,Q)}"~validate"($){let J={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:g($)};if(!this["~standard"].async)try{let W=this._parseSync({data:$,path:[],parent:J});return p(W)?{value:W.value}:{issues:J.common.issues}}catch(W){if(W?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;J.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:J}).then((W)=>p(W)?{value:W.value}:{issues:J.common.issues})}async parseAsync($,J){let W=await this.safeParseAsync($,J);if(W.success)return W.data;throw W.error}async safeParseAsync($,J){let W={common:{issues:[],contextualErrorMap:J?.errorMap,async:!0},path:J?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:g($)},Q=this._parse({data:$,path:W.path,parent:W}),X=await(J$(Q)?Q:Promise.resolve(Q));return F0(W,X)}refine($,J){let W=(Q)=>{if(typeof J==="string"||typeof J>"u")return{message:J};else if(typeof J==="function")return J(Q);else return J};return this._refinement((Q,X)=>{let H=$(Q),Y=()=>X.addIssue({code:M.custom,...W(Q)});if(typeof Promise<"u"&&H instanceof Promise)return H.then((_)=>{if(!_)return Y(),!1;else return!0});if(!H)return Y(),!1;else return!0})}refinement($,J){return this._refinement((W,Q)=>{if(!$(W))return Q.addIssue(typeof J==="function"?J(W,Q):J),!1;else return!0})}_refinement($){return new h({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(J)=>this["~validate"](J)}}optional(){return P.create(this,this._def)}nullable(){return l.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return I.create(this)}promise(){return e.create(this,this._def)}or($){return _$.create([this,$],this._def)}and($){return G$.create(this,$,this._def)}transform($){return new h({...A(this._def),schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:$}})}default($){let J=typeof $==="function"?$:()=>$;return new z$({...A(this._def),innerType:this,defaultValue:J,typeName:E.ZodDefault})}brand(){return new P$({typeName:E.ZodBranded,type:this,...A(this._def)})}catch($){let J=typeof $==="function"?$:()=>$;return new S$({...A(this._def),innerType:this,catchValue:J,typeName:E.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return D$.create(this,$)}readonly(){return V$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var nJ=/^c[^\s-]{8,}$/i,iJ=/^[0-9a-z]+$/,dJ=/^[0-9A-HJKMNP-TV-Z]{26}$/i,rJ=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,oJ=/^[a-z0-9_-]{21}$/i,aJ=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,tJ=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,sJ=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,eJ="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",d$,$1=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,J1=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,W1=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,X1=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Q1=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,H1=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,f0="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Y1=new RegExp(`^${f0}$`);function C0($){let J="[0-5]\\d";if($.precision)J=`${J}\\.\\d{${$.precision}}`;else if($.precision==null)J=`${J}(\\.\\d+)?`;let W=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${J})${W}`}function _1($){return new RegExp(`^${C0($)}$`)}function k0($){let J=`${f0}T${C0($)}`,W=[];if(W.push($.local?"Z?":"Z"),$.offset)W.push("([+-]\\d{2}:?\\d{2})");return J=`${J}(${W.join("|")})`,new RegExp(`^${J}$`)}function G1($,J){if((J==="v4"||!J)&&$1.test($))return!0;if((J==="v6"||!J)&&W1.test($))return!0;return!1}function B1($,J){if(!aJ.test($))return!1;try{let[W]=$.split(".");if(!W)return!1;let Q=W.replace(/-/g,"+").replace(/_/g,"/").padEnd(W.length+(4-W.length%4)%4,"="),X=JSON.parse(atob(Q));if(typeof X!=="object"||X===null)return!1;if("typ"in X&&X?.typ!=="JWT")return!1;if(!X.alg)return!1;if(J&&X.alg!==J)return!1;return!0}catch{return!1}}function M1($,J){if((J==="v4"||!J)&&J1.test($))return!0;if((J==="v6"||!J)&&X1.test($))return!0;return!1}class b extends N{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==q.string){let X=this._getOrReturnCtx($);return z(X,{code:M.invalid_type,expected:q.string,received:X.parsedType}),U}let W=new v,Q=void 0;for(let X of this._def.checks)if(X.kind==="min"){if($.data.length<X.value)Q=this._getOrReturnCtx($,Q),z(Q,{code:M.too_small,minimum:X.value,type:"string",inclusive:!0,exact:!1,message:X.message}),W.dirty()}else if(X.kind==="max"){if($.data.length>X.value)Q=this._getOrReturnCtx($,Q),z(Q,{code:M.too_big,maximum:X.value,type:"string",inclusive:!0,exact:!1,message:X.message}),W.dirty()}else if(X.kind==="length"){let H=$.data.length>X.value,Y=$.data.length<X.value;if(H||Y){if(Q=this._getOrReturnCtx($,Q),H)z(Q,{code:M.too_big,maximum:X.value,type:"string",inclusive:!0,exact:!0,message:X.message});else if(Y)z(Q,{code:M.too_small,minimum:X.value,type:"string",inclusive:!0,exact:!0,message:X.message});W.dirty()}}else if(X.kind==="email"){if(!sJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"email",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="emoji"){if(!d$)d$=new RegExp(eJ,"u");if(!d$.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"emoji",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="uuid"){if(!rJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"uuid",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="nanoid"){if(!oJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"nanoid",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="cuid"){if(!nJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"cuid",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="cuid2"){if(!iJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"cuid2",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="ulid"){if(!dJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"ulid",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="url")try{new URL($.data)}catch{Q=this._getOrReturnCtx($,Q),z(Q,{validation:"url",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="regex"){if(X.regex.lastIndex=0,!X.regex.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"regex",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="trim")$.data=$.data.trim();else if(X.kind==="includes"){if(!$.data.includes(X.value,X.position))Q=this._getOrReturnCtx($,Q),z(Q,{code:M.invalid_string,validation:{includes:X.value,position:X.position},message:X.message}),W.dirty()}else if(X.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(X.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(X.kind==="startsWith"){if(!$.data.startsWith(X.value))Q=this._getOrReturnCtx($,Q),z(Q,{code:M.invalid_string,validation:{startsWith:X.value},message:X.message}),W.dirty()}else if(X.kind==="endsWith"){if(!$.data.endsWith(X.value))Q=this._getOrReturnCtx($,Q),z(Q,{code:M.invalid_string,validation:{endsWith:X.value},message:X.message}),W.dirty()}else if(X.kind==="datetime"){if(!k0(X).test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{code:M.invalid_string,validation:"datetime",message:X.message}),W.dirty()}else if(X.kind==="date"){if(!Y1.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{code:M.invalid_string,validation:"date",message:X.message}),W.dirty()}else if(X.kind==="time"){if(!_1(X).test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{code:M.invalid_string,validation:"time",message:X.message}),W.dirty()}else if(X.kind==="duration"){if(!tJ.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"duration",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="ip"){if(!G1($.data,X.version))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"ip",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="jwt"){if(!B1($.data,X.alg))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"jwt",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="cidr"){if(!M1($.data,X.version))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"cidr",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="base64"){if(!Q1.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"base64",code:M.invalid_string,message:X.message}),W.dirty()}else if(X.kind==="base64url"){if(!H1.test($.data))Q=this._getOrReturnCtx($,Q),z(Q,{validation:"base64url",code:M.invalid_string,message:X.message}),W.dirty()}else L.assertNever(X);return{status:W.value,value:$.data}}_regex($,J,W){return this.refinement((Q)=>$.test(Q),{validation:J,code:M.invalid_string,...S.errToObj(W)})}_addCheck($){return new b({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...S.errToObj($)})}url($){return this._addCheck({kind:"url",...S.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...S.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...S.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...S.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...S.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...S.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...S.errToObj($)})}base64($){return this._addCheck({kind:"base64",...S.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...S.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...S.errToObj($)})}ip($){return this._addCheck({kind:"ip",...S.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...S.errToObj($)})}datetime($){if(typeof $==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:$});return this._addCheck({kind:"datetime",precision:typeof $?.precision>"u"?null:$?.precision,offset:$?.offset??!1,local:$?.local??!1,...S.errToObj($?.message)})}date($){return this._addCheck({kind:"date",message:$})}time($){if(typeof $==="string")return this._addCheck({kind:"time",precision:null,message:$});return this._addCheck({kind:"time",precision:typeof $?.precision>"u"?null:$?.precision,...S.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...S.errToObj($)})}regex($,J){return this._addCheck({kind:"regex",regex:$,...S.errToObj(J)})}includes($,J){return this._addCheck({kind:"includes",value:$,position:J?.position,...S.errToObj(J?.message)})}startsWith($,J){return this._addCheck({kind:"startsWith",value:$,...S.errToObj(J)})}endsWith($,J){return this._addCheck({kind:"endsWith",value:$,...S.errToObj(J)})}min($,J){return this._addCheck({kind:"min",value:$,...S.errToObj(J)})}max($,J){return this._addCheck({kind:"max",value:$,...S.errToObj(J)})}length($,J){return this._addCheck({kind:"length",value:$,...S.errToObj(J)})}nonempty($){return this.min(1,S.errToObj($))}trim(){return new b({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new b({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new b({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxLength(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}}b.create=($)=>{return new b({checks:[],typeName:E.ZodString,coerce:$?.coerce??!1,...A($)})};function q1($,J){let W=($.toString().split(".")[1]||"").length,Q=(J.toString().split(".")[1]||"").length,X=W>Q?W:Q,H=Number.parseInt($.toFixed(X).replace(".","")),Y=Number.parseInt(J.toFixed(X).replace(".",""));return H%Y/10**X}class n extends N{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse($){if(this._def.coerce)$.data=Number($.data);if(this._getType($)!==q.number){let X=this._getOrReturnCtx($);return z(X,{code:M.invalid_type,expected:q.number,received:X.parsedType}),U}let W=void 0,Q=new v;for(let X of this._def.checks)if(X.kind==="int"){if(!L.isInteger($.data))W=this._getOrReturnCtx($,W),z(W,{code:M.invalid_type,expected:"integer",received:"float",message:X.message}),Q.dirty()}else if(X.kind==="min"){if(X.inclusive?$.data<X.value:$.data<=X.value)W=this._getOrReturnCtx($,W),z(W,{code:M.too_small,minimum:X.value,type:"number",inclusive:X.inclusive,exact:!1,message:X.message}),Q.dirty()}else if(X.kind==="max"){if(X.inclusive?$.data>X.value:$.data>=X.value)W=this._getOrReturnCtx($,W),z(W,{code:M.too_big,maximum:X.value,type:"number",inclusive:X.inclusive,exact:!1,message:X.message}),Q.dirty()}else if(X.kind==="multipleOf"){if(q1($.data,X.value)!==0)W=this._getOrReturnCtx($,W),z(W,{code:M.not_multiple_of,multipleOf:X.value,message:X.message}),Q.dirty()}else if(X.kind==="finite"){if(!Number.isFinite($.data))W=this._getOrReturnCtx($,W),z(W,{code:M.not_finite,message:X.message}),Q.dirty()}else L.assertNever(X);return{status:Q.value,value:$.data}}gte($,J){return this.setLimit("min",$,!0,S.toString(J))}gt($,J){return this.setLimit("min",$,!1,S.toString(J))}lte($,J){return this.setLimit("max",$,!0,S.toString(J))}lt($,J){return this.setLimit("max",$,!1,S.toString(J))}setLimit($,J,W,Q){return new n({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:W,message:S.toString(Q)}]})}_addCheck($){return new n({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:S.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:S.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:S.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:S.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:S.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:S.toString(J)})}finite($){return this._addCheck({kind:"finite",message:S.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:S.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:S.toString($)})}get minValue(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxValue(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&L.isInteger($.value))}get isFinite(){let $=null,J=null;for(let W of this._def.checks)if(W.kind==="finite"||W.kind==="int"||W.kind==="multipleOf")return!0;else if(W.kind==="min"){if(J===null||W.value>J)J=W.value}else if(W.kind==="max"){if($===null||W.value<$)$=W.value}return Number.isFinite(J)&&Number.isFinite($)}}n.create=($)=>{return new n({checks:[],typeName:E.ZodNumber,coerce:$?.coerce||!1,...A($)})};class i extends N{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse($){if(this._def.coerce)try{$.data=BigInt($.data)}catch{return this._getInvalidInput($)}if(this._getType($)!==q.bigint)return this._getInvalidInput($);let W=void 0,Q=new v;for(let X of this._def.checks)if(X.kind==="min"){if(X.inclusive?$.data<X.value:$.data<=X.value)W=this._getOrReturnCtx($,W),z(W,{code:M.too_small,type:"bigint",minimum:X.value,inclusive:X.inclusive,message:X.message}),Q.dirty()}else if(X.kind==="max"){if(X.inclusive?$.data>X.value:$.data>=X.value)W=this._getOrReturnCtx($,W),z(W,{code:M.too_big,type:"bigint",maximum:X.value,inclusive:X.inclusive,message:X.message}),Q.dirty()}else if(X.kind==="multipleOf"){if($.data%X.value!==BigInt(0))W=this._getOrReturnCtx($,W),z(W,{code:M.not_multiple_of,multipleOf:X.value,message:X.message}),Q.dirty()}else L.assertNever(X);return{status:Q.value,value:$.data}}_getInvalidInput($){let J=this._getOrReturnCtx($);return z(J,{code:M.invalid_type,expected:q.bigint,received:J.parsedType}),U}gte($,J){return this.setLimit("min",$,!0,S.toString(J))}gt($,J){return this.setLimit("min",$,!1,S.toString(J))}lte($,J){return this.setLimit("max",$,!0,S.toString(J))}lt($,J){return this.setLimit("max",$,!1,S.toString(J))}setLimit($,J,W,Q){return new i({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:W,message:S.toString(Q)}]})}_addCheck($){return new i({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:S.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:S.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:S.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:S.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:S.toString(J)})}get minValue(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $}get maxValue(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $}}i.create=($)=>{return new i({checks:[],typeName:E.ZodBigInt,coerce:$?.coerce??!1,...A($)})};class Q$ extends N{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==q.boolean){let W=this._getOrReturnCtx($);return z(W,{code:M.invalid_type,expected:q.boolean,received:W.parsedType}),U}return f($.data)}}Q$.create=($)=>{return new Q$({typeName:E.ZodBoolean,coerce:$?.coerce||!1,...A($)})};class a extends N{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==q.date){let X=this._getOrReturnCtx($);return z(X,{code:M.invalid_type,expected:q.date,received:X.parsedType}),U}if(Number.isNaN($.data.getTime())){let X=this._getOrReturnCtx($);return z(X,{code:M.invalid_date}),U}let W=new v,Q=void 0;for(let X of this._def.checks)if(X.kind==="min"){if($.data.getTime()<X.value)Q=this._getOrReturnCtx($,Q),z(Q,{code:M.too_small,message:X.message,inclusive:!0,exact:!1,minimum:X.value,type:"date"}),W.dirty()}else if(X.kind==="max"){if($.data.getTime()>X.value)Q=this._getOrReturnCtx($,Q),z(Q,{code:M.too_big,message:X.message,inclusive:!0,exact:!1,maximum:X.value,type:"date"}),W.dirty()}else L.assertNever(X);return{status:W.value,value:new Date($.data.getTime())}}_addCheck($){return new a({...this._def,checks:[...this._def.checks,$]})}min($,J){return this._addCheck({kind:"min",value:$.getTime(),message:S.toString(J)})}max($,J){return this._addCheck({kind:"max",value:$.getTime(),message:S.toString(J)})}get minDate(){let $=null;for(let J of this._def.checks)if(J.kind==="min"){if($===null||J.value>$)$=J.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let J of this._def.checks)if(J.kind==="max"){if($===null||J.value<$)$=J.value}return $!=null?new Date($):null}}a.create=($)=>{return new a({checks:[],coerce:$?.coerce||!1,typeName:E.ZodDate,...A($)})};class A$ extends N{_parse($){if(this._getType($)!==q.symbol){let W=this._getOrReturnCtx($);return z(W,{code:M.invalid_type,expected:q.symbol,received:W.parsedType}),U}return f($.data)}}A$.create=($)=>{return new A$({typeName:E.ZodSymbol,...A($)})};class H$ extends N{_parse($){if(this._getType($)!==q.undefined){let W=this._getOrReturnCtx($);return z(W,{code:M.invalid_type,expected:q.undefined,received:W.parsedType}),U}return f($.data)}}H$.create=($)=>{return new H$({typeName:E.ZodUndefined,...A($)})};class Y$ extends N{_parse($){if(this._getType($)!==q.null){let W=this._getOrReturnCtx($);return z(W,{code:M.invalid_type,expected:q.null,received:W.parsedType}),U}return f($.data)}}Y$.create=($)=>{return new Y$({typeName:E.ZodNull,...A($)})};class t extends N{constructor(){super(...arguments);this._any=!0}_parse($){return f($.data)}}t.create=($)=>{return new t({typeName:E.ZodAny,...A($)})};class c extends N{constructor(){super(...arguments);this._unknown=!0}_parse($){return f($.data)}}c.create=($)=>{return new c({typeName:E.ZodUnknown,...A($)})};class x extends N{_parse($){let J=this._getOrReturnCtx($);return z(J,{code:M.invalid_type,expected:q.never,received:J.parsedType}),U}}x.create=($)=>{return new x({typeName:E.ZodNever,...A($)})};class N$ extends N{_parse($){if(this._getType($)!==q.undefined){let W=this._getOrReturnCtx($);return z(W,{code:M.invalid_type,expected:q.void,received:W.parsedType}),U}return f($.data)}}N$.create=($)=>{return new N$({typeName:E.ZodVoid,...A($)})};class I extends N{_parse($){let{ctx:J,status:W}=this._processInputParams($),Q=this._def;if(J.parsedType!==q.array)return z(J,{code:M.invalid_type,expected:q.array,received:J.parsedType}),U;if(Q.exactLength!==null){let H=J.data.length>Q.exactLength.value,Y=J.data.length<Q.exactLength.value;if(H||Y)z(J,{code:H?M.too_big:M.too_small,minimum:Y?Q.exactLength.value:void 0,maximum:H?Q.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Q.exactLength.message}),W.dirty()}if(Q.minLength!==null){if(J.data.length<Q.minLength.value)z(J,{code:M.too_small,minimum:Q.minLength.value,type:"array",inclusive:!0,exact:!1,message:Q.minLength.message}),W.dirty()}if(Q.maxLength!==null){if(J.data.length>Q.maxLength.value)z(J,{code:M.too_big,maximum:Q.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Q.maxLength.message}),W.dirty()}if(J.common.async)return Promise.all([...J.data].map((H,Y)=>{return Q.type._parseAsync(new T(J,H,J.path,Y))})).then((H)=>{return v.mergeArray(W,H)});let X=[...J.data].map((H,Y)=>{return Q.type._parseSync(new T(J,H,J.path,Y))});return v.mergeArray(W,X)}get element(){return this._def.type}min($,J){return new I({...this._def,minLength:{value:$,message:S.toString(J)}})}max($,J){return new I({...this._def,maxLength:{value:$,message:S.toString(J)}})}length($,J){return new I({...this._def,exactLength:{value:$,message:S.toString(J)}})}nonempty($){return this.min(1,$)}}I.create=($,J)=>{return new I({type:$,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...A(J)})};function W$($){if($ instanceof D){let J={};for(let W in $.shape){let Q=$.shape[W];J[W]=P.create(W$(Q))}return new D({...$._def,shape:()=>J})}else if($ instanceof I)return new I({...$._def,type:W$($.element)});else if($ instanceof P)return P.create(W$($.unwrap()));else if($ instanceof l)return l.create(W$($.unwrap()));else if($ instanceof y)return y.create($.items.map((J)=>W$(J)));else return $}class D extends N{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),J=L.objectKeys($);return this._cached={shape:$,keys:J},this._cached}_parse($){if(this._getType($)!==q.object){let G=this._getOrReturnCtx($);return z(G,{code:M.invalid_type,expected:q.object,received:G.parsedType}),U}let{status:W,ctx:Q}=this._processInputParams($),{shape:X,keys:H}=this._getCached(),Y=[];if(!(this._def.catchall instanceof x&&this._def.unknownKeys==="strip")){for(let G in Q.data)if(!H.includes(G))Y.push(G)}let _=[];for(let G of H){let B=X[G],O=Q.data[G];_.push({key:{status:"valid",value:G},value:B._parse(new T(Q,O,Q.path,G)),alwaysSet:G in Q.data})}if(this._def.catchall instanceof x){let G=this._def.unknownKeys;if(G==="passthrough")for(let B of Y)_.push({key:{status:"valid",value:B},value:{status:"valid",value:Q.data[B]}});else if(G==="strict"){if(Y.length>0)z(Q,{code:M.unrecognized_keys,keys:Y}),W.dirty()}else if(G==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let G=this._def.catchall;for(let B of Y){let O=Q.data[B];_.push({key:{status:"valid",value:B},value:G._parse(new T(Q,O,Q.path,B)),alwaysSet:B in Q.data})}}if(Q.common.async)return Promise.resolve().then(async()=>{let G=[];for(let B of _){let O=await B.key,w=await B.value;G.push({key:O,value:w,alwaysSet:B.alwaysSet})}return G}).then((G)=>{return v.mergeObjectSync(W,G)});else return v.mergeObjectSync(W,_)}get shape(){return this._def.shape()}strict($){return S.errToObj,new D({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(J,W)=>{let Q=this._def.errorMap?.(J,W).message??W.defaultError;if(J.code==="unrecognized_keys")return{message:S.errToObj($).message??Q};return{message:Q}}}:{}})}strip(){return new D({...this._def,unknownKeys:"strip"})}passthrough(){return new D({...this._def,unknownKeys:"passthrough"})}extend($){return new D({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new D({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:E.ZodObject})}setKey($,J){return this.augment({[$]:J})}catchall($){return new D({...this._def,catchall:$})}pick($){let J={};for(let W of L.objectKeys($))if($[W]&&this.shape[W])J[W]=this.shape[W];return new D({...this._def,shape:()=>J})}omit($){let J={};for(let W of L.objectKeys(this.shape))if(!$[W])J[W]=this.shape[W];return new D({...this._def,shape:()=>J})}deepPartial(){return W$(this)}partial($){let J={};for(let W of L.objectKeys(this.shape)){let Q=this.shape[W];if($&&!$[W])J[W]=Q;else J[W]=Q.optional()}return new D({...this._def,shape:()=>J})}required($){let J={};for(let W of L.objectKeys(this.shape))if($&&!$[W])J[W]=this.shape[W];else{let X=this.shape[W];while(X instanceof P)X=X._def.innerType;J[W]=X}return new D({...this._def,shape:()=>J})}keyof(){return b0(L.objectKeys(this.shape))}}D.create=($,J)=>{return new D({shape:()=>$,unknownKeys:"strip",catchall:x.create(),typeName:E.ZodObject,...A(J)})};D.strictCreate=($,J)=>{return new D({shape:()=>$,unknownKeys:"strict",catchall:x.create(),typeName:E.ZodObject,...A(J)})};D.lazycreate=($,J)=>{return new D({shape:$,unknownKeys:"strip",catchall:x.create(),typeName:E.ZodObject,...A(J)})};class _$ extends N{_parse($){let{ctx:J}=this._processInputParams($),W=this._def.options;function Q(X){for(let Y of X)if(Y.result.status==="valid")return Y.result;for(let Y of X)if(Y.result.status==="dirty")return J.common.issues.push(...Y.ctx.common.issues),Y.result;let H=X.map((Y)=>new C(Y.ctx.common.issues));return z(J,{code:M.invalid_union,unionErrors:H}),U}if(J.common.async)return Promise.all(W.map(async(X)=>{let H={...J,common:{...J.common,issues:[]},parent:null};return{result:await X._parseAsync({data:J.data,path:J.path,parent:H}),ctx:H}})).then(Q);else{let X=void 0,H=[];for(let _ of W){let G={...J,common:{...J.common,issues:[]},parent:null},B=_._parseSync({data:J.data,path:J.path,parent:G});if(B.status==="valid")return B;else if(B.status==="dirty"&&!X)X={result:B,ctx:G};if(G.common.issues.length)H.push(G.common.issues)}if(X)return J.common.issues.push(...X.ctx.common.issues),X.result;let Y=H.map((_)=>new C(_));return z(J,{code:M.invalid_union,unionErrors:Y}),U}}get options(){return this._def.options}}_$.create=($,J)=>{return new _$({options:$,typeName:E.ZodUnion,...A(J)})};var Z=($)=>{if($ instanceof B$)return Z($.schema);else if($ instanceof h)return Z($.innerType());else if($ instanceof M$)return[$.value];else if($ instanceof d)return $.options;else if($ instanceof q$)return L.objectValues($.enum);else if($ instanceof z$)return Z($._def.innerType);else if($ instanceof H$)return[void 0];else if($ instanceof Y$)return[null];else if($ instanceof P)return[void 0,...Z($.unwrap())];else if($ instanceof l)return[null,...Z($.unwrap())];else if($ instanceof P$)return Z($.unwrap());else if($ instanceof V$)return Z($.unwrap());else if($ instanceof S$)return Z($._def.innerType);else return[]};class I$ extends N{_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==q.object)return z(J,{code:M.invalid_type,expected:q.object,received:J.parsedType}),U;let W=this.discriminator,Q=J.data[W],X=this.optionsMap.get(Q);if(!X)return z(J,{code:M.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[W]}),U;if(J.common.async)return X._parseAsync({data:J.data,path:J.path,parent:J});else return X._parseSync({data:J.data,path:J.path,parent:J})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,J,W){let Q=new Map;for(let X of J){let H=Z(X.shape[$]);if(!H.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let Y of H){if(Q.has(Y))throw Error(`Discriminator property ${String($)} has duplicate value ${String(Y)}`);Q.set(Y,X)}}return new I$({typeName:E.ZodDiscriminatedUnion,discriminator:$,options:J,optionsMap:Q,...A(W)})}}function r$($,J){let W=g($),Q=g(J);if($===J)return{valid:!0,data:$};else if(W===q.object&&Q===q.object){let X=L.objectKeys(J),H=L.objectKeys($).filter((_)=>X.indexOf(_)!==-1),Y={...$,...J};for(let _ of H){let G=r$($[_],J[_]);if(!G.valid)return{valid:!1};Y[_]=G.data}return{valid:!0,data:Y}}else if(W===q.array&&Q===q.array){if($.length!==J.length)return{valid:!1};let X=[];for(let H=0;H<$.length;H++){let Y=$[H],_=J[H],G=r$(Y,_);if(!G.valid)return{valid:!1};X.push(G.data)}return{valid:!0,data:X}}else if(W===q.date&&Q===q.date&&+$===+J)return{valid:!0,data:$};else return{valid:!1}}class G$ extends N{_parse($){let{status:J,ctx:W}=this._processInputParams($),Q=(X,H)=>{if(k$(X)||k$(H))return U;let Y=r$(X.value,H.value);if(!Y.valid)return z(W,{code:M.invalid_intersection_types}),U;if(b$(X)||b$(H))J.dirty();return{status:J.value,value:Y.data}};if(W.common.async)return Promise.all([this._def.left._parseAsync({data:W.data,path:W.path,parent:W}),this._def.right._parseAsync({data:W.data,path:W.path,parent:W})]).then(([X,H])=>Q(X,H));else return Q(this._def.left._parseSync({data:W.data,path:W.path,parent:W}),this._def.right._parseSync({data:W.data,path:W.path,parent:W}))}}G$.create=($,J,W)=>{return new G$({left:$,right:J,typeName:E.ZodIntersection,...A(W)})};class y extends N{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==q.array)return z(W,{code:M.invalid_type,expected:q.array,received:W.parsedType}),U;if(W.data.length<this._def.items.length)return z(W,{code:M.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),U;if(!this._def.rest&&W.data.length>this._def.items.length)z(W,{code:M.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),J.dirty();let X=[...W.data].map((H,Y)=>{let _=this._def.items[Y]||this._def.rest;if(!_)return null;return _._parse(new T(W,H,W.path,Y))}).filter((H)=>!!H);if(W.common.async)return Promise.all(X).then((H)=>{return v.mergeArray(J,H)});else return v.mergeArray(J,X)}get items(){return this._def.items}rest($){return new y({...this._def,rest:$})}}y.create=($,J)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new y({items:$,typeName:E.ZodTuple,rest:null,...A(J)})};class L$ extends N{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==q.object)return z(W,{code:M.invalid_type,expected:q.object,received:W.parsedType}),U;let Q=[],X=this._def.keyType,H=this._def.valueType;for(let Y in W.data)Q.push({key:X._parse(new T(W,Y,W.path,Y)),value:H._parse(new T(W,W.data[Y],W.path,Y)),alwaysSet:Y in W.data});if(W.common.async)return v.mergeObjectAsync(J,Q);else return v.mergeObjectSync(J,Q)}get element(){return this._def.valueType}static create($,J,W){if(J instanceof N)return new L$({keyType:$,valueType:J,typeName:E.ZodRecord,...A(W)});return new L$({keyType:b.create(),valueType:$,typeName:E.ZodRecord,...A(J)})}}class j$ extends N{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==q.map)return z(W,{code:M.invalid_type,expected:q.map,received:W.parsedType}),U;let Q=this._def.keyType,X=this._def.valueType,H=[...W.data.entries()].map(([Y,_],G)=>{return{key:Q._parse(new T(W,Y,W.path,[G,"key"])),value:X._parse(new T(W,_,W.path,[G,"value"]))}});if(W.common.async){let Y=new Map;return Promise.resolve().then(async()=>{for(let _ of H){let G=await _.key,B=await _.value;if(G.status==="aborted"||B.status==="aborted")return U;if(G.status==="dirty"||B.status==="dirty")J.dirty();Y.set(G.value,B.value)}return{status:J.value,value:Y}})}else{let Y=new Map;for(let _ of H){let{key:G,value:B}=_;if(G.status==="aborted"||B.status==="aborted")return U;if(G.status==="dirty"||B.status==="dirty")J.dirty();Y.set(G.value,B.value)}return{status:J.value,value:Y}}}}j$.create=($,J,W)=>{return new j$({valueType:J,keyType:$,typeName:E.ZodMap,...A(W)})};class s extends N{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==q.set)return z(W,{code:M.invalid_type,expected:q.set,received:W.parsedType}),U;let Q=this._def;if(Q.minSize!==null){if(W.data.size<Q.minSize.value)z(W,{code:M.too_small,minimum:Q.minSize.value,type:"set",inclusive:!0,exact:!1,message:Q.minSize.message}),J.dirty()}if(Q.maxSize!==null){if(W.data.size>Q.maxSize.value)z(W,{code:M.too_big,maximum:Q.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Q.maxSize.message}),J.dirty()}let X=this._def.valueType;function H(_){let G=new Set;for(let B of _){if(B.status==="aborted")return U;if(B.status==="dirty")J.dirty();G.add(B.value)}return{status:J.value,value:G}}let Y=[...W.data.values()].map((_,G)=>X._parse(new T(W,_,W.path,G)));if(W.common.async)return Promise.all(Y).then((_)=>H(_));else return H(Y)}min($,J){return new s({...this._def,minSize:{value:$,message:S.toString(J)}})}max($,J){return new s({...this._def,maxSize:{value:$,message:S.toString(J)}})}size($,J){return this.min($,J).max($,J)}nonempty($){return this.min(1,$)}}s.create=($,J)=>{return new s({valueType:$,minSize:null,maxSize:null,typeName:E.ZodSet,...A(J)})};class X$ extends N{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==q.function)return z(J,{code:M.invalid_type,expected:q.function,received:J.parsedType}),U;function W(Y,_){return O$({data:Y,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,$$(),m].filter((G)=>!!G),issueData:{code:M.invalid_arguments,argumentsError:_}})}function Q(Y,_){return O$({data:Y,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,$$(),m].filter((G)=>!!G),issueData:{code:M.invalid_return_type,returnTypeError:_}})}let X={errorMap:J.common.contextualErrorMap},H=J.data;if(this._def.returns instanceof e){let Y=this;return f(async function(..._){let G=new C([]),B=await Y._def.args.parseAsync(_,X).catch((K)=>{throw G.addIssue(W(_,K)),G}),O=await Reflect.apply(H,this,B);return await Y._def.returns._def.type.parseAsync(O,X).catch((K)=>{throw G.addIssue(Q(O,K)),G})})}else{let Y=this;return f(function(..._){let G=Y._def.args.safeParse(_,X);if(!G.success)throw new C([W(_,G.error)]);let B=Reflect.apply(H,this,G.data),O=Y._def.returns.safeParse(B,X);if(!O.success)throw new C([Q(B,O.error)]);return O.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new X$({...this._def,args:y.create($).rest(c.create())})}returns($){return new X$({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,J,W){return new X$({args:$?$:y.create([]).rest(c.create()),returns:J||c.create(),typeName:E.ZodFunction,...A(W)})}}class B$ extends N{get schema(){return this._def.getter()}_parse($){let{ctx:J}=this._processInputParams($);return this._def.getter()._parse({data:J.data,path:J.path,parent:J})}}B$.create=($,J)=>{return new B$({getter:$,typeName:E.ZodLazy,...A(J)})};class M$ extends N{_parse($){if($.data!==this._def.value){let J=this._getOrReturnCtx($);return z(J,{received:J.data,code:M.invalid_literal,expected:this._def.value}),U}return{status:"valid",value:$.data}}get value(){return this._def.value}}M$.create=($,J)=>{return new M$({value:$,typeName:E.ZodLiteral,...A(J)})};function b0($,J){return new d({values:$,typeName:E.ZodEnum,...A(J)})}class d extends N{_parse($){if(typeof $.data!=="string"){let J=this._getOrReturnCtx($),W=this._def.values;return z(J,{expected:L.joinValues(W),received:J.parsedType,code:M.invalid_type}),U}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let J=this._getOrReturnCtx($),W=this._def.values;return z(J,{received:J.data,code:M.invalid_enum_value,options:W}),U}return f($.data)}get options(){return this._def.values}get enum(){let $={};for(let J of this._def.values)$[J]=J;return $}get Values(){let $={};for(let J of this._def.values)$[J]=J;return $}get Enum(){let $={};for(let J of this._def.values)$[J]=J;return $}extract($,J=this._def){return d.create($,{...this._def,...J})}exclude($,J=this._def){return d.create(this.options.filter((W)=>!$.includes(W)),{...this._def,...J})}}d.create=b0;class q$ extends N{_parse($){let J=L.getValidEnumValues(this._def.values),W=this._getOrReturnCtx($);if(W.parsedType!==q.string&&W.parsedType!==q.number){let Q=L.objectValues(J);return z(W,{expected:L.joinValues(Q),received:W.parsedType,code:M.invalid_type}),U}if(!this._cache)this._cache=new Set(L.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let Q=L.objectValues(J);return z(W,{received:W.data,code:M.invalid_enum_value,options:Q}),U}return f($.data)}get enum(){return this._def.values}}q$.create=($,J)=>{return new q$({values:$,typeName:E.ZodNativeEnum,...A(J)})};class e extends N{unwrap(){return this._def.type}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==q.promise&&J.common.async===!1)return z(J,{code:M.invalid_type,expected:q.promise,received:J.parsedType}),U;let W=J.parsedType===q.promise?J.data:Promise.resolve(J.data);return f(W.then((Q)=>{return this._def.type.parseAsync(Q,{path:J.path,errorMap:J.common.contextualErrorMap})}))}}e.create=($,J)=>{return new e({type:$,typeName:E.ZodPromise,...A(J)})};class h extends N{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===E.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:J,ctx:W}=this._processInputParams($),Q=this._def.effect||null,X={addIssue:(H)=>{if(z(W,H),H.fatal)J.abort();else J.dirty()},get path(){return W.path}};if(X.addIssue=X.addIssue.bind(X),Q.type==="preprocess"){let H=Q.transform(W.data,X);if(W.common.async)return Promise.resolve(H).then(async(Y)=>{if(J.value==="aborted")return U;let _=await this._def.schema._parseAsync({data:Y,path:W.path,parent:W});if(_.status==="aborted")return U;if(_.status==="dirty")return o(_.value);if(J.value==="dirty")return o(_.value);return _});else{if(J.value==="aborted")return U;let Y=this._def.schema._parseSync({data:H,path:W.path,parent:W});if(Y.status==="aborted")return U;if(Y.status==="dirty")return o(Y.value);if(J.value==="dirty")return o(Y.value);return Y}}if(Q.type==="refinement"){let H=(Y)=>{let _=Q.refinement(Y,X);if(W.common.async)return Promise.resolve(_);if(_ instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Y};if(W.common.async===!1){let Y=this._def.schema._parseSync({data:W.data,path:W.path,parent:W});if(Y.status==="aborted")return U;if(Y.status==="dirty")J.dirty();return H(Y.value),{status:J.value,value:Y.value}}else return this._def.schema._parseAsync({data:W.data,path:W.path,parent:W}).then((Y)=>{if(Y.status==="aborted")return U;if(Y.status==="dirty")J.dirty();return H(Y.value).then(()=>{return{status:J.value,value:Y.value}})})}if(Q.type==="transform")if(W.common.async===!1){let H=this._def.schema._parseSync({data:W.data,path:W.path,parent:W});if(!p(H))return U;let Y=Q.transform(H.value,X);if(Y instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:Y}}else return this._def.schema._parseAsync({data:W.data,path:W.path,parent:W}).then((H)=>{if(!p(H))return U;return Promise.resolve(Q.transform(H.value,X)).then((Y)=>({status:J.value,value:Y}))});L.assertNever(Q)}}h.create=($,J,W)=>{return new h({schema:$,typeName:E.ZodEffects,effect:J,...A(W)})};h.createWithPreprocess=($,J,W)=>{return new h({schema:J,effect:{type:"preprocess",transform:$},typeName:E.ZodEffects,...A(W)})};class P extends N{_parse($){if(this._getType($)===q.undefined)return f(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}P.create=($,J)=>{return new P({innerType:$,typeName:E.ZodOptional,...A(J)})};class l extends N{_parse($){if(this._getType($)===q.null)return f(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}l.create=($,J)=>{return new l({innerType:$,typeName:E.ZodNullable,...A(J)})};class z$ extends N{_parse($){let{ctx:J}=this._processInputParams($),W=J.data;if(J.parsedType===q.undefined)W=this._def.defaultValue();return this._def.innerType._parse({data:W,path:J.path,parent:J})}removeDefault(){return this._def.innerType}}z$.create=($,J)=>{return new z$({innerType:$,typeName:E.ZodDefault,defaultValue:typeof J.default==="function"?J.default:()=>J.default,...A(J)})};class S$ extends N{_parse($){let{ctx:J}=this._processInputParams($),W={...J,common:{...J.common,issues:[]}},Q=this._def.innerType._parse({data:W.data,path:W.path,parent:{...W}});if(J$(Q))return Q.then((X)=>{return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new C(W.common.issues)},input:W.data})}});else return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new C(W.common.issues)},input:W.data})}}removeCatch(){return this._def.innerType}}S$.create=($,J)=>{return new S$({innerType:$,typeName:E.ZodCatch,catchValue:typeof J.catch==="function"?J.catch:()=>J.catch,...A(J)})};class K$ extends N{_parse($){if(this._getType($)!==q.nan){let W=this._getOrReturnCtx($);return z(W,{code:M.invalid_type,expected:q.nan,received:W.parsedType}),U}return{status:"valid",value:$.data}}}K$.create=($)=>{return new K$({typeName:E.ZodNaN,...A($)})};var z1=Symbol("zod_brand");class P$ extends N{_parse($){let{ctx:J}=this._processInputParams($),W=J.data;return this._def.type._parse({data:W,path:J.path,parent:J})}unwrap(){return this._def.type}}class D$ extends N{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.common.async)return(async()=>{let X=await this._def.in._parseAsync({data:W.data,path:W.path,parent:W});if(X.status==="aborted")return U;if(X.status==="dirty")return J.dirty(),o(X.value);else return this._def.out._parseAsync({data:X.value,path:W.path,parent:W})})();else{let Q=this._def.in._parseSync({data:W.data,path:W.path,parent:W});if(Q.status==="aborted")return U;if(Q.status==="dirty")return J.dirty(),{status:"dirty",value:Q.value};else return this._def.out._parseSync({data:Q.value,path:W.path,parent:W})}}static create($,J){return new D$({in:$,out:J,typeName:E.ZodPipeline})}}class V$ extends N{_parse($){let J=this._def.innerType._parse($),W=(Q)=>{if(p(Q))Q.value=Object.freeze(Q.value);return Q};return J$(J)?J.then((Q)=>W(Q)):W(J)}unwrap(){return this._def.innerType}}V$.create=($,J)=>{return new V$({innerType:$,typeName:E.ZodReadonly,...A(J)})};function v0($,J){let W=typeof $==="function"?$(J):typeof $==="string"?{message:$}:$;return typeof W==="string"?{message:W}:W}function I0($,J={},W){if($)return t.create().superRefine((Q,X)=>{let H=$(Q);if(H instanceof Promise)return H.then((Y)=>{if(!Y){let _=v0(J,Q),G=_.fatal??W??!0;X.addIssue({code:"custom",..._,fatal:G})}});if(!H){let Y=v0(J,Q),_=Y.fatal??W??!0;X.addIssue({code:"custom",...Y,fatal:_})}return});return t.create()}var S1={object:D.lazycreate},E;(function($){$.ZodString="ZodString",$.ZodNumber="ZodNumber",$.ZodNaN="ZodNaN",$.ZodBigInt="ZodBigInt",$.ZodBoolean="ZodBoolean",$.ZodDate="ZodDate",$.ZodSymbol="ZodSymbol",$.ZodUndefined="ZodUndefined",$.ZodNull="ZodNull",$.ZodAny="ZodAny",$.ZodUnknown="ZodUnknown",$.ZodNever="ZodNever",$.ZodVoid="ZodVoid",$.ZodArray="ZodArray",$.ZodObject="ZodObject",$.ZodUnion="ZodUnion",$.ZodDiscriminatedUnion="ZodDiscriminatedUnion",$.ZodIntersection="ZodIntersection",$.ZodTuple="ZodTuple",$.ZodRecord="ZodRecord",$.ZodMap="ZodMap",$.ZodSet="ZodSet",$.ZodFunction="ZodFunction",$.ZodLazy="ZodLazy",$.ZodLiteral="ZodLiteral",$.ZodEnum="ZodEnum",$.ZodEffects="ZodEffects",$.ZodNativeEnum="ZodNativeEnum",$.ZodOptional="ZodOptional",$.ZodNullable="ZodNullable",$.ZodDefault="ZodDefault",$.ZodCatch="ZodCatch",$.ZodPromise="ZodPromise",$.ZodBranded="ZodBranded",$.ZodPipeline="ZodPipeline",$.ZodReadonly="ZodReadonly"})(E||(E={}));var V1=($,J={message:`Input not instance of ${$.name}`})=>I0((W)=>W instanceof $,J),P0=b.create,T0=n.create,U1=K$.create,E1=i.create,h0=Q$.create,O1=a.create,A1=A$.create,N1=H$.create,L1=Y$.create,j1=t.create,K1=c.create,D1=x.create,w1=N$.create,R1=I.create,F1=D.create,v1=D.strictCreate,f1=_$.create,C1=I$.create,k1=G$.create,b1=y.create,I1=L$.create,P1=j$.create,T1=s.create,h1=X$.create,g1=B$.create,x1=M$.create,y1=d.create,m1=q$.create,Z1=e.create,l1=h.create,u1=P.create,p1=l.create,c1=h.createWithPreprocess,n1=D$.create,i1=()=>P0().optional(),d1=()=>T0().optional(),r1=()=>h0().optional(),o1={string:($)=>b.create({...$,coerce:!0}),number:($)=>n.create({...$,coerce:!0}),boolean:($)=>Q$.create({...$,coerce:!0}),bigint:($)=>i.create({...$,coerce:!0}),date:($)=>a.create({...$,coerce:!0})};var a1=U;var g0=j.object({format:j.enum(["json"]).default("json").describe("Export format (currently only JSON supported)"),type:j.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:j.number().min(1).optional().describe("Maximum number of observations to export")});function x0($,J,W,Q){return{name:"mem-export",description:`Export project memories (observations and session summaries) as portable JSON.
|
|
337
|
+
Use this to back up memories, transfer them between machines, or share context across environments.
|
|
338
|
+
Returns a JSON string \u2014 the agent can write it to a file if needed.`,args:g0.shape,execute:async(X)=>{try{let H=g0.parse(X),Y=W.getAll(Q);if(Y.length===0)return"No sessions found for this project. Nothing to export.";let _=[];for(let K of Y)_.push(...$.getBySession(K.id));if(H.type)_=_.filter((K)=>K.type===H.type);if(_.sort((K,R)=>new Date(K.createdAt).getTime()-new Date(R.createdAt).getTime()),H.limit&&H.limit<_.length)_=_.slice(0,H.limit);let G=_.map(({rawToolOutput:K,...R})=>R),B=[];for(let K of Y){let R=J.getBySessionId(K.id);if(R)B.push(R)}let O={version:1,exportedAt:new Date().toISOString(),project:Q,observations:G,summaries:B},w=JSON.stringify(O,null,2);return`Exported ${G.length} observation(s) and ${B.length} summary(ies).
|
|
339
|
+
|
|
340
|
+
${w}`}catch(H){return`Export error: ${H}`}}}}var y0=j.object({data:j.string().describe("JSON string from a mem-export output")});function m0($,J,W,Q){return{name:"mem-import",description:`Import observations and session summaries from a JSON export.
|
|
341
|
+
Use this to restore memories from a backup, or import memories from another machine.
|
|
342
|
+
Skips duplicate observations (by ID) and summaries (by session ID).`,args:y0.shape,execute:async(X)=>{try{let H=y0.parse(X),Y;try{Y=JSON.parse(H.data)}catch{return"Import error: Invalid JSON. Please provide valid JSON from a mem-export."}if(typeof Y!=="object"||Y===null)return"Import error: Invalid JSON structure.";let _=Y;if(!_.version||typeof _.version!=="number")return"Import error: Missing or invalid 'version' field. This doesn't look like a mem-export file.";if(_.version!==1)return`Import error: Unsupported export version ${_.version}. This tool supports version 1.`;if(!Array.isArray(_.observations))return"Import error: Missing or invalid 'observations' array.";let G=_,B=0,O=0,w=0,K=0;for(let V of G.observations){if(!V.id||typeof V.id!=="string"||!V.sessionId||typeof V.sessionId!=="string"||!V.type||typeof V.type!=="string"||!V.title||typeof V.title!=="string"||!V.createdAt||typeof V.createdAt!=="string"){O++;continue}if($.getById(V.id)){O++;continue}W.getOrCreate(V.sessionId,Q),$.importObservation({id:V.id,sessionId:V.sessionId,type:V.type,title:V.title,subtitle:V.subtitle??"",facts:V.facts??[],narrative:V.narrative??"",concepts:V.concepts??[],filesRead:V.filesRead??[],filesModified:V.filesModified??[],rawToolOutput:V.rawToolOutput??"",toolName:V.toolName??"unknown",createdAt:V.createdAt,tokenCount:V.tokenCount??0,discoveryTokens:V.discoveryTokens??0}),W.incrementObservationCount(V.sessionId),B++}if(Array.isArray(G.summaries))for(let V of G.summaries){if(J.getBySessionId(V.sessionId)){K++;continue}W.getOrCreate(V.sessionId,Q),J.importSummary({id:V.id,sessionId:V.sessionId,summary:V.summary??"",keyDecisions:V.keyDecisions??[],filesModified:V.filesModified??[],concepts:V.concepts??[],createdAt:V.createdAt,tokenCount:V.tokenCount??0,request:V.request,investigated:V.investigated,learned:V.learned,completed:V.completed,nextSteps:V.nextSteps}),W.setSummary(V.sessionId,V.id),w++}let R=[];if(R.push(`Imported ${B} observation(s)`),R.push(`${w} summary(ies)`),O>0)R.push(`Skipped ${O} duplicate observation(s)`);if(K>0)R.push(`skipped ${K} duplicate summary(ies)`);return`${R.join(". ")}.`}catch(H){return`Import error: ${H}`}}}}var Z0=j.object({ids:j.array(j.string()).describe("Observation IDs to fetch"),limit:j.number().min(1).max(50).default(10).describe("Maximum number of results")});function l0($){return{name:"mem-recall",description:"Fetch full observation details by ID. Use after mem-search to get complete narratives, facts, concepts, and file lists for specific observations.",args:Z0.shape,execute:async(J)=>{try{let W=Z0.parse(J),Q=W.ids.slice(0,W.limit),X=[];for(let H of Q){let Y=$.getById(H);if(Y)X.push(t1(Y));else X.push(`## ID: ${H}
|
|
343
|
+
*Not found*`)}if(X.length===0)return"No observation IDs provided.";return`Recalled ${X.length} observation(s):
|
|
307
344
|
|
|
308
|
-
${
|
|
345
|
+
${X.join(`
|
|
309
346
|
---
|
|
310
|
-
`)}`}catch(
|
|
311
|
-
${$.narrative}`),$.facts.length>0){
|
|
312
|
-
**Facts:**`);for(let
|
|
313
|
-
**Concepts:** ${$.concepts.join(", ")}`);if($.filesRead.length>0)
|
|
314
|
-
*ID: ${$.id} | Created: ${$.createdAt} | Tokens: ${$.tokenCount}*`),
|
|
315
|
-
`)}function
|
|
347
|
+
`)}`}catch(W){return`Recall error: ${W}`}}}}function t1($){let J=[];if(J.push(`## [${$.type.toUpperCase()}] ${$.title}`),$.subtitle)J.push(`*${$.subtitle}*`);if(J.push(`
|
|
348
|
+
${$.narrative}`),$.facts.length>0){J.push(`
|
|
349
|
+
**Facts:**`);for(let W of $.facts)J.push(`- ${W}`)}if($.concepts.length>0)J.push(`
|
|
350
|
+
**Concepts:** ${$.concepts.join(", ")}`);if($.filesRead.length>0)J.push(`**Files read:** ${$.filesRead.join(", ")}`);if($.filesModified.length>0)J.push(`**Files modified:** ${$.filesModified.join(", ")}`);return J.push(`
|
|
351
|
+
*ID: ${$.id} | Created: ${$.createdAt} | Tokens: ${$.tokenCount}*`),J.join(`
|
|
352
|
+
`)}var u0=j.object({title:j.string().describe("Brief title for the observation (max 80 chars)"),type:j.enum(["decision","bugfix","feature","refactor","discovery","change"]).describe("Type of observation"),narrative:j.string().describe("Detailed description of what to remember"),concepts:j.array(j.string()).optional().describe("Related concepts/tags"),files:j.array(j.string()).optional().describe("Related file paths")});function p0($,J,W){return{name:"mem-save",description:`Manually save an observation to memory.
|
|
316
353
|
Use this to explicitly record important decisions, discoveries, or context
|
|
317
|
-
that should be remembered across sessions.`,args:
|
|
354
|
+
that should be remembered across sessions.`,args:u0.shape,execute:async(Q,X)=>{try{let H=u0.parse(Q);J.getOrCreate(X.sessionID,W);let Y=$.create({sessionId:X.sessionID,type:H.type,title:H.title,subtitle:"",facts:[],narrative:H.narrative,concepts:H.concepts??[],filesRead:[],filesModified:H.files??[],rawToolOutput:`[Manual save] ${H.narrative}`,toolName:"mem-save",tokenCount:k(`${H.title} ${H.narrative}`),discoveryTokens:0});return J.incrementObservationCount(X.sessionID),`Saved observation: [${H.type}] "${H.title}" (ID: ${Y.id})`}catch(H){return`Save error: ${H}`}}}}var c0=60;async function n0($,J,W,Q){let X=Q.limit??10,H=s1(J,$,Q.type,X);if(!W)return H;let Y=await C$(W,$);if(!Y)return H;let _=e1(J,Y,Q.projectPath,Q.type,X);if(_.length===0)return H;return $3(H,_,X)}function s1($,J,W,Q){try{return $.search({query:J,type:W,limit:Q})}catch{return[]}}function e1($,J,W,Q,X){let H=$.getWithEmbeddings(W,X*10);if(H.length===0)return[];let Y=H.map((G)=>({id:G.id,similarity:D0(J,G.embedding)})).filter(({similarity:G})=>G>=0.3).sort((G,B)=>B.similarity-G.similarity),_=[];for(let{id:G,similarity:B}of Y){if(_.length>=X)break;let O=$.getById(G);if(!O)continue;if(Q&&O.type!==Q)continue;_.push({observation:O,rank:-B,snippet:O.title})}return _}function $3($,J,W){let Q=new Map;for(let X=0;X<$.length;X++){let H=$[X],Y=1/(c0+X+1);Q.set(H.observation.id,{score:Y,result:H})}for(let X=0;X<J.length;X++){let H=J[X],Y=1/(c0+X+1),_=Q.get(H.observation.id);if(_)_.score+=Y;else Q.set(H.observation.id,{score:Y,result:H})}return[...Q.values()].sort((X,H)=>H.score-X.score).slice(0,W).map(({result:X})=>X)}var i0=j.object({query:j.string().describe("Search query (supports keywords, phrases, file paths)"),type:j.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:j.number().min(1).max(50).default(10).describe("Maximum number of results")});function d0($,J,W=null,Q=""){return{name:"mem-search",description:`Search through past coding session observations and memories.
|
|
318
355
|
Use this tool to find relevant context from previous sessions, including:
|
|
319
356
|
- Past decisions and their rationale
|
|
320
357
|
- Bug fixes and their solutions
|
|
@@ -322,23 +359,23 @@ Use this tool to find relevant context from previous sessions, including:
|
|
|
322
359
|
- File modification history
|
|
323
360
|
- Concept-based knowledge retrieval
|
|
324
361
|
|
|
325
|
-
Supports full-text search with FTS5.`,args:
|
|
326
|
-
`];for(let{observation:
|
|
327
|
-
${
|
|
328
|
-
**Facts:**`);for(let Q of
|
|
329
|
-
**Concepts:** ${
|
|
330
|
-
*Session: ${
|
|
331
|
-
`)}function
|
|
332
|
-
`];for(let
|
|
333
|
-
**Key decisions:**`);for(let Q of
|
|
334
|
-
`)}function
|
|
335
|
-
Shows recent sessions with summaries, observation counts, and key decisions.`,args:
|
|
336
|
-
`];for(let
|
|
337
|
-
`)}catch(H){return`Timeline error: ${H}`}}}}function
|
|
338
|
-
`];if(
|
|
362
|
+
Supports full-text search with FTS5.`,args:i0.shape,execute:async(X)=>{try{let H=i0.parse(X),Y=await n0(H.query,$,W,{type:H.type,limit:H.limit,projectPath:Q});if(Y.length===0){let _=J.search(H.query,H.limit);if(_.length===0)return"No matching observations or session summaries found.";return W3(_)}return J3(Y)}catch(H){return`Search error: ${H}`}}}}function J3($){let J=[`Found ${$.length} observation(s):
|
|
363
|
+
`];for(let{observation:W}of $){if(J.push(`## [${W.type.toUpperCase()}] ${W.title}`),W.subtitle)J.push(`*${W.subtitle}*`);if(J.push(`
|
|
364
|
+
${W.narrative}`),W.facts.length>0){J.push(`
|
|
365
|
+
**Facts:**`);for(let Q of W.facts)J.push(`- ${Q}`)}if(W.concepts.length>0)J.push(`
|
|
366
|
+
**Concepts:** ${W.concepts.join(", ")}`);if(W.filesModified.length>0)J.push(`**Files modified:** ${W.filesModified.join(", ")}`);if(W.filesRead.length>0)J.push(`**Files read:** ${W.filesRead.join(", ")}`);J.push(`
|
|
367
|
+
*Session: ${W.sessionId} | ${W.createdAt}*`),J.push("---")}return J.join(`
|
|
368
|
+
`)}function W3($){let J=[`Found ${$.length} session summary(ies):
|
|
369
|
+
`];for(let W of $){if(J.push(`## Session: ${W.sessionId}`),J.push(W.summary),W.keyDecisions.length>0){J.push(`
|
|
370
|
+
**Key decisions:**`);for(let Q of W.keyDecisions)J.push(`- ${Q}`)}J.push("---")}return J.join(`
|
|
371
|
+
`)}var r0=j.object({limit:j.number().min(1).max(20).default(5).describe("Number of recent sessions to show"),sessionId:j.string().optional().describe("Show details for a specific session ID")});function o0($,J,W,Q){return{name:"mem-timeline",description:`View a timeline of past coding sessions for this project.
|
|
372
|
+
Shows recent sessions with summaries, observation counts, and key decisions.`,args:r0.shape,execute:async(X)=>{try{let H=r0.parse(X);if(H.sessionId)return X3(H.sessionId,$,J,W);let Y=$.getRecent(Q,H.limit);if(Y.length===0)return"No past sessions found for this project.";let _=[`# Session Timeline (${Y.length} sessions)
|
|
373
|
+
`];for(let G of Y){let B=G.summaryId?J.getBySessionId(G.id):null;if(_.push(`## Session: ${G.id}`),_.push(`- **Started**: ${G.startedAt}`),_.push(`- **Status**: ${G.status}`),_.push(`- **Observations**: ${G.observationCount}`),B){if(_.push(`- **Summary**: ${B.summary}`),B.keyDecisions.length>0)_.push(`- **Key decisions**: ${B.keyDecisions.join("; ")}`)}_.push("")}return _.join(`
|
|
374
|
+
`)}catch(H){return`Timeline error: ${H}`}}}}function X3($,J,W,Q){let X=J.getById($);if(!X)return`Session ${$} not found.`;let H=X.summaryId?W.getBySessionId($):null,Y=Q.getBySession($),_=[`# Session Detail: ${$}
|
|
375
|
+
`];if(_.push(`- **Started**: ${X.startedAt}`),_.push(`- **Ended**: ${X.endedAt??"Active"}`),_.push(`- **Status**: ${X.status}`),_.push(`- **Observations**: ${X.observationCount}`),H){if(_.push(`
|
|
339
376
|
## Summary
|
|
340
|
-
${H.summary}`),H.keyDecisions.length>0){
|
|
341
|
-
**Key decisions:**`);for(let
|
|
342
|
-
## Observations`);for(let
|
|
343
|
-
### [${
|
|
344
|
-
`)}
|
|
377
|
+
${H.summary}`),H.keyDecisions.length>0){_.push(`
|
|
378
|
+
**Key decisions:**`);for(let G of H.keyDecisions)_.push(`- ${G}`)}}if(Y.length>0){_.push(`
|
|
379
|
+
## Observations`);for(let G of Y)if(_.push(`
|
|
380
|
+
### [${G.type.toUpperCase()}] ${G.title}`),_.push(G.narrative),G.concepts.length>0)_.push(`*Concepts: ${G.concepts.join(", ")}*`)}return _.join(`
|
|
381
|
+
`)}import{spawnSync as a0}from"child_process";import{dirname as Q3,resolve as t0}from"path";function H3($){try{let J=a0("git",["rev-parse","--git-common-dir"],{cwd:$,encoding:"utf-8",timeout:5000});if(J.status!==0||!J.stdout)return null;let W=J.stdout.trim();if(W===".git")return null;let Q=a0("git",["rev-parse","--git-dir"],{cwd:$,encoding:"utf-8",timeout:5000});if(Q.status!==0||!Q.stdout)return null;let X=Q.stdout.trim(),H=t0($,W),Y=t0($,X);if(H===Y)return null;let _=Q3(H);if(_===H||_==="/")return null;return _}catch{return null}}function s0($){return H3($)??$}async function Y3($){let J=s0($.directory),W=x$(J),Q=X0(W);for(let T$ of Q)console.warn(`[open-mem] ${T$}`);await Q0(W);let X=G0(W.dbPath);B0(X);let H=new Z$(X),Y=new y$(X),_=new l$(X),G=new m$(X),B=new U$(W),O=new g$(W),w=W.provider!=="bedrock",K=W.compressionEnabled&&(!w||W.apiKey)?e$({provider:W.provider,model:W.model,apiKey:W.apiKey}):null,R=new n$(W,B,O,G,Y,H,_,K);R.start();let V=()=>{R.stop(),X.close()};return process.on("beforeExit",V),{"tool.execute.after":K0(W,R,H,J),"chat.message":M0(Y,H,J),event:j0(R,H,J,W,Y),"experimental.chat.system.transform":V0(W,Y,H,_,J),"experimental.session.compacting":S0(W,Y,H,_,J),tools:[d0(Y,_,K,J),p0(Y,H,J),o0(H,_,Y,J),l0(Y),x0(Y,_,H,J),m0(Y,_,H,J)]}}export{x$ as resolveConfig,EJ as getDefaultConfig,Y3 as default};
|