open-mem 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -35,18 +35,35 @@ That's it. open-mem starts capturing from your next OpenCode session.
35
35
 
36
36
  ### Enable AI Compression (Optional)
37
37
 
38
- For intelligent compression of observations using Claude:
38
+ For intelligent compression of observations, configure an AI provider:
39
39
 
40
+ **Anthropic (default):**
40
41
  ```bash
41
42
  export ANTHROPIC_API_KEY=sk-ant-...
42
43
  ```
43
44
 
44
- Without an API key, open-mem still works — it falls back to a basic metadata extractor that captures tool names, file paths, and output snippets.
45
+ **AWS Bedrock:**
46
+ ```bash
47
+ export OPEN_MEM_PROVIDER=bedrock
48
+ export OPEN_MEM_MODEL=us.anthropic.claude-sonnet-4-20250514-v1:0
49
+ # Uses AWS credentials from environment (AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY or AWS_PROFILE)
50
+ ```
51
+
52
+ **OpenAI** (requires `bun add @ai-sdk/openai`):
53
+ ```bash
54
+ export OPEN_MEM_PROVIDER=openai
55
+ export OPENAI_API_KEY=sk-...
56
+ export OPEN_MEM_MODEL=gpt-4o
57
+ ```
58
+
59
+ **Auto-detection:** If no API key or provider is set but AWS credentials are present, open-mem automatically uses Bedrock.
60
+
61
+ Without any provider configured, open-mem still works — it falls back to a basic metadata extractor that captures tool names, file paths, and output snippets.
45
62
 
46
63
  ## Key Features
47
64
 
48
65
  - 🧠 **Automatic observation capture** from tool executions
49
- - 🤖 **AI-powered compression** using Claude (optional — works without API key)
66
+ - 🤖 **AI-powered compression** via Vercel AI SDK — supports Anthropic, AWS Bedrock, OpenAI, Google (optional — works without API key)
50
67
  - 🔍 **SQLite + FTS5** full-text search for fast retrieval
51
68
  - 💡 **Progressive disclosure** with token-cost-aware context injection
52
69
  - 🔒 **Privacy controls** with `<private>` tag support
@@ -70,7 +87,7 @@ open-mem runs in the background as an OpenCode plugin. When you use tools (readi
70
87
  │ session.idle ─────────> [Queue Processor] │
71
88
  │ │ │
72
89
  │ v │
73
- │ [AI Compressor] ───> Anthropic
90
+ │ [AI Compressor] ───> AI Provider
74
91
  │ │ │
75
92
  │ v │
76
93
  │ [SQLite + FTS5] │
@@ -90,7 +107,7 @@ When you use tools in OpenCode (reading files, running commands, editing code),
90
107
 
91
108
  ### AI Compression
92
109
 
93
- On `session.idle`, the queue processor batches pending observations and sends them to Claude for semantic compression. Each raw tool output is distilled into a structured observation with:
110
+ On `session.idle`, the queue processor batches pending observations and sends them to the configured AI provider for semantic compression. Each raw tool output is distilled into a structured observation with:
94
111
 
95
112
  - Type classification (decision, bugfix, feature, refactor, discovery, change)
96
113
  - Title and narrative summary
@@ -98,7 +115,7 @@ On `session.idle`, the queue processor batches pending observations and sends th
98
115
  - Concepts/tags for search
99
116
  - Files involved
100
117
 
101
- If no Anthropic API key is set, a fallback compressor extracts basic metadata without AI.
118
+ If no API key is set, a fallback compressor extracts basic metadata without AI.
102
119
 
103
120
  ### Progressive Disclosure
104
121
 
@@ -165,7 +182,9 @@ open-mem works out of the box with zero configuration. All settings can be custo
165
182
 
166
183
  | Variable | Default | Description |
167
184
  |----------|---------|-------------|
168
- | `ANTHROPIC_API_KEY` | | API key for AI compression (optional) |
185
+ | `OPEN_MEM_PROVIDER` | `anthropic` | AI provider: `anthropic`, `bedrock`, `openai`, `google` |
186
+ | `ANTHROPIC_API_KEY` | — | API key for Anthropic provider |
187
+ | `OPENAI_API_KEY` | — | API key for OpenAI provider |
169
188
  | `OPEN_MEM_DB_PATH` | `.open-mem/memory.db` | Path to SQLite database |
170
189
  | `OPEN_MEM_MODEL` | `claude-sonnet-4-20250514` | Model for AI compression |
171
190
  | `OPEN_MEM_MAX_CONTEXT_TOKENS` | `4000` | Token budget for injected context |
@@ -188,8 +207,9 @@ If you need to configure open-mem programmatically (e.g. for testing or custom i
188
207
  | Option | Type | Default | Description |
189
208
  |--------|------|---------|-------------|
190
209
  | `dbPath` | string | `.open-mem/memory.db` | SQLite database file path |
191
- | `apiKey` | string | `undefined` | Anthropic API key |
192
- | `model` | string | `claude-sonnet-4-20250514` | Claude model for compression |
210
+ | `provider` | string | `anthropic` | AI provider: `anthropic`, `bedrock`, `openai`, `google` |
211
+ | `apiKey` | string | `undefined` | Provider API key |
212
+ | `model` | string | `claude-sonnet-4-20250514` | Model for compression |
193
213
  | `maxTokensPerCompression` | number | `1024` | Max tokens per compression response |
194
214
  | `compressionEnabled` | boolean | `true` | Enable AI compression |
195
215
  | `contextInjectionEnabled` | boolean | `true` | Enable context injection |
@@ -212,9 +232,9 @@ If you need to configure open-mem programmatically (e.g. for testing or custom i
212
232
 
213
233
  All data is stored locally in your project's `.open-mem/` directory. No data leaves your machine except when AI compression is enabled.
214
234
 
215
- ### Anthropic API
235
+ ### AI Provider
216
236
 
217
- When AI compression is enabled, tool outputs are sent to Claude for compression. Disable with `OPEN_MEM_COMPRESSION=false` to keep everything fully local.
237
+ When AI compression is enabled, tool outputs are sent to the configured AI provider for compression. Disable with `OPEN_MEM_COMPRESSION=false` to keep everything fully local.
218
238
 
219
239
  ### Automatic Redaction
220
240
 
@@ -227,7 +247,7 @@ open-mem automatically redacts common sensitive patterns before storage:
227
247
 
228
248
  ### `<private>` Tags
229
249
 
230
- Wrap any content in `<private>...</private>` tags to exclude it from memory entirely. Private blocks are stripped before observation capture — they never reach the database or the Anthropic API.
250
+ Wrap any content in `<private>...</private>` tags to exclude it from memory entirely. Private blocks are stripped before observation capture — they never reach the database or the AI provider.
231
251
 
232
252
  ```
233
253
  <private>
@@ -245,12 +265,17 @@ echo '.open-mem/' >> .gitignore
245
265
 
246
266
  ## Troubleshooting
247
267
 
248
- ### "AI compression enabled but no ANTHROPIC_API_KEY found"
268
+ ### "AI compression enabled but no API key found"
249
269
 
250
- This is a warning, not an error. open-mem works without an API key — it falls back to a basic metadata extractor. To enable AI compression:
270
+ This is a warning, not an error. open-mem works without an API key — it falls back to a basic metadata extractor. To enable AI compression, configure a provider:
251
271
 
252
272
  ```bash
273
+ # Anthropic (default)
253
274
  export ANTHROPIC_API_KEY=sk-ant-...
275
+
276
+ # Or use AWS Bedrock (no API key needed, uses AWS credentials)
277
+ export OPEN_MEM_PROVIDER=bedrock
278
+ export OPEN_MEM_MODEL=us.anthropic.claude-sonnet-4-20250514-v1:0
254
279
  ```
255
280
 
256
281
  ### Database errors
@@ -1,5 +1,7 @@
1
+ import { generateText } from "ai";
1
2
  import { type ParsedObservation } from "./parser";
2
3
  export interface CompressorConfig {
4
+ provider: string;
3
5
  apiKey: string | undefined;
4
6
  model: string;
5
7
  maxTokensPerCompression: number;
@@ -8,12 +10,13 @@ export interface CompressorConfig {
8
10
  }
9
11
  /**
10
12
  * Compresses raw tool output into structured observations using the
11
- * Anthropic Messages API. Falls back to a heuristic-based observation
12
- * when the API is unavailable or disabled.
13
+ * Vercel AI SDK. Falls back to a heuristic-based observation
14
+ * when the AI provider is unavailable or disabled.
13
15
  */
14
16
  export declare class ObservationCompressor {
15
- private client;
17
+ private model;
16
18
  private config;
19
+ _generate: typeof generateText;
17
20
  constructor(config: CompressorConfig);
18
21
  /** Maximum input characters sent to the API (~12.5K tokens) */
19
22
  static readonly MAX_INPUT_LENGTH = 50000;
@@ -1 +1 @@
1
- {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../src/ai/compressor.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,UAAU,CAAC;AAO5E,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACxB;AAMD;;;;GAIG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAUpC,+DAA+D;IAC/D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAU;IAE1C;;;;OAIG;IACG,QAAQ,CACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAiDpC;;;OAGG;IACG,aAAa,CAClB,KAAK,EAAE,aAAa,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,GACA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAqBjD;;;OAGG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAqB5E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAarC"}
1
+ {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../src/ai/compressor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,YAAY,EAAE,MAAM,IAAI,CAAC;AAEtD,OAAO,EAAE,KAAK,iBAAiB,EAA4B,MAAM,UAAU,CAAC;AAQ5E,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACxB;AAMD;;;;GAIG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAAmB;IAGjC,SAAS,sBAAgB;gBAEb,MAAM,EAAE,gBAAgB;IAsBpC,+DAA+D;IAC/D,MAAM,CAAC,QAAQ,CAAC,gBAAgB,SAAU;IAE1C;;;;OAIG;IACG,QAAQ,CACb,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA4CpC;;;OAGG;IACG,aAAa,CAClB,KAAK,EAAE,aAAa,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;QACf,cAAc,CAAC,EAAE,MAAM,CAAC;KACxB,CAAC,GACA,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAqBjD;;;OAGG;IACH,yBAAyB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,iBAAiB;IAqB5E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAarC"}
@@ -0,0 +1,13 @@
1
+ import type { LanguageModel } from "ai";
2
+ export type ProviderType = "anthropic" | "bedrock" | "openai" | "google" | string;
3
+ export interface ModelConfig {
4
+ provider: ProviderType;
5
+ model: string;
6
+ apiKey?: string;
7
+ }
8
+ /**
9
+ * Create a LanguageModel instance for the given provider.
10
+ * Uses dynamic require() so provider packages not installed don't crash at import time.
11
+ */
12
+ export declare function createModel(config: ModelConfig): LanguageModel;
13
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/ai/provider.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAMxC,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAElF,MAAM,WAAW,WAAW;IAC3B,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAMD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CA6B9D"}
@@ -1,6 +1,8 @@
1
+ import { generateText } from "ai";
1
2
  import type { Observation } from "../types";
2
3
  import { type ParsedSummary } from "./parser";
3
4
  export interface SummarizerConfig {
5
+ provider: string;
4
6
  apiKey: string | undefined;
5
7
  model: string;
6
8
  maxTokensPerCompression: number;
@@ -11,11 +13,12 @@ export interface SummarizerConfig {
11
13
  * Falls back to a heuristic aggregation when the API is unavailable.
12
14
  */
13
15
  export declare class SessionSummarizer {
14
- private client;
16
+ private model;
15
17
  private config;
18
+ _generate: typeof generateText;
16
19
  constructor(config: SummarizerConfig);
17
20
  /**
18
- * Summarize a session's observations via the Anthropic API.
21
+ * Summarize a session's observations via the AI provider.
19
22
  * Returns `null` for empty observation lists, falls back to heuristic
20
23
  * summary when the API is disabled or errors out.
21
24
  */
@@ -1 +1 @@
1
- {"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../../src/ai/summarizer.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,UAAU,CAAC;AAOpE,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC5B;AAMD;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAmB;gBAErB,MAAM,EAAE,gBAAgB;IAUpC;;;;OAIG;IACG,SAAS,CACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,GACtC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IA2ChC;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa;IAqC9E,yEAAyE;IACzE,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;CAGlD"}
1
+ {"version":3,"file":"summarizer.d.ts","sourceRoot":"","sources":["../../src/ai/summarizer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsB,YAAY,EAAE,MAAM,IAAI,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5C,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,UAAU,CAAC;AAQpE,MAAM,WAAW,gBAAgB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,OAAO,CAAC;CAC5B;AAMD;;;GAGG;AACH,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,MAAM,CAAmB;IAGjC,SAAS,sBAAgB;gBAEb,MAAM,EAAE,gBAAgB;IAsBpC;;;;OAIG;IACG,SAAS,CACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,GACtC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAsChC;;OAEG;IACH,qBAAqB,CAAC,YAAY,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,aAAa;IAqC9E,yEAAyE;IACzE,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO;CAGlD"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,SAAS,CAAC;AAyF9D;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAChC,aAAa,CAoBf;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAsB9D;AAMD,8CAA8C;AAC9C,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,2CAA2C;AAC3C,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,SAAS,CAAC;AA2F9D;;;GAGG;AACH,wBAAgB,aAAa,CAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAChC,aAAa,CAyCf;AAMD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,EAAE,CAuB9D;AAMD,8CAA8C;AAC9C,wBAAgB,gBAAgB,IAAI,aAAa,CAEhD;AAED,2CAA2C;AAC3C,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAI5E"}
package/dist/index.js CHANGED
@@ -1,23 +1,6 @@
1
1
  // @bun
2
- var nW=Object.create;var{getPrototypeOf:aW,defineProperty:z8,getOwnPropertyNames:oW}=Object;var rW=Object.prototype.hasOwnProperty;var tW=($,W,X)=>{X=$!=null?nW(aW($)):{};let G=W||!$||!$.__esModule?z8(X,"default",{value:$,enumerable:!0}):X;for(let J of oW($))if(!rW.call(G,J))z8(G,J,{get:()=>$[J],enumerable:!0});return G};var sW=($,W)=>{for(var X in W)z8($,X,{get:W[X],enumerable:!0,configurable:!0,set:(G)=>W[X]=()=>G})};var eW=import.meta.require;var U$="0.39.0";var h8=!1,N$=void 0,H8=void 0,$X=void 0,WX=void 0,XX=void 0,m8=void 0,GX=void 0,R0=void 0,V8=void 0,l8=void 0,q8=void 0,A0=void 0,c8=void 0;function u8($,W={auto:!1}){if(h8)throw Error(`you must \`import '@anthropic-ai/sdk/shims/${$.kind}'\` before importing anything else from @anthropic-ai/sdk`);if(N$)throw Error(`can't \`import '@anthropic-ai/sdk/shims/${$.kind}'\` after \`import '@anthropic-ai/sdk/shims/${N$}'\``);h8=W.auto,N$=$.kind,H8=$.fetch,$X=$.Request,WX=$.Response,XX=$.Headers,m8=$.FormData,GX=$.Blob,R0=$.File,V8=$.ReadableStream,l8=$.getMultipartRequestOptions,q8=$.getDefaultAgent,A0=$.fileFromPath,c8=$.isFsReadStream}class _8{constructor($){this.body=$}get[Symbol.toStringTag](){return"MultipartBody"}}function p8({manuallyImported:$}={}){let W=$?"You may need to use polyfills":"Add one of these imports before your first `import \u2026 from '@anthropic-ai/sdk'`:\n- `import '@anthropic-ai/sdk/shims/node'` (if you're running on Node)\n- `import '@anthropic-ai/sdk/shims/web'` (otherwise)\n",X,G,J,Y;try{X=fetch,G=Request,J=Response,Y=Headers}catch(Q){throw Error(`this environment is missing the following Web Fetch API type: ${Q.message}. ${W}`)}return{kind:"web",fetch:X,Request:G,Response:J,Headers:Y,FormData:typeof FormData<"u"?FormData:class{constructor(){throw Error(`file uploads aren't supported in this environment yet as 'FormData' is undefined. ${W}`)}},Blob:typeof Blob<"u"?Blob:class{constructor(){throw Error(`file uploads aren't supported in this environment yet as 'Blob' is undefined. ${W}`)}},File:typeof File<"u"?File:class{constructor(){throw Error(`file uploads aren't supported in this environment yet as 'File' is undefined. ${W}`)}},ReadableStream:typeof ReadableStream<"u"?ReadableStream:class{constructor(){throw Error(`streaming isn't supported in this environment yet as 'ReadableStream' is undefined. ${W}`)}},getMultipartRequestOptions:async(Q,z)=>({...z,body:new _8(Q)}),getDefaultAgent:(Q)=>{return},fileFromPath:()=>{throw Error("The `fileFromPath` function is only supported in Node. See the README for more details: https://www.github.com/anthropics/anthropic-sdk-typescript#file-uploads")},isFsReadStream:(Q)=>!1}}import{ReadStream as YX}from"fs";function d8(){let $=p8();function W(X){return X instanceof YX}return{...$,isFsReadStream:W}}if(!N$)u8(d8(),{auto:!0});class K extends Error{}class C extends K{constructor($,W,X,G){super(`${C.makeMessage($,W,X)}`);this.status=$,this.headers=G,this.request_id=G?.["request-id"],this.error=W}static makeMessage($,W,X){let G=W?.message?typeof W.message==="string"?W.message:JSON.stringify(W.message):W?JSON.stringify(W):X;if($&&G)return`${$} ${G}`;if($)return`${$} status code (no body)`;if(G)return G;return"(no status code or body)"}static generate($,W,X,G){if(!$||!G)return new K$({message:X,cause:Z0(W)});let J=W;if($===400)return new C0($,J,X,G);if($===401)return new f0($,J,X,G);if($===403)return new T0($,J,X,G);if($===404)return new P0($,J,X,G);if($===409)return new k0($,J,X,G);if($===422)return new I0($,J,X,G);if($===429)return new b0($,J,X,G);if($>=500)return new x0($,J,X,G);return new C($,J,X,G)}}class k extends C{constructor({message:$}={}){super(void 0,void 0,$||"Request was aborted.",void 0)}}class K$ extends C{constructor({message:$,cause:W}){super(void 0,void 0,$||"Connection error.",void 0);if(W)this.cause=W}}class t$ extends K${constructor({message:$}={}){super({message:$??"Request timed out."})}}class C0 extends C{}class f0 extends C{}class T0 extends C{}class P0 extends C{}class k0 extends C{}class I0 extends C{}class b0 extends C{}class x0 extends C{}var v0=function($,W,X,G,J){if(G==="m")throw TypeError("Private method is not writable");if(G==="a"&&!J)throw TypeError("Private accessor was defined without a setter");if(typeof W==="function"?$!==W||!J:!W.has($))throw TypeError("Cannot write private member to an object whose class did not declare it");return G==="a"?J.call($,X):J?J.value=X:W.set($,X),X},O$=function($,W,X,G){if(X==="a"&&!G)throw TypeError("Private accessor was defined without a getter");if(typeof W==="function"?$!==W||!G:!W.has($))throw TypeError("Cannot read private member from an object whose class did not declare it");return X==="m"?G:X==="a"?G.call($):G?G.value:W.get($)},v;class J${constructor(){v.set(this,void 0),this.buffer=new Uint8Array,v0(this,v,null,"f")}decode($){if($==null)return[];let W=$ instanceof ArrayBuffer?new Uint8Array($):typeof $==="string"?new TextEncoder().encode($):$,X=new Uint8Array(this.buffer.length+W.length);X.set(this.buffer),X.set(W,this.buffer.length),this.buffer=X;let G=[],J;while((J=zX(this.buffer,O$(this,v,"f")))!=null){if(J.carriage&&O$(this,v,"f")==null){v0(this,v,J.index,"f");continue}if(O$(this,v,"f")!=null&&(J.index!==O$(this,v,"f")+1||J.carriage)){G.push(this.decodeText(this.buffer.slice(0,O$(this,v,"f")-1))),this.buffer=this.buffer.slice(O$(this,v,"f")),v0(this,v,null,"f");continue}let Y=O$(this,v,"f")!==null?J.preceding-1:J.preceding,Q=this.decodeText(this.buffer.slice(0,Y));G.push(Q),this.buffer=this.buffer.slice(J.index),v0(this,v,null,"f")}return G}decodeText($){if($==null)return"";if(typeof $==="string")return $;if(typeof Buffer<"u"){if($ instanceof Buffer)return $.toString();if($ instanceof Uint8Array)return Buffer.from($).toString();throw new K(`Unexpected: received non-Uint8Array (${$.constructor.name}) stream chunk in an environment with a global "Buffer" defined, which this library assumes to be Node. Please report this error.`)}if(typeof TextDecoder<"u"){if($ instanceof Uint8Array||$ instanceof ArrayBuffer)return this.textDecoder??(this.textDecoder=new TextDecoder("utf8")),this.textDecoder.decode($);throw new K(`Unexpected: received non-Uint8Array/ArrayBuffer (${$.constructor.name}) in a web platform. Please report this error.`)}throw new K("Unexpected: neither Buffer nor TextDecoder are available as globals. Please report this error.")}flush(){if(!this.buffer.length)return[];return this.decode(`
3
- `)}}v=new WeakMap;J$.NEWLINE_CHARS=new Set([`
4
- `,"\r"]);J$.NEWLINE_REGEXP=/\r\n|[\n\r]/g;function zX($,W){for(let J=W??0;J<$.length;J++){if($[J]===10)return{preceding:J,index:J+1,carriage:!1};if($[J]===13)return{preceding:J,index:J+1,carriage:!0}}return null}function i8($){for(let G=0;G<$.length-1;G++){if($[G]===10&&$[G+1]===10)return G+2;if($[G]===13&&$[G+1]===13)return G+2;if($[G]===13&&$[G+1]===10&&G+3<$.length&&$[G+2]===13&&$[G+3]===10)return G+4}return-1}function s$($){if($[Symbol.asyncIterator])return $;let W=$.getReader();return{async next(){try{let X=await W.read();if(X?.done)W.releaseLock();return X}catch(X){throw W.releaseLock(),X}},async return(){let X=W.cancel();return W.releaseLock(),await X,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}class g{constructor($,W){this.iterator=$,this.controller=W}static fromSSEResponse($,W){let X=!1;async function*G(){if(X)throw Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");X=!0;let J=!1;try{for await(let Y of HX($,W)){if(Y.event==="completion")try{yield JSON.parse(Y.data)}catch(Q){throw console.error("Could not parse message into JSON:",Y.data),console.error("From chunk:",Y.raw),Q}if(Y.event==="message_start"||Y.event==="message_delta"||Y.event==="message_stop"||Y.event==="content_block_start"||Y.event==="content_block_delta"||Y.event==="content_block_stop")try{yield JSON.parse(Y.data)}catch(Q){throw console.error("Could not parse message into JSON:",Y.data),console.error("From chunk:",Y.raw),Q}if(Y.event==="ping")continue;if(Y.event==="error")throw C.generate(void 0,`SSE Error: ${Y.data}`,Y.data,B8($.headers))}J=!0}catch(Y){if(Y instanceof Error&&Y.name==="AbortError")return;throw Y}finally{if(!J)W.abort()}}return new g(G,W)}static fromReadableStream($,W){let X=!1;async function*G(){let Y=new J$,Q=s$($);for await(let z of Q)for(let H of Y.decode(z))yield H;for(let z of Y.flush())yield z}async function*J(){if(X)throw Error("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");X=!0;let Y=!1;try{for await(let Q of G()){if(Y)continue;if(Q)yield JSON.parse(Q)}Y=!0}catch(Q){if(Q instanceof Error&&Q.name==="AbortError")return;throw Q}finally{if(!Y)W.abort()}}return new g(J,W)}[Symbol.asyncIterator](){return this.iterator()}tee(){let $=[],W=[],X=this.iterator(),G=(J)=>{return{next:()=>{if(J.length===0){let Y=X.next();$.push(Y),W.push(Y)}return J.shift()}}};return[new g(()=>G($),this.controller),new g(()=>G(W),this.controller)]}toReadableStream(){let $=this,W,X=new TextEncoder;return new V8({async start(){W=$[Symbol.asyncIterator]()},async pull(G){try{let{value:J,done:Y}=await W.next();if(Y)return G.close();let Q=X.encode(JSON.stringify(J)+`
5
- `);G.enqueue(Q)}catch(J){G.error(J)}},async cancel(){await W.return?.()}})}}async function*HX($,W){if(!$.body)throw W.abort(),new K("Attempted to iterate over a response with no body");let X=new n8,G=new J$,J=s$($.body);for await(let Y of VX(J))for(let Q of G.decode(Y)){let z=X.decode(Q);if(z)yield z}for(let Y of G.flush()){let Q=X.decode(Y);if(Q)yield Q}}async function*VX($){let W=new Uint8Array;for await(let X of $){if(X==null)continue;let G=X instanceof ArrayBuffer?new Uint8Array(X):typeof X==="string"?new TextEncoder().encode(X):X,J=new Uint8Array(W.length+G.length);J.set(W),J.set(G,W.length),W=J;let Y;while((Y=i8(W))!==-1)yield W.slice(0,Y),W=W.slice(Y)}if(W.length>0)yield W}class n8{constructor(){this.event=null,this.data=[],this.chunks=[]}decode($){if($.endsWith("\r"))$=$.substring(0,$.length-1);if(!$){if(!this.event&&!this.data.length)return null;let J={event:this.event,data:this.data.join(`
6
- `),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],J}if(this.chunks.push($),$.startsWith(":"))return null;let[W,X,G]=qX($,":");if(G.startsWith(" "))G=G.substring(1);if(W==="event")this.event=G;else if(W==="data")this.data.push(G);return null}}function qX($,W){let X=$.indexOf(W);if(X!==-1)return[$.substring(0,X),W,$.substring(X+W.length)];return[$,"",""]}var _X=($)=>$!=null&&typeof $==="object"&&typeof $.url==="string"&&typeof $.blob==="function",BX=($)=>$!=null&&typeof $==="object"&&typeof $.name==="string"&&typeof $.lastModified==="number"&&e$($),e$=($)=>$!=null&&typeof $==="object"&&typeof $.size==="number"&&typeof $.type==="string"&&typeof $.text==="function"&&typeof $.slice==="function"&&typeof $.arrayBuffer==="function";async function a8($,W,X){if($=await $,BX($))return $;if(_X($)){let J=await $.blob();W||(W=new URL($.url).pathname.split(/[\\/]/).pop()??"unknown_file");let Y=e$(J)?[await J.arrayBuffer()]:[J];return new R0(Y,W,X)}let G=await MX($);if(W||(W=NX($)??"unknown_file"),!X?.type){let J=G[0]?.type;if(typeof J==="string")X={...X,type:J}}return new R0(G,W,X)}async function MX($){let W=[];if(typeof $==="string"||ArrayBuffer.isView($)||$ instanceof ArrayBuffer)W.push($);else if(e$($))W.push(await $.arrayBuffer());else if(KX($))for await(let X of $)W.push(X);else throw Error(`Unexpected data type: ${typeof $}; constructor: ${$?.constructor?.name}; props: ${UX($)}`);return W}function UX($){return`[${Object.getOwnPropertyNames($).map((X)=>`"${X}"`).join(", ")}]`}function NX($){return M8($.name)||M8($.filename)||M8($.path)?.split(/[\\/]/).pop()}var M8=($)=>{if(typeof $==="string")return $;if(typeof Buffer<"u"&&$ instanceof Buffer)return String($);return},KX=($)=>$!=null&&typeof $==="object"&&typeof $[Symbol.asyncIterator]==="function",U8=($)=>$&&typeof $==="object"&&$.body&&$[Symbol.toStringTag]==="MultipartBody";var wX=function($,W,X,G,J){if(G==="m")throw TypeError("Private method is not writable");if(G==="a"&&!J)throw TypeError("Private accessor was defined without a setter");if(typeof W==="function"?$!==W||!J:!W.has($))throw TypeError("Cannot write private member to an object whose class did not declare it");return G==="a"?J.call($,X):J?J.value=X:W.set($,X),X},DX=function($,W,X,G){if(X==="a"&&!G)throw TypeError("Private accessor was defined without a getter");if(typeof W==="function"?$!==W||!G:!W.has($))throw TypeError("Cannot read private member from an object whose class did not declare it");return X==="m"?G:X==="a"?G.call($):G?G.value:W.get($)},g0;async function e8($){let{response:W}=$;if($.options.stream){if(A$("response",W.status,W.url,W.headers,W.body),$.options.__streamClass)return $.options.__streamClass.fromSSEResponse(W,$.controller);return g.fromSSEResponse(W,$.controller)}if(W.status===204)return null;if($.options.__binaryResponse)return W;let X=W.headers.get("content-type");if(X?.includes("application/json")||X?.includes("application/vnd.api+json")){let Y=await W.json();return A$("response",W.status,W.url,W.headers,Y),$W(Y,W)}let J=await W.text();return A$("response",W.status,W.url,W.headers,J),J}function $W($,W){if(!$||typeof $!=="object"||Array.isArray($))return $;return Object.defineProperty($,"_request_id",{value:W.headers.get("request-id"),enumerable:!1})}class h0 extends Promise{constructor($,W=e8){super((X)=>{X(null)});this.responsePromise=$,this.parseResponse=W}_thenUnwrap($){return new h0(this.responsePromise,async(W)=>$W($(await this.parseResponse(W),W),W.response))}asResponse(){return this.responsePromise.then(($)=>$.response)}async withResponse(){let[$,W]=await Promise.all([this.parse(),this.asResponse()]);return{data:$,response:W,request_id:W.headers.get("request-id")}}parse(){if(!this.parsedPromise)this.parsedPromise=this.responsePromise.then(this.parseResponse);return this.parsedPromise}then($,W){return this.parse().then($,W)}catch($){return this.parse().catch($)}finally($){return this.parse().finally($)}}class K8{constructor({baseURL:$,maxRetries:W=2,timeout:X=600000,httpAgent:G,fetch:J}){this.baseURL=$,this.maxRetries=N8("maxRetries",W),this.timeout=N8("timeout",X),this.httpAgent=G,this.fetch=J??H8}authHeaders($){return{}}defaultHeaders($){return{Accept:"application/json","Content-Type":"application/json","User-Agent":this.getUserAgent(),...SX(),...this.authHeaders($)}}validateHeaders($,W){}defaultIdempotencyKey(){return`stainless-node-retry-${fX()}`}get($,W){return this.methodRequest("get",$,W)}post($,W){return this.methodRequest("post",$,W)}patch($,W){return this.methodRequest("patch",$,W)}put($,W){return this.methodRequest("put",$,W)}delete($,W){return this.methodRequest("delete",$,W)}methodRequest($,W,X){return this.request(Promise.resolve(X).then(async(G)=>{let J=G&&e$(G?.body)?new DataView(await G.body.arrayBuffer()):G?.body instanceof DataView?G.body:G?.body instanceof ArrayBuffer?new DataView(G.body):G&&ArrayBuffer.isView(G?.body)?new DataView(G.body.buffer):G?.body;return{method:$,path:W,...G,body:J}}))}getAPIList($,W,X){return this.requestAPIList(W,{method:"get",path:$,...X})}calculateContentLength($){if(typeof $==="string"){if(typeof Buffer<"u")return Buffer.byteLength($,"utf8").toString();if(typeof TextEncoder<"u")return new TextEncoder().encode($).length.toString()}else if(ArrayBuffer.isView($))return $.byteLength.toString();return null}buildRequest($,{retryCount:W=0}={}){$={...$};let{method:X,path:G,query:J,headers:Y={}}=$,Q=ArrayBuffer.isView($.body)||$.__binaryRequest&&typeof $.body==="string"?$.body:U8($.body)?$.body.body:$.body?JSON.stringify($.body,null,2):null,z=this.calculateContentLength(Q),H=this.buildURL(G,J);if("timeout"in $)N8("timeout",$.timeout);$.timeout=$.timeout??this.timeout;let q=$.httpAgent??this.httpAgent??q8(H),O=$.timeout+1000;if(typeof q?.options?.timeout==="number"&&O>(q.options.timeout??0))q.options.timeout=O;if(this.idempotencyHeader&&X!=="get"){if(!$.idempotencyKey)$.idempotencyKey=this.defaultIdempotencyKey();Y[this.idempotencyHeader]=$.idempotencyKey}let R=this.buildHeaders({options:$,headers:Y,contentLength:z,retryCount:W});return{req:{method:X,...Q&&{body:Q},headers:R,...q&&{agent:q},signal:$.signal??null},url:H,timeout:$.timeout}}buildHeaders({options:$,headers:W,contentLength:X,retryCount:G}){let J={};if(X)J["content-length"]=X;let Y=this.defaultHeaders($);if(s8(J,Y),s8(J,W),U8($.body)&&N$!=="node")delete J["content-type"];if(y0(Y,"x-stainless-retry-count")===void 0&&y0(W,"x-stainless-retry-count")===void 0)J["x-stainless-retry-count"]=String(G);if(y0(Y,"x-stainless-timeout")===void 0&&y0(W,"x-stainless-timeout")===void 0&&$.timeout)J["x-stainless-timeout"]=String($.timeout);return this.validateHeaders(J,W),J}_calculateNonstreamingTimeout($){if(3600*$/128000>600)throw new K("Streaming is strongly recommended for operations that may take longer than 10 minutes. See https://github.com/anthropics/anthropic-sdk-python#streaming-responses for more details");return 600000}async prepareOptions($){}async prepareRequest($,{url:W,options:X}){}parseHeaders($){return!$?{}:(Symbol.iterator in $)?Object.fromEntries(Array.from($).map((W)=>[...W])):{...$}}makeStatusError($,W,X,G){return C.generate($,W,X,G)}request($,W=null){return new h0(this.makeRequest($,W))}async makeRequest($,W){let X=await $,G=X.maxRetries??this.maxRetries;if(W==null)W=G;await this.prepareOptions(X);let{req:J,url:Y,timeout:Q}=this.buildRequest(X,{retryCount:G-W});if(await this.prepareRequest(J,{url:Y,options:X}),A$("request",Y,X,J.headers),X.signal?.aborted)throw new k;let z=new AbortController,H=await this.fetchWithTimeout(Y,J,Q,z).catch(Z0);if(H instanceof Error){if(X.signal?.aborted)throw new k;if(W)return this.retryRequest(X,W);if(H.name==="AbortError")throw new t$;throw new K$({cause:H})}let q=B8(H.headers);if(!H.ok){if(W&&this.shouldRetry(H)){let Q8=`retrying, ${W} attempts remaining`;return A$(`response (error; ${Q8})`,H.status,Y,q),this.retryRequest(X,W,q)}let O=await H.text().catch((Q8)=>Z0(Q8).message),R=EX(O),l=R?void 0:O;throw A$(`response (error; ${W?"(error; no more retries left)":"(error; not retryable)"})`,H.status,Y,q,l),this.makeStatusError(H.status,R,l,q)}return{response:H,options:X,controller:z}}requestAPIList($,W){let X=this.makeRequest(W,null);return new WW(this,X,$)}buildURL($,W){let X=AX($)?new URL($):new URL(this.baseURL+(this.baseURL.endsWith("/")&&$.startsWith("/")?$.slice(1):$)),G=this.defaultQuery();if(!$0(G))W={...G,...W};if(typeof W==="object"&&W&&!Array.isArray(W))X.search=this.stringifyQuery(W);return X.toString()}stringifyQuery($){return Object.entries($).filter(([W,X])=>typeof X<"u").map(([W,X])=>{if(typeof X==="string"||typeof X==="number"||typeof X==="boolean")return`${encodeURIComponent(W)}=${encodeURIComponent(X)}`;if(X===null)return`${encodeURIComponent(W)}=`;throw new K(`Cannot stringify type ${typeof X}; Expected string, number, boolean, or null. If you need to pass nested query parameters, you can manually encode them, e.g. { query: { 'foo[key1]': value1, 'foo[key2]': value2 } }, and please open a GitHub issue requesting better support for your use case.`)}).join("&")}async fetchWithTimeout($,W,X,G){let{signal:J,...Y}=W||{};if(J)J.addEventListener("abort",()=>G.abort());let Q=setTimeout(()=>G.abort(),X),z={signal:G.signal,...Y};if(z.method)z.method=z.method.toUpperCase();let H=60000,q=setTimeout(()=>{if(z&&z?.agent?.sockets){for(let O of Object.values(z?.agent?.sockets).flat())if(O?.setKeepAlive)O.setKeepAlive(!0,H)}},H);return this.fetch.call(void 0,$,z).finally(()=>{clearTimeout(Q),clearTimeout(q)})}shouldRetry($){let W=$.headers.get("x-should-retry");if(W==="true")return!0;if(W==="false")return!1;if($.status===408)return!0;if($.status===409)return!0;if($.status===429)return!0;if($.status>=500)return!0;return!1}async retryRequest($,W,X){let G,J=X?.["retry-after-ms"];if(J){let Q=parseFloat(J);if(!Number.isNaN(Q))G=Q}let Y=X?.["retry-after"];if(Y&&!G){let Q=parseFloat(Y);if(!Number.isNaN(Q))G=Q*1000;else G=Date.parse(Y)-Date.now()}if(!(G&&0<=G&&G<60000)){let Q=$.maxRetries??this.maxRetries;G=this.calculateDefaultRetryTimeoutMillis(W,Q)}return await CX(G),this.makeRequest($,W-1)}calculateDefaultRetryTimeoutMillis($,W){let J=W-$,Y=Math.min(0.5*Math.pow(2,J),8),Q=1-Math.random()*0.25;return Y*Q*1000}getUserAgent(){return`${this.constructor.name}/JS ${U$}`}}class O8{constructor($,W,X,G){g0.set(this,void 0),wX(this,g0,$,"f"),this.options=G,this.response=W,this.body=X}hasNextPage(){if(!this.getPaginatedItems().length)return!1;return this.nextPageInfo()!=null}async getNextPage(){let $=this.nextPageInfo();if(!$)throw new K("No next page expected; please check `.hasNextPage()` before calling `.getNextPage()`.");let W={...this.options};if("params"in $&&typeof W.query==="object")W.query={...W.query,...$.params};else if("url"in $){let X=[...Object.entries(W.query||{}),...$.url.searchParams.entries()];for(let[G,J]of X)$.url.searchParams.set(G,J);W.query=void 0,W.path=$.url.toString()}return await DX(this,g0,"f").requestAPIList(this.constructor,W)}async*iterPages(){let $=this;yield $;while($.hasNextPage())$=await $.getNextPage(),yield $}async*[(g0=new WeakMap,Symbol.asyncIterator)](){for await(let $ of this.iterPages())for(let W of $.getPaginatedItems())yield W}}class WW extends h0{constructor($,W,X){super(W,async(G)=>new X($,G.response,await e8(G),G.options))}async*[Symbol.asyncIterator](){let $=await this;for await(let W of $)yield W}}var B8=($)=>{return new Proxy(Object.fromEntries($.entries()),{get(W,X){let G=X.toString();return W[G.toLowerCase()]||W[G]}})},LX={method:!0,path:!0,query:!0,body:!0,headers:!0,maxRetries:!0,stream:!0,timeout:!0,httpAgent:!0,signal:!0,idempotencyKey:!0,__binaryRequest:!0,__binaryResponse:!0,__streamClass:!0},y=($)=>{return typeof $==="object"&&$!==null&&!$0($)&&Object.keys($).every((W)=>XW(LX,W))},FX=()=>{if(typeof Deno<"u"&&Deno.build!=null)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":U$,"X-Stainless-OS":r8(Deno.build.os),"X-Stainless-Arch":o8(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version==="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":U$,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":process.version};if(Object.prototype.toString.call(typeof process<"u"?process:0)==="[object process]")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":U$,"X-Stainless-OS":r8(process.platform),"X-Stainless-Arch":o8(process.arch),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":process.version};let $=jX();if($)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":U$,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${$.browser}`,"X-Stainless-Runtime-Version":$.version};return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":U$,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}};function jX(){if(typeof navigator>"u"||!navigator)return null;let $=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:W,pattern:X}of $){let G=X.exec(navigator.userAgent);if(G){let J=G[1]||0,Y=G[2]||0,Q=G[3]||0;return{browser:W,version:`${J}.${Y}.${Q}`}}}return null}var o8=($)=>{if($==="x32")return"x32";if($==="x86_64"||$==="x64")return"x64";if($==="arm")return"arm";if($==="aarch64"||$==="arm64")return"arm64";if($)return`other:${$}`;return"unknown"},r8=($)=>{if($=$.toLowerCase(),$.includes("ios"))return"iOS";if($==="android")return"Android";if($==="darwin")return"MacOS";if($==="win32")return"Windows";if($==="freebsd")return"FreeBSD";if($==="openbsd")return"OpenBSD";if($==="linux")return"Linux";if($)return`Other:${$}`;return"Unknown"},t8,SX=()=>{return t8??(t8=FX())},EX=($)=>{try{return JSON.parse($)}catch(W){return}},RX=/^[a-z][a-z0-9+.-]*:/i,AX=($)=>{return RX.test($)},CX=($)=>new Promise((W)=>setTimeout(W,$)),N8=($,W)=>{if(typeof W!=="number"||!Number.isInteger(W))throw new K(`${$} must be an integer`);if(W<0)throw new K(`${$} must be a positive integer`);return W},Z0=($)=>{if($ instanceof Error)return $;if(typeof $==="object"&&$!==null)try{return Error(JSON.stringify($))}catch{}return Error(String($))};var m0=($)=>{if(typeof process<"u")return process.env?.[$]?.trim()??void 0;if(typeof Deno<"u")return Deno.env?.get?.($)?.trim();return};function $0($){if(!$)return!0;for(let W in $)return!1;return!0}function XW($,W){return Object.prototype.hasOwnProperty.call($,W)}function s8($,W){for(let X in W){if(!XW(W,X))continue;let G=X.toLowerCase();if(!G)continue;let J=W[X];if(J===null)delete $[G];else if(J!==void 0)$[G]=J}}function A$($,...W){if(typeof process<"u"&&process?.env?.DEBUG==="true")console.log(`Anthropic:DEBUG:${$}`,...W)}var fX=()=>{return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,($)=>{let W=Math.random()*16|0;return($==="x"?W:W&3|8).toString(16)})},GW=()=>{return typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u"},TX=($)=>{return typeof $?.get==="function"};var y0=($,W)=>{let X=W.toLowerCase();if(TX($)){let G=W[0]?.toUpperCase()+W.substring(1).replace(/([^\w])(\w)/g,(J,Y,Q)=>Y+Q.toUpperCase());for(let J of[W,X,W.toUpperCase(),G]){let Y=$.get(J);if(Y)return Y}}for(let[G,J]of Object.entries($))if(G.toLowerCase()===X){if(Array.isArray(J)){if(J.length<=1)return J[0];return console.warn(`Received ${J.length} entries for the ${W} header, using the first entry.`),J[0]}return J}return};class t extends O8{constructor($,W,X,G){super($,W,X,G);this.data=X.data||[],this.has_more=X.has_more||!1,this.first_id=X.first_id||null,this.last_id=X.last_id||null}getPaginatedItems(){return this.data??[]}hasNextPage(){if(this.has_more===!1)return!1;return super.hasNextPage()}nextPageParams(){let $=this.nextPageInfo();if(!$)return null;if("params"in $)return $.params;let W=Object.fromEntries($.url.searchParams);if(!Object.keys(W).length)return null;return W}nextPageInfo(){if(this.options.query?.before_id){let W=this.first_id;if(!W)return null;return{params:{before_id:W}}}let $=this.last_id;if(!$)return null;return{params:{after_id:$}}}}class T{constructor($){this._client=$}}class C$ extends T{retrieve($,W){return this._client.get(`/v1/models/${$}?beta=true`,W)}list($={},W){if(y($))return this.list({},$);return this._client.getAPIList("/v1/models?beta=true",W0,{query:$,...W})}}class W0 extends t{}C$.BetaModelInfosPage=W0;class f${constructor($,W){this.iterator=$,this.controller=W}async*decoder(){let $=new J$;for await(let W of this.iterator)for(let X of $.decode(W))yield JSON.parse(X);for(let W of $.flush())yield JSON.parse(W)}[Symbol.asyncIterator](){return this.decoder()}static fromResponse($,W){if(!$.body)throw W.abort(),new K("Attempted to iterate over a response with no body");return new f$(s$($.body),W)}}class T$ extends T{create($,W){let{betas:X,...G}=$;return this._client.post("/v1/messages/batches?beta=true",{body:G,...W,headers:{"anthropic-beta":[...X??[],"message-batches-2024-09-24"].toString(),...W?.headers}})}retrieve($,W={},X){if(y(W))return this.retrieve($,{},W);let{betas:G}=W;return this._client.get(`/v1/messages/batches/${$}?beta=true`,{...X,headers:{"anthropic-beta":[...G??[],"message-batches-2024-09-24"].toString(),...X?.headers}})}list($={},W){if(y($))return this.list({},$);let{betas:X,...G}=$;return this._client.getAPIList("/v1/messages/batches?beta=true",X0,{query:G,...W,headers:{"anthropic-beta":[...X??[],"message-batches-2024-09-24"].toString(),...W?.headers}})}delete($,W={},X){if(y(W))return this.delete($,{},W);let{betas:G}=W;return this._client.delete(`/v1/messages/batches/${$}?beta=true`,{...X,headers:{"anthropic-beta":[...G??[],"message-batches-2024-09-24"].toString(),...X?.headers}})}cancel($,W={},X){if(y(W))return this.cancel($,{},W);let{betas:G}=W;return this._client.post(`/v1/messages/batches/${$}/cancel?beta=true`,{...X,headers:{"anthropic-beta":[...G??[],"message-batches-2024-09-24"].toString(),...X?.headers}})}async results($,W={},X){if(y(W))return this.results($,{},W);let G=await this.retrieve($);if(!G.results_url)throw new K(`No batch \`results_url\`; Has it finished processing? ${G.processing_status} - ${G.id}`);let{betas:J}=W;return this._client.get(G.results_url,{...X,headers:{"anthropic-beta":[...J??[],"message-batches-2024-09-24"].toString(),Accept:"application/binary",...X?.headers},__binaryResponse:!0})._thenUnwrap((Y,Q)=>f$.fromResponse(Q.response,Q.controller))}}class X0 extends t{}T$.BetaMessageBatchesPage=X0;var bX=($)=>{let W=0,X=[];while(W<$.length){let G=$[W];if(G==="\\"){W++;continue}if(G==="{"){X.push({type:"brace",value:"{"}),W++;continue}if(G==="}"){X.push({type:"brace",value:"}"}),W++;continue}if(G==="["){X.push({type:"paren",value:"["}),W++;continue}if(G==="]"){X.push({type:"paren",value:"]"}),W++;continue}if(G===":"){X.push({type:"separator",value:":"}),W++;continue}if(G===","){X.push({type:"delimiter",value:","}),W++;continue}if(G==='"'){let z="",H=!1;G=$[++W];while(G!=='"'){if(W===$.length){H=!0;break}if(G==="\\"){if(W++,W===$.length){H=!0;break}z+=G+$[W],G=$[++W]}else z+=G,G=$[++W]}if(G=$[++W],!H)X.push({type:"string",value:z});continue}if(G&&/\s/.test(G)){W++;continue}let Y=/[0-9]/;if(G&&Y.test(G)||G==="-"||G==="."){let z="";if(G==="-")z+=G,G=$[++W];while(G&&Y.test(G)||G===".")z+=G,G=$[++W];X.push({type:"number",value:z});continue}let Q=/[a-z]/i;if(G&&Q.test(G)){let z="";while(G&&Q.test(G)){if(W===$.length)break;z+=G,G=$[++W]}if(z=="true"||z=="false"||z==="null")X.push({type:"name",value:z});else{W++;continue}continue}W++}return X},P$=($)=>{if($.length===0)return $;let W=$[$.length-1];switch(W.type){case"separator":return $=$.slice(0,$.length-1),P$($);break;case"number":let X=W.value[W.value.length-1];if(X==="."||X==="-")return $=$.slice(0,$.length-1),P$($);case"string":let G=$[$.length-2];if(G?.type==="delimiter")return $=$.slice(0,$.length-1),P$($);else if(G?.type==="brace"&&G.value==="{")return $=$.slice(0,$.length-1),P$($);break;case"delimiter":return $=$.slice(0,$.length-1),P$($);break}return $},xX=($)=>{let W=[];if($.map((X)=>{if(X.type==="brace")if(X.value==="{")W.push("}");else W.splice(W.lastIndexOf("}"),1);if(X.type==="paren")if(X.value==="[")W.push("]");else W.splice(W.lastIndexOf("]"),1)}),W.length>0)W.reverse().map((X)=>{if(X==="}")$.push({type:"brace",value:"}"});else if(X==="]")$.push({type:"paren",value:"]"})});return $},ZX=($)=>{let W="";return $.map((X)=>{switch(X.type){case"string":W+='"'+X.value+'"';break;default:W+=X.value;break}}),W},l0=($)=>JSON.parse(ZX(xX(P$(bX($)))));var I=function($,W,X,G,J){if(G==="m")throw TypeError("Private method is not writable");if(G==="a"&&!J)throw TypeError("Private accessor was defined without a setter");if(typeof W==="function"?$!==W||!J:!W.has($))throw TypeError("Cannot write private member to an object whose class did not declare it");return G==="a"?J.call($,X):J?J.value=X:W.set($,X),X},D=function($,W,X,G){if(X==="a"&&!G)throw TypeError("Private accessor was defined without a getter");if(typeof W==="function"?$!==W||!G:!W.has($))throw TypeError("Cannot read private member from an object whose class did not declare it");return X==="m"?G:X==="a"?G.call($):G?G.value:W.get($)},h,Y$,G0,c0,J0,Y0,u0,Q0,s,z0,p0,d0,k$,i0,n0,w8,JW,D8,L8,F8,j8,YW,QW="__json_buf";class H0{constructor(){h.add(this),this.messages=[],this.receivedMessages=[],Y$.set(this,void 0),this.controller=new AbortController,G0.set(this,void 0),c0.set(this,()=>{}),J0.set(this,()=>{}),Y0.set(this,void 0),u0.set(this,()=>{}),Q0.set(this,()=>{}),s.set(this,{}),z0.set(this,!1),p0.set(this,!1),d0.set(this,!1),k$.set(this,!1),i0.set(this,void 0),n0.set(this,void 0),D8.set(this,($)=>{if(I(this,p0,!0,"f"),$ instanceof Error&&$.name==="AbortError")$=new k;if($ instanceof k)return I(this,d0,!0,"f"),this._emit("abort",$);if($ instanceof K)return this._emit("error",$);if($ instanceof Error){let W=new K($.message);return W.cause=$,this._emit("error",W)}return this._emit("error",new K(String($)))}),I(this,G0,new Promise(($,W)=>{I(this,c0,$,"f"),I(this,J0,W,"f")}),"f"),I(this,Y0,new Promise(($,W)=>{I(this,u0,$,"f"),I(this,Q0,W,"f")}),"f"),D(this,G0,"f").catch(()=>{}),D(this,Y0,"f").catch(()=>{})}get response(){return D(this,i0,"f")}get request_id(){return D(this,n0,"f")}async withResponse(){let $=await D(this,G0,"f");if(!$)throw Error("Could not resolve a `Response` object");return{data:this,response:$,request_id:$.headers.get("request-id")}}static fromReadableStream($){let W=new H0;return W._run(()=>W._fromReadableStream($)),W}static createMessage($,W,X){let G=new H0;for(let J of W.messages)G._addMessageParam(J);return G._run(()=>G._createMessage($,{...W,stream:!0},{...X,headers:{...X?.headers,"X-Stainless-Helper-Method":"stream"}})),G}_run($){$().then(()=>{this._emitFinal(),this._emit("end")},D(this,D8,"f"))}_addMessageParam($){this.messages.push($)}_addMessage($,W=!0){if(this.receivedMessages.push($),W)this._emit("message",$)}async _createMessage($,W,X){let G=X?.signal;if(G){if(G.aborted)this.controller.abort();G.addEventListener("abort",()=>this.controller.abort())}D(this,h,"m",L8).call(this);let{response:J,data:Y}=await $.create({...W,stream:!0},{...X,signal:this.controller.signal}).withResponse();this._connected(J);for await(let Q of Y)D(this,h,"m",F8).call(this,Q);if(Y.controller.signal?.aborted)throw new k;D(this,h,"m",j8).call(this)}_connected($){if(this.ended)return;I(this,i0,$,"f"),I(this,n0,$?.headers.get("request-id"),"f"),D(this,c0,"f").call(this,$),this._emit("connect")}get ended(){return D(this,z0,"f")}get errored(){return D(this,p0,"f")}get aborted(){return D(this,d0,"f")}abort(){this.controller.abort()}on($,W){return(D(this,s,"f")[$]||(D(this,s,"f")[$]=[])).push({listener:W}),this}off($,W){let X=D(this,s,"f")[$];if(!X)return this;let G=X.findIndex((J)=>J.listener===W);if(G>=0)X.splice(G,1);return this}once($,W){return(D(this,s,"f")[$]||(D(this,s,"f")[$]=[])).push({listener:W,once:!0}),this}emitted($){return new Promise((W,X)=>{if(I(this,k$,!0,"f"),$!=="error")this.once("error",X);this.once($,W)})}async done(){I(this,k$,!0,"f"),await D(this,Y0,"f")}get currentMessage(){return D(this,Y$,"f")}async finalMessage(){return await this.done(),D(this,h,"m",w8).call(this)}async finalText(){return await this.done(),D(this,h,"m",JW).call(this)}_emit($,...W){if(D(this,z0,"f"))return;if($==="end")I(this,z0,!0,"f"),D(this,u0,"f").call(this);let X=D(this,s,"f")[$];if(X)D(this,s,"f")[$]=X.filter((G)=>!G.once),X.forEach(({listener:G})=>G(...W));if($==="abort"){let G=W[0];if(!D(this,k$,"f")&&!X?.length)Promise.reject(G);D(this,J0,"f").call(this,G),D(this,Q0,"f").call(this,G),this._emit("end");return}if($==="error"){let G=W[0];if(!D(this,k$,"f")&&!X?.length)Promise.reject(G);D(this,J0,"f").call(this,G),D(this,Q0,"f").call(this,G),this._emit("end")}}_emitFinal(){if(this.receivedMessages.at(-1))this._emit("finalMessage",D(this,h,"m",w8).call(this))}async _fromReadableStream($,W){let X=W?.signal;if(X){if(X.aborted)this.controller.abort();X.addEventListener("abort",()=>this.controller.abort())}D(this,h,"m",L8).call(this),this._connected(null);let G=g.fromReadableStream($,this.controller);for await(let J of G)D(this,h,"m",F8).call(this,J);if(G.controller.signal?.aborted)throw new k;D(this,h,"m",j8).call(this)}[(Y$=new WeakMap,G0=new WeakMap,c0=new WeakMap,J0=new WeakMap,Y0=new WeakMap,u0=new WeakMap,Q0=new WeakMap,s=new WeakMap,z0=new WeakMap,p0=new WeakMap,d0=new WeakMap,k$=new WeakMap,i0=new WeakMap,n0=new WeakMap,D8=new WeakMap,h=new WeakSet,w8=function(){if(this.receivedMessages.length===0)throw new K("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},JW=function(){if(this.receivedMessages.length===0)throw new K("stream ended without producing a Message with role=assistant");let W=this.receivedMessages.at(-1).content.filter((X)=>X.type==="text").map((X)=>X.text);if(W.length===0)throw new K("stream ended without producing a content block with type=text");return W.join(" ")},L8=function(){if(this.ended)return;I(this,Y$,void 0,"f")},F8=function(W){if(this.ended)return;let X=D(this,h,"m",YW).call(this,W);switch(this._emit("streamEvent",W,X),W.type){case"content_block_delta":{let G=X.content.at(-1);switch(W.delta.type){case"text_delta":{if(G.type==="text")this._emit("text",W.delta.text,G.text||"");break}case"citations_delta":{if(G.type==="text")this._emit("citation",W.delta.citation,G.citations??[]);break}case"input_json_delta":{if(G.type==="tool_use"&&G.input)this._emit("inputJson",W.delta.partial_json,G.input);break}case"thinking_delta":{if(G.type==="thinking")this._emit("thinking",W.delta.thinking,G.thinking);break}case"signature_delta":{if(G.type==="thinking")this._emit("signature",G.signature);break}default:zW(W.delta)}break}case"message_stop":{this._addMessageParam(X),this._addMessage(X,!0);break}case"content_block_stop":{this._emit("contentBlock",X.content.at(-1));break}case"message_start":{I(this,Y$,X,"f");break}case"content_block_start":case"message_delta":break}},j8=function(){if(this.ended)throw new K("stream has ended, this shouldn't happen");let W=D(this,Y$,"f");if(!W)throw new K("request ended without sending any chunks");return I(this,Y$,void 0,"f"),W},YW=function(W){let X=D(this,Y$,"f");if(W.type==="message_start"){if(X)throw new K(`Unexpected event order, got ${W.type} before receiving "message_stop"`);return W.message}if(!X)throw new K(`Unexpected event order, got ${W.type} before "message_start"`);switch(W.type){case"message_stop":return X;case"message_delta":return X.stop_reason=W.delta.stop_reason,X.stop_sequence=W.delta.stop_sequence,X.usage.output_tokens=W.usage.output_tokens,X;case"content_block_start":return X.content.push(W.content_block),X;case"content_block_delta":{let G=X.content.at(W.index);switch(W.delta.type){case"text_delta":{if(G?.type==="text")G.text+=W.delta.text;break}case"citations_delta":{if(G?.type==="text")G.citations??(G.citations=[]),G.citations.push(W.delta.citation);break}case"input_json_delta":{if(G?.type==="tool_use"){let J=G[QW]||"";if(J+=W.delta.partial_json,Object.defineProperty(G,QW,{value:J,enumerable:!1,writable:!0}),J)G.input=l0(J)}break}case"thinking_delta":{if(G?.type==="thinking")G.thinking+=W.delta.thinking;break}case"signature_delta":{if(G?.type==="thinking")G.signature=W.delta.signature;break}default:zW(W.delta)}return X}case"content_block_stop":return X}},Symbol.asyncIterator)](){let $=[],W=[],X=!1;return this.on("streamEvent",(G)=>{let J=W.shift();if(J)J.resolve(G);else $.push(G)}),this.on("end",()=>{X=!0;for(let G of W)G.resolve(void 0);W.length=0}),this.on("abort",(G)=>{X=!0;for(let J of W)J.reject(G);W.length=0}),this.on("error",(G)=>{X=!0;for(let J of W)J.reject(G);W.length=0}),{next:async()=>{if(!$.length){if(X)return{value:void 0,done:!0};return new Promise((J,Y)=>W.push({resolve:J,reject:Y})).then((J)=>J?{value:J,done:!1}:{value:void 0,done:!0})}return{value:$.shift(),done:!1}},return:async()=>{return this.abort(),{value:void 0,done:!0}}}}toReadableStream(){return new g(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function zW($){}var HW={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025"};class w$ extends T{constructor(){super(...arguments);this.batches=new T$(this._client)}create($,W){let{betas:X,...G}=$;if(G.model in HW)console.warn(`The model '${G.model}' is deprecated and will reach end-of-life on ${HW[G.model]}
7
- Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);return this._client.post("/v1/messages?beta=true",{body:G,timeout:this._client._options.timeout??(G.stream?600000:this._client._calculateNonstreamingTimeout(G.max_tokens)),...W,headers:{...X?.toString()!=null?{"anthropic-beta":X?.toString()}:void 0,...W?.headers},stream:$.stream??!1})}stream($,W){return H0.createMessage(this,$,W)}countTokens($,W){let{betas:X,...G}=$;return this._client.post("/v1/messages/count_tokens?beta=true",{body:G,...W,headers:{"anthropic-beta":[...X??[],"token-counting-2024-11-01"].toString(),...W?.headers}})}}w$.Batches=T$;w$.BetaMessageBatchesPage=X0;class e extends T{constructor(){super(...arguments);this.models=new C$(this._client),this.messages=new w$(this._client)}}e.Models=C$;e.BetaModelInfosPage=W0;e.Messages=w$;class I$ extends T{create($,W){return this._client.post("/v1/complete",{body:$,timeout:this._client._options.timeout??600000,...W,stream:$.stream??!1})}}class b$ extends T{create($,W){return this._client.post("/v1/messages/batches",{body:$,...W})}retrieve($,W){return this._client.get(`/v1/messages/batches/${$}`,W)}list($={},W){if(y($))return this.list({},$);return this._client.getAPIList("/v1/messages/batches",V0,{query:$,...W})}delete($,W){return this._client.delete(`/v1/messages/batches/${$}`,W)}cancel($,W){return this._client.post(`/v1/messages/batches/${$}/cancel`,W)}async results($,W){let X=await this.retrieve($);if(!X.results_url)throw new K(`No batch \`results_url\`; Has it finished processing? ${X.processing_status} - ${X.id}`);return this._client.get(X.results_url,{...W,headers:{Accept:"application/binary",...W?.headers},__binaryResponse:!0})._thenUnwrap((G,J)=>f$.fromResponse(J.response,J.controller))}}class V0 extends t{}b$.MessageBatchesPage=V0;var b=function($,W,X,G,J){if(G==="m")throw TypeError("Private method is not writable");if(G==="a"&&!J)throw TypeError("Private accessor was defined without a setter");if(typeof W==="function"?$!==W||!J:!W.has($))throw TypeError("Cannot write private member to an object whose class did not declare it");return G==="a"?J.call($,X):J?J.value=X:W.set($,X),X},L=function($,W,X,G){if(X==="a"&&!G)throw TypeError("Private accessor was defined without a getter");if(typeof W==="function"?$!==W||!G:!W.has($))throw TypeError("Cannot read private member from an object whose class did not declare it");return X==="m"?G:X==="a"?G.call($):G?G.value:W.get($)},m,Q$,q0,a0,_0,B0,o0,M0,$$,U0,r0,t0,x$,s0,e0,S8,VW,E8,R8,A8,C8,qW,_W="__json_buf";class N0{constructor(){m.add(this),this.messages=[],this.receivedMessages=[],Q$.set(this,void 0),this.controller=new AbortController,q0.set(this,void 0),a0.set(this,()=>{}),_0.set(this,()=>{}),B0.set(this,void 0),o0.set(this,()=>{}),M0.set(this,()=>{}),$$.set(this,{}),U0.set(this,!1),r0.set(this,!1),t0.set(this,!1),x$.set(this,!1),s0.set(this,void 0),e0.set(this,void 0),E8.set(this,($)=>{if(b(this,r0,!0,"f"),$ instanceof Error&&$.name==="AbortError")$=new k;if($ instanceof k)return b(this,t0,!0,"f"),this._emit("abort",$);if($ instanceof K)return this._emit("error",$);if($ instanceof Error){let W=new K($.message);return W.cause=$,this._emit("error",W)}return this._emit("error",new K(String($)))}),b(this,q0,new Promise(($,W)=>{b(this,a0,$,"f"),b(this,_0,W,"f")}),"f"),b(this,B0,new Promise(($,W)=>{b(this,o0,$,"f"),b(this,M0,W,"f")}),"f"),L(this,q0,"f").catch(()=>{}),L(this,B0,"f").catch(()=>{})}get response(){return L(this,s0,"f")}get request_id(){return L(this,e0,"f")}async withResponse(){let $=await L(this,q0,"f");if(!$)throw Error("Could not resolve a `Response` object");return{data:this,response:$,request_id:$.headers.get("request-id")}}static fromReadableStream($){let W=new N0;return W._run(()=>W._fromReadableStream($)),W}static createMessage($,W,X){let G=new N0;for(let J of W.messages)G._addMessageParam(J);return G._run(()=>G._createMessage($,{...W,stream:!0},{...X,headers:{...X?.headers,"X-Stainless-Helper-Method":"stream"}})),G}_run($){$().then(()=>{this._emitFinal(),this._emit("end")},L(this,E8,"f"))}_addMessageParam($){this.messages.push($)}_addMessage($,W=!0){if(this.receivedMessages.push($),W)this._emit("message",$)}async _createMessage($,W,X){let G=X?.signal;if(G){if(G.aborted)this.controller.abort();G.addEventListener("abort",()=>this.controller.abort())}L(this,m,"m",R8).call(this);let{response:J,data:Y}=await $.create({...W,stream:!0},{...X,signal:this.controller.signal}).withResponse();this._connected(J);for await(let Q of Y)L(this,m,"m",A8).call(this,Q);if(Y.controller.signal?.aborted)throw new k;L(this,m,"m",C8).call(this)}_connected($){if(this.ended)return;b(this,s0,$,"f"),b(this,e0,$?.headers.get("request-id"),"f"),L(this,a0,"f").call(this,$),this._emit("connect")}get ended(){return L(this,U0,"f")}get errored(){return L(this,r0,"f")}get aborted(){return L(this,t0,"f")}abort(){this.controller.abort()}on($,W){return(L(this,$$,"f")[$]||(L(this,$$,"f")[$]=[])).push({listener:W}),this}off($,W){let X=L(this,$$,"f")[$];if(!X)return this;let G=X.findIndex((J)=>J.listener===W);if(G>=0)X.splice(G,1);return this}once($,W){return(L(this,$$,"f")[$]||(L(this,$$,"f")[$]=[])).push({listener:W,once:!0}),this}emitted($){return new Promise((W,X)=>{if(b(this,x$,!0,"f"),$!=="error")this.once("error",X);this.once($,W)})}async done(){b(this,x$,!0,"f"),await L(this,B0,"f")}get currentMessage(){return L(this,Q$,"f")}async finalMessage(){return await this.done(),L(this,m,"m",S8).call(this)}async finalText(){return await this.done(),L(this,m,"m",VW).call(this)}_emit($,...W){if(L(this,U0,"f"))return;if($==="end")b(this,U0,!0,"f"),L(this,o0,"f").call(this);let X=L(this,$$,"f")[$];if(X)L(this,$$,"f")[$]=X.filter((G)=>!G.once),X.forEach(({listener:G})=>G(...W));if($==="abort"){let G=W[0];if(!L(this,x$,"f")&&!X?.length)Promise.reject(G);L(this,_0,"f").call(this,G),L(this,M0,"f").call(this,G),this._emit("end");return}if($==="error"){let G=W[0];if(!L(this,x$,"f")&&!X?.length)Promise.reject(G);L(this,_0,"f").call(this,G),L(this,M0,"f").call(this,G),this._emit("end")}}_emitFinal(){if(this.receivedMessages.at(-1))this._emit("finalMessage",L(this,m,"m",S8).call(this))}async _fromReadableStream($,W){let X=W?.signal;if(X){if(X.aborted)this.controller.abort();X.addEventListener("abort",()=>this.controller.abort())}L(this,m,"m",R8).call(this),this._connected(null);let G=g.fromReadableStream($,this.controller);for await(let J of G)L(this,m,"m",A8).call(this,J);if(G.controller.signal?.aborted)throw new k;L(this,m,"m",C8).call(this)}[(Q$=new WeakMap,q0=new WeakMap,a0=new WeakMap,_0=new WeakMap,B0=new WeakMap,o0=new WeakMap,M0=new WeakMap,$$=new WeakMap,U0=new WeakMap,r0=new WeakMap,t0=new WeakMap,x$=new WeakMap,s0=new WeakMap,e0=new WeakMap,E8=new WeakMap,m=new WeakSet,S8=function(){if(this.receivedMessages.length===0)throw new K("stream ended without producing a Message with role=assistant");return this.receivedMessages.at(-1)},VW=function(){if(this.receivedMessages.length===0)throw new K("stream ended without producing a Message with role=assistant");let W=this.receivedMessages.at(-1).content.filter((X)=>X.type==="text").map((X)=>X.text);if(W.length===0)throw new K("stream ended without producing a content block with type=text");return W.join(" ")},R8=function(){if(this.ended)return;b(this,Q$,void 0,"f")},A8=function(W){if(this.ended)return;let X=L(this,m,"m",qW).call(this,W);switch(this._emit("streamEvent",W,X),W.type){case"content_block_delta":{let G=X.content.at(-1);switch(W.delta.type){case"text_delta":{if(G.type==="text")this._emit("text",W.delta.text,G.text||"");break}case"citations_delta":{if(G.type==="text")this._emit("citation",W.delta.citation,G.citations??[]);break}case"input_json_delta":{if(G.type==="tool_use"&&G.input)this._emit("inputJson",W.delta.partial_json,G.input);break}case"thinking_delta":{if(G.type==="thinking")this._emit("thinking",W.delta.thinking,G.thinking);break}case"signature_delta":{if(G.type==="thinking")this._emit("signature",G.signature);break}default:BW(W.delta)}break}case"message_stop":{this._addMessageParam(X),this._addMessage(X,!0);break}case"content_block_stop":{this._emit("contentBlock",X.content.at(-1));break}case"message_start":{b(this,Q$,X,"f");break}case"content_block_start":case"message_delta":break}},C8=function(){if(this.ended)throw new K("stream has ended, this shouldn't happen");let W=L(this,Q$,"f");if(!W)throw new K("request ended without sending any chunks");return b(this,Q$,void 0,"f"),W},qW=function(W){let X=L(this,Q$,"f");if(W.type==="message_start"){if(X)throw new K(`Unexpected event order, got ${W.type} before receiving "message_stop"`);return W.message}if(!X)throw new K(`Unexpected event order, got ${W.type} before "message_start"`);switch(W.type){case"message_stop":return X;case"message_delta":return X.stop_reason=W.delta.stop_reason,X.stop_sequence=W.delta.stop_sequence,X.usage.output_tokens=W.usage.output_tokens,X;case"content_block_start":return X.content.push(W.content_block),X;case"content_block_delta":{let G=X.content.at(W.index);switch(W.delta.type){case"text_delta":{if(G?.type==="text")G.text+=W.delta.text;break}case"citations_delta":{if(G?.type==="text")G.citations??(G.citations=[]),G.citations.push(W.delta.citation);break}case"input_json_delta":{if(G?.type==="tool_use"){let J=G[_W]||"";if(J+=W.delta.partial_json,Object.defineProperty(G,_W,{value:J,enumerable:!1,writable:!0}),J)G.input=l0(J)}break}case"thinking_delta":{if(G?.type==="thinking")G.thinking+=W.delta.thinking;break}case"signature_delta":{if(G?.type==="thinking")G.signature=W.delta.signature;break}default:BW(W.delta)}return X}case"content_block_stop":return X}},Symbol.asyncIterator)](){let $=[],W=[],X=!1;return this.on("streamEvent",(G)=>{let J=W.shift();if(J)J.resolve(G);else $.push(G)}),this.on("end",()=>{X=!0;for(let G of W)G.resolve(void 0);W.length=0}),this.on("abort",(G)=>{X=!0;for(let J of W)J.reject(G);W.length=0}),this.on("error",(G)=>{X=!0;for(let J of W)J.reject(G);W.length=0}),{next:async()=>{if(!$.length){if(X)return{value:void 0,done:!0};return new Promise((J,Y)=>W.push({resolve:J,reject:Y})).then((J)=>J?{value:J,done:!1}:{value:void 0,done:!0})}return{value:$.shift(),done:!1}},return:async()=>{return this.abort(),{value:void 0,done:!0}}}}toReadableStream(){return new g(this[Symbol.asyncIterator].bind(this),this.controller).toReadableStream()}}function BW($){}class z$ extends T{constructor(){super(...arguments);this.batches=new b$(this._client)}create($,W){if($.model in MW)console.warn(`The model '${$.model}' is deprecated and will reach end-of-life on ${MW[$.model]}
8
- Please migrate to a newer model. Visit https://docs.anthropic.com/en/docs/resources/model-deprecations for more information.`);return this._client.post("/v1/messages",{body:$,timeout:this._client._options.timeout??($.stream?600000:this._client._calculateNonstreamingTimeout($.max_tokens)),...W,stream:$.stream??!1})}stream($,W){return N0.createMessage(this,$,W)}countTokens($,W){return this._client.post("/v1/messages/count_tokens",{body:$,...W})}}var MW={"claude-1.3":"November 6th, 2024","claude-1.3-100k":"November 6th, 2024","claude-instant-1.1":"November 6th, 2024","claude-instant-1.1-100k":"November 6th, 2024","claude-instant-1.2":"November 6th, 2024","claude-3-sonnet-20240229":"July 21st, 2025","claude-2.1":"July 21st, 2025","claude-2.0":"July 21st, 2025"};z$.Batches=b$;z$.MessageBatchesPage=V0;class D$ extends T{retrieve($,W){return this._client.get(`/v1/models/${$}`,W)}list($={},W){if(y($))return this.list({},$);return this._client.getAPIList("/v1/models",Z$,{query:$,...W})}}class Z$ extends t{}D$.ModelInfosPage=Z$;var UW;class S extends K8{constructor({baseURL:$=m0("ANTHROPIC_BASE_URL"),apiKey:W=m0("ANTHROPIC_API_KEY")??null,authToken:X=m0("ANTHROPIC_AUTH_TOKEN")??null,...G}={}){let J={apiKey:W,authToken:X,...G,baseURL:$||"https://api.anthropic.com"};if(!J.dangerouslyAllowBrowser&&GW())throw new K(`It looks like you're running in a browser-like environment.
9
-
10
- This is disabled by default, as it risks exposing your secret API credentials to attackers.
11
- If you understand the risks and have appropriate mitigations in place,
12
- you can set the \`dangerouslyAllowBrowser\` option to \`true\`, e.g.,
13
-
14
- new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
15
- `);super({baseURL:J.baseURL,timeout:J.timeout??600000,httpAgent:J.httpAgent,maxRetries:J.maxRetries,fetch:J.fetch});this.completions=new I$(this),this.messages=new z$(this),this.models=new D$(this),this.beta=new e(this),this._options=J,this.apiKey=W,this.authToken=X}defaultQuery(){return this._options.defaultQuery}defaultHeaders($){return{...super.defaultHeaders($),...this._options.dangerouslyAllowBrowser?{"anthropic-dangerous-direct-browser-access":"true"}:void 0,"anthropic-version":"2023-06-01",...this._options.defaultHeaders}}validateHeaders($,W){if(this.apiKey&&$["x-api-key"])return;if(W["x-api-key"]===null)return;if(this.authToken&&$.authorization)return;if(W.authorization===null)return;throw Error('Could not resolve authentication method. Expected either apiKey or authToken to be set. Or for one of the "X-Api-Key" or "Authorization" headers to be explicitly omitted')}authHeaders($){let W=this.apiKeyAuth($),X=this.bearerAuth($);if(W!=null&&!$0(W))return W;if(X!=null&&!$0(X))return X;return{}}apiKeyAuth($){if(this.apiKey==null)return{};return{"X-Api-Key":this.apiKey}}bearerAuth($){if(this.authToken==null)return{};return{Authorization:`Bearer ${this.authToken}`}}}UW=S;S.Anthropic=UW;S.HUMAN_PROMPT=`
16
-
17
- Human:`;S.AI_PROMPT=`
18
-
19
- Assistant:`;S.DEFAULT_TIMEOUT=600000;S.AnthropicError=K;S.APIError=C;S.APIConnectionError=K$;S.APIConnectionTimeoutError=t$;S.APIUserAbortError=k;S.NotFoundError=P0;S.ConflictError=k0;S.RateLimitError=b0;S.BadRequestError=C0;S.AuthenticationError=f0;S.InternalServerError=x0;S.PermissionDeniedError=T0;S.UnprocessableEntityError=I0;S.toFile=a8;S.fileFromPath=A0;S.Completions=I$;S.Messages=z$;S.Models=D$;S.ModelInfosPage=Z$;S.Beta=e;var $8=S;var hX=new Set(["decision","bugfix","feature","refactor","discovery","change"]);function f($,W){let X=new RegExp(`<${W}[^>]*>([\\s\\S]*?)</${W}>`,"i"),G=$.match(X);return G?G[1].trim():""}function L$($,W){let X=new RegExp(`<${W}[^>]*>([\\s\\S]*?)</${W}>`,"gi"),G=[];for(let J of $.matchAll(X)){let Y=J[1].trim();if(Y)G.push(Y)}return G}function NW($){let W=f($,"observation");if(!W)return null;let X=f(W,"type").toLowerCase(),G=hX.has(X)?X:"discovery",J=f(W,"title")||"Untitled observation",Y=f(W,"subtitle"),Q=f(W,"narrative"),z=L$(f(W,"facts"),"fact"),H=L$(f(W,"concepts"),"concept"),q=L$(f(W,"files_read"),"file"),O=L$(f(W,"files_modified"),"file");return{type:G,title:J,subtitle:Y,facts:z,narrative:Q,concepts:H,filesRead:q,filesModified:O}}function KW($){let W=f($,"session_summary");if(!W)return null;let X=f(W,"summary")||"No summary available",G=L$(f(W,"key_decisions"),"decision"),J=L$(f(W,"files_modified"),"file"),Y=L$(f(W,"concepts"),"concept"),Q=f(W,"request")||void 0,z=f(W,"investigated")||void 0,H=f(W,"learned")||void 0,q=f(W,"completed")||void 0,O=f(W,"next_steps")||void 0;return{summary:X,keyDecisions:G,filesModified:J,concepts:Y,request:Q,investigated:z,learned:H,completed:q,nextSteps:O}}function H$($){return Math.ceil($.length/4)}function OW($,W,X){let G=X?`<session_context>
20
- ${X}
2
+ var AW=Object.create;var{getPrototypeOf:RW,defineProperty:f$,getOwnPropertyNames:DW}=Object;var OW=Object.prototype.hasOwnProperty;var NW=($,W,J)=>{J=$!=null?AW(RW($)):{};let Q=W||!$||!$.__esModule?f$(J,"default",{value:$,enumerable:!0}):J;for(let X of DW($))if(!OW.call(Q,X))f$(Q,X,{get:()=>$[X],enumerable:!0});return Q};var KW=($,W)=>{for(var J in W)f$($,J,{get:W[J],enumerable:!0,configurable:!0,set:(Q)=>W[J]=()=>Q})};var j$=import.meta.require;import{generateText as FW}from"ai";var wW=new Set(["decision","bugfix","feature","refactor","discovery","change"]);function O($,W){let J=new RegExp(`<${W}[^>]*>([\\s\\S]*?)</${W}>`,"i"),Q=$.match(J);return Q?Q[1].trim():""}function d($,W){let J=new RegExp(`<${W}[^>]*>([\\s\\S]*?)</${W}>`,"gi"),Q=[];for(let X of $.matchAll(J)){let _=X[1].trim();if(_)Q.push(_)}return Q}function m$($){let W=O($,"observation");if(!W)return null;let J=O(W,"type").toLowerCase(),Q=wW.has(J)?J:"discovery",X=O(W,"title")||"Untitled observation",_=O(W,"subtitle"),H=O(W,"narrative"),G=d(O(W,"facts"),"fact"),Y=d(O(W,"concepts"),"concept"),z=d(O(W,"files_read"),"file"),A=d(O(W,"files_modified"),"file");return{type:Q,title:X,subtitle:_,facts:G,narrative:H,concepts:Y,filesRead:z,filesModified:A}}function u$($){let W=O($,"session_summary");if(!W)return null;let J=O(W,"summary")||"No summary available",Q=d(O(W,"key_decisions"),"decision"),X=d(O(W,"files_modified"),"file"),_=d(O(W,"concepts"),"concept"),H=O(W,"request")||void 0,G=O(W,"investigated")||void 0,Y=O(W,"learned")||void 0,z=O(W,"completed")||void 0,A=O(W,"next_steps")||void 0;return{summary:J,keyDecisions:Q,filesModified:X,concepts:_,request:H,investigated:G,learned:Y,completed:z,nextSteps:A}}function Z($){return Math.ceil($.length/4)}function c$($,W,J){let Q=J?`<session_context>
3
+ ${J}
21
4
  </session_context>
22
5
 
23
6
  `:"";return`<task>
@@ -30,7 +13,7 @@ Analyze the following tool output and extract a structured observation.
30
13
  ${W}
31
14
  </tool_output>
32
15
 
33
- ${G}<instructions>
16
+ ${Q}<instructions>
34
17
  Extract a structured observation from the tool output. Determine the most appropriate type and provide a concise but informative summary.
35
18
 
36
19
  When extracting concepts, prefer established vocabulary where appropriate:
@@ -64,9 +47,9 @@ Respond with EXACTLY this XML format:
64
47
  <file>path/to/file/modified</file>
65
48
  </files_modified>
66
49
  </observation>
67
- </instructions>`}function wW($,W){let X=$.map((G,J)=>` <obs index="${J+1}" type="${G.type}">
68
- <title>${G.title}</title>
69
- <narrative>${G.narrative}</narrative>
50
+ </instructions>`}function p$($,W){let J=$.map((Q,X)=>` <obs index="${X+1}" type="${Q.type}">
51
+ <title>${Q.title}</title>
52
+ <narrative>${Q.narrative}</narrative>
70
53
  </obs>`).join(`
71
54
  `);return`<task>
72
55
  Summarize the following coding session based on its observations.
@@ -75,7 +58,7 @@ Summarize the following coding session based on its observations.
75
58
  <session_id>${W}</session_id>
76
59
 
77
60
  <observations>
78
- ${X}
61
+ ${J}
79
62
  </observations>
80
63
 
81
64
  <instructions>
@@ -99,44 +82,44 @@ Respond with EXACTLY this XML format:
99
82
  <concept>key-concept</concept>
100
83
  </concepts>
101
84
  </session_summary>
102
- </instructions>`}class K0{client;config;constructor($){this.config=$,this.client=$.apiKey&&$.compressionEnabled?new $8({apiKey:$.apiKey}):null}static MAX_INPUT_LENGTH=50000;async compress($,W,X){if(!this.config.compressionEnabled||!this.client)return null;if(W.length<this.config.minOutputLength)return null;let G=W.length>K0.MAX_INPUT_LENGTH?`${W.substring(0,K0.MAX_INPUT_LENGTH)}
85
+ </instructions>`}function O$($){switch($.provider){case"anthropic":{let{createAnthropic:W}=j$("@ai-sdk/anthropic");return W({apiKey:$.apiKey})($.model)}case"bedrock":{let{createAmazonBedrock:W}=j$("@ai-sdk/amazon-bedrock");return W()($.model)}case"openai":{let{createOpenAI:W}=j$("@ai-sdk/openai");return W({apiKey:$.apiKey})($.model)}case"google":{let{createGoogleGenerativeAI:W}=j$("@ai-sdk/google");return W({apiKey:$.apiKey})($.model)}default:throw Error(`Unknown provider: ${$.provider}. Supported: anthropic, bedrock, openai, google`)}}class V${model;config;_generate=FW;constructor($){this.config=$,this.model=null;let W=$.provider!=="bedrock";if($.compressionEnabled&&(!W||$.apiKey))try{this.model=O$({provider:$.provider,model:$.model,apiKey:$.apiKey})}catch{}}static MAX_INPUT_LENGTH=50000;async compress($,W,J){if(!this.config.compressionEnabled||!this.model)return null;if(W.length<this.config.minOutputLength)return null;let Q=W.length>V$.MAX_INPUT_LENGTH?`${W.substring(0,V$.MAX_INPUT_LENGTH)}
103
86
 
104
- [... truncated ...]`:W,J=OW($,G,X),Y=2;for(let Q=0;Q<=Y;Q++)try{let H=(await this.client.messages.create({model:this.config.model,max_tokens:this.config.maxTokensPerCompression,messages:[{role:"user",content:J}]})).content.filter((q)=>q.type==="text").map((q)=>q.text).join("");return NW(H)}catch(z){if(uX(z)&&Q<Y){let H=2**Q*1000;await DW(H);continue}return null}return null}async compressBatch($){let W=new Map;for(let X=0;X<$.length;X++){let G=$[X],J=await this.compress(G.toolName,G.toolOutput,G.sessionContext);if(W.set(G.callId,J),X<$.length-1)await DW(200)}return W}createFallbackObservation($,W){let X=cX(W),G=mX[$]??"discovery";return{type:G,title:`${$} execution`,subtitle:W.substring(0,100).replace(/\n/g," "),facts:[],narrative:`Tool ${$} was executed. Output length: ${W.length} chars.`,concepts:[],filesRead:G==="discovery"?X:[],filesModified:G==="change"?X:[]}}async isAvailable(){if(!this.client)return!1;try{return await this.client.messages.create({model:this.config.model,max_tokens:10,messages:[{role:"user",content:"ping"}]}),!0}catch{return!1}}}var mX={Read:"discovery",Write:"change",Edit:"change",Bash:"change",Glob:"discovery",Grep:"discovery"},lX=/(?:^|\s)((?:\.\/|\/|src\/|tests\/|lib\/)\S+\.\w+)/gm;function cX($){let W=[];for(let X of $.matchAll(lX))W.push(X[1]);return[...new Set(W)]}function uX($){if(typeof $!=="object"||$===null)return!1;let W=$.status;if(W===429||W===500||W===503)return!0;let X=$.error;if(typeof X==="object"&&X!==null&&X.type==="overloaded_error")return!0;return!1}function DW($){return new Promise((W)=>setTimeout(W,$))}class f8{client;config;constructor($){this.config=$,this.client=$.apiKey&&$.compressionEnabled?new $8({apiKey:$.apiKey}):null}async summarize($,W){if(W.length===0)return null;if(!this.config.compressionEnabled||!this.client)return this.createFallbackSummary(W);let X=wW(W.map((G)=>({type:G.type,title:G.title,narrative:G.narrative})),$);try{let J=(await this.client.messages.create({model:this.config.model,max_tokens:this.config.maxTokensPerCompression,messages:[{role:"user",content:X}]})).content.filter((Q)=>Q.type==="text").map((Q)=>Q.text).join(""),Y=KW(J);if(!Y)return this.createFallbackSummary(W);return Y}catch{return this.createFallbackSummary(W)}}createFallbackSummary($){let W=new Set,X=new Set,G=[];for(let z of $){for(let H of z.filesModified)W.add(H);for(let H of z.concepts)X.add(H);if(z.type==="decision")G.push(z.title)}let J=new Map;for(let z of $)J.set(z.type,(J.get(z.type)??0)+1);let Y=Array.from(J.entries()).map(([z,H])=>`${H} ${z}${H>1?"s":""}`).join(", "),Q=Array.from(X).slice(0,5).join(", ");return{summary:`Session with ${$.length} observations: ${Y}. Files modified: ${W.size}. Key concepts: ${Q}.`,keyDecisions:G.slice(0,5),filesModified:Array.from(W),concepts:Array.from(X)}}shouldSummarize($){return $>=2}}var LW={dbPath:".open-mem/memory.db",apiKey:void 0,model:"claude-sonnet-4-20250514",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};function pX(){let $={};if(process.env.OPEN_MEM_DB_PATH)$.dbPath=process.env.OPEN_MEM_DB_PATH;if(process.env.ANTHROPIC_API_KEY)$.apiKey=process.env.ANTHROPIC_API_KEY;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((W)=>W.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((W)=>W.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;return $}function T8($,W){let X=pX(),G={...LW,...X,...W};if(!G.dbPath.startsWith("/"))G.dbPath=`${$}/${G.dbPath}`;if(!G.apiKey)G.apiKey=process.env.ANTHROPIC_API_KEY;return G}function FW($){let W=[];if($.compressionEnabled&&!$.apiKey)W.push("AI compression enabled but no ANTHROPIC_API_KEY found. Set ANTHROPIC_API_KEY env var or disable compression.");if($.maxContextTokens<500)W.push("maxContextTokens must be at least 500");if($.batchSize<1)W.push("batchSize must be at least 1");if($.minOutputLength<0)W.push("minOutputLength must be non-negative");return W}function dX(){return{...LW}}async function jW($){let W=$.dbPath.substring(0,$.dbPath.lastIndexOf("/")),{mkdir:X}=await import("fs/promises");await X(W,{recursive:!0})}import{Database as iX}from"bun:sqlite";import{mkdirSync as nX}from"fs";class SW{db;constructor($){this.db=this.open($),this.configure()}open($){let W=$.lastIndexOf("/");if(W>0){let X=$.substring(0,W);nX(X,{recursive:!0})}return new iX($,{create:!0})}configure(){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")}ensureMigrationTable(){this.db.exec(`
87
+ [... truncated ...]`:W,X=c$($,Q,J),_=2;for(let H=0;H<=_;H++)try{let{text:G}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:X});return m$(G)}catch(G){if(kW(G)&&H<_){let Y=2**H*1000;await n$(Y);continue}return null}return null}async compressBatch($){let W=new Map;for(let J=0;J<$.length;J++){let Q=$[J],X=await this.compress(Q.toolName,Q.toolOutput,Q.sessionContext);if(W.set(Q.callId,X),J<$.length-1)await n$(200)}return W}createFallbackObservation($,W){let J=fW(W),Q=vW[$]??"discovery";return{type:Q,title:`${$} execution`,subtitle:W.substring(0,100).replace(/\n/g," "),facts:[],narrative:`Tool ${$} was executed. Output length: ${W.length} chars.`,concepts:[],filesRead:Q==="discovery"?J:[],filesModified:Q==="change"?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 vW={Read:"discovery",Write:"change",Edit:"change",Bash:"change",Glob:"discovery",Grep:"discovery"},CW=/(?:^|\s)((?:\.\/|\/|src\/|tests\/|lib\/)\S+\.\w+)/gm;function fW($){let W=[];for(let J of $.matchAll(CW))W.push(J[1]);return[...new Set(W)]}function kW($){if(typeof $!=="object"||$===null)return!1;let W=$.status;if(W===429||W===500||W===503)return!0;let J=$.error;if(typeof J==="object"&&J!==null&&J.type==="overloaded_error")return!0;return!1}function n$($){return new Promise((W)=>setTimeout(W,$))}import{generateText as bW}from"ai";class k${model;config;_generate=bW;constructor($){this.config=$,this.model=null;let W=$.provider!=="bedrock";if($.compressionEnabled&&(!W||$.apiKey))try{this.model=O$({provider:$.provider,model:$.model,apiKey:$.apiKey})}catch{}}async summarize($,W){if(W.length===0)return null;if(!this.config.compressionEnabled||!this.model)return this.createFallbackSummary(W);let J=p$(W.map((Q)=>({type:Q.type,title:Q.title,narrative:Q.narrative})),$);try{let{text:Q}=await this._generate({model:this.model,maxOutputTokens:this.config.maxTokensPerCompression,prompt:J}),X=u$(Q);if(!X)return this.createFallbackSummary(W);return X}catch{return this.createFallbackSummary(W)}}createFallbackSummary($){let W=new Set,J=new Set,Q=[];for(let G of $){for(let Y of G.filesModified)W.add(Y);for(let Y of G.concepts)J.add(Y);if(G.type==="decision")Q.push(G.title)}let X=new Map;for(let G of $)X.set(G.type,(X.get(G.type)??0)+1);let _=Array.from(X.entries()).map(([G,Y])=>`${Y} ${G}${Y>1?"s":""}`).join(", "),H=Array.from(J).slice(0,5).join(", ");return{summary:`Session with ${$.length} observations: ${_}. Files modified: ${W.size}. Key concepts: ${H}.`,keyDecisions:Q.slice(0,5),filesModified:Array.from(W),concepts:Array.from(J)}}shouldSummarize($){return $>=2}}var d$={dbPath:".open-mem/memory.db",provider:"anthropic",apiKey:void 0,model:"claude-sonnet-4-20250514",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};function PW(){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.ANTHROPIC_API_KEY)$.apiKey=process.env.ANTHROPIC_API_KEY;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((W)=>W.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((W)=>W.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;return $}function b$($,W){let J=PW(),Q={...d$,...J,...W};if(!Q.dbPath.startsWith("/"))Q.dbPath=`${$}/${Q.dbPath}`;if(!Q.apiKey)switch(Q.provider){case"anthropic":Q.apiKey=process.env.ANTHROPIC_API_KEY;break;case"openai":Q.apiKey=process.env.OPENAI_API_KEY;break;case"google":Q.apiKey=process.env.GOOGLE_GENERATIVE_AI_API_KEY;break;case"bedrock":break}if(Q.provider==="anthropic"&&!Q.apiKey){if(process.env.AWS_ACCESS_KEY_ID||process.env.AWS_PROFILE)Q.provider="bedrock",Q.model=`us.anthropic.${Q.model}-v1:0`}return Q}function i$($){let W=[],J=$.provider!=="bedrock";if($.compressionEnabled&&J&&!$.apiKey)W.push(`AI compression enabled but no API key found for provider "${$.provider}". Set the appropriate API key env var or disable compression with OPEN_MEM_COMPRESSION=false.`);if($.maxContextTokens<500)W.push("maxContextTokens must be at least 500");if($.batchSize<1)W.push("batchSize must be at least 1");if($.minOutputLength<0)W.push("minOutputLength must be non-negative");return W}function IW(){return{...d$}}async function r$($){let W=$.dbPath.substring(0,$.dbPath.lastIndexOf("/")),{mkdir:J}=await import("fs/promises");await J(W,{recursive:!0})}import{Database as hW}from"bun:sqlite";import{mkdirSync as TW}from"fs";class a${db;constructor($){this.db=this.open($),this.configure()}open($){let W=$.lastIndexOf("/");if(W>0){let J=$.substring(0,W);TW(J,{recursive:!0})}return new hW($,{create:!0})}configure(){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")}ensureMigrationTable(){this.db.exec(`
105
88
  CREATE TABLE IF NOT EXISTS _migrations (
106
89
  version INTEGER PRIMARY KEY,
107
90
  name TEXT NOT NULL,
108
91
  applied_at TEXT NOT NULL DEFAULT (datetime('now'))
109
92
  )
110
- `)}migrate($){this.ensureMigrationTable();let W=this.db.query("SELECT version FROM _migrations ORDER BY version").all(),X=new Set(W.map((J)=>J.version)),G=$.filter((J)=>!X.has(J.version)).sort((J,Y)=>J.version-Y.version);for(let J of G)this.db.transaction(()=>{this.db.exec(J.up),this.db.query("INSERT INTO _migrations (version, name) VALUES ($version, $name)").run({$version:J.version,$name:J.name})})()}run($,W){let X=this.db.query($);if(W)X.run(...W);else X.run()}get($,W){let X=this.db.query($);return W?X.get(...W):X.get()}all($,W){let X=this.db.query($);return W?X.all(...W):X.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 EW($){return new SW($)}import{randomUUID as aX}from"crypto";class P8{db;constructor($){this.db=$}create($){let W=aX(),X=new Date().toISOString();return this.db.run(`INSERT INTO observations
93
+ `)}migrate($){this.ensureMigrationTable();let W=this.db.query("SELECT version FROM _migrations ORDER BY version").all(),J=new Set(W.map((X)=>X.version)),Q=$.filter((X)=>!J.has(X.version)).sort((X,_)=>X.version-_.version);for(let X of Q)this.db.transaction(()=>{this.db.exec(X.up),this.db.query("INSERT INTO _migrations (version, name) VALUES ($version, $name)").run({$version:X.version,$name:X.name})})()}run($,W){let J=this.db.query($);if(W)J.run(...W);else J.run()}get($,W){let J=this.db.query($);return W?J.get(...W):J.get()}all($,W){let J=this.db.query($);return W?J.all(...W):J.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 o$($){return new a$($)}import{randomUUID as gW}from"crypto";class P${db;constructor($){this.db=$}create($){let W=gW(),J=new Date().toISOString();return this.db.run(`INSERT INTO observations
111
94
  (id, session_id, type, title, subtitle, facts, narrative,
112
95
  concepts, files_read, files_modified, raw_tool_output,
113
96
  tool_name, created_at, token_count)
114
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[W,$.sessionId,$.type,$.title,$.subtitle,JSON.stringify($.facts),$.narrative,JSON.stringify($.concepts),JSON.stringify($.filesRead),JSON.stringify($.filesModified),$.rawToolOutput,$.toolName,X,$.tokenCount]),{...$,id:W,createdAt:X}}getById($){let W=this.db.get("SELECT * FROM observations WHERE id = ?",[$]);return W?this.mapRow(W):null}getBySession($){return this.db.all("SELECT * FROM observations WHERE session_id = ? ORDER BY created_at ASC",[$]).map((W)=>this.mapRow(W))}getCount($){if($)return this.db.get("SELECT COUNT(*) as count FROM observations WHERE session_id = ?",[$])?.count??0;return this.db.get("SELECT COUNT(*) as count FROM observations")?.count??0}getIndex($,W=20){return this.db.all(`SELECT o.id, o.session_id, o.type, o.title, o.token_count, o.created_at
97
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[W,$.sessionId,$.type,$.title,$.subtitle,JSON.stringify($.facts),$.narrative,JSON.stringify($.concepts),JSON.stringify($.filesRead),JSON.stringify($.filesModified),$.rawToolOutput,$.toolName,J,$.tokenCount]),{...$,id:W,createdAt:J}}getById($){let W=this.db.get("SELECT * FROM observations WHERE id = ?",[$]);return W?this.mapRow(W):null}getBySession($){return this.db.all("SELECT * FROM observations WHERE session_id = ? ORDER BY created_at ASC",[$]).map((W)=>this.mapRow(W))}getCount($){if($)return this.db.get("SELECT COUNT(*) as count FROM observations WHERE session_id = ?",[$])?.count??0;return this.db.get("SELECT COUNT(*) as count FROM observations")?.count??0}getIndex($,W=20){return this.db.all(`SELECT o.id, o.session_id, o.type, o.title, o.token_count, o.created_at
115
98
  FROM observations o
116
99
  JOIN sessions s ON o.session_id = s.id
117
100
  WHERE s.project_path = ?
118
101
  ORDER BY o.created_at DESC
119
- LIMIT ?`,[$,W]).map((X)=>({id:X.id,sessionId:X.session_id,type:X.type,title:X.title,tokenCount:X.token_count,createdAt:X.created_at}))}search($){let W=`
102
+ LIMIT ?`,[$,W]).map((J)=>({id:J.id,sessionId:J.session_id,type:J.type,title:J.title,tokenCount:J.token_count,createdAt:J.created_at}))}search($){let W=`
120
103
  SELECT o.*, rank
121
104
  FROM observations o
122
105
  JOIN observations_fts fts ON o._rowid = fts.rowid
123
106
  WHERE observations_fts MATCH ?
124
- `,X=[$.query];if($.sessionId)W+=" AND o.session_id = ?",X.push($.sessionId);if($.type)W+=" AND o.type = ?",X.push($.type);return W+=" ORDER BY rank LIMIT ? OFFSET ?",X.push($.limit??10),X.push($.offset??0),this.db.all(W,X).map((G)=>({observation:this.mapRow(G),rank:G.rank,snippet:G.title}))}searchByConcept($,W=10){return this.db.all(`SELECT o.*
107
+ `,J=[$.query];if($.sessionId)W+=" AND o.session_id = ?",J.push($.sessionId);if($.type)W+=" AND o.type = ?",J.push($.type);return W+=" ORDER BY rank LIMIT ? OFFSET ?",J.push($.limit??10),J.push($.offset??0),this.db.all(W,J).map((Q)=>({observation:this.mapRow(Q),rank:Q.rank,snippet:Q.title}))}searchByConcept($,W=10){return this.db.all(`SELECT o.*
125
108
  FROM observations o
126
109
  JOIN observations_fts fts ON o._rowid = fts.rowid
127
110
  WHERE observations_fts MATCH ?
128
111
  ORDER BY rank
129
- LIMIT ?`,[`concepts:${$}`,W]).map((X)=>this.mapRow(X))}searchByFile($,W=10){return this.db.all(`SELECT o.*
112
+ LIMIT ?`,[`concepts:${$}`,W]).map((J)=>this.mapRow(J))}searchByFile($,W=10){return this.db.all(`SELECT o.*
130
113
  FROM observations o
131
114
  JOIN observations_fts fts ON o._rowid = fts.rowid
132
115
  WHERE observations_fts MATCH ?
133
116
  ORDER BY rank
134
- LIMIT ?`,[`files_read:"${$}" OR files_modified:"${$}"`,W]).map((X)=>this.mapRow(X))}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}}}import{randomUUID as oX}from"crypto";class k8{db;constructor($){this.db=$}create($){let W=oX(),X=new Date().toISOString();return this.db.run(`INSERT INTO pending_messages
117
+ LIMIT ?`,[`files_read:"${$}" OR files_modified:"${$}"`,W]).map((J)=>this.mapRow(J))}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}}}import{randomUUID as xW}from"crypto";class I${db;constructor($){this.db=$}create($){let W=xW(),J=new Date().toISOString();return this.db.run(`INSERT INTO pending_messages
135
118
  (id, session_id, tool_name, tool_output, call_id, created_at)
136
- VALUES (?, ?, ?, ?, ?, ?)`,[W,$.sessionId,$.toolName,$.toolOutput,$.callId,X]),{...$,id:W,createdAt:X,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((W)=>this.mapRow(W))}getByStatus($){return this.db.all("SELECT * FROM pending_messages WHERE status = ? ORDER BY created_at ASC",[$]).map((W)=>this.mapRow(W))}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($,W){this.db.run("UPDATE pending_messages SET status = 'failed', error = ?, retry_count = retry_count + 1 WHERE id = ?",[W,$])}resetStale($=5){return this.db.all(`UPDATE pending_messages SET status = 'pending'
119
+ VALUES (?, ?, ?, ?, ?, ?)`,[W,$.sessionId,$.toolName,$.toolOutput,$.callId,J]),{...$,id:W,createdAt:J,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((W)=>this.mapRow(W))}getByStatus($){return this.db.all("SELECT * FROM pending_messages WHERE status = ? ORDER BY created_at ASC",[$]).map((W)=>this.mapRow(W))}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($,W){this.db.run("UPDATE pending_messages SET status = 'failed', error = ?, retry_count = retry_count + 1 WHERE id = ?",[W,$])}resetStale($=5){return this.db.all(`UPDATE pending_messages SET status = 'pending'
137
120
  WHERE status = 'processing'
138
121
  AND created_at < datetime('now', ? || ' minutes')
139
- 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 rX=[{version:1,name:"create-core-tables",up:`
122
+ RETURNING id`,[`-${$}`]).length}mapRow($){return{id:$.id,sessionId:$.session_id,toolName:$.tool_name,toolOutput:$.tool_output,callId:$.call_id,createdAt:$.created_at,status:$.status,retryCount:$.retry_count,error:$.error??null}}}var yW=[{version:1,name:"create-core-tables",up:`
140
123
  -- Sessions table
141
124
  CREATE TABLE IF NOT EXISTS sessions (
142
125
  _rowid INTEGER PRIMARY KEY AUTOINCREMENT,
@@ -305,33 +288,33 @@ Respond with EXACTLY this XML format:
305
288
  ALTER TABLE session_summaries ADD COLUMN learned TEXT NOT NULL DEFAULT '';
306
289
  ALTER TABLE session_summaries ADD COLUMN completed TEXT NOT NULL DEFAULT '';
307
290
  ALTER TABLE session_summaries ADD COLUMN next_steps TEXT NOT NULL DEFAULT '';
308
- `}];function RW($){$.migrate(rX)}class I8{db;constructor($){this.db=$}create($,W){let X=new Date().toISOString();return this.db.run(`INSERT INTO sessions (id, project_path, started_at, status)
309
- VALUES (?, ?, ?, 'active')`,[$,W,X]),this.getById($)}getOrCreate($,W){let X=this.getById($);if(X)return X;return this.create($,W)}getById($){let W=this.db.get("SELECT * FROM sessions WHERE id = ?",[$]);return W?this.mapRow(W):null}getRecent($,W=10){return this.db.all("SELECT * FROM sessions WHERE project_path = ? ORDER BY started_at DESC LIMIT ?",[$,W]).map((X)=>this.mapRow(X))}getActive(){return this.db.all("SELECT * FROM sessions WHERE status = 'active' ORDER BY started_at DESC").map(($)=>this.mapRow($))}updateStatus($,W){this.db.run("UPDATE sessions SET status = ? WHERE id = ?",[W,$])}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($,W){this.db.run("UPDATE sessions SET summary_id = ? WHERE id = ?",[W,$])}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 tX}from"crypto";class b8{db;constructor($){this.db=$}create($){let W=tX(),X=new Date().toISOString();return this.db.run(`INSERT INTO session_summaries
291
+ `}];function t$($){$.migrate(yW)}class h${db;constructor($){this.db=$}create($,W){let J=new Date().toISOString();return this.db.run(`INSERT INTO sessions (id, project_path, started_at, status)
292
+ VALUES (?, ?, ?, 'active')`,[$,W,J]),this.getById($)}getOrCreate($,W){let J=this.getById($);if(J)return J;return this.create($,W)}getById($){let W=this.db.get("SELECT * FROM sessions WHERE id = ?",[$]);return W?this.mapRow(W):null}getRecent($,W=10){return this.db.all("SELECT * FROM sessions WHERE project_path = ? ORDER BY started_at DESC LIMIT ?",[$,W]).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($,W){this.db.run("UPDATE sessions SET status = ? WHERE id = ?",[W,$])}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($,W){this.db.run("UPDATE sessions SET summary_id = ? WHERE id = ?",[W,$])}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 ZW}from"crypto";class T${db;constructor($){this.db=$}create($){let W=ZW(),J=new Date().toISOString();return this.db.run(`INSERT INTO session_summaries
310
293
  (id, session_id, summary, key_decisions, files_modified,
311
294
  concepts, created_at, token_count,
312
295
  request, investigated, learned, completed, next_steps)
313
- VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[W,$.sessionId,$.summary,JSON.stringify($.keyDecisions),JSON.stringify($.filesModified),JSON.stringify($.concepts),X,$.tokenCount,$.request??"",$.investigated??"",$.learned??"",$.completed??"",$.nextSteps??""]),{...$,id:W,createdAt:X}}getBySessionId($){let W=this.db.get("SELECT * FROM session_summaries WHERE session_id = ?",[$]);return W?this.mapRow(W):null}getRecent($=10){return this.db.all("SELECT * FROM session_summaries ORDER BY created_at DESC LIMIT ?",[$]).map((W)=>this.mapRow(W))}search($,W=10){return this.db.all(`SELECT ss.*
296
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,[W,$.sessionId,$.summary,JSON.stringify($.keyDecisions),JSON.stringify($.filesModified),JSON.stringify($.concepts),J,$.tokenCount,$.request??"",$.investigated??"",$.learned??"",$.completed??"",$.nextSteps??""]),{...$,id:W,createdAt:J}}getBySessionId($){let W=this.db.get("SELECT * FROM session_summaries WHERE session_id = ?",[$]);return W?this.mapRow(W):null}getRecent($=10){return this.db.all("SELECT * FROM session_summaries ORDER BY created_at DESC LIMIT ?",[$]).map((W)=>this.mapRow(W))}search($,W=10){return this.db.all(`SELECT ss.*
314
297
  FROM session_summaries ss
315
298
  JOIN summaries_fts fts ON ss._rowid = fts.rowid
316
299
  WHERE summaries_fts MATCH ?
317
300
  ORDER BY rank
318
- LIMIT ?`,[$,W]).map((X)=>this.mapRow(X))}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}}}var sX={showTokenCosts:!0,observationTypes:"all",fullObservationCount:3,showLastSummary:!0},x8={bugfix:"\uD83D\uDD34",feature:"\uD83D\uDFE3",refactor:"\uD83D\uDD04",change:"\u2705",discovery:"\uD83D\uDD35",decision:"\u2696\uFE0F"};function AW($,W=sX){let X=[];if(X.push("## open-mem: Past Session Memory"),X.push(""),X.push("**\uD83D\uDCA1 Progressive Disclosure:** This is a compact index showing WHAT was observed and retrieval COST."),X.push("Use `mem-search` to find observations by query, then `mem-recall` with IDs to fetch full details."),W.showLastSummary&&$.recentSummaries.length>0){X.push(""),X.push("### Recent Sessions"),X.push("| Session | Summary | Decisions |"),X.push("|---------|---------|-----------|");for(let Y of $.recentSummaries){let Q=Y.keyDecisions.length>0?Y.keyDecisions.join("; "):"\u2014";X.push(`| ${Y.sessionId} | ${Y.summary} | ${Q} |`)}}let G=W.observationTypes==="all"?$.observationIndex:$.observationIndex.filter((Y)=>W.observationTypes.includes(Y.type));if(G.length>0){X.push(""),X.push(`### Recent Observations (${G.length} entries)`);let Y=eX(G,$.fullObservations);for(let[Q,z]of Y){if(X.push(""),X.push(`**${Q}**`),W.showTokenCosts)X.push("| ID | Type | Title | ~Tokens |"),X.push("|----|------|-------|---------|");else X.push("| ID | Type | Title |"),X.push("|----|------|-------|");for(let H of z){let q=x8[H.type]||"\uD83D\uDCDD";if(W.showTokenCosts)X.push(`| ${H.id} | ${q} | ${H.title} | ~${H.tokenCount} |`);else X.push(`| ${H.id} | ${q} | ${H.title} |`)}}}let J=$.fullObservations.slice(0,W.fullObservationCount);if(J.length>0){X.push(""),X.push("### Full Details (most recent)");for(let Y of J){let Q=x8[Y.type]||"\uD83D\uDCDD";if(X.push(""),X.push(`#### ${Q} ${Y.title} (${Y.id})`),X.push(Y.narrative),Y.facts.length>0)X.push(`**Facts:** ${Y.facts.map((H)=>`- ${H}`).join(" ")}`);if(Y.concepts.length>0)X.push(`**Concepts:** ${Y.concepts.join(", ")}`);let z=[...Y.filesRead,...Y.filesModified];if(z.length>0)X.push(`**Files:** ${z.join(", ")}`)}}return X.join(`
319
- `)}function eX($,W){let X=new Map;for(let J of W){let Y=J.filesModified[0]||J.filesRead[0];if(Y)X.set(J.id,Y)}let G=new Map;for(let J of $){let Y=X.get(J.id)??"General",Q=G.get(Y)??[];Q.push(J),G.set(Y,Q)}return G}function CW($){let W=[];if(W.push("[open-mem] Memory context:"),$.recentSummaries.length>0){W.push(`
320
- Recent sessions:`);for(let X of $.recentSummaries)W.push(`- ${X.summary}`)}if($.observationIndex.length>0){W.push(`
321
- Recent observations (${$.observationIndex.length} entries):`);for(let X of $.observationIndex)W.push(`- ${x8[X.type]||"\uD83D\uDCDD"} ${X.title}`)}return W.join(`
322
- `)}function W8($,W,X,G,J=[]){let Y=G,Q=[],z=[];for(let H of W){let q=H.tokenCount||H$(H.summary);if(Y-q<0)break;Q.push(H),Y-=q}for(let H of X){let q=H.tokenCount||H$(H.title);if(Y-q<0)break;z.push(H),Y-=q}return{recentSummaries:Q,observationIndex:z,fullObservations:[...J],totalTokens:G-Y}}function fW($,W,X,G,J){return async(Y,Q)=>{try{if(!$.contextInjectionEnabled)return;let z=X.getRecent(J,3),H=z.map((R)=>R.summaryId?G.getBySessionId(R.id):null).filter((R)=>R!==null),q=W.getIndex(J,10);if(H.length===0&&q.length===0)return;let O=W8(z,H,q,Math.floor($.maxContextTokens/2));Q.context.push(CW(O))}catch(z){console.error("[open-mem] Compaction hook error:",z)}}}function TW($,W,X,G,J){return async(Y,Q)=>{try{if(!$.contextInjectionEnabled)return;let z=X.getRecent(J,5);if(z.length===0)return;let H=z.map((c)=>c.summaryId?G.getBySessionId(c.id):null).filter((c)=>c!==null),q=W.getIndex(J,$.maxObservations);if(H.length===0&&q.length===0)return;let R=q.slice(0,$.contextFullObservationCount).map((c)=>c.id).map((c)=>W.getById(c)).filter((c)=>c!==null),l=W8(z,H,q,$.maxContextTokens,R),E0={showTokenCosts:$.contextShowTokenCosts,observationTypes:$.contextObservationTypes,fullObservationCount:$.contextFullObservationCount,showLastSummary:$.contextShowLastSummary};Q.system.push(AW(l,E0))}catch(z){console.error("[open-mem] Context injection error:",z)}}}function PW($,W,X){return async(G)=>{try{let{event:J}=G,Y=J.properties.sessionID;switch(J.type){case"session.created":{if(Y)W.getOrCreate(Y,X);break}case"session.idle":{if(await $.processBatch(),Y)W.updateStatus(Y,"idle");break}case"session.completed":case"session.ended":{if(Y)await $.processBatch(),await $.summarizeSession(Y),W.markCompleted(Y);break}default:break}}catch(J){console.error("[open-mem] Event handler error:",J)}}}function kW($,W,X,G){return async(J,Y)=>{try{let{tool:Q,sessionID:z,callID:H}=J,{output:q}=Y;if($.ignoredTools.includes(Q))return;if(!q||q.length<$.minOutputLength)return;let O=q;for(let R of $.sensitivePatterns)try{O=O.replace(new RegExp(R,"g"),"[REDACTED]")}catch{}O=O.replace(/<private>[\s\S]*?<\/private>/g,"[PRIVATE]"),X.getOrCreate(z,G),W.enqueue(z,Q,O,H)}catch(Q){console.error("[open-mem] Tool capture error:",Q)}}}class Z8{config;compressor;summarizer;pendingRepo;observationRepo;sessionRepo;summaryRepo;processing=!1;timer=null;constructor($,W,X,G,J,Y,Q){this.config=$;this.compressor=W;this.summarizer=X;this.pendingRepo=G;this.observationRepo=J;this.sessionRepo=Y;this.summaryRepo=Q}enqueue($,W,X,G){this.pendingRepo.create({sessionId:$,toolName:W,toolOutput:X,callId:G})}async processBatch(){if(this.processing)return 0;this.processing=!0;let $=0;try{this.pendingRepo.resetStale(5);let W=this.pendingRepo.getPending(this.config.batchSize);if(W.length===0)return 0;for(let X of W)try{this.pendingRepo.markProcessing(X.id);let J=await this.compressor.compress(X.toolName,X.toolOutput)??this.compressor.createFallbackObservation(X.toolName,X.toolOutput);this.observationRepo.create({sessionId:X.sessionId,type:J.type,title:J.title,subtitle:J.subtitle,facts:J.facts,narrative:J.narrative,concepts:J.concepts,filesRead:J.filesRead,filesModified:J.filesModified,rawToolOutput:X.toolOutput,toolName:X.toolName,tokenCount:H$(`${J.title} ${J.narrative} ${J.facts.join(" ")}`)}),this.sessionRepo.incrementObservationCount(X.sessionId),this.pendingRepo.markCompleted(X.id),$++}catch(G){this.pendingRepo.markFailed(X.id,String(G))}return $}finally{this.processing=!1}}async summarizeSession($){let W=this.observationRepo.getBySession($);if(!this.summarizer.shouldSummarize(W.length))return;if(this.summaryRepo.getBySessionId($))return;let G=await this.summarizer.summarize($,W);if(!G)return;let J=this.summaryRepo.create({sessionId:$,summary:G.summary,keyDecisions:G.keyDecisions,filesModified:G.filesModified,concepts:G.concepts,tokenCount:H$(G.summary)});this.sessionRepo.setSummary($,J.id)}start(){if(this.timer)return;this.timer=setInterval(async()=>{try{await this.processBatch()}catch{}},this.config.batchIntervalMs)}stop(){if(this.timer)clearInterval(this.timer),this.timer=null}get isRunning(){return this.timer!==null}get isProcessing(){return this.processing}getStats(){return{pending:this.pendingRepo.getPending(1000).length,processing:this.processing}}}var A={};sW(A,{void:()=>g6,util:()=>j,unknown:()=>Z6,union:()=>l6,undefined:()=>I6,tuple:()=>p6,transformer:()=>$9,symbol:()=>k6,string:()=>mW,strictObject:()=>m6,setErrorMap:()=>X6,set:()=>n6,record:()=>d6,quotelessJson:()=>$6,promise:()=>e6,preprocess:()=>G9,pipeline:()=>J9,ostring:()=>Y9,optional:()=>W9,onumber:()=>Q9,oboolean:()=>z9,objectUtil:()=>v8,object:()=>h6,number:()=>lW,nullable:()=>X9,null:()=>b6,never:()=>v6,nativeEnum:()=>s6,nan:()=>f6,map:()=>i6,makeIssue:()=>O0,literal:()=>r6,lazy:()=>o6,late:()=>A6,isValid:()=>V$,isDirty:()=>G8,isAsync:()=>g$,isAborted:()=>X8,intersection:()=>u6,instanceof:()=>C6,getParsedType:()=>a,getErrorMap:()=>v$,function:()=>a6,enum:()=>t6,effect:()=>$9,discriminatedUnion:()=>c6,defaultErrorMap:()=>W$,datetimeRegex:()=>gW,date:()=>P6,custom:()=>hW,coerce:()=>H9,boolean:()=>cW,bigint:()=>T6,array:()=>y6,any:()=>x6,addIssueToContext:()=>B,ZodVoid:()=>D0,ZodUnknown:()=>q$,ZodUnion:()=>u$,ZodUndefined:()=>l$,ZodType:()=>F,ZodTuple:()=>r,ZodTransformer:()=>n,ZodSymbol:()=>w0,ZodString:()=>u,ZodSet:()=>E$,ZodSchema:()=>F,ZodRecord:()=>L0,ZodReadonly:()=>r$,ZodPromise:()=>R$,ZodPipeline:()=>S0,ZodParsedType:()=>_,ZodOptional:()=>d,ZodObject:()=>E,ZodNumber:()=>_$,ZodNullable:()=>G$,ZodNull:()=>c$,ZodNever:()=>o,ZodNativeEnum:()=>n$,ZodNaN:()=>j0,ZodMap:()=>F0,ZodLiteral:()=>i$,ZodLazy:()=>d$,ZodIssueCode:()=>V,ZodIntersection:()=>p$,ZodFunction:()=>h$,ZodFirstPartyTypeKind:()=>N,ZodError:()=>Z,ZodEnum:()=>M$,ZodEffects:()=>n,ZodDiscriminatedUnion:()=>J8,ZodDefault:()=>a$,ZodDate:()=>j$,ZodCatch:()=>o$,ZodBranded:()=>Y8,ZodBoolean:()=>m$,ZodBigInt:()=>B$,ZodArray:()=>p,ZodAny:()=>S$,Schema:()=>F,ParseStatus:()=>P,OK:()=>x,NEVER:()=>V9,INVALID:()=>U,EMPTY_PATH:()=>G6,DIRTY:()=>F$,BRAND:()=>R6});var j;(function($){$.assertEqual=(J)=>{};function W(J){}$.assertIs=W;function X(J){throw Error()}$.assertNever=X,$.arrayToEnum=(J)=>{let Y={};for(let Q of J)Y[Q]=Q;return Y},$.getValidEnumValues=(J)=>{let Y=$.objectKeys(J).filter((z)=>typeof J[J[z]]!=="number"),Q={};for(let z of Y)Q[z]=J[z];return $.objectValues(Q)},$.objectValues=(J)=>{return $.objectKeys(J).map(function(Y){return J[Y]})},$.objectKeys=typeof Object.keys==="function"?(J)=>Object.keys(J):(J)=>{let Y=[];for(let Q in J)if(Object.prototype.hasOwnProperty.call(J,Q))Y.push(Q);return Y},$.find=(J,Y)=>{for(let Q of J)if(Y(Q))return Q;return},$.isInteger=typeof Number.isInteger==="function"?(J)=>Number.isInteger(J):(J)=>typeof J==="number"&&Number.isFinite(J)&&Math.floor(J)===J;function G(J,Y=" | "){return J.map((Q)=>typeof Q==="string"?`'${Q}'`:Q).join(Y)}$.joinValues=G,$.jsonStringifyReplacer=(J,Y)=>{if(typeof Y==="bigint")return Y.toString();return Y}})(j||(j={}));var v8;(function($){$.mergeShapes=(W,X)=>{return{...W,...X}}})(v8||(v8={}));var _=j.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),a=($)=>{switch(typeof $){case"undefined":return _.undefined;case"string":return _.string;case"number":return Number.isNaN($)?_.nan:_.number;case"boolean":return _.boolean;case"function":return _.function;case"bigint":return _.bigint;case"symbol":return _.symbol;case"object":if(Array.isArray($))return _.array;if($===null)return _.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return _.promise;if(typeof Map<"u"&&$ instanceof Map)return _.map;if(typeof Set<"u"&&$ instanceof Set)return _.set;if(typeof Date<"u"&&$ instanceof Date)return _.date;return _.object;default:return _.unknown}};var V=j.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"]),$6=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class Z extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(X)=>{this.issues=[...this.issues,X]},this.addIssues=(X=[])=>{this.issues=[...this.issues,...X]};let W=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,W);else this.__proto__=W;this.name="ZodError",this.issues=$}format($){let W=$||function(J){return J.message},X={_errors:[]},G=(J)=>{for(let Y of J.issues)if(Y.code==="invalid_union")Y.unionErrors.map(G);else if(Y.code==="invalid_return_type")G(Y.returnTypeError);else if(Y.code==="invalid_arguments")G(Y.argumentsError);else if(Y.path.length===0)X._errors.push(W(Y));else{let Q=X,z=0;while(z<Y.path.length){let H=Y.path[z];if(z!==Y.path.length-1)Q[H]=Q[H]||{_errors:[]};else Q[H]=Q[H]||{_errors:[]},Q[H]._errors.push(W(Y));Q=Q[H],z++}}};return G(this),X}static assert($){if(!($ instanceof Z))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,j.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(W)=>W.message){let W={},X=[];for(let G of this.issues)if(G.path.length>0){let J=G.path[0];W[J]=W[J]||[],W[J].push($(G))}else X.push($(G));return{formErrors:X,fieldErrors:W}}get formErrors(){return this.flatten()}}Z.create=($)=>{return new Z($)};var W6=($,W)=>{let X;switch($.code){case V.invalid_type:if($.received===_.undefined)X="Required";else X=`Expected ${$.expected}, received ${$.received}`;break;case V.invalid_literal:X=`Invalid literal value, expected ${JSON.stringify($.expected,j.jsonStringifyReplacer)}`;break;case V.unrecognized_keys:X=`Unrecognized key(s) in object: ${j.joinValues($.keys,", ")}`;break;case V.invalid_union:X="Invalid input";break;case V.invalid_union_discriminator:X=`Invalid discriminator value. Expected ${j.joinValues($.options)}`;break;case V.invalid_enum_value:X=`Invalid enum value. Expected ${j.joinValues($.options)}, received '${$.received}'`;break;case V.invalid_arguments:X="Invalid function arguments";break;case V.invalid_return_type:X="Invalid function return type";break;case V.invalid_date:X="Invalid date";break;case V.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(X=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")X=`${X} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)X=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)X=`Invalid input: must end with "${$.validation.endsWith}"`;else j.assertNever($.validation);else if($.validation!=="regex")X=`Invalid ${$.validation}`;else X="Invalid";break;case V.too_small:if($.type==="array")X=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")X=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")X=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")X=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")X=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else X="Invalid input";break;case V.too_big:if($.type==="array")X=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")X=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")X=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")X=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")X=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else X="Invalid input";break;case V.custom:X="Invalid input";break;case V.invalid_intersection_types:X="Intersection results could not be merged";break;case V.not_multiple_of:X=`Number must be a multiple of ${$.multipleOf}`;break;case V.not_finite:X="Number must be finite";break;default:X=W.defaultError,j.assertNever($)}return{message:X}},W$=W6;var IW=W$;function X6($){IW=$}function v$(){return IW}var O0=($)=>{let{data:W,path:X,errorMaps:G,issueData:J}=$,Y=[...X,...J.path||[]],Q={...J,path:Y};if(J.message!==void 0)return{...J,path:Y,message:J.message};let z="",H=G.filter((q)=>!!q).slice().reverse();for(let q of H)z=q(Q,{data:W,defaultError:z}).message;return{...J,path:Y,message:z}},G6=[];function B($,W){let X=v$(),G=O0({issueData:W,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,X,X===W$?void 0:W$].filter((J)=>!!J)});$.common.issues.push(G)}class P{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,W){let X=[];for(let G of W){if(G.status==="aborted")return U;if(G.status==="dirty")$.dirty();X.push(G.value)}return{status:$.value,value:X}}static async mergeObjectAsync($,W){let X=[];for(let G of W){let J=await G.key,Y=await G.value;X.push({key:J,value:Y})}return P.mergeObjectSync($,X)}static mergeObjectSync($,W){let X={};for(let G of W){let{key:J,value:Y}=G;if(J.status==="aborted")return U;if(Y.status==="aborted")return U;if(J.status==="dirty")$.dirty();if(Y.status==="dirty")$.dirty();if(J.value!=="__proto__"&&(typeof Y.value<"u"||G.alwaysSet))X[J.value]=Y.value}return{status:$.value,value:X}}}var U=Object.freeze({status:"aborted"}),F$=($)=>({status:"dirty",value:$}),x=($)=>({status:"valid",value:$}),X8=($)=>$.status==="aborted",G8=($)=>$.status==="dirty",V$=($)=>$.status==="valid",g$=($)=>typeof Promise<"u"&&$ instanceof Promise;var M;(function($){$.errToObj=(W)=>typeof W==="string"?{message:W}:W||{},$.toString=(W)=>typeof W==="string"?W:W?.message})(M||(M={}));class i{constructor($,W,X,G){this._cachedPath=[],this.parent=$,this.data=W,this._path=X,this._key=G}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 bW=($,W)=>{if(V$(W))return{success:!0,data:W.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let X=new Z($.common.issues);return this._error=X,this._error}}}};function w($){if(!$)return{};let{errorMap:W,invalid_type_error:X,required_error:G,description:J}=$;if(W&&(X||G))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(W)return{errorMap:W,description:J};return{errorMap:(Q,z)=>{let{message:H}=$;if(Q.code==="invalid_enum_value")return{message:H??z.defaultError};if(typeof z.data>"u")return{message:H??G??z.defaultError};if(Q.code!=="invalid_type")return{message:z.defaultError};return{message:H??X??z.defaultError}},description:J}}class F{get description(){return this._def.description}_getType($){return a($.data)}_getOrReturnCtx($,W){return W||{common:$.parent.common,data:$.data,parsedType:a($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new P,ctx:{common:$.parent.common,data:$.data,parsedType:a($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let W=this._parse($);if(g$(W))throw Error("Synchronous parse encountered promise.");return W}_parseAsync($){let W=this._parse($);return Promise.resolve(W)}parse($,W){let X=this.safeParse($,W);if(X.success)return X.data;throw X.error}safeParse($,W){let X={common:{issues:[],async:W?.async??!1,contextualErrorMap:W?.errorMap},path:W?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:a($)},G=this._parseSync({data:$,path:X.path,parent:X});return bW(X,G)}"~validate"($){let W={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:a($)};if(!this["~standard"].async)try{let X=this._parseSync({data:$,path:[],parent:W});return V$(X)?{value:X.value}:{issues:W.common.issues}}catch(X){if(X?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;W.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:W}).then((X)=>V$(X)?{value:X.value}:{issues:W.common.issues})}async parseAsync($,W){let X=await this.safeParseAsync($,W);if(X.success)return X.data;throw X.error}async safeParseAsync($,W){let X={common:{issues:[],contextualErrorMap:W?.errorMap,async:!0},path:W?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:a($)},G=this._parse({data:$,path:X.path,parent:X}),J=await(g$(G)?G:Promise.resolve(G));return bW(X,J)}refine($,W){let X=(G)=>{if(typeof W==="string"||typeof W>"u")return{message:W};else if(typeof W==="function")return W(G);else return W};return this._refinement((G,J)=>{let Y=$(G),Q=()=>J.addIssue({code:V.custom,...X(G)});if(typeof Promise<"u"&&Y instanceof Promise)return Y.then((z)=>{if(!z)return Q(),!1;else return!0});if(!Y)return Q(),!1;else return!0})}refinement($,W){return this._refinement((X,G)=>{if(!$(X))return G.addIssue(typeof W==="function"?W(X,G):W),!1;else return!0})}_refinement($){return new n({schema:this,typeName:N.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(W)=>this["~validate"](W)}}optional(){return d.create(this,this._def)}nullable(){return G$.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return p.create(this)}promise(){return R$.create(this,this._def)}or($){return u$.create([this,$],this._def)}and($){return p$.create(this,$,this._def)}transform($){return new n({...w(this._def),schema:this,typeName:N.ZodEffects,effect:{type:"transform",transform:$}})}default($){let W=typeof $==="function"?$:()=>$;return new a$({...w(this._def),innerType:this,defaultValue:W,typeName:N.ZodDefault})}brand(){return new Y8({typeName:N.ZodBranded,type:this,...w(this._def)})}catch($){let W=typeof $==="function"?$:()=>$;return new o$({...w(this._def),innerType:this,catchValue:W,typeName:N.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return S0.create(this,$)}readonly(){return r$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var J6=/^c[^\s-]{8,}$/i,Y6=/^[0-9a-z]+$/,Q6=/^[0-9A-HJKMNP-TV-Z]{26}$/i,z6=/^[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,H6=/^[a-z0-9_-]{21}$/i,V6=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,q6=/^[-+]?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)?)??$/,_6=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,B6="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",g8,M6=/^(?:(?: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])$/,U6=/^(?:(?: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])$/,N6=/^(([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]))$/,K6=/^(([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])$/,O6=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,w6=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ZW="((\\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])))",D6=new RegExp(`^${ZW}$`);function vW($){let W="[0-5]\\d";if($.precision)W=`${W}\\.\\d{${$.precision}}`;else if($.precision==null)W=`${W}(\\.\\d+)?`;let X=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${W})${X}`}function L6($){return new RegExp(`^${vW($)}$`)}function gW($){let W=`${ZW}T${vW($)}`,X=[];if(X.push($.local?"Z?":"Z"),$.offset)X.push("([+-]\\d{2}:?\\d{2})");return W=`${W}(${X.join("|")})`,new RegExp(`^${W}$`)}function F6($,W){if((W==="v4"||!W)&&M6.test($))return!0;if((W==="v6"||!W)&&N6.test($))return!0;return!1}function j6($,W){if(!V6.test($))return!1;try{let[X]=$.split(".");if(!X)return!1;let G=X.replace(/-/g,"+").replace(/_/g,"/").padEnd(X.length+(4-X.length%4)%4,"="),J=JSON.parse(atob(G));if(typeof J!=="object"||J===null)return!1;if("typ"in J&&J?.typ!=="JWT")return!1;if(!J.alg)return!1;if(W&&J.alg!==W)return!1;return!0}catch{return!1}}function S6($,W){if((W==="v4"||!W)&&U6.test($))return!0;if((W==="v6"||!W)&&K6.test($))return!0;return!1}class u extends F{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==_.string){let J=this._getOrReturnCtx($);return B(J,{code:V.invalid_type,expected:_.string,received:J.parsedType}),U}let X=new P,G=void 0;for(let J of this._def.checks)if(J.kind==="min"){if($.data.length<J.value)G=this._getOrReturnCtx($,G),B(G,{code:V.too_small,minimum:J.value,type:"string",inclusive:!0,exact:!1,message:J.message}),X.dirty()}else if(J.kind==="max"){if($.data.length>J.value)G=this._getOrReturnCtx($,G),B(G,{code:V.too_big,maximum:J.value,type:"string",inclusive:!0,exact:!1,message:J.message}),X.dirty()}else if(J.kind==="length"){let Y=$.data.length>J.value,Q=$.data.length<J.value;if(Y||Q){if(G=this._getOrReturnCtx($,G),Y)B(G,{code:V.too_big,maximum:J.value,type:"string",inclusive:!0,exact:!0,message:J.message});else if(Q)B(G,{code:V.too_small,minimum:J.value,type:"string",inclusive:!0,exact:!0,message:J.message});X.dirty()}}else if(J.kind==="email"){if(!_6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"email",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="emoji"){if(!g8)g8=new RegExp(B6,"u");if(!g8.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"emoji",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="uuid"){if(!z6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"uuid",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="nanoid"){if(!H6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"nanoid",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="cuid"){if(!J6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"cuid",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="cuid2"){if(!Y6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"cuid2",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="ulid"){if(!Q6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"ulid",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="url")try{new URL($.data)}catch{G=this._getOrReturnCtx($,G),B(G,{validation:"url",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="regex"){if(J.regex.lastIndex=0,!J.regex.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"regex",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="trim")$.data=$.data.trim();else if(J.kind==="includes"){if(!$.data.includes(J.value,J.position))G=this._getOrReturnCtx($,G),B(G,{code:V.invalid_string,validation:{includes:J.value,position:J.position},message:J.message}),X.dirty()}else if(J.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(J.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(J.kind==="startsWith"){if(!$.data.startsWith(J.value))G=this._getOrReturnCtx($,G),B(G,{code:V.invalid_string,validation:{startsWith:J.value},message:J.message}),X.dirty()}else if(J.kind==="endsWith"){if(!$.data.endsWith(J.value))G=this._getOrReturnCtx($,G),B(G,{code:V.invalid_string,validation:{endsWith:J.value},message:J.message}),X.dirty()}else if(J.kind==="datetime"){if(!gW(J).test($.data))G=this._getOrReturnCtx($,G),B(G,{code:V.invalid_string,validation:"datetime",message:J.message}),X.dirty()}else if(J.kind==="date"){if(!D6.test($.data))G=this._getOrReturnCtx($,G),B(G,{code:V.invalid_string,validation:"date",message:J.message}),X.dirty()}else if(J.kind==="time"){if(!L6(J).test($.data))G=this._getOrReturnCtx($,G),B(G,{code:V.invalid_string,validation:"time",message:J.message}),X.dirty()}else if(J.kind==="duration"){if(!q6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"duration",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="ip"){if(!F6($.data,J.version))G=this._getOrReturnCtx($,G),B(G,{validation:"ip",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="jwt"){if(!j6($.data,J.alg))G=this._getOrReturnCtx($,G),B(G,{validation:"jwt",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="cidr"){if(!S6($.data,J.version))G=this._getOrReturnCtx($,G),B(G,{validation:"cidr",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="base64"){if(!O6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"base64",code:V.invalid_string,message:J.message}),X.dirty()}else if(J.kind==="base64url"){if(!w6.test($.data))G=this._getOrReturnCtx($,G),B(G,{validation:"base64url",code:V.invalid_string,message:J.message}),X.dirty()}else j.assertNever(J);return{status:X.value,value:$.data}}_regex($,W,X){return this.refinement((G)=>$.test(G),{validation:W,code:V.invalid_string,...M.errToObj(X)})}_addCheck($){return new u({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...M.errToObj($)})}url($){return this._addCheck({kind:"url",...M.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...M.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...M.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...M.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...M.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...M.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...M.errToObj($)})}base64($){return this._addCheck({kind:"base64",...M.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...M.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...M.errToObj($)})}ip($){return this._addCheck({kind:"ip",...M.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...M.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,...M.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,...M.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...M.errToObj($)})}regex($,W){return this._addCheck({kind:"regex",regex:$,...M.errToObj(W)})}includes($,W){return this._addCheck({kind:"includes",value:$,position:W?.position,...M.errToObj(W?.message)})}startsWith($,W){return this._addCheck({kind:"startsWith",value:$,...M.errToObj(W)})}endsWith($,W){return this._addCheck({kind:"endsWith",value:$,...M.errToObj(W)})}min($,W){return this._addCheck({kind:"min",value:$,...M.errToObj(W)})}max($,W){return this._addCheck({kind:"max",value:$,...M.errToObj(W)})}length($,W){return this._addCheck({kind:"length",value:$,...M.errToObj(W)})}nonempty($){return this.min(1,M.errToObj($))}trim(){return new u({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new u({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new u({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxLength(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}}u.create=($)=>{return new u({checks:[],typeName:N.ZodString,coerce:$?.coerce??!1,...w($)})};function E6($,W){let X=($.toString().split(".")[1]||"").length,G=(W.toString().split(".")[1]||"").length,J=X>G?X:G,Y=Number.parseInt($.toFixed(J).replace(".","")),Q=Number.parseInt(W.toFixed(J).replace(".",""));return Y%Q/10**J}class _$ extends F{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($)!==_.number){let J=this._getOrReturnCtx($);return B(J,{code:V.invalid_type,expected:_.number,received:J.parsedType}),U}let X=void 0,G=new P;for(let J of this._def.checks)if(J.kind==="int"){if(!j.isInteger($.data))X=this._getOrReturnCtx($,X),B(X,{code:V.invalid_type,expected:"integer",received:"float",message:J.message}),G.dirty()}else if(J.kind==="min"){if(J.inclusive?$.data<J.value:$.data<=J.value)X=this._getOrReturnCtx($,X),B(X,{code:V.too_small,minimum:J.value,type:"number",inclusive:J.inclusive,exact:!1,message:J.message}),G.dirty()}else if(J.kind==="max"){if(J.inclusive?$.data>J.value:$.data>=J.value)X=this._getOrReturnCtx($,X),B(X,{code:V.too_big,maximum:J.value,type:"number",inclusive:J.inclusive,exact:!1,message:J.message}),G.dirty()}else if(J.kind==="multipleOf"){if(E6($.data,J.value)!==0)X=this._getOrReturnCtx($,X),B(X,{code:V.not_multiple_of,multipleOf:J.value,message:J.message}),G.dirty()}else if(J.kind==="finite"){if(!Number.isFinite($.data))X=this._getOrReturnCtx($,X),B(X,{code:V.not_finite,message:J.message}),G.dirty()}else j.assertNever(J);return{status:G.value,value:$.data}}gte($,W){return this.setLimit("min",$,!0,M.toString(W))}gt($,W){return this.setLimit("min",$,!1,M.toString(W))}lte($,W){return this.setLimit("max",$,!0,M.toString(W))}lt($,W){return this.setLimit("max",$,!1,M.toString(W))}setLimit($,W,X,G){return new _$({...this._def,checks:[...this._def.checks,{kind:$,value:W,inclusive:X,message:M.toString(G)}]})}_addCheck($){return new _$({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:M.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:M.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:M.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:M.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:M.toString($)})}multipleOf($,W){return this._addCheck({kind:"multipleOf",value:$,message:M.toString(W)})}finite($){return this._addCheck({kind:"finite",message:M.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:M.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:M.toString($)})}get minValue(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxValue(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&j.isInteger($.value))}get isFinite(){let $=null,W=null;for(let X of this._def.checks)if(X.kind==="finite"||X.kind==="int"||X.kind==="multipleOf")return!0;else if(X.kind==="min"){if(W===null||X.value>W)W=X.value}else if(X.kind==="max"){if($===null||X.value<$)$=X.value}return Number.isFinite(W)&&Number.isFinite($)}}_$.create=($)=>{return new _$({checks:[],typeName:N.ZodNumber,coerce:$?.coerce||!1,...w($)})};class B$ extends F{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($)!==_.bigint)return this._getInvalidInput($);let X=void 0,G=new P;for(let J of this._def.checks)if(J.kind==="min"){if(J.inclusive?$.data<J.value:$.data<=J.value)X=this._getOrReturnCtx($,X),B(X,{code:V.too_small,type:"bigint",minimum:J.value,inclusive:J.inclusive,message:J.message}),G.dirty()}else if(J.kind==="max"){if(J.inclusive?$.data>J.value:$.data>=J.value)X=this._getOrReturnCtx($,X),B(X,{code:V.too_big,type:"bigint",maximum:J.value,inclusive:J.inclusive,message:J.message}),G.dirty()}else if(J.kind==="multipleOf"){if($.data%J.value!==BigInt(0))X=this._getOrReturnCtx($,X),B(X,{code:V.not_multiple_of,multipleOf:J.value,message:J.message}),G.dirty()}else j.assertNever(J);return{status:G.value,value:$.data}}_getInvalidInput($){let W=this._getOrReturnCtx($);return B(W,{code:V.invalid_type,expected:_.bigint,received:W.parsedType}),U}gte($,W){return this.setLimit("min",$,!0,M.toString(W))}gt($,W){return this.setLimit("min",$,!1,M.toString(W))}lte($,W){return this.setLimit("max",$,!0,M.toString(W))}lt($,W){return this.setLimit("max",$,!1,M.toString(W))}setLimit($,W,X,G){return new B$({...this._def,checks:[...this._def.checks,{kind:$,value:W,inclusive:X,message:M.toString(G)}]})}_addCheck($){return new B$({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:M.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:M.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:M.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:M.toString($)})}multipleOf($,W){return this._addCheck({kind:"multipleOf",value:$,message:M.toString(W)})}get minValue(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxValue(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}}B$.create=($)=>{return new B$({checks:[],typeName:N.ZodBigInt,coerce:$?.coerce??!1,...w($)})};class m$ extends F{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==_.boolean){let X=this._getOrReturnCtx($);return B(X,{code:V.invalid_type,expected:_.boolean,received:X.parsedType}),U}return x($.data)}}m$.create=($)=>{return new m$({typeName:N.ZodBoolean,coerce:$?.coerce||!1,...w($)})};class j$ extends F{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==_.date){let J=this._getOrReturnCtx($);return B(J,{code:V.invalid_type,expected:_.date,received:J.parsedType}),U}if(Number.isNaN($.data.getTime())){let J=this._getOrReturnCtx($);return B(J,{code:V.invalid_date}),U}let X=new P,G=void 0;for(let J of this._def.checks)if(J.kind==="min"){if($.data.getTime()<J.value)G=this._getOrReturnCtx($,G),B(G,{code:V.too_small,message:J.message,inclusive:!0,exact:!1,minimum:J.value,type:"date"}),X.dirty()}else if(J.kind==="max"){if($.data.getTime()>J.value)G=this._getOrReturnCtx($,G),B(G,{code:V.too_big,message:J.message,inclusive:!0,exact:!1,maximum:J.value,type:"date"}),X.dirty()}else j.assertNever(J);return{status:X.value,value:new Date($.data.getTime())}}_addCheck($){return new j$({...this._def,checks:[...this._def.checks,$]})}min($,W){return this._addCheck({kind:"min",value:$.getTime(),message:M.toString(W)})}max($,W){return this._addCheck({kind:"max",value:$.getTime(),message:M.toString(W)})}get minDate(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $!=null?new Date($):null}}j$.create=($)=>{return new j$({checks:[],coerce:$?.coerce||!1,typeName:N.ZodDate,...w($)})};class w0 extends F{_parse($){if(this._getType($)!==_.symbol){let X=this._getOrReturnCtx($);return B(X,{code:V.invalid_type,expected:_.symbol,received:X.parsedType}),U}return x($.data)}}w0.create=($)=>{return new w0({typeName:N.ZodSymbol,...w($)})};class l$ extends F{_parse($){if(this._getType($)!==_.undefined){let X=this._getOrReturnCtx($);return B(X,{code:V.invalid_type,expected:_.undefined,received:X.parsedType}),U}return x($.data)}}l$.create=($)=>{return new l$({typeName:N.ZodUndefined,...w($)})};class c$ extends F{_parse($){if(this._getType($)!==_.null){let X=this._getOrReturnCtx($);return B(X,{code:V.invalid_type,expected:_.null,received:X.parsedType}),U}return x($.data)}}c$.create=($)=>{return new c$({typeName:N.ZodNull,...w($)})};class S$ extends F{constructor(){super(...arguments);this._any=!0}_parse($){return x($.data)}}S$.create=($)=>{return new S$({typeName:N.ZodAny,...w($)})};class q$ extends F{constructor(){super(...arguments);this._unknown=!0}_parse($){return x($.data)}}q$.create=($)=>{return new q$({typeName:N.ZodUnknown,...w($)})};class o extends F{_parse($){let W=this._getOrReturnCtx($);return B(W,{code:V.invalid_type,expected:_.never,received:W.parsedType}),U}}o.create=($)=>{return new o({typeName:N.ZodNever,...w($)})};class D0 extends F{_parse($){if(this._getType($)!==_.undefined){let X=this._getOrReturnCtx($);return B(X,{code:V.invalid_type,expected:_.void,received:X.parsedType}),U}return x($.data)}}D0.create=($)=>{return new D0({typeName:N.ZodVoid,...w($)})};class p extends F{_parse($){let{ctx:W,status:X}=this._processInputParams($),G=this._def;if(W.parsedType!==_.array)return B(W,{code:V.invalid_type,expected:_.array,received:W.parsedType}),U;if(G.exactLength!==null){let Y=W.data.length>G.exactLength.value,Q=W.data.length<G.exactLength.value;if(Y||Q)B(W,{code:Y?V.too_big:V.too_small,minimum:Q?G.exactLength.value:void 0,maximum:Y?G.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:G.exactLength.message}),X.dirty()}if(G.minLength!==null){if(W.data.length<G.minLength.value)B(W,{code:V.too_small,minimum:G.minLength.value,type:"array",inclusive:!0,exact:!1,message:G.minLength.message}),X.dirty()}if(G.maxLength!==null){if(W.data.length>G.maxLength.value)B(W,{code:V.too_big,maximum:G.maxLength.value,type:"array",inclusive:!0,exact:!1,message:G.maxLength.message}),X.dirty()}if(W.common.async)return Promise.all([...W.data].map((Y,Q)=>{return G.type._parseAsync(new i(W,Y,W.path,Q))})).then((Y)=>{return P.mergeArray(X,Y)});let J=[...W.data].map((Y,Q)=>{return G.type._parseSync(new i(W,Y,W.path,Q))});return P.mergeArray(X,J)}get element(){return this._def.type}min($,W){return new p({...this._def,minLength:{value:$,message:M.toString(W)}})}max($,W){return new p({...this._def,maxLength:{value:$,message:M.toString(W)}})}length($,W){return new p({...this._def,exactLength:{value:$,message:M.toString(W)}})}nonempty($){return this.min(1,$)}}p.create=($,W)=>{return new p({type:$,minLength:null,maxLength:null,exactLength:null,typeName:N.ZodArray,...w(W)})};function y$($){if($ instanceof E){let W={};for(let X in $.shape){let G=$.shape[X];W[X]=d.create(y$(G))}return new E({...$._def,shape:()=>W})}else if($ instanceof p)return new p({...$._def,type:y$($.element)});else if($ instanceof d)return d.create(y$($.unwrap()));else if($ instanceof G$)return G$.create(y$($.unwrap()));else if($ instanceof r)return r.create($.items.map((W)=>y$(W)));else return $}class E extends F{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),W=j.objectKeys($);return this._cached={shape:$,keys:W},this._cached}_parse($){if(this._getType($)!==_.object){let H=this._getOrReturnCtx($);return B(H,{code:V.invalid_type,expected:_.object,received:H.parsedType}),U}let{status:X,ctx:G}=this._processInputParams($),{shape:J,keys:Y}=this._getCached(),Q=[];if(!(this._def.catchall instanceof o&&this._def.unknownKeys==="strip")){for(let H in G.data)if(!Y.includes(H))Q.push(H)}let z=[];for(let H of Y){let q=J[H],O=G.data[H];z.push({key:{status:"valid",value:H},value:q._parse(new i(G,O,G.path,H)),alwaysSet:H in G.data})}if(this._def.catchall instanceof o){let H=this._def.unknownKeys;if(H==="passthrough")for(let q of Q)z.push({key:{status:"valid",value:q},value:{status:"valid",value:G.data[q]}});else if(H==="strict"){if(Q.length>0)B(G,{code:V.unrecognized_keys,keys:Q}),X.dirty()}else if(H==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let H=this._def.catchall;for(let q of Q){let O=G.data[q];z.push({key:{status:"valid",value:q},value:H._parse(new i(G,O,G.path,q)),alwaysSet:q in G.data})}}if(G.common.async)return Promise.resolve().then(async()=>{let H=[];for(let q of z){let O=await q.key,R=await q.value;H.push({key:O,value:R,alwaysSet:q.alwaysSet})}return H}).then((H)=>{return P.mergeObjectSync(X,H)});else return P.mergeObjectSync(X,z)}get shape(){return this._def.shape()}strict($){return M.errToObj,new E({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(W,X)=>{let G=this._def.errorMap?.(W,X).message??X.defaultError;if(W.code==="unrecognized_keys")return{message:M.errToObj($).message??G};return{message:G}}}:{}})}strip(){return new E({...this._def,unknownKeys:"strip"})}passthrough(){return new E({...this._def,unknownKeys:"passthrough"})}extend($){return new E({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new E({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:N.ZodObject})}setKey($,W){return this.augment({[$]:W})}catchall($){return new E({...this._def,catchall:$})}pick($){let W={};for(let X of j.objectKeys($))if($[X]&&this.shape[X])W[X]=this.shape[X];return new E({...this._def,shape:()=>W})}omit($){let W={};for(let X of j.objectKeys(this.shape))if(!$[X])W[X]=this.shape[X];return new E({...this._def,shape:()=>W})}deepPartial(){return y$(this)}partial($){let W={};for(let X of j.objectKeys(this.shape)){let G=this.shape[X];if($&&!$[X])W[X]=G;else W[X]=G.optional()}return new E({...this._def,shape:()=>W})}required($){let W={};for(let X of j.objectKeys(this.shape))if($&&!$[X])W[X]=this.shape[X];else{let J=this.shape[X];while(J instanceof d)J=J._def.innerType;W[X]=J}return new E({...this._def,shape:()=>W})}keyof(){return yW(j.objectKeys(this.shape))}}E.create=($,W)=>{return new E({shape:()=>$,unknownKeys:"strip",catchall:o.create(),typeName:N.ZodObject,...w(W)})};E.strictCreate=($,W)=>{return new E({shape:()=>$,unknownKeys:"strict",catchall:o.create(),typeName:N.ZodObject,...w(W)})};E.lazycreate=($,W)=>{return new E({shape:$,unknownKeys:"strip",catchall:o.create(),typeName:N.ZodObject,...w(W)})};class u$ extends F{_parse($){let{ctx:W}=this._processInputParams($),X=this._def.options;function G(J){for(let Q of J)if(Q.result.status==="valid")return Q.result;for(let Q of J)if(Q.result.status==="dirty")return W.common.issues.push(...Q.ctx.common.issues),Q.result;let Y=J.map((Q)=>new Z(Q.ctx.common.issues));return B(W,{code:V.invalid_union,unionErrors:Y}),U}if(W.common.async)return Promise.all(X.map(async(J)=>{let Y={...W,common:{...W.common,issues:[]},parent:null};return{result:await J._parseAsync({data:W.data,path:W.path,parent:Y}),ctx:Y}})).then(G);else{let J=void 0,Y=[];for(let z of X){let H={...W,common:{...W.common,issues:[]},parent:null},q=z._parseSync({data:W.data,path:W.path,parent:H});if(q.status==="valid")return q;else if(q.status==="dirty"&&!J)J={result:q,ctx:H};if(H.common.issues.length)Y.push(H.common.issues)}if(J)return W.common.issues.push(...J.ctx.common.issues),J.result;let Q=Y.map((z)=>new Z(z));return B(W,{code:V.invalid_union,unionErrors:Q}),U}}get options(){return this._def.options}}u$.create=($,W)=>{return new u$({options:$,typeName:N.ZodUnion,...w(W)})};var X$=($)=>{if($ instanceof d$)return X$($.schema);else if($ instanceof n)return X$($.innerType());else if($ instanceof i$)return[$.value];else if($ instanceof M$)return $.options;else if($ instanceof n$)return j.objectValues($.enum);else if($ instanceof a$)return X$($._def.innerType);else if($ instanceof l$)return[void 0];else if($ instanceof c$)return[null];else if($ instanceof d)return[void 0,...X$($.unwrap())];else if($ instanceof G$)return[null,...X$($.unwrap())];else if($ instanceof Y8)return X$($.unwrap());else if($ instanceof r$)return X$($.unwrap());else if($ instanceof o$)return X$($._def.innerType);else return[]};class J8 extends F{_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==_.object)return B(W,{code:V.invalid_type,expected:_.object,received:W.parsedType}),U;let X=this.discriminator,G=W.data[X],J=this.optionsMap.get(G);if(!J)return B(W,{code:V.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[X]}),U;if(W.common.async)return J._parseAsync({data:W.data,path:W.path,parent:W});else return J._parseSync({data:W.data,path:W.path,parent:W})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,W,X){let G=new Map;for(let J of W){let Y=X$(J.shape[$]);if(!Y.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let Q of Y){if(G.has(Q))throw Error(`Discriminator property ${String($)} has duplicate value ${String(Q)}`);G.set(Q,J)}}return new J8({typeName:N.ZodDiscriminatedUnion,discriminator:$,options:W,optionsMap:G,...w(X)})}}function y8($,W){let X=a($),G=a(W);if($===W)return{valid:!0,data:$};else if(X===_.object&&G===_.object){let J=j.objectKeys(W),Y=j.objectKeys($).filter((z)=>J.indexOf(z)!==-1),Q={...$,...W};for(let z of Y){let H=y8($[z],W[z]);if(!H.valid)return{valid:!1};Q[z]=H.data}return{valid:!0,data:Q}}else if(X===_.array&&G===_.array){if($.length!==W.length)return{valid:!1};let J=[];for(let Y=0;Y<$.length;Y++){let Q=$[Y],z=W[Y],H=y8(Q,z);if(!H.valid)return{valid:!1};J.push(H.data)}return{valid:!0,data:J}}else if(X===_.date&&G===_.date&&+$===+W)return{valid:!0,data:$};else return{valid:!1}}class p$ extends F{_parse($){let{status:W,ctx:X}=this._processInputParams($),G=(J,Y)=>{if(X8(J)||X8(Y))return U;let Q=y8(J.value,Y.value);if(!Q.valid)return B(X,{code:V.invalid_intersection_types}),U;if(G8(J)||G8(Y))W.dirty();return{status:W.value,value:Q.data}};if(X.common.async)return Promise.all([this._def.left._parseAsync({data:X.data,path:X.path,parent:X}),this._def.right._parseAsync({data:X.data,path:X.path,parent:X})]).then(([J,Y])=>G(J,Y));else return G(this._def.left._parseSync({data:X.data,path:X.path,parent:X}),this._def.right._parseSync({data:X.data,path:X.path,parent:X}))}}p$.create=($,W,X)=>{return new p$({left:$,right:W,typeName:N.ZodIntersection,...w(X)})};class r extends F{_parse($){let{status:W,ctx:X}=this._processInputParams($);if(X.parsedType!==_.array)return B(X,{code:V.invalid_type,expected:_.array,received:X.parsedType}),U;if(X.data.length<this._def.items.length)return B(X,{code:V.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),U;if(!this._def.rest&&X.data.length>this._def.items.length)B(X,{code:V.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),W.dirty();let J=[...X.data].map((Y,Q)=>{let z=this._def.items[Q]||this._def.rest;if(!z)return null;return z._parse(new i(X,Y,X.path,Q))}).filter((Y)=>!!Y);if(X.common.async)return Promise.all(J).then((Y)=>{return P.mergeArray(W,Y)});else return P.mergeArray(W,J)}get items(){return this._def.items}rest($){return new r({...this._def,rest:$})}}r.create=($,W)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new r({items:$,typeName:N.ZodTuple,rest:null,...w(W)})};class L0 extends F{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:W,ctx:X}=this._processInputParams($);if(X.parsedType!==_.object)return B(X,{code:V.invalid_type,expected:_.object,received:X.parsedType}),U;let G=[],J=this._def.keyType,Y=this._def.valueType;for(let Q in X.data)G.push({key:J._parse(new i(X,Q,X.path,Q)),value:Y._parse(new i(X,X.data[Q],X.path,Q)),alwaysSet:Q in X.data});if(X.common.async)return P.mergeObjectAsync(W,G);else return P.mergeObjectSync(W,G)}get element(){return this._def.valueType}static create($,W,X){if(W instanceof F)return new L0({keyType:$,valueType:W,typeName:N.ZodRecord,...w(X)});return new L0({keyType:u.create(),valueType:$,typeName:N.ZodRecord,...w(W)})}}class F0 extends F{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:W,ctx:X}=this._processInputParams($);if(X.parsedType!==_.map)return B(X,{code:V.invalid_type,expected:_.map,received:X.parsedType}),U;let G=this._def.keyType,J=this._def.valueType,Y=[...X.data.entries()].map(([Q,z],H)=>{return{key:G._parse(new i(X,Q,X.path,[H,"key"])),value:J._parse(new i(X,z,X.path,[H,"value"]))}});if(X.common.async){let Q=new Map;return Promise.resolve().then(async()=>{for(let z of Y){let H=await z.key,q=await z.value;if(H.status==="aborted"||q.status==="aborted")return U;if(H.status==="dirty"||q.status==="dirty")W.dirty();Q.set(H.value,q.value)}return{status:W.value,value:Q}})}else{let Q=new Map;for(let z of Y){let{key:H,value:q}=z;if(H.status==="aborted"||q.status==="aborted")return U;if(H.status==="dirty"||q.status==="dirty")W.dirty();Q.set(H.value,q.value)}return{status:W.value,value:Q}}}}F0.create=($,W,X)=>{return new F0({valueType:W,keyType:$,typeName:N.ZodMap,...w(X)})};class E$ extends F{_parse($){let{status:W,ctx:X}=this._processInputParams($);if(X.parsedType!==_.set)return B(X,{code:V.invalid_type,expected:_.set,received:X.parsedType}),U;let G=this._def;if(G.minSize!==null){if(X.data.size<G.minSize.value)B(X,{code:V.too_small,minimum:G.minSize.value,type:"set",inclusive:!0,exact:!1,message:G.minSize.message}),W.dirty()}if(G.maxSize!==null){if(X.data.size>G.maxSize.value)B(X,{code:V.too_big,maximum:G.maxSize.value,type:"set",inclusive:!0,exact:!1,message:G.maxSize.message}),W.dirty()}let J=this._def.valueType;function Y(z){let H=new Set;for(let q of z){if(q.status==="aborted")return U;if(q.status==="dirty")W.dirty();H.add(q.value)}return{status:W.value,value:H}}let Q=[...X.data.values()].map((z,H)=>J._parse(new i(X,z,X.path,H)));if(X.common.async)return Promise.all(Q).then((z)=>Y(z));else return Y(Q)}min($,W){return new E$({...this._def,minSize:{value:$,message:M.toString(W)}})}max($,W){return new E$({...this._def,maxSize:{value:$,message:M.toString(W)}})}size($,W){return this.min($,W).max($,W)}nonempty($){return this.min(1,$)}}E$.create=($,W)=>{return new E$({valueType:$,minSize:null,maxSize:null,typeName:N.ZodSet,...w(W)})};class h$ extends F{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==_.function)return B(W,{code:V.invalid_type,expected:_.function,received:W.parsedType}),U;function X(Q,z){return O0({data:Q,path:W.path,errorMaps:[W.common.contextualErrorMap,W.schemaErrorMap,v$(),W$].filter((H)=>!!H),issueData:{code:V.invalid_arguments,argumentsError:z}})}function G(Q,z){return O0({data:Q,path:W.path,errorMaps:[W.common.contextualErrorMap,W.schemaErrorMap,v$(),W$].filter((H)=>!!H),issueData:{code:V.invalid_return_type,returnTypeError:z}})}let J={errorMap:W.common.contextualErrorMap},Y=W.data;if(this._def.returns instanceof R$){let Q=this;return x(async function(...z){let H=new Z([]),q=await Q._def.args.parseAsync(z,J).catch((l)=>{throw H.addIssue(X(z,l)),H}),O=await Reflect.apply(Y,this,q);return await Q._def.returns._def.type.parseAsync(O,J).catch((l)=>{throw H.addIssue(G(O,l)),H})})}else{let Q=this;return x(function(...z){let H=Q._def.args.safeParse(z,J);if(!H.success)throw new Z([X(z,H.error)]);let q=Reflect.apply(Y,this,H.data),O=Q._def.returns.safeParse(q,J);if(!O.success)throw new Z([G(q,O.error)]);return O.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new h$({...this._def,args:r.create($).rest(q$.create())})}returns($){return new h$({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,W,X){return new h$({args:$?$:r.create([]).rest(q$.create()),returns:W||q$.create(),typeName:N.ZodFunction,...w(X)})}}class d$ extends F{get schema(){return this._def.getter()}_parse($){let{ctx:W}=this._processInputParams($);return this._def.getter()._parse({data:W.data,path:W.path,parent:W})}}d$.create=($,W)=>{return new d$({getter:$,typeName:N.ZodLazy,...w(W)})};class i$ extends F{_parse($){if($.data!==this._def.value){let W=this._getOrReturnCtx($);return B(W,{received:W.data,code:V.invalid_literal,expected:this._def.value}),U}return{status:"valid",value:$.data}}get value(){return this._def.value}}i$.create=($,W)=>{return new i$({value:$,typeName:N.ZodLiteral,...w(W)})};function yW($,W){return new M$({values:$,typeName:N.ZodEnum,...w(W)})}class M$ extends F{_parse($){if(typeof $.data!=="string"){let W=this._getOrReturnCtx($),X=this._def.values;return B(W,{expected:j.joinValues(X),received:W.parsedType,code:V.invalid_type}),U}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let W=this._getOrReturnCtx($),X=this._def.values;return B(W,{received:W.data,code:V.invalid_enum_value,options:X}),U}return x($.data)}get options(){return this._def.values}get enum(){let $={};for(let W of this._def.values)$[W]=W;return $}get Values(){let $={};for(let W of this._def.values)$[W]=W;return $}get Enum(){let $={};for(let W of this._def.values)$[W]=W;return $}extract($,W=this._def){return M$.create($,{...this._def,...W})}exclude($,W=this._def){return M$.create(this.options.filter((X)=>!$.includes(X)),{...this._def,...W})}}M$.create=yW;class n$ extends F{_parse($){let W=j.getValidEnumValues(this._def.values),X=this._getOrReturnCtx($);if(X.parsedType!==_.string&&X.parsedType!==_.number){let G=j.objectValues(W);return B(X,{expected:j.joinValues(G),received:X.parsedType,code:V.invalid_type}),U}if(!this._cache)this._cache=new Set(j.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let G=j.objectValues(W);return B(X,{received:X.data,code:V.invalid_enum_value,options:G}),U}return x($.data)}get enum(){return this._def.values}}n$.create=($,W)=>{return new n$({values:$,typeName:N.ZodNativeEnum,...w(W)})};class R$ extends F{unwrap(){return this._def.type}_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==_.promise&&W.common.async===!1)return B(W,{code:V.invalid_type,expected:_.promise,received:W.parsedType}),U;let X=W.parsedType===_.promise?W.data:Promise.resolve(W.data);return x(X.then((G)=>{return this._def.type.parseAsync(G,{path:W.path,errorMap:W.common.contextualErrorMap})}))}}R$.create=($,W)=>{return new R$({type:$,typeName:N.ZodPromise,...w(W)})};class n extends F{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===N.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:W,ctx:X}=this._processInputParams($),G=this._def.effect||null,J={addIssue:(Y)=>{if(B(X,Y),Y.fatal)W.abort();else W.dirty()},get path(){return X.path}};if(J.addIssue=J.addIssue.bind(J),G.type==="preprocess"){let Y=G.transform(X.data,J);if(X.common.async)return Promise.resolve(Y).then(async(Q)=>{if(W.value==="aborted")return U;let z=await this._def.schema._parseAsync({data:Q,path:X.path,parent:X});if(z.status==="aborted")return U;if(z.status==="dirty")return F$(z.value);if(W.value==="dirty")return F$(z.value);return z});else{if(W.value==="aborted")return U;let Q=this._def.schema._parseSync({data:Y,path:X.path,parent:X});if(Q.status==="aborted")return U;if(Q.status==="dirty")return F$(Q.value);if(W.value==="dirty")return F$(Q.value);return Q}}if(G.type==="refinement"){let Y=(Q)=>{let z=G.refinement(Q,J);if(X.common.async)return Promise.resolve(z);if(z instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return Q};if(X.common.async===!1){let Q=this._def.schema._parseSync({data:X.data,path:X.path,parent:X});if(Q.status==="aborted")return U;if(Q.status==="dirty")W.dirty();return Y(Q.value),{status:W.value,value:Q.value}}else return this._def.schema._parseAsync({data:X.data,path:X.path,parent:X}).then((Q)=>{if(Q.status==="aborted")return U;if(Q.status==="dirty")W.dirty();return Y(Q.value).then(()=>{return{status:W.value,value:Q.value}})})}if(G.type==="transform")if(X.common.async===!1){let Y=this._def.schema._parseSync({data:X.data,path:X.path,parent:X});if(!V$(Y))return U;let Q=G.transform(Y.value,J);if(Q instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:W.value,value:Q}}else return this._def.schema._parseAsync({data:X.data,path:X.path,parent:X}).then((Y)=>{if(!V$(Y))return U;return Promise.resolve(G.transform(Y.value,J)).then((Q)=>({status:W.value,value:Q}))});j.assertNever(G)}}n.create=($,W,X)=>{return new n({schema:$,typeName:N.ZodEffects,effect:W,...w(X)})};n.createWithPreprocess=($,W,X)=>{return new n({schema:W,effect:{type:"preprocess",transform:$},typeName:N.ZodEffects,...w(X)})};class d extends F{_parse($){if(this._getType($)===_.undefined)return x(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}d.create=($,W)=>{return new d({innerType:$,typeName:N.ZodOptional,...w(W)})};class G$ extends F{_parse($){if(this._getType($)===_.null)return x(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}G$.create=($,W)=>{return new G$({innerType:$,typeName:N.ZodNullable,...w(W)})};class a$ extends F{_parse($){let{ctx:W}=this._processInputParams($),X=W.data;if(W.parsedType===_.undefined)X=this._def.defaultValue();return this._def.innerType._parse({data:X,path:W.path,parent:W})}removeDefault(){return this._def.innerType}}a$.create=($,W)=>{return new a$({innerType:$,typeName:N.ZodDefault,defaultValue:typeof W.default==="function"?W.default:()=>W.default,...w(W)})};class o$ extends F{_parse($){let{ctx:W}=this._processInputParams($),X={...W,common:{...W.common,issues:[]}},G=this._def.innerType._parse({data:X.data,path:X.path,parent:{...X}});if(g$(G))return G.then((J)=>{return{status:"valid",value:J.status==="valid"?J.value:this._def.catchValue({get error(){return new Z(X.common.issues)},input:X.data})}});else return{status:"valid",value:G.status==="valid"?G.value:this._def.catchValue({get error(){return new Z(X.common.issues)},input:X.data})}}removeCatch(){return this._def.innerType}}o$.create=($,W)=>{return new o$({innerType:$,typeName:N.ZodCatch,catchValue:typeof W.catch==="function"?W.catch:()=>W.catch,...w(W)})};class j0 extends F{_parse($){if(this._getType($)!==_.nan){let X=this._getOrReturnCtx($);return B(X,{code:V.invalid_type,expected:_.nan,received:X.parsedType}),U}return{status:"valid",value:$.data}}}j0.create=($)=>{return new j0({typeName:N.ZodNaN,...w($)})};var R6=Symbol("zod_brand");class Y8 extends F{_parse($){let{ctx:W}=this._processInputParams($),X=W.data;return this._def.type._parse({data:X,path:W.path,parent:W})}unwrap(){return this._def.type}}class S0 extends F{_parse($){let{status:W,ctx:X}=this._processInputParams($);if(X.common.async)return(async()=>{let J=await this._def.in._parseAsync({data:X.data,path:X.path,parent:X});if(J.status==="aborted")return U;if(J.status==="dirty")return W.dirty(),F$(J.value);else return this._def.out._parseAsync({data:J.value,path:X.path,parent:X})})();else{let G=this._def.in._parseSync({data:X.data,path:X.path,parent:X});if(G.status==="aborted")return U;if(G.status==="dirty")return W.dirty(),{status:"dirty",value:G.value};else return this._def.out._parseSync({data:G.value,path:X.path,parent:X})}}static create($,W){return new S0({in:$,out:W,typeName:N.ZodPipeline})}}class r$ extends F{_parse($){let W=this._def.innerType._parse($),X=(G)=>{if(V$(G))G.value=Object.freeze(G.value);return G};return g$(W)?W.then((G)=>X(G)):X(W)}unwrap(){return this._def.innerType}}r$.create=($,W)=>{return new r$({innerType:$,typeName:N.ZodReadonly,...w(W)})};function xW($,W){let X=typeof $==="function"?$(W):typeof $==="string"?{message:$}:$;return typeof X==="string"?{message:X}:X}function hW($,W={},X){if($)return S$.create().superRefine((G,J)=>{let Y=$(G);if(Y instanceof Promise)return Y.then((Q)=>{if(!Q){let z=xW(W,G),H=z.fatal??X??!0;J.addIssue({code:"custom",...z,fatal:H})}});if(!Y){let Q=xW(W,G),z=Q.fatal??X??!0;J.addIssue({code:"custom",...Q,fatal:z})}return});return S$.create()}var A6={object:E.lazycreate},N;(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"})(N||(N={}));var C6=($,W={message:`Input not instance of ${$.name}`})=>hW((X)=>X instanceof $,W),mW=u.create,lW=_$.create,f6=j0.create,T6=B$.create,cW=m$.create,P6=j$.create,k6=w0.create,I6=l$.create,b6=c$.create,x6=S$.create,Z6=q$.create,v6=o.create,g6=D0.create,y6=p.create,h6=E.create,m6=E.strictCreate,l6=u$.create,c6=J8.create,u6=p$.create,p6=r.create,d6=L0.create,i6=F0.create,n6=E$.create,a6=h$.create,o6=d$.create,r6=i$.create,t6=M$.create,s6=n$.create,e6=R$.create,$9=n.create,W9=d.create,X9=G$.create,G9=n.createWithPreprocess,J9=S0.create,Y9=()=>mW().optional(),Q9=()=>lW().optional(),z9=()=>cW().optional(),H9={string:($)=>u.create({...$,coerce:!0}),number:($)=>_$.create({...$,coerce:!0}),boolean:($)=>m$.create({...$,coerce:!0}),bigint:($)=>B$.create({...$,coerce:!0}),date:($)=>j$.create({...$,coerce:!0})};var V9=U;function uW($){return{name:"mem-recall",description:"Fetch full observation details by ID. Use after mem-search to get complete narratives, facts, concepts, and file lists for specific observations.",args:{ids:A.array(A.string()).describe("Observation IDs to fetch"),limit:A.number().min(1).max(50).default(10).describe("Maximum number of results")},execute:async(W)=>{try{let X=W.ids,G=W.limit||10,J=X.slice(0,G),Y=[];for(let Q of J){let z=$.getById(Q);if(z)Y.push(q9(z));else Y.push(`## ID: ${Q}
323
- *Not found*`)}if(Y.length===0)return"No observation IDs provided.";return`Recalled ${Y.length} observation(s):
301
+ LIMIT ?`,[$,W]).map((J)=>this.mapRow(J))}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}}}var lW={showTokenCosts:!0,observationTypes:"all",fullObservationCount:3,showLastSummary:!0},g$={bugfix:"\uD83D\uDD34",feature:"\uD83D\uDFE3",refactor:"\uD83D\uDD04",change:"\u2705",discovery:"\uD83D\uDD35",decision:"\u2696\uFE0F"};function s$($,W=lW){let J=[];if(J.push("## open-mem: Past Session Memory"),J.push(""),J.push("**\uD83D\uDCA1 Progressive Disclosure:** This is a compact index showing WHAT was observed and retrieval COST."),J.push("Use `mem-search` to find observations by query, then `mem-recall` with IDs to fetch full details."),W.showLastSummary&&$.recentSummaries.length>0){J.push(""),J.push("### Recent Sessions"),J.push("| Session | Summary | Decisions |"),J.push("|---------|---------|-----------|");for(let _ of $.recentSummaries){let H=_.keyDecisions.length>0?_.keyDecisions.join("; "):"\u2014";J.push(`| ${_.sessionId} | ${_.summary} | ${H} |`)}}let Q=W.observationTypes==="all"?$.observationIndex:$.observationIndex.filter((_)=>W.observationTypes.includes(_.type));if(Q.length>0){J.push(""),J.push(`### Recent Observations (${Q.length} entries)`);let _=mW(Q,$.fullObservations);for(let[H,G]of _){if(J.push(""),J.push(`**${H}**`),W.showTokenCosts)J.push("| ID | Type | Title | ~Tokens |"),J.push("|----|------|-------|---------|");else J.push("| ID | Type | Title |"),J.push("|----|------|-------|");for(let Y of G){let z=g$[Y.type]||"\uD83D\uDCDD";if(W.showTokenCosts)J.push(`| ${Y.id} | ${z} | ${Y.title} | ~${Y.tokenCount} |`);else J.push(`| ${Y.id} | ${z} | ${Y.title} |`)}}}let X=$.fullObservations.slice(0,W.fullObservationCount);if(X.length>0){J.push(""),J.push("### Full Details (most recent)");for(let _ of X){let H=g$[_.type]||"\uD83D\uDCDD";if(J.push(""),J.push(`#### ${H} ${_.title} (${_.id})`),J.push(_.narrative),_.facts.length>0)J.push(`**Facts:** ${_.facts.map((Y)=>`- ${Y}`).join(" ")}`);if(_.concepts.length>0)J.push(`**Concepts:** ${_.concepts.join(", ")}`);let G=[..._.filesRead,..._.filesModified];if(G.length>0)J.push(`**Files:** ${G.join(", ")}`)}}return J.join(`
302
+ `)}function mW($,W){let J=new Map;for(let X of W){let _=X.filesModified[0]||X.filesRead[0];if(_)J.set(X.id,_)}let Q=new Map;for(let X of $){let _=J.get(X.id)??"General",H=Q.get(_)??[];H.push(X),Q.set(_,H)}return Q}function e$($){let W=[];if(W.push("[open-mem] Memory context:"),$.recentSummaries.length>0){W.push(`
303
+ Recent sessions:`);for(let J of $.recentSummaries)W.push(`- ${J.summary}`)}if($.observationIndex.length>0){W.push(`
304
+ Recent observations (${$.observationIndex.length} entries):`);for(let J of $.observationIndex)W.push(`- ${g$[J.type]||"\uD83D\uDCDD"} ${J.title}`)}return W.join(`
305
+ `)}function N$($,W,J,Q,X=[]){let _=Q,H=[],G=[];for(let Y of W){let z=Y.tokenCount||Z(Y.summary);if(_-z<0)break;H.push(Y),_-=z}for(let Y of J){let z=Y.tokenCount||Z(Y.title);if(_-z<0)break;G.push(Y),_-=z}return{recentSummaries:H,observationIndex:G,fullObservations:[...X],totalTokens:Q-_}}function $W($,W,J,Q,X){return async(_,H)=>{try{if(!$.contextInjectionEnabled)return;let G=J.getRecent(X,3),Y=G.map((K)=>K.summaryId?Q.getBySessionId(K.id):null).filter((K)=>K!==null),z=W.getIndex(X,10);if(Y.length===0&&z.length===0)return;let A=N$(G,Y,z,Math.floor($.maxContextTokens/2));H.context.push(e$(A))}catch(G){console.error("[open-mem] Compaction hook error:",G)}}}function WW($,W,J,Q,X){return async(_,H)=>{try{if(!$.contextInjectionEnabled)return;let G=J.getRecent(X,5);if(G.length===0)return;let Y=G.map((P)=>P.summaryId?Q.getBySessionId(P.id):null).filter((P)=>P!==null),z=W.getIndex(X,$.maxObservations);if(Y.length===0&&z.length===0)return;let K=z.slice(0,$.contextFullObservationCount).map((P)=>P.id).map((P)=>W.getById(P)).filter((P)=>P!==null),n=N$(G,Y,z,$.maxContextTokens,K),C$={showTokenCosts:$.contextShowTokenCosts,observationTypes:$.contextObservationTypes,fullObservationCount:$.contextFullObservationCount,showLastSummary:$.contextShowLastSummary};H.system.push(s$(n,C$))}catch(G){console.error("[open-mem] Context injection error:",G)}}}function JW($,W,J){return async(Q)=>{try{let{event:X}=Q,_=X.properties.sessionID;switch(X.type){case"session.created":{if(_)W.getOrCreate(_,J);break}case"session.idle":{if(await $.processBatch(),_)W.updateStatus(_,"idle");break}case"session.completed":case"session.ended":{if(_)await $.processBatch(),await $.summarizeSession(_),W.markCompleted(_);break}default:break}}catch(X){console.error("[open-mem] Event handler error:",X)}}}function XW($,W,J,Q){return async(X,_)=>{try{let{tool:H,sessionID:G,callID:Y}=X,{output:z}=_;if($.ignoredTools.includes(H))return;if(!z||z.length<$.minOutputLength)return;let A=z;for(let K of $.sensitivePatterns)try{A=A.replace(new RegExp(K,"g"),"[REDACTED]")}catch{}A=A.replace(/<private>[\s\S]*?<\/private>/g,"[PRIVATE]"),J.getOrCreate(G,Q),W.enqueue(G,H,A,Y)}catch(H){console.error("[open-mem] Tool capture error:",H)}}}class x${config;compressor;summarizer;pendingRepo;observationRepo;sessionRepo;summaryRepo;processing=!1;timer=null;constructor($,W,J,Q,X,_,H){this.config=$;this.compressor=W;this.summarizer=J;this.pendingRepo=Q;this.observationRepo=X;this.sessionRepo=_;this.summaryRepo=H}enqueue($,W,J,Q){this.pendingRepo.create({sessionId:$,toolName:W,toolOutput:J,callId:Q})}async processBatch(){if(this.processing)return 0;this.processing=!0;let $=0;try{this.pendingRepo.resetStale(5);let W=this.pendingRepo.getPending(this.config.batchSize);if(W.length===0)return 0;for(let J of W)try{this.pendingRepo.markProcessing(J.id);let X=await this.compressor.compress(J.toolName,J.toolOutput)??this.compressor.createFallbackObservation(J.toolName,J.toolOutput);this.observationRepo.create({sessionId:J.sessionId,type:X.type,title:X.title,subtitle:X.subtitle,facts:X.facts,narrative:X.narrative,concepts:X.concepts,filesRead:X.filesRead,filesModified:X.filesModified,rawToolOutput:J.toolOutput,toolName:J.toolName,tokenCount:Z(`${X.title} ${X.narrative} ${X.facts.join(" ")}`)}),this.sessionRepo.incrementObservationCount(J.sessionId),this.pendingRepo.markCompleted(J.id),$++}catch(Q){this.pendingRepo.markFailed(J.id,String(Q))}return $}finally{this.processing=!1}}async summarizeSession($){let W=this.observationRepo.getBySession($);if(!this.summarizer.shouldSummarize(W.length))return;if(this.summaryRepo.getBySessionId($))return;let Q=await this.summarizer.summarize($,W);if(!Q)return;let X=this.summaryRepo.create({sessionId:$,summary:Q.summary,keyDecisions:Q.keyDecisions,filesModified:Q.filesModified,concepts:Q.concepts,tokenCount:Z(Q.summary)});this.sessionRepo.setSummary($,X.id)}start(){if(this.timer)return;this.timer=setInterval(async()=>{try{await this.processBatch()}catch{}},this.config.batchIntervalMs)}stop(){if(this.timer)clearInterval(this.timer),this.timer=null}get isRunning(){return this.timer!==null}get isProcessing(){return this.processing}getStats(){return{pending:this.pendingRepo.getPending(1000).length,processing:this.processing}}}var D={};KW(D,{void:()=>w0,util:()=>L,unknown:()=>N0,union:()=>f0,undefined:()=>R0,tuple:()=>P0,transformer:()=>u0,symbol:()=>A0,string:()=>zW,strictObject:()=>C0,setErrorMap:()=>pW,set:()=>T0,record:()=>I0,quotelessJson:()=>uW,promise:()=>m0,preprocess:()=>n0,pipeline:()=>d0,ostring:()=>i0,optional:()=>c0,onumber:()=>r0,oboolean:()=>a0,objectUtil:()=>y$,object:()=>v0,number:()=>jW,nullable:()=>p0,null:()=>D0,never:()=>K0,nativeEnum:()=>l0,nan:()=>U0,map:()=>h0,makeIssue:()=>E$,literal:()=>y0,lazy:()=>x0,late:()=>V0,isValid:()=>l,isDirty:()=>w$,isAsync:()=>e,isAborted:()=>K$,intersection:()=>b0,instanceof:()=>E0,getParsedType:()=>I,getErrorMap:()=>s,function:()=>g0,enum:()=>Z0,effect:()=>u0,discriminatedUnion:()=>k0,defaultErrorMap:()=>g,datetimeRegex:()=>MW,date:()=>L0,custom:()=>qW,coerce:()=>o0,boolean:()=>VW,bigint:()=>S0,array:()=>F0,any:()=>O0,addIssueToContext:()=>q,ZodVoid:()=>S$,ZodUnknown:()=>m,ZodUnion:()=>_$,ZodUndefined:()=>X$,ZodType:()=>S,ZodTuple:()=>T,ZodTransformer:()=>b,ZodSymbol:()=>U$,ZodString:()=>v,ZodSet:()=>o,ZodSchema:()=>S,ZodRecord:()=>L$,ZodReadonly:()=>z$,ZodPromise:()=>t,ZodPipeline:()=>D$,ZodParsedType:()=>B,ZodOptional:()=>f,ZodObject:()=>R,ZodNumber:()=>u,ZodNullable:()=>y,ZodNull:()=>Q$,ZodNever:()=>h,ZodNativeEnum:()=>M$,ZodNaN:()=>R$,ZodMap:()=>A$,ZodLiteral:()=>Y$,ZodLazy:()=>G$,ZodIssueCode:()=>M,ZodIntersection:()=>H$,ZodFunction:()=>W$,ZodFirstPartyTypeKind:()=>E,ZodError:()=>F,ZodEnum:()=>p,ZodEffects:()=>b,ZodDiscriminatedUnion:()=>F$,ZodDefault:()=>B$,ZodDate:()=>r,ZodCatch:()=>q$,ZodBranded:()=>v$,ZodBoolean:()=>J$,ZodBigInt:()=>c,ZodArray:()=>C,ZodAny:()=>a,Schema:()=>S,ParseStatus:()=>N,OK:()=>w,NEVER:()=>t0,INVALID:()=>V,EMPTY_PATH:()=>nW,DIRTY:()=>i,BRAND:()=>j0});var L;(function($){$.assertEqual=(X)=>{};function W(X){}$.assertIs=W;function J(X){throw Error()}$.assertNever=J,$.arrayToEnum=(X)=>{let _={};for(let H of X)_[H]=H;return _},$.getValidEnumValues=(X)=>{let _=$.objectKeys(X).filter((G)=>typeof X[X[G]]!=="number"),H={};for(let G of _)H[G]=X[G];return $.objectValues(H)},$.objectValues=(X)=>{return $.objectKeys(X).map(function(_){return X[_]})},$.objectKeys=typeof Object.keys==="function"?(X)=>Object.keys(X):(X)=>{let _=[];for(let H in X)if(Object.prototype.hasOwnProperty.call(X,H))_.push(H);return _},$.find=(X,_)=>{for(let H of X)if(_(H))return H;return},$.isInteger=typeof Number.isInteger==="function"?(X)=>Number.isInteger(X):(X)=>typeof X==="number"&&Number.isFinite(X)&&Math.floor(X)===X;function Q(X,_=" | "){return X.map((H)=>typeof H==="string"?`'${H}'`:H).join(_)}$.joinValues=Q,$.jsonStringifyReplacer=(X,_)=>{if(typeof _==="bigint")return _.toString();return _}})(L||(L={}));var y$;(function($){$.mergeShapes=(W,J)=>{return{...W,...J}}})(y$||(y$={}));var B=L.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),I=($)=>{switch(typeof $){case"undefined":return B.undefined;case"string":return B.string;case"number":return Number.isNaN($)?B.nan:B.number;case"boolean":return B.boolean;case"function":return B.function;case"bigint":return B.bigint;case"symbol":return B.symbol;case"object":if(Array.isArray($))return B.array;if($===null)return B.null;if($.then&&typeof $.then==="function"&&$.catch&&typeof $.catch==="function")return B.promise;if(typeof Map<"u"&&$ instanceof Map)return B.map;if(typeof Set<"u"&&$ instanceof Set)return B.set;if(typeof Date<"u"&&$ instanceof Date)return B.date;return B.object;default:return B.unknown}};var M=L.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]),uW=($)=>{return JSON.stringify($,null,2).replace(/"([^"]+)":/g,"$1:")};class F extends Error{get errors(){return this.issues}constructor($){super();this.issues=[],this.addIssue=(J)=>{this.issues=[...this.issues,J]},this.addIssues=(J=[])=>{this.issues=[...this.issues,...J]};let W=new.target.prototype;if(Object.setPrototypeOf)Object.setPrototypeOf(this,W);else this.__proto__=W;this.name="ZodError",this.issues=$}format($){let W=$||function(X){return X.message},J={_errors:[]},Q=(X)=>{for(let _ of X.issues)if(_.code==="invalid_union")_.unionErrors.map(Q);else if(_.code==="invalid_return_type")Q(_.returnTypeError);else if(_.code==="invalid_arguments")Q(_.argumentsError);else if(_.path.length===0)J._errors.push(W(_));else{let H=J,G=0;while(G<_.path.length){let Y=_.path[G];if(G!==_.path.length-1)H[Y]=H[Y]||{_errors:[]};else H[Y]=H[Y]||{_errors:[]},H[Y]._errors.push(W(_));H=H[Y],G++}}};return Q(this),J}static assert($){if(!($ instanceof F))throw Error(`Not a ZodError: ${$}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,L.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten($=(W)=>W.message){let W={},J=[];for(let Q of this.issues)if(Q.path.length>0){let X=Q.path[0];W[X]=W[X]||[],W[X].push($(Q))}else J.push($(Q));return{formErrors:J,fieldErrors:W}}get formErrors(){return this.flatten()}}F.create=($)=>{return new F($)};var cW=($,W)=>{let J;switch($.code){case M.invalid_type:if($.received===B.undefined)J="Required";else J=`Expected ${$.expected}, received ${$.received}`;break;case M.invalid_literal:J=`Invalid literal value, expected ${JSON.stringify($.expected,L.jsonStringifyReplacer)}`;break;case M.unrecognized_keys:J=`Unrecognized key(s) in object: ${L.joinValues($.keys,", ")}`;break;case M.invalid_union:J="Invalid input";break;case M.invalid_union_discriminator:J=`Invalid discriminator value. Expected ${L.joinValues($.options)}`;break;case M.invalid_enum_value:J=`Invalid enum value. Expected ${L.joinValues($.options)}, received '${$.received}'`;break;case M.invalid_arguments:J="Invalid function arguments";break;case M.invalid_return_type:J="Invalid function return type";break;case M.invalid_date:J="Invalid date";break;case M.invalid_string:if(typeof $.validation==="object")if("includes"in $.validation){if(J=`Invalid input: must include "${$.validation.includes}"`,typeof $.validation.position==="number")J=`${J} at one or more positions greater than or equal to ${$.validation.position}`}else if("startsWith"in $.validation)J=`Invalid input: must start with "${$.validation.startsWith}"`;else if("endsWith"in $.validation)J=`Invalid input: must end with "${$.validation.endsWith}"`;else L.assertNever($.validation);else if($.validation!=="regex")J=`Invalid ${$.validation}`;else J="Invalid";break;case M.too_small:if($.type==="array")J=`Array must contain ${$.exact?"exactly":$.inclusive?"at least":"more than"} ${$.minimum} element(s)`;else if($.type==="string")J=`String must contain ${$.exact?"exactly":$.inclusive?"at least":"over"} ${$.minimum} character(s)`;else if($.type==="number")J=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="bigint")J=`Number must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${$.minimum}`;else if($.type==="date")J=`Date must be ${$.exact?"exactly equal to ":$.inclusive?"greater than or equal to ":"greater than "}${new Date(Number($.minimum))}`;else J="Invalid input";break;case M.too_big:if($.type==="array")J=`Array must contain ${$.exact?"exactly":$.inclusive?"at most":"less than"} ${$.maximum} element(s)`;else if($.type==="string")J=`String must contain ${$.exact?"exactly":$.inclusive?"at most":"under"} ${$.maximum} character(s)`;else if($.type==="number")J=`Number must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="bigint")J=`BigInt must be ${$.exact?"exactly":$.inclusive?"less than or equal to":"less than"} ${$.maximum}`;else if($.type==="date")J=`Date must be ${$.exact?"exactly":$.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number($.maximum))}`;else J="Invalid input";break;case M.custom:J="Invalid input";break;case M.invalid_intersection_types:J="Intersection results could not be merged";break;case M.not_multiple_of:J=`Number must be a multiple of ${$.multipleOf}`;break;case M.not_finite:J="Number must be finite";break;default:J=W.defaultError,L.assertNever($)}return{message:J}},g=cW;var QW=g;function pW($){QW=$}function s(){return QW}var E$=($)=>{let{data:W,path:J,errorMaps:Q,issueData:X}=$,_=[...J,...X.path||[]],H={...X,path:_};if(X.message!==void 0)return{...X,path:_,message:X.message};let G="",Y=Q.filter((z)=>!!z).slice().reverse();for(let z of Y)G=z(H,{data:W,defaultError:G}).message;return{...X,path:_,message:G}},nW=[];function q($,W){let J=s(),Q=E$({issueData:W,data:$.data,path:$.path,errorMaps:[$.common.contextualErrorMap,$.schemaErrorMap,J,J===g?void 0:g].filter((X)=>!!X)});$.common.issues.push(Q)}class N{constructor(){this.value="valid"}dirty(){if(this.value==="valid")this.value="dirty"}abort(){if(this.value!=="aborted")this.value="aborted"}static mergeArray($,W){let J=[];for(let Q of W){if(Q.status==="aborted")return V;if(Q.status==="dirty")$.dirty();J.push(Q.value)}return{status:$.value,value:J}}static async mergeObjectAsync($,W){let J=[];for(let Q of W){let X=await Q.key,_=await Q.value;J.push({key:X,value:_})}return N.mergeObjectSync($,J)}static mergeObjectSync($,W){let J={};for(let Q of W){let{key:X,value:_}=Q;if(X.status==="aborted")return V;if(_.status==="aborted")return V;if(X.status==="dirty")$.dirty();if(_.status==="dirty")$.dirty();if(X.value!=="__proto__"&&(typeof _.value<"u"||Q.alwaysSet))J[X.value]=_.value}return{status:$.value,value:J}}}var V=Object.freeze({status:"aborted"}),i=($)=>({status:"dirty",value:$}),w=($)=>({status:"valid",value:$}),K$=($)=>$.status==="aborted",w$=($)=>$.status==="dirty",l=($)=>$.status==="valid",e=($)=>typeof Promise<"u"&&$ instanceof Promise;var j;(function($){$.errToObj=(W)=>typeof W==="string"?{message:W}:W||{},$.toString=(W)=>typeof W==="string"?W:W?.message})(j||(j={}));class k{constructor($,W,J,Q){this._cachedPath=[],this.parent=$,this.data=W,this._path=J,this._key=Q}get path(){if(!this._cachedPath.length)if(Array.isArray(this._key))this._cachedPath.push(...this._path,...this._key);else this._cachedPath.push(...this._path,this._key);return this._cachedPath}}var _W=($,W)=>{if(l(W))return{success:!0,data:W.value};else{if(!$.common.issues.length)throw Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;let J=new F($.common.issues);return this._error=J,this._error}}}};function U($){if(!$)return{};let{errorMap:W,invalid_type_error:J,required_error:Q,description:X}=$;if(W&&(J||Q))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);if(W)return{errorMap:W,description:X};return{errorMap:(H,G)=>{let{message:Y}=$;if(H.code==="invalid_enum_value")return{message:Y??G.defaultError};if(typeof G.data>"u")return{message:Y??Q??G.defaultError};if(H.code!=="invalid_type")return{message:G.defaultError};return{message:Y??J??G.defaultError}},description:X}}class S{get description(){return this._def.description}_getType($){return I($.data)}_getOrReturnCtx($,W){return W||{common:$.parent.common,data:$.data,parsedType:I($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}_processInputParams($){return{status:new N,ctx:{common:$.parent.common,data:$.data,parsedType:I($.data),schemaErrorMap:this._def.errorMap,path:$.path,parent:$.parent}}}_parseSync($){let W=this._parse($);if(e(W))throw Error("Synchronous parse encountered promise.");return W}_parseAsync($){let W=this._parse($);return Promise.resolve(W)}parse($,W){let J=this.safeParse($,W);if(J.success)return J.data;throw J.error}safeParse($,W){let J={common:{issues:[],async:W?.async??!1,contextualErrorMap:W?.errorMap},path:W?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I($)},Q=this._parseSync({data:$,path:J.path,parent:J});return _W(J,Q)}"~validate"($){let W={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I($)};if(!this["~standard"].async)try{let J=this._parseSync({data:$,path:[],parent:W});return l(J)?{value:J.value}:{issues:W.common.issues}}catch(J){if(J?.message?.toLowerCase()?.includes("encountered"))this["~standard"].async=!0;W.common={issues:[],async:!0}}return this._parseAsync({data:$,path:[],parent:W}).then((J)=>l(J)?{value:J.value}:{issues:W.common.issues})}async parseAsync($,W){let J=await this.safeParseAsync($,W);if(J.success)return J.data;throw J.error}async safeParseAsync($,W){let J={common:{issues:[],contextualErrorMap:W?.errorMap,async:!0},path:W?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:$,parsedType:I($)},Q=this._parse({data:$,path:J.path,parent:J}),X=await(e(Q)?Q:Promise.resolve(Q));return _W(J,X)}refine($,W){let J=(Q)=>{if(typeof W==="string"||typeof W>"u")return{message:W};else if(typeof W==="function")return W(Q);else return W};return this._refinement((Q,X)=>{let _=$(Q),H=()=>X.addIssue({code:M.custom,...J(Q)});if(typeof Promise<"u"&&_ instanceof Promise)return _.then((G)=>{if(!G)return H(),!1;else return!0});if(!_)return H(),!1;else return!0})}refinement($,W){return this._refinement((J,Q)=>{if(!$(J))return Q.addIssue(typeof W==="function"?W(J,Q):W),!1;else return!0})}_refinement($){return new b({schema:this,typeName:E.ZodEffects,effect:{type:"refinement",refinement:$}})}superRefine($){return this._refinement($)}constructor($){this.spa=this.safeParseAsync,this._def=$,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:(W)=>this["~validate"](W)}}optional(){return f.create(this,this._def)}nullable(){return y.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return C.create(this)}promise(){return t.create(this,this._def)}or($){return _$.create([this,$],this._def)}and($){return H$.create(this,$,this._def)}transform($){return new b({...U(this._def),schema:this,typeName:E.ZodEffects,effect:{type:"transform",transform:$}})}default($){let W=typeof $==="function"?$:()=>$;return new B$({...U(this._def),innerType:this,defaultValue:W,typeName:E.ZodDefault})}brand(){return new v$({typeName:E.ZodBranded,type:this,...U(this._def)})}catch($){let W=typeof $==="function"?$:()=>$;return new q$({...U(this._def),innerType:this,catchValue:W,typeName:E.ZodCatch})}describe($){return new this.constructor({...this._def,description:$})}pipe($){return D$.create(this,$)}readonly(){return z$.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}var dW=/^c[^\s-]{8,}$/i,iW=/^[0-9a-z]+$/,rW=/^[0-9A-HJKMNP-TV-Z]{26}$/i,aW=/^[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,oW=/^[a-z0-9_-]{21}$/i,tW=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,sW=/^[-+]?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)?)??$/,eW=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,$0="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$",Z$,W0=/^(?:(?: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])$/,J0=/^(?:(?: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])$/,X0=/^(([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]))$/,Q0=/^(([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])$/,_0=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,H0=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,GW="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",G0=new RegExp(`^${GW}$`);function YW($){let W="[0-5]\\d";if($.precision)W=`${W}\\.\\d{${$.precision}}`;else if($.precision==null)W=`${W}(\\.\\d+)?`;let J=$.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${W})${J}`}function Y0($){return new RegExp(`^${YW($)}$`)}function MW($){let W=`${GW}T${YW($)}`,J=[];if(J.push($.local?"Z?":"Z"),$.offset)J.push("([+-]\\d{2}:?\\d{2})");return W=`${W}(${J.join("|")})`,new RegExp(`^${W}$`)}function M0($,W){if((W==="v4"||!W)&&W0.test($))return!0;if((W==="v6"||!W)&&X0.test($))return!0;return!1}function B0($,W){if(!tW.test($))return!1;try{let[J]=$.split(".");if(!J)return!1;let Q=J.replace(/-/g,"+").replace(/_/g,"/").padEnd(J.length+(4-J.length%4)%4,"="),X=JSON.parse(atob(Q));if(typeof X!=="object"||X===null)return!1;if("typ"in X&&X?.typ!=="JWT")return!1;if(!X.alg)return!1;if(W&&X.alg!==W)return!1;return!0}catch{return!1}}function q0($,W){if((W==="v4"||!W)&&J0.test($))return!0;if((W==="v6"||!W)&&Q0.test($))return!0;return!1}class v extends S{_parse($){if(this._def.coerce)$.data=String($.data);if(this._getType($)!==B.string){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_type,expected:B.string,received:X.parsedType}),V}let J=new N,Q=void 0;for(let X of this._def.checks)if(X.kind==="min"){if($.data.length<X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_small,minimum:X.value,type:"string",inclusive:!0,exact:!1,message:X.message}),J.dirty()}else if(X.kind==="max"){if($.data.length>X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_big,maximum:X.value,type:"string",inclusive:!0,exact:!1,message:X.message}),J.dirty()}else if(X.kind==="length"){let _=$.data.length>X.value,H=$.data.length<X.value;if(_||H){if(Q=this._getOrReturnCtx($,Q),_)q(Q,{code:M.too_big,maximum:X.value,type:"string",inclusive:!0,exact:!0,message:X.message});else if(H)q(Q,{code:M.too_small,minimum:X.value,type:"string",inclusive:!0,exact:!0,message:X.message});J.dirty()}}else if(X.kind==="email"){if(!eW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"email",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="emoji"){if(!Z$)Z$=new RegExp($0,"u");if(!Z$.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"emoji",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="uuid"){if(!aW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"uuid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="nanoid"){if(!oW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"nanoid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="cuid"){if(!dW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"cuid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="cuid2"){if(!iW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"cuid2",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="ulid"){if(!rW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"ulid",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="url")try{new URL($.data)}catch{Q=this._getOrReturnCtx($,Q),q(Q,{validation:"url",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="regex"){if(X.regex.lastIndex=0,!X.regex.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"regex",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="trim")$.data=$.data.trim();else if(X.kind==="includes"){if(!$.data.includes(X.value,X.position))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:{includes:X.value,position:X.position},message:X.message}),J.dirty()}else if(X.kind==="toLowerCase")$.data=$.data.toLowerCase();else if(X.kind==="toUpperCase")$.data=$.data.toUpperCase();else if(X.kind==="startsWith"){if(!$.data.startsWith(X.value))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:{startsWith:X.value},message:X.message}),J.dirty()}else if(X.kind==="endsWith"){if(!$.data.endsWith(X.value))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:{endsWith:X.value},message:X.message}),J.dirty()}else if(X.kind==="datetime"){if(!MW(X).test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:"datetime",message:X.message}),J.dirty()}else if(X.kind==="date"){if(!G0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:"date",message:X.message}),J.dirty()}else if(X.kind==="time"){if(!Y0(X).test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{code:M.invalid_string,validation:"time",message:X.message}),J.dirty()}else if(X.kind==="duration"){if(!sW.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"duration",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="ip"){if(!M0($.data,X.version))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"ip",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="jwt"){if(!B0($.data,X.alg))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"jwt",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="cidr"){if(!q0($.data,X.version))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"cidr",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="base64"){if(!_0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"base64",code:M.invalid_string,message:X.message}),J.dirty()}else if(X.kind==="base64url"){if(!H0.test($.data))Q=this._getOrReturnCtx($,Q),q(Q,{validation:"base64url",code:M.invalid_string,message:X.message}),J.dirty()}else L.assertNever(X);return{status:J.value,value:$.data}}_regex($,W,J){return this.refinement((Q)=>$.test(Q),{validation:W,code:M.invalid_string,...j.errToObj(J)})}_addCheck($){return new v({...this._def,checks:[...this._def.checks,$]})}email($){return this._addCheck({kind:"email",...j.errToObj($)})}url($){return this._addCheck({kind:"url",...j.errToObj($)})}emoji($){return this._addCheck({kind:"emoji",...j.errToObj($)})}uuid($){return this._addCheck({kind:"uuid",...j.errToObj($)})}nanoid($){return this._addCheck({kind:"nanoid",...j.errToObj($)})}cuid($){return this._addCheck({kind:"cuid",...j.errToObj($)})}cuid2($){return this._addCheck({kind:"cuid2",...j.errToObj($)})}ulid($){return this._addCheck({kind:"ulid",...j.errToObj($)})}base64($){return this._addCheck({kind:"base64",...j.errToObj($)})}base64url($){return this._addCheck({kind:"base64url",...j.errToObj($)})}jwt($){return this._addCheck({kind:"jwt",...j.errToObj($)})}ip($){return this._addCheck({kind:"ip",...j.errToObj($)})}cidr($){return this._addCheck({kind:"cidr",...j.errToObj($)})}datetime($){if(typeof $==="string")return this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:$});return this._addCheck({kind:"datetime",precision:typeof $?.precision>"u"?null:$?.precision,offset:$?.offset??!1,local:$?.local??!1,...j.errToObj($?.message)})}date($){return this._addCheck({kind:"date",message:$})}time($){if(typeof $==="string")return this._addCheck({kind:"time",precision:null,message:$});return this._addCheck({kind:"time",precision:typeof $?.precision>"u"?null:$?.precision,...j.errToObj($?.message)})}duration($){return this._addCheck({kind:"duration",...j.errToObj($)})}regex($,W){return this._addCheck({kind:"regex",regex:$,...j.errToObj(W)})}includes($,W){return this._addCheck({kind:"includes",value:$,position:W?.position,...j.errToObj(W?.message)})}startsWith($,W){return this._addCheck({kind:"startsWith",value:$,...j.errToObj(W)})}endsWith($,W){return this._addCheck({kind:"endsWith",value:$,...j.errToObj(W)})}min($,W){return this._addCheck({kind:"min",value:$,...j.errToObj(W)})}max($,W){return this._addCheck({kind:"max",value:$,...j.errToObj(W)})}length($,W){return this._addCheck({kind:"length",value:$,...j.errToObj(W)})}nonempty($){return this.min(1,j.errToObj($))}trim(){return new v({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new v({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new v({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(($)=>$.kind==="datetime")}get isDate(){return!!this._def.checks.find(($)=>$.kind==="date")}get isTime(){return!!this._def.checks.find(($)=>$.kind==="time")}get isDuration(){return!!this._def.checks.find(($)=>$.kind==="duration")}get isEmail(){return!!this._def.checks.find(($)=>$.kind==="email")}get isURL(){return!!this._def.checks.find(($)=>$.kind==="url")}get isEmoji(){return!!this._def.checks.find(($)=>$.kind==="emoji")}get isUUID(){return!!this._def.checks.find(($)=>$.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(($)=>$.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(($)=>$.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(($)=>$.kind==="cuid2")}get isULID(){return!!this._def.checks.find(($)=>$.kind==="ulid")}get isIP(){return!!this._def.checks.find(($)=>$.kind==="ip")}get isCIDR(){return!!this._def.checks.find(($)=>$.kind==="cidr")}get isBase64(){return!!this._def.checks.find(($)=>$.kind==="base64")}get isBase64url(){return!!this._def.checks.find(($)=>$.kind==="base64url")}get minLength(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxLength(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}}v.create=($)=>{return new v({checks:[],typeName:E.ZodString,coerce:$?.coerce??!1,...U($)})};function z0($,W){let J=($.toString().split(".")[1]||"").length,Q=(W.toString().split(".")[1]||"").length,X=J>Q?J:Q,_=Number.parseInt($.toFixed(X).replace(".","")),H=Number.parseInt(W.toFixed(X).replace(".",""));return _%H/10**X}class u extends S{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse($){if(this._def.coerce)$.data=Number($.data);if(this._getType($)!==B.number){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_type,expected:B.number,received:X.parsedType}),V}let J=void 0,Q=new N;for(let X of this._def.checks)if(X.kind==="int"){if(!L.isInteger($.data))J=this._getOrReturnCtx($,J),q(J,{code:M.invalid_type,expected:"integer",received:"float",message:X.message}),Q.dirty()}else if(X.kind==="min"){if(X.inclusive?$.data<X.value:$.data<=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_small,minimum:X.value,type:"number",inclusive:X.inclusive,exact:!1,message:X.message}),Q.dirty()}else if(X.kind==="max"){if(X.inclusive?$.data>X.value:$.data>=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_big,maximum:X.value,type:"number",inclusive:X.inclusive,exact:!1,message:X.message}),Q.dirty()}else if(X.kind==="multipleOf"){if(z0($.data,X.value)!==0)J=this._getOrReturnCtx($,J),q(J,{code:M.not_multiple_of,multipleOf:X.value,message:X.message}),Q.dirty()}else if(X.kind==="finite"){if(!Number.isFinite($.data))J=this._getOrReturnCtx($,J),q(J,{code:M.not_finite,message:X.message}),Q.dirty()}else L.assertNever(X);return{status:Q.value,value:$.data}}gte($,W){return this.setLimit("min",$,!0,j.toString(W))}gt($,W){return this.setLimit("min",$,!1,j.toString(W))}lte($,W){return this.setLimit("max",$,!0,j.toString(W))}lt($,W){return this.setLimit("max",$,!1,j.toString(W))}setLimit($,W,J,Q){return new u({...this._def,checks:[...this._def.checks,{kind:$,value:W,inclusive:J,message:j.toString(Q)}]})}_addCheck($){return new u({...this._def,checks:[...this._def.checks,$]})}int($){return this._addCheck({kind:"int",message:j.toString($)})}positive($){return this._addCheck({kind:"min",value:0,inclusive:!1,message:j.toString($)})}negative($){return this._addCheck({kind:"max",value:0,inclusive:!1,message:j.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:0,inclusive:!0,message:j.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:0,inclusive:!0,message:j.toString($)})}multipleOf($,W){return this._addCheck({kind:"multipleOf",value:$,message:j.toString(W)})}finite($){return this._addCheck({kind:"finite",message:j.toString($)})}safe($){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:j.toString($)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:j.toString($)})}get minValue(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxValue(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}get isInt(){return!!this._def.checks.find(($)=>$.kind==="int"||$.kind==="multipleOf"&&L.isInteger($.value))}get isFinite(){let $=null,W=null;for(let J of this._def.checks)if(J.kind==="finite"||J.kind==="int"||J.kind==="multipleOf")return!0;else if(J.kind==="min"){if(W===null||J.value>W)W=J.value}else if(J.kind==="max"){if($===null||J.value<$)$=J.value}return Number.isFinite(W)&&Number.isFinite($)}}u.create=($)=>{return new u({checks:[],typeName:E.ZodNumber,coerce:$?.coerce||!1,...U($)})};class c extends S{constructor(){super(...arguments);this.min=this.gte,this.max=this.lte}_parse($){if(this._def.coerce)try{$.data=BigInt($.data)}catch{return this._getInvalidInput($)}if(this._getType($)!==B.bigint)return this._getInvalidInput($);let J=void 0,Q=new N;for(let X of this._def.checks)if(X.kind==="min"){if(X.inclusive?$.data<X.value:$.data<=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_small,type:"bigint",minimum:X.value,inclusive:X.inclusive,message:X.message}),Q.dirty()}else if(X.kind==="max"){if(X.inclusive?$.data>X.value:$.data>=X.value)J=this._getOrReturnCtx($,J),q(J,{code:M.too_big,type:"bigint",maximum:X.value,inclusive:X.inclusive,message:X.message}),Q.dirty()}else if(X.kind==="multipleOf"){if($.data%X.value!==BigInt(0))J=this._getOrReturnCtx($,J),q(J,{code:M.not_multiple_of,multipleOf:X.value,message:X.message}),Q.dirty()}else L.assertNever(X);return{status:Q.value,value:$.data}}_getInvalidInput($){let W=this._getOrReturnCtx($);return q(W,{code:M.invalid_type,expected:B.bigint,received:W.parsedType}),V}gte($,W){return this.setLimit("min",$,!0,j.toString(W))}gt($,W){return this.setLimit("min",$,!1,j.toString(W))}lte($,W){return this.setLimit("max",$,!0,j.toString(W))}lt($,W){return this.setLimit("max",$,!1,j.toString(W))}setLimit($,W,J,Q){return new c({...this._def,checks:[...this._def.checks,{kind:$,value:W,inclusive:J,message:j.toString(Q)}]})}_addCheck($){return new c({...this._def,checks:[...this._def.checks,$]})}positive($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:j.toString($)})}negative($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:j.toString($)})}nonpositive($){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:j.toString($)})}nonnegative($){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:j.toString($)})}multipleOf($,W){return this._addCheck({kind:"multipleOf",value:$,message:j.toString(W)})}get minValue(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $}get maxValue(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $}}c.create=($)=>{return new c({checks:[],typeName:E.ZodBigInt,coerce:$?.coerce??!1,...U($)})};class J$ extends S{_parse($){if(this._def.coerce)$.data=Boolean($.data);if(this._getType($)!==B.boolean){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.boolean,received:J.parsedType}),V}return w($.data)}}J$.create=($)=>{return new J$({typeName:E.ZodBoolean,coerce:$?.coerce||!1,...U($)})};class r extends S{_parse($){if(this._def.coerce)$.data=new Date($.data);if(this._getType($)!==B.date){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_type,expected:B.date,received:X.parsedType}),V}if(Number.isNaN($.data.getTime())){let X=this._getOrReturnCtx($);return q(X,{code:M.invalid_date}),V}let J=new N,Q=void 0;for(let X of this._def.checks)if(X.kind==="min"){if($.data.getTime()<X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_small,message:X.message,inclusive:!0,exact:!1,minimum:X.value,type:"date"}),J.dirty()}else if(X.kind==="max"){if($.data.getTime()>X.value)Q=this._getOrReturnCtx($,Q),q(Q,{code:M.too_big,message:X.message,inclusive:!0,exact:!1,maximum:X.value,type:"date"}),J.dirty()}else L.assertNever(X);return{status:J.value,value:new Date($.data.getTime())}}_addCheck($){return new r({...this._def,checks:[...this._def.checks,$]})}min($,W){return this._addCheck({kind:"min",value:$.getTime(),message:j.toString(W)})}max($,W){return this._addCheck({kind:"max",value:$.getTime(),message:j.toString(W)})}get minDate(){let $=null;for(let W of this._def.checks)if(W.kind==="min"){if($===null||W.value>$)$=W.value}return $!=null?new Date($):null}get maxDate(){let $=null;for(let W of this._def.checks)if(W.kind==="max"){if($===null||W.value<$)$=W.value}return $!=null?new Date($):null}}r.create=($)=>{return new r({checks:[],coerce:$?.coerce||!1,typeName:E.ZodDate,...U($)})};class U$ extends S{_parse($){if(this._getType($)!==B.symbol){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.symbol,received:J.parsedType}),V}return w($.data)}}U$.create=($)=>{return new U$({typeName:E.ZodSymbol,...U($)})};class X$ extends S{_parse($){if(this._getType($)!==B.undefined){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.undefined,received:J.parsedType}),V}return w($.data)}}X$.create=($)=>{return new X$({typeName:E.ZodUndefined,...U($)})};class Q$ extends S{_parse($){if(this._getType($)!==B.null){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.null,received:J.parsedType}),V}return w($.data)}}Q$.create=($)=>{return new Q$({typeName:E.ZodNull,...U($)})};class a extends S{constructor(){super(...arguments);this._any=!0}_parse($){return w($.data)}}a.create=($)=>{return new a({typeName:E.ZodAny,...U($)})};class m extends S{constructor(){super(...arguments);this._unknown=!0}_parse($){return w($.data)}}m.create=($)=>{return new m({typeName:E.ZodUnknown,...U($)})};class h extends S{_parse($){let W=this._getOrReturnCtx($);return q(W,{code:M.invalid_type,expected:B.never,received:W.parsedType}),V}}h.create=($)=>{return new h({typeName:E.ZodNever,...U($)})};class S$ extends S{_parse($){if(this._getType($)!==B.undefined){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.void,received:J.parsedType}),V}return w($.data)}}S$.create=($)=>{return new S$({typeName:E.ZodVoid,...U($)})};class C extends S{_parse($){let{ctx:W,status:J}=this._processInputParams($),Q=this._def;if(W.parsedType!==B.array)return q(W,{code:M.invalid_type,expected:B.array,received:W.parsedType}),V;if(Q.exactLength!==null){let _=W.data.length>Q.exactLength.value,H=W.data.length<Q.exactLength.value;if(_||H)q(W,{code:_?M.too_big:M.too_small,minimum:H?Q.exactLength.value:void 0,maximum:_?Q.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:Q.exactLength.message}),J.dirty()}if(Q.minLength!==null){if(W.data.length<Q.minLength.value)q(W,{code:M.too_small,minimum:Q.minLength.value,type:"array",inclusive:!0,exact:!1,message:Q.minLength.message}),J.dirty()}if(Q.maxLength!==null){if(W.data.length>Q.maxLength.value)q(W,{code:M.too_big,maximum:Q.maxLength.value,type:"array",inclusive:!0,exact:!1,message:Q.maxLength.message}),J.dirty()}if(W.common.async)return Promise.all([...W.data].map((_,H)=>{return Q.type._parseAsync(new k(W,_,W.path,H))})).then((_)=>{return N.mergeArray(J,_)});let X=[...W.data].map((_,H)=>{return Q.type._parseSync(new k(W,_,W.path,H))});return N.mergeArray(J,X)}get element(){return this._def.type}min($,W){return new C({...this._def,minLength:{value:$,message:j.toString(W)}})}max($,W){return new C({...this._def,maxLength:{value:$,message:j.toString(W)}})}length($,W){return new C({...this._def,exactLength:{value:$,message:j.toString(W)}})}nonempty($){return this.min(1,$)}}C.create=($,W)=>{return new C({type:$,minLength:null,maxLength:null,exactLength:null,typeName:E.ZodArray,...U(W)})};function $$($){if($ instanceof R){let W={};for(let J in $.shape){let Q=$.shape[J];W[J]=f.create($$(Q))}return new R({...$._def,shape:()=>W})}else if($ instanceof C)return new C({...$._def,type:$$($.element)});else if($ instanceof f)return f.create($$($.unwrap()));else if($ instanceof y)return y.create($$($.unwrap()));else if($ instanceof T)return T.create($.items.map((W)=>$$(W)));else return $}class R extends S{constructor(){super(...arguments);this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let $=this._def.shape(),W=L.objectKeys($);return this._cached={shape:$,keys:W},this._cached}_parse($){if(this._getType($)!==B.object){let Y=this._getOrReturnCtx($);return q(Y,{code:M.invalid_type,expected:B.object,received:Y.parsedType}),V}let{status:J,ctx:Q}=this._processInputParams($),{shape:X,keys:_}=this._getCached(),H=[];if(!(this._def.catchall instanceof h&&this._def.unknownKeys==="strip")){for(let Y in Q.data)if(!_.includes(Y))H.push(Y)}let G=[];for(let Y of _){let z=X[Y],A=Q.data[Y];G.push({key:{status:"valid",value:Y},value:z._parse(new k(Q,A,Q.path,Y)),alwaysSet:Y in Q.data})}if(this._def.catchall instanceof h){let Y=this._def.unknownKeys;if(Y==="passthrough")for(let z of H)G.push({key:{status:"valid",value:z},value:{status:"valid",value:Q.data[z]}});else if(Y==="strict"){if(H.length>0)q(Q,{code:M.unrecognized_keys,keys:H}),J.dirty()}else if(Y==="strip");else throw Error("Internal ZodObject error: invalid unknownKeys value.")}else{let Y=this._def.catchall;for(let z of H){let A=Q.data[z];G.push({key:{status:"valid",value:z},value:Y._parse(new k(Q,A,Q.path,z)),alwaysSet:z in Q.data})}}if(Q.common.async)return Promise.resolve().then(async()=>{let Y=[];for(let z of G){let A=await z.key,K=await z.value;Y.push({key:A,value:K,alwaysSet:z.alwaysSet})}return Y}).then((Y)=>{return N.mergeObjectSync(J,Y)});else return N.mergeObjectSync(J,G)}get shape(){return this._def.shape()}strict($){return j.errToObj,new R({...this._def,unknownKeys:"strict",...$!==void 0?{errorMap:(W,J)=>{let Q=this._def.errorMap?.(W,J).message??J.defaultError;if(W.code==="unrecognized_keys")return{message:j.errToObj($).message??Q};return{message:Q}}}:{}})}strip(){return new R({...this._def,unknownKeys:"strip"})}passthrough(){return new R({...this._def,unknownKeys:"passthrough"})}extend($){return new R({...this._def,shape:()=>({...this._def.shape(),...$})})}merge($){return new R({unknownKeys:$._def.unknownKeys,catchall:$._def.catchall,shape:()=>({...this._def.shape(),...$._def.shape()}),typeName:E.ZodObject})}setKey($,W){return this.augment({[$]:W})}catchall($){return new R({...this._def,catchall:$})}pick($){let W={};for(let J of L.objectKeys($))if($[J]&&this.shape[J])W[J]=this.shape[J];return new R({...this._def,shape:()=>W})}omit($){let W={};for(let J of L.objectKeys(this.shape))if(!$[J])W[J]=this.shape[J];return new R({...this._def,shape:()=>W})}deepPartial(){return $$(this)}partial($){let W={};for(let J of L.objectKeys(this.shape)){let Q=this.shape[J];if($&&!$[J])W[J]=Q;else W[J]=Q.optional()}return new R({...this._def,shape:()=>W})}required($){let W={};for(let J of L.objectKeys(this.shape))if($&&!$[J])W[J]=this.shape[J];else{let X=this.shape[J];while(X instanceof f)X=X._def.innerType;W[J]=X}return new R({...this._def,shape:()=>W})}keyof(){return BW(L.objectKeys(this.shape))}}R.create=($,W)=>{return new R({shape:()=>$,unknownKeys:"strip",catchall:h.create(),typeName:E.ZodObject,...U(W)})};R.strictCreate=($,W)=>{return new R({shape:()=>$,unknownKeys:"strict",catchall:h.create(),typeName:E.ZodObject,...U(W)})};R.lazycreate=($,W)=>{return new R({shape:$,unknownKeys:"strip",catchall:h.create(),typeName:E.ZodObject,...U(W)})};class _$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J=this._def.options;function Q(X){for(let H of X)if(H.result.status==="valid")return H.result;for(let H of X)if(H.result.status==="dirty")return W.common.issues.push(...H.ctx.common.issues),H.result;let _=X.map((H)=>new F(H.ctx.common.issues));return q(W,{code:M.invalid_union,unionErrors:_}),V}if(W.common.async)return Promise.all(J.map(async(X)=>{let _={...W,common:{...W.common,issues:[]},parent:null};return{result:await X._parseAsync({data:W.data,path:W.path,parent:_}),ctx:_}})).then(Q);else{let X=void 0,_=[];for(let G of J){let Y={...W,common:{...W.common,issues:[]},parent:null},z=G._parseSync({data:W.data,path:W.path,parent:Y});if(z.status==="valid")return z;else if(z.status==="dirty"&&!X)X={result:z,ctx:Y};if(Y.common.issues.length)_.push(Y.common.issues)}if(X)return W.common.issues.push(...X.ctx.common.issues),X.result;let H=_.map((G)=>new F(G));return q(W,{code:M.invalid_union,unionErrors:H}),V}}get options(){return this._def.options}}_$.create=($,W)=>{return new _$({options:$,typeName:E.ZodUnion,...U(W)})};var x=($)=>{if($ instanceof G$)return x($.schema);else if($ instanceof b)return x($.innerType());else if($ instanceof Y$)return[$.value];else if($ instanceof p)return $.options;else if($ instanceof M$)return L.objectValues($.enum);else if($ instanceof B$)return x($._def.innerType);else if($ instanceof X$)return[void 0];else if($ instanceof Q$)return[null];else if($ instanceof f)return[void 0,...x($.unwrap())];else if($ instanceof y)return[null,...x($.unwrap())];else if($ instanceof v$)return x($.unwrap());else if($ instanceof z$)return x($.unwrap());else if($ instanceof q$)return x($._def.innerType);else return[]};class F$ extends S{_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==B.object)return q(W,{code:M.invalid_type,expected:B.object,received:W.parsedType}),V;let J=this.discriminator,Q=W.data[J],X=this.optionsMap.get(Q);if(!X)return q(W,{code:M.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[J]}),V;if(W.common.async)return X._parseAsync({data:W.data,path:W.path,parent:W});else return X._parseSync({data:W.data,path:W.path,parent:W})}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create($,W,J){let Q=new Map;for(let X of W){let _=x(X.shape[$]);if(!_.length)throw Error(`A discriminator value for key \`${$}\` could not be extracted from all schema options`);for(let H of _){if(Q.has(H))throw Error(`Discriminator property ${String($)} has duplicate value ${String(H)}`);Q.set(H,X)}}return new F$({typeName:E.ZodDiscriminatedUnion,discriminator:$,options:W,optionsMap:Q,...U(J)})}}function l$($,W){let J=I($),Q=I(W);if($===W)return{valid:!0,data:$};else if(J===B.object&&Q===B.object){let X=L.objectKeys(W),_=L.objectKeys($).filter((G)=>X.indexOf(G)!==-1),H={...$,...W};for(let G of _){let Y=l$($[G],W[G]);if(!Y.valid)return{valid:!1};H[G]=Y.data}return{valid:!0,data:H}}else if(J===B.array&&Q===B.array){if($.length!==W.length)return{valid:!1};let X=[];for(let _=0;_<$.length;_++){let H=$[_],G=W[_],Y=l$(H,G);if(!Y.valid)return{valid:!1};X.push(Y.data)}return{valid:!0,data:X}}else if(J===B.date&&Q===B.date&&+$===+W)return{valid:!0,data:$};else return{valid:!1}}class H$ extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($),Q=(X,_)=>{if(K$(X)||K$(_))return V;let H=l$(X.value,_.value);if(!H.valid)return q(J,{code:M.invalid_intersection_types}),V;if(w$(X)||w$(_))W.dirty();return{status:W.value,value:H.data}};if(J.common.async)return Promise.all([this._def.left._parseAsync({data:J.data,path:J.path,parent:J}),this._def.right._parseAsync({data:J.data,path:J.path,parent:J})]).then(([X,_])=>Q(X,_));else return Q(this._def.left._parseSync({data:J.data,path:J.path,parent:J}),this._def.right._parseSync({data:J.data,path:J.path,parent:J}))}}H$.create=($,W,J)=>{return new H$({left:$,right:W,typeName:E.ZodIntersection,...U(J)})};class T extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.array)return q(J,{code:M.invalid_type,expected:B.array,received:J.parsedType}),V;if(J.data.length<this._def.items.length)return q(J,{code:M.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),V;if(!this._def.rest&&J.data.length>this._def.items.length)q(J,{code:M.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),W.dirty();let X=[...J.data].map((_,H)=>{let G=this._def.items[H]||this._def.rest;if(!G)return null;return G._parse(new k(J,_,J.path,H))}).filter((_)=>!!_);if(J.common.async)return Promise.all(X).then((_)=>{return N.mergeArray(W,_)});else return N.mergeArray(W,X)}get items(){return this._def.items}rest($){return new T({...this._def,rest:$})}}T.create=($,W)=>{if(!Array.isArray($))throw Error("You must pass an array of schemas to z.tuple([ ... ])");return new T({items:$,typeName:E.ZodTuple,rest:null,...U(W)})};class L$ extends S{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.object)return q(J,{code:M.invalid_type,expected:B.object,received:J.parsedType}),V;let Q=[],X=this._def.keyType,_=this._def.valueType;for(let H in J.data)Q.push({key:X._parse(new k(J,H,J.path,H)),value:_._parse(new k(J,J.data[H],J.path,H)),alwaysSet:H in J.data});if(J.common.async)return N.mergeObjectAsync(W,Q);else return N.mergeObjectSync(W,Q)}get element(){return this._def.valueType}static create($,W,J){if(W instanceof S)return new L$({keyType:$,valueType:W,typeName:E.ZodRecord,...U(J)});return new L$({keyType:v.create(),valueType:$,typeName:E.ZodRecord,...U(W)})}}class A$ extends S{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.map)return q(J,{code:M.invalid_type,expected:B.map,received:J.parsedType}),V;let Q=this._def.keyType,X=this._def.valueType,_=[...J.data.entries()].map(([H,G],Y)=>{return{key:Q._parse(new k(J,H,J.path,[Y,"key"])),value:X._parse(new k(J,G,J.path,[Y,"value"]))}});if(J.common.async){let H=new Map;return Promise.resolve().then(async()=>{for(let G of _){let Y=await G.key,z=await G.value;if(Y.status==="aborted"||z.status==="aborted")return V;if(Y.status==="dirty"||z.status==="dirty")W.dirty();H.set(Y.value,z.value)}return{status:W.value,value:H}})}else{let H=new Map;for(let G of _){let{key:Y,value:z}=G;if(Y.status==="aborted"||z.status==="aborted")return V;if(Y.status==="dirty"||z.status==="dirty")W.dirty();H.set(Y.value,z.value)}return{status:W.value,value:H}}}}A$.create=($,W,J)=>{return new A$({valueType:W,keyType:$,typeName:E.ZodMap,...U(J)})};class o extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.parsedType!==B.set)return q(J,{code:M.invalid_type,expected:B.set,received:J.parsedType}),V;let Q=this._def;if(Q.minSize!==null){if(J.data.size<Q.minSize.value)q(J,{code:M.too_small,minimum:Q.minSize.value,type:"set",inclusive:!0,exact:!1,message:Q.minSize.message}),W.dirty()}if(Q.maxSize!==null){if(J.data.size>Q.maxSize.value)q(J,{code:M.too_big,maximum:Q.maxSize.value,type:"set",inclusive:!0,exact:!1,message:Q.maxSize.message}),W.dirty()}let X=this._def.valueType;function _(G){let Y=new Set;for(let z of G){if(z.status==="aborted")return V;if(z.status==="dirty")W.dirty();Y.add(z.value)}return{status:W.value,value:Y}}let H=[...J.data.values()].map((G,Y)=>X._parse(new k(J,G,J.path,Y)));if(J.common.async)return Promise.all(H).then((G)=>_(G));else return _(H)}min($,W){return new o({...this._def,minSize:{value:$,message:j.toString(W)}})}max($,W){return new o({...this._def,maxSize:{value:$,message:j.toString(W)}})}size($,W){return this.min($,W).max($,W)}nonempty($){return this.min(1,$)}}o.create=($,W)=>{return new o({valueType:$,minSize:null,maxSize:null,typeName:E.ZodSet,...U(W)})};class W$ extends S{constructor(){super(...arguments);this.validate=this.implement}_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==B.function)return q(W,{code:M.invalid_type,expected:B.function,received:W.parsedType}),V;function J(H,G){return E$({data:H,path:W.path,errorMaps:[W.common.contextualErrorMap,W.schemaErrorMap,s(),g].filter((Y)=>!!Y),issueData:{code:M.invalid_arguments,argumentsError:G}})}function Q(H,G){return E$({data:H,path:W.path,errorMaps:[W.common.contextualErrorMap,W.schemaErrorMap,s(),g].filter((Y)=>!!Y),issueData:{code:M.invalid_return_type,returnTypeError:G}})}let X={errorMap:W.common.contextualErrorMap},_=W.data;if(this._def.returns instanceof t){let H=this;return w(async function(...G){let Y=new F([]),z=await H._def.args.parseAsync(G,X).catch((n)=>{throw Y.addIssue(J(G,n)),Y}),A=await Reflect.apply(_,this,z);return await H._def.returns._def.type.parseAsync(A,X).catch((n)=>{throw Y.addIssue(Q(A,n)),Y})})}else{let H=this;return w(function(...G){let Y=H._def.args.safeParse(G,X);if(!Y.success)throw new F([J(G,Y.error)]);let z=Reflect.apply(_,this,Y.data),A=H._def.returns.safeParse(z,X);if(!A.success)throw new F([Q(z,A.error)]);return A.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...$){return new W$({...this._def,args:T.create($).rest(m.create())})}returns($){return new W$({...this._def,returns:$})}implement($){return this.parse($)}strictImplement($){return this.parse($)}static create($,W,J){return new W$({args:$?$:T.create([]).rest(m.create()),returns:W||m.create(),typeName:E.ZodFunction,...U(J)})}}class G$ extends S{get schema(){return this._def.getter()}_parse($){let{ctx:W}=this._processInputParams($);return this._def.getter()._parse({data:W.data,path:W.path,parent:W})}}G$.create=($,W)=>{return new G$({getter:$,typeName:E.ZodLazy,...U(W)})};class Y$ extends S{_parse($){if($.data!==this._def.value){let W=this._getOrReturnCtx($);return q(W,{received:W.data,code:M.invalid_literal,expected:this._def.value}),V}return{status:"valid",value:$.data}}get value(){return this._def.value}}Y$.create=($,W)=>{return new Y$({value:$,typeName:E.ZodLiteral,...U(W)})};function BW($,W){return new p({values:$,typeName:E.ZodEnum,...U(W)})}class p extends S{_parse($){if(typeof $.data!=="string"){let W=this._getOrReturnCtx($),J=this._def.values;return q(W,{expected:L.joinValues(J),received:W.parsedType,code:M.invalid_type}),V}if(!this._cache)this._cache=new Set(this._def.values);if(!this._cache.has($.data)){let W=this._getOrReturnCtx($),J=this._def.values;return q(W,{received:W.data,code:M.invalid_enum_value,options:J}),V}return w($.data)}get options(){return this._def.values}get enum(){let $={};for(let W of this._def.values)$[W]=W;return $}get Values(){let $={};for(let W of this._def.values)$[W]=W;return $}get Enum(){let $={};for(let W of this._def.values)$[W]=W;return $}extract($,W=this._def){return p.create($,{...this._def,...W})}exclude($,W=this._def){return p.create(this.options.filter((J)=>!$.includes(J)),{...this._def,...W})}}p.create=BW;class M$ extends S{_parse($){let W=L.getValidEnumValues(this._def.values),J=this._getOrReturnCtx($);if(J.parsedType!==B.string&&J.parsedType!==B.number){let Q=L.objectValues(W);return q(J,{expected:L.joinValues(Q),received:J.parsedType,code:M.invalid_type}),V}if(!this._cache)this._cache=new Set(L.getValidEnumValues(this._def.values));if(!this._cache.has($.data)){let Q=L.objectValues(W);return q(J,{received:J.data,code:M.invalid_enum_value,options:Q}),V}return w($.data)}get enum(){return this._def.values}}M$.create=($,W)=>{return new M$({values:$,typeName:E.ZodNativeEnum,...U(W)})};class t extends S{unwrap(){return this._def.type}_parse($){let{ctx:W}=this._processInputParams($);if(W.parsedType!==B.promise&&W.common.async===!1)return q(W,{code:M.invalid_type,expected:B.promise,received:W.parsedType}),V;let J=W.parsedType===B.promise?W.data:Promise.resolve(W.data);return w(J.then((Q)=>{return this._def.type.parseAsync(Q,{path:W.path,errorMap:W.common.contextualErrorMap})}))}}t.create=($,W)=>{return new t({type:$,typeName:E.ZodPromise,...U(W)})};class b extends S{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===E.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse($){let{status:W,ctx:J}=this._processInputParams($),Q=this._def.effect||null,X={addIssue:(_)=>{if(q(J,_),_.fatal)W.abort();else W.dirty()},get path(){return J.path}};if(X.addIssue=X.addIssue.bind(X),Q.type==="preprocess"){let _=Q.transform(J.data,X);if(J.common.async)return Promise.resolve(_).then(async(H)=>{if(W.value==="aborted")return V;let G=await this._def.schema._parseAsync({data:H,path:J.path,parent:J});if(G.status==="aborted")return V;if(G.status==="dirty")return i(G.value);if(W.value==="dirty")return i(G.value);return G});else{if(W.value==="aborted")return V;let H=this._def.schema._parseSync({data:_,path:J.path,parent:J});if(H.status==="aborted")return V;if(H.status==="dirty")return i(H.value);if(W.value==="dirty")return i(H.value);return H}}if(Q.type==="refinement"){let _=(H)=>{let G=Q.refinement(H,X);if(J.common.async)return Promise.resolve(G);if(G instanceof Promise)throw Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return H};if(J.common.async===!1){let H=this._def.schema._parseSync({data:J.data,path:J.path,parent:J});if(H.status==="aborted")return V;if(H.status==="dirty")W.dirty();return _(H.value),{status:W.value,value:H.value}}else return this._def.schema._parseAsync({data:J.data,path:J.path,parent:J}).then((H)=>{if(H.status==="aborted")return V;if(H.status==="dirty")W.dirty();return _(H.value).then(()=>{return{status:W.value,value:H.value}})})}if(Q.type==="transform")if(J.common.async===!1){let _=this._def.schema._parseSync({data:J.data,path:J.path,parent:J});if(!l(_))return V;let H=Q.transform(_.value,X);if(H instanceof Promise)throw Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:W.value,value:H}}else return this._def.schema._parseAsync({data:J.data,path:J.path,parent:J}).then((_)=>{if(!l(_))return V;return Promise.resolve(Q.transform(_.value,X)).then((H)=>({status:W.value,value:H}))});L.assertNever(Q)}}b.create=($,W,J)=>{return new b({schema:$,typeName:E.ZodEffects,effect:W,...U(J)})};b.createWithPreprocess=($,W,J)=>{return new b({schema:W,effect:{type:"preprocess",transform:$},typeName:E.ZodEffects,...U(J)})};class f extends S{_parse($){if(this._getType($)===B.undefined)return w(void 0);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}f.create=($,W)=>{return new f({innerType:$,typeName:E.ZodOptional,...U(W)})};class y extends S{_parse($){if(this._getType($)===B.null)return w(null);return this._def.innerType._parse($)}unwrap(){return this._def.innerType}}y.create=($,W)=>{return new y({innerType:$,typeName:E.ZodNullable,...U(W)})};class B$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J=W.data;if(W.parsedType===B.undefined)J=this._def.defaultValue();return this._def.innerType._parse({data:J,path:W.path,parent:W})}removeDefault(){return this._def.innerType}}B$.create=($,W)=>{return new B$({innerType:$,typeName:E.ZodDefault,defaultValue:typeof W.default==="function"?W.default:()=>W.default,...U(W)})};class q$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J={...W,common:{...W.common,issues:[]}},Q=this._def.innerType._parse({data:J.data,path:J.path,parent:{...J}});if(e(Q))return Q.then((X)=>{return{status:"valid",value:X.status==="valid"?X.value:this._def.catchValue({get error(){return new F(J.common.issues)},input:J.data})}});else return{status:"valid",value:Q.status==="valid"?Q.value:this._def.catchValue({get error(){return new F(J.common.issues)},input:J.data})}}removeCatch(){return this._def.innerType}}q$.create=($,W)=>{return new q$({innerType:$,typeName:E.ZodCatch,catchValue:typeof W.catch==="function"?W.catch:()=>W.catch,...U(W)})};class R$ extends S{_parse($){if(this._getType($)!==B.nan){let J=this._getOrReturnCtx($);return q(J,{code:M.invalid_type,expected:B.nan,received:J.parsedType}),V}return{status:"valid",value:$.data}}}R$.create=($)=>{return new R$({typeName:E.ZodNaN,...U($)})};var j0=Symbol("zod_brand");class v$ extends S{_parse($){let{ctx:W}=this._processInputParams($),J=W.data;return this._def.type._parse({data:J,path:W.path,parent:W})}unwrap(){return this._def.type}}class D$ extends S{_parse($){let{status:W,ctx:J}=this._processInputParams($);if(J.common.async)return(async()=>{let X=await this._def.in._parseAsync({data:J.data,path:J.path,parent:J});if(X.status==="aborted")return V;if(X.status==="dirty")return W.dirty(),i(X.value);else return this._def.out._parseAsync({data:X.value,path:J.path,parent:J})})();else{let Q=this._def.in._parseSync({data:J.data,path:J.path,parent:J});if(Q.status==="aborted")return V;if(Q.status==="dirty")return W.dirty(),{status:"dirty",value:Q.value};else return this._def.out._parseSync({data:Q.value,path:J.path,parent:J})}}static create($,W){return new D$({in:$,out:W,typeName:E.ZodPipeline})}}class z$ extends S{_parse($){let W=this._def.innerType._parse($),J=(Q)=>{if(l(Q))Q.value=Object.freeze(Q.value);return Q};return e(W)?W.then((Q)=>J(Q)):J(W)}unwrap(){return this._def.innerType}}z$.create=($,W)=>{return new z$({innerType:$,typeName:E.ZodReadonly,...U(W)})};function HW($,W){let J=typeof $==="function"?$(W):typeof $==="string"?{message:$}:$;return typeof J==="string"?{message:J}:J}function qW($,W={},J){if($)return a.create().superRefine((Q,X)=>{let _=$(Q);if(_ instanceof Promise)return _.then((H)=>{if(!H){let G=HW(W,Q),Y=G.fatal??J??!0;X.addIssue({code:"custom",...G,fatal:Y})}});if(!_){let H=HW(W,Q),G=H.fatal??J??!0;X.addIssue({code:"custom",...H,fatal:G})}return});return a.create()}var V0={object:R.lazycreate},E;(function($){$.ZodString="ZodString",$.ZodNumber="ZodNumber",$.ZodNaN="ZodNaN",$.ZodBigInt="ZodBigInt",$.ZodBoolean="ZodBoolean",$.ZodDate="ZodDate",$.ZodSymbol="ZodSymbol",$.ZodUndefined="ZodUndefined",$.ZodNull="ZodNull",$.ZodAny="ZodAny",$.ZodUnknown="ZodUnknown",$.ZodNever="ZodNever",$.ZodVoid="ZodVoid",$.ZodArray="ZodArray",$.ZodObject="ZodObject",$.ZodUnion="ZodUnion",$.ZodDiscriminatedUnion="ZodDiscriminatedUnion",$.ZodIntersection="ZodIntersection",$.ZodTuple="ZodTuple",$.ZodRecord="ZodRecord",$.ZodMap="ZodMap",$.ZodSet="ZodSet",$.ZodFunction="ZodFunction",$.ZodLazy="ZodLazy",$.ZodLiteral="ZodLiteral",$.ZodEnum="ZodEnum",$.ZodEffects="ZodEffects",$.ZodNativeEnum="ZodNativeEnum",$.ZodOptional="ZodOptional",$.ZodNullable="ZodNullable",$.ZodDefault="ZodDefault",$.ZodCatch="ZodCatch",$.ZodPromise="ZodPromise",$.ZodBranded="ZodBranded",$.ZodPipeline="ZodPipeline",$.ZodReadonly="ZodReadonly"})(E||(E={}));var E0=($,W={message:`Input not instance of ${$.name}`})=>qW((J)=>J instanceof $,W),zW=v.create,jW=u.create,U0=R$.create,S0=c.create,VW=J$.create,L0=r.create,A0=U$.create,R0=X$.create,D0=Q$.create,O0=a.create,N0=m.create,K0=h.create,w0=S$.create,F0=C.create,v0=R.create,C0=R.strictCreate,f0=_$.create,k0=F$.create,b0=H$.create,P0=T.create,I0=L$.create,h0=A$.create,T0=o.create,g0=W$.create,x0=G$.create,y0=Y$.create,Z0=p.create,l0=M$.create,m0=t.create,u0=b.create,c0=f.create,p0=y.create,n0=b.createWithPreprocess,d0=D$.create,i0=()=>zW().optional(),r0=()=>jW().optional(),a0=()=>VW().optional(),o0={string:($)=>v.create({...$,coerce:!0}),number:($)=>u.create({...$,coerce:!0}),boolean:($)=>J$.create({...$,coerce:!0}),bigint:($)=>c.create({...$,coerce:!0}),date:($)=>r.create({...$,coerce:!0})};var t0=V;function EW($){return{name:"mem-recall",description:"Fetch full observation details by ID. Use after mem-search to get complete narratives, facts, concepts, and file lists for specific observations.",args:{ids:D.array(D.string()).describe("Observation IDs to fetch"),limit:D.number().min(1).max(50).default(10).describe("Maximum number of results")},execute:async(W)=>{try{let J=W.ids,Q=W.limit||10,X=J.slice(0,Q),_=[];for(let H of X){let G=$.getById(H);if(G)_.push(s0(G));else _.push(`## ID: ${H}
306
+ *Not found*`)}if(_.length===0)return"No observation IDs provided.";return`Recalled ${_.length} observation(s):
324
307
 
325
- ${Y.join(`
308
+ ${_.join(`
326
309
  ---
327
- `)}`}catch(X){return`Recall error: ${X}`}}}}function q9($){let W=[];if(W.push(`## [${$.type.toUpperCase()}] ${$.title}`),$.subtitle)W.push(`*${$.subtitle}*`);if(W.push(`
310
+ `)}`}catch(J){return`Recall error: ${J}`}}}}function s0($){let W=[];if(W.push(`## [${$.type.toUpperCase()}] ${$.title}`),$.subtitle)W.push(`*${$.subtitle}*`);if(W.push(`
328
311
  ${$.narrative}`),$.facts.length>0){W.push(`
329
- **Facts:**`);for(let X of $.facts)W.push(`- ${X}`)}if($.concepts.length>0)W.push(`
312
+ **Facts:**`);for(let J of $.facts)W.push(`- ${J}`)}if($.concepts.length>0)W.push(`
330
313
  **Concepts:** ${$.concepts.join(", ")}`);if($.filesRead.length>0)W.push(`**Files read:** ${$.filesRead.join(", ")}`);if($.filesModified.length>0)W.push(`**Files modified:** ${$.filesModified.join(", ")}`);return W.push(`
331
314
  *ID: ${$.id} | Created: ${$.createdAt} | Tokens: ${$.tokenCount}*`),W.join(`
332
- `)}function pW($,W,X){return{name:"mem-save",description:`Manually save an observation to memory.
315
+ `)}function UW($,W,J){return{name:"mem-save",description:`Manually save an observation to memory.
333
316
  Use this to explicitly record important decisions, discoveries, or context
334
- that should be remembered across sessions.`,args:{title:A.string().describe("Brief title for the observation (max 80 chars)"),type:A.enum(["decision","bugfix","feature","refactor","discovery","change"]).describe("Type of observation"),narrative:A.string().describe("Detailed description of what to remember"),concepts:A.array(A.string()).optional().describe("Related concepts/tags"),files:A.array(A.string()).optional().describe("Related file paths")},execute:async(G,J)=>{try{let{title:Y,type:Q,narrative:z}=G,H=G.concepts??[],q=G.files??[];W.getOrCreate(J.sessionID,X);let O=$.create({sessionId:J.sessionID,type:Q,title:Y,subtitle:"",facts:[],narrative:z,concepts:H,filesRead:[],filesModified:q,rawToolOutput:`[Manual save] ${z}`,toolName:"mem-save",tokenCount:H$(`${Y} ${z}`)});return W.incrementObservationCount(J.sessionID),`Saved observation: [${Q}] "${Y}" (ID: ${O.id})`}catch(Y){return`Save error: ${Y}`}}}}function dW($,W){return{name:"mem-search",description:`Search through past coding session observations and memories.
317
+ that should be remembered across sessions.`,args:{title:D.string().describe("Brief title for the observation (max 80 chars)"),type:D.enum(["decision","bugfix","feature","refactor","discovery","change"]).describe("Type of observation"),narrative:D.string().describe("Detailed description of what to remember"),concepts:D.array(D.string()).optional().describe("Related concepts/tags"),files:D.array(D.string()).optional().describe("Related file paths")},execute:async(Q,X)=>{try{let{title:_,type:H,narrative:G}=Q,Y=Q.concepts??[],z=Q.files??[];W.getOrCreate(X.sessionID,J);let A=$.create({sessionId:X.sessionID,type:H,title:_,subtitle:"",facts:[],narrative:G,concepts:Y,filesRead:[],filesModified:z,rawToolOutput:`[Manual save] ${G}`,toolName:"mem-save",tokenCount:Z(`${_} ${G}`)});return W.incrementObservationCount(X.sessionID),`Saved observation: [${H}] "${_}" (ID: ${A.id})`}catch(_){return`Save error: ${_}`}}}}function SW($,W){return{name:"mem-search",description:`Search through past coding session observations and memories.
335
318
  Use this tool to find relevant context from previous sessions, including:
336
319
  - Past decisions and their rationale
337
320
  - Bug fixes and their solutions
@@ -339,23 +322,23 @@ Use this tool to find relevant context from previous sessions, including:
339
322
  - File modification history
340
323
  - Concept-based knowledge retrieval
341
324
 
342
- Supports full-text search with FTS5.`,args:{query:A.string().describe("Search query (supports keywords, phrases, file paths)"),type:A.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:A.number().min(1).max(50).default(10).describe("Maximum number of results")},execute:async(X)=>{try{let{query:G,type:J}=X,Y=X.limit||10,Q=$.search({query:G,type:J,limit:Y});if(Q.length===0){let z=W.search(G,Y);if(z.length===0)return"No matching observations or session summaries found.";return B9(z)}return _9(Q)}catch(G){return`Search error: ${G}`}}}}function _9($){let W=[`Found ${$.length} observation(s):
343
- `];for(let{observation:X}of $){if(W.push(`## [${X.type.toUpperCase()}] ${X.title}`),X.subtitle)W.push(`*${X.subtitle}*`);if(W.push(`
344
- ${X.narrative}`),X.facts.length>0){W.push(`
345
- **Facts:**`);for(let G of X.facts)W.push(`- ${G}`)}if(X.concepts.length>0)W.push(`
346
- **Concepts:** ${X.concepts.join(", ")}`);if(X.filesModified.length>0)W.push(`**Files modified:** ${X.filesModified.join(", ")}`);if(X.filesRead.length>0)W.push(`**Files read:** ${X.filesRead.join(", ")}`);W.push(`
347
- *Session: ${X.sessionId} | ${X.createdAt}*`),W.push("---")}return W.join(`
348
- `)}function B9($){let W=[`Found ${$.length} session summary(ies):
349
- `];for(let X of $){if(W.push(`## Session: ${X.sessionId}`),W.push(X.summary),X.keyDecisions.length>0){W.push(`
350
- **Key decisions:**`);for(let G of X.keyDecisions)W.push(`- ${G}`)}W.push("---")}return W.join(`
351
- `)}function iW($,W,X,G){return{name:"mem-timeline",description:`View a timeline of past coding sessions for this project.
352
- Shows recent sessions with summaries, observation counts, and key decisions.`,args:{limit:A.number().min(1).max(20).default(5).describe("Number of recent sessions to show"),sessionId:A.string().optional().describe("Show details for a specific session ID")},execute:async(J)=>{try{let Y=J.limit||5,Q=J.sessionId;if(Q)return M9(Q,$,W,X);let z=$.getRecent(G,Y);if(z.length===0)return"No past sessions found for this project.";let H=[`# Session Timeline (${z.length} sessions)
353
- `];for(let q of z){let O=q.summaryId?W.getBySessionId(q.id):null;if(H.push(`## Session: ${q.id}`),H.push(`- **Started**: ${q.startedAt}`),H.push(`- **Status**: ${q.status}`),H.push(`- **Observations**: ${q.observationCount}`),O){if(H.push(`- **Summary**: ${O.summary}`),O.keyDecisions.length>0)H.push(`- **Key decisions**: ${O.keyDecisions.join("; ")}`)}H.push("")}return H.join(`
354
- `)}catch(Y){return`Timeline error: ${Y}`}}}}function M9($,W,X,G){let J=W.getById($);if(!J)return`Session ${$} not found.`;let Y=J.summaryId?X.getBySessionId($):null,Q=G.getBySession($),z=[`# Session Detail: ${$}
355
- `];if(z.push(`- **Started**: ${J.startedAt}`),z.push(`- **Ended**: ${J.endedAt??"Active"}`),z.push(`- **Status**: ${J.status}`),z.push(`- **Observations**: ${J.observationCount}`),Y){if(z.push(`
325
+ Supports full-text search with FTS5.`,args:{query:D.string().describe("Search query (supports keywords, phrases, file paths)"),type:D.enum(["decision","bugfix","feature","refactor","discovery","change"]).optional().describe("Filter by observation type"),limit:D.number().min(1).max(50).default(10).describe("Maximum number of results")},execute:async(J)=>{try{let{query:Q,type:X}=J,_=J.limit||10,H=$.search({query:Q,type:X,limit:_});if(H.length===0){let G=W.search(Q,_);if(G.length===0)return"No matching observations or session summaries found.";return $8(G)}return e0(H)}catch(Q){return`Search error: ${Q}`}}}}function e0($){let W=[`Found ${$.length} observation(s):
326
+ `];for(let{observation:J}of $){if(W.push(`## [${J.type.toUpperCase()}] ${J.title}`),J.subtitle)W.push(`*${J.subtitle}*`);if(W.push(`
327
+ ${J.narrative}`),J.facts.length>0){W.push(`
328
+ **Facts:**`);for(let Q of J.facts)W.push(`- ${Q}`)}if(J.concepts.length>0)W.push(`
329
+ **Concepts:** ${J.concepts.join(", ")}`);if(J.filesModified.length>0)W.push(`**Files modified:** ${J.filesModified.join(", ")}`);if(J.filesRead.length>0)W.push(`**Files read:** ${J.filesRead.join(", ")}`);W.push(`
330
+ *Session: ${J.sessionId} | ${J.createdAt}*`),W.push("---")}return W.join(`
331
+ `)}function $8($){let W=[`Found ${$.length} session summary(ies):
332
+ `];for(let J of $){if(W.push(`## Session: ${J.sessionId}`),W.push(J.summary),J.keyDecisions.length>0){W.push(`
333
+ **Key decisions:**`);for(let Q of J.keyDecisions)W.push(`- ${Q}`)}W.push("---")}return W.join(`
334
+ `)}function LW($,W,J,Q){return{name:"mem-timeline",description:`View a timeline of past coding sessions for this project.
335
+ Shows recent sessions with summaries, observation counts, and key decisions.`,args:{limit:D.number().min(1).max(20).default(5).describe("Number of recent sessions to show"),sessionId:D.string().optional().describe("Show details for a specific session ID")},execute:async(X)=>{try{let _=X.limit||5,H=X.sessionId;if(H)return W8(H,$,W,J);let G=$.getRecent(Q,_);if(G.length===0)return"No past sessions found for this project.";let Y=[`# Session Timeline (${G.length} sessions)
336
+ `];for(let z of G){let A=z.summaryId?W.getBySessionId(z.id):null;if(Y.push(`## Session: ${z.id}`),Y.push(`- **Started**: ${z.startedAt}`),Y.push(`- **Status**: ${z.status}`),Y.push(`- **Observations**: ${z.observationCount}`),A){if(Y.push(`- **Summary**: ${A.summary}`),A.keyDecisions.length>0)Y.push(`- **Key decisions**: ${A.keyDecisions.join("; ")}`)}Y.push("")}return Y.join(`
337
+ `)}catch(_){return`Timeline error: ${_}`}}}}function W8($,W,J,Q){let X=W.getById($);if(!X)return`Session ${$} not found.`;let _=X.summaryId?J.getBySessionId($):null,H=Q.getBySession($),G=[`# Session Detail: ${$}
338
+ `];if(G.push(`- **Started**: ${X.startedAt}`),G.push(`- **Ended**: ${X.endedAt??"Active"}`),G.push(`- **Status**: ${X.status}`),G.push(`- **Observations**: ${X.observationCount}`),_){if(G.push(`
356
339
  ## Summary
357
- ${Y.summary}`),Y.keyDecisions.length>0){z.push(`
358
- **Key decisions:**`);for(let H of Y.keyDecisions)z.push(`- ${H}`)}}if(Q.length>0){z.push(`
359
- ## Observations`);for(let H of Q)if(z.push(`
360
- ### [${H.type.toUpperCase()}] ${H.title}`),z.push(H.narrative),H.concepts.length>0)z.push(`*Concepts: ${H.concepts.join(", ")}*`)}return z.join(`
361
- `)}async function U9($){let{directory:W}=$,X=T8(W),G=FW(X);for(let E0 of G)console.warn(`[open-mem] ${E0}`);await jW(X);let J=EW(X.dbPath);RW(J);let Y=new I8(J),Q=new P8(J),z=new b8(J),H=new k8(J),q=new K0(X),O=new f8(X),R=new Z8(X,q,O,H,Q,Y,z);R.start();let l=()=>{R.stop(),J.close()};return process.on("beforeExit",l),{"tool.execute.after":kW(X,R,Y,W),event:PW(R,Y,W),"experimental.chat.system.transform":TW(X,Q,Y,z,W),"experimental.session.compacting":fW(X,Q,Y,z,W),tools:[dW(Q,z),pW(Q,Y,W),iW(Y,z,Q,W),uW(Q)]}}export{T8 as resolveConfig,dX as getDefaultConfig,U9 as default};
340
+ ${_.summary}`),_.keyDecisions.length>0){G.push(`
341
+ **Key decisions:**`);for(let Y of _.keyDecisions)G.push(`- ${Y}`)}}if(H.length>0){G.push(`
342
+ ## Observations`);for(let Y of H)if(G.push(`
343
+ ### [${Y.type.toUpperCase()}] ${Y.title}`),G.push(Y.narrative),Y.concepts.length>0)G.push(`*Concepts: ${Y.concepts.join(", ")}*`)}return G.join(`
344
+ `)}async function J8($){let{directory:W}=$,J=b$(W),Q=i$(J);for(let C$ of Q)console.warn(`[open-mem] ${C$}`);await r$(J);let X=o$(J.dbPath);t$(X);let _=new h$(X),H=new P$(X),G=new T$(X),Y=new I$(X),z=new V$(J),A=new k$(J),K=new x$(J,z,A,Y,H,_,G);K.start();let n=()=>{K.stop(),X.close()};return process.on("beforeExit",n),{"tool.execute.after":XW(J,K,_,W),event:JW(K,_,W),"experimental.chat.system.transform":WW(J,H,_,G,W),"experimental.session.compacting":$W(J,H,_,G,W),tools:[SW(H,G),UW(H,_,W),LW(_,G,H,W),EW(H)]}}export{b$ as resolveConfig,IW as getDefaultConfig,J8 as default};
package/dist/types.d.ts CHANGED
@@ -74,6 +74,7 @@ export type QueueItem = {
74
74
  };
75
75
  export interface OpenMemConfig {
76
76
  dbPath: string;
77
+ provider: string;
77
78
  apiKey: string | undefined;
78
79
  model: string;
79
80
  maxTokensPerCompression: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAQA,qDAAqD;AACrD,MAAM,MAAM,eAAe,GACxB,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,WAAW,GACX,QAAQ,CAAC;AAEZ,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAClB;IACA,IAAI,EAAE,UAAU,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACd,GACD;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACjB,CAAC;AAML,MAAM,WAAW,aAAa;IAE7B,MAAM,EAAE,MAAM,CAAC;IAGf,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAGhC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAGxB,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAG5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAG9C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uBAAuB,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IACnD,2BAA2B,EAAE,MAAM,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;CAChC;AAMD,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,OAAO,CAAC;CACX;AAED,gCAAgC;AAChC,MAAM,WAAW,KAAK;IACrB,oBAAoB,CAAC,EAAE,CACtB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC1D,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,KACG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,cAAc,CAAC,EAAE,CAChB,KAAK,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,EACD,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,EAAE,CAAA;KAAE,KAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,oCAAoC,CAAC,EAAE,CACtC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAC5C,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,iCAAiC,CAAC,EAAE,CACnC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,EAC5B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AAM5D,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CACzB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAQA,qDAAqD;AACrD,MAAM,MAAM,eAAe,GACxB,UAAU,GACV,QAAQ,GACR,SAAS,GACT,UAAU,GACV,WAAW,GACX,QAAQ,CAAC;AAEZ,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,yDAAyD;AACzD,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,OAAO;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACxC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC1D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,MAAM,SAAS,GAClB;IACA,IAAI,EAAE,UAAU,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CACd,GACD;IACA,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACjB,CAAC;AAML,MAAM,WAAW,aAAa;IAE7B,MAAM,EAAE,MAAM,CAAC;IAGf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,uBAAuB,EAAE,MAAM,CAAC;IAGhC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IAGxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IAGxB,eAAe,EAAE,MAAM,CAAC;IAGxB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAG5B,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAG1B,QAAQ,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAG9C,qBAAqB,EAAE,OAAO,CAAC;IAC/B,uBAAuB,EAAE,eAAe,EAAE,GAAG,KAAK,CAAC;IACnD,2BAA2B,EAAE,MAAM,CAAC;IACpC,eAAe,EAAE,MAAM,CAAC;IACxB,sBAAsB,EAAE,OAAO,CAAC;CAChC;AAMD,kCAAkC;AAClC,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,CAAC,EAAE,OAAO,CAAC;CACX;AAED,gCAAgC;AAChC,MAAM,WAAW,KAAK;IACrB,oBAAoB,CAAC,EAAE,CACtB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAC1D,MAAM,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,KACG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,cAAc,CAAC,EAAE,CAChB,KAAK,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACnB,EACD,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,EAAE,CAAA;KAAE,KAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,oCAAoC,CAAC,EAAE,CACtC,KAAK,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAC5C,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,iCAAiC,CAAC,EAAE,CACnC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,EAC5B,MAAM,EAAE;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,KAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,aAAa,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3D,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,WAAW;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,WAAW,CAAC;CACnB;AAED,qDAAqD;AACrD,MAAM,MAAM,MAAM,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;AAM5D,MAAM,WAAW,WAAW;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC5B,WAAW,EAAE,WAAW,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;CACzB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "open-mem",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "Persistent memory plugin for OpenCode — captures, compresses, and recalls context across coding sessions",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,7 +15,7 @@
15
15
  "files": ["dist", "README.md", "LICENSE", "CHANGELOG.md"],
16
16
  "scripts": {
17
17
  "build": "bun run build:bundle && bun run build:types",
18
- "build:bundle": "bun build src/index.ts --outdir dist --target bun --format esm --minify --external bun:sqlite",
18
+ "build:bundle": "bun build src/index.ts --outdir dist --target bun --format esm --minify --external bun:sqlite --external ai --external @ai-sdk/anthropic --external @ai-sdk/amazon-bedrock --external @ai-sdk/openai --external @ai-sdk/google",
19
19
  "build:types": "bun x tsc --declaration --emitDeclarationOnly --outDir dist",
20
20
  "dev": "bun run --watch src/index.ts",
21
21
  "test": "bun test",
@@ -49,7 +49,9 @@
49
49
  "bun": ">=1.0.0"
50
50
  },
51
51
  "dependencies": {
52
- "@anthropic-ai/sdk": "^0.39.0",
52
+ "@ai-sdk/amazon-bedrock": "^4.0.51",
53
+ "@ai-sdk/anthropic": "^3.0.38",
54
+ "ai": "^6.0.75",
53
55
  "zod": "^3.24.0"
54
56
  },
55
57
  "devDependencies": {