open-mem 0.5.1 → 0.5.3
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 +0 -53
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +38 -38
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -77,7 +77,6 @@ Without any provider configured, open-mem still works — it falls back to a bas
|
|
|
77
77
|
- 🔒 **Privacy controls** with `<private>` tag support
|
|
78
78
|
- 🛠️ **Six custom tools**: mem-search, mem-save, mem-timeline, mem-recall, mem-export, mem-import
|
|
79
79
|
- 🌐 **MCP server mode** — expose memory tools to any MCP-compatible AI client
|
|
80
|
-
- 📊 **Web dashboard** — browse observations, sessions, search, and stats in a local web UI
|
|
81
80
|
- 🌳 **Git worktree support** — shared memory across all worktrees
|
|
82
81
|
- 📂 **AGENTS.md generation** — auto-generated folder-level context on session end
|
|
83
82
|
- 📦 **Import/export** — portable JSON for backup and transfer between machines
|
|
@@ -269,54 +268,6 @@ Or add it to your MCP client config:
|
|
|
269
268
|
|
|
270
269
|
The server communicates over stdin/stdout using JSON-RPC 2.0 and exposes: `mem-search`, `mem-save`, `mem-timeline`, `mem-recall`.
|
|
271
270
|
|
|
272
|
-
## Web Dashboard
|
|
273
|
-
|
|
274
|
-
open-mem includes an optional web dashboard for browsing observations, sessions, search results, and memory statistics in your browser.
|
|
275
|
-
|
|
276
|
-
### Enable the Dashboard
|
|
277
|
-
|
|
278
|
-
Set the environment variable before starting OpenCode:
|
|
279
|
-
|
|
280
|
-
```bash
|
|
281
|
-
export OPEN_MEM_DASHBOARD=true
|
|
282
|
-
```
|
|
283
|
-
|
|
284
|
-
When enabled, open-mem starts a local HTTP server and logs the URL:
|
|
285
|
-
|
|
286
|
-
```
|
|
287
|
-
[open-mem] Dashboard available at http://127.0.0.1:3737
|
|
288
|
-
```
|
|
289
|
-
|
|
290
|
-
Open that URL in your browser. The dashboard is read-only and bound to `127.0.0.1` (localhost only).
|
|
291
|
-
|
|
292
|
-
### Dashboard Pages
|
|
293
|
-
|
|
294
|
-
| Page | Description |
|
|
295
|
-
|------|-------------|
|
|
296
|
-
| **Timeline** | Real-time observation feed across all sessions. Supports type filtering and infinite scroll. New observations appear live via Server-Sent Events. |
|
|
297
|
-
| **Sessions** | Browse past coding sessions. Expand a session to see its observations, key facts, and files involved. |
|
|
298
|
-
| **Search** | Full-text and semantic search across all observations. Uses hybrid FTS5 + vector search when embeddings are configured. |
|
|
299
|
-
| **Stats** | Memory usage analytics — total observations, sessions, token savings from compression, and a type breakdown chart. |
|
|
300
|
-
| **Settings** | Read-only view of the current open-mem configuration (API keys are redacted). |
|
|
301
|
-
|
|
302
|
-
### Port Configuration
|
|
303
|
-
|
|
304
|
-
The dashboard defaults to port `3737`. If that port is busy, it automatically tries the next 9 ports (up to `3746`). To set a specific port:
|
|
305
|
-
|
|
306
|
-
```bash
|
|
307
|
-
export OPEN_MEM_DASHBOARD_PORT=4000
|
|
308
|
-
```
|
|
309
|
-
|
|
310
|
-
### Building the Dashboard (Development)
|
|
311
|
-
|
|
312
|
-
If you're developing open-mem from source, the dashboard must be built before it can be served:
|
|
313
|
-
|
|
314
|
-
```bash
|
|
315
|
-
bun run build:dashboard
|
|
316
|
-
```
|
|
317
|
-
|
|
318
|
-
This compiles the React app in `dashboard/` and copies the output to `dist/dashboard/`. The full `bun run build` also includes this step. Published npm packages ship with the dashboard pre-built.
|
|
319
|
-
|
|
320
271
|
## Configuration
|
|
321
272
|
|
|
322
273
|
open-mem works out of the box with zero configuration. All settings can be customized via environment variables:
|
|
@@ -342,8 +293,6 @@ open-mem works out of the box with zero configuration. All settings can be custo
|
|
|
342
293
|
| `OPEN_MEM_MAX_OBSERVATIONS` | `50` | Maximum observations to consider for context |
|
|
343
294
|
| `OPEN_MEM_FOLDER_CONTEXT` | `true` | Set to `false` to disable AGENTS.md generation |
|
|
344
295
|
| `OPEN_MEM_FOLDER_CONTEXT_MAX_DEPTH` | `5` | Max folder depth for AGENTS.md generation |
|
|
345
|
-
| `OPEN_MEM_DASHBOARD` | `false` | Set to `true` to enable the web dashboard |
|
|
346
|
-
| `OPEN_MEM_DASHBOARD_PORT` | `3737` | Dashboard HTTP port (tries up to +9 if busy) |
|
|
347
296
|
|
|
348
297
|
<details>
|
|
349
298
|
<summary><strong>Programmatic Configuration Reference</strong></summary>
|
|
@@ -371,8 +320,6 @@ If you need to configure open-mem programmatically (e.g. for testing or custom i
|
|
|
371
320
|
| `logLevel` | string | `warn` | Log level: `debug`, `info`, `warn`, `error` |
|
|
372
321
|
| `folderContextEnabled` | boolean | `true` | Auto-generate AGENTS.md in active folders |
|
|
373
322
|
| `folderContextMaxDepth` | number | `5` | Max folder depth from project root |
|
|
374
|
-
| `dashboardEnabled` | boolean | `false` | Enable the web dashboard |
|
|
375
|
-
| `dashboardPort` | number | `3737` | Dashboard HTTP port |
|
|
376
323
|
|
|
377
324
|
</details>
|
|
378
325
|
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AA2ClD,wBAA8B,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,CA4LvE;AAMD,YAAY,EACX,aAAa,EACb,WAAW,EACX,OAAO,EACP,cAAc,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @bun
|
|
2
|
-
var
|
|
2
|
+
var R2=Object.create;var{getPrototypeOf:C2,defineProperty:E$,getOwnPropertyNames:v2}=Object;var k2=Object.prototype.hasOwnProperty;var I2=($,J,W)=>{W=$!=null?R2(C2($)):{};let X=J||!$||!$.__esModule?E$(W,"default",{value:$,enumerable:!0}):W;for(let Q of v2($))if(!k2.call(X,Q))E$(X,Q,{get:()=>$[Q],enumerable:!0});return X};var b2=($,J)=>{for(var W in J)E$($,W,{get:J[W],enumerable:!0,configurable:!0,set:(X)=>J[W]=()=>X})};var t=import.meta.require;import{existsSync as S8}from"fs";import{dirname as V8,join as V0}from"path";import{fileURLToPath as O8}from"url";import{generateText as h2}from"ai";var P2=new Set(["decision","bugfix","feature","refactor","discovery","change"]);function k($,J){let W=new RegExp(`<${J}[^>]*>([\\s\\S]*?)</${J}>`,"i"),X=$.match(W);return X?X[1].trim():""}function G0($,J){let W=new RegExp(`<${J}[^>]*>([\\s\\S]*?)</${J}>`,"gi"),X=[];for(let Q of $.matchAll(W)){let Y=Q[1].trim();if(Y)X.push(Y)}return X}function d$($){let J=k($,"observation");if(!J)return null;let W=k(J,"type").toLowerCase(),X=P2.has(W)?W:"discovery",Q=k(J,"title")||"Untitled observation",Y=k(J,"subtitle"),G=k(J,"narrative"),_=G0(k(J,"facts"),"fact"),B=G0(k(J,"concepts"),"concept"),H=G0(k(J,"files_read"),"file"),M=G0(k(J,"files_modified"),"file");return{type:X,title:Q,subtitle:Y,facts:_,narrative:G,concepts:B,filesRead:H,filesModified:M}}function o$($){let J=k($,"session_summary");if(!J)return null;let W=k(J,"summary")||"No summary available",X=G0(k(J,"key_decisions"),"decision"),Q=G0(k(J,"files_modified"),"file"),Y=G0(k(J,"concepts"),"concept"),G=k(J,"request")||void 0,_=k(J,"investigated")||void 0,B=k(J,"learned")||void 0,H=k(J,"completed")||void 0,M=k(J,"next_steps")||void 0;return{summary:W,keyDecisions:X,filesModified:Q,concepts:Y,request:G,investigated:_,learned:B,completed:H,nextSteps:M}}function Z($){return Math.ceil($.length/4)}function a$($,J,W){let X=W?`<session_context>
|
|
3
3
|
${W}
|
|
4
4
|
</session_context>
|
|
5
5
|
|
|
@@ -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((X,Q)=>` <obs index="${Q+1}" type="${X.type}">
|
|
51
51
|
<title>${X.title}</title>
|
|
52
52
|
<narrative>${X.narrative}</narrative>
|
|
53
53
|
</obs>`).join(`
|
|
@@ -82,15 +82,15 @@ 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 T2={"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 g2($){if($.includes("."))return $;return T2[$]||`us.anthropic.${$}-v1:0`}function r0($){switch($.provider){case"anthropic":{let{createAnthropic:J}=t("@ai-sdk/anthropic");return J({apiKey:$.apiKey})($.model)}case"bedrock":{let{createAmazonBedrock:J}=t("@ai-sdk/amazon-bedrock");return J()(g2($.model))}case"openai":{let{createOpenAI:J}=t("@ai-sdk/openai");return J({apiKey:$.apiKey})($.model)}case"google":{let{createGoogleGenerativeAI:J}=t("@ai-sdk/google");return J({apiKey:$.apiKey})($.model)}default:throw Error(`Unknown provider: ${$.provider}. Supported: anthropic, bedrock, openai, google`)}}function t$($){try{switch($.provider){case"google":{let{createGoogleGenerativeAI:J}=t("@ai-sdk/google");return J({apiKey:$.apiKey}).embedding("text-embedding-004")}case"openai":{let{createOpenAI:J}=t("@ai-sdk/openai");return J({apiKey:$.apiKey}).embedding("text-embedding-3-small")}case"bedrock":{let{createAmazonBedrock:J}=t("@ai-sdk/amazon-bedrock");return J().embedding("amazon.titan-embed-text-v2:0")}case"anthropic":return null;default:return null}}catch{return null}}var x2={"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},e$=0;async function d0($,J){if(!J)return;let W=x2[$]||5,X=Math.ceil(60000/W)+100,Y=Date.now()-e$;if(Y<X){let G=X-Y;await new Promise((_)=>setTimeout(_,G))}e$=Date.now()}class b0{model;config;_generate=h2;constructor($){this.config=$,this.model=null;let J=$.provider!=="bedrock";if($.compressionEnabled&&(!J||$.apiKey))try{this.model=r0({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 X=Z(J),Q=J.length>b0.MAX_INPUT_LENGTH?`${J.substring(0,b0.MAX_INPUT_LENGTH)}
|
|
86
86
|
|
|
87
|
-
[... truncated ...]`:J,Y=d$($,Q,W),G=2;for(let _=0;_<=G;_++)try{if(this.config.provider==="google")await r0(this.config.model,this.config.rateLimitingEnabled);let{text:B}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:Y}),H=i$(B);if(H)H.discoveryTokens=X;return H}catch(B){if(y2(B)&&_<G){let H=2**_*1000;await t$(H);continue}return null}return null}async compressBatch($){let J=new Map;for(let W=0;W<$.length;W++){let X=$[W],Q=await this.compress(X.toolName,X.toolOutput,X.sessionContext);if(J.set(X.callId,Q),W<$.length-1)await t$(200)}return J}createFallbackObservation($,J){let W=Z2(J),X=x2[$]??"discovery";return{type:X,title:`${$} execution`,subtitle:J.substring(0,100).replace(/\n/g," "),facts:[],narrative:`Tool ${$} was executed. Output length: ${J.length} chars.`,concepts:[],filesRead:X==="discovery"?W:[],filesModified:X==="change"?W:[],discoveryTokens:Z(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 x2={Read:"discovery",Write:"change",Edit:"change",Bash:"change",Glob:"discovery",Grep:"discovery"},h2=/(?:^|\s)((?:\.\/|\/|src\/|tests\/|lib\/)\S+\.\w+)/gm;function Z2($){let J=[];for(let W of $.matchAll(h2))J.push(W[1]);return[...new Set(J)]}function y2($){if(typeof $!=="object"||$===null)return!1;let J=$,W=J.status;if(W===429||W===500||W===503)return!0;let X=J.error;if(typeof X==="object"&&X!==null&&X.type==="overloaded_error")return!0;return!1}function t$($){return new Promise((J)=>setTimeout(J,$))}import{generateText as l2}from"ai";class A${model;config;_generate=l2;constructor($){this.config=$,this.model=null;let J=$.provider!=="bedrock";if($.compressionEnabled&&(!J||$.apiKey))try{this.model=i0({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=o$(J.map((X)=>({type:X.type,title:X.title,narrative:X.narrative})),$);try{if(this.config.provider==="google")await r0(this.config.model,this.config.rateLimitingEnabled);let{text:X}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:W}),Q=r$(X);if(!Q)return this.createFallbackSummary(J);return Q}catch{return this.createFallbackSummary(J)}}createFallbackSummary($){let J=new Set,W=new Set,X=[];for(let _ of $){for(let B of _.filesModified)J.add(B);for(let B of _.concepts)W.add(B);if(_.type==="decision")X.push(_.title)}let Q=new Map;for(let _ of $)Q.set(_.type,(Q.get(_.type)??0)+1);let Y=Array.from(Q.entries()).map(([_,B])=>`${B} ${_}${B>1?"s":""}`).join(", "),G=Array.from(W).slice(0,5).join(", ");return{summary:`Session with ${$.length} observations: ${Y}. Files modified: ${J.size}. Key concepts: ${G}.`,keyDecisions:X.slice(0,5),filesModified:Array.from(J),concepts:Array.from(W)}}shouldSummarize($){return $>=2}}var e$={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,daemonEnabled:!1,dashboardEnabled:!1,dashboardPort:3737,embeddingDimension:void 0};function m2(){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);if(process.env.OPEN_MEM_DAEMON==="true")$.daemonEnabled=!0;if(process.env.OPEN_MEM_DASHBOARD==="true")$.dashboardEnabled=!0;if(process.env.OPEN_MEM_DASHBOARD_PORT)$.dashboardPort=Number.parseInt(process.env.OPEN_MEM_DASHBOARD_PORT,10);if(process.env.OPEN_MEM_EMBEDDING_DIMENSION)$.embeddingDimension=Number.parseInt(process.env.OPEN_MEM_EMBEDDING_DIMENSION,10);return $}function c2($){switch($){case"google":return 768;case"openai":return 1536;case"bedrock":return 1024;case"anthropic":return 0;default:return 768}}function E$($,J){let W=m2(),X={...e$,...W,...J};if(!X.dbPath.startsWith("/"))X.dbPath=`${$}/${X.dbPath}`;if(!process.env.OPEN_MEM_PROVIDER&&!J?.provider){if(process.env.GOOGLE_GENERATIVE_AI_API_KEY||process.env.GEMINI_API_KEY)X.provider="google";else if(process.env.ANTHROPIC_API_KEY)X.provider="anthropic";else if(process.env.AWS_BEARER_TOKEN_BEDROCK||process.env.AWS_ACCESS_KEY_ID||process.env.AWS_PROFILE)X.provider="bedrock"}if(!X.apiKey)switch(X.provider){case"google":X.apiKey=process.env.GOOGLE_GENERATIVE_AI_API_KEY||process.env.GEMINI_API_KEY;break;case"anthropic":X.apiKey=process.env.ANTHROPIC_API_KEY;break;case"openai":X.apiKey=process.env.OPENAI_API_KEY;break;case"bedrock":break}if(X.embeddingDimension===void 0)X.embeddingDimension=c2(X.provider);return X}function $1($){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 u2(){return{...e$}}async function J1($){let J=$.dbPath.substring(0,$.dbPath.lastIndexOf("/")),{mkdir:W}=await import("fs/promises");await W(J,{recursive:!0})}import{existsSync as r2}from"fs";import{existsSync as p2,mkdirSync as P8,readFileSync as n2,unlinkSync as i2,writeFileSync as T8}from"fs";function I0($){if(!p2($))return null;let J=n2($,"utf-8").trim(),W=Number.parseInt(J,10);if(Number.isNaN(W))return null;return W}function d0($){try{return process.kill($,0),!0}catch(J){if(J instanceof Error&&"code"in J&&J.code==="EPERM")return!0;return!1}}function W1($){try{i2($)}catch{}}function X1($){let J=$.lastIndexOf("/");if(J>=0)return`${$.substring(0,J)}/worker.pid`;return"worker.pid"}var d2=100,o2=2000;class j${pidPath;projectPath;daemonScript;subprocess=null;constructor($){this.pidPath=X1($.dbPath),this.projectPath=$.projectPath,this.daemonScript=$.daemonScript}start(){if(this.isRunning())return!1;this.subprocess=Bun.spawn(["bun","run",this.daemonScript,"--project",this.projectPath],{detached:!0,stdio:["ignore","ignore","ignore"],ipc(J){}}),this.subprocess.unref();let $=Date.now()+o2;while(Date.now()<$)if(Bun.sleepSync(d2),r2(this.pidPath)){let J=I0(this.pidPath);if(J!==null&&d0(J))return!0}return!1}signal($){try{this.subprocess?.send($)}catch{}}stop(){let $=I0(this.pidPath);if($!==null)try{process.kill($,"SIGTERM")}catch{}this.subprocess=null,W1(this.pidPath)}isRunning(){let $=I0(this.pidPath);if($===null)return!1;return d0($)}getStatus(){let $=I0(this.pidPath);if($===null)return{running:!1,pid:null};if(!d0($))return{running:!1,pid:null};return{running:!0,pid:$}}}import{Database as Q1}from"bun:sqlite";import{existsSync as L$,mkdirSync as a2,unlinkSync as Y1}from"fs";import*as G1 from"sqlite-vec";class o0{db;dbPath;_hasVectorExtension=!1;static enableExtensionSupport(){let $=["/opt/homebrew/opt/sqlite/lib/libsqlite3.dylib","/usr/local/opt/sqlite/lib/libsqlite3.dylib"];for(let J of $)try{if(L$(J))return Q1.setCustomSQLite(J),!0}catch{return!1}return!1}constructor($){this.dbPath=$,this.db=this.open($),this.configure()}open($){let J=$.lastIndexOf("/");if(J>0){let W=$.substring(0,J);a2(W,{recursive:!0})}return new Q1($,{create:!0})}configure(){try{this.applyPragmas(),this.loadExtensions()}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(),this.loadExtensions(),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(),this.loadExtensions(),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")}loadExtensions(){try{G1.load(this.db),this._hasVectorExtension=!0}catch{this._hasVectorExtension=!1}}get hasVectorExtension(){return this._hasVectorExtension}deleteSidecarFiles(){for(let $ of["-wal","-shm"]){let J=this.dbPath+$;try{if(L$(J))Y1(J)}catch{}}}deleteDatabaseFiles(){this.deleteSidecarFiles();try{if(L$(this.dbPath))Y1(this.dbPath)}catch{}}ensureMigrationTable(){this.db.exec(`
|
|
87
|
+
[... truncated ...]`:J,Y=a$($,Q,W),G=2;for(let _=0;_<=G;_++)try{if(this.config.provider==="google")await d0(this.config.model,this.config.rateLimitingEnabled);let{text:B}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:Y}),H=d$(B);if(H)H.discoveryTokens=X;return H}catch(B){if(l2(B)&&_<G){let H=2**_*1000;await $1(H);continue}return null}return null}async compressBatch($){let J=new Map;for(let W=0;W<$.length;W++){let X=$[W],Q=await this.compress(X.toolName,X.toolOutput,X.sessionContext);if(J.set(X.callId,Q),W<$.length-1)await $1(200)}return J}createFallbackObservation($,J){let W=m2(J),X=Z2[$]??"discovery";return{type:X,title:`${$} execution`,subtitle:J.substring(0,100).replace(/\n/g," "),facts:[],narrative:`Tool ${$} was executed. Output length: ${J.length} chars.`,concepts:[],filesRead:X==="discovery"?W:[],filesModified:X==="change"?W:[],discoveryTokens:Z(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 Z2={Read:"discovery",Write:"change",Edit:"change",Bash:"change",Glob:"discovery",Grep:"discovery"},y2=/(?:^|\s)((?:\.\/|\/|src\/|tests\/|lib\/)\S+\.\w+)/gm;function m2($){let J=[];for(let W of $.matchAll(y2))J.push(W[1]);return[...new Set(J)]}function l2($){if(typeof $!=="object"||$===null)return!1;let J=$,W=J.status;if(W===429||W===500||W===503)return!0;let X=J.error;if(typeof X==="object"&&X!==null&&X.type==="overloaded_error")return!0;return!1}function $1($){return new Promise((J)=>setTimeout(J,$))}import{generateText as c2}from"ai";class L${model;config;_generate=c2;constructor($){this.config=$,this.model=null;let J=$.provider!=="bedrock";if($.compressionEnabled&&(!J||$.apiKey))try{this.model=r0({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((X)=>({type:X.type,title:X.title,narrative:X.narrative})),$);try{if(this.config.provider==="google")await d0(this.config.model,this.config.rateLimitingEnabled);let{text:X}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:W}),Q=o$(X);if(!Q)return this.createFallbackSummary(J);return Q}catch{return this.createFallbackSummary(J)}}createFallbackSummary($){let J=new Set,W=new Set,X=[];for(let _ of $){for(let B of _.filesModified)J.add(B);for(let B of _.concepts)W.add(B);if(_.type==="decision")X.push(_.title)}let Q=new Map;for(let _ of $)Q.set(_.type,(Q.get(_.type)??0)+1);let Y=Array.from(Q.entries()).map(([_,B])=>`${B} ${_}${B>1?"s":""}`).join(", "),G=Array.from(W).slice(0,5).join(", ");return{summary:`Session with ${$.length} observations: ${Y}. Files modified: ${J.size}. Key concepts: ${G}.`,keyDecisions:X.slice(0,5),filesModified:Array.from(J),concepts:Array.from(W)}}shouldSummarize($){return $>=2}}var J1={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,daemonEnabled:!1,dashboardEnabled:!1,dashboardPort:3737,embeddingDimension:void 0};function u2(){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);if(process.env.OPEN_MEM_DAEMON==="true")$.daemonEnabled=!0;if(process.env.OPEN_MEM_DASHBOARD==="true")$.dashboardEnabled=!0;if(process.env.OPEN_MEM_DASHBOARD_PORT)$.dashboardPort=Number.parseInt(process.env.OPEN_MEM_DASHBOARD_PORT,10);if(process.env.OPEN_MEM_EMBEDDING_DIMENSION)$.embeddingDimension=Number.parseInt(process.env.OPEN_MEM_EMBEDDING_DIMENSION,10);return $}function p2($){switch($){case"google":return 768;case"openai":return 1536;case"bedrock":return 1024;case"anthropic":return 0;default:return 768}}function q$($,J){let W=u2(),X={...J1,...W,...J};if(!X.dbPath.startsWith("/"))X.dbPath=`${$}/${X.dbPath}`;if(!process.env.OPEN_MEM_PROVIDER&&!J?.provider){if(process.env.GOOGLE_GENERATIVE_AI_API_KEY||process.env.GEMINI_API_KEY)X.provider="google";else if(process.env.ANTHROPIC_API_KEY)X.provider="anthropic";else if(process.env.AWS_BEARER_TOKEN_BEDROCK||process.env.AWS_ACCESS_KEY_ID||process.env.AWS_PROFILE)X.provider="bedrock"}if(!X.apiKey)switch(X.provider){case"google":X.apiKey=process.env.GOOGLE_GENERATIVE_AI_API_KEY||process.env.GEMINI_API_KEY;break;case"anthropic":X.apiKey=process.env.ANTHROPIC_API_KEY;break;case"openai":X.apiKey=process.env.OPENAI_API_KEY;break;case"bedrock":break}if(X.embeddingDimension===void 0)X.embeddingDimension=p2(X.provider);return X}function W1($){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 n2(){return{...J1}}async function X1($){let J=$.dbPath.substring(0,$.dbPath.lastIndexOf("/")),{mkdir:W}=await import("fs/promises");await W(J,{recursive:!0})}import{existsSync as o2}from"fs";import{existsSync as i2,mkdirSync as Z8,readFileSync as r2,unlinkSync as d2,writeFileSync as y8}from"fs";function P0($){if(!i2($))return null;let J=r2($,"utf-8").trim(),W=Number.parseInt(J,10);if(Number.isNaN(W))return null;return W}function o0($){try{return process.kill($,0),!0}catch(J){if(J instanceof Error&&"code"in J&&J.code==="EPERM")return!0;return!1}}function Q1($){try{d2($)}catch{}}function Y1($){let J=$.lastIndexOf("/");if(J>=0)return`${$.substring(0,J)}/worker.pid`;return"worker.pid"}var a2=100,s2=2000;class j${pidPath;projectPath;daemonScript;subprocess=null;constructor($){this.pidPath=Y1($.dbPath),this.projectPath=$.projectPath,this.daemonScript=$.daemonScript}start(){if(this.isRunning())return!1;this.subprocess=Bun.spawn(["bun","run",this.daemonScript,"--project",this.projectPath],{detached:!0,stdio:["ignore","ignore","ignore"],ipc(J){}}),this.subprocess.unref();let $=Date.now()+s2;while(Date.now()<$)if(Bun.sleepSync(a2),o2(this.pidPath)){let J=P0(this.pidPath);if(J!==null&&o0(J))return!0}return!1}signal($){try{this.subprocess?.send($)}catch{}}stop(){let $=P0(this.pidPath);if($!==null)try{process.kill($,"SIGTERM")}catch{}this.subprocess=null,Q1(this.pidPath)}isRunning(){let $=P0(this.pidPath);if($===null)return!1;return o0($)}getStatus(){let $=P0(this.pidPath);if($===null)return{running:!1,pid:null};if(!o0($))return{running:!1,pid:null};return{running:!0,pid:$}}}import{Database as G1}from"bun:sqlite";import{existsSync as K$,mkdirSync as t2,unlinkSync as _1}from"fs";import*as B1 from"sqlite-vec";class a0{db;dbPath;_hasVectorExtension=!1;static enableExtensionSupport(){let $=["/opt/homebrew/opt/sqlite/lib/libsqlite3.dylib","/usr/local/opt/sqlite/lib/libsqlite3.dylib"];for(let J of $)try{if(K$(J))return G1.setCustomSQLite(J),!0}catch{return!1}return!1}constructor($){this.dbPath=$,this.db=this.open($),this.configure()}open($){let J=$.lastIndexOf("/");if(J>0){let W=$.substring(0,J);t2(W,{recursive:!0})}return new G1($,{create:!0})}configure(){try{this.applyPragmas(),this.loadExtensions()}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(),this.loadExtensions(),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(),this.loadExtensions(),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")}loadExtensions(){try{B1.load(this.db),this._hasVectorExtension=!0}catch{this._hasVectorExtension=!1}}get hasVectorExtension(){return this._hasVectorExtension}deleteSidecarFiles(){for(let $ of["-wal","-shm"]){let J=this.dbPath+$;try{if(K$(J))_1(J)}catch{}}}deleteDatabaseFiles(){this.deleteSidecarFiles();try{if(K$(this.dbPath))_1(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 J=this.db.query("SELECT version FROM _migrations ORDER BY version").all(),W=new Set(J.map((Q)=>Q.version)),X=$.filter((Q)=>!W.has(Q.version)).sort((Q,Y)=>Q.version-Y.version);for(let Q of X)this.db.transaction(()=>{this.db.exec(Q.up),this.db.query("INSERT INTO _migrations (version, name) VALUES ($version, $name)").run({$version:Q.version,$name:Q.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
|
|
93
|
+
`)}migrate($){this.ensureMigrationTable();let J=this.db.query("SELECT version FROM _migrations ORDER BY version").all(),W=new Set(J.map((Q)=>Q.version)),X=$.filter((Q)=>!W.has(Q.version)).sort((Q,Y)=>Q.version-Y.version);for(let Q of X)this.db.transaction(()=>{this.db.exec(Q.up),this.db.query("INSERT INTO _migrations (version, name) VALUES ($version, $name)").run({$version:Q.version,$name:Q.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 H1($){return new a0($)}import{randomUUID as e2}from"crypto";class D${db;constructor($){this.db=$}create($){let J=e2(),W=new Date().toISOString(),X=$.discoveryTokens??0;return this.db.run(`INSERT INTO observations
|
|
94
94
|
(id, session_id, type, title, subtitle, facts, narrative,
|
|
95
95
|
concepts, files_read, files_modified, raw_tool_output,
|
|
96
96
|
tool_name, created_at, token_count, discovery_tokens)
|
|
@@ -127,12 +127,12 @@ Respond with EXACTLY this XML format:
|
|
|
127
127
|
FROM observation_embeddings
|
|
128
128
|
WHERE embedding MATCH ? AND k = ?`,[W,J]).map((X)=>({observationId:X.observation_id,distance:X.distance}))}catch{return[]}}searchVecSubset($,J,W){if(J.length===0)return[];try{let X=new Float32Array($),Q=Math.max(W*5,J.length),Y=this.db.all(`SELECT observation_id, distance
|
|
129
129
|
FROM observation_embeddings
|
|
130
|
-
WHERE embedding MATCH ? AND k = ?`,[X,Q]),G=new Set(J);return Y.filter((_)=>G.has(_.observation_id)).slice(0,W).map((_)=>({observationId:_.observation_id,distance:_.distance}))}catch{return[]}}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
|
|
130
|
+
WHERE embedding MATCH ? AND k = ?`,[X,Q]),G=new Set(J);return Y.filter((_)=>G.has(_.observation_id)).slice(0,W).map((_)=>({observationId:_.observation_id,distance:_.distance}))}catch{return[]}}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 $J}from"crypto";class w${db;constructor($){this.db=$}create($){let J=$J(),W=new Date().toISOString();return this.db.run(`INSERT INTO pending_messages
|
|
131
131
|
(id, session_id, tool_name, tool_output, call_id, created_at)
|
|
132
132
|
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'
|
|
133
133
|
WHERE status = 'processing'
|
|
134
134
|
AND created_at < datetime('now', ? || ' minutes')
|
|
135
|
-
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
|
|
135
|
+
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:`
|
|
136
136
|
-- Sessions table
|
|
137
137
|
CREATE TABLE IF NOT EXISTS sessions (
|
|
138
138
|
_rowid INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
@@ -310,11 +310,11 @@ Respond with EXACTLY this XML format:
|
|
|
310
310
|
key TEXT PRIMARY KEY,
|
|
311
311
|
value TEXT NOT NULL
|
|
312
312
|
);
|
|
313
|
-
`}];function
|
|
313
|
+
`}];function M1($,J){if($.migrate(JJ),J?.hasVectorExtension&&J?.embeddingDimension&&J.embeddingDimension>0)WJ($,J.embeddingDimension)}function WJ($,J){if($.get("SELECT name FROM sqlite_master WHERE type='table' AND name='observation_embeddings'")){let X=$.get("SELECT value FROM _embedding_meta WHERE key = 'dimension'");if(X&&Number(X.value)!==J){console.warn(`[open-mem] vec0 table exists with dimension ${X.value}, but config specifies ${J}. Drop observation_embeddings to re-create with new dimension.`);return}}else $.exec(`CREATE VIRTUAL TABLE observation_embeddings USING vec0(
|
|
314
314
|
observation_id TEXT PRIMARY KEY,
|
|
315
315
|
embedding float[${J}] distance_metric=cosine
|
|
316
|
-
)`);$.run("INSERT OR REPLACE INTO _embedding_meta (key, value) VALUES (?, ?)",["dimension",String(J)])}class
|
|
317
|
-
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
|
|
316
|
+
)`);$.run("INSERT OR REPLACE INTO _embedding_meta (key, value) VALUES (?, ?)",["dimension",String(J)])}class F${db;constructor($){this.db=$}create($,J){let W=new Date().toISOString();return this.db.run(`INSERT INTO sessions (id, project_path, started_at, status)
|
|
317
|
+
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 XJ}from"crypto";class R${db;constructor($){this.db=$}create($){let J=XJ(),W=new Date().toISOString();return this.db.run(`INSERT INTO session_summaries
|
|
318
318
|
(id, session_id, summary, key_decisions, files_modified,
|
|
319
319
|
concepts, created_at, token_count,
|
|
320
320
|
request, investigated, learned, completed, next_steps)
|
|
@@ -327,48 +327,48 @@ Respond with EXACTLY this XML format:
|
|
|
327
327
|
JOIN summaries_fts fts ON ss._rowid = fts.rowid
|
|
328
328
|
WHERE summaries_fts MATCH ?
|
|
329
329
|
ORDER BY rank
|
|
330
|
-
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}}}import{EventEmitter as
|
|
331
|
-
`).trim()}function
|
|
332
|
-
`)}function
|
|
333
|
-
**Read cost:** ~${J}t | **Discovery cost:** ~${W}t | **Savings:** ${Y}% (${Q}t saved)`}function
|
|
330
|
+
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}}}import{EventEmitter as QJ}from"events";function z1(){return new QJ}function YJ($){return typeof $==="object"&&$!==null&&"text"in $&&typeof $.text==="string"}function GJ($){let J=[];for(let W of $)if(typeof W==="string")J.push(W);else if(YJ(W))J.push(W.text);return J.join(`
|
|
331
|
+
`).trim()}function _J($){let J=$.toLowerCase().replace(/[^a-z0-9\s-]/g," ").split(/\s+/).filter((W)=>W.length>4);return[...new Set(J)].slice(0,5)}function f1($,J,W){return async(X,Q)=>{try{let{sessionID:Y,agent:G}=X;if(G!==void 0&&G!=="user")return;let _=GJ(Q.parts);if(_.length<20)return;J.getOrCreate(Y,W);let H=`User request: ${_.length>60?`${_.slice(0,60)}...`:_}`,M=_.length>2000?`${_.slice(0,2000)}...`:_;$.create({sessionId:Y,type:"discovery",title:H,subtitle:"",facts:[],narrative:M,concepts:_J(_),filesRead:[],filesModified:[],rawToolOutput:"",toolName:"chat.message",tokenCount:Math.ceil(M.length/4),discoveryTokens:0})}catch(Y){console.error("[open-mem] Chat capture error:",Y)}}}var BJ={showTokenCosts:!0,observationTypes:"all",fullObservationCount:3,showLastSummary:!0},C$={bugfix:"\uD83D\uDD34",feature:"\uD83D\uDFE3",refactor:"\uD83D\uDD04",change:"\u2705",discovery:"\uD83D\uDD35",decision:"\u2696\uFE0F"};function S1($,J=BJ){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 G of $.recentSummaries){let _=G.keyDecisions.length>0?G.keyDecisions.join("; "):"\u2014";W.push(`| ${G.sessionId} | ${G.summary} | ${_} |`)}}let X=J.observationTypes==="all"?$.observationIndex:$.observationIndex.filter((G)=>J.observationTypes.includes(G.type));if(X.length>0){W.push(""),W.push(`### Recent Observations (${X.length} entries)`);let G=MJ(X,$.fullObservations);for(let[_,B]of G){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 H of B){let M=C$[H.type]||"\uD83D\uDCDD";if(J.showTokenCosts)W.push(`| ${H.id} | ${M} | ${H.title} | ~${H.tokenCount} |`);else W.push(`| ${H.id} | ${M} | ${H.title} |`)}}}let Q=$.fullObservations.slice(0,J.fullObservationCount);if(Q.length>0){W.push(""),W.push("### Full Details (most recent)");for(let G of Q){let _=C$[G.type]||"\uD83D\uDCDD";if(W.push(""),W.push(`#### ${_} ${G.title} (${G.id})`),W.push(G.narrative),G.facts.length>0)W.push(`**Facts:** ${G.facts.map((H)=>`- ${H}`).join(" ")}`);if(G.concepts.length>0)W.push(`**Concepts:** ${G.concepts.join(", ")}`);let B=[...G.filesRead,...G.filesModified];if(B.length>0)W.push(`**Files:** ${B.join(", ")}`)}}let Y=HJ($);if(Y)W.push(""),W.push(Y);return W.join(`
|
|
332
|
+
`)}function HJ($){let J=0,W=0,X=new Set($.observationIndex.map((G)=>G.id));for(let G of $.observationIndex)J+=G.tokenCount,W+=G.discoveryTokens;for(let G of $.fullObservations)if(!X.has(G.id))J+=G.tokenCount,W+=G.discoveryTokens;if(W===0)return null;let Q=W-J,Y=Math.max(0,Math.round(Q/W*100));return`### \uD83D\uDCB0 Memory Economics
|
|
333
|
+
**Read cost:** ~${J}t | **Discovery cost:** ~${W}t | **Savings:** ${Y}% (${Q}t saved)`}function MJ($,J){let W=new Map;for(let Q of J){let Y=Q.filesModified[0]||Q.filesRead[0];if(Y)W.set(Q.id,Y)}let X=new Map;for(let Q of $){let Y=W.get(Q.id)??"General",G=X.get(Y)??[];G.push(Q),X.set(Y,G)}return X}function V1($){let J=[];if(J.push("[open-mem] Memory context:"),$.recentSummaries.length>0){J.push(`
|
|
334
334
|
Recent sessions:`);for(let W of $.recentSummaries)J.push(`- ${W.summary}`)}if($.observationIndex.length>0){J.push(`
|
|
335
|
-
Recent observations (${$.observationIndex.length} entries):`);for(let W of $.observationIndex)J.push(`- ${
|
|
336
|
-
`)}function
|
|
337
|
-
`)}async function
|
|
335
|
+
Recent observations (${$.observationIndex.length} entries):`);for(let W of $.observationIndex)J.push(`- ${C$[W.type]||"\uD83D\uDCDD"} ${W.title}`)}return J.join(`
|
|
336
|
+
`)}function s0($,J,W,X,Q=[]){let Y=X,G=[],_=[];for(let B of J){let H=B.tokenCount||Z(B.summary);if(Y-H<0)break;G.push(B),Y-=H}for(let B of W){let H=B.tokenCount||Z(B.title);if(Y-H<0)break;_.push(B),Y-=H}return{recentSummaries:G,observationIndex:_,fullObservations:[...Q],totalTokens:X-Y}}function O1($,J,W,X,Q){return async(Y,G)=>{try{if(!$.contextInjectionEnabled)return;let _=W.getRecent(Q,3),B=_.map((V)=>V.summaryId?X.getBySessionId(V.id):null).filter((V)=>V!==null),H=J.getIndex(Q,10);if(B.length===0&&H.length===0)return;let M=s0(_,B,H,Math.floor($.maxContextTokens/2));G.context.push(V1(M))}catch(_){console.error("[open-mem] Compaction hook error:",_)}}}function N1($,J,W,X,Q){return async(Y,G)=>{try{if(!$.contextInjectionEnabled)return;let _=W.getRecent(Q,5);if(_.length===0)return;let B=_.map((f)=>f.summaryId?X.getBySessionId(f.id):null).filter((f)=>f!==null),H=J.getIndex(Q,$.maxObservations);if(B.length===0&&H.length===0)return;let V=H.slice(0,$.contextFullObservationCount).map((f)=>f.id).map((f)=>J.getById(f)).filter((f)=>f!==null),N=s0(_,B,H,$.maxContextTokens,V),E={showTokenCosts:$.contextShowTokenCosts,observationTypes:$.contextObservationTypes,fullObservationCount:$.contextFullObservationCount,showLastSummary:$.contextShowLastSummary};G.system.push(S1(N,E))}catch(_){console.error("[open-mem] Context injection error:",_)}}}import{existsSync as U1}from"fs";import{readFile as zJ,rename as fJ,writeFile as SJ}from"fs/promises";import{dirname as A1,isAbsolute as E1,join as e0,normalize as VJ,relative as L1,resolve as k$,sep as v$}from"path";var t0="<!-- open-mem-context -->",T0="<!-- /open-mem-context -->",OJ={bugfix:"\uD83D\uDD34",feature:"\uD83D\uDFE3",refactor:"\uD83D\uDD04",change:"\u2705",discovery:"\uD83D\uDD35",decision:"\u2696\uFE0F"},NJ=new Set(["node_modules",".git","dist","coverage",".open-mem","build","__pycache__",".next",".nuxt"]);async function q1($,J,W=5){if(J.length===0)return;let X=[];for(let G of J){for(let _ of G.filesModified)X.push(_);for(let _ of G.filesRead)X.push(_)}let Q=LJ(X,$,W);if(Q.size===0)return;let Y=qJ(J,Q,$);for(let[G,_]of Y)try{let B=UJ(G,_,$);await AJ(G,B)}catch(B){console.error(`[open-mem] Failed to update AGENTS.md in ${G}:`,B)}}function UJ($,J,W){let X=[...J].sort((B,H)=>H.createdAt.localeCompare(B.createdAt)).slice(0,10),Q=L1(W,$)||".",Y=[];Y.push(`## Recent Activity in \`${Q}/\` (auto-generated by open-mem)`),Y.push(""),Y.push("| Type | Title | Date |"),Y.push("|------|-------|------|");for(let B of X){let H=OJ[B.type]||"\uD83D\uDCDD",M=B.createdAt.split("T")[0],V=B.title.replace(/\|/g,"\\|");Y.push(`| ${H} ${B.type} | ${V} | ${M} |`)}let G=new Set;for(let B of X)for(let H of B.concepts)G.add(H);if(G.size>0){let B=[...G].slice(0,10).join(", ");Y.push(""),Y.push(`**Key concepts:** ${B}`)}let _=X.filter((B)=>B.type==="decision").map((B)=>B.title);if(_.length>0)Y.push(""),Y.push(`**Recent decisions:** ${_.slice(0,5).join("; ")}`);return Y.join(`
|
|
337
|
+
`)}async function AJ($,J){if(!U1($))return;let W=e0($,"AGENTS.md"),X=e0($,".AGENTS.md.tmp"),Q="";try{Q=await zJ(W,"utf-8")}catch{}let Y=EJ(Q,J);await SJ(X,Y,"utf-8"),await fJ(X,W)}function EJ($,J){if(!$)return`${t0}
|
|
338
338
|
${J}
|
|
339
|
-
${
|
|
340
|
-
`;let W=$.indexOf(
|
|
339
|
+
${T0}
|
|
340
|
+
`;let W=$.indexOf(t0),X=$.indexOf(T0);if(W!==-1&&X!==-1&&X>W){let Q=$.substring(0,W),Y=$.substring(X+T0.length);return`${Q}${t0}
|
|
341
341
|
${J}
|
|
342
|
-
${
|
|
342
|
+
${T0}${Y}`}return`${$}
|
|
343
343
|
|
|
344
|
-
${
|
|
344
|
+
${t0}
|
|
345
345
|
${J}
|
|
346
|
-
${
|
|
347
|
-
`}function
|
|
348
|
-
`)}class v${config;compressor;summarizer;pendingRepo;observationRepo;sessionRepo;summaryRepo;embeddingModel;processing=!1;timer=null;mode="in-process";onEnqueue=null;constructor($,J,W,X,Q,Y,G,_=null){this.config=$;this.compressor=J;this.summarizer=W;this.pendingRepo=X;this.observationRepo=Q;this.sessionRepo=Y;this.summaryRepo=G;this.embeddingModel=_}setMode($){if(this.mode=$,$==="enqueue-only")this.stop()}getMode(){return this.mode}setOnEnqueue($){this.onEnqueue=$}enqueue($,J,W,X){if(this.pendingRepo.create({sessionId:$,toolName:J,toolOutput:W,callId:X}),this.mode==="enqueue-only")this.onEnqueue?.()}async processBatch(){if(this.mode==="enqueue-only")return 0;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 Q=await this.compressor.compress(W.toolName,W.toolOutput)??this.compressor.createFallbackObservation(W.toolName,W.toolOutput),Y=this.observationRepo.create({sessionId:W.sessionId,type:Q.type,title:Q.title,subtitle:Q.subtitle,facts:Q.facts,narrative:Q.narrative,concepts:Q.concepts,filesRead:Q.filesRead,filesModified:Q.filesModified,rawToolOutput:W.toolOutput,toolName:W.toolName,tokenCount:Z(`${Q.title} ${Q.narrative} ${Q.facts.join(" ")}`),discoveryTokens:Q.discoveryTokens??Z(W.toolOutput)});if(this.embeddingModel)try{let G=D1({title:Y.title,narrative:Y.narrative,concepts:Y.concepts}),_=await e0(this.embeddingModel,G);if(_)this.observationRepo.setEmbedding(Y.id,_)}catch{}this.sessionRepo.incrementObservationCount(W.sessionId),this.pendingRepo.markCompleted(W.id),$++}catch(X){this.pendingRepo.markFailed(W.id,String(X))}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 X=await this.summarizer.summarize($,J);if(!X)return;let Q=this.summaryRepo.create({sessionId:$,summary:X.summary,keyDecisions:X.keyDecisions,filesModified:X.filesModified,concepts:X.concepts,tokenCount:Z(X.summary)});this.sessionRepo.setSummary($,Q.id)}start(){if(this.mode==="enqueue-only")return;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}}}import{normalize as mJ,resolve as r1,sep as d1}from"path";var k$=($,J,W)=>{return(X,Q)=>{let Y=-1;return G(0);async function G(_){if(_<=Y)throw Error("next() called multiple times");Y=_;let B,H=!1,M;if($[_])M=$[_][0][0],X.req.routeIndex=_;else M=_===$.length&&Q||void 0;if(M)try{B=await M(X,()=>G(_+1))}catch(V){if(V instanceof Error&&J)X.error=V,B=await J(V,X),H=!0;else throw V}else if(X.finalized===!1&&W)B=await W(X);if(B&&(X.finalized===!1||H))X.res=B;return X}}};var w1=Symbol();var F1=async($,J=Object.create(null))=>{let{all:W=!1,dot:X=!1}=J,Y=($ instanceof $$?$.raw.headers:$.headers).get("Content-Type");if(Y?.startsWith("multipart/form-data")||Y?.startsWith("application/x-www-form-urlencoded"))return LJ($,{all:W,dot:X});return{}};async function LJ($,J){let W=await $.formData();if(W)return qJ(W,J);return{}}function qJ($,J){let W=Object.create(null);if($.forEach((X,Q)=>{if(!(J.all||Q.endsWith("[]")))W[Q]=X;else KJ(W,Q,X)}),J.dot)Object.entries(W).forEach(([X,Q])=>{if(X.includes("."))DJ(W,X,Q),delete W[X]});return W}var KJ=($,J,W)=>{if($[J]!==void 0)if(Array.isArray($[J]))$[J].push(W);else $[J]=[$[J],W];else if(!J.endsWith("[]"))$[J]=W;else $[J]=[W]},DJ=($,J,W)=>{let X=$,Q=J.split(".");Q.forEach((Y,G)=>{if(G===Q.length-1)X[Y]=W;else{if(!X[Y]||typeof X[Y]!=="object"||Array.isArray(X[Y])||X[Y]instanceof File)X[Y]=Object.create(null);X=X[Y]}})};var b$=($)=>{let J=$.split("/");if(J[0]==="")J.shift();return J},R1=($)=>{let{groups:J,path:W}=wJ($),X=b$(W);return FJ(X,J)},wJ=($)=>{let J=[];return $=$.replace(/\{[^}]+\}/g,(W,X)=>{let Q=`@${X}`;return J.push([Q,W]),Q}),{groups:J,path:$}},FJ=($,J)=>{for(let W=J.length-1;W>=0;W--){let[X]=J[W];for(let Q=$.length-1;Q>=0;Q--)if($[Q].includes(X)){$[Q]=$[Q].replace(X,J[W][1]);break}}return $},J$={},C1=($,J)=>{if($==="*")return"*";let W=$.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(W){let X=`${$}#${J}`;if(!J$[X])if(W[2])J$[X]=J&&J[0]!==":"&&J[0]!=="*"?[X,W[1],new RegExp(`^${W[2]}(?=/${J})`)]:[$,W[1],new RegExp(`^${W[2]}$`)];else J$[X]=[$,W[1],!0];return J$[X]}return null},W$=($,J)=>{try{return J($)}catch{return $.replace(/(?:%[0-9A-Fa-f]{2})+/g,(W)=>{try{return J(W)}catch{return W}})}},RJ=($)=>W$($,decodeURI),P$=($)=>{let J=$.url,W=J.indexOf("/",J.indexOf(":")+4),X=W;for(;X<J.length;X++){let Q=J.charCodeAt(X);if(Q===37){let Y=J.indexOf("?",X),G=J.slice(W,Y===-1?void 0:Y);return RJ(G.includes("%25")?G.replace(/%25/g,"%2525"):G)}else if(Q===63)break}return J.slice(W,X)};var v1=($)=>{let J=P$($);return J.length>1&&J.at(-1)==="/"?J.slice(0,-1):J},Y0=($,J,...W)=>{if(W.length)J=Y0(J,...W);return`${$?.[0]==="/"?"":"/"}${$}${J==="/"?"":`${$?.at(-1)==="/"?"":"/"}${J?.[0]==="/"?J.slice(1):J}`}`},X$=($)=>{if($.charCodeAt($.length-1)!==63||!$.includes(":"))return null;let J=$.split("/"),W=[],X="";return J.forEach((Q)=>{if(Q!==""&&!/\:/.test(Q))X+="/"+Q;else if(/\:/.test(Q))if(/\?/.test(Q)){if(W.length===0&&X==="")W.push("/");else W.push(X);let Y=Q.replace("?","");X+="/"+Y,W.push(X)}else X+="/"+Q}),W.filter((Q,Y,G)=>G.indexOf(Q)===Y)},I$=($)=>{if(!/[%+]/.test($))return $;if($.indexOf("+")!==-1)$=$.replace(/\+/g," ");return $.indexOf("%")!==-1?W$($,T$):$},k1=($,J,W)=>{let X;if(!W&&J&&!/[%+]/.test(J)){let G=$.indexOf("?",8);if(G===-1)return;if(!$.startsWith(J,G+1))G=$.indexOf(`&${J}`,G+1);while(G!==-1){let _=$.charCodeAt(G+J.length+1);if(_===61){let B=G+J.length+2,H=$.indexOf("&",B);return I$($.slice(B,H===-1?void 0:H))}else if(_==38||isNaN(_))return"";G=$.indexOf(`&${J}`,G+1)}if(X=/[%+]/.test($),!X)return}let Q={};X??=/[%+]/.test($);let Y=$.indexOf("?",8);while(Y!==-1){let G=$.indexOf("&",Y+1),_=$.indexOf("=",Y);if(_>G&&G!==-1)_=-1;let B=$.slice(Y+1,_===-1?G===-1?void 0:G:_);if(X)B=I$(B);if(Y=G,B==="")continue;let H;if(_===-1)H="";else if(H=$.slice(_+1,G===-1?void 0:G),X)H=I$(H);if(W){if(!(Q[B]&&Array.isArray(Q[B])))Q[B]=[];Q[B].push(H)}else Q[B]??=H}return J?Q[J]:Q},I1=k1,b1=($,J)=>{return k1($,J,!0)},T$=decodeURIComponent;var P1=($)=>W$($,T$),$$=class{raw;#$;#J;routeIndex=0;path;bodyCache={};constructor($,J="/",W=[[]]){this.raw=$,this.path=J,this.#J=W,this.#$={}}param($){return $?this.#W($):this.#Y()}#W($){let J=this.#J[0][this.routeIndex][1][$],W=this.#Q(J);return W&&/\%/.test(W)?P1(W):W}#Y(){let $={},J=Object.keys(this.#J[0][this.routeIndex][1]);for(let W of J){let X=this.#Q(this.#J[0][this.routeIndex][1][W]);if(X!==void 0)$[W]=/\%/.test(X)?P1(X):X}return $}#Q($){return this.#J[1]?this.#J[1][$]:$}query($){return I1(this.url,$)}queries($){return b1(this.url,$)}header($){if($)return this.raw.headers.get($)??void 0;let J={};return this.raw.headers.forEach((W,X)=>{J[X]=W}),J}async parseBody($){return this.bodyCache.parsedBody??=await F1(this,$)}#X=($)=>{let{bodyCache:J,raw:W}=this,X=J[$];if(X)return X;let Q=Object.keys(J)[0];if(Q)return J[Q].then((Y)=>{if(Q==="json")Y=JSON.stringify(Y);return new Response(Y)[$]()});return J[$]=W[$]()};json(){return this.#X("text").then(($)=>JSON.parse($))}text(){return this.#X("text")}arrayBuffer(){return this.#X("arrayBuffer")}blob(){return this.#X("blob")}formData(){return this.#X("formData")}addValidatedData($,J){this.#$[$]=J}valid($){return this.#$[$]}get url(){return this.raw.url}get method(){return this.raw.method}get[w1](){return this.#J}get matchedRoutes(){return this.#J[0].map(([[,$]])=>$)}get routePath(){return this.#J[0].map(([[,$]])=>$)[this.routeIndex].path}};var Q$={Stringify:1,BeforeStream:2,Stream:3},CJ=($,J)=>{let W=new String($);return W.isEscaped=!0,W.callbacks=J,W};var P0=async($,J,W,X,Q)=>{if(typeof $==="object"&&!($ instanceof String)){if(!($ instanceof Promise))$=$.toString();if($ instanceof Promise)$=await $}let Y=$.callbacks;if(!Y?.length)return Promise.resolve($);if(Q)Q[0]+=$;else Q=[$];let G=Promise.all(Y.map((_)=>_({phase:J,buffer:Q,context:X}))).then((_)=>Promise.all(_.filter(Boolean).map((B)=>P0(B,J,!1,X,Q))).then(()=>Q[0]));if(W)return CJ(await G,Y);else return G};var T1="text/plain; charset=UTF-8",g$=($,J)=>{return{"Content-Type":$,...J}},g1=class{#$;#J;env={};#W;finalized=!1;error;#Y;#Q;#X;#M;#B;#H;#_;#z;#f;constructor($,J){if(this.#$=$,J)this.#Q=J.executionCtx,this.env=J.env,this.#H=J.notFoundHandler,this.#f=J.path,this.#z=J.matchResult}get req(){return this.#J??=new $$(this.#$,this.#f,this.#z),this.#J}get event(){if(this.#Q&&"respondWith"in this.#Q)return this.#Q;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#Q)return this.#Q;else throw Error("This context has no ExecutionContext")}get res(){return this.#X||=new Response(null,{headers:this.#_??=new Headers})}set res($){if(this.#X&&$){$=new Response($.body,$);for(let[J,W]of this.#X.headers.entries()){if(J==="content-type")continue;if(J==="set-cookie"){let X=this.#X.headers.getSetCookie();$.headers.delete("set-cookie");for(let Q of X)$.headers.append("set-cookie",Q)}else $.headers.set(J,W)}}this.#X=$,this.finalized=!0}render=(...$)=>{return this.#B??=(J)=>this.html(J),this.#B(...$)};setLayout=($)=>this.#M=$;getLayout=()=>this.#M;setRenderer=($)=>{this.#B=$};header=($,J,W)=>{if(this.finalized)this.#X=new Response(this.#X.body,this.#X);let X=this.#X?this.#X.headers:this.#_??=new Headers;if(J===void 0)X.delete($);else if(W?.append)X.append($,J);else X.set($,J)};status=($)=>{this.#Y=$};set=($,J)=>{this.#W??=new Map,this.#W.set($,J)};get=($)=>{return this.#W?this.#W.get($):void 0};get var(){if(!this.#W)return{};return Object.fromEntries(this.#W)}#G($,J,W){let X=this.#X?new Headers(this.#X.headers):this.#_??new Headers;if(typeof J==="object"&&"headers"in J){let Y=J.headers instanceof Headers?J.headers:new Headers(J.headers);for(let[G,_]of Y)if(G.toLowerCase()==="set-cookie")X.append(G,_);else X.set(G,_)}if(W)for(let[Y,G]of Object.entries(W))if(typeof G==="string")X.set(Y,G);else{X.delete(Y);for(let _ of G)X.append(Y,_)}let Q=typeof J==="number"?J:J?.status??this.#Y;return new Response($,{status:Q,headers:X})}newResponse=(...$)=>this.#G(...$);body=($,J,W)=>this.#G($,J,W);text=($,J,W)=>{return!this.#_&&!this.#Y&&!J&&!W&&!this.finalized?new Response($):this.#G($,J,g$(T1,W))};json=($,J,W)=>{return this.#G(JSON.stringify($),J,g$("application/json",W))};html=($,J,W)=>{let X=(Q)=>this.#G(Q,J,g$("text/html; charset=UTF-8",W));return typeof $==="object"?P0($,Q$.Stringify,!1,{}).then(X):X($)};redirect=($,J)=>{let W=String($);return this.header("Location",!/[^\x00-\xFF]/.test(W)?W:encodeURI(W)),this.newResponse(null,J??302)};notFound=()=>{return this.#H??=()=>new Response,this.#H(this)}};var C="ALL",x1="all",h1=["get","post","put","delete","options","patch"],Y$="Can not add a route since the matcher is already built.",G$=class extends Error{};var Z1="__COMPOSED_HANDLER";var vJ=($)=>{return $.text("404 Not Found",404)},y1=($,J)=>{if("getResponse"in $){let W=$.getResponse();return J.newResponse(W.body,W)}return console.error($),J.text("Internal Server Error",500)},l1=class ${get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#$="/";routes=[];constructor(J={}){[...h1,x1].forEach((Y)=>{this[Y]=(G,..._)=>{if(typeof G==="string")this.#$=G;else this.#Y(Y,this.#$,G);return _.forEach((B)=>{this.#Y(Y,this.#$,B)}),this}}),this.on=(Y,G,..._)=>{for(let B of[G].flat()){this.#$=B;for(let H of[Y].flat())_.map((M)=>{this.#Y(H.toUpperCase(),this.#$,M)})}return this},this.use=(Y,...G)=>{if(typeof Y==="string")this.#$=Y;else this.#$="*",G.unshift(Y);return G.forEach((_)=>{this.#Y(C,this.#$,_)}),this};let{strict:X,...Q}=J;Object.assign(this,Q),this.getPath=X??!0?J.getPath??P$:v1}#J(){let J=new $({router:this.router,getPath:this.getPath});return J.errorHandler=this.errorHandler,J.#W=this.#W,J.routes=this.routes,J}#W=vJ;errorHandler=y1;route(J,W){let X=this.basePath(J);return W.routes.map((Q)=>{let Y;if(W.errorHandler===y1)Y=Q.handler;else Y=async(G,_)=>(await k$([],W.errorHandler)(G,()=>Q.handler(G,_))).res,Y[Z1]=Q.handler;X.#Y(Q.method,Q.path,Y)}),this}basePath(J){let W=this.#J();return W._basePath=Y0(this._basePath,J),W}onError=(J)=>{return this.errorHandler=J,this};notFound=(J)=>{return this.#W=J,this};mount(J,W,X){let Q,Y;if(X)if(typeof X==="function")Y=X;else if(Y=X.optionHandler,X.replaceRequest===!1)Q=(B)=>B;else Q=X.replaceRequest;let G=Y?(B)=>{let H=Y(B);return Array.isArray(H)?H:[H]}:(B)=>{let H=void 0;try{H=B.executionCtx}catch{}return[B.env,H]};Q||=(()=>{let B=Y0(this._basePath,J),H=B==="/"?0:B.length;return(M)=>{let V=new URL(M.url);return V.pathname=V.pathname.slice(H)||"/",new Request(V,M)}})();let _=async(B,H)=>{let M=await W(Q(B.req.raw),...G(B));if(M)return M;await H()};return this.#Y(C,Y0(J,"*"),_),this}#Y(J,W,X){J=J.toUpperCase(),W=Y0(this._basePath,W);let Q={basePath:this._basePath,path:W,method:J,handler:X};this.router.add(J,W,[X,Q]),this.routes.push(Q)}#Q(J,W){if(J instanceof Error)return this.errorHandler(J,W);throw J}#X(J,W,X,Q){if(Q==="HEAD")return(async()=>new Response(null,await this.#X(J,W,X,"GET")))();let Y=this.getPath(J,{env:X}),G=this.router.match(Q,Y),_=new g1(J,{path:Y,matchResult:G,env:X,executionCtx:W,notFoundHandler:this.#W});if(G[0].length===1){let H;try{H=G[0][0][0][0](_,async()=>{_.res=await this.#W(_)})}catch(M){return this.#Q(M,_)}return H instanceof Promise?H.then((M)=>M||(_.finalized?_.res:this.#W(_))).catch((M)=>this.#Q(M,_)):H??this.#W(_)}let B=k$(G[0],this.errorHandler,this.#W);return(async()=>{try{let H=await B(_);if(!H.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return H.res}catch(H){return this.#Q(H,_)}})()}fetch=(J,...W)=>{return this.#X(J,W[1],W[0],J.method)};request=(J,W,X,Q)=>{if(J instanceof Request)return this.fetch(W?new Request(J,W):J,X,Q);return J=J.toString(),this.fetch(new Request(/^https?:\/\//.test(J)?J:`http://localhost${Y0("/",J)}`,W),X,Q)};fire=()=>{addEventListener("fetch",(J)=>{J.respondWith(this.#X(J.request,J,void 0,J.request.method))})}};var T0=[];function _$($,J){let W=this.buildAllMatchers(),X=(Q,Y)=>{let G=W[Q]||W[C],_=G[2][Y];if(_)return _;let B=Y.match(G[0]);if(!B)return[[],T0];let H=B.indexOf("",1);return[G[1][H],B]};return this.match=X,X($,J)}var B$="[^/]+",g0=".*",x0="(?:|/.*)",G0=Symbol(),kJ=new Set(".\\+*[^]$()");function IJ($,J){if($.length===1)return J.length===1?$<J?-1:1:-1;if(J.length===1)return 1;if($===g0||$===x0)return 1;else if(J===g0||J===x0)return-1;if($===B$)return 1;else if(J===B$)return-1;return $.length===J.length?$<J?-1:1:J.length-$.length}var m1=class ${#$;#J;#W=Object.create(null);insert(J,W,X,Q,Y){if(J.length===0){if(this.#$!==void 0)throw G0;if(Y)return;this.#$=W;return}let[G,..._]=J,B=G==="*"?_.length===0?["","",g0]:["","",B$]:G==="/*"?["","",x0]:G.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),H;if(B){let M=B[1],V=B[2]||B$;if(M&&B[2]){if(V===".*")throw G0;if(V=V.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(V))throw G0}if(H=this.#W[V],!H){if(Object.keys(this.#W).some((N)=>N!==g0&&N!==x0))throw G0;if(Y)return;if(H=this.#W[V]=new $,M!=="")H.#J=Q.varIndex++}if(!Y&&M!=="")X.push([M,H.#J])}else if(H=this.#W[G],!H){if(Object.keys(this.#W).some((M)=>M.length>1&&M!==g0&&M!==x0))throw G0;if(Y)return;H=this.#W[G]=new $}H.insert(_,W,X,Q,Y)}buildRegExpStr(){let W=Object.keys(this.#W).sort(IJ).map((X)=>{let Q=this.#W[X];return(typeof Q.#J==="number"?`(${X})@${Q.#J}`:kJ.has(X)?`\\${X}`:X)+Q.buildRegExpStr()});if(typeof this.#$==="number")W.unshift(`#${this.#$}`);if(W.length===0)return"";if(W.length===1)return W[0];return"(?:"+W.join("|")+")"}};var c1=class{#$={varIndex:0};#J=new m1;insert($,J,W){let X=[],Q=[];for(let G=0;;){let _=!1;if($=$.replace(/\{[^}]+\}/g,(B)=>{let H=`@\\${G}`;return Q[G]=[H,B],G++,_=!0,H}),!_)break}let Y=$.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let G=Q.length-1;G>=0;G--){let[_]=Q[G];for(let B=Y.length-1;B>=0;B--)if(Y[B].indexOf(_)!==-1){Y[B]=Y[B].replace(_,Q[G][1]);break}}return this.#J.insert(Y,J,X,this.#$,W),X}buildRegExp(){let $=this.#J.buildRegExpStr();if($==="")return[/^$/,[],[]];let J=0,W=[],X=[];return $=$.replace(/#(\d+)|@(\d+)|\.\*\$/g,(Q,Y,G)=>{if(Y!==void 0)return W[++J]=Number(Y),"$()";if(G!==void 0)return X[Number(G)]=++J,"";return""}),[new RegExp(`^${$}`),W,X]}};var bJ=[/^$/,[],Object.create(null)],u1=Object.create(null);function p1($){return u1[$]??=new RegExp($==="*"?"":`^${$.replace(/\/\*$|([.\\+*[^\]$()])/g,(J,W)=>W?`\\${W}`:"(?:|/.*)")}$`)}function PJ(){u1=Object.create(null)}function TJ($){let J=new c1,W=[];if($.length===0)return bJ;let X=$.map((H)=>[!/\*|\/:/.test(H[0]),...H]).sort(([H,M],[V,N])=>H?1:V?-1:M.length-N.length),Q=Object.create(null);for(let H=0,M=-1,V=X.length;H<V;H++){let[N,A,f]=X[H];if(N)Q[A]=[f.map(([R])=>[R,Object.create(null)]),T0];else M++;let q;try{q=J.insert(A,M,N)}catch(R){throw R===G0?new G$(A):R}if(N)continue;W[M]=f.map(([R,F])=>{let x=Object.create(null);F-=1;for(;F>=0;F--){let[h,P]=q[F];x[h]=P}return[R,x]})}let[Y,G,_]=J.buildRegExp();for(let H=0,M=W.length;H<M;H++)for(let V=0,N=W[H].length;V<N;V++){let A=W[H][V]?.[1];if(!A)continue;let f=Object.keys(A);for(let q=0,R=f.length;q<R;q++)A[f[q]]=_[A[f[q]]]}let B=[];for(let H in G)B[H]=W[G[H]];return[Y,B,Q]}function V0($,J){if(!$)return;for(let W of Object.keys($).sort((X,Q)=>Q.length-X.length))if(p1(W).test(J))return[...$[W]];return}var H$=class{name="RegExpRouter";#$;#J;constructor(){this.#$={[C]:Object.create(null)},this.#J={[C]:Object.create(null)}}add($,J,W){let X=this.#$,Q=this.#J;if(!X||!Q)throw Error(Y$);if(!X[$])[X,Q].forEach((_)=>{_[$]=Object.create(null),Object.keys(_[C]).forEach((B)=>{_[$][B]=[..._[C][B]]})});if(J==="/*")J="*";let Y=(J.match(/\/:/g)||[]).length;if(/\*$/.test(J)){let _=p1(J);if($===C)Object.keys(X).forEach((B)=>{X[B][J]||=V0(X[B],J)||V0(X[C],J)||[]});else X[$][J]||=V0(X[$],J)||V0(X[C],J)||[];Object.keys(X).forEach((B)=>{if($===C||$===B)Object.keys(X[B]).forEach((H)=>{_.test(H)&&X[B][H].push([W,Y])})}),Object.keys(Q).forEach((B)=>{if($===C||$===B)Object.keys(Q[B]).forEach((H)=>_.test(H)&&Q[B][H].push([W,Y]))});return}let G=X$(J)||[J];for(let _=0,B=G.length;_<B;_++){let H=G[_];Object.keys(Q).forEach((M)=>{if($===C||$===M)Q[M][H]||=[...V0(X[M],H)||V0(X[C],H)||[]],Q[M][H].push([W,Y-B+_+1])})}}match=_$;buildAllMatchers(){let $=Object.create(null);return Object.keys(this.#J).concat(Object.keys(this.#$)).forEach((J)=>{$[J]||=this.#W(J)}),this.#$=this.#J=void 0,PJ(),$}#W($){let J=[],W=$===C;if([this.#$,this.#J].forEach((X)=>{let Q=X[$]?Object.keys(X[$]).map((Y)=>[Y,X[$][Y]]):[];if(Q.length!==0)W||=!0,J.push(...Q);else if($!==C)J.push(...Object.keys(X[C]).map((Y)=>[Y,X[C][Y]]))}),!W)return null;else return TJ(J)}};var gJ=class{name="PreparedRegExpRouter";#$;#J;constructor($,J){this.#$=$,this.#J=J}#W($,J){let W=this.#$[$];W[1].forEach((X)=>X&&X.push(J)),Object.values(W[2]).forEach((X)=>X[0].push(J))}#Y($,J,W,X,Q){let Y=this.#$[$];if(!Q)Y[2][J][0].push([W,{}]);else X.forEach((G)=>{if(typeof G==="number")Y[1][G].push([W,Q]);else Y[2][G||J][0].push([W,Q])})}add($,J,W){if(!this.#$[$]){let Q=this.#$[C],Y={};for(let G in Q[2])Y[G]=[Q[2][G][0].slice(),T0];this.#$[$]=[Q[0],Q[1].map((G)=>Array.isArray(G)?G.slice():0),Y]}if(J==="/*"||J==="*"){let Q=[W,{}];if($===C)for(let Y in this.#$)this.#W(Y,Q);else this.#W($,Q);return}let X=this.#J[J];if(!X)throw Error(`Path ${J} is not registered`);for(let[Q,Y]of X)if($===C)for(let G in this.#$)this.#Y(G,J,W,Q,Y);else this.#Y($,J,W,Q,Y)}buildAllMatchers(){return this.#$}match=_$};var x$=class{name="SmartRouter";#$=[];#J=[];constructor($){this.#$=$.routers}add($,J,W){if(!this.#J)throw Error(Y$);this.#J.push([$,J,W])}match($,J){if(!this.#J)throw Error("Fatal error");let W=this.#$,X=this.#J,Q=W.length,Y=0,G;for(;Y<Q;Y++){let _=W[Y];try{for(let B=0,H=X.length;B<H;B++)_.add(...X[B]);G=_.match($,J)}catch(B){if(B instanceof G$)continue;throw B}this.match=_.match.bind(_),this.#$=[_],this.#J=void 0;break}if(Y===Q)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,G}get activeRouter(){if(this.#J||this.#$.length!==1)throw Error("No active router has been determined yet.");return this.#$[0]}};var h0=Object.create(null),n1=class ${#$;#J;#W;#Y=0;#Q=h0;constructor(J,W,X){if(this.#J=X||Object.create(null),this.#$=[],J&&W){let Q=Object.create(null);Q[J]={handler:W,possibleKeys:[],score:0},this.#$=[Q]}this.#W=[]}insert(J,W,X){this.#Y=++this.#Y;let Q=this,Y=R1(W),G=[];for(let _=0,B=Y.length;_<B;_++){let H=Y[_],M=Y[_+1],V=C1(H,M),N=Array.isArray(V)?V[0]:H;if(N in Q.#J){if(Q=Q.#J[N],V)G.push(V[1]);continue}if(Q.#J[N]=new $,V)Q.#W.push(V),G.push(V[1]);Q=Q.#J[N]}return Q.#$.push({[J]:{handler:X,possibleKeys:G.filter((_,B,H)=>H.indexOf(_)===B),score:this.#Y}}),Q}#X(J,W,X,Q){let Y=[];for(let G=0,_=J.#$.length;G<_;G++){let B=J.#$[G],H=B[W]||B[C],M={};if(H!==void 0){if(H.params=Object.create(null),Y.push(H),X!==h0||Q&&Q!==h0)for(let V=0,N=H.possibleKeys.length;V<N;V++){let A=H.possibleKeys[V],f=M[H.score];H.params[A]=Q?.[A]&&!f?Q[A]:X[A]??Q?.[A],M[H.score]=!0}}}return Y}search(J,W){let X=[];this.#Q=h0;let Y=[this],G=b$(W),_=[];for(let B=0,H=G.length;B<H;B++){let M=G[B],V=B===H-1,N=[];for(let A=0,f=Y.length;A<f;A++){let q=Y[A],R=q.#J[M];if(R)if(R.#Q=q.#Q,V){if(R.#J["*"])X.push(...this.#X(R.#J["*"],J,q.#Q));X.push(...this.#X(R,J,q.#Q))}else N.push(R);for(let F=0,x=q.#W.length;F<x;F++){let h=q.#W[F],P=q.#Q===h0?{}:{...q.#Q};if(h==="*"){let T=q.#J["*"];if(T)X.push(...this.#X(T,J,q.#Q)),T.#Q=P,N.push(T);continue}let[f0,S0,s]=h;if(!M&&!(s instanceof RegExp))continue;let y=q.#J[f0],N$=G.slice(B).join("/");if(s instanceof RegExp){let T=s.exec(N$);if(T){if(P[S0]=T[0],X.push(...this.#X(y,J,q.#Q,P)),Object.keys(y.#J).length){y.#Q=P;let n0=T[0].match(/\//)?.length??0;(_[n0]||=[]).push(y)}continue}}if(s===!0||s.test(M))if(P[S0]=M,V){if(X.push(...this.#X(y,J,P,q.#Q)),y.#J["*"])X.push(...this.#X(y.#J["*"],J,P,q.#Q))}else y.#Q=P,N.push(y)}}Y=N.concat(_.shift()??[])}if(X.length>1)X.sort((B,H)=>{return B.score-H.score});return[X.map(({handler:B,params:H})=>[B,H])]}};var h$=class{name="TrieRouter";#$;constructor(){this.#$=new n1}add($,J,W){let X=X$(J);if(X){for(let Q=0,Y=X.length;Q<Y;Q++)this.#$.insert($,X[Q],W);return}this.#$.insert($,J,W)}match($,J){return this.#$.search($,J)}};var Z$=class extends l1{constructor($={}){super($);this.router=$.router??new x$({routers:[new H$,new h$]})}};var i1=60;async function M$($,J,W,X){let Q=X.limit??10,Y=xJ(J,$,X.type,Q);if(!W)return Y;let G=await e0(W,$);if(!G)return Y;let _=Y.map((H)=>H.observation.id),B=hJ(J,G,X.projectPath,X.type,Q,X.hasVectorExtension??!1,_);if(B.length===0)return Y;return lJ(Y,B,Q)}function xJ($,J,W,X){try{return $.search({query:J,type:W,limit:X})}catch{return[]}}function hJ($,J,W,X,Q,Y,G){if(Y)return ZJ($,J,X,Q,G);return yJ($,J,W,X,Q)}function ZJ($,J,W,X,Q){try{let Y;if(Q.length>0){if(Y=$.searchVecSubset(J,Q,X*3),Y.length===0)Y=$.getVecEmbeddingMatches(J,X*3)}else Y=$.getVecEmbeddingMatches(J,X*3);if(Y.length===0)return[];let G=[];for(let{observationId:_,distance:B}of Y){if(G.length>=X)break;let H=$.getById(_);if(!H)continue;if(W&&H.type!==W)continue;G.push({observation:H,rank:B-1,snippet:H.title})}return G}catch{return[]}}function yJ($,J,W,X,Q){let Y=$.getWithEmbeddings(W,Q*10);if(Y.length===0)return[];let G=Y.map((B)=>({id:B.id,similarity:K1(J,B.embedding)})).filter(({similarity:B})=>B>=0.3).sort((B,H)=>H.similarity-B.similarity),_=[];for(let{id:B,similarity:H}of G){if(_.length>=Q)break;let M=$.getById(B);if(!M)continue;if(X&&M.type!==X)continue;_.push({observation:M,rank:-H,snippet:M.title})}return _}function lJ($,J,W){let X=new Map;for(let Q=0;Q<$.length;Q++){let Y=$[Q],G=1/(i1+Q+1);X.set(Y.observation.id,{score:G,result:Y})}for(let Q=0;Q<J.length;Q++){let Y=J[Q],G=1/(i1+Q+1),_=X.get(Y.observation.id);if(_)_.score+=G;else X.set(Y.observation.id,{score:G,result:Y})}return[...X.values()].sort((Q,Y)=>Y.score-Q.score).slice(0,W).map(({result:Q})=>Q)}var cJ=new Set(["decision","bugfix","feature","refactor","discovery","change"]);function y$($,J,W=100){if(!$)return J;let X=Number.parseInt($,10);if(Number.isNaN(X))return J;return Math.max(1,Math.min(X,W))}function uJ($){if(!$)return 0;let J=Number.parseInt($,10);if(Number.isNaN(J))return 0;return Math.max(0,J)}function o1($){if(!$)return;if(cJ.has($))return $;return}function pJ($){let J={};for(let[W,X]of Object.entries($)){let Q=W.toLowerCase();if(typeof X==="string"&&(Q.includes("key")||Q.includes("api")))J[W]="***REDACTED***";else J[W]=X}return J}function a1($){let{observationRepo:J,sessionRepo:W,summaryRepo:X,config:Q,projectPath:Y,embeddingModel:G,dashboardDir:_}=$,B=new Z$;if(B.get("/api/observations",(H)=>{let M=y$(H.req.query("limit"),50),V=uJ(H.req.query("offset")),N=o1(H.req.query("type")),A=H.req.query("sessionId");if(A){let F=J.getBySession(A);if(N)F=F.filter((h)=>h.type===N);let x=F.slice(V,V+M);return H.json(x)}let q=J.getIndex(Y,V+M).slice(V);if(N)q=q.filter((F)=>F.type===N);let R=q.map((F)=>J.getById(F.id)).filter((F)=>F!==null);return H.json(R)}),B.get("/api/observations/:id",(H)=>{let M=H.req.param("id"),V=J.getById(M);if(!V)return H.json({error:"Observation not found"},404);return H.json(V)}),B.get("/api/sessions",(H)=>{let M=y$(H.req.query("limit"),20),V=H.req.query("projectPath")||Y,N=W.getRecent(V,M);return H.json(N)}),B.get("/api/sessions/:id",(H)=>{let M=H.req.param("id"),V=W.getById(M);if(!V)return H.json({error:"Session not found"},404);let N=J.getBySession(M);return H.json({...V,observations:N})}),B.get("/api/search",async(H)=>{let M=H.req.query("q");if(!M)return H.json({error:"Query parameter 'q' is required"},400);let V=o1(H.req.query("type")),N=y$(H.req.query("limit"),20);try{if(G){let f=await M$(M,J,G,{type:V,limit:N,projectPath:Y});return H.json(f)}let A=J.search({query:M,type:V,limit:N});return H.json(A)}catch{return H.json([],200)}}),B.get("/api/stats",(H)=>{let M=J.getCount(),N=W.getAll(Y).length,A=J.getIndex(Y,1e4),f=0,q=0,R={};for(let h of A)f+=h.tokenCount,q+=h.discoveryTokens,R[h.type]=(R[h.type]||0)+1;let F=q-f,x=A.length>0?Math.round(f/A.length):0;return H.json({totalObservations:M,totalSessions:N,tokensSaved:F,avgObservationSize:x,typeBreakdown:R})}),B.get("/api/config",(H)=>{return H.json(pJ(Q))}),$.sseHandler)B.get("/api/events",$.sseHandler);return B.get("*",async(H)=>{let M=H.req.path;if(M.startsWith("/api/"))return H.json({error:"Not found"},404);let V=_??new URL("../../dist/dashboard/",import.meta.url).pathname,N=mJ(V),A=N.endsWith(d1)?N:N+d1,f=M==="/"?"index.html":M.replace(/^\//,""),q=r1(V,f);if(!q.startsWith(A))return H.json({error:"Not found"},404);try{let F=Bun.file(q);if(await F.exists())return new Response(F)}catch{}let R=r1(V,"index.html");if(!R.startsWith(A))return H.json({error:"Not found"},404);try{let F=Bun.file(R);if(await F.exists())return new Response(F,{headers:{"Content-Type":"text/html; charset=utf-8"}})}catch{}return H.json({error:"Dashboard not found. Run the dashboard build first."},404)}),B}var l$=class{writer;encoder;writable;abortSubscribers=[];responseReadable;aborted=!1;closed=!1;constructor($,J){this.writable=$,this.writer=$.getWriter(),this.encoder=new TextEncoder;let W=J.getReader();this.abortSubscribers.push(async()=>{await W.cancel()}),this.responseReadable=new ReadableStream({async pull(X){let{done:Q,value:Y}=await W.read();Q?X.close():X.enqueue(Y)},cancel:()=>{this.abort()}})}async write($){try{if(typeof $==="string")$=this.encoder.encode($);await this.writer.write($)}catch{}return this}async writeln($){return await this.write($+`
|
|
349
|
-
`),this}sleep($){return new Promise((J)=>setTimeout(J,$))}async close(){try{await this.writer.close()}catch{}this.closed=!0}async pipe($){this.writer.releaseLock(),await $.pipeTo(this.writable,{preventClose:!0}),this.writer=this.writable.getWriter()}onAbort($){this.abortSubscribers.push($)}abort(){if(!this.aborted)this.aborted=!0,this.abortSubscribers.forEach(($)=>$())}};var
|
|
346
|
+
${T0}
|
|
347
|
+
`}function LJ($,J,W){let X=new Set,Q=k$(J);for(let Y of $){if(!Y||!Y.trim())continue;if(Y.startsWith("~")||Y.startsWith("http"))continue;let G=E1(Y)?Y:e0(J,Y),_=A1(G),B=k$(_);if(!B.startsWith(Q+v$)&&B!==Q)continue;if(B===Q)continue;let H=L1(Q,B);if(H.split(v$).length>W)continue;if(VJ(H).split(v$).some((N)=>NJ.has(N)))continue;if(!U1(B))continue;X.add(B)}return X}function qJ($,J,W){let X=new Map;for(let Q of $){let Y=[...Q.filesModified,...Q.filesRead],G=new Set;for(let _ of Y){if(!_)continue;let B=E1(_)?_:e0(W,_),H=k$(A1(B));if(J.has(H))G.add(H)}for(let _ of G){let B=X.get(_)??[];B.push(Q),X.set(_,B)}}return X}function K1($,J,W,X,Q){return async(Y)=>{try{let{event:G}=Y,_=G.properties.sessionID,B=typeof _==="string"?_:void 0;switch(G.type){case"session.created":{if(B)J.getOrCreate(B,W);break}case"session.idle":{if(await $.processBatch(),B)J.updateStatus(B,"idle"),await j1(B,W,X,Q);break}case"session.completed":case"session.ended":{if(B)await $.processBatch(),await $.summarizeSession(B),J.markCompleted(B),await j1(B,W,X,Q);break}default:break}}catch(G){console.error("[open-mem] Event handler error:",G)}}}async function j1($,J,W,X){if(!W.folderContextEnabled)return;try{let Q=X.getBySession($);if(Q.length>0)await q1(J,Q,W.folderContextMaxDepth)}catch(Q){console.error("[open-mem] Folder context update error:",Q)}}function D1($,J,W,X){return async(Q,Y)=>{try{let{tool:G,sessionID:_,callID:B}=Q,{output:H}=Y;if($.ignoredTools.includes(G))return;if(!H||H.length<$.minOutputLength)return;let M=H;for(let V of $.sensitivePatterns)try{M=M.replace(new RegExp(V,"g"),"[REDACTED]")}catch{}M=M.replace(/<private>[\s\S]*?<\/private>/g,"[PRIVATE]"),W.getOrCreate(_,X),J.enqueue(_,G,M,B)}catch(G){console.error("[open-mem] Tool capture error:",G)}}}import{embed as jJ}from"ai";async function $$($,J){try{let{embedding:W}=await jJ({model:$,value:J});return W}catch{return null}}function w1($,J){if($.length!==J.length||$.length===0)return 0;let W=0,X=0,Q=0;for(let G=0;G<$.length;G++)W+=$[G]*J[G],X+=$[G]*$[G],Q+=J[G]*J[G];let Y=Math.sqrt(X)*Math.sqrt(Q);if(Y===0)return 0;return W/Y}function F1($){let J=[$.title,$.narrative];if($.concepts.length>0)J.push($.concepts.join(", "));return J.join(`
|
|
348
|
+
`)}class I${config;compressor;summarizer;pendingRepo;observationRepo;sessionRepo;summaryRepo;embeddingModel;processing=!1;timer=null;mode="in-process";onEnqueue=null;constructor($,J,W,X,Q,Y,G,_=null){this.config=$;this.compressor=J;this.summarizer=W;this.pendingRepo=X;this.observationRepo=Q;this.sessionRepo=Y;this.summaryRepo=G;this.embeddingModel=_}setMode($){if(this.mode=$,$==="enqueue-only")this.stop()}getMode(){return this.mode}setOnEnqueue($){this.onEnqueue=$}enqueue($,J,W,X){if(this.pendingRepo.create({sessionId:$,toolName:J,toolOutput:W,callId:X}),this.mode==="enqueue-only")this.onEnqueue?.()}async processBatch(){if(this.mode==="enqueue-only")return 0;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 Q=await this.compressor.compress(W.toolName,W.toolOutput)??this.compressor.createFallbackObservation(W.toolName,W.toolOutput),Y=this.observationRepo.create({sessionId:W.sessionId,type:Q.type,title:Q.title,subtitle:Q.subtitle,facts:Q.facts,narrative:Q.narrative,concepts:Q.concepts,filesRead:Q.filesRead,filesModified:Q.filesModified,rawToolOutput:W.toolOutput,toolName:W.toolName,tokenCount:Z(`${Q.title} ${Q.narrative} ${Q.facts.join(" ")}`),discoveryTokens:Q.discoveryTokens??Z(W.toolOutput)});if(this.embeddingModel)try{let G=F1({title:Y.title,narrative:Y.narrative,concepts:Y.concepts}),_=await $$(this.embeddingModel,G);if(_)this.observationRepo.setEmbedding(Y.id,_)}catch{}this.sessionRepo.incrementObservationCount(W.sessionId),this.pendingRepo.markCompleted(W.id),$++}catch(X){this.pendingRepo.markFailed(W.id,String(X))}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 X=await this.summarizer.summarize($,J);if(!X)return;let Q=this.summaryRepo.create({sessionId:$,summary:X.summary,keyDecisions:X.keyDecisions,filesModified:X.filesModified,concepts:X.concepts,tokenCount:Z(X.summary)});this.sessionRepo.setSummary($,Q.id)}start(){if(this.mode==="enqueue-only")return;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}}}import{normalize as uJ,resolve as o1,sep as a1}from"path";var b$=($,J,W)=>{return(X,Q)=>{let Y=-1;return G(0);async function G(_){if(_<=Y)throw Error("next() called multiple times");Y=_;let B,H=!1,M;if($[_])M=$[_][0][0],X.req.routeIndex=_;else M=_===$.length&&Q||void 0;if(M)try{B=await M(X,()=>G(_+1))}catch(V){if(V instanceof Error&&J)X.error=V,B=await J(V,X),H=!0;else throw V}else if(X.finalized===!1&&W)B=await W(X);if(B&&(X.finalized===!1||H))X.res=B;return X}}};var R1=Symbol();var C1=async($,J=Object.create(null))=>{let{all:W=!1,dot:X=!1}=J,Y=($ instanceof J$?$.raw.headers:$.headers).get("Content-Type");if(Y?.startsWith("multipart/form-data")||Y?.startsWith("application/x-www-form-urlencoded"))return KJ($,{all:W,dot:X});return{}};async function KJ($,J){let W=await $.formData();if(W)return DJ(W,J);return{}}function DJ($,J){let W=Object.create(null);if($.forEach((X,Q)=>{if(!(J.all||Q.endsWith("[]")))W[Q]=X;else wJ(W,Q,X)}),J.dot)Object.entries(W).forEach(([X,Q])=>{if(X.includes("."))FJ(W,X,Q),delete W[X]});return W}var wJ=($,J,W)=>{if($[J]!==void 0)if(Array.isArray($[J]))$[J].push(W);else $[J]=[$[J],W];else if(!J.endsWith("[]"))$[J]=W;else $[J]=[W]},FJ=($,J,W)=>{let X=$,Q=J.split(".");Q.forEach((Y,G)=>{if(G===Q.length-1)X[Y]=W;else{if(!X[Y]||typeof X[Y]!=="object"||Array.isArray(X[Y])||X[Y]instanceof File)X[Y]=Object.create(null);X=X[Y]}})};var T$=($)=>{let J=$.split("/");if(J[0]==="")J.shift();return J},v1=($)=>{let{groups:J,path:W}=RJ($),X=T$(W);return CJ(X,J)},RJ=($)=>{let J=[];return $=$.replace(/\{[^}]+\}/g,(W,X)=>{let Q=`@${X}`;return J.push([Q,W]),Q}),{groups:J,path:$}},CJ=($,J)=>{for(let W=J.length-1;W>=0;W--){let[X]=J[W];for(let Q=$.length-1;Q>=0;Q--)if($[Q].includes(X)){$[Q]=$[Q].replace(X,J[W][1]);break}}return $},W$={},k1=($,J)=>{if($==="*")return"*";let W=$.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/);if(W){let X=`${$}#${J}`;if(!W$[X])if(W[2])W$[X]=J&&J[0]!==":"&&J[0]!=="*"?[X,W[1],new RegExp(`^${W[2]}(?=/${J})`)]:[$,W[1],new RegExp(`^${W[2]}$`)];else W$[X]=[$,W[1],!0];return W$[X]}return null},X$=($,J)=>{try{return J($)}catch{return $.replace(/(?:%[0-9A-Fa-f]{2})+/g,(W)=>{try{return J(W)}catch{return W}})}},vJ=($)=>X$($,decodeURI),g$=($)=>{let J=$.url,W=J.indexOf("/",J.indexOf(":")+4),X=W;for(;X<J.length;X++){let Q=J.charCodeAt(X);if(Q===37){let Y=J.indexOf("?",X),G=J.slice(W,Y===-1?void 0:Y);return vJ(G.includes("%25")?G.replace(/%25/g,"%2525"):G)}else if(Q===63)break}return J.slice(W,X)};var I1=($)=>{let J=g$($);return J.length>1&&J.at(-1)==="/"?J.slice(0,-1):J},_0=($,J,...W)=>{if(W.length)J=_0(J,...W);return`${$?.[0]==="/"?"":"/"}${$}${J==="/"?"":`${$?.at(-1)==="/"?"":"/"}${J?.[0]==="/"?J.slice(1):J}`}`},Q$=($)=>{if($.charCodeAt($.length-1)!==63||!$.includes(":"))return null;let J=$.split("/"),W=[],X="";return J.forEach((Q)=>{if(Q!==""&&!/\:/.test(Q))X+="/"+Q;else if(/\:/.test(Q))if(/\?/.test(Q)){if(W.length===0&&X==="")W.push("/");else W.push(X);let Y=Q.replace("?","");X+="/"+Y,W.push(X)}else X+="/"+Q}),W.filter((Q,Y,G)=>G.indexOf(Q)===Y)},P$=($)=>{if(!/[%+]/.test($))return $;if($.indexOf("+")!==-1)$=$.replace(/\+/g," ");return $.indexOf("%")!==-1?X$($,x$):$},b1=($,J,W)=>{let X;if(!W&&J&&!/[%+]/.test(J)){let G=$.indexOf("?",8);if(G===-1)return;if(!$.startsWith(J,G+1))G=$.indexOf(`&${J}`,G+1);while(G!==-1){let _=$.charCodeAt(G+J.length+1);if(_===61){let B=G+J.length+2,H=$.indexOf("&",B);return P$($.slice(B,H===-1?void 0:H))}else if(_==38||isNaN(_))return"";G=$.indexOf(`&${J}`,G+1)}if(X=/[%+]/.test($),!X)return}let Q={};X??=/[%+]/.test($);let Y=$.indexOf("?",8);while(Y!==-1){let G=$.indexOf("&",Y+1),_=$.indexOf("=",Y);if(_>G&&G!==-1)_=-1;let B=$.slice(Y+1,_===-1?G===-1?void 0:G:_);if(X)B=P$(B);if(Y=G,B==="")continue;let H;if(_===-1)H="";else if(H=$.slice(_+1,G===-1?void 0:G),X)H=P$(H);if(W){if(!(Q[B]&&Array.isArray(Q[B])))Q[B]=[];Q[B].push(H)}else Q[B]??=H}return J?Q[J]:Q},P1=b1,T1=($,J)=>{return b1($,J,!0)},x$=decodeURIComponent;var g1=($)=>X$($,x$),J$=class{raw;#$;#J;routeIndex=0;path;bodyCache={};constructor($,J="/",W=[[]]){this.raw=$,this.path=J,this.#J=W,this.#$={}}param($){return $?this.#W($):this.#Y()}#W($){let J=this.#J[0][this.routeIndex][1][$],W=this.#Q(J);return W&&/\%/.test(W)?g1(W):W}#Y(){let $={},J=Object.keys(this.#J[0][this.routeIndex][1]);for(let W of J){let X=this.#Q(this.#J[0][this.routeIndex][1][W]);if(X!==void 0)$[W]=/\%/.test(X)?g1(X):X}return $}#Q($){return this.#J[1]?this.#J[1][$]:$}query($){return P1(this.url,$)}queries($){return T1(this.url,$)}header($){if($)return this.raw.headers.get($)??void 0;let J={};return this.raw.headers.forEach((W,X)=>{J[X]=W}),J}async parseBody($){return this.bodyCache.parsedBody??=await C1(this,$)}#X=($)=>{let{bodyCache:J,raw:W}=this,X=J[$];if(X)return X;let Q=Object.keys(J)[0];if(Q)return J[Q].then((Y)=>{if(Q==="json")Y=JSON.stringify(Y);return new Response(Y)[$]()});return J[$]=W[$]()};json(){return this.#X("text").then(($)=>JSON.parse($))}text(){return this.#X("text")}arrayBuffer(){return this.#X("arrayBuffer")}blob(){return this.#X("blob")}formData(){return this.#X("formData")}addValidatedData($,J){this.#$[$]=J}valid($){return this.#$[$]}get url(){return this.raw.url}get method(){return this.raw.method}get[R1](){return this.#J}get matchedRoutes(){return this.#J[0].map(([[,$]])=>$)}get routePath(){return this.#J[0].map(([[,$]])=>$)[this.routeIndex].path}};var Y$={Stringify:1,BeforeStream:2,Stream:3},kJ=($,J)=>{let W=new String($);return W.isEscaped=!0,W.callbacks=J,W};var g0=async($,J,W,X,Q)=>{if(typeof $==="object"&&!($ instanceof String)){if(!($ instanceof Promise))$=$.toString();if($ instanceof Promise)$=await $}let Y=$.callbacks;if(!Y?.length)return Promise.resolve($);if(Q)Q[0]+=$;else Q=[$];let G=Promise.all(Y.map((_)=>_({phase:J,buffer:Q,context:X}))).then((_)=>Promise.all(_.filter(Boolean).map((B)=>g0(B,J,!1,X,Q))).then(()=>Q[0]));if(W)return kJ(await G,Y);else return G};var x1="text/plain; charset=UTF-8",h$=($,J)=>{return{"Content-Type":$,...J}},h1=class{#$;#J;env={};#W;finalized=!1;error;#Y;#Q;#X;#M;#B;#H;#_;#z;#f;constructor($,J){if(this.#$=$,J)this.#Q=J.executionCtx,this.env=J.env,this.#H=J.notFoundHandler,this.#f=J.path,this.#z=J.matchResult}get req(){return this.#J??=new J$(this.#$,this.#f,this.#z),this.#J}get event(){if(this.#Q&&"respondWith"in this.#Q)return this.#Q;else throw Error("This context has no FetchEvent")}get executionCtx(){if(this.#Q)return this.#Q;else throw Error("This context has no ExecutionContext")}get res(){return this.#X||=new Response(null,{headers:this.#_??=new Headers})}set res($){if(this.#X&&$){$=new Response($.body,$);for(let[J,W]of this.#X.headers.entries()){if(J==="content-type")continue;if(J==="set-cookie"){let X=this.#X.headers.getSetCookie();$.headers.delete("set-cookie");for(let Q of X)$.headers.append("set-cookie",Q)}else $.headers.set(J,W)}}this.#X=$,this.finalized=!0}render=(...$)=>{return this.#B??=(J)=>this.html(J),this.#B(...$)};setLayout=($)=>this.#M=$;getLayout=()=>this.#M;setRenderer=($)=>{this.#B=$};header=($,J,W)=>{if(this.finalized)this.#X=new Response(this.#X.body,this.#X);let X=this.#X?this.#X.headers:this.#_??=new Headers;if(J===void 0)X.delete($);else if(W?.append)X.append($,J);else X.set($,J)};status=($)=>{this.#Y=$};set=($,J)=>{this.#W??=new Map,this.#W.set($,J)};get=($)=>{return this.#W?this.#W.get($):void 0};get var(){if(!this.#W)return{};return Object.fromEntries(this.#W)}#G($,J,W){let X=this.#X?new Headers(this.#X.headers):this.#_??new Headers;if(typeof J==="object"&&"headers"in J){let Y=J.headers instanceof Headers?J.headers:new Headers(J.headers);for(let[G,_]of Y)if(G.toLowerCase()==="set-cookie")X.append(G,_);else X.set(G,_)}if(W)for(let[Y,G]of Object.entries(W))if(typeof G==="string")X.set(Y,G);else{X.delete(Y);for(let _ of G)X.append(Y,_)}let Q=typeof J==="number"?J:J?.status??this.#Y;return new Response($,{status:Q,headers:X})}newResponse=(...$)=>this.#G(...$);body=($,J,W)=>this.#G($,J,W);text=($,J,W)=>{return!this.#_&&!this.#Y&&!J&&!W&&!this.finalized?new Response($):this.#G($,J,h$(x1,W))};json=($,J,W)=>{return this.#G(JSON.stringify($),J,h$("application/json",W))};html=($,J,W)=>{let X=(Q)=>this.#G(Q,J,h$("text/html; charset=UTF-8",W));return typeof $==="object"?g0($,Y$.Stringify,!1,{}).then(X):X($)};redirect=($,J)=>{let W=String($);return this.header("Location",!/[^\x00-\xFF]/.test(W)?W:encodeURI(W)),this.newResponse(null,J??302)};notFound=()=>{return this.#H??=()=>new Response,this.#H(this)}};var C="ALL",Z1="all",y1=["get","post","put","delete","options","patch"],G$="Can not add a route since the matcher is already built.",_$=class extends Error{};var m1="__COMPOSED_HANDLER";var IJ=($)=>{return $.text("404 Not Found",404)},l1=($,J)=>{if("getResponse"in $){let W=$.getResponse();return J.newResponse(W.body,W)}return console.error($),J.text("Internal Server Error",500)},c1=class ${get;post;put;delete;options;patch;all;on;use;router;getPath;_basePath="/";#$="/";routes=[];constructor(J={}){[...y1,Z1].forEach((Y)=>{this[Y]=(G,..._)=>{if(typeof G==="string")this.#$=G;else this.#Y(Y,this.#$,G);return _.forEach((B)=>{this.#Y(Y,this.#$,B)}),this}}),this.on=(Y,G,..._)=>{for(let B of[G].flat()){this.#$=B;for(let H of[Y].flat())_.map((M)=>{this.#Y(H.toUpperCase(),this.#$,M)})}return this},this.use=(Y,...G)=>{if(typeof Y==="string")this.#$=Y;else this.#$="*",G.unshift(Y);return G.forEach((_)=>{this.#Y(C,this.#$,_)}),this};let{strict:X,...Q}=J;Object.assign(this,Q),this.getPath=X??!0?J.getPath??g$:I1}#J(){let J=new $({router:this.router,getPath:this.getPath});return J.errorHandler=this.errorHandler,J.#W=this.#W,J.routes=this.routes,J}#W=IJ;errorHandler=l1;route(J,W){let X=this.basePath(J);return W.routes.map((Q)=>{let Y;if(W.errorHandler===l1)Y=Q.handler;else Y=async(G,_)=>(await b$([],W.errorHandler)(G,()=>Q.handler(G,_))).res,Y[m1]=Q.handler;X.#Y(Q.method,Q.path,Y)}),this}basePath(J){let W=this.#J();return W._basePath=_0(this._basePath,J),W}onError=(J)=>{return this.errorHandler=J,this};notFound=(J)=>{return this.#W=J,this};mount(J,W,X){let Q,Y;if(X)if(typeof X==="function")Y=X;else if(Y=X.optionHandler,X.replaceRequest===!1)Q=(B)=>B;else Q=X.replaceRequest;let G=Y?(B)=>{let H=Y(B);return Array.isArray(H)?H:[H]}:(B)=>{let H=void 0;try{H=B.executionCtx}catch{}return[B.env,H]};Q||=(()=>{let B=_0(this._basePath,J),H=B==="/"?0:B.length;return(M)=>{let V=new URL(M.url);return V.pathname=V.pathname.slice(H)||"/",new Request(V,M)}})();let _=async(B,H)=>{let M=await W(Q(B.req.raw),...G(B));if(M)return M;await H()};return this.#Y(C,_0(J,"*"),_),this}#Y(J,W,X){J=J.toUpperCase(),W=_0(this._basePath,W);let Q={basePath:this._basePath,path:W,method:J,handler:X};this.router.add(J,W,[X,Q]),this.routes.push(Q)}#Q(J,W){if(J instanceof Error)return this.errorHandler(J,W);throw J}#X(J,W,X,Q){if(Q==="HEAD")return(async()=>new Response(null,await this.#X(J,W,X,"GET")))();let Y=this.getPath(J,{env:X}),G=this.router.match(Q,Y),_=new h1(J,{path:Y,matchResult:G,env:X,executionCtx:W,notFoundHandler:this.#W});if(G[0].length===1){let H;try{H=G[0][0][0][0](_,async()=>{_.res=await this.#W(_)})}catch(M){return this.#Q(M,_)}return H instanceof Promise?H.then((M)=>M||(_.finalized?_.res:this.#W(_))).catch((M)=>this.#Q(M,_)):H??this.#W(_)}let B=b$(G[0],this.errorHandler,this.#W);return(async()=>{try{let H=await B(_);if(!H.finalized)throw Error("Context is not finalized. Did you forget to return a Response object or `await next()`?");return H.res}catch(H){return this.#Q(H,_)}})()}fetch=(J,...W)=>{return this.#X(J,W[1],W[0],J.method)};request=(J,W,X,Q)=>{if(J instanceof Request)return this.fetch(W?new Request(J,W):J,X,Q);return J=J.toString(),this.fetch(new Request(/^https?:\/\//.test(J)?J:`http://localhost${_0("/",J)}`,W),X,Q)};fire=()=>{addEventListener("fetch",(J)=>{J.respondWith(this.#X(J.request,J,void 0,J.request.method))})}};var x0=[];function B$($,J){let W=this.buildAllMatchers(),X=(Q,Y)=>{let G=W[Q]||W[C],_=G[2][Y];if(_)return _;let B=Y.match(G[0]);if(!B)return[[],x0];let H=B.indexOf("",1);return[G[1][H],B]};return this.match=X,X($,J)}var H$="[^/]+",h0=".*",Z0="(?:|/.*)",B0=Symbol(),bJ=new Set(".\\+*[^]$()");function PJ($,J){if($.length===1)return J.length===1?$<J?-1:1:-1;if(J.length===1)return 1;if($===h0||$===Z0)return 1;else if(J===h0||J===Z0)return-1;if($===H$)return 1;else if(J===H$)return-1;return $.length===J.length?$<J?-1:1:J.length-$.length}var u1=class ${#$;#J;#W=Object.create(null);insert(J,W,X,Q,Y){if(J.length===0){if(this.#$!==void 0)throw B0;if(Y)return;this.#$=W;return}let[G,..._]=J,B=G==="*"?_.length===0?["","",h0]:["","",H$]:G==="/*"?["","",Z0]:G.match(/^\:([^\{\}]+)(?:\{(.+)\})?$/),H;if(B){let M=B[1],V=B[2]||H$;if(M&&B[2]){if(V===".*")throw B0;if(V=V.replace(/^\((?!\?:)(?=[^)]+\)$)/,"(?:"),/\((?!\?:)/.test(V))throw B0}if(H=this.#W[V],!H){if(Object.keys(this.#W).some((N)=>N!==h0&&N!==Z0))throw B0;if(Y)return;if(H=this.#W[V]=new $,M!=="")H.#J=Q.varIndex++}if(!Y&&M!=="")X.push([M,H.#J])}else if(H=this.#W[G],!H){if(Object.keys(this.#W).some((M)=>M.length>1&&M!==h0&&M!==Z0))throw B0;if(Y)return;H=this.#W[G]=new $}H.insert(_,W,X,Q,Y)}buildRegExpStr(){let W=Object.keys(this.#W).sort(PJ).map((X)=>{let Q=this.#W[X];return(typeof Q.#J==="number"?`(${X})@${Q.#J}`:bJ.has(X)?`\\${X}`:X)+Q.buildRegExpStr()});if(typeof this.#$==="number")W.unshift(`#${this.#$}`);if(W.length===0)return"";if(W.length===1)return W[0];return"(?:"+W.join("|")+")"}};var p1=class{#$={varIndex:0};#J=new u1;insert($,J,W){let X=[],Q=[];for(let G=0;;){let _=!1;if($=$.replace(/\{[^}]+\}/g,(B)=>{let H=`@\\${G}`;return Q[G]=[H,B],G++,_=!0,H}),!_)break}let Y=$.match(/(?::[^\/]+)|(?:\/\*$)|./g)||[];for(let G=Q.length-1;G>=0;G--){let[_]=Q[G];for(let B=Y.length-1;B>=0;B--)if(Y[B].indexOf(_)!==-1){Y[B]=Y[B].replace(_,Q[G][1]);break}}return this.#J.insert(Y,J,X,this.#$,W),X}buildRegExp(){let $=this.#J.buildRegExpStr();if($==="")return[/^$/,[],[]];let J=0,W=[],X=[];return $=$.replace(/#(\d+)|@(\d+)|\.\*\$/g,(Q,Y,G)=>{if(Y!==void 0)return W[++J]=Number(Y),"$()";if(G!==void 0)return X[Number(G)]=++J,"";return""}),[new RegExp(`^${$}`),W,X]}};var TJ=[/^$/,[],Object.create(null)],n1=Object.create(null);function i1($){return n1[$]??=new RegExp($==="*"?"":`^${$.replace(/\/\*$|([.\\+*[^\]$()])/g,(J,W)=>W?`\\${W}`:"(?:|/.*)")}$`)}function gJ(){n1=Object.create(null)}function xJ($){let J=new p1,W=[];if($.length===0)return TJ;let X=$.map((H)=>[!/\*|\/:/.test(H[0]),...H]).sort(([H,M],[V,N])=>H?1:V?-1:M.length-N.length),Q=Object.create(null);for(let H=0,M=-1,V=X.length;H<V;H++){let[N,E,f]=X[H];if(N)Q[E]=[f.map(([F])=>[F,Object.create(null)]),x0];else M++;let q;try{q=J.insert(E,M,N)}catch(F){throw F===B0?new _$(E):F}if(N)continue;W[M]=f.map(([F,R])=>{let g=Object.create(null);R-=1;for(;R>=0;R--){let[b,x]=q[R];g[b]=x}return[F,g]})}let[Y,G,_]=J.buildRegExp();for(let H=0,M=W.length;H<M;H++)for(let V=0,N=W[H].length;V<N;V++){let E=W[H][V]?.[1];if(!E)continue;let f=Object.keys(E);for(let q=0,F=f.length;q<F;q++)E[f[q]]=_[E[f[q]]]}let B=[];for(let H in G)B[H]=W[G[H]];return[Y,B,Q]}function N0($,J){if(!$)return;for(let W of Object.keys($).sort((X,Q)=>Q.length-X.length))if(i1(W).test(J))return[...$[W]];return}var M$=class{name="RegExpRouter";#$;#J;constructor(){this.#$={[C]:Object.create(null)},this.#J={[C]:Object.create(null)}}add($,J,W){let X=this.#$,Q=this.#J;if(!X||!Q)throw Error(G$);if(!X[$])[X,Q].forEach((_)=>{_[$]=Object.create(null),Object.keys(_[C]).forEach((B)=>{_[$][B]=[..._[C][B]]})});if(J==="/*")J="*";let Y=(J.match(/\/:/g)||[]).length;if(/\*$/.test(J)){let _=i1(J);if($===C)Object.keys(X).forEach((B)=>{X[B][J]||=N0(X[B],J)||N0(X[C],J)||[]});else X[$][J]||=N0(X[$],J)||N0(X[C],J)||[];Object.keys(X).forEach((B)=>{if($===C||$===B)Object.keys(X[B]).forEach((H)=>{_.test(H)&&X[B][H].push([W,Y])})}),Object.keys(Q).forEach((B)=>{if($===C||$===B)Object.keys(Q[B]).forEach((H)=>_.test(H)&&Q[B][H].push([W,Y]))});return}let G=Q$(J)||[J];for(let _=0,B=G.length;_<B;_++){let H=G[_];Object.keys(Q).forEach((M)=>{if($===C||$===M)Q[M][H]||=[...N0(X[M],H)||N0(X[C],H)||[]],Q[M][H].push([W,Y-B+_+1])})}}match=B$;buildAllMatchers(){let $=Object.create(null);return Object.keys(this.#J).concat(Object.keys(this.#$)).forEach((J)=>{$[J]||=this.#W(J)}),this.#$=this.#J=void 0,gJ(),$}#W($){let J=[],W=$===C;if([this.#$,this.#J].forEach((X)=>{let Q=X[$]?Object.keys(X[$]).map((Y)=>[Y,X[$][Y]]):[];if(Q.length!==0)W||=!0,J.push(...Q);else if($!==C)J.push(...Object.keys(X[C]).map((Y)=>[Y,X[C][Y]]))}),!W)return null;else return xJ(J)}};var hJ=class{name="PreparedRegExpRouter";#$;#J;constructor($,J){this.#$=$,this.#J=J}#W($,J){let W=this.#$[$];W[1].forEach((X)=>X&&X.push(J)),Object.values(W[2]).forEach((X)=>X[0].push(J))}#Y($,J,W,X,Q){let Y=this.#$[$];if(!Q)Y[2][J][0].push([W,{}]);else X.forEach((G)=>{if(typeof G==="number")Y[1][G].push([W,Q]);else Y[2][G||J][0].push([W,Q])})}add($,J,W){if(!this.#$[$]){let Q=this.#$[C],Y={};for(let G in Q[2])Y[G]=[Q[2][G][0].slice(),x0];this.#$[$]=[Q[0],Q[1].map((G)=>Array.isArray(G)?G.slice():0),Y]}if(J==="/*"||J==="*"){let Q=[W,{}];if($===C)for(let Y in this.#$)this.#W(Y,Q);else this.#W($,Q);return}let X=this.#J[J];if(!X)throw Error(`Path ${J} is not registered`);for(let[Q,Y]of X)if($===C)for(let G in this.#$)this.#Y(G,J,W,Q,Y);else this.#Y($,J,W,Q,Y)}buildAllMatchers(){return this.#$}match=B$};var Z$=class{name="SmartRouter";#$=[];#J=[];constructor($){this.#$=$.routers}add($,J,W){if(!this.#J)throw Error(G$);this.#J.push([$,J,W])}match($,J){if(!this.#J)throw Error("Fatal error");let W=this.#$,X=this.#J,Q=W.length,Y=0,G;for(;Y<Q;Y++){let _=W[Y];try{for(let B=0,H=X.length;B<H;B++)_.add(...X[B]);G=_.match($,J)}catch(B){if(B instanceof _$)continue;throw B}this.match=_.match.bind(_),this.#$=[_],this.#J=void 0;break}if(Y===Q)throw Error("Fatal error");return this.name=`SmartRouter + ${this.activeRouter.name}`,G}get activeRouter(){if(this.#J||this.#$.length!==1)throw Error("No active router has been determined yet.");return this.#$[0]}};var y0=Object.create(null),r1=class ${#$;#J;#W;#Y=0;#Q=y0;constructor(J,W,X){if(this.#J=X||Object.create(null),this.#$=[],J&&W){let Q=Object.create(null);Q[J]={handler:W,possibleKeys:[],score:0},this.#$=[Q]}this.#W=[]}insert(J,W,X){this.#Y=++this.#Y;let Q=this,Y=v1(W),G=[];for(let _=0,B=Y.length;_<B;_++){let H=Y[_],M=Y[_+1],V=k1(H,M),N=Array.isArray(V)?V[0]:H;if(N in Q.#J){if(Q=Q.#J[N],V)G.push(V[1]);continue}if(Q.#J[N]=new $,V)Q.#W.push(V),G.push(V[1]);Q=Q.#J[N]}return Q.#$.push({[J]:{handler:X,possibleKeys:G.filter((_,B,H)=>H.indexOf(_)===B),score:this.#Y}}),Q}#X(J,W,X,Q){let Y=[];for(let G=0,_=J.#$.length;G<_;G++){let B=J.#$[G],H=B[W]||B[C],M={};if(H!==void 0){if(H.params=Object.create(null),Y.push(H),X!==y0||Q&&Q!==y0)for(let V=0,N=H.possibleKeys.length;V<N;V++){let E=H.possibleKeys[V],f=M[H.score];H.params[E]=Q?.[E]&&!f?Q[E]:X[E]??Q?.[E],M[H.score]=!0}}}return Y}search(J,W){let X=[];this.#Q=y0;let Y=[this],G=T$(W),_=[];for(let B=0,H=G.length;B<H;B++){let M=G[B],V=B===H-1,N=[];for(let E=0,f=Y.length;E<f;E++){let q=Y[E],F=q.#J[M];if(F)if(F.#Q=q.#Q,V){if(F.#J["*"])X.push(...this.#X(F.#J["*"],J,q.#Q));X.push(...this.#X(F,J,q.#Q))}else N.push(F);for(let R=0,g=q.#W.length;R<g;R++){let b=q.#W[R],x=q.#Q===y0?{}:{...q.#Q};if(b==="*"){let p=q.#J["*"];if(p)X.push(...this.#X(p,J,q.#Q)),p.#Q=x,N.push(p);continue}let[O0,Q0,d]=b;if(!M&&!(d instanceof RegExp))continue;let h=q.#J[O0],U$=G.slice(B).join("/");if(d instanceof RegExp){let p=d.exec(U$);if(p){if(x[Q0]=p[0],X.push(...this.#X(h,J,q.#Q,x)),Object.keys(h.#J).length){h.#Q=x;let Y0=p[0].match(/\//)?.length??0;(_[Y0]||=[]).push(h)}continue}}if(d===!0||d.test(M))if(x[Q0]=M,V){if(X.push(...this.#X(h,J,x,q.#Q)),h.#J["*"])X.push(...this.#X(h.#J["*"],J,x,q.#Q))}else h.#Q=x,N.push(h)}}Y=N.concat(_.shift()??[])}if(X.length>1)X.sort((B,H)=>{return B.score-H.score});return[X.map(({handler:B,params:H})=>[B,H])]}};var y$=class{name="TrieRouter";#$;constructor(){this.#$=new r1}add($,J,W){let X=Q$(J);if(X){for(let Q=0,Y=X.length;Q<Y;Q++)this.#$.insert($,X[Q],W);return}this.#$.insert($,J,W)}match($,J){return this.#$.search($,J)}};var m$=class extends c1{constructor($={}){super($);this.router=$.router??new Z$({routers:[new M$,new y$]})}};var d1=60;async function z$($,J,W,X){let Q=X.limit??10,Y=ZJ(J,$,X.type,Q);if(!W)return Y;let G=await $$(W,$);if(!G)return Y;let _=Y.map((H)=>H.observation.id),B=yJ(J,G,X.projectPath,X.type,Q,X.hasVectorExtension??!1,_);if(B.length===0)return Y;return cJ(Y,B,Q)}function ZJ($,J,W,X){try{return $.search({query:J,type:W,limit:X})}catch{return[]}}function yJ($,J,W,X,Q,Y,G){if(Y)return mJ($,J,X,Q,G);return lJ($,J,W,X,Q)}function mJ($,J,W,X,Q){try{let Y;if(Q.length>0){if(Y=$.searchVecSubset(J,Q,X*3),Y.length===0)Y=$.getVecEmbeddingMatches(J,X*3)}else Y=$.getVecEmbeddingMatches(J,X*3);if(Y.length===0)return[];let G=[];for(let{observationId:_,distance:B}of Y){if(G.length>=X)break;let H=$.getById(_);if(!H)continue;if(W&&H.type!==W)continue;G.push({observation:H,rank:B-1,snippet:H.title})}return G}catch{return[]}}function lJ($,J,W,X,Q){let Y=$.getWithEmbeddings(W,Q*10);if(Y.length===0)return[];let G=Y.map((B)=>({id:B.id,similarity:w1(J,B.embedding)})).filter(({similarity:B})=>B>=0.3).sort((B,H)=>H.similarity-B.similarity),_=[];for(let{id:B,similarity:H}of G){if(_.length>=Q)break;let M=$.getById(B);if(!M)continue;if(X&&M.type!==X)continue;_.push({observation:M,rank:-H,snippet:M.title})}return _}function cJ($,J,W){let X=new Map;for(let Q=0;Q<$.length;Q++){let Y=$[Q],G=1/(d1+Q+1);X.set(Y.observation.id,{score:G,result:Y})}for(let Q=0;Q<J.length;Q++){let Y=J[Q],G=1/(d1+Q+1),_=X.get(Y.observation.id);if(_)_.score+=G;else X.set(Y.observation.id,{score:G,result:Y})}return[...X.values()].sort((Q,Y)=>Y.score-Q.score).slice(0,W).map(({result:Q})=>Q)}var pJ=new Set(["decision","bugfix","feature","refactor","discovery","change"]);function l$($,J,W=100){if(!$)return J;let X=Number.parseInt($,10);if(Number.isNaN(X))return J;return Math.max(1,Math.min(X,W))}function nJ($){if(!$)return 0;let J=Number.parseInt($,10);if(Number.isNaN(J))return 0;return Math.max(0,J)}function s1($){if(!$)return;if(pJ.has($))return $;return}function iJ($){let J={};for(let[W,X]of Object.entries($)){let Q=W.toLowerCase();if(typeof X==="string"&&(Q.includes("key")||Q.includes("api")))J[W]="***REDACTED***";else J[W]=X}return J}function t1($){let{observationRepo:J,sessionRepo:W,summaryRepo:X,config:Q,projectPath:Y,embeddingModel:G,dashboardDir:_}=$,B=new m$;if(B.get("/api/observations",(H)=>{let M=l$(H.req.query("limit"),50),V=nJ(H.req.query("offset")),N=s1(H.req.query("type")),E=H.req.query("sessionId");if(E){let R=J.getBySession(E);if(N)R=R.filter((b)=>b.type===N);let g=R.slice(V,V+M);return H.json(g)}let q=J.getIndex(Y,V+M).slice(V);if(N)q=q.filter((R)=>R.type===N);let F=q.map((R)=>J.getById(R.id)).filter((R)=>R!==null);return H.json(F)}),B.get("/api/observations/:id",(H)=>{let M=H.req.param("id"),V=J.getById(M);if(!V)return H.json({error:"Observation not found"},404);return H.json(V)}),B.get("/api/sessions",(H)=>{let M=l$(H.req.query("limit"),20),V=H.req.query("projectPath")||Y,N=W.getRecent(V,M);return H.json(N)}),B.get("/api/sessions/:id",(H)=>{let M=H.req.param("id"),V=W.getById(M);if(!V)return H.json({error:"Session not found"},404);let N=J.getBySession(M);return H.json({...V,observations:N})}),B.get("/api/search",async(H)=>{let M=H.req.query("q");if(!M)return H.json({error:"Query parameter 'q' is required"},400);let V=s1(H.req.query("type")),N=l$(H.req.query("limit"),20);try{if(G){let f=await z$(M,J,G,{type:V,limit:N,projectPath:Y});return H.json(f)}let E=J.search({query:M,type:V,limit:N});return H.json(E)}catch{return H.json([],200)}}),B.get("/api/stats",(H)=>{let M=J.getCount(),N=W.getAll(Y).length,E=J.getIndex(Y,1e4),f=0,q=0,F={};for(let b of E)f+=b.tokenCount,q+=b.discoveryTokens,F[b.type]=(F[b.type]||0)+1;let R=q-f,g=E.length>0?Math.round(f/E.length):0;return H.json({totalObservations:M,totalSessions:N,totalTokensSaved:R,averageObservationSize:g,typeBreakdown:F})}),B.get("/api/config",(H)=>{return H.json(iJ(Q))}),$.sseHandler)B.get("/api/events",$.sseHandler);return B.get("*",async(H)=>{let M=H.req.path;if(M.startsWith("/api/"))return H.json({error:"Not found"},404);let V=_??new URL("../../dist/dashboard/",import.meta.url).pathname,N=uJ(V),E=N.endsWith(a1)?N:N+a1,f=M==="/"?"index.html":M.replace(/^\//,""),q=o1(V,f);if(!q.startsWith(E))return H.json({error:"Not found"},404);try{let R=Bun.file(q);if(await R.exists())return new Response(R)}catch{}let F=o1(V,"index.html");if(!F.startsWith(E))return H.json({error:"Not found"},404);try{let R=Bun.file(F);if(await R.exists())return new Response(R,{headers:{"Content-Type":"text/html; charset=utf-8"}})}catch{}return H.json({error:"Dashboard not found. Run the dashboard build first."},404)}),B}var c$=class{writer;encoder;writable;abortSubscribers=[];responseReadable;aborted=!1;closed=!1;constructor($,J){this.writable=$,this.writer=$.getWriter(),this.encoder=new TextEncoder;let W=J.getReader();this.abortSubscribers.push(async()=>{await W.cancel()}),this.responseReadable=new ReadableStream({async pull(X){let{done:Q,value:Y}=await W.read();Q?X.close():X.enqueue(Y)},cancel:()=>{this.abort()}})}async write($){try{if(typeof $==="string")$=this.encoder.encode($);await this.writer.write($)}catch{}return this}async writeln($){return await this.write($+`
|
|
349
|
+
`),this}sleep($){return new Promise((J)=>setTimeout(J,$))}async close(){try{await this.writer.close()}catch{}this.closed=!0}async pipe($){this.writer.releaseLock(),await $.pipeTo(this.writable,{preventClose:!0}),this.writer=this.writable.getWriter()}onAbort($){this.abortSubscribers.push($)}abort(){if(!this.aborted)this.aborted=!0,this.abortSubscribers.forEach(($)=>$())}};var f$=()=>{let $=typeof Bun<"u"?Bun.version:void 0;if($===void 0)return!1;let J=$.startsWith("1.1")||$.startsWith("1.0")||$.startsWith("0.");return f$=()=>J,J};var e1=class extends c${constructor($,J){super($,J)}async writeSSE($){let W=(await g0($.data,Y$.Stringify,!1,{})).split(/\r\n|\r|\n/).map((Q)=>{return`data: ${Q}`}).join(`
|
|
350
350
|
`),X=[$.event&&`event: ${$.event}`,W,$.id&&`id: ${$.id}`,$.retry&&`retry: ${$.retry}`].filter(Boolean).join(`
|
|
351
351
|
`)+`
|
|
352
352
|
|
|
353
|
-
`;await this.write(X)}},nJ=async($,J,W)=>{try{await J($)}catch(X){if(X instanceof Error&&W)await W(X,$),await $.writeSSE({event:"error",data:X.message});else console.error(X)}finally{$.close()}},iJ=new WeakMap,m$=($,J,W)=>{let{readable:X,writable:Q}=new TransformStream,Y=new s1(Q,X);if(z$())$.req.raw.signal.addEventListener("abort",()=>{if(!Y.closed)Y.abort()});return iJ.set(Y.responseReadable,$),$.header("Transfer-Encoding","chunked"),$.header("Content-Type","text/event-stream"),$.header("Cache-Control","no-cache"),$.header("Connection","keep-alive"),nJ(Y,J,W),$.newResponse(Y.responseReadable)};class c${eventBus;clients=new Set;cleanups=[];constructor($){this.eventBus=$;this.subscribeToAll()}addClient($){this.clients.add($)}removeClient($){this.clients.delete($)}get clientCount(){return this.clients.size}destroy(){for(let $ of this.cleanups)$();this.cleanups=[],this.clients.clear()}subscribeToAll(){let $=["observation:created","observation:updated","session:started","session:ended","summary:created","pending:enqueued","pending:processed"];for(let J of $){let W=(X)=>{this.broadcast(J,X)};this.eventBus.on(J,W),this.cleanups.push(()=>{this.eventBus.off(J,W)})}}broadcast($,J){let W=JSON.stringify(J);for(let X of this.clients)try{let Q=X($,W);if(Q&&typeof Q.catch==="function")Q.catch(()=>this.clients.delete(X))}catch{this.clients.delete(X)}}}var dJ=30000;function t1($){return(J)=>{return m$(J,async(W)=>{let X=(Y,G)=>{W.writeSSE({event:Y,data:G,id:Date.now().toString()})};$.addClient(X);let Q=setInterval(()=>{W.writeSSE({event:"heartbeat",data:"",id:Date.now().toString()})},dJ);W.onAbort(()=>{$.removeClient(X),clearInterval(Q)});while(!W.aborted)await W.sleep(1000)})}}var w={};k2(w,{void:()=>bW,util:()=>D,unknown:()=>kW,union:()=>xW,undefined:()=>RW,tuple:()=>yW,transformer:()=>oW,symbol:()=>FW,string:()=>_2,strictObject:()=>gW,setErrorMap:()=>sJ,set:()=>cW,record:()=>lW,quotelessJson:()=>oJ,promise:()=>dW,preprocess:()=>tW,pipeline:()=>eW,ostring:()=>$8,optional:()=>aW,onumber:()=>J8,oboolean:()=>W8,objectUtil:()=>u$,object:()=>TW,number:()=>B2,nullable:()=>sW,null:()=>CW,never:()=>IW,nativeEnum:()=>rW,nan:()=>KW,map:()=>mW,makeIssue:()=>Z0,literal:()=>nW,lazy:()=>pW,late:()=>LW,isValid:()=>e,isDirty:()=>S$,isAsync:()=>N0,isAborted:()=>f$,intersection:()=>ZW,instanceof:()=>qW,getParsedType:()=>n,getErrorMap:()=>O0,function:()=>uW,enum:()=>iW,effect:()=>oW,discriminatedUnion:()=>hW,defaultErrorMap:()=>d,datetimeRegex:()=>Q2,date:()=>wW,custom:()=>G2,coerce:()=>X8,boolean:()=>H2,bigint:()=>DW,array:()=>PW,any:()=>vW,addIssueToContext:()=>O,ZodVoid:()=>l0,ZodUnknown:()=>$0,ZodUnion:()=>q0,ZodUndefined:()=>j0,ZodType:()=>K,ZodTuple:()=>r,ZodTransformer:()=>p,ZodSymbol:()=>y0,ZodString:()=>l,ZodSet:()=>M0,ZodSchema:()=>K,ZodRecord:()=>m0,ZodReadonly:()=>v0,ZodPromise:()=>z0,ZodPipeline:()=>p0,ZodParsedType:()=>S,ZodOptional:()=>c,ZodObject:()=>v,ZodNumber:()=>J0,ZodNullable:()=>a,ZodNull:()=>L0,ZodNever:()=>i,ZodNativeEnum:()=>F0,ZodNaN:()=>u0,ZodMap:()=>c0,ZodLiteral:()=>w0,ZodLazy:()=>D0,ZodIssueCode:()=>z,ZodIntersection:()=>K0,ZodFunction:()=>A0,ZodFirstPartyTypeKind:()=>j,ZodError:()=>g,ZodEnum:()=>X0,ZodEffects:()=>p,ZodDiscriminatedUnion:()=>V$,ZodDefault:()=>R0,ZodDate:()=>B0,ZodCatch:()=>C0,ZodBranded:()=>O$,ZodBoolean:()=>E0,ZodBigInt:()=>W0,ZodArray:()=>m,ZodAny:()=>H0,Schema:()=>K,ParseStatus:()=>I,OK:()=>b,NEVER:()=>Q8,INVALID:()=>E,EMPTY_PATH:()=>tJ,DIRTY:()=>_0,BRAND:()=>jW});var D;(function($){$.assertEqual=(Q)=>{};function J(Q){}$.assertIs=J;function W(Q){throw Error()}$.assertNever=W,$.arrayToEnum=(Q)=>{let Y={};for(let G of Q)Y[G]=G;return Y},$.getValidEnumValues=(Q)=>{let Y=$.objectKeys(Q).filter((_)=>typeof Q[Q[_]]!=="number"),G={};for(let _ of Y)G[_]=Q[_];return $.objectValues(G)},$.objectValues=(Q)=>{return $.objectKeys(Q).map(function(Y){return Q[Y]})},$.objectKeys=typeof Object.keys==="function"?(Q)=>Object.keys(Q):(Q)=>{let Y=[];for(let G in Q)if(Object.prototype.hasOwnProperty.call(Q,G))Y.push(G);return Y},$.find=(Q,Y)=>{for(let G of Q)if(Y(G))return G;return},$.isInteger=typeof Number.isInteger==="function"?(Q)=>Number.isInteger(Q):(Q)=>typeof Q==="number"&&Number.isFinite(Q)&&Math.floor(Q)===Q;function X(Q,Y=" | "){return Q.map((G)=>typeof G==="string"?`'${G}'`:G).join(Y)}$.joinValues=X,$.jsonStringifyReplacer=(Q,Y)=>{if(typeof Y==="bigint")return Y.toString();return Y}})(D||(D={}));var u$;(function($){$.mergeShapes=(J,W)=>{return{...J,...W}}})(u$||(u$={}));var S=D.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),n=($)=>{switch(typeof $){case"undefined":return S.undefined;case"string":return S.string;case"number":return Number.isNaN($)?S.nan:S.number;case"boolean":return S.boolean;case"function":return S.function;case"bigint":return S.bigint;case"symbol":return S.symbol;case"object":if(Array.isArray($))return S.array;if($===null)return S.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return S.promise;if(typeof Map<"u"&&$ instanceof Map)return S.map;if(typeof Set<"u"&&$ instanceof Set)return S.set;if(typeof Date<"u"&&$ instanceof Date)return S.date;return S.object;default:return S.unknown}};var z=D.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"]),oJ=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class g 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(Q){return Q.message},W={_errors:[]},X=(Q)=>{for(let Y of Q.issues)if(Y.code==="invalid_union")Y.unionErrors.map(X);else if(Y.code==="invalid_return_type")X(Y.returnTypeError);else if(Y.code==="invalid_arguments")X(Y.argumentsError);else if(Y.path.length===0)W._errors.push(J(Y));else{let G=W,_=0;while(_<Y.path.length){let B=Y.path[_];if(_!==Y.path.length-1)G[B]=G[B]||{_errors:[]};else G[B]=G[B]||{_errors:[]},G[B]._errors.push(J(Y));G=G[B],_++}}};return X(this),W}static assert($){if(!($ instanceof g))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,D.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(J)=>J.message){let J={},W=[];for(let X of this.issues)if(X.path.length>0){let Q=X.path[0];J[Q]=J[Q]||[],J[Q].push($(X))}else W.push($(X));return{formErrors:W,fieldErrors:J}}get formErrors(){return this.flatten()}}g.create=($)=>{return new g($)};var aJ=($,J)=>{let W;switch($.code){case z.invalid_type:if($.received===S.undefined)W="Required";else W=`Expected ${$.expected}, received ${$.received}`;break;case z.invalid_literal:W=`Invalid literal value, expected ${JSON.stringify($.expected,D.jsonStringifyReplacer)}`;break;case z.unrecognized_keys:W=`Unrecognized key(s) in object: ${D.joinValues($.keys,", ")}`;break;case z.invalid_union:W="Invalid input";break;case z.invalid_union_discriminator:W=`Invalid discriminator value. Expected ${D.joinValues($.options)}`;break;case z.invalid_enum_value:W=`Invalid enum value. Expected ${D.joinValues($.options)}, received '${$.received}'`;break;case z.invalid_arguments:W="Invalid function arguments";break;case z.invalid_return_type:W="Invalid function return type";break;case z.invalid_date:W="Invalid date";break;case z.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 D.assertNever($.validation);else if($.validation!=="regex")W=`Invalid ${$.validation}`;else W="Invalid";break;case z.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 z.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 z.custom:W="Invalid input";break;case z.invalid_intersection_types:W="Intersection results could not be merged";break;case z.not_multiple_of:W=`Number must be a multiple of ${$.multipleOf}`;break;case z.not_finite:W="Number must be finite";break;default:W=J.defaultError,D.assertNever($)}return{message:W}},d=aJ;var e1=d;function sJ($){e1=$}function O0(){return e1}var Z0=($)=>{let{data:J,path:W,errorMaps:X,issueData:Q}=$,Y=[...W,...Q.path||[]],G={...Q,path:Y};if(Q.message!==void 0)return{...Q,path:Y,message:Q.message};let _="",B=X.filter((H)=>!!H).slice().reverse();for(let H of B)_=H(G,{data:J,defaultError:_}).message;return{...Q,path:Y,message:_}},tJ=[];function O($,J){let W=O0(),X=Z0({issueData:J,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,W,W===d?void 0:d].filter((Q)=>!!Q)});$.common.issues.push(X)}class I{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 X of J){if(X.status==="aborted")return E;if(X.status==="dirty")$.dirty();W.push(X.value)}return{status:$.value,value:W}}static async mergeObjectAsync($,J){let W=[];for(let X of J){let Q=await X.key,Y=await X.value;W.push({key:Q,value:Y})}return I.mergeObjectSync($,W)}static mergeObjectSync($,J){let W={};for(let X of J){let{key:Q,value:Y}=X;if(Q.status==="aborted")return E;if(Y.status==="aborted")return E;if(Q.status==="dirty")$.dirty();if(Y.status==="dirty")$.dirty();if(Q.value!=="__proto__"&&(typeof Y.value<"u"||X.alwaysSet))W[Q.value]=Y.value}return{status:$.value,value:W}}}var E=Object.freeze({status:"aborted"}),_0=($)=>({status:"dirty",value:$}),b=($)=>({status:"valid",value:$}),f$=($)=>$.status==="aborted",S$=($)=>$.status==="dirty",e=($)=>$.status==="valid",N0=($)=>typeof Promise<"u"&&$ instanceof Promise;var U;(function($){$.errToObj=(J)=>typeof J==="string"?{message:J}:J||{},$.toString=(J)=>typeof J==="string"?J:J?.message})(U||(U={}));class u{constructor($,J,W,X){this._cachedPath=[],this.parent=$,this.data=J,this._path=W,this._key=X}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 $2=($,J)=>{if(e(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 g($.common.issues);return this._error=W,this._error}}}};function L($){if(!$)return{};let{errorMap:J,invalid_type_error:W,required_error:X,description:Q}=$;if(J&&(W||X))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(J)return{errorMap:J,description:Q};return{errorMap:(G,_)=>{let{message:B}=$;if(G.code==="invalid_enum_value")return{message:B??_.defaultError};if(typeof _.data>"u")return{message:B??X??_.defaultError};if(G.code!=="invalid_type")return{message:_.defaultError};return{message:B??W??_.defaultError}},description:Q}}class K{get description(){return this._def.description}_getType($){return n($.data)}_getOrReturnCtx($,J){return J||{common:$.parent.common,data:$.data,parsedType:n($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new I,ctx:{common:$.parent.common,data:$.data,parsedType:n($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let J=this._parse($);if(N0(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:n($)},X=this._parseSync({data:$,path:W.path,parent:W});return $2(W,X)}"~validate"($){let J={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:n($)};if(!this["~standard"].async)try{let W=this._parseSync({data:$,path:[],parent:J});return e(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)=>e(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:n($)},X=this._parse({data:$,path:W.path,parent:W}),Q=await(N0(X)?X:Promise.resolve(X));return $2(W,Q)}refine($,J){let W=(X)=>{if(typeof J==="string"||typeof J>"u")return{message:J};else if(typeof J==="function")return J(X);else return J};return this._refinement((X,Q)=>{let Y=$(X),G=()=>Q.addIssue({code:z.custom,...W(X)});if(typeof Promise<"u"&&Y instanceof Promise)return Y.then((_)=>{if(!_)return G(),!1;else return!0});if(!Y)return G(),!1;else return!0})}refinement($,J){return this._refinement((W,X)=>{if(!$(W))return X.addIssue(typeof J==="function"?J(W,X):J),!1;else return!0})}_refinement($){return new p({schema:this,typeName:j.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 c.create(this,this._def)}nullable(){return a.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return m.create(this)}promise(){return z0.create(this,this._def)}or($){return q0.create([this,$],this._def)}and($){return K0.create(this,$,this._def)}transform($){return new p({...L(this._def),schema:this,typeName:j.ZodEffects,effect:{type:"transform",transform:$}})}default($){let J=typeof $==="function"?$:()=>$;return new R0({...L(this._def),innerType:this,defaultValue:J,typeName:j.ZodDefault})}brand(){return new O$({typeName:j.ZodBranded,type:this,...L(this._def)})}catch($){let J=typeof $==="function"?$:()=>$;return new C0({...L(this._def),innerType:this,catchValue:J,typeName:j.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return p0.create(this,$)}readonly(){return v0.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var eJ=/^c[^\s-]{8,}$/i,$W=/^[0-9a-z]+$/,JW=/^[0-9A-HJKMNP-TV-Z]{26}$/i,WW=/^[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,XW=/^[a-z0-9_-]{21}$/i,QW=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,YW=/^[-+]?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)?)??$/,GW=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_W="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",p$,BW=/^(?:(?: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])$/,HW=/^(?:(?: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])$/,MW=/^(([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]))$/,zW=/^(([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])$/,fW=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,SW=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,W2="((\\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])))",VW=new RegExp(`^${W2}$`);function X2($){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 OW($){return new RegExp(`^${X2($)}$`)}function Q2($){let J=`${W2}T${X2($)}`,W=[];if(W.push($.local?"Z?":"Z"),$.offset)W.push("([+-]\\d{2}:?\\d{2})");return J=`${J}(${W.join("|")})`,new RegExp(`^${J}$`)}function NW($,J){if((J==="v4"||!J)&&BW.test($))return!0;if((J==="v6"||!J)&&MW.test($))return!0;return!1}function UW($,J){if(!QW.test($))return!1;try{let[W]=$.split(".");if(!W)return!1;let X=W.replace(/-/g,"+").replace(/_/g,"/").padEnd(W.length+(4-W.length%4)%4,"="),Q=JSON.parse(atob(X));if(typeof Q!=="object"||Q===null)return!1;if("typ"in Q&&Q?.typ!=="JWT")return!1;if(!Q.alg)return!1;if(J&&Q.alg!==J)return!1;return!0}catch{return!1}}function AW($,J){if((J==="v4"||!J)&&HW.test($))return!0;if((J==="v6"||!J)&&zW.test($))return!0;return!1}class l extends K{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==S.string){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_type,expected:S.string,received:Q.parsedType}),E}let W=new I,X=void 0;for(let Q of this._def.checks)if(Q.kind==="min"){if($.data.length<Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),W.dirty()}else if(Q.kind==="max"){if($.data.length>Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),W.dirty()}else if(Q.kind==="length"){let Y=$.data.length>Q.value,G=$.data.length<Q.value;if(Y||G){if(X=this._getOrReturnCtx($,X),Y)O(X,{code:z.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});else if(G)O(X,{code:z.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});W.dirty()}}else if(Q.kind==="email"){if(!GW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"email",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="emoji"){if(!p$)p$=new RegExp(_W,"u");if(!p$.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"emoji",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="uuid"){if(!WW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"uuid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="nanoid"){if(!XW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"nanoid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="cuid"){if(!eJ.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"cuid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="cuid2"){if(!$W.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"cuid2",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="ulid"){if(!JW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"ulid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="url")try{new URL($.data)}catch{X=this._getOrReturnCtx($,X),O(X,{validation:"url",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="regex"){if(Q.regex.lastIndex=0,!Q.regex.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"regex",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="trim")$.data=$.data.trim();else if(Q.kind==="includes"){if(!$.data.includes(Q.value,Q.position))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:{includes:Q.value,position:Q.position},message:Q.message}),W.dirty()}else if(Q.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(Q.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(Q.kind==="startsWith"){if(!$.data.startsWith(Q.value))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:{startsWith:Q.value},message:Q.message}),W.dirty()}else if(Q.kind==="endsWith"){if(!$.data.endsWith(Q.value))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:{endsWith:Q.value},message:Q.message}),W.dirty()}else if(Q.kind==="datetime"){if(!Q2(Q).test($.data))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:"datetime",message:Q.message}),W.dirty()}else if(Q.kind==="date"){if(!VW.test($.data))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:"date",message:Q.message}),W.dirty()}else if(Q.kind==="time"){if(!OW(Q).test($.data))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:"time",message:Q.message}),W.dirty()}else if(Q.kind==="duration"){if(!YW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"duration",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="ip"){if(!NW($.data,Q.version))X=this._getOrReturnCtx($,X),O(X,{validation:"ip",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="jwt"){if(!UW($.data,Q.alg))X=this._getOrReturnCtx($,X),O(X,{validation:"jwt",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="cidr"){if(!AW($.data,Q.version))X=this._getOrReturnCtx($,X),O(X,{validation:"cidr",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="base64"){if(!fW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"base64",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="base64url"){if(!SW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"base64url",code:z.invalid_string,message:Q.message}),W.dirty()}else D.assertNever(Q);return{status:W.value,value:$.data}}_regex($,J,W){return this.refinement((X)=>$.test(X),{validation:J,code:z.invalid_string,...U.errToObj(W)})}_addCheck($){return new l({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...U.errToObj($)})}url($){return this._addCheck({kind:"url",...U.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...U.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...U.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...U.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...U.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...U.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...U.errToObj($)})}base64($){return this._addCheck({kind:"base64",...U.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...U.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...U.errToObj($)})}ip($){return this._addCheck({kind:"ip",...U.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...U.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,...U.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,...U.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...U.errToObj($)})}regex($,J){return this._addCheck({kind:"regex",regex:$,...U.errToObj(J)})}includes($,J){return this._addCheck({kind:"includes",value:$,position:J?.position,...U.errToObj(J?.message)})}startsWith($,J){return this._addCheck({kind:"startsWith",value:$,...U.errToObj(J)})}endsWith($,J){return this._addCheck({kind:"endsWith",value:$,...U.errToObj(J)})}min($,J){return this._addCheck({kind:"min",value:$,...U.errToObj(J)})}max($,J){return this._addCheck({kind:"max",value:$,...U.errToObj(J)})}length($,J){return this._addCheck({kind:"length",value:$,...U.errToObj(J)})}nonempty($){return this.min(1,U.errToObj($))}trim(){return new l({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new l({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new l({...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 $}}l.create=($)=>{return new l({checks:[],typeName:j.ZodString,coerce:$?.coerce??!1,...L($)})};function EW($,J){let W=($.toString().split(".")[1]||"").length,X=(J.toString().split(".")[1]||"").length,Q=W>X?W:X,Y=Number.parseInt($.toFixed(Q).replace(".","")),G=Number.parseInt(J.toFixed(Q).replace(".",""));return Y%G/10**Q}class J0 extends K{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($)!==S.number){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_type,expected:S.number,received:Q.parsedType}),E}let W=void 0,X=new I;for(let Q of this._def.checks)if(Q.kind==="int"){if(!D.isInteger($.data))W=this._getOrReturnCtx($,W),O(W,{code:z.invalid_type,expected:"integer",received:"float",message:Q.message}),X.dirty()}else if(Q.kind==="min"){if(Q.inclusive?$.data<Q.value:$.data<=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_small,minimum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),X.dirty()}else if(Q.kind==="max"){if(Q.inclusive?$.data>Q.value:$.data>=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_big,maximum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),X.dirty()}else if(Q.kind==="multipleOf"){if(EW($.data,Q.value)!==0)W=this._getOrReturnCtx($,W),O(W,{code:z.not_multiple_of,multipleOf:Q.value,message:Q.message}),X.dirty()}else if(Q.kind==="finite"){if(!Number.isFinite($.data))W=this._getOrReturnCtx($,W),O(W,{code:z.not_finite,message:Q.message}),X.dirty()}else D.assertNever(Q);return{status:X.value,value:$.data}}gte($,J){return this.setLimit("min",$,!0,U.toString(J))}gt($,J){return this.setLimit("min",$,!1,U.toString(J))}lte($,J){return this.setLimit("max",$,!0,U.toString(J))}lt($,J){return this.setLimit("max",$,!1,U.toString(J))}setLimit($,J,W,X){return new J0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:W,message:U.toString(X)}]})}_addCheck($){return new J0({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:U.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:U.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:U.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:U.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:U.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:U.toString(J)})}finite($){return this._addCheck({kind:"finite",message:U.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:U.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:U.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"&&D.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($)}}J0.create=($)=>{return new J0({checks:[],typeName:j.ZodNumber,coerce:$?.coerce||!1,...L($)})};class W0 extends K{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($)!==S.bigint)return this._getInvalidInput($);let W=void 0,X=new I;for(let Q of this._def.checks)if(Q.kind==="min"){if(Q.inclusive?$.data<Q.value:$.data<=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_small,type:"bigint",minimum:Q.value,inclusive:Q.inclusive,message:Q.message}),X.dirty()}else if(Q.kind==="max"){if(Q.inclusive?$.data>Q.value:$.data>=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_big,type:"bigint",maximum:Q.value,inclusive:Q.inclusive,message:Q.message}),X.dirty()}else if(Q.kind==="multipleOf"){if($.data%Q.value!==BigInt(0))W=this._getOrReturnCtx($,W),O(W,{code:z.not_multiple_of,multipleOf:Q.value,message:Q.message}),X.dirty()}else D.assertNever(Q);return{status:X.value,value:$.data}}_getInvalidInput($){let J=this._getOrReturnCtx($);return O(J,{code:z.invalid_type,expected:S.bigint,received:J.parsedType}),E}gte($,J){return this.setLimit("min",$,!0,U.toString(J))}gt($,J){return this.setLimit("min",$,!1,U.toString(J))}lte($,J){return this.setLimit("max",$,!0,U.toString(J))}lt($,J){return this.setLimit("max",$,!1,U.toString(J))}setLimit($,J,W,X){return new W0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:W,message:U.toString(X)}]})}_addCheck($){return new W0({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:U.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:U.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:U.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:U.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:U.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 $}}W0.create=($)=>{return new W0({checks:[],typeName:j.ZodBigInt,coerce:$?.coerce??!1,...L($)})};class E0 extends K{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==S.boolean){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.boolean,received:W.parsedType}),E}return b($.data)}}E0.create=($)=>{return new E0({typeName:j.ZodBoolean,coerce:$?.coerce||!1,...L($)})};class B0 extends K{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==S.date){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_type,expected:S.date,received:Q.parsedType}),E}if(Number.isNaN($.data.getTime())){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_date}),E}let W=new I,X=void 0;for(let Q of this._def.checks)if(Q.kind==="min"){if($.data.getTime()<Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_small,message:Q.message,inclusive:!0,exact:!1,minimum:Q.value,type:"date"}),W.dirty()}else if(Q.kind==="max"){if($.data.getTime()>Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_big,message:Q.message,inclusive:!0,exact:!1,maximum:Q.value,type:"date"}),W.dirty()}else D.assertNever(Q);return{status:W.value,value:new Date($.data.getTime())}}_addCheck($){return new B0({...this._def,checks:[...this._def.checks,$]})}min($,J){return this._addCheck({kind:"min",value:$.getTime(),message:U.toString(J)})}max($,J){return this._addCheck({kind:"max",value:$.getTime(),message:U.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}}B0.create=($)=>{return new B0({checks:[],coerce:$?.coerce||!1,typeName:j.ZodDate,...L($)})};class y0 extends K{_parse($){if(this._getType($)!==S.symbol){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.symbol,received:W.parsedType}),E}return b($.data)}}y0.create=($)=>{return new y0({typeName:j.ZodSymbol,...L($)})};class j0 extends K{_parse($){if(this._getType($)!==S.undefined){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.undefined,received:W.parsedType}),E}return b($.data)}}j0.create=($)=>{return new j0({typeName:j.ZodUndefined,...L($)})};class L0 extends K{_parse($){if(this._getType($)!==S.null){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.null,received:W.parsedType}),E}return b($.data)}}L0.create=($)=>{return new L0({typeName:j.ZodNull,...L($)})};class H0 extends K{constructor(){super(...arguments);this._any=!0}_parse($){return b($.data)}}H0.create=($)=>{return new H0({typeName:j.ZodAny,...L($)})};class $0 extends K{constructor(){super(...arguments);this._unknown=!0}_parse($){return b($.data)}}$0.create=($)=>{return new $0({typeName:j.ZodUnknown,...L($)})};class i extends K{_parse($){let J=this._getOrReturnCtx($);return O(J,{code:z.invalid_type,expected:S.never,received:J.parsedType}),E}}i.create=($)=>{return new i({typeName:j.ZodNever,...L($)})};class l0 extends K{_parse($){if(this._getType($)!==S.undefined){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.void,received:W.parsedType}),E}return b($.data)}}l0.create=($)=>{return new l0({typeName:j.ZodVoid,...L($)})};class m extends K{_parse($){let{ctx:J,status:W}=this._processInputParams($),X=this._def;if(J.parsedType!==S.array)return O(J,{code:z.invalid_type,expected:S.array,received:J.parsedType}),E;if(X.exactLength!==null){let Y=J.data.length>X.exactLength.value,G=J.data.length<X.exactLength.value;if(Y||G)O(J,{code:Y?z.too_big:z.too_small,minimum:G?X.exactLength.value:void 0,maximum:Y?X.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:X.exactLength.message}),W.dirty()}if(X.minLength!==null){if(J.data.length<X.minLength.value)O(J,{code:z.too_small,minimum:X.minLength.value,type:"array",inclusive:!0,exact:!1,message:X.minLength.message}),W.dirty()}if(X.maxLength!==null){if(J.data.length>X.maxLength.value)O(J,{code:z.too_big,maximum:X.maxLength.value,type:"array",inclusive:!0,exact:!1,message:X.maxLength.message}),W.dirty()}if(J.common.async)return Promise.all([...J.data].map((Y,G)=>{return X.type._parseAsync(new u(J,Y,J.path,G))})).then((Y)=>{return I.mergeArray(W,Y)});let Q=[...J.data].map((Y,G)=>{return X.type._parseSync(new u(J,Y,J.path,G))});return I.mergeArray(W,Q)}get element(){return this._def.type}min($,J){return new m({...this._def,minLength:{value:$,message:U.toString(J)}})}max($,J){return new m({...this._def,maxLength:{value:$,message:U.toString(J)}})}length($,J){return new m({...this._def,exactLength:{value:$,message:U.toString(J)}})}nonempty($){return this.min(1,$)}}m.create=($,J)=>{return new m({type:$,minLength:null,maxLength:null,exactLength:null,typeName:j.ZodArray,...L(J)})};function U0($){if($ instanceof v){let J={};for(let W in $.shape){let X=$.shape[W];J[W]=c.create(U0(X))}return new v({...$._def,shape:()=>J})}else if($ instanceof m)return new m({...$._def,type:U0($.element)});else if($ instanceof c)return c.create(U0($.unwrap()));else if($ instanceof a)return a.create(U0($.unwrap()));else if($ instanceof r)return r.create($.items.map((J)=>U0(J)));else return $}class v extends K{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=D.objectKeys($);return this._cached={shape:$,keys:J},this._cached}_parse($){if(this._getType($)!==S.object){let B=this._getOrReturnCtx($);return O(B,{code:z.invalid_type,expected:S.object,received:B.parsedType}),E}let{status:W,ctx:X}=this._processInputParams($),{shape:Q,keys:Y}=this._getCached(),G=[];if(!(this._def.catchall instanceof i&&this._def.unknownKeys==="strip")){for(let B in X.data)if(!Y.includes(B))G.push(B)}let _=[];for(let B of Y){let H=Q[B],M=X.data[B];_.push({key:{status:"valid",value:B},value:H._parse(new u(X,M,X.path,B)),alwaysSet:B in X.data})}if(this._def.catchall instanceof i){let B=this._def.unknownKeys;if(B==="passthrough")for(let H of G)_.push({key:{status:"valid",value:H},value:{status:"valid",value:X.data[H]}});else if(B==="strict"){if(G.length>0)O(X,{code:z.unrecognized_keys,keys:G}),W.dirty()}else if(B==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let B=this._def.catchall;for(let H of G){let M=X.data[H];_.push({key:{status:"valid",value:H},value:B._parse(new u(X,M,X.path,H)),alwaysSet:H in X.data})}}if(X.common.async)return Promise.resolve().then(async()=>{let B=[];for(let H of _){let M=await H.key,V=await H.value;B.push({key:M,value:V,alwaysSet:H.alwaysSet})}return B}).then((B)=>{return I.mergeObjectSync(W,B)});else return I.mergeObjectSync(W,_)}get shape(){return this._def.shape()}strict($){return U.errToObj,new v({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(J,W)=>{let X=this._def.errorMap?.(J,W).message??W.defaultError;if(J.code==="unrecognized_keys")return{message:U.errToObj($).message??X};return{message:X}}}:{}})}strip(){return new v({...this._def,unknownKeys:"strip"})}passthrough(){return new v({...this._def,unknownKeys:"passthrough"})}extend($){return new v({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new v({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:j.ZodObject})}setKey($,J){return this.augment({[$]:J})}catchall($){return new v({...this._def,catchall:$})}pick($){let J={};for(let W of D.objectKeys($))if($[W]&&this.shape[W])J[W]=this.shape[W];return new v({...this._def,shape:()=>J})}omit($){let J={};for(let W of D.objectKeys(this.shape))if(!$[W])J[W]=this.shape[W];return new v({...this._def,shape:()=>J})}deepPartial(){return U0(this)}partial($){let J={};for(let W of D.objectKeys(this.shape)){let X=this.shape[W];if($&&!$[W])J[W]=X;else J[W]=X.optional()}return new v({...this._def,shape:()=>J})}required($){let J={};for(let W of D.objectKeys(this.shape))if($&&!$[W])J[W]=this.shape[W];else{let Q=this.shape[W];while(Q instanceof c)Q=Q._def.innerType;J[W]=Q}return new v({...this._def,shape:()=>J})}keyof(){return Y2(D.objectKeys(this.shape))}}v.create=($,J)=>{return new v({shape:()=>$,unknownKeys:"strip",catchall:i.create(),typeName:j.ZodObject,...L(J)})};v.strictCreate=($,J)=>{return new v({shape:()=>$,unknownKeys:"strict",catchall:i.create(),typeName:j.ZodObject,...L(J)})};v.lazycreate=($,J)=>{return new v({shape:$,unknownKeys:"strip",catchall:i.create(),typeName:j.ZodObject,...L(J)})};class q0 extends K{_parse($){let{ctx:J}=this._processInputParams($),W=this._def.options;function X(Q){for(let G of Q)if(G.result.status==="valid")return G.result;for(let G of Q)if(G.result.status==="dirty")return J.common.issues.push(...G.ctx.common.issues),G.result;let Y=Q.map((G)=>new g(G.ctx.common.issues));return O(J,{code:z.invalid_union,unionErrors:Y}),E}if(J.common.async)return Promise.all(W.map(async(Q)=>{let Y={...J,common:{...J.common,issues:[]},parent:null};return{result:await Q._parseAsync({data:J.data,path:J.path,parent:Y}),ctx:Y}})).then(X);else{let Q=void 0,Y=[];for(let _ of W){let B={...J,common:{...J.common,issues:[]},parent:null},H=_._parseSync({data:J.data,path:J.path,parent:B});if(H.status==="valid")return H;else if(H.status==="dirty"&&!Q)Q={result:H,ctx:B};if(B.common.issues.length)Y.push(B.common.issues)}if(Q)return J.common.issues.push(...Q.ctx.common.issues),Q.result;let G=Y.map((_)=>new g(_));return O(J,{code:z.invalid_union,unionErrors:G}),E}}get options(){return this._def.options}}q0.create=($,J)=>{return new q0({options:$,typeName:j.ZodUnion,...L(J)})};var o=($)=>{if($ instanceof D0)return o($.schema);else if($ instanceof p)return o($.innerType());else if($ instanceof w0)return[$.value];else if($ instanceof X0)return $.options;else if($ instanceof F0)return D.objectValues($.enum);else if($ instanceof R0)return o($._def.innerType);else if($ instanceof j0)return[void 0];else if($ instanceof L0)return[null];else if($ instanceof c)return[void 0,...o($.unwrap())];else if($ instanceof a)return[null,...o($.unwrap())];else if($ instanceof O$)return o($.unwrap());else if($ instanceof v0)return o($.unwrap());else if($ instanceof C0)return o($._def.innerType);else return[]};class V$ extends K{_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==S.object)return O(J,{code:z.invalid_type,expected:S.object,received:J.parsedType}),E;let W=this.discriminator,X=J.data[W],Q=this.optionsMap.get(X);if(!Q)return O(J,{code:z.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[W]}),E;if(J.common.async)return Q._parseAsync({data:J.data,path:J.path,parent:J});else return Q._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 X=new Map;for(let Q of J){let Y=o(Q.shape[$]);if(!Y.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let G of Y){if(X.has(G))throw Error(`Discriminator property ${String($)} has duplicate value ${String(G)}`);X.set(G,Q)}}return new V$({typeName:j.ZodDiscriminatedUnion,discriminator:$,options:J,optionsMap:X,...L(W)})}}function n$($,J){let W=n($),X=n(J);if($===J)return{valid:!0,data:$};else if(W===S.object&&X===S.object){let Q=D.objectKeys(J),Y=D.objectKeys($).filter((_)=>Q.indexOf(_)!==-1),G={...$,...J};for(let _ of Y){let B=n$($[_],J[_]);if(!B.valid)return{valid:!1};G[_]=B.data}return{valid:!0,data:G}}else if(W===S.array&&X===S.array){if($.length!==J.length)return{valid:!1};let Q=[];for(let Y=0;Y<$.length;Y++){let G=$[Y],_=J[Y],B=n$(G,_);if(!B.valid)return{valid:!1};Q.push(B.data)}return{valid:!0,data:Q}}else if(W===S.date&&X===S.date&&+$===+J)return{valid:!0,data:$};else return{valid:!1}}class K0 extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($),X=(Q,Y)=>{if(f$(Q)||f$(Y))return E;let G=n$(Q.value,Y.value);if(!G.valid)return O(W,{code:z.invalid_intersection_types}),E;if(S$(Q)||S$(Y))J.dirty();return{status:J.value,value:G.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(([Q,Y])=>X(Q,Y));else return X(this._def.left._parseSync({data:W.data,path:W.path,parent:W}),this._def.right._parseSync({data:W.data,path:W.path,parent:W}))}}K0.create=($,J,W)=>{return new K0({left:$,right:J,typeName:j.ZodIntersection,...L(W)})};class r extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.array)return O(W,{code:z.invalid_type,expected:S.array,received:W.parsedType}),E;if(W.data.length<this._def.items.length)return O(W,{code:z.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),E;if(!this._def.rest&&W.data.length>this._def.items.length)O(W,{code:z.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),J.dirty();let Q=[...W.data].map((Y,G)=>{let _=this._def.items[G]||this._def.rest;if(!_)return null;return _._parse(new u(W,Y,W.path,G))}).filter((Y)=>!!Y);if(W.common.async)return Promise.all(Q).then((Y)=>{return I.mergeArray(J,Y)});else return I.mergeArray(J,Q)}get items(){return this._def.items}rest($){return new r({...this._def,rest:$})}}r.create=($,J)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new r({items:$,typeName:j.ZodTuple,rest:null,...L(J)})};class m0 extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.object)return O(W,{code:z.invalid_type,expected:S.object,received:W.parsedType}),E;let X=[],Q=this._def.keyType,Y=this._def.valueType;for(let G in W.data)X.push({key:Q._parse(new u(W,G,W.path,G)),value:Y._parse(new u(W,W.data[G],W.path,G)),alwaysSet:G in W.data});if(W.common.async)return I.mergeObjectAsync(J,X);else return I.mergeObjectSync(J,X)}get element(){return this._def.valueType}static create($,J,W){if(J instanceof K)return new m0({keyType:$,valueType:J,typeName:j.ZodRecord,...L(W)});return new m0({keyType:l.create(),valueType:$,typeName:j.ZodRecord,...L(J)})}}class c0 extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.map)return O(W,{code:z.invalid_type,expected:S.map,received:W.parsedType}),E;let X=this._def.keyType,Q=this._def.valueType,Y=[...W.data.entries()].map(([G,_],B)=>{return{key:X._parse(new u(W,G,W.path,[B,"key"])),value:Q._parse(new u(W,_,W.path,[B,"value"]))}});if(W.common.async){let G=new Map;return Promise.resolve().then(async()=>{for(let _ of Y){let B=await _.key,H=await _.value;if(B.status==="aborted"||H.status==="aborted")return E;if(B.status==="dirty"||H.status==="dirty")J.dirty();G.set(B.value,H.value)}return{status:J.value,value:G}})}else{let G=new Map;for(let _ of Y){let{key:B,value:H}=_;if(B.status==="aborted"||H.status==="aborted")return E;if(B.status==="dirty"||H.status==="dirty")J.dirty();G.set(B.value,H.value)}return{status:J.value,value:G}}}}c0.create=($,J,W)=>{return new c0({valueType:J,keyType:$,typeName:j.ZodMap,...L(W)})};class M0 extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.set)return O(W,{code:z.invalid_type,expected:S.set,received:W.parsedType}),E;let X=this._def;if(X.minSize!==null){if(W.data.size<X.minSize.value)O(W,{code:z.too_small,minimum:X.minSize.value,type:"set",inclusive:!0,exact:!1,message:X.minSize.message}),J.dirty()}if(X.maxSize!==null){if(W.data.size>X.maxSize.value)O(W,{code:z.too_big,maximum:X.maxSize.value,type:"set",inclusive:!0,exact:!1,message:X.maxSize.message}),J.dirty()}let Q=this._def.valueType;function Y(_){let B=new Set;for(let H of _){if(H.status==="aborted")return E;if(H.status==="dirty")J.dirty();B.add(H.value)}return{status:J.value,value:B}}let G=[...W.data.values()].map((_,B)=>Q._parse(new u(W,_,W.path,B)));if(W.common.async)return Promise.all(G).then((_)=>Y(_));else return Y(G)}min($,J){return new M0({...this._def,minSize:{value:$,message:U.toString(J)}})}max($,J){return new M0({...this._def,maxSize:{value:$,message:U.toString(J)}})}size($,J){return this.min($,J).max($,J)}nonempty($){return this.min(1,$)}}M0.create=($,J)=>{return new M0({valueType:$,minSize:null,maxSize:null,typeName:j.ZodSet,...L(J)})};class A0 extends K{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==S.function)return O(J,{code:z.invalid_type,expected:S.function,received:J.parsedType}),E;function W(G,_){return Z0({data:G,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,O0(),d].filter((B)=>!!B),issueData:{code:z.invalid_arguments,argumentsError:_}})}function X(G,_){return Z0({data:G,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,O0(),d].filter((B)=>!!B),issueData:{code:z.invalid_return_type,returnTypeError:_}})}let Q={errorMap:J.common.contextualErrorMap},Y=J.data;if(this._def.returns instanceof z0){let G=this;return b(async function(..._){let B=new g([]),H=await G._def.args.parseAsync(_,Q).catch((N)=>{throw B.addIssue(W(_,N)),B}),M=await Reflect.apply(Y,this,H);return await G._def.returns._def.type.parseAsync(M,Q).catch((N)=>{throw B.addIssue(X(M,N)),B})})}else{let G=this;return b(function(..._){let B=G._def.args.safeParse(_,Q);if(!B.success)throw new g([W(_,B.error)]);let H=Reflect.apply(Y,this,B.data),M=G._def.returns.safeParse(H,Q);if(!M.success)throw new g([X(H,M.error)]);return M.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new A0({...this._def,args:r.create($).rest($0.create())})}returns($){return new A0({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,J,W){return new A0({args:$?$:r.create([]).rest($0.create()),returns:J||$0.create(),typeName:j.ZodFunction,...L(W)})}}class D0 extends K{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})}}D0.create=($,J)=>{return new D0({getter:$,typeName:j.ZodLazy,...L(J)})};class w0 extends K{_parse($){if($.data!==this._def.value){let J=this._getOrReturnCtx($);return O(J,{received:J.data,code:z.invalid_literal,expected:this._def.value}),E}return{status:"valid",value:$.data}}get value(){return this._def.value}}w0.create=($,J)=>{return new w0({value:$,typeName:j.ZodLiteral,...L(J)})};function Y2($,J){return new X0({values:$,typeName:j.ZodEnum,...L(J)})}class X0 extends K{_parse($){if(typeof $.data!=="string"){let J=this._getOrReturnCtx($),W=this._def.values;return O(J,{expected:D.joinValues(W),received:J.parsedType,code:z.invalid_type}),E}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let J=this._getOrReturnCtx($),W=this._def.values;return O(J,{received:J.data,code:z.invalid_enum_value,options:W}),E}return b($.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 X0.create($,{...this._def,...J})}exclude($,J=this._def){return X0.create(this.options.filter((W)=>!$.includes(W)),{...this._def,...J})}}X0.create=Y2;class F0 extends K{_parse($){let J=D.getValidEnumValues(this._def.values),W=this._getOrReturnCtx($);if(W.parsedType!==S.string&&W.parsedType!==S.number){let X=D.objectValues(J);return O(W,{expected:D.joinValues(X),received:W.parsedType,code:z.invalid_type}),E}if(!this._cache)this._cache=new Set(D.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let X=D.objectValues(J);return O(W,{received:W.data,code:z.invalid_enum_value,options:X}),E}return b($.data)}get enum(){return this._def.values}}F0.create=($,J)=>{return new F0({values:$,typeName:j.ZodNativeEnum,...L(J)})};class z0 extends K{unwrap(){return this._def.type}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==S.promise&&J.common.async===!1)return O(J,{code:z.invalid_type,expected:S.promise,received:J.parsedType}),E;let W=J.parsedType===S.promise?J.data:Promise.resolve(J.data);return b(W.then((X)=>{return this._def.type.parseAsync(X,{path:J.path,errorMap:J.common.contextualErrorMap})}))}}z0.create=($,J)=>{return new z0({type:$,typeName:j.ZodPromise,...L(J)})};class p extends K{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===j.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:J,ctx:W}=this._processInputParams($),X=this._def.effect||null,Q={addIssue:(Y)=>{if(O(W,Y),Y.fatal)J.abort();else J.dirty()},get path(){return W.path}};if(Q.addIssue=Q.addIssue.bind(Q),X.type==="preprocess"){let Y=X.transform(W.data,Q);if(W.common.async)return Promise.resolve(Y).then(async(G)=>{if(J.value==="aborted")return E;let _=await this._def.schema._parseAsync({data:G,path:W.path,parent:W});if(_.status==="aborted")return E;if(_.status==="dirty")return _0(_.value);if(J.value==="dirty")return _0(_.value);return _});else{if(J.value==="aborted")return E;let G=this._def.schema._parseSync({data:Y,path:W.path,parent:W});if(G.status==="aborted")return E;if(G.status==="dirty")return _0(G.value);if(J.value==="dirty")return _0(G.value);return G}}if(X.type==="refinement"){let Y=(G)=>{let _=X.refinement(G,Q);if(W.common.async)return Promise.resolve(_);if(_ instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return G};if(W.common.async===!1){let G=this._def.schema._parseSync({data:W.data,path:W.path,parent:W});if(G.status==="aborted")return E;if(G.status==="dirty")J.dirty();return Y(G.value),{status:J.value,value:G.value}}else return this._def.schema._parseAsync({data:W.data,path:W.path,parent:W}).then((G)=>{if(G.status==="aborted")return E;if(G.status==="dirty")J.dirty();return Y(G.value).then(()=>{return{status:J.value,value:G.value}})})}if(X.type==="transform")if(W.common.async===!1){let Y=this._def.schema._parseSync({data:W.data,path:W.path,parent:W});if(!e(Y))return E;let G=X.transform(Y.value,Q);if(G instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:G}}else return this._def.schema._parseAsync({data:W.data,path:W.path,parent:W}).then((Y)=>{if(!e(Y))return E;return Promise.resolve(X.transform(Y.value,Q)).then((G)=>({status:J.value,value:G}))});D.assertNever(X)}}p.create=($,J,W)=>{return new p({schema:$,typeName:j.ZodEffects,effect:J,...L(W)})};p.createWithPreprocess=($,J,W)=>{return new p({schema:J,effect:{type:"preprocess",transform:$},typeName:j.ZodEffects,...L(W)})};class c extends K{_parse($){if(this._getType($)===S.undefined)return b(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}c.create=($,J)=>{return new c({innerType:$,typeName:j.ZodOptional,...L(J)})};class a extends K{_parse($){if(this._getType($)===S.null)return b(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}a.create=($,J)=>{return new a({innerType:$,typeName:j.ZodNullable,...L(J)})};class R0 extends K{_parse($){let{ctx:J}=this._processInputParams($),W=J.data;if(J.parsedType===S.undefined)W=this._def.defaultValue();return this._def.innerType._parse({data:W,path:J.path,parent:J})}removeDefault(){return this._def.innerType}}R0.create=($,J)=>{return new R0({innerType:$,typeName:j.ZodDefault,defaultValue:typeof J.default==="function"?J.default:()=>J.default,...L(J)})};class C0 extends K{_parse($){let{ctx:J}=this._processInputParams($),W={...J,common:{...J.common,issues:[]}},X=this._def.innerType._parse({data:W.data,path:W.path,parent:{...W}});if(N0(X))return X.then((Q)=>{return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new g(W.common.issues)},input:W.data})}});else return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new g(W.common.issues)},input:W.data})}}removeCatch(){return this._def.innerType}}C0.create=($,J)=>{return new C0({innerType:$,typeName:j.ZodCatch,catchValue:typeof J.catch==="function"?J.catch:()=>J.catch,...L(J)})};class u0 extends K{_parse($){if(this._getType($)!==S.nan){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.nan,received:W.parsedType}),E}return{status:"valid",value:$.data}}}u0.create=($)=>{return new u0({typeName:j.ZodNaN,...L($)})};var jW=Symbol("zod_brand");class O$ extends K{_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 p0 extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.common.async)return(async()=>{let Q=await this._def.in._parseAsync({data:W.data,path:W.path,parent:W});if(Q.status==="aborted")return E;if(Q.status==="dirty")return J.dirty(),_0(Q.value);else return this._def.out._parseAsync({data:Q.value,path:W.path,parent:W})})();else{let X=this._def.in._parseSync({data:W.data,path:W.path,parent:W});if(X.status==="aborted")return E;if(X.status==="dirty")return J.dirty(),{status:"dirty",value:X.value};else return this._def.out._parseSync({data:X.value,path:W.path,parent:W})}}static create($,J){return new p0({in:$,out:J,typeName:j.ZodPipeline})}}class v0 extends K{_parse($){let J=this._def.innerType._parse($),W=(X)=>{if(e(X))X.value=Object.freeze(X.value);return X};return N0(J)?J.then((X)=>W(X)):W(J)}unwrap(){return this._def.innerType}}v0.create=($,J)=>{return new v0({innerType:$,typeName:j.ZodReadonly,...L(J)})};function J2($,J){let W=typeof $==="function"?$(J):typeof $==="string"?{message:$}:$;return typeof W==="string"?{message:W}:W}function G2($,J={},W){if($)return H0.create().superRefine((X,Q)=>{let Y=$(X);if(Y instanceof Promise)return Y.then((G)=>{if(!G){let _=J2(J,X),B=_.fatal??W??!0;Q.addIssue({code:"custom",..._,fatal:B})}});if(!Y){let G=J2(J,X),_=G.fatal??W??!0;Q.addIssue({code:"custom",...G,fatal:_})}return});return H0.create()}var LW={object:v.lazycreate},j;(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"})(j||(j={}));var qW=($,J={message:`Input not instance of ${$.name}`})=>G2((W)=>W instanceof $,J),_2=l.create,B2=J0.create,KW=u0.create,DW=W0.create,H2=E0.create,wW=B0.create,FW=y0.create,RW=j0.create,CW=L0.create,vW=H0.create,kW=$0.create,IW=i.create,bW=l0.create,PW=m.create,TW=v.create,gW=v.strictCreate,xW=q0.create,hW=V$.create,ZW=K0.create,yW=r.create,lW=m0.create,mW=c0.create,cW=M0.create,uW=A0.create,pW=D0.create,nW=w0.create,iW=X0.create,rW=F0.create,dW=z0.create,oW=p.create,aW=c.create,sW=a.create,tW=p.createWithPreprocess,eW=p0.create,$8=()=>_2().optional(),J8=()=>B2().optional(),W8=()=>H2().optional(),X8={string:($)=>l.create({...$,coerce:!0}),number:($)=>J0.create({...$,coerce:!0}),boolean:($)=>E0.create({...$,coerce:!0}),bigint:($)=>W0.create({...$,coerce:!0}),date:($)=>B0.create({...$,coerce:!0})};var Q8=E;var M2=w.object({format:w.enum(["json"]).default("json").describe("Export format (currently only JSON supported)"),type:w.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:w.number().min(1).optional().describe("Maximum number of observations to export")});function z2($,J,W,X){return{name:"mem-export",description:`Export project memories (observations and session summaries) as portable JSON.
|
|
353
|
+
`;await this.write(X)}},rJ=async($,J,W)=>{try{await J($)}catch(X){if(X instanceof Error&&W)await W(X,$),await $.writeSSE({event:"error",data:X.message});else console.error(X)}finally{$.close()}},dJ=new WeakMap,u$=($,J,W)=>{let{readable:X,writable:Q}=new TransformStream,Y=new e1(Q,X);if(f$())$.req.raw.signal.addEventListener("abort",()=>{if(!Y.closed)Y.abort()});return dJ.set(Y.responseReadable,$),$.header("Transfer-Encoding","chunked"),$.header("Content-Type","text/event-stream"),$.header("Cache-Control","no-cache"),$.header("Connection","keep-alive"),rJ(Y,J,W),$.newResponse(Y.responseReadable)};class p${eventBus;clients=new Set;cleanups=[];constructor($){this.eventBus=$;this.subscribeToAll()}addClient($){this.clients.add($)}removeClient($){this.clients.delete($)}get clientCount(){return this.clients.size}destroy(){for(let $ of this.cleanups)$();this.cleanups=[],this.clients.clear()}subscribeToAll(){let $=["observation:created","observation:updated","session:started","session:ended","summary:created","pending:enqueued","pending:processed"];for(let J of $){let W=(X)=>{this.broadcast(J,X)};this.eventBus.on(J,W),this.cleanups.push(()=>{this.eventBus.off(J,W)})}}broadcast($,J){let W=JSON.stringify(J);for(let X of this.clients)try{let Q=X($,W);if(Q&&typeof Q.catch==="function")Q.catch(()=>this.clients.delete(X))}catch{this.clients.delete(X)}}}var aJ=30000;function $2($){return(J)=>{return u$(J,async(W)=>{let X=(Y,G)=>{W.writeSSE({event:Y,data:G,id:Date.now().toString()})};$.addClient(X);let Q=setInterval(()=>{W.writeSSE({event:"heartbeat",data:"",id:Date.now().toString()})},aJ);W.onAbort(()=>{$.removeClient(X),clearInterval(Q)});while(!W.aborted)await W.sleep(1000)})}}var w={};b2(w,{void:()=>TW,util:()=>D,unknown:()=>bW,union:()=>ZW,undefined:()=>vW,tuple:()=>lW,transformer:()=>sW,symbol:()=>CW,string:()=>H2,strictObject:()=>hW,setErrorMap:()=>eJ,set:()=>pW,record:()=>cW,quotelessJson:()=>sJ,promise:()=>aW,preprocess:()=>$8,pipeline:()=>J8,ostring:()=>W8,optional:()=>tW,onumber:()=>X8,oboolean:()=>Q8,objectUtil:()=>n$,object:()=>xW,number:()=>M2,nullable:()=>eW,null:()=>kW,never:()=>PW,nativeEnum:()=>oW,nan:()=>wW,map:()=>uW,makeIssue:()=>m0,literal:()=>rW,lazy:()=>iW,late:()=>KW,isValid:()=>e,isDirty:()=>V$,isAsync:()=>A0,isAborted:()=>S$,intersection:()=>mW,instanceof:()=>DW,getParsedType:()=>n,getErrorMap:()=>U0,function:()=>nW,enum:()=>dW,effect:()=>sW,discriminatedUnion:()=>yW,defaultErrorMap:()=>o,datetimeRegex:()=>G2,date:()=>RW,custom:()=>B2,coerce:()=>Y8,boolean:()=>z2,bigint:()=>FW,array:()=>gW,any:()=>IW,addIssueToContext:()=>O,ZodVoid:()=>c0,ZodUnknown:()=>$0,ZodUnion:()=>D0,ZodUndefined:()=>j0,ZodType:()=>K,ZodTuple:()=>r,ZodTransformer:()=>u,ZodSymbol:()=>l0,ZodString:()=>y,ZodSet:()=>f0,ZodSchema:()=>K,ZodRecord:()=>u0,ZodReadonly:()=>I0,ZodPromise:()=>S0,ZodPipeline:()=>i0,ZodParsedType:()=>S,ZodOptional:()=>l,ZodObject:()=>v,ZodNumber:()=>J0,ZodNullable:()=>s,ZodNull:()=>K0,ZodNever:()=>i,ZodNativeEnum:()=>C0,ZodNaN:()=>n0,ZodMap:()=>p0,ZodLiteral:()=>R0,ZodLazy:()=>F0,ZodIssueCode:()=>z,ZodIntersection:()=>w0,ZodFunction:()=>L0,ZodFirstPartyTypeKind:()=>L,ZodError:()=>T,ZodEnum:()=>X0,ZodEffects:()=>u,ZodDiscriminatedUnion:()=>O$,ZodDefault:()=>v0,ZodDate:()=>M0,ZodCatch:()=>k0,ZodBranded:()=>N$,ZodBoolean:()=>q0,ZodBigInt:()=>W0,ZodArray:()=>m,ZodAny:()=>z0,Schema:()=>K,ParseStatus:()=>I,OK:()=>P,NEVER:()=>G8,INVALID:()=>A,EMPTY_PATH:()=>$W,DIRTY:()=>H0,BRAND:()=>jW});var D;(function($){$.assertEqual=(Q)=>{};function J(Q){}$.assertIs=J;function W(Q){throw Error()}$.assertNever=W,$.arrayToEnum=(Q)=>{let Y={};for(let G of Q)Y[G]=G;return Y},$.getValidEnumValues=(Q)=>{let Y=$.objectKeys(Q).filter((_)=>typeof Q[Q[_]]!=="number"),G={};for(let _ of Y)G[_]=Q[_];return $.objectValues(G)},$.objectValues=(Q)=>{return $.objectKeys(Q).map(function(Y){return Q[Y]})},$.objectKeys=typeof Object.keys==="function"?(Q)=>Object.keys(Q):(Q)=>{let Y=[];for(let G in Q)if(Object.prototype.hasOwnProperty.call(Q,G))Y.push(G);return Y},$.find=(Q,Y)=>{for(let G of Q)if(Y(G))return G;return},$.isInteger=typeof Number.isInteger==="function"?(Q)=>Number.isInteger(Q):(Q)=>typeof Q==="number"&&Number.isFinite(Q)&&Math.floor(Q)===Q;function X(Q,Y=" | "){return Q.map((G)=>typeof G==="string"?`'${G}'`:G).join(Y)}$.joinValues=X,$.jsonStringifyReplacer=(Q,Y)=>{if(typeof Y==="bigint")return Y.toString();return Y}})(D||(D={}));var n$;(function($){$.mergeShapes=(J,W)=>{return{...J,...W}}})(n$||(n$={}));var S=D.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),n=($)=>{switch(typeof $){case"undefined":return S.undefined;case"string":return S.string;case"number":return Number.isNaN($)?S.nan:S.number;case"boolean":return S.boolean;case"function":return S.function;case"bigint":return S.bigint;case"symbol":return S.symbol;case"object":if(Array.isArray($))return S.array;if($===null)return S.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return S.promise;if(typeof Map<"u"&&$ instanceof Map)return S.map;if(typeof Set<"u"&&$ instanceof Set)return S.set;if(typeof Date<"u"&&$ instanceof Date)return S.date;return S.object;default:return S.unknown}};var z=D.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"]),sJ=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class T 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(Q){return Q.message},W={_errors:[]},X=(Q)=>{for(let Y of Q.issues)if(Y.code==="invalid_union")Y.unionErrors.map(X);else if(Y.code==="invalid_return_type")X(Y.returnTypeError);else if(Y.code==="invalid_arguments")X(Y.argumentsError);else if(Y.path.length===0)W._errors.push(J(Y));else{let G=W,_=0;while(_<Y.path.length){let B=Y.path[_];if(_!==Y.path.length-1)G[B]=G[B]||{_errors:[]};else G[B]=G[B]||{_errors:[]},G[B]._errors.push(J(Y));G=G[B],_++}}};return X(this),W}static assert($){if(!($ instanceof T))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,D.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(J)=>J.message){let J={},W=[];for(let X of this.issues)if(X.path.length>0){let Q=X.path[0];J[Q]=J[Q]||[],J[Q].push($(X))}else W.push($(X));return{formErrors:W,fieldErrors:J}}get formErrors(){return this.flatten()}}T.create=($)=>{return new T($)};var tJ=($,J)=>{let W;switch($.code){case z.invalid_type:if($.received===S.undefined)W="Required";else W=`Expected ${$.expected}, received ${$.received}`;break;case z.invalid_literal:W=`Invalid literal value, expected ${JSON.stringify($.expected,D.jsonStringifyReplacer)}`;break;case z.unrecognized_keys:W=`Unrecognized key(s) in object: ${D.joinValues($.keys,", ")}`;break;case z.invalid_union:W="Invalid input";break;case z.invalid_union_discriminator:W=`Invalid discriminator value. Expected ${D.joinValues($.options)}`;break;case z.invalid_enum_value:W=`Invalid enum value. Expected ${D.joinValues($.options)}, received '${$.received}'`;break;case z.invalid_arguments:W="Invalid function arguments";break;case z.invalid_return_type:W="Invalid function return type";break;case z.invalid_date:W="Invalid date";break;case z.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 D.assertNever($.validation);else if($.validation!=="regex")W=`Invalid ${$.validation}`;else W="Invalid";break;case z.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 z.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 z.custom:W="Invalid input";break;case z.invalid_intersection_types:W="Intersection results could not be merged";break;case z.not_multiple_of:W=`Number must be a multiple of ${$.multipleOf}`;break;case z.not_finite:W="Number must be finite";break;default:W=J.defaultError,D.assertNever($)}return{message:W}},o=tJ;var J2=o;function eJ($){J2=$}function U0(){return J2}var m0=($)=>{let{data:J,path:W,errorMaps:X,issueData:Q}=$,Y=[...W,...Q.path||[]],G={...Q,path:Y};if(Q.message!==void 0)return{...Q,path:Y,message:Q.message};let _="",B=X.filter((H)=>!!H).slice().reverse();for(let H of B)_=H(G,{data:J,defaultError:_}).message;return{...Q,path:Y,message:_}},$W=[];function O($,J){let W=U0(),X=m0({issueData:J,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,W,W===o?void 0:o].filter((Q)=>!!Q)});$.common.issues.push(X)}class I{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 X of J){if(X.status==="aborted")return A;if(X.status==="dirty")$.dirty();W.push(X.value)}return{status:$.value,value:W}}static async mergeObjectAsync($,J){let W=[];for(let X of J){let Q=await X.key,Y=await X.value;W.push({key:Q,value:Y})}return I.mergeObjectSync($,W)}static mergeObjectSync($,J){let W={};for(let X of J){let{key:Q,value:Y}=X;if(Q.status==="aborted")return A;if(Y.status==="aborted")return A;if(Q.status==="dirty")$.dirty();if(Y.status==="dirty")$.dirty();if(Q.value!=="__proto__"&&(typeof Y.value<"u"||X.alwaysSet))W[Q.value]=Y.value}return{status:$.value,value:W}}}var A=Object.freeze({status:"aborted"}),H0=($)=>({status:"dirty",value:$}),P=($)=>({status:"valid",value:$}),S$=($)=>$.status==="aborted",V$=($)=>$.status==="dirty",e=($)=>$.status==="valid",A0=($)=>typeof Promise<"u"&&$ instanceof Promise;var U;(function($){$.errToObj=(J)=>typeof J==="string"?{message:J}:J||{},$.toString=(J)=>typeof J==="string"?J:J?.message})(U||(U={}));class c{constructor($,J,W,X){this._cachedPath=[],this.parent=$,this.data=J,this._path=W,this._key=X}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 W2=($,J)=>{if(e(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 T($.common.issues);return this._error=W,this._error}}}};function j($){if(!$)return{};let{errorMap:J,invalid_type_error:W,required_error:X,description:Q}=$;if(J&&(W||X))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(J)return{errorMap:J,description:Q};return{errorMap:(G,_)=>{let{message:B}=$;if(G.code==="invalid_enum_value")return{message:B??_.defaultError};if(typeof _.data>"u")return{message:B??X??_.defaultError};if(G.code!=="invalid_type")return{message:_.defaultError};return{message:B??W??_.defaultError}},description:Q}}class K{get description(){return this._def.description}_getType($){return n($.data)}_getOrReturnCtx($,J){return J||{common:$.parent.common,data:$.data,parsedType:n($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new I,ctx:{common:$.parent.common,data:$.data,parsedType:n($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let J=this._parse($);if(A0(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:n($)},X=this._parseSync({data:$,path:W.path,parent:W});return W2(W,X)}"~validate"($){let J={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:n($)};if(!this["~standard"].async)try{let W=this._parseSync({data:$,path:[],parent:J});return e(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)=>e(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:n($)},X=this._parse({data:$,path:W.path,parent:W}),Q=await(A0(X)?X:Promise.resolve(X));return W2(W,Q)}refine($,J){let W=(X)=>{if(typeof J==="string"||typeof J>"u")return{message:J};else if(typeof J==="function")return J(X);else return J};return this._refinement((X,Q)=>{let Y=$(X),G=()=>Q.addIssue({code:z.custom,...W(X)});if(typeof Promise<"u"&&Y instanceof Promise)return Y.then((_)=>{if(!_)return G(),!1;else return!0});if(!Y)return G(),!1;else return!0})}refinement($,J){return this._refinement((W,X)=>{if(!$(W))return X.addIssue(typeof J==="function"?J(W,X):J),!1;else return!0})}_refinement($){return new u({schema:this,typeName:L.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 l.create(this,this._def)}nullable(){return s.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return m.create(this)}promise(){return S0.create(this,this._def)}or($){return D0.create([this,$],this._def)}and($){return w0.create(this,$,this._def)}transform($){return new u({...j(this._def),schema:this,typeName:L.ZodEffects,effect:{type:"transform",transform:$}})}default($){let J=typeof $==="function"?$:()=>$;return new v0({...j(this._def),innerType:this,defaultValue:J,typeName:L.ZodDefault})}brand(){return new N$({typeName:L.ZodBranded,type:this,...j(this._def)})}catch($){let J=typeof $==="function"?$:()=>$;return new k0({...j(this._def),innerType:this,catchValue:J,typeName:L.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return i0.create(this,$)}readonly(){return I0.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var JW=/^c[^\s-]{8,}$/i,WW=/^[0-9a-z]+$/,XW=/^[0-9A-HJKMNP-TV-Z]{26}$/i,QW=/^[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,YW=/^[a-z0-9_-]{21}$/i,GW=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,_W=/^[-+]?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)?)??$/,BW=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,HW="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",i$,MW=/^(?:(?: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])$/,zW=/^(?:(?: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])$/,fW=/^(([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]))$/,SW=/^(([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])$/,VW=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,OW=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,Q2="((\\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])))",NW=new RegExp(`^${Q2}$`);function Y2($){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 UW($){return new RegExp(`^${Y2($)}$`)}function G2($){let J=`${Q2}T${Y2($)}`,W=[];if(W.push($.local?"Z?":"Z"),$.offset)W.push("([+-]\\d{2}:?\\d{2})");return J=`${J}(${W.join("|")})`,new RegExp(`^${J}$`)}function AW($,J){if((J==="v4"||!J)&&MW.test($))return!0;if((J==="v6"||!J)&&fW.test($))return!0;return!1}function EW($,J){if(!GW.test($))return!1;try{let[W]=$.split(".");if(!W)return!1;let X=W.replace(/-/g,"+").replace(/_/g,"/").padEnd(W.length+(4-W.length%4)%4,"="),Q=JSON.parse(atob(X));if(typeof Q!=="object"||Q===null)return!1;if("typ"in Q&&Q?.typ!=="JWT")return!1;if(!Q.alg)return!1;if(J&&Q.alg!==J)return!1;return!0}catch{return!1}}function LW($,J){if((J==="v4"||!J)&&zW.test($))return!0;if((J==="v6"||!J)&&SW.test($))return!0;return!1}class y extends K{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==S.string){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_type,expected:S.string,received:Q.parsedType}),A}let W=new I,X=void 0;for(let Q of this._def.checks)if(Q.kind==="min"){if($.data.length<Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),W.dirty()}else if(Q.kind==="max"){if($.data.length>Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!1,message:Q.message}),W.dirty()}else if(Q.kind==="length"){let Y=$.data.length>Q.value,G=$.data.length<Q.value;if(Y||G){if(X=this._getOrReturnCtx($,X),Y)O(X,{code:z.too_big,maximum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});else if(G)O(X,{code:z.too_small,minimum:Q.value,type:"string",inclusive:!0,exact:!0,message:Q.message});W.dirty()}}else if(Q.kind==="email"){if(!BW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"email",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="emoji"){if(!i$)i$=new RegExp(HW,"u");if(!i$.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"emoji",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="uuid"){if(!QW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"uuid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="nanoid"){if(!YW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"nanoid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="cuid"){if(!JW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"cuid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="cuid2"){if(!WW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"cuid2",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="ulid"){if(!XW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"ulid",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="url")try{new URL($.data)}catch{X=this._getOrReturnCtx($,X),O(X,{validation:"url",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="regex"){if(Q.regex.lastIndex=0,!Q.regex.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"regex",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="trim")$.data=$.data.trim();else if(Q.kind==="includes"){if(!$.data.includes(Q.value,Q.position))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:{includes:Q.value,position:Q.position},message:Q.message}),W.dirty()}else if(Q.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(Q.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(Q.kind==="startsWith"){if(!$.data.startsWith(Q.value))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:{startsWith:Q.value},message:Q.message}),W.dirty()}else if(Q.kind==="endsWith"){if(!$.data.endsWith(Q.value))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:{endsWith:Q.value},message:Q.message}),W.dirty()}else if(Q.kind==="datetime"){if(!G2(Q).test($.data))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:"datetime",message:Q.message}),W.dirty()}else if(Q.kind==="date"){if(!NW.test($.data))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:"date",message:Q.message}),W.dirty()}else if(Q.kind==="time"){if(!UW(Q).test($.data))X=this._getOrReturnCtx($,X),O(X,{code:z.invalid_string,validation:"time",message:Q.message}),W.dirty()}else if(Q.kind==="duration"){if(!_W.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"duration",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="ip"){if(!AW($.data,Q.version))X=this._getOrReturnCtx($,X),O(X,{validation:"ip",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="jwt"){if(!EW($.data,Q.alg))X=this._getOrReturnCtx($,X),O(X,{validation:"jwt",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="cidr"){if(!LW($.data,Q.version))X=this._getOrReturnCtx($,X),O(X,{validation:"cidr",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="base64"){if(!VW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"base64",code:z.invalid_string,message:Q.message}),W.dirty()}else if(Q.kind==="base64url"){if(!OW.test($.data))X=this._getOrReturnCtx($,X),O(X,{validation:"base64url",code:z.invalid_string,message:Q.message}),W.dirty()}else D.assertNever(Q);return{status:W.value,value:$.data}}_regex($,J,W){return this.refinement((X)=>$.test(X),{validation:J,code:z.invalid_string,...U.errToObj(W)})}_addCheck($){return new y({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...U.errToObj($)})}url($){return this._addCheck({kind:"url",...U.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...U.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...U.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...U.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...U.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...U.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...U.errToObj($)})}base64($){return this._addCheck({kind:"base64",...U.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...U.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...U.errToObj($)})}ip($){return this._addCheck({kind:"ip",...U.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...U.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,...U.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,...U.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...U.errToObj($)})}regex($,J){return this._addCheck({kind:"regex",regex:$,...U.errToObj(J)})}includes($,J){return this._addCheck({kind:"includes",value:$,position:J?.position,...U.errToObj(J?.message)})}startsWith($,J){return this._addCheck({kind:"startsWith",value:$,...U.errToObj(J)})}endsWith($,J){return this._addCheck({kind:"endsWith",value:$,...U.errToObj(J)})}min($,J){return this._addCheck({kind:"min",value:$,...U.errToObj(J)})}max($,J){return this._addCheck({kind:"max",value:$,...U.errToObj(J)})}length($,J){return this._addCheck({kind:"length",value:$,...U.errToObj(J)})}nonempty($){return this.min(1,U.errToObj($))}trim(){return new y({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new y({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new y({...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 $}}y.create=($)=>{return new y({checks:[],typeName:L.ZodString,coerce:$?.coerce??!1,...j($)})};function qW($,J){let W=($.toString().split(".")[1]||"").length,X=(J.toString().split(".")[1]||"").length,Q=W>X?W:X,Y=Number.parseInt($.toFixed(Q).replace(".","")),G=Number.parseInt(J.toFixed(Q).replace(".",""));return Y%G/10**Q}class J0 extends K{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($)!==S.number){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_type,expected:S.number,received:Q.parsedType}),A}let W=void 0,X=new I;for(let Q of this._def.checks)if(Q.kind==="int"){if(!D.isInteger($.data))W=this._getOrReturnCtx($,W),O(W,{code:z.invalid_type,expected:"integer",received:"float",message:Q.message}),X.dirty()}else if(Q.kind==="min"){if(Q.inclusive?$.data<Q.value:$.data<=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_small,minimum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),X.dirty()}else if(Q.kind==="max"){if(Q.inclusive?$.data>Q.value:$.data>=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_big,maximum:Q.value,type:"number",inclusive:Q.inclusive,exact:!1,message:Q.message}),X.dirty()}else if(Q.kind==="multipleOf"){if(qW($.data,Q.value)!==0)W=this._getOrReturnCtx($,W),O(W,{code:z.not_multiple_of,multipleOf:Q.value,message:Q.message}),X.dirty()}else if(Q.kind==="finite"){if(!Number.isFinite($.data))W=this._getOrReturnCtx($,W),O(W,{code:z.not_finite,message:Q.message}),X.dirty()}else D.assertNever(Q);return{status:X.value,value:$.data}}gte($,J){return this.setLimit("min",$,!0,U.toString(J))}gt($,J){return this.setLimit("min",$,!1,U.toString(J))}lte($,J){return this.setLimit("max",$,!0,U.toString(J))}lt($,J){return this.setLimit("max",$,!1,U.toString(J))}setLimit($,J,W,X){return new J0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:W,message:U.toString(X)}]})}_addCheck($){return new J0({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:U.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:U.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:U.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:U.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:U.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:U.toString(J)})}finite($){return this._addCheck({kind:"finite",message:U.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:U.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:U.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"&&D.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($)}}J0.create=($)=>{return new J0({checks:[],typeName:L.ZodNumber,coerce:$?.coerce||!1,...j($)})};class W0 extends K{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($)!==S.bigint)return this._getInvalidInput($);let W=void 0,X=new I;for(let Q of this._def.checks)if(Q.kind==="min"){if(Q.inclusive?$.data<Q.value:$.data<=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_small,type:"bigint",minimum:Q.value,inclusive:Q.inclusive,message:Q.message}),X.dirty()}else if(Q.kind==="max"){if(Q.inclusive?$.data>Q.value:$.data>=Q.value)W=this._getOrReturnCtx($,W),O(W,{code:z.too_big,type:"bigint",maximum:Q.value,inclusive:Q.inclusive,message:Q.message}),X.dirty()}else if(Q.kind==="multipleOf"){if($.data%Q.value!==BigInt(0))W=this._getOrReturnCtx($,W),O(W,{code:z.not_multiple_of,multipleOf:Q.value,message:Q.message}),X.dirty()}else D.assertNever(Q);return{status:X.value,value:$.data}}_getInvalidInput($){let J=this._getOrReturnCtx($);return O(J,{code:z.invalid_type,expected:S.bigint,received:J.parsedType}),A}gte($,J){return this.setLimit("min",$,!0,U.toString(J))}gt($,J){return this.setLimit("min",$,!1,U.toString(J))}lte($,J){return this.setLimit("max",$,!0,U.toString(J))}lt($,J){return this.setLimit("max",$,!1,U.toString(J))}setLimit($,J,W,X){return new W0({...this._def,checks:[...this._def.checks,{kind:$,value:J,inclusive:W,message:U.toString(X)}]})}_addCheck($){return new W0({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:U.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:U.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:U.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:U.toString($)})}multipleOf($,J){return this._addCheck({kind:"multipleOf",value:$,message:U.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 $}}W0.create=($)=>{return new W0({checks:[],typeName:L.ZodBigInt,coerce:$?.coerce??!1,...j($)})};class q0 extends K{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==S.boolean){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.boolean,received:W.parsedType}),A}return P($.data)}}q0.create=($)=>{return new q0({typeName:L.ZodBoolean,coerce:$?.coerce||!1,...j($)})};class M0 extends K{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==S.date){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_type,expected:S.date,received:Q.parsedType}),A}if(Number.isNaN($.data.getTime())){let Q=this._getOrReturnCtx($);return O(Q,{code:z.invalid_date}),A}let W=new I,X=void 0;for(let Q of this._def.checks)if(Q.kind==="min"){if($.data.getTime()<Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_small,message:Q.message,inclusive:!0,exact:!1,minimum:Q.value,type:"date"}),W.dirty()}else if(Q.kind==="max"){if($.data.getTime()>Q.value)X=this._getOrReturnCtx($,X),O(X,{code:z.too_big,message:Q.message,inclusive:!0,exact:!1,maximum:Q.value,type:"date"}),W.dirty()}else D.assertNever(Q);return{status:W.value,value:new Date($.data.getTime())}}_addCheck($){return new M0({...this._def,checks:[...this._def.checks,$]})}min($,J){return this._addCheck({kind:"min",value:$.getTime(),message:U.toString(J)})}max($,J){return this._addCheck({kind:"max",value:$.getTime(),message:U.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}}M0.create=($)=>{return new M0({checks:[],coerce:$?.coerce||!1,typeName:L.ZodDate,...j($)})};class l0 extends K{_parse($){if(this._getType($)!==S.symbol){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.symbol,received:W.parsedType}),A}return P($.data)}}l0.create=($)=>{return new l0({typeName:L.ZodSymbol,...j($)})};class j0 extends K{_parse($){if(this._getType($)!==S.undefined){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.undefined,received:W.parsedType}),A}return P($.data)}}j0.create=($)=>{return new j0({typeName:L.ZodUndefined,...j($)})};class K0 extends K{_parse($){if(this._getType($)!==S.null){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.null,received:W.parsedType}),A}return P($.data)}}K0.create=($)=>{return new K0({typeName:L.ZodNull,...j($)})};class z0 extends K{constructor(){super(...arguments);this._any=!0}_parse($){return P($.data)}}z0.create=($)=>{return new z0({typeName:L.ZodAny,...j($)})};class $0 extends K{constructor(){super(...arguments);this._unknown=!0}_parse($){return P($.data)}}$0.create=($)=>{return new $0({typeName:L.ZodUnknown,...j($)})};class i extends K{_parse($){let J=this._getOrReturnCtx($);return O(J,{code:z.invalid_type,expected:S.never,received:J.parsedType}),A}}i.create=($)=>{return new i({typeName:L.ZodNever,...j($)})};class c0 extends K{_parse($){if(this._getType($)!==S.undefined){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.void,received:W.parsedType}),A}return P($.data)}}c0.create=($)=>{return new c0({typeName:L.ZodVoid,...j($)})};class m extends K{_parse($){let{ctx:J,status:W}=this._processInputParams($),X=this._def;if(J.parsedType!==S.array)return O(J,{code:z.invalid_type,expected:S.array,received:J.parsedType}),A;if(X.exactLength!==null){let Y=J.data.length>X.exactLength.value,G=J.data.length<X.exactLength.value;if(Y||G)O(J,{code:Y?z.too_big:z.too_small,minimum:G?X.exactLength.value:void 0,maximum:Y?X.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:X.exactLength.message}),W.dirty()}if(X.minLength!==null){if(J.data.length<X.minLength.value)O(J,{code:z.too_small,minimum:X.minLength.value,type:"array",inclusive:!0,exact:!1,message:X.minLength.message}),W.dirty()}if(X.maxLength!==null){if(J.data.length>X.maxLength.value)O(J,{code:z.too_big,maximum:X.maxLength.value,type:"array",inclusive:!0,exact:!1,message:X.maxLength.message}),W.dirty()}if(J.common.async)return Promise.all([...J.data].map((Y,G)=>{return X.type._parseAsync(new c(J,Y,J.path,G))})).then((Y)=>{return I.mergeArray(W,Y)});let Q=[...J.data].map((Y,G)=>{return X.type._parseSync(new c(J,Y,J.path,G))});return I.mergeArray(W,Q)}get element(){return this._def.type}min($,J){return new m({...this._def,minLength:{value:$,message:U.toString(J)}})}max($,J){return new m({...this._def,maxLength:{value:$,message:U.toString(J)}})}length($,J){return new m({...this._def,exactLength:{value:$,message:U.toString(J)}})}nonempty($){return this.min(1,$)}}m.create=($,J)=>{return new m({type:$,minLength:null,maxLength:null,exactLength:null,typeName:L.ZodArray,...j(J)})};function E0($){if($ instanceof v){let J={};for(let W in $.shape){let X=$.shape[W];J[W]=l.create(E0(X))}return new v({...$._def,shape:()=>J})}else if($ instanceof m)return new m({...$._def,type:E0($.element)});else if($ instanceof l)return l.create(E0($.unwrap()));else if($ instanceof s)return s.create(E0($.unwrap()));else if($ instanceof r)return r.create($.items.map((J)=>E0(J)));else return $}class v extends K{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=D.objectKeys($);return this._cached={shape:$,keys:J},this._cached}_parse($){if(this._getType($)!==S.object){let B=this._getOrReturnCtx($);return O(B,{code:z.invalid_type,expected:S.object,received:B.parsedType}),A}let{status:W,ctx:X}=this._processInputParams($),{shape:Q,keys:Y}=this._getCached(),G=[];if(!(this._def.catchall instanceof i&&this._def.unknownKeys==="strip")){for(let B in X.data)if(!Y.includes(B))G.push(B)}let _=[];for(let B of Y){let H=Q[B],M=X.data[B];_.push({key:{status:"valid",value:B},value:H._parse(new c(X,M,X.path,B)),alwaysSet:B in X.data})}if(this._def.catchall instanceof i){let B=this._def.unknownKeys;if(B==="passthrough")for(let H of G)_.push({key:{status:"valid",value:H},value:{status:"valid",value:X.data[H]}});else if(B==="strict"){if(G.length>0)O(X,{code:z.unrecognized_keys,keys:G}),W.dirty()}else if(B==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let B=this._def.catchall;for(let H of G){let M=X.data[H];_.push({key:{status:"valid",value:H},value:B._parse(new c(X,M,X.path,H)),alwaysSet:H in X.data})}}if(X.common.async)return Promise.resolve().then(async()=>{let B=[];for(let H of _){let M=await H.key,V=await H.value;B.push({key:M,value:V,alwaysSet:H.alwaysSet})}return B}).then((B)=>{return I.mergeObjectSync(W,B)});else return I.mergeObjectSync(W,_)}get shape(){return this._def.shape()}strict($){return U.errToObj,new v({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(J,W)=>{let X=this._def.errorMap?.(J,W).message??W.defaultError;if(J.code==="unrecognized_keys")return{message:U.errToObj($).message??X};return{message:X}}}:{}})}strip(){return new v({...this._def,unknownKeys:"strip"})}passthrough(){return new v({...this._def,unknownKeys:"passthrough"})}extend($){return new v({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new v({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:L.ZodObject})}setKey($,J){return this.augment({[$]:J})}catchall($){return new v({...this._def,catchall:$})}pick($){let J={};for(let W of D.objectKeys($))if($[W]&&this.shape[W])J[W]=this.shape[W];return new v({...this._def,shape:()=>J})}omit($){let J={};for(let W of D.objectKeys(this.shape))if(!$[W])J[W]=this.shape[W];return new v({...this._def,shape:()=>J})}deepPartial(){return E0(this)}partial($){let J={};for(let W of D.objectKeys(this.shape)){let X=this.shape[W];if($&&!$[W])J[W]=X;else J[W]=X.optional()}return new v({...this._def,shape:()=>J})}required($){let J={};for(let W of D.objectKeys(this.shape))if($&&!$[W])J[W]=this.shape[W];else{let Q=this.shape[W];while(Q instanceof l)Q=Q._def.innerType;J[W]=Q}return new v({...this._def,shape:()=>J})}keyof(){return _2(D.objectKeys(this.shape))}}v.create=($,J)=>{return new v({shape:()=>$,unknownKeys:"strip",catchall:i.create(),typeName:L.ZodObject,...j(J)})};v.strictCreate=($,J)=>{return new v({shape:()=>$,unknownKeys:"strict",catchall:i.create(),typeName:L.ZodObject,...j(J)})};v.lazycreate=($,J)=>{return new v({shape:$,unknownKeys:"strip",catchall:i.create(),typeName:L.ZodObject,...j(J)})};class D0 extends K{_parse($){let{ctx:J}=this._processInputParams($),W=this._def.options;function X(Q){for(let G of Q)if(G.result.status==="valid")return G.result;for(let G of Q)if(G.result.status==="dirty")return J.common.issues.push(...G.ctx.common.issues),G.result;let Y=Q.map((G)=>new T(G.ctx.common.issues));return O(J,{code:z.invalid_union,unionErrors:Y}),A}if(J.common.async)return Promise.all(W.map(async(Q)=>{let Y={...J,common:{...J.common,issues:[]},parent:null};return{result:await Q._parseAsync({data:J.data,path:J.path,parent:Y}),ctx:Y}})).then(X);else{let Q=void 0,Y=[];for(let _ of W){let B={...J,common:{...J.common,issues:[]},parent:null},H=_._parseSync({data:J.data,path:J.path,parent:B});if(H.status==="valid")return H;else if(H.status==="dirty"&&!Q)Q={result:H,ctx:B};if(B.common.issues.length)Y.push(B.common.issues)}if(Q)return J.common.issues.push(...Q.ctx.common.issues),Q.result;let G=Y.map((_)=>new T(_));return O(J,{code:z.invalid_union,unionErrors:G}),A}}get options(){return this._def.options}}D0.create=($,J)=>{return new D0({options:$,typeName:L.ZodUnion,...j(J)})};var a=($)=>{if($ instanceof F0)return a($.schema);else if($ instanceof u)return a($.innerType());else if($ instanceof R0)return[$.value];else if($ instanceof X0)return $.options;else if($ instanceof C0)return D.objectValues($.enum);else if($ instanceof v0)return a($._def.innerType);else if($ instanceof j0)return[void 0];else if($ instanceof K0)return[null];else if($ instanceof l)return[void 0,...a($.unwrap())];else if($ instanceof s)return[null,...a($.unwrap())];else if($ instanceof N$)return a($.unwrap());else if($ instanceof I0)return a($.unwrap());else if($ instanceof k0)return a($._def.innerType);else return[]};class O$ extends K{_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==S.object)return O(J,{code:z.invalid_type,expected:S.object,received:J.parsedType}),A;let W=this.discriminator,X=J.data[W],Q=this.optionsMap.get(X);if(!Q)return O(J,{code:z.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[W]}),A;if(J.common.async)return Q._parseAsync({data:J.data,path:J.path,parent:J});else return Q._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 X=new Map;for(let Q of J){let Y=a(Q.shape[$]);if(!Y.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let G of Y){if(X.has(G))throw Error(`Discriminator property ${String($)} has duplicate value ${String(G)}`);X.set(G,Q)}}return new O$({typeName:L.ZodDiscriminatedUnion,discriminator:$,options:J,optionsMap:X,...j(W)})}}function r$($,J){let W=n($),X=n(J);if($===J)return{valid:!0,data:$};else if(W===S.object&&X===S.object){let Q=D.objectKeys(J),Y=D.objectKeys($).filter((_)=>Q.indexOf(_)!==-1),G={...$,...J};for(let _ of Y){let B=r$($[_],J[_]);if(!B.valid)return{valid:!1};G[_]=B.data}return{valid:!0,data:G}}else if(W===S.array&&X===S.array){if($.length!==J.length)return{valid:!1};let Q=[];for(let Y=0;Y<$.length;Y++){let G=$[Y],_=J[Y],B=r$(G,_);if(!B.valid)return{valid:!1};Q.push(B.data)}return{valid:!0,data:Q}}else if(W===S.date&&X===S.date&&+$===+J)return{valid:!0,data:$};else return{valid:!1}}class w0 extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($),X=(Q,Y)=>{if(S$(Q)||S$(Y))return A;let G=r$(Q.value,Y.value);if(!G.valid)return O(W,{code:z.invalid_intersection_types}),A;if(V$(Q)||V$(Y))J.dirty();return{status:J.value,value:G.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(([Q,Y])=>X(Q,Y));else return X(this._def.left._parseSync({data:W.data,path:W.path,parent:W}),this._def.right._parseSync({data:W.data,path:W.path,parent:W}))}}w0.create=($,J,W)=>{return new w0({left:$,right:J,typeName:L.ZodIntersection,...j(W)})};class r extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.array)return O(W,{code:z.invalid_type,expected:S.array,received:W.parsedType}),A;if(W.data.length<this._def.items.length)return O(W,{code:z.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),A;if(!this._def.rest&&W.data.length>this._def.items.length)O(W,{code:z.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),J.dirty();let Q=[...W.data].map((Y,G)=>{let _=this._def.items[G]||this._def.rest;if(!_)return null;return _._parse(new c(W,Y,W.path,G))}).filter((Y)=>!!Y);if(W.common.async)return Promise.all(Q).then((Y)=>{return I.mergeArray(J,Y)});else return I.mergeArray(J,Q)}get items(){return this._def.items}rest($){return new r({...this._def,rest:$})}}r.create=($,J)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new r({items:$,typeName:L.ZodTuple,rest:null,...j(J)})};class u0 extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.object)return O(W,{code:z.invalid_type,expected:S.object,received:W.parsedType}),A;let X=[],Q=this._def.keyType,Y=this._def.valueType;for(let G in W.data)X.push({key:Q._parse(new c(W,G,W.path,G)),value:Y._parse(new c(W,W.data[G],W.path,G)),alwaysSet:G in W.data});if(W.common.async)return I.mergeObjectAsync(J,X);else return I.mergeObjectSync(J,X)}get element(){return this._def.valueType}static create($,J,W){if(J instanceof K)return new u0({keyType:$,valueType:J,typeName:L.ZodRecord,...j(W)});return new u0({keyType:y.create(),valueType:$,typeName:L.ZodRecord,...j(J)})}}class p0 extends K{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.map)return O(W,{code:z.invalid_type,expected:S.map,received:W.parsedType}),A;let X=this._def.keyType,Q=this._def.valueType,Y=[...W.data.entries()].map(([G,_],B)=>{return{key:X._parse(new c(W,G,W.path,[B,"key"])),value:Q._parse(new c(W,_,W.path,[B,"value"]))}});if(W.common.async){let G=new Map;return Promise.resolve().then(async()=>{for(let _ of Y){let B=await _.key,H=await _.value;if(B.status==="aborted"||H.status==="aborted")return A;if(B.status==="dirty"||H.status==="dirty")J.dirty();G.set(B.value,H.value)}return{status:J.value,value:G}})}else{let G=new Map;for(let _ of Y){let{key:B,value:H}=_;if(B.status==="aborted"||H.status==="aborted")return A;if(B.status==="dirty"||H.status==="dirty")J.dirty();G.set(B.value,H.value)}return{status:J.value,value:G}}}}p0.create=($,J,W)=>{return new p0({valueType:J,keyType:$,typeName:L.ZodMap,...j(W)})};class f0 extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.parsedType!==S.set)return O(W,{code:z.invalid_type,expected:S.set,received:W.parsedType}),A;let X=this._def;if(X.minSize!==null){if(W.data.size<X.minSize.value)O(W,{code:z.too_small,minimum:X.minSize.value,type:"set",inclusive:!0,exact:!1,message:X.minSize.message}),J.dirty()}if(X.maxSize!==null){if(W.data.size>X.maxSize.value)O(W,{code:z.too_big,maximum:X.maxSize.value,type:"set",inclusive:!0,exact:!1,message:X.maxSize.message}),J.dirty()}let Q=this._def.valueType;function Y(_){let B=new Set;for(let H of _){if(H.status==="aborted")return A;if(H.status==="dirty")J.dirty();B.add(H.value)}return{status:J.value,value:B}}let G=[...W.data.values()].map((_,B)=>Q._parse(new c(W,_,W.path,B)));if(W.common.async)return Promise.all(G).then((_)=>Y(_));else return Y(G)}min($,J){return new f0({...this._def,minSize:{value:$,message:U.toString(J)}})}max($,J){return new f0({...this._def,maxSize:{value:$,message:U.toString(J)}})}size($,J){return this.min($,J).max($,J)}nonempty($){return this.min(1,$)}}f0.create=($,J)=>{return new f0({valueType:$,minSize:null,maxSize:null,typeName:L.ZodSet,...j(J)})};class L0 extends K{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==S.function)return O(J,{code:z.invalid_type,expected:S.function,received:J.parsedType}),A;function W(G,_){return m0({data:G,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,U0(),o].filter((B)=>!!B),issueData:{code:z.invalid_arguments,argumentsError:_}})}function X(G,_){return m0({data:G,path:J.path,errorMaps:[J.common.contextualErrorMap,J.schemaErrorMap,U0(),o].filter((B)=>!!B),issueData:{code:z.invalid_return_type,returnTypeError:_}})}let Q={errorMap:J.common.contextualErrorMap},Y=J.data;if(this._def.returns instanceof S0){let G=this;return P(async function(..._){let B=new T([]),H=await G._def.args.parseAsync(_,Q).catch((N)=>{throw B.addIssue(W(_,N)),B}),M=await Reflect.apply(Y,this,H);return await G._def.returns._def.type.parseAsync(M,Q).catch((N)=>{throw B.addIssue(X(M,N)),B})})}else{let G=this;return P(function(..._){let B=G._def.args.safeParse(_,Q);if(!B.success)throw new T([W(_,B.error)]);let H=Reflect.apply(Y,this,B.data),M=G._def.returns.safeParse(H,Q);if(!M.success)throw new T([X(H,M.error)]);return M.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new L0({...this._def,args:r.create($).rest($0.create())})}returns($){return new L0({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,J,W){return new L0({args:$?$:r.create([]).rest($0.create()),returns:J||$0.create(),typeName:L.ZodFunction,...j(W)})}}class F0 extends K{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})}}F0.create=($,J)=>{return new F0({getter:$,typeName:L.ZodLazy,...j(J)})};class R0 extends K{_parse($){if($.data!==this._def.value){let J=this._getOrReturnCtx($);return O(J,{received:J.data,code:z.invalid_literal,expected:this._def.value}),A}return{status:"valid",value:$.data}}get value(){return this._def.value}}R0.create=($,J)=>{return new R0({value:$,typeName:L.ZodLiteral,...j(J)})};function _2($,J){return new X0({values:$,typeName:L.ZodEnum,...j(J)})}class X0 extends K{_parse($){if(typeof $.data!=="string"){let J=this._getOrReturnCtx($),W=this._def.values;return O(J,{expected:D.joinValues(W),received:J.parsedType,code:z.invalid_type}),A}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let J=this._getOrReturnCtx($),W=this._def.values;return O(J,{received:J.data,code:z.invalid_enum_value,options:W}),A}return P($.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 X0.create($,{...this._def,...J})}exclude($,J=this._def){return X0.create(this.options.filter((W)=>!$.includes(W)),{...this._def,...J})}}X0.create=_2;class C0 extends K{_parse($){let J=D.getValidEnumValues(this._def.values),W=this._getOrReturnCtx($);if(W.parsedType!==S.string&&W.parsedType!==S.number){let X=D.objectValues(J);return O(W,{expected:D.joinValues(X),received:W.parsedType,code:z.invalid_type}),A}if(!this._cache)this._cache=new Set(D.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let X=D.objectValues(J);return O(W,{received:W.data,code:z.invalid_enum_value,options:X}),A}return P($.data)}get enum(){return this._def.values}}C0.create=($,J)=>{return new C0({values:$,typeName:L.ZodNativeEnum,...j(J)})};class S0 extends K{unwrap(){return this._def.type}_parse($){let{ctx:J}=this._processInputParams($);if(J.parsedType!==S.promise&&J.common.async===!1)return O(J,{code:z.invalid_type,expected:S.promise,received:J.parsedType}),A;let W=J.parsedType===S.promise?J.data:Promise.resolve(J.data);return P(W.then((X)=>{return this._def.type.parseAsync(X,{path:J.path,errorMap:J.common.contextualErrorMap})}))}}S0.create=($,J)=>{return new S0({type:$,typeName:L.ZodPromise,...j(J)})};class u extends K{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===L.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:J,ctx:W}=this._processInputParams($),X=this._def.effect||null,Q={addIssue:(Y)=>{if(O(W,Y),Y.fatal)J.abort();else J.dirty()},get path(){return W.path}};if(Q.addIssue=Q.addIssue.bind(Q),X.type==="preprocess"){let Y=X.transform(W.data,Q);if(W.common.async)return Promise.resolve(Y).then(async(G)=>{if(J.value==="aborted")return A;let _=await this._def.schema._parseAsync({data:G,path:W.path,parent:W});if(_.status==="aborted")return A;if(_.status==="dirty")return H0(_.value);if(J.value==="dirty")return H0(_.value);return _});else{if(J.value==="aborted")return A;let G=this._def.schema._parseSync({data:Y,path:W.path,parent:W});if(G.status==="aborted")return A;if(G.status==="dirty")return H0(G.value);if(J.value==="dirty")return H0(G.value);return G}}if(X.type==="refinement"){let Y=(G)=>{let _=X.refinement(G,Q);if(W.common.async)return Promise.resolve(_);if(_ instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return G};if(W.common.async===!1){let G=this._def.schema._parseSync({data:W.data,path:W.path,parent:W});if(G.status==="aborted")return A;if(G.status==="dirty")J.dirty();return Y(G.value),{status:J.value,value:G.value}}else return this._def.schema._parseAsync({data:W.data,path:W.path,parent:W}).then((G)=>{if(G.status==="aborted")return A;if(G.status==="dirty")J.dirty();return Y(G.value).then(()=>{return{status:J.value,value:G.value}})})}if(X.type==="transform")if(W.common.async===!1){let Y=this._def.schema._parseSync({data:W.data,path:W.path,parent:W});if(!e(Y))return A;let G=X.transform(Y.value,Q);if(G instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:J.value,value:G}}else return this._def.schema._parseAsync({data:W.data,path:W.path,parent:W}).then((Y)=>{if(!e(Y))return A;return Promise.resolve(X.transform(Y.value,Q)).then((G)=>({status:J.value,value:G}))});D.assertNever(X)}}u.create=($,J,W)=>{return new u({schema:$,typeName:L.ZodEffects,effect:J,...j(W)})};u.createWithPreprocess=($,J,W)=>{return new u({schema:J,effect:{type:"preprocess",transform:$},typeName:L.ZodEffects,...j(W)})};class l extends K{_parse($){if(this._getType($)===S.undefined)return P(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}l.create=($,J)=>{return new l({innerType:$,typeName:L.ZodOptional,...j(J)})};class s extends K{_parse($){if(this._getType($)===S.null)return P(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}s.create=($,J)=>{return new s({innerType:$,typeName:L.ZodNullable,...j(J)})};class v0 extends K{_parse($){let{ctx:J}=this._processInputParams($),W=J.data;if(J.parsedType===S.undefined)W=this._def.defaultValue();return this._def.innerType._parse({data:W,path:J.path,parent:J})}removeDefault(){return this._def.innerType}}v0.create=($,J)=>{return new v0({innerType:$,typeName:L.ZodDefault,defaultValue:typeof J.default==="function"?J.default:()=>J.default,...j(J)})};class k0 extends K{_parse($){let{ctx:J}=this._processInputParams($),W={...J,common:{...J.common,issues:[]}},X=this._def.innerType._parse({data:W.data,path:W.path,parent:{...W}});if(A0(X))return X.then((Q)=>{return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new T(W.common.issues)},input:W.data})}});else return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new T(W.common.issues)},input:W.data})}}removeCatch(){return this._def.innerType}}k0.create=($,J)=>{return new k0({innerType:$,typeName:L.ZodCatch,catchValue:typeof J.catch==="function"?J.catch:()=>J.catch,...j(J)})};class n0 extends K{_parse($){if(this._getType($)!==S.nan){let W=this._getOrReturnCtx($);return O(W,{code:z.invalid_type,expected:S.nan,received:W.parsedType}),A}return{status:"valid",value:$.data}}}n0.create=($)=>{return new n0({typeName:L.ZodNaN,...j($)})};var jW=Symbol("zod_brand");class N$ extends K{_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 i0 extends K{_parse($){let{status:J,ctx:W}=this._processInputParams($);if(W.common.async)return(async()=>{let Q=await this._def.in._parseAsync({data:W.data,path:W.path,parent:W});if(Q.status==="aborted")return A;if(Q.status==="dirty")return J.dirty(),H0(Q.value);else return this._def.out._parseAsync({data:Q.value,path:W.path,parent:W})})();else{let X=this._def.in._parseSync({data:W.data,path:W.path,parent:W});if(X.status==="aborted")return A;if(X.status==="dirty")return J.dirty(),{status:"dirty",value:X.value};else return this._def.out._parseSync({data:X.value,path:W.path,parent:W})}}static create($,J){return new i0({in:$,out:J,typeName:L.ZodPipeline})}}class I0 extends K{_parse($){let J=this._def.innerType._parse($),W=(X)=>{if(e(X))X.value=Object.freeze(X.value);return X};return A0(J)?J.then((X)=>W(X)):W(J)}unwrap(){return this._def.innerType}}I0.create=($,J)=>{return new I0({innerType:$,typeName:L.ZodReadonly,...j(J)})};function X2($,J){let W=typeof $==="function"?$(J):typeof $==="string"?{message:$}:$;return typeof W==="string"?{message:W}:W}function B2($,J={},W){if($)return z0.create().superRefine((X,Q)=>{let Y=$(X);if(Y instanceof Promise)return Y.then((G)=>{if(!G){let _=X2(J,X),B=_.fatal??W??!0;Q.addIssue({code:"custom",..._,fatal:B})}});if(!Y){let G=X2(J,X),_=G.fatal??W??!0;Q.addIssue({code:"custom",...G,fatal:_})}return});return z0.create()}var KW={object:v.lazycreate},L;(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"})(L||(L={}));var DW=($,J={message:`Input not instance of ${$.name}`})=>B2((W)=>W instanceof $,J),H2=y.create,M2=J0.create,wW=n0.create,FW=W0.create,z2=q0.create,RW=M0.create,CW=l0.create,vW=j0.create,kW=K0.create,IW=z0.create,bW=$0.create,PW=i.create,TW=c0.create,gW=m.create,xW=v.create,hW=v.strictCreate,ZW=D0.create,yW=O$.create,mW=w0.create,lW=r.create,cW=u0.create,uW=p0.create,pW=f0.create,nW=L0.create,iW=F0.create,rW=R0.create,dW=X0.create,oW=C0.create,aW=S0.create,sW=u.create,tW=l.create,eW=s.create,$8=u.createWithPreprocess,J8=i0.create,W8=()=>H2().optional(),X8=()=>M2().optional(),Q8=()=>z2().optional(),Y8={string:($)=>y.create({...$,coerce:!0}),number:($)=>J0.create({...$,coerce:!0}),boolean:($)=>q0.create({...$,coerce:!0}),bigint:($)=>W0.create({...$,coerce:!0}),date:($)=>M0.create({...$,coerce:!0})};var G8=A;var f2=w.object({format:w.enum(["json"]).default("json").describe("Export format (currently only JSON supported)"),type:w.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:w.number().min(1).optional().describe("Maximum number of observations to export")});function S2($,J,W,X){return{name:"mem-export",description:`Export project memories (observations and session summaries) as portable JSON.
|
|
354
354
|
Use this to back up memories, transfer them between machines, or share context across environments.
|
|
355
|
-
Returns a JSON string \u2014 the agent can write it to a file if needed.`,args:
|
|
355
|
+
Returns a JSON string \u2014 the agent can write it to a file if needed.`,args:f2.shape,execute:async(Q)=>{try{let Y=f2.parse(Q),G=W.getAll(X);if(G.length===0)return"No sessions found for this project. Nothing to export.";let _=[];for(let N of G)_.push(...$.getBySession(N.id));if(Y.type)_=_.filter((N)=>N.type===Y.type);if(_.sort((N,E)=>new Date(N.createdAt).getTime()-new Date(E.createdAt).getTime()),Y.limit&&Y.limit<_.length)_=_.slice(0,Y.limit);let B=_.map(({rawToolOutput:N,...E})=>E),H=[];for(let N of G){let E=J.getBySessionId(N.id);if(E)H.push(E)}let M={version:1,exportedAt:new Date().toISOString(),project:X,observations:B,summaries:H},V=JSON.stringify(M,null,2);return`Exported ${B.length} observation(s) and ${H.length} summary(ies).
|
|
356
356
|
|
|
357
|
-
${V}`}catch(Y){return`Export error: ${Y}`}}}}var
|
|
357
|
+
${V}`}catch(Y){return`Export error: ${Y}`}}}}var V2=w.object({data:w.string().describe("JSON string from a mem-export output")});function O2($,J,W,X){return{name:"mem-import",description:`Import observations and session summaries from a JSON export.
|
|
358
358
|
Use this to restore memories from a backup, or import memories from another machine.
|
|
359
|
-
Skips duplicate observations (by ID) and summaries (by session ID).`,args:
|
|
359
|
+
Skips duplicate observations (by ID) and summaries (by session ID).`,args:V2.shape,execute:async(Q)=>{try{let Y=V2.parse(Q),G;try{G=JSON.parse(Y.data)}catch{return"Import error: Invalid JSON. Please provide valid JSON from a mem-export."}if(typeof G!=="object"||G===null)return"Import error: Invalid JSON structure.";let _=G;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 B=_,H=0,M=0,V=0,N=0;for(let f of B.observations){if(!f.id||typeof f.id!=="string"||!f.sessionId||typeof f.sessionId!=="string"||!f.type||typeof f.type!=="string"||!f.title||typeof f.title!=="string"||!f.createdAt||typeof f.createdAt!=="string"){M++;continue}if($.getById(f.id)){M++;continue}W.getOrCreate(f.sessionId,X),$.importObservation({id:f.id,sessionId:f.sessionId,type:f.type,title:f.title,subtitle:f.subtitle??"",facts:f.facts??[],narrative:f.narrative??"",concepts:f.concepts??[],filesRead:f.filesRead??[],filesModified:f.filesModified??[],rawToolOutput:f.rawToolOutput??"",toolName:f.toolName??"unknown",createdAt:f.createdAt,tokenCount:f.tokenCount??0,discoveryTokens:f.discoveryTokens??0}),W.incrementObservationCount(f.sessionId),H++}if(Array.isArray(B.summaries))for(let f of B.summaries){if(J.getBySessionId(f.sessionId)){N++;continue}W.getOrCreate(f.sessionId,X),J.importSummary({id:f.id,sessionId:f.sessionId,summary:f.summary??"",keyDecisions:f.keyDecisions??[],filesModified:f.filesModified??[],concepts:f.concepts??[],createdAt:f.createdAt,tokenCount:f.tokenCount??0,request:f.request,investigated:f.investigated,learned:f.learned,completed:f.completed,nextSteps:f.nextSteps}),W.setSummary(f.sessionId,f.id),V++}let E=[];if(E.push(`Imported ${H} observation(s)`),E.push(`${V} summary(ies)`),M>0)E.push(`Skipped ${M} duplicate observation(s)`);if(N>0)E.push(`skipped ${N} duplicate summary(ies)`);return`${E.join(". ")}.`}catch(Y){return`Import error: ${Y}`}}}}var N2=w.object({ids:w.array(w.string()).describe("Observation IDs to fetch"),limit:w.number().min(1).max(50).default(10).describe("Maximum number of results")});function U2($){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:N2.shape,execute:async(J)=>{try{let W=N2.parse(J),X=W.ids.slice(0,W.limit),Q=[];for(let Y of X){let G=$.getById(Y);if(G)Q.push(_8(G));else Q.push(`## ID: ${Y}
|
|
360
360
|
*Not found*`)}if(Q.length===0)return"No observation IDs provided.";return`Recalled ${Q.length} observation(s):
|
|
361
361
|
|
|
362
362
|
${Q.join(`
|
|
363
363
|
---
|
|
364
|
-
`)}`}catch(W){return`Recall error: ${W}`}}}}function
|
|
364
|
+
`)}`}catch(W){return`Recall error: ${W}`}}}}function _8($){let J=[];if(J.push(`## [${$.type.toUpperCase()}] ${$.title}`),$.subtitle)J.push(`*${$.subtitle}*`);if(J.push(`
|
|
365
365
|
${$.narrative}`),$.facts.length>0){J.push(`
|
|
366
366
|
**Facts:**`);for(let W of $.facts)J.push(`- ${W}`)}if($.concepts.length>0)J.push(`
|
|
367
367
|
**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(`
|
|
368
368
|
*ID: ${$.id} | Created: ${$.createdAt} | Tokens: ${$.tokenCount}*`),J.join(`
|
|
369
|
-
`)}var
|
|
369
|
+
`)}var A2=w.object({title:w.string().describe("Brief title for the observation (max 80 chars)"),type:w.enum(["decision","bugfix","feature","refactor","discovery","change"]).describe("Type of observation"),narrative:w.string().describe("Detailed description of what to remember"),concepts:w.array(w.string()).optional().describe("Related concepts/tags"),files:w.array(w.string()).optional().describe("Related file paths")});function E2($,J,W){return{name:"mem-save",description:`Manually save an observation to memory.
|
|
370
370
|
Use this to explicitly record important decisions, discoveries, or context
|
|
371
|
-
that should be remembered across sessions.`,args:
|
|
371
|
+
that should be remembered across sessions.`,args:A2.shape,execute:async(X,Q)=>{try{let Y=A2.parse(X);J.getOrCreate(Q.sessionID,W);let G=$.create({sessionId:Q.sessionID,type:Y.type,title:Y.title,subtitle:"",facts:[],narrative:Y.narrative,concepts:Y.concepts??[],filesRead:[],filesModified:Y.files??[],rawToolOutput:`[Manual save] ${Y.narrative}`,toolName:"mem-save",tokenCount:Z(`${Y.title} ${Y.narrative}`),discoveryTokens:0});return J.incrementObservationCount(Q.sessionID),`Saved observation: [${Y.type}] "${Y.title}" (ID: ${G.id})`}catch(Y){return`Save error: ${Y}`}}}}var L2=w.object({query:w.string().describe("Search query (supports keywords, phrases, file paths)"),type:w.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:w.number().min(1).max(50).default(10).describe("Maximum number of results")});function q2($,J,W=null,X="",Q=!1){return{name:"mem-search",description:`Search through past coding session observations and memories.
|
|
372
372
|
Use this tool to find relevant context from previous sessions, including:
|
|
373
373
|
- Past decisions and their rationale
|
|
374
374
|
- Bug fixes and their solutions
|
|
@@ -376,23 +376,23 @@ Use this tool to find relevant context from previous sessions, including:
|
|
|
376
376
|
- File modification history
|
|
377
377
|
- Concept-based knowledge retrieval
|
|
378
378
|
|
|
379
|
-
Supports full-text search with FTS5.`,args:
|
|
379
|
+
Supports full-text search with FTS5.`,args:L2.shape,execute:async(Y)=>{try{let G=L2.parse(Y),_=await z$(G.query,$,W,{type:G.type,limit:G.limit,projectPath:X,hasVectorExtension:Q});if(_.length===0){let B=J.search(G.query,G.limit);if(B.length===0)return"No matching observations or session summaries found.";return H8(B)}return B8(_)}catch(G){return`Search error: ${G}`}}}}function B8($){let J=[`Found ${$.length} observation(s):
|
|
380
380
|
`];for(let{observation:W}of $){if(J.push(`## [${W.type.toUpperCase()}] ${W.title}`),W.subtitle)J.push(`*${W.subtitle}*`);if(J.push(`
|
|
381
381
|
${W.narrative}`),W.facts.length>0){J.push(`
|
|
382
382
|
**Facts:**`);for(let X of W.facts)J.push(`- ${X}`)}if(W.concepts.length>0)J.push(`
|
|
383
383
|
**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(`
|
|
384
384
|
*Session: ${W.sessionId} | ${W.createdAt}*`),J.push("---")}return J.join(`
|
|
385
|
-
`)}function
|
|
385
|
+
`)}function H8($){let J=[`Found ${$.length} session summary(ies):
|
|
386
386
|
`];for(let W of $){if(J.push(`## Session: ${W.sessionId}`),J.push(W.summary),W.keyDecisions.length>0){J.push(`
|
|
387
387
|
**Key decisions:**`);for(let X of W.keyDecisions)J.push(`- ${X}`)}J.push("---")}return J.join(`
|
|
388
|
-
`)}var j2=w.object({limit:w.number().min(1).max(20).default(5).describe("Number of recent sessions to show"),sessionId:w.string().optional().describe("Show details for a specific session ID")});function
|
|
389
|
-
Shows recent sessions with summaries, observation counts, and key decisions.`,args:j2.shape,execute:async(Q)=>{try{let Y=j2.parse(Q);if(Y.sessionId)return
|
|
388
|
+
`)}var j2=w.object({limit:w.number().min(1).max(20).default(5).describe("Number of recent sessions to show"),sessionId:w.string().optional().describe("Show details for a specific session ID")});function K2($,J,W,X){return{name:"mem-timeline",description:`View a timeline of past coding sessions for this project.
|
|
389
|
+
Shows recent sessions with summaries, observation counts, and key decisions.`,args:j2.shape,execute:async(Q)=>{try{let Y=j2.parse(Q);if(Y.sessionId)return M8(Y.sessionId,$,J,W);let G=$.getRecent(X,Y.limit);if(G.length===0)return"No past sessions found for this project.";let _=[`# Session Timeline (${G.length} sessions)
|
|
390
390
|
`];for(let B of G){let H=B.summaryId?J.getBySessionId(B.id):null;if(_.push(`## Session: ${B.id}`),_.push(`- **Started**: ${B.startedAt}`),_.push(`- **Status**: ${B.status}`),_.push(`- **Observations**: ${B.observationCount}`),H){if(_.push(`- **Summary**: ${H.summary}`),H.keyDecisions.length>0)_.push(`- **Key decisions**: ${H.keyDecisions.join("; ")}`)}_.push("")}return _.join(`
|
|
391
|
-
`)}catch(Y){return`Timeline error: ${Y}`}}}}function
|
|
391
|
+
`)}catch(Y){return`Timeline error: ${Y}`}}}}function M8($,J,W,X){let Q=J.getById($);if(!Q)return`Session ${$} not found.`;let Y=Q.summaryId?W.getBySessionId($):null,G=X.getBySession($),_=[`# Session Detail: ${$}
|
|
392
392
|
`];if(_.push(`- **Started**: ${Q.startedAt}`),_.push(`- **Ended**: ${Q.endedAt??"Active"}`),_.push(`- **Status**: ${Q.status}`),_.push(`- **Observations**: ${Q.observationCount}`),Y){if(_.push(`
|
|
393
393
|
## Summary
|
|
394
394
|
${Y.summary}`),Y.keyDecisions.length>0){_.push(`
|
|
395
395
|
**Key decisions:**`);for(let B of Y.keyDecisions)_.push(`- ${B}`)}}if(G.length>0){_.push(`
|
|
396
396
|
## Observations`);for(let B of G)if(_.push(`
|
|
397
397
|
### [${B.type.toUpperCase()}] ${B.title}`),_.push(B.narrative),B.concepts.length>0)_.push(`*Concepts: ${B.concepts.join(", ")}*`)}return _.join(`
|
|
398
|
-
`)}import{spawnSync as
|
|
398
|
+
`)}import{spawnSync as D2}from"child_process";import{dirname as z8,resolve as w2}from"path";function f8($){try{let J=D2("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 X=D2("git",["rev-parse","--git-dir"],{cwd:$,encoding:"utf-8",timeout:5000});if(X.status!==0||!X.stdout)return null;let Q=X.stdout.trim(),Y=w2($,W),G=w2($,Q);if(Y===G)return null;let _=z8(Y);if(_===Y||_==="/")return null;return _}catch{return null}}function F2($){return f8($)??$}function N8(){try{let J=import.meta.url;if(J&&!J.includes("[eval]")){let W=V8(O8(J));return W.endsWith("dist")||W.endsWith("dist/")||W.endsWith("dist\\")?W:V0(W,"..","dist")}}catch{}let $=[V0(process.env.HOME||"",".config","opencode","node_modules","open-mem","dist"),V0(process.cwd(),"node_modules","open-mem","dist")];for(let J of $)if(S8(V0(J,"daemon.js")))return J;return V0(process.cwd(),"node_modules","open-mem","dist")}async function U8($){let J=N8(),W=F2($.directory),X=q$(W),Q=W1(X);for(let O0 of Q)console.warn(`[open-mem] ${O0}`);await X1(X),a0.enableExtensionSupport();let Y=H1(X.dbPath);M1(Y,{hasVectorExtension:Y.hasVectorExtension,embeddingDimension:X.embeddingDimension});let G=new F$(Y),_=new D$(Y),B=new R$(Y),H=new w$(Y),M=new b0(X),V=new L$(X),N=X.provider!=="bedrock",E=X.compressionEnabled&&(!N||X.apiKey)?t$({provider:X.provider,model:X.model,apiKey:X.apiKey}):null,f=new I$(X,M,V,H,_,G,B,E);f.start();let q=null,F=null;if(X.daemonEnabled)if(q=new j$({dbPath:X.dbPath,projectPath:W,daemonScript:V0(J,"daemon.js")}),q.start())f.setMode("enqueue-only"),f.setOnEnqueue(()=>q?.signal("PROCESS_NOW")),console.log("[open-mem] Background daemon started \u2014 processing delegated"),F=setInterval(()=>{if(q&&!q.isRunning()){if(console.warn("[open-mem] Daemon died, falling back to in-process processing"),f.setMode("in-process"),f.start(),F)clearInterval(F),F=null}},30000);else console.warn("[open-mem] Daemon failed to start \u2014 using in-process processing"),q=null;let R=null,g=null,b=null;if(X.dashboardEnabled){g=z1(),b=new p$(g);let O0=t1({observationRepo:_,sessionRepo:G,summaryRepo:B,config:X,projectPath:W,embeddingModel:E,sseHandler:$2(b),dashboardDir:V0(J,"dashboard")}),Q0=X.dashboardPort,d=Q0,h=!1;for(let Y0=0;Y0<10;Y0++){d=Q0+Y0;try{R=Bun.serve({port:d,hostname:"127.0.0.1",fetch:O0.fetch}),h=!0;break}catch{}}if(h)console.log(`[open-mem] Dashboard available at http://127.0.0.1:${d}`);else console.warn(`[open-mem] Could not start dashboard \u2014 ports ${Q0}-${Q0+9} all busy`);let U$=g,p=_.create.bind(_);_.create=(...Y0)=>{let A$=p(...Y0);return U$.emit("observation:created",A$),A$}}let x=()=>{if(F)clearInterval(F);if(q)q.stop();if(f.setOnEnqueue(null),f.stop(),R)R.stop();if(b)b.destroy();Y.close()};return process.on("beforeExit",x),{"tool.execute.after":D1(X,f,G,W),"chat.message":f1(_,G,W),event:K1(f,G,W,X,_),"experimental.chat.system.transform":N1(X,_,G,B,W),"experimental.session.compacting":O1(X,_,G,B,W),tools:[q2(_,B,E,W,Y.hasVectorExtension),E2(_,G,W),K2(G,B,_,W),U2(_),S2(_,B,G,W),O2(_,B,G,W)]}}export{q$ as resolveConfig,n2 as getDefaultConfig,U8 as default};
|
package/package.json
CHANGED