@theglitchking/semantic-memory 1.6.0 → 1.7.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/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +90 -0
- package/LICENSES/Apache-2.0.txt +202 -0
- package/README.md +49 -29
- package/THIRD_PARTY_NOTICES.md +17 -0
- package/commands/jev-mode.md +18 -0
- package/commands/skill-loop.md +23 -0
- package/dist/{chunk-7PNF3AP2.js → chunk-34VN47IW.js} +2 -2
- package/dist/chunk-3FPUBAEW.js +113 -0
- package/dist/chunk-3FPUBAEW.js.map +1 -0
- package/dist/{chunk-WZEKIUYG.js → chunk-6TIKWOY4.js} +10 -8
- package/dist/{chunk-WZEKIUYG.js.map → chunk-6TIKWOY4.js.map} +1 -1
- package/dist/{chunk-NBY4TRP7.js → chunk-7M34JDTH.js} +3 -3
- package/dist/{chunk-FTRXH2WC.js → chunk-7UAVDOI6.js} +15 -12
- package/dist/chunk-7UAVDOI6.js.map +1 -0
- package/dist/{chunk-BBP3DG2U.js → chunk-AIXQFTSB.js} +25 -26
- package/dist/{chunk-BBP3DG2U.js.map → chunk-AIXQFTSB.js.map} +1 -1
- package/dist/chunk-BEACL25M.js +224 -0
- package/dist/chunk-BEACL25M.js.map +1 -0
- package/dist/chunk-CATPGINC.js +186 -0
- package/dist/chunk-CATPGINC.js.map +1 -0
- package/dist/{chunk-IGHCVAAL.js → chunk-CJUY55GG.js} +6 -3
- package/dist/{chunk-IGHCVAAL.js.map → chunk-CJUY55GG.js.map} +1 -1
- package/dist/chunk-DBFD3MTT.js +130 -0
- package/dist/chunk-DBFD3MTT.js.map +1 -0
- package/dist/{chunk-XAXK7NM4.js → chunk-EXAUVIGW.js} +9 -7
- package/dist/{chunk-XAXK7NM4.js.map → chunk-EXAUVIGW.js.map} +1 -1
- package/dist/{chunk-LGQPP5FQ.js → chunk-EYVFC745.js} +2 -2
- package/dist/chunk-GYR7U6KA.js +80 -0
- package/dist/chunk-GYR7U6KA.js.map +1 -0
- package/dist/{chunk-OEF5U5GV.js → chunk-H2BES6FU.js} +10 -2
- package/dist/{chunk-OEF5U5GV.js.map → chunk-H2BES6FU.js.map} +1 -1
- package/dist/chunk-IEZVFKUT.js +157 -0
- package/dist/chunk-IEZVFKUT.js.map +1 -0
- package/dist/chunk-J7LYDRML.js +9 -0
- package/dist/chunk-J7LYDRML.js.map +1 -0
- package/dist/chunk-MQS7JEBD.js +137 -0
- package/dist/chunk-MQS7JEBD.js.map +1 -0
- package/dist/chunk-NCGM36NX.js +118 -0
- package/dist/chunk-NCGM36NX.js.map +1 -0
- package/dist/chunk-NIZLBNH4.js +165 -0
- package/dist/chunk-NIZLBNH4.js.map +1 -0
- package/dist/chunk-OT3MV7XF.js +123 -0
- package/dist/chunk-OT3MV7XF.js.map +1 -0
- package/dist/chunk-P3GLY42T.js +291 -0
- package/dist/chunk-P3GLY42T.js.map +1 -0
- package/dist/chunk-PJXYCCI2.js +177 -0
- package/dist/chunk-PJXYCCI2.js.map +1 -0
- package/dist/chunk-R6GNP7DS.js +87 -0
- package/dist/chunk-R6GNP7DS.js.map +1 -0
- package/dist/{chunk-44BQDRXD.js → chunk-SHSOCFJH.js} +4 -1
- package/dist/chunk-SHSOCFJH.js.map +1 -0
- package/dist/chunk-TKHWVISV.js +71 -0
- package/dist/chunk-TKHWVISV.js.map +1 -0
- package/dist/{chunk-CAX46XLY.js → chunk-VBLCUWT4.js} +23 -12
- package/dist/chunk-VBLCUWT4.js.map +1 -0
- package/dist/chunk-VQCNWRTL.js +121 -0
- package/dist/chunk-VQCNWRTL.js.map +1 -0
- package/dist/{chunk-SX427M2R.js → chunk-XKGK643R.js} +2 -2
- package/dist/{chunk-FURCIJBO.js → chunk-Y7H76Q7F.js} +6 -3
- package/dist/chunk-Y7H76Q7F.js.map +1 -0
- package/dist/chunk-ZSWI3Y4Y.js +232 -0
- package/dist/chunk-ZSWI3Y4Y.js.map +1 -0
- package/dist/cli/index.js +389 -60
- package/dist/cli/index.js.map +1 -1
- package/dist/core/features.d.ts +38 -0
- package/dist/core/features.js +28 -0
- package/dist/core/index.d.ts +285 -2
- package/dist/core/index.js +170 -20
- package/dist/core/index.js.map +1 -1
- package/dist/core/jev.d.ts +35 -0
- package/dist/core/jev.js +20 -0
- package/dist/core/redact.js +1 -1
- package/dist/core/skill-curator.d.ts +1 -0
- package/dist/core/skill-curator.js +41 -0
- package/dist/core/skill-evidence.d.ts +25 -0
- package/dist/core/skill-evidence.js +23 -0
- package/dist/core/skill-queue.d.ts +40 -0
- package/dist/core/skill-queue.js +38 -0
- package/dist/core/skill-review.d.ts +3 -0
- package/dist/core/skill-review.js +29 -0
- package/dist/core/skill-worker.d.ts +21 -0
- package/dist/core/skill-worker.js +70 -0
- package/dist/core/skill-worker.js.map +1 -0
- package/dist/{dossier-RWTIMGZN.js → dossier-RXBLQOXC.js} +5 -4
- package/dist/failure-eval-IUJO47UC.js +18 -0
- package/dist/healthcheck-S7D6YNTA.js +21 -0
- package/dist/indexer-RZPH2PVL.js +9 -0
- package/dist/{lexicon-IVNJTMWE.js → lexicon-SEJSLBHO.js} +6 -5
- package/dist/lexicon-SEJSLBHO.js.map +1 -0
- package/dist/lint-3JNLRM5U.js +18 -0
- package/dist/lint-3JNLRM5U.js.map +1 -0
- package/dist/log-RM2NDNPH.js +11 -0
- package/dist/log-RM2NDNPH.js.map +1 -0
- package/dist/matter-SNJ2WDL6.js +8 -0
- package/dist/matter-SNJ2WDL6.js.map +1 -0
- package/dist/mcp/server.js +43 -38
- package/dist/mcp/server.js.map +1 -1
- package/dist/{profile-UE4YVTDC.js → profile-SNULTJ27.js} +6 -5
- package/dist/profile-SNULTJ27.js.map +1 -0
- package/dist/{schema-LY6533NJ.js → schema-RDYUK6CC.js} +3 -2
- package/dist/schema-RDYUK6CC.js.map +1 -0
- package/dist/{search-MZC4DC7H.js → search-325ULY57.js} +4 -3
- package/dist/{search-MZC4DC7H.js.map → search-325ULY57.js.map} +1 -1
- package/dist/skill-curator-D7HHZaUI.d.ts +71 -0
- package/dist/skill-land-XU2APPBJ.js +31 -0
- package/dist/skill-land-XU2APPBJ.js.map +1 -0
- package/dist/skill-ledger-AYXVNFX7.js +18 -0
- package/dist/skill-ledger-AYXVNFX7.js.map +1 -0
- package/dist/skill-merge-GXBQLBZA.js +24 -0
- package/dist/skill-merge-GXBQLBZA.js.map +1 -0
- package/dist/skill-review-BaW5n0Zg.d.ts +179 -0
- package/dist/skill-schema-RVB3EHEF.js +30 -0
- package/dist/skill-schema-RVB3EHEF.js.map +1 -0
- package/dist/{telemetry-B4KP3UVE.js → telemetry-YAG3VA4Y.js} +4 -4
- package/dist/telemetry-YAG3VA4Y.js.map +1 -0
- package/docs/regression-snapshot.md +5 -5
- package/hooks/hooks.json +26 -1
- package/hooks/jev-bridge.py +109 -0
- package/hooks/session-start.js +5 -0
- package/hooks/skill-loop.js +65 -0
- package/hooks/vault-context.js +104 -6
- package/package.json +4 -2
- package/dist/chunk-44BQDRXD.js.map +0 -1
- package/dist/chunk-5F5ZIAW2.js +0 -79
- package/dist/chunk-5F5ZIAW2.js.map +0 -1
- package/dist/chunk-CAX46XLY.js.map +0 -1
- package/dist/chunk-FTRXH2WC.js.map +0 -1
- package/dist/chunk-FURCIJBO.js.map +0 -1
- package/dist/failure-eval-37JRNTIW.js +0 -10
- package/dist/healthcheck-3FSNL2U7.js +0 -20
- package/dist/indexer-RAKJ7JR3.js +0 -8
- package/dist/lint-36WTW762.js +0 -17
- package/dist/log-YIXF6CYM.js +0 -11
- /package/dist/{chunk-7PNF3AP2.js.map → chunk-34VN47IW.js.map} +0 -0
- /package/dist/{chunk-NBY4TRP7.js.map → chunk-7M34JDTH.js.map} +0 -0
- /package/dist/{chunk-LGQPP5FQ.js.map → chunk-EYVFC745.js.map} +0 -0
- /package/dist/{chunk-SX427M2R.js.map → chunk-XKGK643R.js.map} +0 -0
- /package/dist/{dossier-RWTIMGZN.js.map → core/features.js.map} +0 -0
- /package/dist/{failure-eval-37JRNTIW.js.map → core/jev.js.map} +0 -0
- /package/dist/{healthcheck-3FSNL2U7.js.map → core/skill-curator.js.map} +0 -0
- /package/dist/{indexer-RAKJ7JR3.js.map → core/skill-evidence.js.map} +0 -0
- /package/dist/{lexicon-IVNJTMWE.js.map → core/skill-queue.js.map} +0 -0
- /package/dist/{lint-36WTW762.js.map → core/skill-review.js.map} +0 -0
- /package/dist/{log-YIXF6CYM.js.map → dossier-RXBLQOXC.js.map} +0 -0
- /package/dist/{profile-UE4YVTDC.js.map → failure-eval-IUJO47UC.js.map} +0 -0
- /package/dist/{schema-LY6533NJ.js.map → healthcheck-S7D6YNTA.js.map} +0 -0
- /package/dist/{telemetry-B4KP3UVE.js.map → indexer-RZPH2PVL.js.map} +0 -0
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/mcp/server.ts","../../src/mcp/context.ts","../../src/core/path-class.ts","../../src/core/usage-boost.ts","../../node_modules/zod/v3/external.js","../../node_modules/zod/v3/helpers/util.js","../../node_modules/zod/v3/ZodError.js","../../node_modules/zod/v3/locales/en.js","../../node_modules/zod/v3/errors.js","../../node_modules/zod/v3/helpers/parseUtil.js","../../node_modules/zod/v3/helpers/errorUtil.js","../../node_modules/zod/v3/types.js","../../src/mcp/tools/search.ts","../../src/mcp/tools/read.ts","../../src/mcp/tools/write.ts","../../src/mcp/tools/patch.ts","../../src/mcp/tools/lint.ts","../../src/mcp/tools/log.ts","../../src/mcp/tools/metadata.ts","../../src/mcp/tools/graph.ts","../../src/mcp/tools/system.ts","../../src/mcp/tools/inventory.ts","../../src/mcp/tools/contract.ts","../../src/mcp/tools/session.ts","../../src/core/tools-config.ts"],"sourcesContent":["import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { Watcher } from \"../core/watcher.js\";\nimport { buildContext, type ServerOptions } from \"./context.js\";\nimport { registerSearchTools } from \"./tools/search.js\";\nimport { registerReadTools } from \"./tools/read.js\";\nimport { registerWriteTools } from \"./tools/write.js\";\nimport { registerPatchTools } from \"./tools/patch.js\";\nimport { registerLintTools } from \"./tools/lint.js\";\nimport { registerLogTools } from \"./tools/log.js\";\nimport { registerMetadataTools } from \"./tools/metadata.js\";\nimport { registerGraphTools } from \"./tools/graph.js\";\nimport { registerSystemTools } from \"./tools/system.js\";\nimport { registerContractTools } from \"./tools/contract.js\";\nimport { registerSessionTools } from \"./tools/session.js\";\nimport { useMinimalToolSurface } from \"../core/tools-config.js\";\n\nexport type { ServerOptions } from \"./context.js\";\n\nexport async function createServer(notesPath: string, options: ServerOptions = {}) {\n const ctx = await buildContext(notesPath, options);\n\n const server = new McpServer({\n name: \"semantic-memory\",\n version: \"1.0.0\",\n });\n\n // Conditional tool registration (v1.4 Phase 7, DEFAULT OFF). When enabled via\n // tools.conditional AND the active mode is outage-silence, register only the\n // core read/search surface. Default → full surface (unchanged).\n const minimal = useMinimalToolSurface(notesPath);\n\n registerSearchTools(server, ctx);\n registerReadTools(server, ctx);\n registerSystemTools(server, ctx);\n if (!minimal) {\n registerWriteTools(server, ctx);\n registerPatchTools(server, ctx);\n registerLintTools(server, ctx);\n registerLogTools(server, ctx);\n registerMetadataTools(server, ctx);\n registerGraphTools(server, ctx);\n registerContractTools(server, ctx);\n registerSessionTools(server, ctx);\n }\n\n if (options.waitForReady) {\n await ctx.tryLoadCachedIndex();\n await ctx.fullIndex();\n } else {\n ctx.tryLoadCachedIndex()\n .then((cached) => {\n // a stale cache (chunk count drifted from the notes on disk) is served while it rebuilds\n if (!cached || ctx.getIndexState() === \"stale\") ctx.backgroundIndex();\n })\n .catch((err) => {\n process.stderr.write(`Startup error: ${err?.message ?? err}\\n`);\n ctx.backgroundIndex();\n });\n }\n\n if (options.watch !== false) {\n const watcher = new Watcher(notesPath);\n watcher.on(\"changed\", () => {\n ctx.backgroundIndex();\n });\n watcher.start();\n }\n\n return server;\n}\n\nexport async function startServer(notesPath: string, options: ServerOptions = {}) {\n const server = await createServer(notesPath, options);\n const transport = new StdioServerTransport();\n\n // Exit when the parent process closes its end of the stdio pipe.\n //\n // This covers every \"parent death\" scenario: SIGKILL to Claude Code, OOM-kill,\n // session end, terminal close, remote-MCP network drop. When the parent dies\n // its end of the pipe is closed by the kernel, and the child receives EOF on\n // process.stdin (emits 'end' then 'close').\n //\n // Without these handlers the chokidar FSWatcher (inotify fd) and the ONNX\n // InferenceSession native thread-pool keep the Node.js event loop alive\n // indefinitely — producing one orphan process (~180–200 MB RSS each) per Claude\n // session. On low-memory boxes this accumulates until RAM + swap are exhausted\n // and the host freezes.\n //\n // StdioServerTransport (MCP SDK v1.29.0) only listens for 'data' and 'error'\n // on stdin; it does not call process.exit() on EOF. The McpServer class also\n // does not exit the process on transport close — both are correct library\n // behaviour. It is the application's responsibility to exit, and this is it.\n process.stdin.once(\"end\", () => process.exit(0));\n process.stdin.once(\"close\", () => process.exit(0));\n\n // Honor explicit termination signals sent by process managers or the kernel.\n // SIGTERM: sent by systemd, launchd, Docker, or `kill <pid>`.\n // SIGHUP: sent when the controlling terminal closes (e.g. SSH disconnect).\n // SIGINT (Ctrl-C) is already handled by Node.js default behaviour.\n process.once(\"SIGTERM\", () => process.exit(0));\n process.once(\"SIGHUP\", () => process.exit(0));\n\n await server.connect(transport);\n}\n","import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { existsSync } from \"node:fs\";\nimport { Indexer } from \"../core/indexer.js\";\nimport { Embedder } from \"../core/embedder.js\";\nimport { GraphBuilder } from \"../core/graph.js\";\nimport { VectorIndex } from \"../core/vector.js\";\nimport { TextSearch } from \"../core/search-text.js\";\nimport { NoteCrud } from \"../core/crud.js\";\nimport { FrontmatterManager, TagManager } from \"../core/frontmatter.js\";\nimport { SessionManager, deriveSessionDir } from \"../core/session.js\";\nimport { computeDecay, loadDecayConfig, normalizeVerifiedDate, type DecayConfig } from \"../core/decay.js\";\nimport { pathClassMultiplier, loadPathClassConfig, type PathClassConfig } from \"../core/path-class.js\";\nimport { computeUsageBoost, loadUsageBoostConfig, loadCitationCounts, type UsageBoostConfig } from \"../core/usage-boost.js\";\nimport type { IndexedDocument, IndexState } from \"../core/types.js\";\n\nexport interface ServerOptions {\n watch?: boolean;\n waitForReady?: boolean;\n model?: string;\n workers?: number;\n batchSize?: number;\n quantized?: boolean;\n readOnly?: boolean;\n onProgress?: (embedded: number, total: number) => void;\n}\n\nexport interface DecayBlock {\n multiplier: number;\n age_days: number;\n effective_half_life: number;\n reason: string;\n}\n\nexport interface UsageBlock {\n citations: number;\n multiplier: number;\n}\n\nexport interface EnrichedResult {\n mtime?: string;\n loadPriority?: number;\n status?: string;\n tier?: string;\n domains?: string[];\n decay?: DecayBlock;\n usage?: UsageBlock;\n}\n\nexport interface ServerContext {\n notesPath: string;\n indexPath: string;\n options: ServerOptions;\n\n indexer: Indexer;\n embedder: Embedder;\n graph: GraphBuilder;\n textSearch: TextSearch;\n crud: NoteCrud;\n frontmatterManager: FrontmatterManager;\n tagManager: TagManager;\n sessions: SessionManager;\n\n getDocuments(): IndexedDocument[];\n getDocByPath(): Map<string, IndexedDocument>;\n getVectorIndex(): VectorIndex | null;\n getIndexState(): IndexState;\n getIndexProgress(): { embedded: number; total: number };\n\n tryLoadCachedIndex(): Promise<boolean>;\n fullIndex(): Promise<void>;\n backgroundIndex(): void;\n isIndexingInFlight(): boolean;\n\n textResponse(text: string): { content: { type: \"text\"; text: string }[] };\n indexingMessage(): string;\n enrichResult<T extends { path: string }>(r: T): T & EnrichedResult;\n applyPriorityBoost(score: number, path: string): number;\n /**\n * Apply confidence decay to a scored result: multiply its score by the decay\n * multiplier and, when the note is actually decayed (multiplier < 1), attach a\n * `decay` block for the agent to see. No-op when decay is disabled or the note\n * is fresh. Semantic ranking signal only — callers wire it into\n * search_semantic / search_hybrid, never search_text / search_graph.\n */\n applyDecay<T extends { path: string; score: number }>(r: T): T & { decay?: DecayBlock };\n /**\n * Apply the path-class multiplier (e.g. archive/** down-weight) to a scored\n * result. Composes multiplicatively with decay/priority at the same rank site.\n * No-op when disabled or no glob matches.\n */\n applyPathClass<T extends { path: string; score: number }>(r: T): T;\n /**\n * Apply the usage-feedback boost (v1.5): notes cited repeatedly (per the\n * selection log) earn a bounded rank boost (≤ cap), attaching a `usage` block\n * when boosted. Composes multiplicatively at the same rank site as decay/\n * path-class/priority. No-op when disabled or the note has no citations. Call\n * `refreshUsageBoost()` once before a batch so the citation snapshot is current.\n */\n applyUsageBoost<T extends { path: string; score: number }>(r: T): T & { usage?: UsageBlock };\n /** Refresh the cached citation snapshot from the selection log (TTL-guarded). */\n refreshUsageBoost(): Promise<void>;\n applyDateFilter<T extends { path: string }>(\n results: T[],\n modifiedAfter?: string,\n modifiedBefore?: string\n ): T[];\n}\n\nexport async function buildContext(notesPath: string, options: ServerOptions = {}): Promise<ServerContext> {\n const indexPath = join(notesPath, \".semantic-sidekick-index\");\n await mkdir(indexPath, { recursive: true });\n\n const indexer = new Indexer(notesPath);\n const embedder = new Embedder(options.model, options.workers, options.batchSize, options.quantized);\n const graph = new GraphBuilder();\n const textSearch = new TextSearch();\n const crud = new NoteCrud(notesPath);\n const frontmatterManager = new FrontmatterManager(notesPath);\n const tagManager = new TagManager(notesPath);\n const sessions = new SessionManager(deriveSessionDir(notesPath));\n\n let documents: IndexedDocument[] = [];\n let docByPath = new Map<string, IndexedDocument>();\n let vectorIndex: VectorIndex | null = null;\n let indexState: IndexState = \"empty\";\n let indexProgress = { embedded: 0, total: 0 };\n let indexingPromise: Promise<void> | null = null;\n\n async function tryLoadCachedIndex(): Promise<boolean> {\n try {\n indexState = \"loading\";\n await embedder.init();\n\n const metaPath = join(indexPath, \"meta.json\");\n let meta: { model?: string; totalChunks?: number; dimensions?: number; indexedAt?: string } | null = null;\n if (existsSync(metaPath)) {\n try {\n meta = JSON.parse(await readFile(metaPath, \"utf-8\"));\n if (meta?.model && meta.model !== embedder.getModel()) {\n process.stderr.write(`Model changed (${meta.model} → ${embedder.getModel()}), forcing reindex\\n`);\n return false;\n }\n } catch {\n meta = null;\n }\n }\n\n const tempVector = new VectorIndex(embedder.getDimensions());\n const vectorLoaded = await tempVector.load(indexPath);\n if (!vectorLoaded) return false;\n\n const savedEmbeddings = await embedder.loadEmbeddings(indexPath);\n if (savedEmbeddings.size === 0) return false;\n\n const graphLoaded = await graph.load(indexPath);\n if (!graphLoaded) return false;\n\n documents = await indexer.indexAll();\n docByPath = new Map(documents.map((d) => [d.path, d]));\n textSearch.setDocuments(documents);\n\n vectorIndex = tempVector;\n\n const currentChunks = documents.reduce((n, d) => n + d.chunks.length, 0);\n const fresh = meta?.totalChunks !== undefined && meta.totalChunks === currentChunks;\n indexState = fresh ? \"ready\" : \"stale\";\n return true;\n } catch {\n return false;\n }\n }\n\n async function fullIndex() {\n indexState = \"indexing\";\n indexProgress = { embedded: 0, total: 0 };\n\n await embedder.init();\n const newDocs = await indexer.indexAll();\n\n const totalChunks = newDocs.reduce((n, d) => n + d.chunks.length, 0);\n indexProgress = { embedded: 0, total: totalChunks };\n\n const newTextSearch = new TextSearch();\n newTextSearch.setDocuments(newDocs);\n\n const newGraph = new GraphBuilder();\n newGraph.buildFromDocuments(newDocs);\n\n const savedEmbeddings = await embedder.loadEmbeddings(indexPath);\n\n const SAVE_INTERVAL = 100;\n const allChunks: { embedding: Float32Array; docPath: string; chunkIndex: number; text: string }[] = [];\n const cumulativeEmbeddings = new Map<string, Float32Array>(savedEmbeddings);\n\n type PendingChunk = { text: string; docPath: string; chunkIndex: number };\n const pendingChunks: PendingChunk[] = [];\n\n for (const doc of newDocs) {\n for (let i = 0; i < doc.chunks.length; i++) {\n const key = `${doc.path}:${i}`;\n const existing = cumulativeEmbeddings.get(key);\n if (existing) {\n allChunks.push({ embedding: existing, docPath: doc.path, chunkIndex: i, text: doc.chunks[i] });\n } else {\n pendingChunks.push({ text: doc.chunks[i], docPath: doc.path, chunkIndex: i });\n }\n }\n }\n\n indexProgress = { embedded: allChunks.length, total: totalChunks };\n\n if (pendingChunks.length > 0) {\n let chunksSinceLastSave = 0;\n const alreadyEmbedded = allChunks.length;\n\n await embedder.embedBatch(\n pendingChunks.map((c) => c.text),\n async (done, _total, embeddings) => {\n if (!embeddings) return;\n const batchStart = done - embeddings.length;\n for (let i = 0; i < embeddings.length; i++) {\n const { docPath, chunkIndex, text } = pendingChunks[batchStart + i];\n const key = `${docPath}:${chunkIndex}`;\n cumulativeEmbeddings.set(key, embeddings[i]);\n allChunks.push({ embedding: embeddings[i], docPath, chunkIndex, text });\n chunksSinceLastSave++;\n }\n\n const current = alreadyEmbedded + done;\n indexProgress = { embedded: current, total: totalChunks };\n options.onProgress?.(current, totalChunks);\n\n if (chunksSinceLastSave >= SAVE_INTERVAL) {\n await embedder.saveEmbeddings(cumulativeEmbeddings, indexPath);\n chunksSinceLastSave = 0;\n }\n }\n );\n }\n\n const newVector = new VectorIndex(embedder.getDimensions());\n newVector.build(\n allChunks.map((c) => c.embedding),\n allChunks.map((c) => ({ docPath: c.docPath, chunkIndex: c.chunkIndex, text: c.text }))\n );\n\n documents = newDocs;\n docByPath = new Map(documents.map((d) => [d.path, d]));\n textSearch.setDocuments(newDocs);\n graph.buildFromDocuments(newDocs);\n vectorIndex = newVector;\n indexState = \"ready\";\n\n await Promise.all([\n graph.save(indexPath),\n newVector.save(indexPath),\n embedder.saveEmbeddings(cumulativeEmbeddings, indexPath),\n indexer.saveDocsCache(indexPath, newDocs),\n writeFile(join(indexPath, \"meta.json\"), JSON.stringify({\n model: embedder.getModel(),\n dimensions: embedder.getDimensions(),\n totalChunks: allChunks.length,\n indexedAt: new Date().toISOString(),\n })),\n ]);\n }\n\n function backgroundIndex() {\n if (indexingPromise) return;\n indexingPromise = fullIndex()\n .catch((err) => {\n process.stderr.write(`Index error: ${err?.message ?? err}\\n`);\n if (indexState === \"indexing\") indexState = documents.length > 0 ? \"stale\" : \"empty\";\n })\n .finally(() => {\n indexingPromise = null;\n });\n }\n\n function textResponse(text: string) {\n return { content: [{ type: \"text\" as const, text }] };\n }\n\n function indexingMessage(): string {\n if (indexProgress.total > 0) {\n return `Indexing in progress (${indexProgress.embedded}/${indexProgress.total} chunks)... Try again shortly.`;\n }\n return \"Indexing in progress... Try again shortly.\";\n }\n\n function enrichResult<T extends { path: string }>(result: T): T & EnrichedResult {\n const doc = docByPath.get(result.path);\n if (!doc) return result;\n return {\n ...result,\n mtime: doc.mtime,\n ...(doc.loadPriority !== undefined && { loadPriority: doc.loadPriority }),\n ...(doc.status !== undefined && { status: doc.status }),\n ...(doc.tier !== undefined && { tier: doc.tier }),\n ...(doc.domains !== undefined && { domains: doc.domains }),\n };\n }\n\n function applyPriorityBoost(score: number, path: string): number {\n const doc = docByPath.get(path);\n if (doc?.loadPriority === undefined) return score;\n return score * (1 + (doc.loadPriority - 5) * 0.04);\n }\n\n // Decay config is read once from vault.schema.yml and cached for the process.\n let decayConfig: DecayConfig | null = null;\n function getDecayConfig(): DecayConfig {\n if (!decayConfig) decayConfig = loadDecayConfig(notesPath);\n return decayConfig;\n }\n\n function applyDecay<T extends { path: string; score: number }>(r: T): T & { decay?: DecayBlock } {\n const cfg = getDecayConfig();\n if (!cfg.enabled) return r;\n const doc = docByPath.get(r.path);\n if (!doc) return r;\n const fm = doc.frontmatter ?? {};\n const d = computeDecay({\n type: typeof fm.type === \"string\" ? fm.type : undefined,\n last_verified: normalizeVerifiedDate(fm.last_verified),\n evergreen: fm.evergreen === true,\n config: cfg,\n });\n const scored = { ...r, score: r.score * d.multiplier };\n // Only surface the decay block when the note is actually down-weighted —\n // don't clutter healthy results.\n if (d.multiplier < 1) {\n return {\n ...scored,\n decay: {\n multiplier: Math.round(d.multiplier * 1000) / 1000,\n age_days: Math.round(d.age_days),\n effective_half_life: d.effective_half_life,\n reason: d.reason,\n },\n };\n }\n return scored;\n }\n\n let pathClassConfig: PathClassConfig | null = null;\n function getPathClassConfig(): PathClassConfig {\n if (!pathClassConfig) pathClassConfig = loadPathClassConfig(notesPath);\n return pathClassConfig;\n }\n\n function applyPathClass<T extends { path: string; score: number }>(r: T): T {\n const m = pathClassMultiplier(r.path, getPathClassConfig());\n return m === 1 ? r : { ...r, score: r.score * m };\n }\n\n // Usage-feedback boost (v1.5). Config is process-cached; the citation snapshot\n // is refreshed from the selection log on a short TTL so within-session citations\n // eventually take effect without re-reading the log on every scored result.\n let usageBoostConfig: UsageBoostConfig | null = null;\n function getUsageBoostConfig(): UsageBoostConfig {\n if (!usageBoostConfig) usageBoostConfig = loadUsageBoostConfig(notesPath);\n return usageBoostConfig;\n }\n let citationCounts: Record<string, number> = {};\n let citationLoadedAtMs = 0;\n const CITATION_TTL_MS = 15_000;\n\n async function refreshUsageBoost(): Promise<void> {\n if (!getUsageBoostConfig().enabled) return;\n const now = Date.now();\n if (now - citationLoadedAtMs < CITATION_TTL_MS && citationLoadedAtMs > 0) return;\n try {\n citationCounts = await loadCitationCounts(notesPath);\n citationLoadedAtMs = now;\n } catch {\n /* keep the previous snapshot on error */\n }\n }\n\n function applyUsageBoost<T extends { path: string; score: number }>(r: T): T & { usage?: UsageBlock } {\n const cfg = getUsageBoostConfig();\n if (!cfg.enabled) return r;\n const citations = citationCounts[r.path] ?? 0;\n const m = computeUsageBoost(citations, cfg);\n if (m === 1) return r;\n return { ...r, score: r.score * m, usage: { citations, multiplier: Math.round(m * 1000) / 1000 } };\n }\n\n function applyDateFilter<T extends { path: string }>(\n results: T[],\n modifiedAfter?: string,\n modifiedBefore?: string\n ): T[] {\n if (!modifiedAfter && !modifiedBefore) return results;\n const after = modifiedAfter ? new Date(modifiedAfter).getTime() : -Infinity;\n const before = modifiedBefore ? new Date(modifiedBefore).getTime() : Infinity;\n return results.filter((r) => {\n const doc = docByPath.get(r.path);\n if (!doc) return true;\n const t = new Date(doc.mtime).getTime();\n return t >= after && t <= before;\n });\n }\n\n return {\n notesPath,\n indexPath,\n options,\n indexer,\n embedder,\n graph,\n textSearch,\n crud,\n frontmatterManager,\n tagManager,\n sessions,\n getDocuments: () => documents,\n getDocByPath: () => docByPath,\n getVectorIndex: () => vectorIndex,\n getIndexState: () => indexState,\n getIndexProgress: () => indexProgress,\n tryLoadCachedIndex,\n fullIndex,\n backgroundIndex,\n isIndexingInFlight: () => indexingPromise !== null,\n textResponse,\n indexingMessage,\n enrichResult,\n applyPriorityBoost,\n applyDecay,\n applyPathClass,\n applyUsageBoost,\n refreshUsageBoost,\n applyDateFilter,\n };\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { minimatch } from \"minimatch\";\n\n/**\n * Path-class ranking multiplier (v1.4 Phase 2).\n *\n * Down-weights whole regions of the vault by path glob — the direct fix for the\n * observed failure where `archive/` and `archive/pre-restructure/` copies of a\n * retired doc dominated the top hits. Composes multiplicatively with decay and\n * load_priority at the same `context.ts` rank site; it never removes notes, only\n * ranks them lower. First matching rule wins.\n */\n\nexport interface PathClassRule {\n glob: string;\n multiplier: number;\n}\n\nexport interface PathClassConfig {\n enabled: boolean;\n rules: PathClassRule[];\n}\n\nexport const DEFAULT_PATH_CLASS_CONFIG: PathClassConfig = {\n enabled: true,\n rules: [{ glob: \"archive/**\", multiplier: 0.3 }],\n};\n\n/** The multiplier for a note path — first matching rule, else 1.0 (no effect). */\nexport function pathClassMultiplier(path: string, config: PathClassConfig): number {\n if (!config.enabled) return 1;\n for (const rule of config.rules) {\n if (typeof rule.multiplier !== \"number\") continue;\n if (minimatch(path, rule.glob)) return rule.multiplier;\n }\n return 1;\n}\n\n/**\n * Load `path_class` from vault.schema.yml, merged over the default. Missing file /\n * block / parse error → default. Synchronous + memoization-friendly.\n */\nexport function loadPathClassConfig(vaultPath: string): PathClassConfig {\n try {\n const schemaPath = join(vaultPath, \"vault.schema.yml\");\n if (!existsSync(schemaPath)) return DEFAULT_PATH_CLASS_CONFIG;\n const parsed = parseYaml(readFileSync(schemaPath, \"utf-8\")) as { path_class?: Partial<PathClassConfig> } | null;\n const p = parsed?.path_class;\n if (!p || typeof p !== \"object\") return DEFAULT_PATH_CLASS_CONFIG;\n return {\n enabled: typeof p.enabled === \"boolean\" ? p.enabled : DEFAULT_PATH_CLASS_CONFIG.enabled,\n rules: Array.isArray(p.rules)\n ? p.rules.filter((r): r is PathClassRule => !!r && typeof r.glob === \"string\" && typeof r.multiplier === \"number\")\n : DEFAULT_PATH_CLASS_CONFIG.rules,\n };\n } catch {\n return DEFAULT_PATH_CLASS_CONFIG;\n }\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { readSelectionLog } from \"./telemetry.js\";\n\n/**\n * Usage-feedback ranking (v1.5 Phase 9).\n *\n * Consumes the v1.3.1 selection log — which notes actually got cited after being\n * retrieved — and turns repeated citations into a bounded rank boost. Load-bearing\n * knowledge floats up; the cap keeps a feedback runaway (cited → ranks higher →\n * cited more) from ever compounding past 1.5×. Composes multiplicatively with\n * decay + load_priority + path-class at the shared context.ts rank site: a\n * stale-but-cited note still decays, a cited-but-archived note still down-weights.\n *\n * The complementary signal — retrieved-but-NEVER-cited \"decoys\" — is surfaced by a\n * lint rule (see lint.ts findDecoys), never auto-down-ranked. Ambiguous evidence\n * gets a human's eyes, not a silent reorder (v1.5 decision Q5).\n */\n\nexport interface UsageBoostConfig {\n enabled: boolean;\n /** Maximum multiplier a note can earn from citations (feedback-runaway cap). */\n cap: number;\n /** Multiplier increment per citation, before the cap. */\n per_citation: number;\n}\n\nexport const DEFAULT_USAGE_BOOST_CONFIG: UsageBoostConfig = {\n enabled: true,\n cap: 1.5,\n per_citation: 0.1,\n};\n\n/**\n * Load usage-boost config from vault.schema.yml (`usage_boost` block), merged over\n * the shipped defaults. Fails open to defaults when the schema is missing/unreadable.\n */\nexport function loadUsageBoostConfig(vaultPath: string): UsageBoostConfig {\n try {\n const schemaPath = join(vaultPath, \"vault.schema.yml\");\n if (!existsSync(schemaPath)) return { ...DEFAULT_USAGE_BOOST_CONFIG };\n const parsed = parseYaml(readFileSync(schemaPath, \"utf-8\")) as { usage_boost?: Partial<UsageBoostConfig> } | null;\n const u = parsed?.usage_boost;\n if (!u || typeof u !== \"object\") return { ...DEFAULT_USAGE_BOOST_CONFIG };\n return {\n enabled: typeof u.enabled === \"boolean\" ? u.enabled : DEFAULT_USAGE_BOOST_CONFIG.enabled,\n cap: typeof u.cap === \"number\" && u.cap >= 1 ? u.cap : DEFAULT_USAGE_BOOST_CONFIG.cap,\n per_citation: typeof u.per_citation === \"number\" && u.per_citation >= 0 ? u.per_citation : DEFAULT_USAGE_BOOST_CONFIG.per_citation,\n };\n } catch {\n return { ...DEFAULT_USAGE_BOOST_CONFIG };\n }\n}\n\n/**\n * The multiplier a note with `citations` citations earns: 1 + citations·per_citation,\n * clamped to [1, cap]. Zero citations (or a disabled config) → 1.0 (no-op).\n */\nexport function computeUsageBoost(citations: number, config: UsageBoostConfig): number {\n if (!config.enabled || citations <= 0) return 1;\n return Math.min(config.cap, 1 + citations * config.per_citation);\n}\n\n/**\n * Citation counts per note path, derived from the selection log's `selection`\n * events. Returns {} when telemetry is absent/empty — the boost is then a no-op.\n */\nexport async function loadCitationCounts(vaultPath: string): Promise<Record<string, number>> {\n const events = await readSelectionLog(vaultPath);\n const counts: Record<string, number> = {};\n for (const e of events) {\n if (e.kind === \"selection\") counts[e.note_path] = (counts[e.note_path] ?? 0) + 1;\n }\n return counts;\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[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;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?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)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?: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])$/;\nconst ipv4CidrRegex = /^(?:(?: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])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([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]))$/;\nconst ipv6CidrRegex = /^(([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])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\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])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { appendEvent, recordSearchForCorrelation } from \"../../core/telemetry.js\";\n\n/**\n * Selection telemetry (v1.3.1): record what a semantic search returned and prime\n * the correlation ring so a subsequent read_note can be attributed to it. Awaited\n * so the log is durable before the result returns; appendEvent never throws and\n * respects the opt-out, so it can't fail the search.\n */\nasync function logSearch(ctx: ServerContext, tool: string, query: string, enriched: any[]): Promise<void> {\n const results = enriched.map((r) => ({\n path: r.path,\n score: r.score,\n ...(r.decay ? { decay: r.decay.multiplier } : {}),\n }));\n recordSearchForCorrelation(ctx.notesPath, results.map((r) => r.path));\n await appendEvent(ctx.notesPath, { kind: \"search\", tool, query, results });\n}\n\nexport function registerSearchTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"search_semantic\",\n \"Vector similarity search — find notes similar to a query by meaning. Scores are boosted by load_priority and down-weighted by confidence decay (time since last_verified); decayed results carry a `decay` block. Set decay.enabled:false in vault.schema.yml to disable.\",\n {\n query: z.string(),\n limit: z.coerce.number().optional().default(10),\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date (e.g. '2026-01-01')\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status (e.g. 'active', 'draft')\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier (e.g. 'guide', 'reference')\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain (e.g. 'api', 'security')\"),\n },\n async ({ query, limit, modifiedAfter, modifiedBefore, status, tier, domain }) => {\n const vectorIndex = ctx.getVectorIndex();\n if (!vectorIndex) {\n return ctx.textResponse(\n ctx.getIndexState() === \"empty\" ? ctx.indexingMessage() : \"Index not built. Run reindex first.\"\n );\n }\n const queryEmbed = await ctx.embedder.embed(query);\n await ctx.refreshUsageBoost();\n let results = vectorIndex.search(queryEmbed, limit * 3);\n results = results.map((r) => ctx.applyUsageBoost(ctx.applyPathClass(ctx.applyDecay({ ...r, score: ctx.applyPriorityBoost(r.score, r.path) }))));\n results.sort((a, b) => b.score - a.score);\n results = ctx.applyDateFilter(results, modifiedAfter, modifiedBefore);\n const docByPath = ctx.getDocByPath();\n if (status) results = results.filter((r) => docByPath.get(r.path)?.status === status);\n if (tier) results = results.filter((r) => docByPath.get(r.path)?.tier === tier);\n if (domain) results = results.filter((r) => docByPath.get(r.path)?.domains?.includes(domain));\n const enriched = results.slice(0, limit).map((r) => ctx.enrichResult(r));\n await logSearch(ctx, \"search_semantic\", query, enriched);\n return ctx.textResponse(JSON.stringify(enriched, null, 2));\n }\n );\n\n server.tool(\n \"search_text\",\n \"Full-text keyword or regex search across all notes with optional filters\",\n {\n pattern: z.string(),\n regex: z.boolean().optional().default(false),\n caseSensitive: z.boolean().optional().default(false),\n pathGlob: z.string().optional(),\n tagFilter: z.array(z.string()).optional(),\n limit: z.coerce.number().optional().default(20),\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain\"),\n },\n async ({ modifiedAfter, modifiedBefore, status, tier, domain, ...opts }) => {\n const documents = ctx.getDocuments();\n if (documents.length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n let results = ctx.textSearch.search(opts);\n results = ctx.applyDateFilter(results, modifiedAfter, modifiedBefore);\n const docByPath = ctx.getDocByPath();\n if (status) results = results.filter((r) => docByPath.get(r.path)?.status === status);\n if (tier) results = results.filter((r) => docByPath.get(r.path)?.tier === tier);\n if (domain) results = results.filter((r) => docByPath.get(r.path)?.domains?.includes(domain));\n const enriched = results.map((r) => ctx.enrichResult(r));\n return ctx.textResponse(JSON.stringify(enriched, null, 2));\n }\n );\n\n server.tool(\n \"search_graph\",\n \"Graph traversal — find notes connected to a concept via wikilinks, related_docs, and specific tags. Results ranked by directness, load_priority, and degree.\",\n {\n concept: z.string(),\n maxDepth: z.coerce.number().optional().default(2),\n limit: z.coerce.number().optional().default(20),\n },\n async ({ concept, maxDepth, limit }) => {\n const documents = ctx.getDocuments();\n if (documents.length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const results = ctx.graph.searchGraph(concept, maxDepth, limit);\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n\n server.tool(\n \"search_hybrid\",\n \"Combined semantic + graph search — vector results re-ranked by graph proximity and load_priority, and down-weighted by confidence decay (time since last_verified); decayed results carry a `decay` block.\",\n {\n query: z.string(),\n limit: z.coerce.number().optional().default(10),\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain\"),\n },\n async ({ query, limit, modifiedAfter, modifiedBefore, status, tier, domain }) => {\n const vectorIndex = ctx.getVectorIndex();\n if (!vectorIndex) {\n return ctx.textResponse(\n ctx.getIndexState() === \"empty\" ? ctx.indexingMessage() : \"Index not built. Run reindex first.\"\n );\n }\n\n const queryEmbed = await ctx.embedder.embed(query);\n await ctx.refreshUsageBoost();\n const semanticResults = vectorIndex.search(queryEmbed, limit * 3);\n const graphResults = ctx.graph.searchGraph(query, 2);\n const graphPaths = new Set(graphResults.map((r) => r.path));\n\n let hybrid = semanticResults.map((r) =>\n ctx.applyUsageBoost(\n ctx.applyPathClass(\n ctx.applyDecay({\n ...r,\n score: ctx.applyPriorityBoost(graphPaths.has(r.path) ? r.score * 1.3 : r.score, r.path),\n })\n )\n )\n );\n hybrid.sort((a, b) => b.score - a.score);\n\n hybrid = ctx.applyDateFilter(hybrid, modifiedAfter, modifiedBefore);\n const docByPath = ctx.getDocByPath();\n if (status) hybrid = hybrid.filter((r) => docByPath.get(r.path)?.status === status);\n if (tier) hybrid = hybrid.filter((r) => docByPath.get(r.path)?.tier === tier);\n if (domain) hybrid = hybrid.filter((r) => docByPath.get(r.path)?.domains?.includes(domain));\n\n const enriched = hybrid.slice(0, limit).map((r) => ctx.enrichResult(r));\n await logSearch(ctx, \"search_hybrid\", query, enriched);\n return ctx.textResponse(JSON.stringify(enriched, null, 2));\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { appendEvent, wasRecentlySearched } from \"../../core/telemetry.js\";\nimport { extractSection } from \"../../core/section.js\";\n\nexport function registerReadTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"read_note\",\n \"Read a note by path. Pass `section` (a heading name) to read only that heading's section instead of the whole file — cheaper when you only need one part (e.g. a dossier's 'Knobs' section).\",\n { path: z.string(), section: z.string().optional().describe(\"Heading name — return only that section (heading through the next same-or-higher heading).\") },\n async ({ path, section }) => {\n const content = await ctx.crud.read(path);\n // Selection telemetry (v1.3.1): reading a note is a \"this got used\" signal —\n // the valuable, low-frequency half of the log. Awaited so it's durably\n // recorded before we return; appendEvent never throws and respects the opt-out,\n // so it can add tiny latency but can never fail the read.\n await appendEvent(ctx.notesPath, {\n kind: \"selection\",\n note_path: path,\n via: \"read_note\",\n correlated: wasRecentlySearched(ctx.notesPath, path),\n });\n if (section) {\n const extracted = extractSection(content, section);\n return ctx.textResponse(extracted ?? `Section \"${section}\" not found in ${path}. Read without \\`section\\` for the full note.`);\n }\n return ctx.textResponse(content);\n }\n );\n\n server.tool(\n \"read_multiple_notes\",\n \"[DEPRECATED — removed in v2.0.0; use read_note in a loop or via batched MCP calls] Batch read multiple notes in one call\",\n { paths: z.array(z.string()) },\n async ({ paths }) => {\n const results = await ctx.crud.readMultiple(paths);\n const output: Record<string, string> = {};\n for (const [k, v] of results) output[k] = v;\n return ctx.textResponse(JSON.stringify(output, null, 2));\n }\n );\n\n server.tool(\n \"list_notes\",\n \"List all indexed notes with metadata (title, tags, timestamps, link count). Supports filtering by date, status, tier, and domain.\",\n {\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date (e.g. '2026-01-01')\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status (e.g. 'active', 'deprecated')\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier (e.g. 'guide', 'reference')\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain (e.g. 'api', 'security')\"),\n },\n async ({ modifiedAfter, modifiedBefore, status, tier, domain }) => {\n const documents = ctx.getDocuments();\n if (documents.length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const after = modifiedAfter ? new Date(modifiedAfter).getTime() : -Infinity;\n const before = modifiedBefore ? new Date(modifiedBefore).getTime() : Infinity;\n\n const list = documents\n .filter((d) => {\n const t = new Date(d.mtime).getTime();\n if (t < after || t > before) return false;\n if (status && d.status !== status) return false;\n if (tier && d.tier !== tier) return false;\n if (domain && !d.domains?.includes(domain)) return false;\n return true;\n })\n .map((d) => ({\n path: d.path,\n title: d.title,\n mtime: d.mtime,\n tags: d.tags,\n wikilinks: d.wikilinks.length,\n chunks: d.chunks.length,\n ...(d.loadPriority !== undefined && { loadPriority: d.loadPriority }),\n ...(d.status !== undefined && { status: d.status }),\n ...(d.tier !== undefined && { tier: d.tier }),\n ...(d.domains !== undefined && { domains: d.domains }),\n ...(d.purpose !== undefined && { purpose: d.purpose }),\n }));\n\n return ctx.textResponse(JSON.stringify(list, null, 2));\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { redactedNote } from \"../../core/redact.js\";\n\nexport function registerWriteTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"create_note\",\n \"Create a new markdown note\",\n {\n path: z.string(),\n content: z.string(),\n frontmatter: z.record(z.unknown()).optional(),\n },\n async ({ path, content, frontmatter }) => {\n const { redacted } = await ctx.crud.create(path, content, frontmatter);\n return ctx.textResponse(`Created: ${path}${redactedNote(redacted)}`);\n }\n );\n\n server.tool(\n \"update_note\",\n \"Edit note content — overwrite, append, prepend, or patch by heading\",\n {\n path: z.string(),\n content: z.string(),\n mode: z.enum([\"overwrite\", \"append\", \"prepend\", \"patch-by-heading\"]),\n heading: z.string().optional(),\n },\n async ({ path, content, mode, heading }) => {\n const { redacted } = await ctx.crud.update(path, content, { mode, heading });\n return ctx.textResponse(`Updated: ${path} (${mode})${redactedNote(redacted)}`);\n }\n );\n\n server.tool(\n \"delete_note\",\n \"Delete a note permanently\",\n { path: z.string(), confirm: z.boolean().default(false) },\n async ({ path, confirm }) => {\n if (!confirm) return ctx.textResponse(`Set confirm=true to delete ${path}`);\n await ctx.crud.delete(path);\n return ctx.textResponse(`Deleted: ${path}`);\n }\n );\n\n server.tool(\n \"move_note\",\n \"Move or rename a note — updates wikilinks across the vault\",\n { from: z.string(), to: z.string() },\n async ({ from, to }) => {\n await ctx.crud.move(from, to);\n return ctx.textResponse(`Moved: ${from} → ${to}`);\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { applyPatch, type ChangeSet } from \"../../core/patch.js\";\nimport { buildSynthesizeChangeSet, buildPromoteChangeSet } from \"../../core/synthesize.js\";\nimport { buildIngestChangeSet } from \"../../core/ingest.js\";\nimport { installDefaultSchema } from \"../../core/schema.js\";\nimport { logEvent } from \"../../core/log.js\";\nimport { computeDecay, loadDecayConfig } from \"../../core/decay.js\";\nimport { addAlias, removeAlias, compileLexicon, loadLexiconCache, expandQuery } from \"../../core/lexicon.js\";\nimport { initDossier, listDossiers, appendIncident, setCurrentState, resolveDossierPath, compileDossiers } from \"../../core/dossier.js\";\nimport { initSpeakerProfile, readSpeakerProfile, updateProfileSection, SPEAKER_PROFILE_PATH } from \"../../core/profile.js\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport matter from \"gray-matter\";\n\nexport function registerPatchTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"apply_patch\",\n \"Atomic multi-note patch with rollback — apply a ChangeSet of creates/updates/deletes/moves. If any op fails, earlier ops are reverted. In dry-run, nothing is written; result describes the proposed state + schema findings.\",\n {\n creates: z\n .array(\n z.object({\n path: z.string(),\n content: z.string(),\n frontmatter: z.record(z.unknown()).optional(),\n })\n )\n .optional(),\n updates: z\n .array(\n z.object({\n path: z.string(),\n content: z.string(),\n mode: z.enum([\"overwrite\", \"append\", \"prepend\", \"patch-by-heading\"]),\n heading: z.string().optional(),\n })\n )\n .optional(),\n deletes: z.array(z.object({ path: z.string() })).optional(),\n moves: z.array(z.object({ from: z.string(), to: z.string() })).optional(),\n dry_run: z.boolean().optional().default(false),\n validate: z.boolean().optional().default(true),\n allow_lint_warnings: z.boolean().optional().default(true),\n },\n async (args) => {\n const cs: ChangeSet = {\n creates: args.creates,\n updates: args.updates,\n deletes: args.deletes,\n moves: args.moves,\n };\n const result = await applyPatch(ctx.notesPath, cs, {\n dryRun: args.dry_run,\n validate: args.validate,\n allowLintWarnings: args.allow_lint_warnings,\n });\n if (!result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"error\",\n summary: `apply_patch failed: ${result.errors[0] ?? \"unknown\"}`,\n payload: { tool: \"apply_patch\", errors: result.errors, rolled_back: result.rolledBack.length },\n }).catch(() => { /* never let logging failure mask the real error */ });\n }\n if (result.ok && !args.dry_run) {\n const touched = result.applied.map((o) => o.path);\n await ctx.sessions.recordNotesTouched(touched).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"synthesize_note\",\n \"Turn a researched answer + sources into a new filed note with provenance frontmatter and auto-wikilinks. Builds a ChangeSet and applies it (dry-run supported). The primary path from query-answer to durable vault artifact. Pass `proposal: true` to file the result under `proposals/<date>-<slug>.md` with `status: proposal` for review-first workflows; `synthesize_promote` then moves it to the canonical destination.\",\n {\n topic: z.string(),\n answer: z.string(),\n suggested_path: z.string().describe(\"Target path relative to vault root, e.g. 'decisions/auth-migration.md'. In proposal mode, this is recorded as proposed_target frontmatter and the actual write goes to proposals/.\"),\n type: z.string().optional().default(\"note\").describe(\"One of the schema types: note, decision, gotcha, source\"),\n sources: z.array(z.string()).optional().describe(\"External URLs or paths — populate provenance.sources\"),\n derived_from: z.array(z.string()).optional().describe(\"Wikilinks to other vault notes — populate provenance.derived_from\"),\n related_notes: z.array(z.string()).optional().describe(\"Note names or paths to auto-link in the body + list under Related\"),\n status: z.string().optional().default(\"active\"),\n confidence: z.string().optional().default(\"medium\"),\n decision_maker: z.string().optional(),\n decided_on: z.string().optional(),\n severity: z.string().optional(),\n symptoms: z.array(z.string()).optional().describe(\"Verbatim symptom phrases in the user's own words (e.g. 'it hangs after the second reindex'). Stored as `symptoms:` frontmatter and symptom-keyed at index time so terse symptom queries match this note — the retrieval key for next time.\"),\n dry_run: z.boolean().optional().default(false),\n proposal: z.boolean().optional().default(false).describe(\"Write to proposals/<date>-<slug>.md with status:proposal instead of the canonical destination. Use for review-first workflows.\"),\n proposal_subdir: z.string().optional().describe(\"Override the proposal subdirectory (default 'proposals'). Useful for source segregation, e.g. 'proposals/research'.\"),\n from_session: z.boolean().optional().default(false).describe(\"When true, pull defaults from the active session: prepend a verification summary to `answer`, default `derived_from` to session.notes_touched, and append session id+task to `sources`. No-op when no session is active.\"),\n },\n async (args) => {\n // from_session: if requested AND a session is active, enrich the synthesis input\n // with session context so the agent has fewer fields to specify by hand.\n let answer = args.answer;\n let derivedFrom = args.derived_from;\n let sources = args.sources;\n if (args.from_session) {\n const session = await ctx.sessions.readActive();\n if (session) {\n const verifLines = session.verifications.map((v) =>\n `- \\`${v.cmd}\\` → exit=${v.exit ?? \"(killed)\"} in ${v.duration_ms}ms`\n );\n if (verifLines.length > 0) {\n answer = `${answer}\\n\\n## Session verifications (${session.id})\\n\\n${verifLines.join(\"\\n\")}\\n`;\n }\n if ((!derivedFrom || derivedFrom.length === 0) && session.notes_touched.length > 0) {\n derivedFrom = [...session.notes_touched];\n }\n const sessionTag = `session:${session.id} task:${session.task}`;\n sources = sources ? [...sources, sessionTag] : [sessionTag];\n }\n }\n\n const preview = buildSynthesizeChangeSet({\n topic: args.topic,\n answer,\n suggested_path: args.suggested_path,\n type: args.type,\n sources,\n derived_from: derivedFrom,\n related_notes: args.related_notes,\n status: args.status,\n confidence: args.confidence,\n decision_maker: args.decision_maker,\n decided_on: args.decided_on,\n severity: args.severity,\n symptoms: args.symptoms,\n proposal: args.proposal,\n proposal_subdir: args.proposal_subdir,\n });\n const result = await applyPatch(ctx.notesPath, preview.changeset, {\n dryRun: args.dry_run,\n });\n if (result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"synthesis\",\n summary: `synthesized ${preview.title}${preview.is_proposal ? \" (proposal)\" : \"\"}`,\n payload: {\n path: preview.path,\n type: args.type,\n sources: sources ?? [],\n derived_from: derivedFrom ?? [],\n ...(preview.is_proposal && { is_proposal: true, proposed_target: preview.proposed_target }),\n },\n }).catch(() => {});\n await ctx.sessions.recordNotesTouched([preview.path]).catch(() => {});\n } else if (!result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"error\",\n summary: `synthesize_note failed: ${result.errors[0] ?? \"unknown\"}`,\n payload: { tool: \"synthesize_note\", path: preview.path, errors: result.errors },\n }).catch(() => {});\n }\n return ctx.textResponse(\n JSON.stringify(\n {\n preview: {\n path: preview.path,\n title: preview.title,\n ...(preview.is_proposal && { is_proposal: true, proposed_target: preview.proposed_target }),\n },\n result,\n },\n null,\n 2\n )\n );\n }\n );\n\n server.tool(\n \"synthesize_promote\",\n \"Move a reviewed proposal note to its canonical destination. Reads the proposal's frontmatter (which must have `status: proposal` and `proposed_target`), strips proposal markers, restores canonical status, and atomically creates the target + deletes the proposal. Optional `target_path` overrides the proposal's recorded `proposed_target`.\",\n {\n proposal_path: z.string().describe(\"Path to the proposal note relative to vault root, e.g. 'proposals/2026-05-08-auth-flow.md'\"),\n target_path: z.string().optional().describe(\"Optional destination override. When omitted, uses the proposal's own `proposed_target` frontmatter.\"),\n dry_run: z.boolean().optional().default(false),\n },\n async (args) => {\n const absoluteProposalPath = join(ctx.notesPath, args.proposal_path);\n let raw: string;\n try {\n raw = await readFile(absoluteProposalPath, \"utf-8\");\n } catch (err) {\n return ctx.textResponse(JSON.stringify({\n ok: false,\n error: `Proposal file not found: ${args.proposal_path}`,\n }, null, 2));\n }\n const parsed = matter(raw);\n const fm = parsed.data as Record<string, unknown>;\n if (fm.status !== \"proposal\") {\n return ctx.textResponse(JSON.stringify({\n ok: false,\n error: `Note ${args.proposal_path} does not have status:proposal frontmatter (got status=${JSON.stringify(fm.status)}). Refusing to promote — only proposal-flagged notes are eligible.`,\n }, null, 2));\n }\n\n let preview;\n try {\n preview = buildPromoteChangeSet({\n proposal_path: args.proposal_path,\n target_path: args.target_path,\n body: parsed.content,\n frontmatter: fm,\n });\n } catch (err: any) {\n return ctx.textResponse(JSON.stringify({ ok: false, error: err?.message ?? String(err) }, null, 2));\n }\n\n const result = await applyPatch(ctx.notesPath, preview.changeset, { dryRun: args.dry_run });\n if (result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"synthesis\",\n summary: `promoted proposal ${preview.from} → ${preview.to}`,\n payload: { tool: \"synthesize_promote\", from: preview.from, to: preview.to },\n }).catch(() => {});\n await ctx.sessions.recordNotesTouched([preview.to]).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify({ preview: { from: preview.from, to: preview.to }, result }, null, 2));\n }\n );\n\n server.tool(\n \"ingest_source\",\n \"Build + apply a ChangeSet that ingests a source (paper, doc, URL) and the notes extracted from it. Produces one sources/<slug>.md note (type=source) plus one create per extracted unit, each stamped with derived_from pointing at the source. Routes through apply_patch — atomic, validated, rollback-capable, dry-run supported.\",\n {\n source: z.object({\n source_uri: z.string(),\n source_title: z.string(),\n source_type: z.string().optional(),\n source_path: z.string().optional(),\n source_summary: z.string().optional(),\n source_tags: z.array(z.string()).optional(),\n }),\n units: z.array(\n z.object({\n path: z.string(),\n title: z.string().optional(),\n content: z.string(),\n type: z.string().optional(),\n extra_derived_from: z.array(z.string()).optional(),\n extra_frontmatter: z.record(z.unknown()).optional(),\n confidence: z.string().optional(),\n })\n ),\n dry_run: z.boolean().optional().default(false),\n auto_apply: z.boolean().optional().default(true).describe(\"If false, force dry-run regardless of dry_run flag — use for review-first workflows\"),\n },\n async (args) => {\n const preview = buildIngestChangeSet({\n source: args.source,\n units: args.units,\n });\n const dry = args.dry_run || args.auto_apply === false;\n const result = await applyPatch(ctx.notesPath, preview.changeset, { dryRun: dry });\n if (result.ok && !dry) {\n await logEvent(ctx.notesPath, {\n kind: \"ingest\",\n summary: `ingested ${preview.unitPaths.length} note(s) from ${args.source.source_title}`,\n payload: {\n source_path: preview.sourcePath,\n unit_paths: preview.unitPaths,\n source_uri: args.source.source_uri,\n },\n }).catch(() => {});\n } else if (!result.ok && !dry) {\n await logEvent(ctx.notesPath, {\n kind: \"error\",\n summary: `ingest_source failed: ${result.errors[0] ?? \"unknown\"}`,\n payload: {\n tool: \"ingest_source\",\n source_uri: args.source.source_uri,\n source_title: args.source.source_title,\n errors: result.errors,\n },\n }).catch(() => {});\n }\n return ctx.textResponse(\n JSON.stringify(\n {\n preview: {\n source_path: preview.sourcePath,\n unit_paths: preview.unitPaths,\n },\n result,\n dry_run: dry,\n },\n null,\n 2\n )\n );\n }\n );\n\n server.tool(\n \"install_schema\",\n \"Bootstrap vault.schema.yml in the vault root with the default schema (note/decision/gotcha/source types + provenance fields). Skipped if present unless force=true.\",\n { force: z.boolean().optional().default(false) },\n async ({ force }) => {\n const r = await installDefaultSchema(ctx.notesPath, force);\n return ctx.textResponse(\n r.written ? `Installed default schema: ${r.path}` : `Schema already exists: ${r.path} (pass force=true to overwrite)`\n );\n }\n );\n\n server.tool(\n \"verify_note\",\n \"Re-verify a note: stamp `last_verified` to today WITHOUT changing content or any other frontmatter field, and log a `verify` event. Resets the confidence-decay clock so the note ranks fresh again. Returns the note's new decay multiplier (typically 1.0).\",\n { path: z.string() },\n async ({ path }) => {\n let fm: Record<string, unknown>;\n try {\n fm = await ctx.frontmatterManager.get(path);\n } catch {\n return ctx.textResponse(`verify_note: note not found: ${path}`);\n }\n const today = new Date().toISOString().slice(0, 10);\n await ctx.frontmatterManager.update(path, { last_verified: today });\n await logEvent(ctx.notesPath, {\n kind: \"verify\",\n summary: `verified ${path}`,\n payload: { path, last_verified: today },\n });\n const d = computeDecay({\n type: typeof fm.type === \"string\" ? fm.type : undefined,\n last_verified: today,\n evergreen: fm.evergreen === true,\n config: loadDecayConfig(ctx.notesPath),\n });\n return ctx.textResponse(\n JSON.stringify({ path, last_verified: today, decay_multiplier: d.multiplier }, null, 2)\n );\n }\n );\n\n server.tool(\n \"manage_lexicon\",\n \"Manage the learned human→artifact lexicon (v1.4). `action`: add (upsert a canonical target + the human phrases that refer to it; bumps evidence_count on repeats), lookup (expand a query via matching alias phrases), list (all aliases), remove (by canonical), compile (rebuild the derived cache). The lexicon maps how THIS human names things to concrete paths/symbols.\",\n {\n action: z.enum([\"add\", \"lookup\", \"list\", \"remove\", \"compile\"]),\n canonical: z.string().optional().describe(\"For add/remove: the concrete target (note path or code symbol).\"),\n phrases: z.array(z.string()).optional().describe(\"For add: the human's verbatim phrases for the canonical target.\"),\n query: z.string().optional().describe(\"For lookup: the utterance to expand via alias phrases.\"),\n source: z.enum([\"learned\", \"authored\"]).optional().describe(\"For add: provenance of the binding (default learned).\"),\n },\n async ({ action, canonical, phrases, query, source }) => {\n switch (action) {\n case \"add\": {\n if (!canonical || !phrases || phrases.length === 0) return ctx.textResponse(\"manage_lexicon add requires `canonical` and non-empty `phrases`\");\n const r = await addAlias(ctx.notesPath, { canonical, phrases, source });\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"lookup\": {\n if (!query) return ctx.textResponse(\"manage_lexicon lookup requires `query`\");\n const aliases = await loadLexiconCache(ctx.notesPath);\n const { expanded, matched } = expandQuery(aliases, query);\n return ctx.textResponse(JSON.stringify({ query, expanded, matched }, null, 2));\n }\n case \"list\": {\n return ctx.textResponse(JSON.stringify(await loadLexiconCache(ctx.notesPath), null, 2));\n }\n case \"remove\": {\n if (!canonical) return ctx.textResponse(\"manage_lexicon remove requires `canonical`\");\n const removed = await removeAlias(ctx.notesPath, canonical);\n return ctx.textResponse(removed ? `removed alias: ${canonical}` : `no alias for canonical: ${canonical}`);\n }\n case \"compile\": {\n const entries = await compileLexicon(ctx.notesPath);\n return ctx.textResponse(`compiled ${entries.length} alias(es) to lexicon-cache.json`);\n }\n }\n }\n );\n\n server.tool(\n \"manage_dossier\",\n \"Manage entity dossiers (v1.5) — the per-component living notes that organize memory by entity instead of by file. `action`: init (scaffold a dossier for an entity with the fixed Purpose/Failure modes/Knobs/Incident log/Current state sections), append_incident (append a dated line to the Incident log — accretion, never a new note), set_state (replace the Current state one-liner), get (read a dossier by entity/alias/path), list (all dossiers with their current state). Knowledge about a critical component accretes IN PLACE here.\",\n {\n action: z.enum([\"init\", \"append_incident\", \"set_state\", \"get\", \"list\"]),\n entity: z.string().optional().describe(\"For init/append_incident/set_state/get: the entity name, one of its aliases, or a dossier path.\"),\n aliases: z.array(z.string()).optional().describe(\"For init: the human's phrases for this entity (fed to the lexicon compiler for query expansion).\"),\n purpose: z.string().optional().describe(\"For init: seed the Purpose section instead of the placeholder.\"),\n seeded_from: z.string().optional().describe(\"For init: provenance of the scaffold (e.g. a babel-fish project-map entry).\"),\n incident: z.string().optional().describe(\"For append_incident: what happened → cause → fix, in one line. Dated automatically.\"),\n state: z.string().optional().describe(\"For set_state: the single freshest sentence about where the entity stands.\"),\n },\n async ({ action, entity, aliases, purpose, seeded_from, incident, state }) => {\n switch (action) {\n case \"init\": {\n if (!entity) return ctx.textResponse(\"manage_dossier init requires `entity`\");\n const r = await initDossier(ctx.notesPath, entity, { aliases, purpose, seeded_from });\n if (r.created) await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"append_incident\": {\n if (!entity || !incident) return ctx.textResponse(\"manage_dossier append_incident requires `entity` and `incident`\");\n const r = await appendIncident(ctx.notesPath, entity, incident);\n if (!r) return ctx.textResponse(`no dossier for entity: ${entity} (run action:init first)`);\n await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n await logEvent(ctx.notesPath, { kind: \"synthesis\", summary: `dossier incident: ${entity}`, payload: { path: r.path, incident } }).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"set_state\": {\n if (!entity || !state) return ctx.textResponse(\"manage_dossier set_state requires `entity` and `state`\");\n const r = await setCurrentState(ctx.notesPath, entity, state);\n if (!r) return ctx.textResponse(`no dossier for entity: ${entity} (run action:init first)`);\n await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"get\": {\n if (!entity) return ctx.textResponse(\"manage_dossier get requires `entity`\");\n const rel = await resolveDossierPath(ctx.notesPath, entity);\n if (!rel) return ctx.textResponse(`no dossier for entity: ${entity}`);\n const content = await readFile(join(ctx.notesPath, rel), \"utf-8\");\n return ctx.textResponse(JSON.stringify({ path: rel, content }, null, 2));\n }\n case \"list\": {\n await compileDossiers(ctx.notesPath);\n const entries = await listDossiers(ctx.notesPath);\n return ctx.textResponse(JSON.stringify(entries, null, 2));\n }\n }\n }\n );\n\n server.tool(\n \"manage_profile\",\n \"Manage the speaker profile (v1.5) — the model of how THIS human communicates (severity calibration, chronic omissions, verbosity preference, non-entity shorthand). `action`: init (scaffold profile/speaker.md with the fixed sections), get (read it), update_section (append a learned line to — or replace — one section; scaffolds first if absent). Update it when the user corrects an interpretation (\\\"no, when I say X I mean Y\\\"). One human, one profile.\",\n {\n action: z.enum([\"init\", \"get\", \"update_section\"]),\n section: z.string().optional().describe(\"For update_section: the section heading (e.g. 'Severity calibration', 'Shorthand & terms').\"),\n text: z.string().optional().describe(\"For update_section: the learned line or replacement body.\"),\n mode: z.enum([\"append\", \"replace\"]).optional().describe(\"For update_section: append a line (default) or replace the section body.\"),\n },\n async ({ action, section, text, mode }) => {\n switch (action) {\n case \"init\": {\n const r = await initSpeakerProfile(ctx.notesPath);\n if (r.created) await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"get\": {\n const p = await readSpeakerProfile(ctx.notesPath);\n if (!p) return ctx.textResponse(`no speaker profile yet (run action:init or manage_profile update_section)`);\n const content = await readFile(join(ctx.notesPath, SPEAKER_PROFILE_PATH), \"utf-8\");\n return ctx.textResponse(JSON.stringify({ path: p.path, head: p.head, content }, null, 2));\n }\n case \"update_section\": {\n if (!section || !text) return ctx.textResponse(\"manage_profile update_section requires `section` and `text`\");\n const r = await updateProfileSection(ctx.notesPath, section, text, mode ?? \"append\");\n await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n }\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { lintVault } from \"../../core/lint.js\";\n\ntype LintCheck = \"schema\" | \"provenance\" | \"stale\" | \"broken_links\" | \"code_symbols\" | \"decay_candidates\" | \"alias_conflicts\" | \"decoys\" | \"secrets\";\nconst ALL_CHECKS: LintCheck[] = [\"schema\", \"provenance\", \"stale\", \"broken_links\"];\n\nconst RULE_KEY_FOR_CHECK: Record<LintCheck, \"schema_violations\" | \"missing_provenance\" | \"stale\" | \"broken_links\" | \"code_symbols\" | \"decay_candidates\" | \"alias_conflicts\" | \"decoys\" | \"secrets\"> = {\n schema: \"schema_violations\",\n provenance: \"missing_provenance\",\n stale: \"stale\",\n broken_links: \"broken_links\",\n code_symbols: \"code_symbols\",\n decay_candidates: \"decay_candidates\",\n alias_conflicts: \"alias_conflicts\",\n decoys: \"decoys\",\n secrets: \"secrets\",\n};\n\nexport function registerLintTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"find_schema_violations\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['schema']})] Scan the vault for schema violations — missing required fields, unknown types, enum mismatches. Errors block apply_patch when validate=true.\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.schema_violations, null, 2));\n }\n );\n\n server.tool(\n \"find_missing_provenance\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['provenance']})] Scan the vault for notes of types (note/decision/gotcha by default) that lack both sources and derived_from frontmatter. Warnings by default.\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.missing_provenance, null, 2));\n }\n );\n\n server.tool(\n \"find_stale\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['stale']})] Scan the vault for notes whose last_verified date is older than the schema's stale.max_age_days (default 180).\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.stale, null, 2));\n }\n );\n\n server.tool(\n \"find_broken_links\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['broken_links']})] Scan the vault for [[wikilinks]] that point to non-existent notes. Heavier than the other lints (cross-note check) but still metadata-only.\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.broken_links, null, 2));\n }\n );\n\n server.tool(\n \"lint_vault\",\n \"Run lint rules across the vault. Default returns the full LintReport with all findings grouped by rule. Pass `checks` to filter to specific rules (schema, provenance, stale, broken_links, code_symbols, decay_candidates) — when filtered, byRule contains only the requested rules. Two checks are opt-in only (never in the default report): `code_symbols` flags inline-code file-path references that no longer exist under the project root (no-op outside a code repo); `decay_candidates` cross-references the selection log against current decay to surface frequently-retrieved-but-decayed notes (no-op with no selection log). `decoys` flags notes retrieved 3+ times but never cited - surfaced for review, never auto-down-ranked (v1.5 Q5). `secrets` flags notes containing an API key, token, password or private key (path, line, kind — never the value; nothing is rewritten): rotate the secret, then remove it.\",\n {\n pathGlob: z.string().optional(),\n checks: z\n .array(z.enum([\"schema\", \"provenance\", \"stale\", \"broken_links\", \"code_symbols\", \"decay_candidates\", \"alias_conflicts\", \"decoys\", \"secrets\"]))\n .optional()\n .describe(\"Filter to specific lint rules. Omit for full report (excludes the opt-in code_symbols / decay_candidates / alias_conflicts / decoys / secrets).\"),\n },\n async ({ pathGlob, checks }) => {\n const report = await lintVault(ctx.notesPath, {\n pathGlob,\n checkCodeSymbols: !!checks?.includes(\"code_symbols\"),\n checkDecayCandidates: !!checks?.includes(\"decay_candidates\"),\n checkAliasConflicts: !!checks?.includes(\"alias_conflicts\"),\n checkDecoys: !!checks?.includes(\"decoys\"),\n checkSecrets: !!checks?.includes(\"secrets\"),\n });\n if (!checks || checks.length === 0) {\n return ctx.textResponse(JSON.stringify(report, null, 2));\n }\n const requested = new Set<LintCheck>(checks.length > 0 ? checks : ALL_CHECKS);\n const filteredByRule: Record<string, unknown[]> = {};\n for (const check of requested) {\n const ruleKey = RULE_KEY_FOR_CHECK[check];\n filteredByRule[ruleKey] = report.byRule[ruleKey] ?? [];\n }\n const filteredFindings = report.findings.filter((f) => {\n const matchedCheck = (Object.entries(RULE_KEY_FOR_CHECK) as [LintCheck, string][])\n .find(([, ruleKey]) => ruleKey === f.rule);\n return matchedCheck ? requested.has(matchedCheck[0]) : false;\n });\n return ctx.textResponse(\n JSON.stringify(\n {\n ...report,\n findings: filteredFindings,\n byRule: filteredByRule,\n },\n null,\n 2\n )\n );\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { logEvent, logQuery } from \"../../core/log.js\";\nimport { regenIndexesForPaths, regenDirectoryIndex } from \"../../core/index-regen.js\";\n\nexport function registerLogTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"log_event\",\n \"Append a structured event to the vault's log.md. Each entry renders as a human line + a machine-readable YAML block for later querying.\",\n {\n kind: z.string().describe(\"Category: ingest, synthesis, decision, incident, etc.\"),\n summary: z.string().describe(\"One-line human summary\"),\n payload: z.record(z.unknown()).optional().describe(\"Arbitrary structured data\"),\n },\n async (args) => {\n const entry = await logEvent(ctx.notesPath, args);\n return ctx.textResponse(JSON.stringify(entry, null, 2));\n }\n );\n\n server.tool(\n \"log_query\",\n \"Read structured log entries filtered by kind and/or date range. Returns parsed entries from log.md.\",\n {\n kind: z.string().optional(),\n after: z.string().optional().describe(\"ISO timestamp (inclusive)\"),\n before: z.string().optional().describe(\"ISO timestamp (inclusive)\"),\n limit: z.coerce.number().optional(),\n },\n async (args) => {\n const entries = await logQuery(ctx.notesPath, args);\n return ctx.textResponse(JSON.stringify(entries, null, 2));\n }\n );\n\n if (!ctx.options.readOnly) {\n server.tool(\n \"regenerate_index\",\n \"Force regeneration of INDEX.md for one directory (or all affected by a list of paths). Idempotent — skips write if unchanged.\",\n {\n directory: z.string().optional().describe(\"Directory path relative to vault root (mutually exclusive with 'paths')\"),\n paths: z.array(z.string()).optional().describe(\"Files to infer affected directories from\"),\n },\n async ({ directory, paths }) => {\n let results;\n if (directory) {\n results = [await regenDirectoryIndex(ctx.notesPath, directory)];\n } else if (paths && paths.length > 0) {\n results = await regenIndexesForPaths(ctx.notesPath, paths);\n } else {\n return ctx.textResponse(\"Provide either `directory` or `paths`.\");\n }\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n }\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { redactedNote } from \"../../core/redact.js\";\n\nexport function registerMetadataTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"get_frontmatter\",\n \"Read parsed YAML frontmatter from a note as JSON\",\n { path: z.string() },\n async ({ path }) => {\n const fm = await ctx.frontmatterManager.get(path);\n return ctx.textResponse(JSON.stringify(fm, null, 2));\n }\n );\n\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"update_frontmatter\",\n \"Set or delete YAML frontmatter keys — pass null to delete a key\",\n { path: z.string(), fields: z.record(z.unknown()) },\n async ({ path, fields }) => {\n const { redacted } = await ctx.frontmatterManager.update(path, fields);\n return ctx.textResponse(`Frontmatter updated: ${path}${redactedNote(redacted)}`);\n }\n );\n\n server.tool(\n \"manage_tags\",\n \"Add, remove, list, or rename tags on a note (frontmatter and inline). Use action='rename' with `from` and `to` to rename a tag vault-wide; `path` is ignored in that mode.\",\n {\n path: z.string(),\n action: z.enum([\"add\", \"remove\", \"list\", \"rename\"]),\n tags: z.array(z.string()).optional(),\n from: z.string().optional().describe(\"For action='rename': the existing tag name (no leading #)\"),\n to: z.string().optional().describe(\"For action='rename': the new tag name (no leading #)\"),\n },\n async ({ path, action, tags, from, to }) => {\n switch (action) {\n case \"list\": {\n const result = await ctx.tagManager.list(path);\n return ctx.textResponse(JSON.stringify(result));\n }\n case \"add\": {\n if (!tags?.length) return ctx.textResponse(\"No tags provided\");\n await ctx.tagManager.add(path, tags);\n return ctx.textResponse(`Added tags to ${path}: ${tags.join(\", \")}`);\n }\n case \"remove\": {\n if (!tags?.length) return ctx.textResponse(\"No tags provided\");\n await ctx.tagManager.remove(path, tags);\n return ctx.textResponse(`Removed tags from ${path}: ${tags.join(\", \")}`);\n }\n case \"rename\": {\n if (!from || !to) return ctx.textResponse(\"action='rename' requires both `from` and `to`\");\n const count = await ctx.tagManager.renameVaultWide(from, to);\n return ctx.textResponse(`Renamed #${from} → #${to} in ${count} files`);\n }\n }\n }\n );\n\n server.tool(\n \"rename_tag\",\n \"[DEPRECATED — removed in v2.0.0; use manage_tags({action:'rename', from, to})] Rename a tag across all notes in the vault\",\n { oldTag: z.string(), newTag: z.string() },\n async ({ oldTag, newTag }) => {\n const count = await ctx.tagManager.renameVaultWide(oldTag, newTag);\n return ctx.textResponse(`Renamed #${oldTag} → #${newTag} in ${count} files`);\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\n\nexport function registerGraphTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"backlinks\",\n \"Find all notes that link TO a given note\",\n { path: z.string(), limit: z.coerce.number().optional().default(50) },\n async ({ path, limit }) => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const results = ctx.graph.backlinks(path).slice(0, limit);\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n\n server.tool(\n \"forwardlinks\",\n \"Find all notes linked FROM a given note\",\n { path: z.string(), limit: z.coerce.number().optional().default(50) },\n async ({ path, limit }) => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const results = ctx.graph.forwardlinks(path).slice(0, limit);\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n\n server.tool(\n \"graph_path\",\n \"Find the shortest path between two notes in the knowledge graph\",\n { from: z.string(), to: z.string() },\n async ({ from, to }) => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const path = ctx.graph.findPath(from, to);\n if (!path) return ctx.textResponse(\"No path found\");\n return ctx.textResponse(JSON.stringify(path));\n }\n );\n\n server.tool(\n \"graph_statistics\",\n \"Knowledge graph stats — most connected nodes, orphans, density\",\n {},\n async () => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const stats = ctx.graph.statistics();\n return ctx.textResponse(JSON.stringify(stats, null, 2));\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport type { ServerContext } from \"../context.js\";\nimport type { VaultStats } from \"../../core/types.js\";\n\nexport function registerSystemTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"get_stats\",\n \"Vault and index statistics — note count, chunks, embeddings, graph density\",\n {},\n async () => {\n const documents = ctx.getDocuments();\n const vectorIndex = ctx.getVectorIndex();\n const indexState = ctx.getIndexState();\n const indexProgress = ctx.getIndexProgress();\n const graphStats = documents.length > 0 ? ctx.graph.statistics() : { totalNodes: 0, totalEdges: 0 };\n const stats: VaultStats = {\n totalNotes: documents.length,\n totalChunks: documents.reduce((n, d) => n + d.chunks.length, 0),\n totalEmbeddings: vectorIndex?.getChunkMeta().length ?? 0,\n embeddingDimensions: ctx.embedder.getDimensions(),\n embeddingModel: ctx.embedder.getModel(),\n embeddingRuntime: ctx.embedder.getRuntime?.() ?? \"unknown\",\n graphNodes: graphStats.totalNodes,\n graphEdges: graphStats.totalEdges,\n indexSize: 0,\n lastIndexed: indexState === \"ready\" ? new Date().toISOString() : null,\n indexState,\n indexProgress: indexState === \"indexing\" ? indexProgress : undefined,\n };\n return ctx.textResponse(JSON.stringify(stats, null, 2));\n }\n );\n\n server.tool(\n \"reindex\",\n \"Force a full reindex of the vault\",\n {},\n async () => {\n if (ctx.isIndexingInFlight()) return ctx.textResponse(\"Reindex already in progress. \" + ctx.indexingMessage());\n await ctx.fullIndex();\n const documents = ctx.getDocuments();\n return ctx.textResponse(\n `Reindexed: ${documents.length} notes, ${documents.reduce((n, d) => n + d.chunks.length, 0)} chunks`\n );\n }\n );\n}\n","/**\n * Canonical inventory of MCP tools shipped by semantic-memory.\n *\n * This is the source of truth for tool naming, description, and deprecation\n * status. The AGENTS.md generator reads this list to render the Tool Surface\n * section. Phase 8 healthcheck cross-references this against the live MCP\n * server registration to detect drift.\n *\n * When you add or remove a tool registration in src/mcp/tools/*.ts, update\n * this list in the same commit. CI/Phase 8 will catch the drift.\n */\n\nexport interface ToolInventoryEntry {\n name: string;\n description: string;\n deprecated?: boolean;\n group: \"search\" | \"read\" | \"write\" | \"patch\" | \"lint\" | \"log\" | \"metadata\" | \"graph\" | \"system\" | \"contract\" | \"session\";\n}\n\nexport const CURRENT_TOOL_INVENTORY: readonly ToolInventoryEntry[] = [\n // search\n { name: \"search_semantic\", description: \"Vector similarity search — find notes similar to a query by meaning.\", group: \"search\" },\n { name: \"search_text\", description: \"Full-text keyword or regex search across all notes with optional filters.\", group: \"search\" },\n { name: \"search_graph\", description: \"Graph traversal — find notes connected to a concept via wikilinks, related_docs, and tags.\", group: \"search\" },\n { name: \"search_hybrid\", description: \"Combined semantic + graph search — vector results re-ranked by graph proximity and load_priority.\", group: \"search\" },\n // read\n { name: \"read_note\", description: \"Read the full content of a specific note by path.\", group: \"read\" },\n { name: \"read_multiple_notes\", description: \"Batch read multiple notes in one call.\", group: \"read\", deprecated: true },\n { name: \"list_notes\", description: \"List all indexed notes with metadata.\", group: \"read\" },\n // write (CRUD)\n { name: \"create_note\", description: \"Create a new markdown note.\", group: \"write\" },\n { name: \"update_note\", description: \"Edit note content — overwrite, append, prepend, or patch by heading.\", group: \"write\" },\n { name: \"delete_note\", description: \"Delete a note permanently.\", group: \"write\" },\n { name: \"move_note\", description: \"Move or rename a note — updates wikilinks across the vault.\", group: \"write\" },\n // patch / synthesis\n { name: \"apply_patch\", description: \"Atomic multi-note patch with rollback.\", group: \"patch\" },\n { name: \"synthesize_note\", description: \"Turn a researched answer + sources into a new filed note with provenance frontmatter. Pass proposal:true for review-first workflows.\", group: \"patch\" },\n { name: \"synthesize_promote\", description: \"Move a reviewed proposal note to its canonical destination, stripping proposal markers.\", group: \"patch\" },\n { name: \"ingest_source\", description: \"Build + apply a ChangeSet that ingests a source and the notes extracted from it.\", group: \"patch\" },\n { name: \"install_schema\", description: \"Bootstrap vault.schema.yml in the vault root with the default schema.\", group: \"patch\" },\n { name: \"verify_note\", description: \"Stamp last_verified to today (content unchanged) to reset the confidence-decay clock; logs a verify event.\", group: \"patch\" },\n { name: \"manage_lexicon\", description: \"Manage the learned human→artifact lexicon (add/lookup/list/remove/compile aliases).\", group: \"patch\" },\n { name: \"manage_dossier\", description: \"Manage entity dossiers — per-component living notes (init/append_incident/set_state/get/list). Knowledge accretes in place.\", group: \"patch\" },\n { name: \"manage_profile\", description: \"Manage the speaker profile — how this human communicates (init/get/update_section).\", group: \"patch\" },\n // lint\n { name: \"find_schema_violations\", description: \"Scan for schema violations.\", group: \"lint\", deprecated: true },\n { name: \"find_missing_provenance\", description: \"Scan for notes lacking sources/derived_from.\", group: \"lint\", deprecated: true },\n { name: \"find_stale\", description: \"Scan for notes whose last_verified is older than the threshold.\", group: \"lint\", deprecated: true },\n { name: \"find_broken_links\", description: \"Scan for [[wikilinks]] pointing to non-existent notes.\", group: \"lint\", deprecated: true },\n { name: \"lint_vault\", description: \"Run lint rules across the vault. Pass `checks` to filter to specific rules.\", group: \"lint\" },\n // log\n { name: \"log_event\", description: \"Append a structured event to the vault's log.md.\", group: \"log\" },\n { name: \"log_query\", description: \"Read structured log entries filtered by kind and/or date range.\", group: \"log\" },\n { name: \"regenerate_index\", description: \"Force regeneration of INDEX.md for one or more directories.\", group: \"log\" },\n // metadata\n { name: \"get_frontmatter\", description: \"Read parsed YAML frontmatter from a note as JSON.\", group: \"metadata\" },\n { name: \"update_frontmatter\", description: \"Set or delete YAML frontmatter keys.\", group: \"metadata\" },\n { name: \"manage_tags\", description: \"Add, remove, list, or rename tags on a note.\", group: \"metadata\" },\n { name: \"rename_tag\", description: \"Rename a tag across all notes.\", group: \"metadata\", deprecated: true },\n // graph\n { name: \"backlinks\", description: \"Find all notes that link TO a given note.\", group: \"graph\" },\n { name: \"forwardlinks\", description: \"Find all notes linked FROM a given note.\", group: \"graph\" },\n { name: \"graph_path\", description: \"Find the shortest path between two notes in the knowledge graph.\", group: \"graph\" },\n { name: \"graph_statistics\", description: \"Knowledge graph stats — most connected nodes, orphans, density.\", group: \"graph\" },\n // system\n { name: \"get_stats\", description: \"Vault and index statistics.\", group: \"system\" },\n { name: \"reindex\", description: \"Force a full reindex of the vault.\", group: \"system\" },\n // contract (Phase 3)\n { name: \"regenerate_contract\", description: \"Generate or refresh AGENTS.md at the project root with a managed-block contract.\", group: \"contract\" },\n { name: \"inspect_contract\", description: \"Read-only inspection of AGENTS.md state.\", group: \"contract\" },\n // session (Phase 5)\n { name: \"session_start\", description: \"Open a verification-gated session for a multi-step task.\", group: \"session\" },\n { name: \"session_run\", description: \"Run a verification command inside the active session, capture exit and tail.\", group: \"session\" },\n { name: \"session_finish\", description: \"Close the active session — hard-gated on verifications unless explicitly waived.\", group: \"session\" },\n { name: \"session_status\", description: \"Read-only inspection of the active session.\", group: \"session\" },\n];\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport {\n regenerateAgentsContract,\n inspectAgentsContract,\n type ToolSummary,\n type ModeSummary,\n} from \"../../core/agents-contract.js\";\nimport { CURRENT_TOOL_INVENTORY } from \"./inventory.js\";\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, join } from \"node:path\";\nimport { existsSync, readFileSync } from \"node:fs\";\n\n// Read the real package version dynamically so the contract stamp tracks releases.\n// (Was hardcoded \"1.1.0\" through v1.3, which froze the AGENTS.md version — the same\n// class of bug as the frozen plugin.json fixed in 1.2.2.)\n//\n// Walks up from this module's runtime location to find the package's OWN\n// package.json (matched by name, so a dependency's package.json can't shadow it).\n// Robust to tsup bundling/splitting, where the emitted file may live at dist/ or\n// dist/mcp/ or a hoisted chunk — a fixed relative depth would not be.\nfunction pluginVersion(): string {\n try {\n let dir = dirname(fileURLToPath(import.meta.url));\n for (let i = 0; i < 6; i++) {\n const pkgPath = join(dir, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf8\")) as { name?: string; version?: string };\n if (pkg?.name === \"@theglitchking/semantic-memory\" && typeof pkg.version === \"string\") {\n return pkg.version;\n }\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return \"0.0.0\";\n } catch {\n return \"0.0.0\";\n }\n}\n\nexport function registerContractTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"regenerate_contract\",\n \"Generate or refresh AGENTS.md at the project root with a managed-block contract. Preserves the 'Local Notes' tail across regenerations. Refuses to overwrite hand-edits inside the managed block unless force=true. Returns the path written and whether hand-edits were detected.\",\n {\n projectRoot: z.string().optional().describe(\"Override the project root path. Defaults to the parent of the vault directory if not provided.\"),\n force: z.boolean().optional().default(false).describe(\"Overwrite hand-edited managed-block content.\"),\n },\n async ({ projectRoot, force }) => {\n const root = projectRoot ?? defaultProjectRoot(ctx.notesPath);\n const tools: ToolSummary[] = CURRENT_TOOL_INVENTORY.map((t) => ({\n name: t.name,\n description: t.description,\n deprecated: t.deprecated,\n }));\n const modes: ModeSummary[] = [\n { name: \"vault-first\", description: \"Project-scoped prose questions trigger vault consultation with cite-or-deflect.\", isDefault: true },\n { name: \"research\", description: \"Every source introduced is filed via ingest_source; mandatory synthesize_note on exit.\" },\n { name: \"outage-silence\", description: \"No proactive vault search. Terse responses. Postmortem synthesize_note on exit.\" },\n ];\n const result = await regenerateAgentsContract({\n projectRoot: root,\n pluginVersion: pluginVersion(),\n tools,\n modes,\n force,\n });\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"inspect_contract\",\n \"Read-only inspection of AGENTS.md state — whether it exists, whether the managed-block markers are present, and how much Local Notes content is preserved.\",\n {\n projectRoot: z.string().optional().describe(\"Override the project root path. Defaults to the parent of the vault directory if not provided.\"),\n },\n async ({ projectRoot }) => {\n const root = projectRoot ?? defaultProjectRoot(ctx.notesPath);\n const result = await inspectAgentsContract(root);\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n}\n\nfunction defaultProjectRoot(notesPath: string): string {\n // Heuristic: if notesPath points at .claude/.vault, the project root is two levels up.\n // Otherwise, treat notesPath itself as the project root.\n if (notesPath.endsWith(\"/.claude/.vault\") || notesPath.endsWith(\"\\\\.claude\\\\.vault\")) {\n return notesPath.slice(0, -\".claude/.vault\".length);\n }\n return notesPath;\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { logEvent } from \"../../core/log.js\";\n\nexport function registerSessionTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"session_start\",\n \"Open a verification-gated session for a multi-step task. State persists at .claude/.semantic-memory/session.json. Refuses if a session is already open with a different task. Calling with the same task as an open session returns the existing id (idempotent).\",\n {\n task: z.string().describe(\"Short description of the task being worked on. Recorded in session state and surfaced at session_finish.\"),\n },\n async ({ task }) => {\n const result = await ctx.sessions.start(task);\n if (result.ok) {\n await logEvent(ctx.notesPath, {\n kind: \"session\",\n summary: result.reused ? `resumed session ${result.id}` : `started session ${result.id}`,\n payload: { tool: \"session_start\", id: result.id, task, reused: !!result.reused },\n }).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"session_run\",\n \"Run a verification command inside the active session. Captures exit code, signal, duration, and a tail of stdout+stderr. Refused when no session is open. Default timeout: 5 minutes.\",\n {\n cmd: z.string().describe(\"Shell command to run, e.g. 'npm test' or 'go test ./...'.\"),\n timeout_ms: z.coerce.number().int().positive().optional().describe(\"Override the default 5-minute timeout (in milliseconds).\"),\n },\n async ({ cmd, timeout_ms }) => {\n const result = await ctx.sessions.run(cmd, timeout_ms);\n if (result.ok) {\n await logEvent(ctx.notesPath, {\n kind: \"session\",\n summary: `ran ${cmd} → exit=${result.record.exit ?? \"(killed)\"}`,\n payload: {\n tool: \"session_run\",\n cmd,\n exit: result.record.exit,\n signal: result.record.signal,\n duration_ms: result.record.duration_ms,\n },\n }).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"session_finish\",\n \"Close the active session. HARD GATED: refused without recorded verifications unless verified=false is passed with a `reason` waiving verification (e.g. for prose-only edits). Deletes session state on success.\",\n {\n summary: z.string().describe(\"One-line description of what was accomplished. Appears in the closeout log entry.\"),\n verified: z.boolean().optional().default(true).describe(\"Pass false to explicitly waive verification (requires `reason`).\"),\n reason: z.string().optional().describe(\"Required when verified=false. Why verification is not applicable to this task.\"),\n },\n async ({ summary, verified, reason }) => {\n const result = await ctx.sessions.finish({ summary, verified, reason });\n if (result.ok) {\n await logEvent(ctx.notesPath, {\n kind: \"session\",\n summary: `finished session ${result.closed.id}: ${summary}`,\n payload: {\n tool: \"session_finish\",\n id: result.closed.id,\n task: result.closed.task,\n verifications: result.closed.verifications.length,\n verified_waived: !!result.closed.closed_verified_waived,\n ...(result.closed.closed_verified_waived && { waiver_reason: result.closed.closed_waiver_reason }),\n },\n }).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"session_status\",\n \"Read-only inspection of the active session — task, verifications, notes_touched, and a state label (active | stale | no_session). 'stale' indicates last_activity_at >24h ago.\",\n {},\n async () => {\n const result = await ctx.sessions.status();\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { deriveProjectRoot } from \"./session.js\";\n\n/**\n * Token-frugal tool surface (v1.4 Phase 7).\n *\n * When `tools.conditional` is enabled in vault.schema.yml, the server registers a\n * reduced tool set in modes that don't need the whole surface (outage-silence\n * wants search/read only, not the full ~42). Ships DEFAULT OFF (KQ9): mid-session\n * mode switches don't re-register, so this must be opted into and dogfooded before\n * it can default on. Default (disabled) → the full surface, unchanged.\n */\nexport interface ToolsConfig {\n conditional: boolean;\n}\n\nexport function loadToolsConfig(vaultPath: string): ToolsConfig {\n try {\n const schemaPath = join(vaultPath, \"vault.schema.yml\");\n if (!existsSync(schemaPath)) return { conditional: false };\n const parsed = parseYaml(readFileSync(schemaPath, \"utf-8\")) as { tools?: { conditional?: boolean } } | null;\n return { conditional: parsed?.tools?.conditional === true };\n } catch {\n return { conditional: false };\n }\n}\n\n/** Read the active mode from the state file (new path, then legacy). Default vault-first. */\nexport function readActiveMode(vaultPath: string): string {\n const root = deriveProjectRoot(vaultPath);\n const candidates = [\n join(root, \".claude\", \".semantic-memory\", \"mode\"),\n join(root, \".claude\", \".sidekick-mode\"),\n ];\n for (const p of candidates) {\n try {\n if (existsSync(p)) {\n const v = readFileSync(p, \"utf-8\").trim();\n if (v) return v;\n }\n } catch {\n /* fall through */\n }\n }\n return \"vault-first\";\n}\n\n/**\n * Decide whether to register only the minimal read/search surface. True only when\n * conditional registration is enabled AND the active mode is outage-silence.\n */\nexport function useMinimalToolSurface(vaultPath: string): boolean {\n const cfg = loadToolsConfig(vaultPath);\n if (!cfg.conditional) return false;\n return readActiveMode(vaultPath) === \"outage-silence\";\n}\n"],"mappings":"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","names":["join","existsSync","existsSync","readFileSync","join","parseYaml","join","existsSync","parseYaml","readFileSync","join","existsSync","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","readFile","join","join","existsSync","readFileSync","existsSync","readFileSync","join","parseYaml","join","existsSync","parseYaml","readFileSync"]}
|
|
1
|
+
{"version":3,"sources":["../../src/mcp/server.ts","../../src/mcp/context.ts","../../src/core/path-class.ts","../../src/core/usage-boost.ts","../../node_modules/zod/v3/external.js","../../node_modules/zod/v3/helpers/util.js","../../node_modules/zod/v3/ZodError.js","../../node_modules/zod/v3/locales/en.js","../../node_modules/zod/v3/errors.js","../../node_modules/zod/v3/helpers/parseUtil.js","../../node_modules/zod/v3/helpers/errorUtil.js","../../node_modules/zod/v3/types.js","../../src/mcp/tools/search.ts","../../src/mcp/tools/read.ts","../../src/mcp/tools/write.ts","../../src/mcp/tools/patch.ts","../../src/mcp/tools/lint.ts","../../src/mcp/tools/log.ts","../../src/mcp/tools/metadata.ts","../../src/mcp/tools/graph.ts","../../src/mcp/tools/system.ts","../../src/mcp/tools/inventory.ts","../../src/mcp/tools/contract.ts","../../src/mcp/tools/session.ts","../../src/core/tools-config.ts"],"sourcesContent":["import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StdioServerTransport } from \"@modelcontextprotocol/sdk/server/stdio.js\";\nimport { Watcher } from \"../core/watcher.js\";\nimport { buildContext, type ServerOptions } from \"./context.js\";\nimport { registerSearchTools } from \"./tools/search.js\";\nimport { registerReadTools } from \"./tools/read.js\";\nimport { registerWriteTools } from \"./tools/write.js\";\nimport { registerPatchTools } from \"./tools/patch.js\";\nimport { registerLintTools } from \"./tools/lint.js\";\nimport { registerLogTools } from \"./tools/log.js\";\nimport { registerMetadataTools } from \"./tools/metadata.js\";\nimport { registerGraphTools } from \"./tools/graph.js\";\nimport { registerSystemTools } from \"./tools/system.js\";\nimport { registerContractTools } from \"./tools/contract.js\";\nimport { registerSessionTools } from \"./tools/session.js\";\nimport { useMinimalToolSurface } from \"../core/tools-config.js\";\n\nexport type { ServerOptions } from \"./context.js\";\n\nexport async function createServer(notesPath: string, options: ServerOptions = {}) {\n const ctx = await buildContext(notesPath, options);\n\n const server = new McpServer({\n name: \"semantic-memory\",\n version: \"1.0.0\",\n });\n\n // Conditional tool registration (v1.4 Phase 7, DEFAULT OFF). When enabled via\n // tools.conditional AND the active mode is outage-silence, register only the\n // core read/search surface. Default → full surface (unchanged).\n const minimal = useMinimalToolSurface(notesPath);\n\n registerSearchTools(server, ctx);\n registerReadTools(server, ctx);\n registerSystemTools(server, ctx);\n if (!minimal) {\n registerWriteTools(server, ctx);\n registerPatchTools(server, ctx);\n registerLintTools(server, ctx);\n registerLogTools(server, ctx);\n registerMetadataTools(server, ctx);\n registerGraphTools(server, ctx);\n registerContractTools(server, ctx);\n registerSessionTools(server, ctx);\n }\n\n if (options.waitForReady) {\n await ctx.tryLoadCachedIndex();\n await ctx.fullIndex();\n } else {\n ctx.tryLoadCachedIndex()\n .then((cached) => {\n // a stale cache (chunk count drifted from the notes on disk) is served while it rebuilds\n if (!cached || ctx.getIndexState() === \"stale\") ctx.backgroundIndex();\n })\n .catch((err) => {\n process.stderr.write(`Startup error: ${err?.message ?? err}\\n`);\n ctx.backgroundIndex();\n });\n }\n\n if (options.watch !== false) {\n const watcher = new Watcher(notesPath);\n watcher.on(\"changed\", () => {\n ctx.backgroundIndex();\n });\n watcher.start();\n }\n\n return server;\n}\n\nexport async function startServer(notesPath: string, options: ServerOptions = {}) {\n const server = await createServer(notesPath, options);\n const transport = new StdioServerTransport();\n\n // Exit when the parent process closes its end of the stdio pipe.\n //\n // This covers every \"parent death\" scenario: SIGKILL to Claude Code, OOM-kill,\n // session end, terminal close, remote-MCP network drop. When the parent dies\n // its end of the pipe is closed by the kernel, and the child receives EOF on\n // process.stdin (emits 'end' then 'close').\n //\n // Without these handlers the chokidar FSWatcher (inotify fd) and the ONNX\n // InferenceSession native thread-pool keep the Node.js event loop alive\n // indefinitely — producing one orphan process (~180–200 MB RSS each) per Claude\n // session. On low-memory boxes this accumulates until RAM + swap are exhausted\n // and the host freezes.\n //\n // StdioServerTransport (MCP SDK v1.29.0) only listens for 'data' and 'error'\n // on stdin; it does not call process.exit() on EOF. The McpServer class also\n // does not exit the process on transport close — both are correct library\n // behaviour. It is the application's responsibility to exit, and this is it.\n process.stdin.once(\"end\", () => process.exit(0));\n process.stdin.once(\"close\", () => process.exit(0));\n\n // Honor explicit termination signals sent by process managers or the kernel.\n // SIGTERM: sent by systemd, launchd, Docker, or `kill <pid>`.\n // SIGHUP: sent when the controlling terminal closes (e.g. SSH disconnect).\n // SIGINT (Ctrl-C) is already handled by Node.js default behaviour.\n process.once(\"SIGTERM\", () => process.exit(0));\n process.once(\"SIGHUP\", () => process.exit(0));\n\n await server.connect(transport);\n}\n","import { mkdir, readFile, writeFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport { existsSync } from \"node:fs\";\nimport { Indexer } from \"../core/indexer.js\";\nimport { Embedder } from \"../core/embedder.js\";\nimport { GraphBuilder } from \"../core/graph.js\";\nimport { VectorIndex } from \"../core/vector.js\";\nimport { TextSearch } from \"../core/search-text.js\";\nimport { NoteCrud } from \"../core/crud.js\";\nimport { FrontmatterManager, TagManager } from \"../core/frontmatter.js\";\nimport { SessionManager, deriveSessionDir } from \"../core/session.js\";\nimport { computeDecay, loadDecayConfig, normalizeVerifiedDate, type DecayConfig } from \"../core/decay.js\";\nimport { pathClassMultiplier, loadPathClassConfig, type PathClassConfig } from \"../core/path-class.js\";\nimport { computeUsageBoost, loadUsageBoostConfig, loadCitationCounts, type UsageBoostConfig } from \"../core/usage-boost.js\";\nimport type { IndexedDocument, IndexState } from \"../core/types.js\";\n\nexport interface ServerOptions {\n watch?: boolean;\n waitForReady?: boolean;\n model?: string;\n workers?: number;\n batchSize?: number;\n quantized?: boolean;\n readOnly?: boolean;\n onProgress?: (embedded: number, total: number) => void;\n}\n\nexport interface DecayBlock {\n multiplier: number;\n age_days: number;\n effective_half_life: number;\n reason: string;\n}\n\nexport interface UsageBlock {\n citations: number;\n multiplier: number;\n}\n\nexport interface EnrichedResult {\n mtime?: string;\n loadPriority?: number;\n status?: string;\n tier?: string;\n domains?: string[];\n decay?: DecayBlock;\n usage?: UsageBlock;\n}\n\nexport interface ServerContext {\n notesPath: string;\n indexPath: string;\n options: ServerOptions;\n\n indexer: Indexer;\n embedder: Embedder;\n graph: GraphBuilder;\n textSearch: TextSearch;\n crud: NoteCrud;\n frontmatterManager: FrontmatterManager;\n tagManager: TagManager;\n sessions: SessionManager;\n\n getDocuments(): IndexedDocument[];\n getDocByPath(): Map<string, IndexedDocument>;\n getVectorIndex(): VectorIndex | null;\n getIndexState(): IndexState;\n getIndexProgress(): { embedded: number; total: number };\n\n tryLoadCachedIndex(): Promise<boolean>;\n fullIndex(): Promise<void>;\n backgroundIndex(): void;\n isIndexingInFlight(): boolean;\n\n textResponse(text: string): { content: { type: \"text\"; text: string }[] };\n indexingMessage(): string;\n enrichResult<T extends { path: string }>(r: T): T & EnrichedResult;\n applyPriorityBoost(score: number, path: string): number;\n /**\n * Apply confidence decay to a scored result: multiply its score by the decay\n * multiplier and, when the note is actually decayed (multiplier < 1), attach a\n * `decay` block for the agent to see. No-op when decay is disabled or the note\n * is fresh. Semantic ranking signal only — callers wire it into\n * search_semantic / search_hybrid, never search_text / search_graph.\n */\n applyDecay<T extends { path: string; score: number }>(r: T): T & { decay?: DecayBlock };\n /**\n * Apply the path-class multiplier (e.g. archive/** down-weight) to a scored\n * result. Composes multiplicatively with decay/priority at the same rank site.\n * No-op when disabled or no glob matches.\n */\n applyPathClass<T extends { path: string; score: number }>(r: T): T;\n /**\n * Apply the usage-feedback boost (v1.5): notes cited repeatedly (per the\n * selection log) earn a bounded rank boost (≤ cap), attaching a `usage` block\n * when boosted. Composes multiplicatively at the same rank site as decay/\n * path-class/priority. No-op when disabled or the note has no citations. Call\n * `refreshUsageBoost()` once before a batch so the citation snapshot is current.\n */\n applyUsageBoost<T extends { path: string; score: number }>(r: T): T & { usage?: UsageBlock };\n /** Refresh the cached citation snapshot from the selection log (TTL-guarded). */\n refreshUsageBoost(): Promise<void>;\n applyDateFilter<T extends { path: string }>(\n results: T[],\n modifiedAfter?: string,\n modifiedBefore?: string\n ): T[];\n}\n\nexport async function buildContext(notesPath: string, options: ServerOptions = {}): Promise<ServerContext> {\n const indexPath = join(notesPath, \".semantic-sidekick-index\");\n await mkdir(indexPath, { recursive: true });\n\n const indexer = new Indexer(notesPath);\n const embedder = new Embedder(options.model, options.workers, options.batchSize, options.quantized);\n const graph = new GraphBuilder();\n const textSearch = new TextSearch();\n const crud = new NoteCrud(notesPath);\n const frontmatterManager = new FrontmatterManager(notesPath);\n const tagManager = new TagManager(notesPath);\n const sessions = new SessionManager(deriveSessionDir(notesPath));\n\n let documents: IndexedDocument[] = [];\n let docByPath = new Map<string, IndexedDocument>();\n let vectorIndex: VectorIndex | null = null;\n let indexState: IndexState = \"empty\";\n let indexProgress = { embedded: 0, total: 0 };\n let indexingPromise: Promise<void> | null = null;\n\n async function tryLoadCachedIndex(): Promise<boolean> {\n try {\n indexState = \"loading\";\n await embedder.init();\n\n const metaPath = join(indexPath, \"meta.json\");\n let meta: { model?: string; totalChunks?: number; dimensions?: number; indexedAt?: string } | null = null;\n if (existsSync(metaPath)) {\n try {\n meta = JSON.parse(await readFile(metaPath, \"utf-8\"));\n if (meta?.model && meta.model !== embedder.getModel()) {\n process.stderr.write(`Model changed (${meta.model} → ${embedder.getModel()}), forcing reindex\\n`);\n return false;\n }\n } catch {\n meta = null;\n }\n }\n\n const tempVector = new VectorIndex(embedder.getDimensions());\n const vectorLoaded = await tempVector.load(indexPath);\n if (!vectorLoaded) return false;\n\n const savedEmbeddings = await embedder.loadEmbeddings(indexPath);\n if (savedEmbeddings.size === 0) return false;\n\n const graphLoaded = await graph.load(indexPath);\n if (!graphLoaded) return false;\n\n documents = await indexer.indexAll();\n docByPath = new Map(documents.map((d) => [d.path, d]));\n textSearch.setDocuments(documents);\n\n vectorIndex = tempVector;\n\n const currentChunks = documents.reduce((n, d) => n + d.chunks.length, 0);\n const fresh = meta?.totalChunks !== undefined && meta.totalChunks === currentChunks;\n indexState = fresh ? \"ready\" : \"stale\";\n return true;\n } catch {\n return false;\n }\n }\n\n async function fullIndex() {\n indexState = \"indexing\";\n indexProgress = { embedded: 0, total: 0 };\n\n await embedder.init();\n const newDocs = await indexer.indexAll();\n\n const totalChunks = newDocs.reduce((n, d) => n + d.chunks.length, 0);\n indexProgress = { embedded: 0, total: totalChunks };\n\n const newTextSearch = new TextSearch();\n newTextSearch.setDocuments(newDocs);\n\n const newGraph = new GraphBuilder();\n newGraph.buildFromDocuments(newDocs);\n\n const savedEmbeddings = await embedder.loadEmbeddings(indexPath);\n\n const SAVE_INTERVAL = 100;\n const allChunks: { embedding: Float32Array; docPath: string; chunkIndex: number; text: string }[] = [];\n const cumulativeEmbeddings = new Map<string, Float32Array>(savedEmbeddings);\n\n type PendingChunk = { text: string; docPath: string; chunkIndex: number };\n const pendingChunks: PendingChunk[] = [];\n\n for (const doc of newDocs) {\n for (let i = 0; i < doc.chunks.length; i++) {\n const key = `${doc.path}:${i}`;\n const existing = cumulativeEmbeddings.get(key);\n if (existing) {\n allChunks.push({ embedding: existing, docPath: doc.path, chunkIndex: i, text: doc.chunks[i] });\n } else {\n pendingChunks.push({ text: doc.chunks[i], docPath: doc.path, chunkIndex: i });\n }\n }\n }\n\n indexProgress = { embedded: allChunks.length, total: totalChunks };\n\n if (pendingChunks.length > 0) {\n let chunksSinceLastSave = 0;\n const alreadyEmbedded = allChunks.length;\n\n await embedder.embedBatch(\n pendingChunks.map((c) => c.text),\n async (done, _total, embeddings) => {\n if (!embeddings) return;\n const batchStart = done - embeddings.length;\n for (let i = 0; i < embeddings.length; i++) {\n const { docPath, chunkIndex, text } = pendingChunks[batchStart + i];\n const key = `${docPath}:${chunkIndex}`;\n cumulativeEmbeddings.set(key, embeddings[i]);\n allChunks.push({ embedding: embeddings[i], docPath, chunkIndex, text });\n chunksSinceLastSave++;\n }\n\n const current = alreadyEmbedded + done;\n indexProgress = { embedded: current, total: totalChunks };\n options.onProgress?.(current, totalChunks);\n\n if (chunksSinceLastSave >= SAVE_INTERVAL) {\n await embedder.saveEmbeddings(cumulativeEmbeddings, indexPath);\n chunksSinceLastSave = 0;\n }\n }\n );\n }\n\n const newVector = new VectorIndex(embedder.getDimensions());\n newVector.build(\n allChunks.map((c) => c.embedding),\n allChunks.map((c) => ({ docPath: c.docPath, chunkIndex: c.chunkIndex, text: c.text }))\n );\n\n documents = newDocs;\n docByPath = new Map(documents.map((d) => [d.path, d]));\n textSearch.setDocuments(newDocs);\n graph.buildFromDocuments(newDocs);\n vectorIndex = newVector;\n indexState = \"ready\";\n\n await Promise.all([\n graph.save(indexPath),\n newVector.save(indexPath),\n embedder.saveEmbeddings(cumulativeEmbeddings, indexPath),\n indexer.saveDocsCache(indexPath, newDocs),\n writeFile(join(indexPath, \"meta.json\"), JSON.stringify({\n model: embedder.getModel(),\n dimensions: embedder.getDimensions(),\n totalChunks: allChunks.length,\n indexedAt: new Date().toISOString(),\n })),\n ]);\n }\n\n function backgroundIndex() {\n if (indexingPromise) return;\n indexingPromise = fullIndex()\n .catch((err) => {\n process.stderr.write(`Index error: ${err?.message ?? err}\\n`);\n if (indexState === \"indexing\") indexState = documents.length > 0 ? \"stale\" : \"empty\";\n })\n .finally(() => {\n indexingPromise = null;\n });\n }\n\n function textResponse(text: string) {\n return { content: [{ type: \"text\" as const, text }] };\n }\n\n function indexingMessage(): string {\n if (indexProgress.total > 0) {\n return `Indexing in progress (${indexProgress.embedded}/${indexProgress.total} chunks)... Try again shortly.`;\n }\n return \"Indexing in progress... Try again shortly.\";\n }\n\n function enrichResult<T extends { path: string }>(result: T): T & EnrichedResult {\n const doc = docByPath.get(result.path);\n if (!doc) return result;\n return {\n ...result,\n mtime: doc.mtime,\n ...(doc.loadPriority !== undefined && { loadPriority: doc.loadPriority }),\n ...(doc.status !== undefined && { status: doc.status }),\n ...(doc.tier !== undefined && { tier: doc.tier }),\n ...(doc.domains !== undefined && { domains: doc.domains }),\n };\n }\n\n function applyPriorityBoost(score: number, path: string): number {\n const doc = docByPath.get(path);\n if (doc?.loadPriority === undefined) return score;\n return score * (1 + (doc.loadPriority - 5) * 0.04);\n }\n\n // Decay config is read once from vault.schema.yml and cached for the process.\n let decayConfig: DecayConfig | null = null;\n function getDecayConfig(): DecayConfig {\n if (!decayConfig) decayConfig = loadDecayConfig(notesPath);\n return decayConfig;\n }\n\n function applyDecay<T extends { path: string; score: number }>(r: T): T & { decay?: DecayBlock } {\n const cfg = getDecayConfig();\n if (!cfg.enabled) return r;\n const doc = docByPath.get(r.path);\n if (!doc) return r;\n const fm = doc.frontmatter ?? {};\n const d = computeDecay({\n type: typeof fm.type === \"string\" ? fm.type : undefined,\n last_verified: normalizeVerifiedDate(fm.last_verified),\n evergreen: fm.evergreen === true,\n config: cfg,\n });\n const scored = { ...r, score: r.score * d.multiplier };\n // Only surface the decay block when the note is actually down-weighted —\n // don't clutter healthy results.\n if (d.multiplier < 1) {\n return {\n ...scored,\n decay: {\n multiplier: Math.round(d.multiplier * 1000) / 1000,\n age_days: Math.round(d.age_days),\n effective_half_life: d.effective_half_life,\n reason: d.reason,\n },\n };\n }\n return scored;\n }\n\n let pathClassConfig: PathClassConfig | null = null;\n function getPathClassConfig(): PathClassConfig {\n if (!pathClassConfig) pathClassConfig = loadPathClassConfig(notesPath);\n return pathClassConfig;\n }\n\n function applyPathClass<T extends { path: string; score: number }>(r: T): T {\n const m = pathClassMultiplier(r.path, getPathClassConfig());\n return m === 1 ? r : { ...r, score: r.score * m };\n }\n\n // Usage-feedback boost (v1.5). Config is process-cached; the citation snapshot\n // is refreshed from the selection log on a short TTL so within-session citations\n // eventually take effect without re-reading the log on every scored result.\n let usageBoostConfig: UsageBoostConfig | null = null;\n function getUsageBoostConfig(): UsageBoostConfig {\n if (!usageBoostConfig) usageBoostConfig = loadUsageBoostConfig(notesPath);\n return usageBoostConfig;\n }\n let citationCounts: Record<string, number> = {};\n let citationLoadedAtMs = 0;\n const CITATION_TTL_MS = 15_000;\n\n async function refreshUsageBoost(): Promise<void> {\n if (!getUsageBoostConfig().enabled) return;\n const now = Date.now();\n if (now - citationLoadedAtMs < CITATION_TTL_MS && citationLoadedAtMs > 0) return;\n try {\n citationCounts = await loadCitationCounts(notesPath);\n citationLoadedAtMs = now;\n } catch {\n /* keep the previous snapshot on error */\n }\n }\n\n function applyUsageBoost<T extends { path: string; score: number }>(r: T): T & { usage?: UsageBlock } {\n const cfg = getUsageBoostConfig();\n if (!cfg.enabled) return r;\n const citations = citationCounts[r.path] ?? 0;\n const m = computeUsageBoost(citations, cfg);\n if (m === 1) return r;\n return { ...r, score: r.score * m, usage: { citations, multiplier: Math.round(m * 1000) / 1000 } };\n }\n\n function applyDateFilter<T extends { path: string }>(\n results: T[],\n modifiedAfter?: string,\n modifiedBefore?: string\n ): T[] {\n if (!modifiedAfter && !modifiedBefore) return results;\n const after = modifiedAfter ? new Date(modifiedAfter).getTime() : -Infinity;\n const before = modifiedBefore ? new Date(modifiedBefore).getTime() : Infinity;\n return results.filter((r) => {\n const doc = docByPath.get(r.path);\n if (!doc) return true;\n const t = new Date(doc.mtime).getTime();\n return t >= after && t <= before;\n });\n }\n\n return {\n notesPath,\n indexPath,\n options,\n indexer,\n embedder,\n graph,\n textSearch,\n crud,\n frontmatterManager,\n tagManager,\n sessions,\n getDocuments: () => documents,\n getDocByPath: () => docByPath,\n getVectorIndex: () => vectorIndex,\n getIndexState: () => indexState,\n getIndexProgress: () => indexProgress,\n tryLoadCachedIndex,\n fullIndex,\n backgroundIndex,\n isIndexingInFlight: () => indexingPromise !== null,\n textResponse,\n indexingMessage,\n enrichResult,\n applyPriorityBoost,\n applyDecay,\n applyPathClass,\n applyUsageBoost,\n refreshUsageBoost,\n applyDateFilter,\n };\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { minimatch } from \"minimatch\";\n\n/**\n * Path-class ranking multiplier (v1.4 Phase 2).\n *\n * Down-weights whole regions of the vault by path glob — the direct fix for the\n * observed failure where `archive/` and `archive/pre-restructure/` copies of a\n * retired doc dominated the top hits. Composes multiplicatively with decay and\n * load_priority at the same `context.ts` rank site; it never removes notes, only\n * ranks them lower. First matching rule wins.\n */\n\nexport interface PathClassRule {\n glob: string;\n multiplier: number;\n}\n\nexport interface PathClassConfig {\n enabled: boolean;\n rules: PathClassRule[];\n}\n\nexport const DEFAULT_PATH_CLASS_CONFIG: PathClassConfig = {\n enabled: true,\n rules: [{ glob: \"archive/**\", multiplier: 0.3 }],\n};\n\n/** The multiplier for a note path — first matching rule, else 1.0 (no effect). */\nexport function pathClassMultiplier(path: string, config: PathClassConfig): number {\n if (!config.enabled) return 1;\n for (const rule of config.rules) {\n if (typeof rule.multiplier !== \"number\") continue;\n if (minimatch(path, rule.glob)) return rule.multiplier;\n }\n return 1;\n}\n\n/**\n * Load `path_class` from vault.schema.yml, merged over the default. Missing file /\n * block / parse error → default. Synchronous + memoization-friendly.\n */\nexport function loadPathClassConfig(vaultPath: string): PathClassConfig {\n try {\n const schemaPath = join(vaultPath, \"vault.schema.yml\");\n if (!existsSync(schemaPath)) return DEFAULT_PATH_CLASS_CONFIG;\n const parsed = parseYaml(readFileSync(schemaPath, \"utf-8\")) as { path_class?: Partial<PathClassConfig> } | null;\n const p = parsed?.path_class;\n if (!p || typeof p !== \"object\") return DEFAULT_PATH_CLASS_CONFIG;\n return {\n enabled: typeof p.enabled === \"boolean\" ? p.enabled : DEFAULT_PATH_CLASS_CONFIG.enabled,\n rules: Array.isArray(p.rules)\n ? p.rules.filter((r): r is PathClassRule => !!r && typeof r.glob === \"string\" && typeof r.multiplier === \"number\")\n : DEFAULT_PATH_CLASS_CONFIG.rules,\n };\n } catch {\n return DEFAULT_PATH_CLASS_CONFIG;\n }\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { readSelectionLog } from \"./telemetry.js\";\n\n/**\n * Usage-feedback ranking (v1.5 Phase 9).\n *\n * Consumes the v1.3.1 selection log — which notes actually got cited after being\n * retrieved — and turns repeated citations into a bounded rank boost. Load-bearing\n * knowledge floats up; the cap keeps a feedback runaway (cited → ranks higher →\n * cited more) from ever compounding past 1.5×. Composes multiplicatively with\n * decay + load_priority + path-class at the shared context.ts rank site: a\n * stale-but-cited note still decays, a cited-but-archived note still down-weights.\n *\n * The complementary signal — retrieved-but-NEVER-cited \"decoys\" — is surfaced by a\n * lint rule (see lint.ts findDecoys), never auto-down-ranked. Ambiguous evidence\n * gets a human's eyes, not a silent reorder (v1.5 decision Q5).\n */\n\nexport interface UsageBoostConfig {\n enabled: boolean;\n /** Maximum multiplier a note can earn from citations (feedback-runaway cap). */\n cap: number;\n /** Multiplier increment per citation, before the cap. */\n per_citation: number;\n}\n\nexport const DEFAULT_USAGE_BOOST_CONFIG: UsageBoostConfig = {\n enabled: true,\n cap: 1.5,\n per_citation: 0.1,\n};\n\n/**\n * Load usage-boost config from vault.schema.yml (`usage_boost` block), merged over\n * the shipped defaults. Fails open to defaults when the schema is missing/unreadable.\n */\nexport function loadUsageBoostConfig(vaultPath: string): UsageBoostConfig {\n try {\n const schemaPath = join(vaultPath, \"vault.schema.yml\");\n if (!existsSync(schemaPath)) return { ...DEFAULT_USAGE_BOOST_CONFIG };\n const parsed = parseYaml(readFileSync(schemaPath, \"utf-8\")) as { usage_boost?: Partial<UsageBoostConfig> } | null;\n const u = parsed?.usage_boost;\n if (!u || typeof u !== \"object\") return { ...DEFAULT_USAGE_BOOST_CONFIG };\n return {\n enabled: typeof u.enabled === \"boolean\" ? u.enabled : DEFAULT_USAGE_BOOST_CONFIG.enabled,\n cap: typeof u.cap === \"number\" && u.cap >= 1 ? u.cap : DEFAULT_USAGE_BOOST_CONFIG.cap,\n per_citation: typeof u.per_citation === \"number\" && u.per_citation >= 0 ? u.per_citation : DEFAULT_USAGE_BOOST_CONFIG.per_citation,\n };\n } catch {\n return { ...DEFAULT_USAGE_BOOST_CONFIG };\n }\n}\n\n/**\n * The multiplier a note with `citations` citations earns: 1 + citations·per_citation,\n * clamped to [1, cap]. Zero citations (or a disabled config) → 1.0 (no-op).\n */\nexport function computeUsageBoost(citations: number, config: UsageBoostConfig): number {\n if (!config.enabled || citations <= 0) return 1;\n return Math.min(config.cap, 1 + citations * config.per_citation);\n}\n\n/**\n * Citation counts per note path, derived from the selection log's `selection`\n * events. Returns {} when telemetry is absent/empty — the boost is then a no-op.\n */\nexport async function loadCitationCounts(vaultPath: string): Promise<Record<string, number>> {\n const events = await readSelectionLog(vaultPath);\n const counts: Record<string, number> = {};\n for (const e of events) {\n if (e.kind === \"selection\") counts[e.note_path] = (counts[e.note_path] ?? 0) + 1;\n }\n return counts;\n}\n","export * from \"./errors.js\";\nexport * from \"./helpers/parseUtil.js\";\nexport * from \"./helpers/typeAliases.js\";\nexport * from \"./helpers/util.js\";\nexport * from \"./types.js\";\nexport * from \"./ZodError.js\";\n","export var util;\n(function (util) {\n util.assertEqual = (_) => { };\n function assertIs(_arg) { }\n util.assertIs = assertIs;\n function assertNever(_x) {\n throw new Error();\n }\n util.assertNever = assertNever;\n util.arrayToEnum = (items) => {\n const obj = {};\n for (const item of items) {\n obj[item] = item;\n }\n return obj;\n };\n util.getValidEnumValues = (obj) => {\n const validKeys = util.objectKeys(obj).filter((k) => typeof obj[obj[k]] !== \"number\");\n const filtered = {};\n for (const k of validKeys) {\n filtered[k] = obj[k];\n }\n return util.objectValues(filtered);\n };\n util.objectValues = (obj) => {\n return util.objectKeys(obj).map(function (e) {\n return obj[e];\n });\n };\n util.objectKeys = typeof Object.keys === \"function\" // eslint-disable-line ban/ban\n ? (obj) => Object.keys(obj) // eslint-disable-line ban/ban\n : (object) => {\n const keys = [];\n for (const key in object) {\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n keys.push(key);\n }\n }\n return keys;\n };\n util.find = (arr, checker) => {\n for (const item of arr) {\n if (checker(item))\n return item;\n }\n return undefined;\n };\n util.isInteger = typeof Number.isInteger === \"function\"\n ? (val) => Number.isInteger(val) // eslint-disable-line ban/ban\n : (val) => typeof val === \"number\" && Number.isFinite(val) && Math.floor(val) === val;\n function joinValues(array, separator = \" | \") {\n return array.map((val) => (typeof val === \"string\" ? `'${val}'` : val)).join(separator);\n }\n util.joinValues = joinValues;\n util.jsonStringifyReplacer = (_, value) => {\n if (typeof value === \"bigint\") {\n return value.toString();\n }\n return value;\n };\n})(util || (util = {}));\nexport var objectUtil;\n(function (objectUtil) {\n objectUtil.mergeShapes = (first, second) => {\n return {\n ...first,\n ...second, // second overwrites first\n };\n };\n})(objectUtil || (objectUtil = {}));\nexport const ZodParsedType = util.arrayToEnum([\n \"string\",\n \"nan\",\n \"number\",\n \"integer\",\n \"float\",\n \"boolean\",\n \"date\",\n \"bigint\",\n \"symbol\",\n \"function\",\n \"undefined\",\n \"null\",\n \"array\",\n \"object\",\n \"unknown\",\n \"promise\",\n \"void\",\n \"never\",\n \"map\",\n \"set\",\n]);\nexport const getParsedType = (data) => {\n const t = typeof data;\n switch (t) {\n case \"undefined\":\n return ZodParsedType.undefined;\n case \"string\":\n return ZodParsedType.string;\n case \"number\":\n return Number.isNaN(data) ? ZodParsedType.nan : ZodParsedType.number;\n case \"boolean\":\n return ZodParsedType.boolean;\n case \"function\":\n return ZodParsedType.function;\n case \"bigint\":\n return ZodParsedType.bigint;\n case \"symbol\":\n return ZodParsedType.symbol;\n case \"object\":\n if (Array.isArray(data)) {\n return ZodParsedType.array;\n }\n if (data === null) {\n return ZodParsedType.null;\n }\n if (data.then && typeof data.then === \"function\" && data.catch && typeof data.catch === \"function\") {\n return ZodParsedType.promise;\n }\n if (typeof Map !== \"undefined\" && data instanceof Map) {\n return ZodParsedType.map;\n }\n if (typeof Set !== \"undefined\" && data instanceof Set) {\n return ZodParsedType.set;\n }\n if (typeof Date !== \"undefined\" && data instanceof Date) {\n return ZodParsedType.date;\n }\n return ZodParsedType.object;\n default:\n return ZodParsedType.unknown;\n }\n};\n","import { util } from \"./helpers/util.js\";\nexport const ZodIssueCode = util.arrayToEnum([\n \"invalid_type\",\n \"invalid_literal\",\n \"custom\",\n \"invalid_union\",\n \"invalid_union_discriminator\",\n \"invalid_enum_value\",\n \"unrecognized_keys\",\n \"invalid_arguments\",\n \"invalid_return_type\",\n \"invalid_date\",\n \"invalid_string\",\n \"too_small\",\n \"too_big\",\n \"invalid_intersection_types\",\n \"not_multiple_of\",\n \"not_finite\",\n]);\nexport const quotelessJson = (obj) => {\n const json = JSON.stringify(obj, null, 2);\n return json.replace(/\"([^\"]+)\":/g, \"$1:\");\n};\nexport class ZodError extends Error {\n get errors() {\n return this.issues;\n }\n constructor(issues) {\n super();\n this.issues = [];\n this.addIssue = (sub) => {\n this.issues = [...this.issues, sub];\n };\n this.addIssues = (subs = []) => {\n this.issues = [...this.issues, ...subs];\n };\n const actualProto = new.target.prototype;\n if (Object.setPrototypeOf) {\n // eslint-disable-next-line ban/ban\n Object.setPrototypeOf(this, actualProto);\n }\n else {\n this.__proto__ = actualProto;\n }\n this.name = \"ZodError\";\n this.issues = issues;\n }\n format(_mapper) {\n const mapper = _mapper ||\n function (issue) {\n return issue.message;\n };\n const fieldErrors = { _errors: [] };\n const processError = (error) => {\n for (const issue of error.issues) {\n if (issue.code === \"invalid_union\") {\n issue.unionErrors.map(processError);\n }\n else if (issue.code === \"invalid_return_type\") {\n processError(issue.returnTypeError);\n }\n else if (issue.code === \"invalid_arguments\") {\n processError(issue.argumentsError);\n }\n else if (issue.path.length === 0) {\n fieldErrors._errors.push(mapper(issue));\n }\n else {\n let curr = fieldErrors;\n let i = 0;\n while (i < issue.path.length) {\n const el = issue.path[i];\n const terminal = i === issue.path.length - 1;\n if (!terminal) {\n curr[el] = curr[el] || { _errors: [] };\n // if (typeof el === \"string\") {\n // curr[el] = curr[el] || { _errors: [] };\n // } else if (typeof el === \"number\") {\n // const errorArray: any = [];\n // errorArray._errors = [];\n // curr[el] = curr[el] || errorArray;\n // }\n }\n else {\n curr[el] = curr[el] || { _errors: [] };\n curr[el]._errors.push(mapper(issue));\n }\n curr = curr[el];\n i++;\n }\n }\n }\n };\n processError(this);\n return fieldErrors;\n }\n static assert(value) {\n if (!(value instanceof ZodError)) {\n throw new Error(`Not a ZodError: ${value}`);\n }\n }\n toString() {\n return this.message;\n }\n get message() {\n return JSON.stringify(this.issues, util.jsonStringifyReplacer, 2);\n }\n get isEmpty() {\n return this.issues.length === 0;\n }\n flatten(mapper = (issue) => issue.message) {\n const fieldErrors = {};\n const formErrors = [];\n for (const sub of this.issues) {\n if (sub.path.length > 0) {\n const firstEl = sub.path[0];\n fieldErrors[firstEl] = fieldErrors[firstEl] || [];\n fieldErrors[firstEl].push(mapper(sub));\n }\n else {\n formErrors.push(mapper(sub));\n }\n }\n return { formErrors, fieldErrors };\n }\n get formErrors() {\n return this.flatten();\n }\n}\nZodError.create = (issues) => {\n const error = new ZodError(issues);\n return error;\n};\n","import { ZodIssueCode } from \"../ZodError.js\";\nimport { util, ZodParsedType } from \"../helpers/util.js\";\nconst errorMap = (issue, _ctx) => {\n let message;\n switch (issue.code) {\n case ZodIssueCode.invalid_type:\n if (issue.received === ZodParsedType.undefined) {\n message = \"Required\";\n }\n else {\n message = `Expected ${issue.expected}, received ${issue.received}`;\n }\n break;\n case ZodIssueCode.invalid_literal:\n message = `Invalid literal value, expected ${JSON.stringify(issue.expected, util.jsonStringifyReplacer)}`;\n break;\n case ZodIssueCode.unrecognized_keys:\n message = `Unrecognized key(s) in object: ${util.joinValues(issue.keys, \", \")}`;\n break;\n case ZodIssueCode.invalid_union:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_union_discriminator:\n message = `Invalid discriminator value. Expected ${util.joinValues(issue.options)}`;\n break;\n case ZodIssueCode.invalid_enum_value:\n message = `Invalid enum value. Expected ${util.joinValues(issue.options)}, received '${issue.received}'`;\n break;\n case ZodIssueCode.invalid_arguments:\n message = `Invalid function arguments`;\n break;\n case ZodIssueCode.invalid_return_type:\n message = `Invalid function return type`;\n break;\n case ZodIssueCode.invalid_date:\n message = `Invalid date`;\n break;\n case ZodIssueCode.invalid_string:\n if (typeof issue.validation === \"object\") {\n if (\"includes\" in issue.validation) {\n message = `Invalid input: must include \"${issue.validation.includes}\"`;\n if (typeof issue.validation.position === \"number\") {\n message = `${message} at one or more positions greater than or equal to ${issue.validation.position}`;\n }\n }\n else if (\"startsWith\" in issue.validation) {\n message = `Invalid input: must start with \"${issue.validation.startsWith}\"`;\n }\n else if (\"endsWith\" in issue.validation) {\n message = `Invalid input: must end with \"${issue.validation.endsWith}\"`;\n }\n else {\n util.assertNever(issue.validation);\n }\n }\n else if (issue.validation !== \"regex\") {\n message = `Invalid ${issue.validation}`;\n }\n else {\n message = \"Invalid\";\n }\n break;\n case ZodIssueCode.too_small:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `more than`} ${issue.minimum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? \"exactly\" : issue.inclusive ? `at least` : `over`} ${issue.minimum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"bigint\")\n message = `Number must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${issue.minimum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly equal to ` : issue.inclusive ? `greater than or equal to ` : `greater than `}${new Date(Number(issue.minimum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.too_big:\n if (issue.type === \"array\")\n message = `Array must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `less than`} ${issue.maximum} element(s)`;\n else if (issue.type === \"string\")\n message = `String must contain ${issue.exact ? `exactly` : issue.inclusive ? `at most` : `under`} ${issue.maximum} character(s)`;\n else if (issue.type === \"number\")\n message = `Number must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"bigint\")\n message = `BigInt must be ${issue.exact ? `exactly` : issue.inclusive ? `less than or equal to` : `less than`} ${issue.maximum}`;\n else if (issue.type === \"date\")\n message = `Date must be ${issue.exact ? `exactly` : issue.inclusive ? `smaller than or equal to` : `smaller than`} ${new Date(Number(issue.maximum))}`;\n else\n message = \"Invalid input\";\n break;\n case ZodIssueCode.custom:\n message = `Invalid input`;\n break;\n case ZodIssueCode.invalid_intersection_types:\n message = `Intersection results could not be merged`;\n break;\n case ZodIssueCode.not_multiple_of:\n message = `Number must be a multiple of ${issue.multipleOf}`;\n break;\n case ZodIssueCode.not_finite:\n message = \"Number must be finite\";\n break;\n default:\n message = _ctx.defaultError;\n util.assertNever(issue);\n }\n return { message };\n};\nexport default errorMap;\n","import defaultErrorMap from \"./locales/en.js\";\nlet overrideErrorMap = defaultErrorMap;\nexport { defaultErrorMap };\nexport function setErrorMap(map) {\n overrideErrorMap = map;\n}\nexport function getErrorMap() {\n return overrideErrorMap;\n}\n","import { getErrorMap } from \"../errors.js\";\nimport defaultErrorMap from \"../locales/en.js\";\nexport const makeIssue = (params) => {\n const { data, path, errorMaps, issueData } = params;\n const fullPath = [...path, ...(issueData.path || [])];\n const fullIssue = {\n ...issueData,\n path: fullPath,\n };\n if (issueData.message !== undefined) {\n return {\n ...issueData,\n path: fullPath,\n message: issueData.message,\n };\n }\n let errorMessage = \"\";\n const maps = errorMaps\n .filter((m) => !!m)\n .slice()\n .reverse();\n for (const map of maps) {\n errorMessage = map(fullIssue, { data, defaultError: errorMessage }).message;\n }\n return {\n ...issueData,\n path: fullPath,\n message: errorMessage,\n };\n};\nexport const EMPTY_PATH = [];\nexport function addIssueToContext(ctx, issueData) {\n const overrideMap = getErrorMap();\n const issue = makeIssue({\n issueData: issueData,\n data: ctx.data,\n path: ctx.path,\n errorMaps: [\n ctx.common.contextualErrorMap, // contextual error map is first priority\n ctx.schemaErrorMap, // then schema-bound map if available\n overrideMap, // then global override map\n overrideMap === defaultErrorMap ? undefined : defaultErrorMap, // then global default map\n ].filter((x) => !!x),\n });\n ctx.common.issues.push(issue);\n}\nexport class ParseStatus {\n constructor() {\n this.value = \"valid\";\n }\n dirty() {\n if (this.value === \"valid\")\n this.value = \"dirty\";\n }\n abort() {\n if (this.value !== \"aborted\")\n this.value = \"aborted\";\n }\n static mergeArray(status, results) {\n const arrayValue = [];\n for (const s of results) {\n if (s.status === \"aborted\")\n return INVALID;\n if (s.status === \"dirty\")\n status.dirty();\n arrayValue.push(s.value);\n }\n return { status: status.value, value: arrayValue };\n }\n static async mergeObjectAsync(status, pairs) {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n });\n }\n return ParseStatus.mergeObjectSync(status, syncPairs);\n }\n static mergeObjectSync(status, pairs) {\n const finalObject = {};\n for (const pair of pairs) {\n const { key, value } = pair;\n if (key.status === \"aborted\")\n return INVALID;\n if (value.status === \"aborted\")\n return INVALID;\n if (key.status === \"dirty\")\n status.dirty();\n if (value.status === \"dirty\")\n status.dirty();\n if (key.value !== \"__proto__\" && (typeof value.value !== \"undefined\" || pair.alwaysSet)) {\n finalObject[key.value] = value.value;\n }\n }\n return { status: status.value, value: finalObject };\n }\n}\nexport const INVALID = Object.freeze({\n status: \"aborted\",\n});\nexport const DIRTY = (value) => ({ status: \"dirty\", value });\nexport const OK = (value) => ({ status: \"valid\", value });\nexport const isAborted = (x) => x.status === \"aborted\";\nexport const isDirty = (x) => x.status === \"dirty\";\nexport const isValid = (x) => x.status === \"valid\";\nexport const isAsync = (x) => typeof Promise !== \"undefined\" && x instanceof Promise;\n","export var errorUtil;\n(function (errorUtil) {\n errorUtil.errToObj = (message) => typeof message === \"string\" ? { message } : message || {};\n // biome-ignore lint:\n errorUtil.toString = (message) => typeof message === \"string\" ? message : message?.message;\n})(errorUtil || (errorUtil = {}));\n","import { ZodError, ZodIssueCode, } from \"./ZodError.js\";\nimport { defaultErrorMap, getErrorMap } from \"./errors.js\";\nimport { errorUtil } from \"./helpers/errorUtil.js\";\nimport { DIRTY, INVALID, OK, ParseStatus, addIssueToContext, isAborted, isAsync, isDirty, isValid, makeIssue, } from \"./helpers/parseUtil.js\";\nimport { util, ZodParsedType, getParsedType } from \"./helpers/util.js\";\nclass ParseInputLazyPath {\n constructor(parent, value, path, key) {\n this._cachedPath = [];\n this.parent = parent;\n this.data = value;\n this._path = path;\n this._key = key;\n }\n get path() {\n if (!this._cachedPath.length) {\n if (Array.isArray(this._key)) {\n this._cachedPath.push(...this._path, ...this._key);\n }\n else {\n this._cachedPath.push(...this._path, this._key);\n }\n }\n return this._cachedPath;\n }\n}\nconst handleResult = (ctx, result) => {\n if (isValid(result)) {\n return { success: true, data: result.value };\n }\n else {\n if (!ctx.common.issues.length) {\n throw new Error(\"Validation failed but no issues detected.\");\n }\n return {\n success: false,\n get error() {\n if (this._error)\n return this._error;\n const error = new ZodError(ctx.common.issues);\n this._error = error;\n return this._error;\n },\n };\n }\n};\nfunction processCreateParams(params) {\n if (!params)\n return {};\n const { errorMap, invalid_type_error, required_error, description } = params;\n if (errorMap && (invalid_type_error || required_error)) {\n throw new Error(`Can't use \"invalid_type_error\" or \"required_error\" in conjunction with custom error map.`);\n }\n if (errorMap)\n return { errorMap: errorMap, description };\n const customMap = (iss, ctx) => {\n const { message } = params;\n if (iss.code === \"invalid_enum_value\") {\n return { message: message ?? ctx.defaultError };\n }\n if (typeof ctx.data === \"undefined\") {\n return { message: message ?? required_error ?? ctx.defaultError };\n }\n if (iss.code !== \"invalid_type\")\n return { message: ctx.defaultError };\n return { message: message ?? invalid_type_error ?? ctx.defaultError };\n };\n return { errorMap: customMap, description };\n}\nexport class ZodType {\n get description() {\n return this._def.description;\n }\n _getType(input) {\n return getParsedType(input.data);\n }\n _getOrReturnCtx(input, ctx) {\n return (ctx || {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n });\n }\n _processInputParams(input) {\n return {\n status: new ParseStatus(),\n ctx: {\n common: input.parent.common,\n data: input.data,\n parsedType: getParsedType(input.data),\n schemaErrorMap: this._def.errorMap,\n path: input.path,\n parent: input.parent,\n },\n };\n }\n _parseSync(input) {\n const result = this._parse(input);\n if (isAsync(result)) {\n throw new Error(\"Synchronous parse encountered promise.\");\n }\n return result;\n }\n _parseAsync(input) {\n const result = this._parse(input);\n return Promise.resolve(result);\n }\n parse(data, params) {\n const result = this.safeParse(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n safeParse(data, params) {\n const ctx = {\n common: {\n issues: [],\n async: params?.async ?? false,\n contextualErrorMap: params?.errorMap,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const result = this._parseSync({ data, path: ctx.path, parent: ctx });\n return handleResult(ctx, result);\n }\n \"~validate\"(data) {\n const ctx = {\n common: {\n issues: [],\n async: !!this[\"~standard\"].async,\n },\n path: [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n if (!this[\"~standard\"].async) {\n try {\n const result = this._parseSync({ data, path: [], parent: ctx });\n return isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n };\n }\n catch (err) {\n if (err?.message?.toLowerCase()?.includes(\"encountered\")) {\n this[\"~standard\"].async = true;\n }\n ctx.common = {\n issues: [],\n async: true,\n };\n }\n }\n return this._parseAsync({ data, path: [], parent: ctx }).then((result) => isValid(result)\n ? {\n value: result.value,\n }\n : {\n issues: ctx.common.issues,\n });\n }\n async parseAsync(data, params) {\n const result = await this.safeParseAsync(data, params);\n if (result.success)\n return result.data;\n throw result.error;\n }\n async safeParseAsync(data, params) {\n const ctx = {\n common: {\n issues: [],\n contextualErrorMap: params?.errorMap,\n async: true,\n },\n path: params?.path || [],\n schemaErrorMap: this._def.errorMap,\n parent: null,\n data,\n parsedType: getParsedType(data),\n };\n const maybeAsyncResult = this._parse({ data, path: ctx.path, parent: ctx });\n const result = await (isAsync(maybeAsyncResult) ? maybeAsyncResult : Promise.resolve(maybeAsyncResult));\n return handleResult(ctx, result);\n }\n refine(check, message) {\n const getIssueProperties = (val) => {\n if (typeof message === \"string\" || typeof message === \"undefined\") {\n return { message };\n }\n else if (typeof message === \"function\") {\n return message(val);\n }\n else {\n return message;\n }\n };\n return this._refinement((val, ctx) => {\n const result = check(val);\n const setError = () => ctx.addIssue({\n code: ZodIssueCode.custom,\n ...getIssueProperties(val),\n });\n if (typeof Promise !== \"undefined\" && result instanceof Promise) {\n return result.then((data) => {\n if (!data) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n if (!result) {\n setError();\n return false;\n }\n else {\n return true;\n }\n });\n }\n refinement(check, refinementData) {\n return this._refinement((val, ctx) => {\n if (!check(val)) {\n ctx.addIssue(typeof refinementData === \"function\" ? refinementData(val, ctx) : refinementData);\n return false;\n }\n else {\n return true;\n }\n });\n }\n _refinement(refinement) {\n return new ZodEffects({\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"refinement\", refinement },\n });\n }\n superRefine(refinement) {\n return this._refinement(refinement);\n }\n constructor(def) {\n /** Alias of safeParseAsync */\n this.spa = this.safeParseAsync;\n this._def = def;\n this.parse = this.parse.bind(this);\n this.safeParse = this.safeParse.bind(this);\n this.parseAsync = this.parseAsync.bind(this);\n this.safeParseAsync = this.safeParseAsync.bind(this);\n this.spa = this.spa.bind(this);\n this.refine = this.refine.bind(this);\n this.refinement = this.refinement.bind(this);\n this.superRefine = this.superRefine.bind(this);\n this.optional = this.optional.bind(this);\n this.nullable = this.nullable.bind(this);\n this.nullish = this.nullish.bind(this);\n this.array = this.array.bind(this);\n this.promise = this.promise.bind(this);\n this.or = this.or.bind(this);\n this.and = this.and.bind(this);\n this.transform = this.transform.bind(this);\n this.brand = this.brand.bind(this);\n this.default = this.default.bind(this);\n this.catch = this.catch.bind(this);\n this.describe = this.describe.bind(this);\n this.pipe = this.pipe.bind(this);\n this.readonly = this.readonly.bind(this);\n this.isNullable = this.isNullable.bind(this);\n this.isOptional = this.isOptional.bind(this);\n this[\"~standard\"] = {\n version: 1,\n vendor: \"zod\",\n validate: (data) => this[\"~validate\"](data),\n };\n }\n optional() {\n return ZodOptional.create(this, this._def);\n }\n nullable() {\n return ZodNullable.create(this, this._def);\n }\n nullish() {\n return this.nullable().optional();\n }\n array() {\n return ZodArray.create(this);\n }\n promise() {\n return ZodPromise.create(this, this._def);\n }\n or(option) {\n return ZodUnion.create([this, option], this._def);\n }\n and(incoming) {\n return ZodIntersection.create(this, incoming, this._def);\n }\n transform(transform) {\n return new ZodEffects({\n ...processCreateParams(this._def),\n schema: this,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect: { type: \"transform\", transform },\n });\n }\n default(def) {\n const defaultValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodDefault({\n ...processCreateParams(this._def),\n innerType: this,\n defaultValue: defaultValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n });\n }\n brand() {\n return new ZodBranded({\n typeName: ZodFirstPartyTypeKind.ZodBranded,\n type: this,\n ...processCreateParams(this._def),\n });\n }\n catch(def) {\n const catchValueFunc = typeof def === \"function\" ? def : () => def;\n return new ZodCatch({\n ...processCreateParams(this._def),\n innerType: this,\n catchValue: catchValueFunc,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n });\n }\n describe(description) {\n const This = this.constructor;\n return new This({\n ...this._def,\n description,\n });\n }\n pipe(target) {\n return ZodPipeline.create(this, target);\n }\n readonly() {\n return ZodReadonly.create(this);\n }\n isOptional() {\n return this.safeParse(undefined).success;\n }\n isNullable() {\n return this.safeParse(null).success;\n }\n}\nconst cuidRegex = /^c[^\\s-]{8,}$/i;\nconst cuid2Regex = /^[0-9a-z]+$/;\nconst ulidRegex = /^[0-9A-HJKMNP-TV-Z]{26}$/i;\n// const uuidRegex =\n// /^([a-f0-9]{8}-[a-f0-9]{4}-[1-5][a-f0-9]{3}-[a-f0-9]{4}-[a-f0-9]{12}|00000000-0000-0000-0000-000000000000)$/i;\nconst uuidRegex = /^[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;\nconst nanoidRegex = /^[a-z0-9_-]{21}$/i;\nconst jwtRegex = /^[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]+\\.[A-Za-z0-9-_]*$/;\nconst durationRegex = /^[-+]?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)?)??$/;\n// from https://stackoverflow.com/a/46181/1550155\n// old version: too slow, didn't support unicode\n// const emailRegex = /^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))$/i;\n//old email regex\n// const emailRegex = /^(([^<>()[\\].,;:\\s@\"]+(\\.[^<>()[\\].,;:\\s@\"]+)*)|(\".+\"))@((?!-)([^<>()[\\].,;:\\s@\"]+\\.)+[^<>()[\\].,;:\\s@\"]{1,})[^-<>()[\\].,;:\\s@\"]$/i;\n// eslint-disable-next-line\n// const emailRegex =\n// /^(([^<>()[\\]\\\\.,;:\\s@\\\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@((\\[(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\])|(\\[IPv6:(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))\\])|([A-Za-z0-9]([A-Za-z0-9-]*[A-Za-z0-9])*(\\.[A-Za-z]{2,})+))$/;\n// const emailRegex =\n// /^[a-zA-Z0-9\\.\\!\\#\\$\\%\\&\\'\\*\\+\\/\\=\\?\\^\\_\\`\\{\\|\\}\\~\\-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;\n// const emailRegex =\n// /^(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])$/i;\nconst emailRegex = /^(?!\\.)(?!.*\\.\\.)([A-Z0-9_'+\\-\\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\\-]*\\.)+[A-Z]{2,}$/i;\n// const emailRegex =\n// /^[a-z0-9.!#$%&’*+/=?^_`{|}~-]+@[a-z0-9-]+(?:\\.[a-z0-9\\-]+)*$/i;\n// from https://thekevinscott.com/emojis-in-javascript/#writing-a-regular-expression\nconst _emojiRegex = `^(\\\\p{Extended_Pictographic}|\\\\p{Emoji_Component})+$`;\nlet emojiRegex;\n// faster, simpler, safer\nconst ipv4Regex = /^(?:(?: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])$/;\nconst ipv4CidrRegex = /^(?:(?: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])$/;\n// const ipv6Regex =\n// /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/;\nconst ipv6Regex = /^(([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]))$/;\nconst ipv6CidrRegex = /^(([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])$/;\n// https://stackoverflow.com/questions/7860392/determine-if-string-is-in-base64-using-javascript\nconst base64Regex = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;\n// https://base64.guru/standards/base64url\nconst base64urlRegex = /^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/;\n// simple\n// const dateRegexSource = `\\\\d{4}-\\\\d{2}-\\\\d{2}`;\n// no leap year validation\n// const dateRegexSource = `\\\\d{4}-((0[13578]|10|12)-31|(0[13-9]|1[0-2])-30|(0[1-9]|1[0-2])-(0[1-9]|1\\\\d|2\\\\d))`;\n// with leap year validation\nconst dateRegexSource = `((\\\\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])))`;\nconst dateRegex = new RegExp(`^${dateRegexSource}$`);\nfunction timeRegexSource(args) {\n let secondsRegexSource = `[0-5]\\\\d`;\n if (args.precision) {\n secondsRegexSource = `${secondsRegexSource}\\\\.\\\\d{${args.precision}}`;\n }\n else if (args.precision == null) {\n secondsRegexSource = `${secondsRegexSource}(\\\\.\\\\d+)?`;\n }\n const secondsQuantifier = args.precision ? \"+\" : \"?\"; // require seconds if precision is nonzero\n return `([01]\\\\d|2[0-3]):[0-5]\\\\d(:${secondsRegexSource})${secondsQuantifier}`;\n}\nfunction timeRegex(args) {\n return new RegExp(`^${timeRegexSource(args)}$`);\n}\n// Adapted from https://stackoverflow.com/a/3143231\nexport function datetimeRegex(args) {\n let regex = `${dateRegexSource}T${timeRegexSource(args)}`;\n const opts = [];\n opts.push(args.local ? `Z?` : `Z`);\n if (args.offset)\n opts.push(`([+-]\\\\d{2}:?\\\\d{2})`);\n regex = `${regex}(${opts.join(\"|\")})`;\n return new RegExp(`^${regex}$`);\n}\nfunction isValidIP(ip, version) {\n if ((version === \"v4\" || !version) && ipv4Regex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6Regex.test(ip)) {\n return true;\n }\n return false;\n}\nfunction isValidJWT(jwt, alg) {\n if (!jwtRegex.test(jwt))\n return false;\n try {\n const [header] = jwt.split(\".\");\n if (!header)\n return false;\n // Convert base64url to base64\n const base64 = header\n .replace(/-/g, \"+\")\n .replace(/_/g, \"/\")\n .padEnd(header.length + ((4 - (header.length % 4)) % 4), \"=\");\n const decoded = JSON.parse(atob(base64));\n if (typeof decoded !== \"object\" || decoded === null)\n return false;\n if (\"typ\" in decoded && decoded?.typ !== \"JWT\")\n return false;\n if (!decoded.alg)\n return false;\n if (alg && decoded.alg !== alg)\n return false;\n return true;\n }\n catch {\n return false;\n }\n}\nfunction isValidCidr(ip, version) {\n if ((version === \"v4\" || !version) && ipv4CidrRegex.test(ip)) {\n return true;\n }\n if ((version === \"v6\" || !version) && ipv6CidrRegex.test(ip)) {\n return true;\n }\n return false;\n}\nexport class ZodString extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = String(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.string) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.string,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.length < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.length > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"length\") {\n const tooBig = input.data.length > check.value;\n const tooSmall = input.data.length < check.value;\n if (tooBig || tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n if (tooBig) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n else if (tooSmall) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"string\",\n inclusive: true,\n exact: true,\n message: check.message,\n });\n }\n status.dirty();\n }\n }\n else if (check.kind === \"email\") {\n if (!emailRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"email\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"emoji\") {\n if (!emojiRegex) {\n emojiRegex = new RegExp(_emojiRegex, \"u\");\n }\n if (!emojiRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"emoji\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"uuid\") {\n if (!uuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"uuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"nanoid\") {\n if (!nanoidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"nanoid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid\") {\n if (!cuidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cuid2\") {\n if (!cuid2Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cuid2\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ulid\") {\n if (!ulidRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ulid\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"url\") {\n try {\n new URL(input.data);\n }\n catch {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"regex\") {\n check.regex.lastIndex = 0;\n const testResult = check.regex.test(input.data);\n if (!testResult) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"regex\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"trim\") {\n input.data = input.data.trim();\n }\n else if (check.kind === \"includes\") {\n if (!input.data.includes(check.value, check.position)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { includes: check.value, position: check.position },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"toLowerCase\") {\n input.data = input.data.toLowerCase();\n }\n else if (check.kind === \"toUpperCase\") {\n input.data = input.data.toUpperCase();\n }\n else if (check.kind === \"startsWith\") {\n if (!input.data.startsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { startsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"endsWith\") {\n if (!input.data.endsWith(check.value)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: { endsWith: check.value },\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"datetime\") {\n const regex = datetimeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"datetime\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"date\") {\n const regex = dateRegex;\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"date\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"time\") {\n const regex = timeRegex(check);\n if (!regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_string,\n validation: \"time\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"duration\") {\n if (!durationRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"duration\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"ip\") {\n if (!isValidIP(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"ip\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"jwt\") {\n if (!isValidJWT(input.data, check.alg)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"jwt\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"cidr\") {\n if (!isValidCidr(input.data, check.version)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"cidr\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64\") {\n if (!base64Regex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"base64url\") {\n if (!base64urlRegex.test(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n validation: \"base64url\",\n code: ZodIssueCode.invalid_string,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _regex(regex, validation, message) {\n return this.refinement((data) => regex.test(data), {\n validation,\n code: ZodIssueCode.invalid_string,\n ...errorUtil.errToObj(message),\n });\n }\n _addCheck(check) {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n email(message) {\n return this._addCheck({ kind: \"email\", ...errorUtil.errToObj(message) });\n }\n url(message) {\n return this._addCheck({ kind: \"url\", ...errorUtil.errToObj(message) });\n }\n emoji(message) {\n return this._addCheck({ kind: \"emoji\", ...errorUtil.errToObj(message) });\n }\n uuid(message) {\n return this._addCheck({ kind: \"uuid\", ...errorUtil.errToObj(message) });\n }\n nanoid(message) {\n return this._addCheck({ kind: \"nanoid\", ...errorUtil.errToObj(message) });\n }\n cuid(message) {\n return this._addCheck({ kind: \"cuid\", ...errorUtil.errToObj(message) });\n }\n cuid2(message) {\n return this._addCheck({ kind: \"cuid2\", ...errorUtil.errToObj(message) });\n }\n ulid(message) {\n return this._addCheck({ kind: \"ulid\", ...errorUtil.errToObj(message) });\n }\n base64(message) {\n return this._addCheck({ kind: \"base64\", ...errorUtil.errToObj(message) });\n }\n base64url(message) {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return this._addCheck({\n kind: \"base64url\",\n ...errorUtil.errToObj(message),\n });\n }\n jwt(options) {\n return this._addCheck({ kind: \"jwt\", ...errorUtil.errToObj(options) });\n }\n ip(options) {\n return this._addCheck({ kind: \"ip\", ...errorUtil.errToObj(options) });\n }\n cidr(options) {\n return this._addCheck({ kind: \"cidr\", ...errorUtil.errToObj(options) });\n }\n datetime(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"datetime\",\n precision: null,\n offset: false,\n local: false,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"datetime\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n offset: options?.offset ?? false,\n local: options?.local ?? false,\n ...errorUtil.errToObj(options?.message),\n });\n }\n date(message) {\n return this._addCheck({ kind: \"date\", message });\n }\n time(options) {\n if (typeof options === \"string\") {\n return this._addCheck({\n kind: \"time\",\n precision: null,\n message: options,\n });\n }\n return this._addCheck({\n kind: \"time\",\n precision: typeof options?.precision === \"undefined\" ? null : options?.precision,\n ...errorUtil.errToObj(options?.message),\n });\n }\n duration(message) {\n return this._addCheck({ kind: \"duration\", ...errorUtil.errToObj(message) });\n }\n regex(regex, message) {\n return this._addCheck({\n kind: \"regex\",\n regex: regex,\n ...errorUtil.errToObj(message),\n });\n }\n includes(value, options) {\n return this._addCheck({\n kind: \"includes\",\n value: value,\n position: options?.position,\n ...errorUtil.errToObj(options?.message),\n });\n }\n startsWith(value, message) {\n return this._addCheck({\n kind: \"startsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n endsWith(value, message) {\n return this._addCheck({\n kind: \"endsWith\",\n value: value,\n ...errorUtil.errToObj(message),\n });\n }\n min(minLength, message) {\n return this._addCheck({\n kind: \"min\",\n value: minLength,\n ...errorUtil.errToObj(message),\n });\n }\n max(maxLength, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxLength,\n ...errorUtil.errToObj(message),\n });\n }\n length(len, message) {\n return this._addCheck({\n kind: \"length\",\n value: len,\n ...errorUtil.errToObj(message),\n });\n }\n /**\n * Equivalent to `.min(1)`\n */\n nonempty(message) {\n return this.min(1, errorUtil.errToObj(message));\n }\n trim() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"trim\" }],\n });\n }\n toLowerCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toLowerCase\" }],\n });\n }\n toUpperCase() {\n return new ZodString({\n ...this._def,\n checks: [...this._def.checks, { kind: \"toUpperCase\" }],\n });\n }\n get isDatetime() {\n return !!this._def.checks.find((ch) => ch.kind === \"datetime\");\n }\n get isDate() {\n return !!this._def.checks.find((ch) => ch.kind === \"date\");\n }\n get isTime() {\n return !!this._def.checks.find((ch) => ch.kind === \"time\");\n }\n get isDuration() {\n return !!this._def.checks.find((ch) => ch.kind === \"duration\");\n }\n get isEmail() {\n return !!this._def.checks.find((ch) => ch.kind === \"email\");\n }\n get isURL() {\n return !!this._def.checks.find((ch) => ch.kind === \"url\");\n }\n get isEmoji() {\n return !!this._def.checks.find((ch) => ch.kind === \"emoji\");\n }\n get isUUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"uuid\");\n }\n get isNANOID() {\n return !!this._def.checks.find((ch) => ch.kind === \"nanoid\");\n }\n get isCUID() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid\");\n }\n get isCUID2() {\n return !!this._def.checks.find((ch) => ch.kind === \"cuid2\");\n }\n get isULID() {\n return !!this._def.checks.find((ch) => ch.kind === \"ulid\");\n }\n get isIP() {\n return !!this._def.checks.find((ch) => ch.kind === \"ip\");\n }\n get isCIDR() {\n return !!this._def.checks.find((ch) => ch.kind === \"cidr\");\n }\n get isBase64() {\n return !!this._def.checks.find((ch) => ch.kind === \"base64\");\n }\n get isBase64url() {\n // base64url encoding is a modification of base64 that can safely be used in URLs and filenames\n return !!this._def.checks.find((ch) => ch.kind === \"base64url\");\n }\n get minLength() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxLength() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodString.create = (params) => {\n return new ZodString({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodString,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\n// https://stackoverflow.com/questions/3966484/why-does-modulus-operator-return-fractional-number-in-javascript/31711034#31711034\nfunction floatSafeRemainder(val, step) {\n const valDecCount = (val.toString().split(\".\")[1] || \"\").length;\n const stepDecCount = (step.toString().split(\".\")[1] || \"\").length;\n const decCount = valDecCount > stepDecCount ? valDecCount : stepDecCount;\n const valInt = Number.parseInt(val.toFixed(decCount).replace(\".\", \"\"));\n const stepInt = Number.parseInt(step.toFixed(decCount).replace(\".\", \"\"));\n return (valInt % stepInt) / 10 ** decCount;\n}\nexport class ZodNumber extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n this.step = this.multipleOf;\n }\n _parse(input) {\n if (this._def.coerce) {\n input.data = Number(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.number) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.number,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"int\") {\n if (!util.isInteger(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: \"integer\",\n received: \"float\",\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: check.value,\n type: \"number\",\n inclusive: check.inclusive,\n exact: false,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (floatSafeRemainder(input.data, check.value) !== 0) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"finite\") {\n if (!Number.isFinite(input.data)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_finite,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodNumber({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodNumber({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n int(message) {\n return this._addCheck({\n kind: \"int\",\n message: errorUtil.toString(message),\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: 0,\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value: value,\n message: errorUtil.toString(message),\n });\n }\n finite(message) {\n return this._addCheck({\n kind: \"finite\",\n message: errorUtil.toString(message),\n });\n }\n safe(message) {\n return this._addCheck({\n kind: \"min\",\n inclusive: true,\n value: Number.MIN_SAFE_INTEGER,\n message: errorUtil.toString(message),\n })._addCheck({\n kind: \"max\",\n inclusive: true,\n value: Number.MAX_SAFE_INTEGER,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n get isInt() {\n return !!this._def.checks.find((ch) => ch.kind === \"int\" || (ch.kind === \"multipleOf\" && util.isInteger(ch.value)));\n }\n get isFinite() {\n let max = null;\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"finite\" || ch.kind === \"int\" || ch.kind === \"multipleOf\") {\n return true;\n }\n else if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n else if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return Number.isFinite(min) && Number.isFinite(max);\n }\n}\nZodNumber.create = (params) => {\n return new ZodNumber({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodNumber,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBigInt extends ZodType {\n constructor() {\n super(...arguments);\n this.min = this.gte;\n this.max = this.lte;\n }\n _parse(input) {\n if (this._def.coerce) {\n try {\n input.data = BigInt(input.data);\n }\n catch {\n return this._getInvalidInput(input);\n }\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.bigint) {\n return this._getInvalidInput(input);\n }\n let ctx = undefined;\n const status = new ParseStatus();\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n const tooSmall = check.inclusive ? input.data < check.value : input.data <= check.value;\n if (tooSmall) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n type: \"bigint\",\n minimum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n const tooBig = check.inclusive ? input.data > check.value : input.data >= check.value;\n if (tooBig) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n type: \"bigint\",\n maximum: check.value,\n inclusive: check.inclusive,\n message: check.message,\n });\n status.dirty();\n }\n }\n else if (check.kind === \"multipleOf\") {\n if (input.data % check.value !== BigInt(0)) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.not_multiple_of,\n multipleOf: check.value,\n message: check.message,\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return { status: status.value, value: input.data };\n }\n _getInvalidInput(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.bigint,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n gte(value, message) {\n return this.setLimit(\"min\", value, true, errorUtil.toString(message));\n }\n gt(value, message) {\n return this.setLimit(\"min\", value, false, errorUtil.toString(message));\n }\n lte(value, message) {\n return this.setLimit(\"max\", value, true, errorUtil.toString(message));\n }\n lt(value, message) {\n return this.setLimit(\"max\", value, false, errorUtil.toString(message));\n }\n setLimit(kind, value, inclusive, message) {\n return new ZodBigInt({\n ...this._def,\n checks: [\n ...this._def.checks,\n {\n kind,\n value,\n inclusive,\n message: errorUtil.toString(message),\n },\n ],\n });\n }\n _addCheck(check) {\n return new ZodBigInt({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n positive(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n negative(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: false,\n message: errorUtil.toString(message),\n });\n }\n nonpositive(message) {\n return this._addCheck({\n kind: \"max\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n nonnegative(message) {\n return this._addCheck({\n kind: \"min\",\n value: BigInt(0),\n inclusive: true,\n message: errorUtil.toString(message),\n });\n }\n multipleOf(value, message) {\n return this._addCheck({\n kind: \"multipleOf\",\n value,\n message: errorUtil.toString(message),\n });\n }\n get minValue() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min;\n }\n get maxValue() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max;\n }\n}\nZodBigInt.create = (params) => {\n return new ZodBigInt({\n checks: [],\n typeName: ZodFirstPartyTypeKind.ZodBigInt,\n coerce: params?.coerce ?? false,\n ...processCreateParams(params),\n });\n};\nexport class ZodBoolean extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = Boolean(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.boolean) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.boolean,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodBoolean.create = (params) => {\n return new ZodBoolean({\n typeName: ZodFirstPartyTypeKind.ZodBoolean,\n coerce: params?.coerce || false,\n ...processCreateParams(params),\n });\n};\nexport class ZodDate extends ZodType {\n _parse(input) {\n if (this._def.coerce) {\n input.data = new Date(input.data);\n }\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.date) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.date,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (Number.isNaN(input.data.getTime())) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_date,\n });\n return INVALID;\n }\n const status = new ParseStatus();\n let ctx = undefined;\n for (const check of this._def.checks) {\n if (check.kind === \"min\") {\n if (input.data.getTime() < check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n message: check.message,\n inclusive: true,\n exact: false,\n minimum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else if (check.kind === \"max\") {\n if (input.data.getTime() > check.value) {\n ctx = this._getOrReturnCtx(input, ctx);\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n message: check.message,\n inclusive: true,\n exact: false,\n maximum: check.value,\n type: \"date\",\n });\n status.dirty();\n }\n }\n else {\n util.assertNever(check);\n }\n }\n return {\n status: status.value,\n value: new Date(input.data.getTime()),\n };\n }\n _addCheck(check) {\n return new ZodDate({\n ...this._def,\n checks: [...this._def.checks, check],\n });\n }\n min(minDate, message) {\n return this._addCheck({\n kind: \"min\",\n value: minDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n max(maxDate, message) {\n return this._addCheck({\n kind: \"max\",\n value: maxDate.getTime(),\n message: errorUtil.toString(message),\n });\n }\n get minDate() {\n let min = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"min\") {\n if (min === null || ch.value > min)\n min = ch.value;\n }\n }\n return min != null ? new Date(min) : null;\n }\n get maxDate() {\n let max = null;\n for (const ch of this._def.checks) {\n if (ch.kind === \"max\") {\n if (max === null || ch.value < max)\n max = ch.value;\n }\n }\n return max != null ? new Date(max) : null;\n }\n}\nZodDate.create = (params) => {\n return new ZodDate({\n checks: [],\n coerce: params?.coerce || false,\n typeName: ZodFirstPartyTypeKind.ZodDate,\n ...processCreateParams(params),\n });\n};\nexport class ZodSymbol extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.symbol) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.symbol,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodSymbol.create = (params) => {\n return new ZodSymbol({\n typeName: ZodFirstPartyTypeKind.ZodSymbol,\n ...processCreateParams(params),\n });\n};\nexport class ZodUndefined extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.undefined,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodUndefined.create = (params) => {\n return new ZodUndefined({\n typeName: ZodFirstPartyTypeKind.ZodUndefined,\n ...processCreateParams(params),\n });\n};\nexport class ZodNull extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.null) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.null,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodNull.create = (params) => {\n return new ZodNull({\n typeName: ZodFirstPartyTypeKind.ZodNull,\n ...processCreateParams(params),\n });\n};\nexport class ZodAny extends ZodType {\n constructor() {\n super(...arguments);\n // to prevent instances of other classes from extending ZodAny. this causes issues with catchall in ZodObject.\n this._any = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodAny.create = (params) => {\n return new ZodAny({\n typeName: ZodFirstPartyTypeKind.ZodAny,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnknown extends ZodType {\n constructor() {\n super(...arguments);\n // required\n this._unknown = true;\n }\n _parse(input) {\n return OK(input.data);\n }\n}\nZodUnknown.create = (params) => {\n return new ZodUnknown({\n typeName: ZodFirstPartyTypeKind.ZodUnknown,\n ...processCreateParams(params),\n });\n};\nexport class ZodNever extends ZodType {\n _parse(input) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.never,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n}\nZodNever.create = (params) => {\n return new ZodNever({\n typeName: ZodFirstPartyTypeKind.ZodNever,\n ...processCreateParams(params),\n });\n};\nexport class ZodVoid extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.undefined) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.void,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n}\nZodVoid.create = (params) => {\n return new ZodVoid({\n typeName: ZodFirstPartyTypeKind.ZodVoid,\n ...processCreateParams(params),\n });\n};\nexport class ZodArray extends ZodType {\n _parse(input) {\n const { ctx, status } = this._processInputParams(input);\n const def = this._def;\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (def.exactLength !== null) {\n const tooBig = ctx.data.length > def.exactLength.value;\n const tooSmall = ctx.data.length < def.exactLength.value;\n if (tooBig || tooSmall) {\n addIssueToContext(ctx, {\n code: tooBig ? ZodIssueCode.too_big : ZodIssueCode.too_small,\n minimum: (tooSmall ? def.exactLength.value : undefined),\n maximum: (tooBig ? def.exactLength.value : undefined),\n type: \"array\",\n inclusive: true,\n exact: true,\n message: def.exactLength.message,\n });\n status.dirty();\n }\n }\n if (def.minLength !== null) {\n if (ctx.data.length < def.minLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.minLength.message,\n });\n status.dirty();\n }\n }\n if (def.maxLength !== null) {\n if (ctx.data.length > def.maxLength.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxLength.value,\n type: \"array\",\n inclusive: true,\n exact: false,\n message: def.maxLength.message,\n });\n status.dirty();\n }\n }\n if (ctx.common.async) {\n return Promise.all([...ctx.data].map((item, i) => {\n return def.type._parseAsync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n })).then((result) => {\n return ParseStatus.mergeArray(status, result);\n });\n }\n const result = [...ctx.data].map((item, i) => {\n return def.type._parseSync(new ParseInputLazyPath(ctx, item, ctx.path, i));\n });\n return ParseStatus.mergeArray(status, result);\n }\n get element() {\n return this._def.type;\n }\n min(minLength, message) {\n return new ZodArray({\n ...this._def,\n minLength: { value: minLength, message: errorUtil.toString(message) },\n });\n }\n max(maxLength, message) {\n return new ZodArray({\n ...this._def,\n maxLength: { value: maxLength, message: errorUtil.toString(message) },\n });\n }\n length(len, message) {\n return new ZodArray({\n ...this._def,\n exactLength: { value: len, message: errorUtil.toString(message) },\n });\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodArray.create = (schema, params) => {\n return new ZodArray({\n type: schema,\n minLength: null,\n maxLength: null,\n exactLength: null,\n typeName: ZodFirstPartyTypeKind.ZodArray,\n ...processCreateParams(params),\n });\n};\nfunction deepPartialify(schema) {\n if (schema instanceof ZodObject) {\n const newShape = {};\n for (const key in schema.shape) {\n const fieldSchema = schema.shape[key];\n newShape[key] = ZodOptional.create(deepPartialify(fieldSchema));\n }\n return new ZodObject({\n ...schema._def,\n shape: () => newShape,\n });\n }\n else if (schema instanceof ZodArray) {\n return new ZodArray({\n ...schema._def,\n type: deepPartialify(schema.element),\n });\n }\n else if (schema instanceof ZodOptional) {\n return ZodOptional.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodNullable) {\n return ZodNullable.create(deepPartialify(schema.unwrap()));\n }\n else if (schema instanceof ZodTuple) {\n return ZodTuple.create(schema.items.map((item) => deepPartialify(item)));\n }\n else {\n return schema;\n }\n}\nexport class ZodObject extends ZodType {\n constructor() {\n super(...arguments);\n this._cached = null;\n /**\n * @deprecated In most cases, this is no longer needed - unknown properties are now silently stripped.\n * If you want to pass through unknown properties, use `.passthrough()` instead.\n */\n this.nonstrict = this.passthrough;\n // extend<\n // Augmentation extends ZodRawShape,\n // NewOutput extends util.flatten<{\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // }>,\n // NewInput extends util.flatten<{\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }>\n // >(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<T, Augmentation>,\n // UnknownKeys,\n // Catchall,\n // NewOutput,\n // NewInput\n // > {\n // return new ZodObject({\n // ...this._def,\n // shape: () => ({\n // ...this._def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // }\n /**\n * @deprecated Use `.extend` instead\n * */\n this.augment = this.extend;\n }\n _getCached() {\n if (this._cached !== null)\n return this._cached;\n const shape = this._def.shape();\n const keys = util.objectKeys(shape);\n this._cached = { shape, keys };\n return this._cached;\n }\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.object) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const { status, ctx } = this._processInputParams(input);\n const { shape, keys: shapeKeys } = this._getCached();\n const extraKeys = [];\n if (!(this._def.catchall instanceof ZodNever && this._def.unknownKeys === \"strip\")) {\n for (const key in ctx.data) {\n if (!shapeKeys.includes(key)) {\n extraKeys.push(key);\n }\n }\n }\n const pairs = [];\n for (const key of shapeKeys) {\n const keyValidator = shape[key];\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: keyValidator._parse(new ParseInputLazyPath(ctx, value, ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (this._def.catchall instanceof ZodNever) {\n const unknownKeys = this._def.unknownKeys;\n if (unknownKeys === \"passthrough\") {\n for (const key of extraKeys) {\n pairs.push({\n key: { status: \"valid\", value: key },\n value: { status: \"valid\", value: ctx.data[key] },\n });\n }\n }\n else if (unknownKeys === \"strict\") {\n if (extraKeys.length > 0) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.unrecognized_keys,\n keys: extraKeys,\n });\n status.dirty();\n }\n }\n else if (unknownKeys === \"strip\") {\n }\n else {\n throw new Error(`Internal ZodObject error: invalid unknownKeys value.`);\n }\n }\n else {\n // run catchall validation\n const catchall = this._def.catchall;\n for (const key of extraKeys) {\n const value = ctx.data[key];\n pairs.push({\n key: { status: \"valid\", value: key },\n value: catchall._parse(new ParseInputLazyPath(ctx, value, ctx.path, key) //, ctx.child(key), value, getParsedType(value)\n ),\n alwaysSet: key in ctx.data,\n });\n }\n }\n if (ctx.common.async) {\n return Promise.resolve()\n .then(async () => {\n const syncPairs = [];\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n syncPairs.push({\n key,\n value,\n alwaysSet: pair.alwaysSet,\n });\n }\n return syncPairs;\n })\n .then((syncPairs) => {\n return ParseStatus.mergeObjectSync(status, syncPairs);\n });\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get shape() {\n return this._def.shape();\n }\n strict(message) {\n errorUtil.errToObj;\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strict\",\n ...(message !== undefined\n ? {\n errorMap: (issue, ctx) => {\n const defaultError = this._def.errorMap?.(issue, ctx).message ?? ctx.defaultError;\n if (issue.code === \"unrecognized_keys\")\n return {\n message: errorUtil.errToObj(message).message ?? defaultError,\n };\n return {\n message: defaultError,\n };\n },\n }\n : {}),\n });\n }\n strip() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"strip\",\n });\n }\n passthrough() {\n return new ZodObject({\n ...this._def,\n unknownKeys: \"passthrough\",\n });\n }\n // const AugmentFactory =\n // <Def extends ZodObjectDef>(def: Def) =>\n // <Augmentation extends ZodRawShape>(\n // augmentation: Augmentation\n // ): ZodObject<\n // extendShape<ReturnType<Def[\"shape\"]>, Augmentation>,\n // Def[\"unknownKeys\"],\n // Def[\"catchall\"]\n // > => {\n // return new ZodObject({\n // ...def,\n // shape: () => ({\n // ...def.shape(),\n // ...augmentation,\n // }),\n // }) as any;\n // };\n extend(augmentation) {\n return new ZodObject({\n ...this._def,\n shape: () => ({\n ...this._def.shape(),\n ...augmentation,\n }),\n });\n }\n /**\n * Prior to zod@1.0.12 there was a bug in the\n * inferred type of merged objects. Please\n * upgrade if you are experiencing issues.\n */\n merge(merging) {\n const merged = new ZodObject({\n unknownKeys: merging._def.unknownKeys,\n catchall: merging._def.catchall,\n shape: () => ({\n ...this._def.shape(),\n ...merging._def.shape(),\n }),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n });\n return merged;\n }\n // merge<\n // Incoming extends AnyZodObject,\n // Augmentation extends Incoming[\"shape\"],\n // NewOutput extends {\n // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation\n // ? Augmentation[k][\"_output\"]\n // : k extends keyof Output\n // ? Output[k]\n // : never;\n // },\n // NewInput extends {\n // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation\n // ? Augmentation[k][\"_input\"]\n // : k extends keyof Input\n // ? Input[k]\n // : never;\n // }\n // >(\n // merging: Incoming\n // ): ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"],\n // NewOutput,\n // NewInput\n // > {\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n setKey(key, schema) {\n return this.augment({ [key]: schema });\n }\n // merge<Incoming extends AnyZodObject>(\n // merging: Incoming\n // ): //ZodObject<T & Incoming[\"_shape\"], UnknownKeys, Catchall> = (merging) => {\n // ZodObject<\n // extendShape<T, ReturnType<Incoming[\"_def\"][\"shape\"]>>,\n // Incoming[\"_def\"][\"unknownKeys\"],\n // Incoming[\"_def\"][\"catchall\"]\n // > {\n // // const mergedShape = objectUtil.mergeShapes(\n // // this._def.shape(),\n // // merging._def.shape()\n // // );\n // const merged: any = new ZodObject({\n // unknownKeys: merging._def.unknownKeys,\n // catchall: merging._def.catchall,\n // shape: () =>\n // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()),\n // typeName: ZodFirstPartyTypeKind.ZodObject,\n // }) as any;\n // return merged;\n // }\n catchall(index) {\n return new ZodObject({\n ...this._def,\n catchall: index,\n });\n }\n pick(mask) {\n const shape = {};\n for (const key of util.objectKeys(mask)) {\n if (mask[key] && this.shape[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n omit(mask) {\n const shape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (!mask[key]) {\n shape[key] = this.shape[key];\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => shape,\n });\n }\n /**\n * @deprecated\n */\n deepPartial() {\n return deepPartialify(this);\n }\n partial(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n const fieldSchema = this.shape[key];\n if (mask && !mask[key]) {\n newShape[key] = fieldSchema;\n }\n else {\n newShape[key] = fieldSchema.optional();\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n required(mask) {\n const newShape = {};\n for (const key of util.objectKeys(this.shape)) {\n if (mask && !mask[key]) {\n newShape[key] = this.shape[key];\n }\n else {\n const fieldSchema = this.shape[key];\n let newField = fieldSchema;\n while (newField instanceof ZodOptional) {\n newField = newField._def.innerType;\n }\n newShape[key] = newField;\n }\n }\n return new ZodObject({\n ...this._def,\n shape: () => newShape,\n });\n }\n keyof() {\n return createZodEnum(util.objectKeys(this.shape));\n }\n}\nZodObject.create = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.strictCreate = (shape, params) => {\n return new ZodObject({\n shape: () => shape,\n unknownKeys: \"strict\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nZodObject.lazycreate = (shape, params) => {\n return new ZodObject({\n shape,\n unknownKeys: \"strip\",\n catchall: ZodNever.create(),\n typeName: ZodFirstPartyTypeKind.ZodObject,\n ...processCreateParams(params),\n });\n};\nexport class ZodUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const options = this._def.options;\n function handleResults(results) {\n // return first issue-free validation if it exists\n for (const result of results) {\n if (result.result.status === \"valid\") {\n return result.result;\n }\n }\n for (const result of results) {\n if (result.result.status === \"dirty\") {\n // add issues from dirty option\n ctx.common.issues.push(...result.ctx.common.issues);\n return result.result;\n }\n }\n // return invalid\n const unionErrors = results.map((result) => new ZodError(result.ctx.common.issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return Promise.all(options.map(async (option) => {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n return {\n result: await option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n }),\n ctx: childCtx,\n };\n })).then(handleResults);\n }\n else {\n let dirty = undefined;\n const issues = [];\n for (const option of options) {\n const childCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n parent: null,\n };\n const result = option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: childCtx,\n });\n if (result.status === \"valid\") {\n return result;\n }\n else if (result.status === \"dirty\" && !dirty) {\n dirty = { result, ctx: childCtx };\n }\n if (childCtx.common.issues.length) {\n issues.push(childCtx.common.issues);\n }\n }\n if (dirty) {\n ctx.common.issues.push(...dirty.ctx.common.issues);\n return dirty.result;\n }\n const unionErrors = issues.map((issues) => new ZodError(issues));\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union,\n unionErrors,\n });\n return INVALID;\n }\n }\n get options() {\n return this._def.options;\n }\n}\nZodUnion.create = (types, params) => {\n return new ZodUnion({\n options: types,\n typeName: ZodFirstPartyTypeKind.ZodUnion,\n ...processCreateParams(params),\n });\n};\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\n////////// //////////\n////////// ZodDiscriminatedUnion //////////\n////////// //////////\n/////////////////////////////////////////////////////\n/////////////////////////////////////////////////////\nconst getDiscriminator = (type) => {\n if (type instanceof ZodLazy) {\n return getDiscriminator(type.schema);\n }\n else if (type instanceof ZodEffects) {\n return getDiscriminator(type.innerType());\n }\n else if (type instanceof ZodLiteral) {\n return [type.value];\n }\n else if (type instanceof ZodEnum) {\n return type.options;\n }\n else if (type instanceof ZodNativeEnum) {\n // eslint-disable-next-line ban/ban\n return util.objectValues(type.enum);\n }\n else if (type instanceof ZodDefault) {\n return getDiscriminator(type._def.innerType);\n }\n else if (type instanceof ZodUndefined) {\n return [undefined];\n }\n else if (type instanceof ZodNull) {\n return [null];\n }\n else if (type instanceof ZodOptional) {\n return [undefined, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodNullable) {\n return [null, ...getDiscriminator(type.unwrap())];\n }\n else if (type instanceof ZodBranded) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodReadonly) {\n return getDiscriminator(type.unwrap());\n }\n else if (type instanceof ZodCatch) {\n return getDiscriminator(type._def.innerType);\n }\n else {\n return [];\n }\n};\nexport class ZodDiscriminatedUnion extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const discriminator = this.discriminator;\n const discriminatorValue = ctx.data[discriminator];\n const option = this.optionsMap.get(discriminatorValue);\n if (!option) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_union_discriminator,\n options: Array.from(this.optionsMap.keys()),\n path: [discriminator],\n });\n return INVALID;\n }\n if (ctx.common.async) {\n return option._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n else {\n return option._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n get discriminator() {\n return this._def.discriminator;\n }\n get options() {\n return this._def.options;\n }\n get optionsMap() {\n return this._def.optionsMap;\n }\n /**\n * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor.\n * However, it only allows a union of objects, all of which need to share a discriminator property. This property must\n * have a different value for each object in the union.\n * @param discriminator the name of the discriminator property\n * @param types an array of object schemas\n * @param params\n */\n static create(discriminator, options, params) {\n // Get all the valid discriminator values\n const optionsMap = new Map();\n // try {\n for (const type of options) {\n const discriminatorValues = getDiscriminator(type.shape[discriminator]);\n if (!discriminatorValues.length) {\n throw new Error(`A discriminator value for key \\`${discriminator}\\` could not be extracted from all schema options`);\n }\n for (const value of discriminatorValues) {\n if (optionsMap.has(value)) {\n throw new Error(`Discriminator property ${String(discriminator)} has duplicate value ${String(value)}`);\n }\n optionsMap.set(value, type);\n }\n }\n return new ZodDiscriminatedUnion({\n typeName: ZodFirstPartyTypeKind.ZodDiscriminatedUnion,\n discriminator,\n options,\n optionsMap,\n ...processCreateParams(params),\n });\n }\n}\nfunction mergeValues(a, b) {\n const aType = getParsedType(a);\n const bType = getParsedType(b);\n if (a === b) {\n return { valid: true, data: a };\n }\n else if (aType === ZodParsedType.object && bType === ZodParsedType.object) {\n const bKeys = util.objectKeys(b);\n const sharedKeys = util.objectKeys(a).filter((key) => bKeys.indexOf(key) !== -1);\n const newObj = { ...a, ...b };\n for (const key of sharedKeys) {\n const sharedValue = mergeValues(a[key], b[key]);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newObj[key] = sharedValue.data;\n }\n return { valid: true, data: newObj };\n }\n else if (aType === ZodParsedType.array && bType === ZodParsedType.array) {\n if (a.length !== b.length) {\n return { valid: false };\n }\n const newArray = [];\n for (let index = 0; index < a.length; index++) {\n const itemA = a[index];\n const itemB = b[index];\n const sharedValue = mergeValues(itemA, itemB);\n if (!sharedValue.valid) {\n return { valid: false };\n }\n newArray.push(sharedValue.data);\n }\n return { valid: true, data: newArray };\n }\n else if (aType === ZodParsedType.date && bType === ZodParsedType.date && +a === +b) {\n return { valid: true, data: a };\n }\n else {\n return { valid: false };\n }\n}\nexport class ZodIntersection extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const handleParsed = (parsedLeft, parsedRight) => {\n if (isAborted(parsedLeft) || isAborted(parsedRight)) {\n return INVALID;\n }\n const merged = mergeValues(parsedLeft.value, parsedRight.value);\n if (!merged.valid) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_intersection_types,\n });\n return INVALID;\n }\n if (isDirty(parsedLeft) || isDirty(parsedRight)) {\n status.dirty();\n }\n return { status: status.value, value: merged.data };\n };\n if (ctx.common.async) {\n return Promise.all([\n this._def.left._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n this._def.right._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }),\n ]).then(([left, right]) => handleParsed(left, right));\n }\n else {\n return handleParsed(this._def.left._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }), this._def.right._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n }));\n }\n }\n}\nZodIntersection.create = (left, right, params) => {\n return new ZodIntersection({\n left: left,\n right: right,\n typeName: ZodFirstPartyTypeKind.ZodIntersection,\n ...processCreateParams(params),\n });\n};\n// type ZodTupleItems = [ZodTypeAny, ...ZodTypeAny[]];\nexport class ZodTuple extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.array) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.array,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n if (ctx.data.length < this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n return INVALID;\n }\n const rest = this._def.rest;\n if (!rest && ctx.data.length > this._def.items.length) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: this._def.items.length,\n inclusive: true,\n exact: false,\n type: \"array\",\n });\n status.dirty();\n }\n const items = [...ctx.data]\n .map((item, itemIndex) => {\n const schema = this._def.items[itemIndex] || this._def.rest;\n if (!schema)\n return null;\n return schema._parse(new ParseInputLazyPath(ctx, item, ctx.path, itemIndex));\n })\n .filter((x) => !!x); // filter nulls\n if (ctx.common.async) {\n return Promise.all(items).then((results) => {\n return ParseStatus.mergeArray(status, results);\n });\n }\n else {\n return ParseStatus.mergeArray(status, items);\n }\n }\n get items() {\n return this._def.items;\n }\n rest(rest) {\n return new ZodTuple({\n ...this._def,\n rest,\n });\n }\n}\nZodTuple.create = (schemas, params) => {\n if (!Array.isArray(schemas)) {\n throw new Error(\"You must pass an array of schemas to z.tuple([ ... ])\");\n }\n return new ZodTuple({\n items: schemas,\n typeName: ZodFirstPartyTypeKind.ZodTuple,\n rest: null,\n ...processCreateParams(params),\n });\n};\nexport class ZodRecord extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.object) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.object,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const pairs = [];\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n for (const key in ctx.data) {\n pairs.push({\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, key)),\n value: valueType._parse(new ParseInputLazyPath(ctx, ctx.data[key], ctx.path, key)),\n alwaysSet: key in ctx.data,\n });\n }\n if (ctx.common.async) {\n return ParseStatus.mergeObjectAsync(status, pairs);\n }\n else {\n return ParseStatus.mergeObjectSync(status, pairs);\n }\n }\n get element() {\n return this._def.valueType;\n }\n static create(first, second, third) {\n if (second instanceof ZodType) {\n return new ZodRecord({\n keyType: first,\n valueType: second,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(third),\n });\n }\n return new ZodRecord({\n keyType: ZodString.create(),\n valueType: first,\n typeName: ZodFirstPartyTypeKind.ZodRecord,\n ...processCreateParams(second),\n });\n }\n}\nexport class ZodMap extends ZodType {\n get keySchema() {\n return this._def.keyType;\n }\n get valueSchema() {\n return this._def.valueType;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.map) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.map,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const keyType = this._def.keyType;\n const valueType = this._def.valueType;\n const pairs = [...ctx.data.entries()].map(([key, value], index) => {\n return {\n key: keyType._parse(new ParseInputLazyPath(ctx, key, ctx.path, [index, \"key\"])),\n value: valueType._parse(new ParseInputLazyPath(ctx, value, ctx.path, [index, \"value\"])),\n };\n });\n if (ctx.common.async) {\n const finalMap = new Map();\n return Promise.resolve().then(async () => {\n for (const pair of pairs) {\n const key = await pair.key;\n const value = await pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n });\n }\n else {\n const finalMap = new Map();\n for (const pair of pairs) {\n const key = pair.key;\n const value = pair.value;\n if (key.status === \"aborted\" || value.status === \"aborted\") {\n return INVALID;\n }\n if (key.status === \"dirty\" || value.status === \"dirty\") {\n status.dirty();\n }\n finalMap.set(key.value, value.value);\n }\n return { status: status.value, value: finalMap };\n }\n }\n}\nZodMap.create = (keyType, valueType, params) => {\n return new ZodMap({\n valueType,\n keyType,\n typeName: ZodFirstPartyTypeKind.ZodMap,\n ...processCreateParams(params),\n });\n};\nexport class ZodSet extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.set) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.set,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const def = this._def;\n if (def.minSize !== null) {\n if (ctx.data.size < def.minSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_small,\n minimum: def.minSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.minSize.message,\n });\n status.dirty();\n }\n }\n if (def.maxSize !== null) {\n if (ctx.data.size > def.maxSize.value) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.too_big,\n maximum: def.maxSize.value,\n type: \"set\",\n inclusive: true,\n exact: false,\n message: def.maxSize.message,\n });\n status.dirty();\n }\n }\n const valueType = this._def.valueType;\n function finalizeSet(elements) {\n const parsedSet = new Set();\n for (const element of elements) {\n if (element.status === \"aborted\")\n return INVALID;\n if (element.status === \"dirty\")\n status.dirty();\n parsedSet.add(element.value);\n }\n return { status: status.value, value: parsedSet };\n }\n const elements = [...ctx.data.values()].map((item, i) => valueType._parse(new ParseInputLazyPath(ctx, item, ctx.path, i)));\n if (ctx.common.async) {\n return Promise.all(elements).then((elements) => finalizeSet(elements));\n }\n else {\n return finalizeSet(elements);\n }\n }\n min(minSize, message) {\n return new ZodSet({\n ...this._def,\n minSize: { value: minSize, message: errorUtil.toString(message) },\n });\n }\n max(maxSize, message) {\n return new ZodSet({\n ...this._def,\n maxSize: { value: maxSize, message: errorUtil.toString(message) },\n });\n }\n size(size, message) {\n return this.min(size, message).max(size, message);\n }\n nonempty(message) {\n return this.min(1, message);\n }\n}\nZodSet.create = (valueType, params) => {\n return new ZodSet({\n valueType,\n minSize: null,\n maxSize: null,\n typeName: ZodFirstPartyTypeKind.ZodSet,\n ...processCreateParams(params),\n });\n};\nexport class ZodFunction extends ZodType {\n constructor() {\n super(...arguments);\n this.validate = this.implement;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.function) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.function,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n function makeArgsIssue(args, error) {\n return makeIssue({\n data: args,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_arguments,\n argumentsError: error,\n },\n });\n }\n function makeReturnsIssue(returns, error) {\n return makeIssue({\n data: returns,\n path: ctx.path,\n errorMaps: [ctx.common.contextualErrorMap, ctx.schemaErrorMap, getErrorMap(), defaultErrorMap].filter((x) => !!x),\n issueData: {\n code: ZodIssueCode.invalid_return_type,\n returnTypeError: error,\n },\n });\n }\n const params = { errorMap: ctx.common.contextualErrorMap };\n const fn = ctx.data;\n if (this._def.returns instanceof ZodPromise) {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(async function (...args) {\n const error = new ZodError([]);\n const parsedArgs = await me._def.args.parseAsync(args, params).catch((e) => {\n error.addIssue(makeArgsIssue(args, e));\n throw error;\n });\n const result = await Reflect.apply(fn, this, parsedArgs);\n const parsedReturns = await me._def.returns._def.type\n .parseAsync(result, params)\n .catch((e) => {\n error.addIssue(makeReturnsIssue(result, e));\n throw error;\n });\n return parsedReturns;\n });\n }\n else {\n // Would love a way to avoid disabling this rule, but we need\n // an alias (using an arrow function was what caused 2651).\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const me = this;\n return OK(function (...args) {\n const parsedArgs = me._def.args.safeParse(args, params);\n if (!parsedArgs.success) {\n throw new ZodError([makeArgsIssue(args, parsedArgs.error)]);\n }\n const result = Reflect.apply(fn, this, parsedArgs.data);\n const parsedReturns = me._def.returns.safeParse(result, params);\n if (!parsedReturns.success) {\n throw new ZodError([makeReturnsIssue(result, parsedReturns.error)]);\n }\n return parsedReturns.data;\n });\n }\n }\n parameters() {\n return this._def.args;\n }\n returnType() {\n return this._def.returns;\n }\n args(...items) {\n return new ZodFunction({\n ...this._def,\n args: ZodTuple.create(items).rest(ZodUnknown.create()),\n });\n }\n returns(returnType) {\n return new ZodFunction({\n ...this._def,\n returns: returnType,\n });\n }\n implement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n strictImplement(func) {\n const validatedFunc = this.parse(func);\n return validatedFunc;\n }\n static create(args, returns, params) {\n return new ZodFunction({\n args: (args ? args : ZodTuple.create([]).rest(ZodUnknown.create())),\n returns: returns || ZodUnknown.create(),\n typeName: ZodFirstPartyTypeKind.ZodFunction,\n ...processCreateParams(params),\n });\n }\n}\nexport class ZodLazy extends ZodType {\n get schema() {\n return this._def.getter();\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const lazySchema = this._def.getter();\n return lazySchema._parse({ data: ctx.data, path: ctx.path, parent: ctx });\n }\n}\nZodLazy.create = (getter, params) => {\n return new ZodLazy({\n getter: getter,\n typeName: ZodFirstPartyTypeKind.ZodLazy,\n ...processCreateParams(params),\n });\n};\nexport class ZodLiteral extends ZodType {\n _parse(input) {\n if (input.data !== this._def.value) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_literal,\n expected: this._def.value,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n get value() {\n return this._def.value;\n }\n}\nZodLiteral.create = (value, params) => {\n return new ZodLiteral({\n value: value,\n typeName: ZodFirstPartyTypeKind.ZodLiteral,\n ...processCreateParams(params),\n });\n};\nfunction createZodEnum(values, params) {\n return new ZodEnum({\n values,\n typeName: ZodFirstPartyTypeKind.ZodEnum,\n ...processCreateParams(params),\n });\n}\nexport class ZodEnum extends ZodType {\n _parse(input) {\n if (typeof input.data !== \"string\") {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(this._def.values);\n }\n if (!this._cache.has(input.data)) {\n const ctx = this._getOrReturnCtx(input);\n const expectedValues = this._def.values;\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get options() {\n return this._def.values;\n }\n get enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Values() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n get Enum() {\n const enumValues = {};\n for (const val of this._def.values) {\n enumValues[val] = val;\n }\n return enumValues;\n }\n extract(values, newDef = this._def) {\n return ZodEnum.create(values, {\n ...this._def,\n ...newDef,\n });\n }\n exclude(values, newDef = this._def) {\n return ZodEnum.create(this.options.filter((opt) => !values.includes(opt)), {\n ...this._def,\n ...newDef,\n });\n }\n}\nZodEnum.create = createZodEnum;\nexport class ZodNativeEnum extends ZodType {\n _parse(input) {\n const nativeEnumValues = util.getValidEnumValues(this._def.values);\n const ctx = this._getOrReturnCtx(input);\n if (ctx.parsedType !== ZodParsedType.string && ctx.parsedType !== ZodParsedType.number) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n expected: util.joinValues(expectedValues),\n received: ctx.parsedType,\n code: ZodIssueCode.invalid_type,\n });\n return INVALID;\n }\n if (!this._cache) {\n this._cache = new Set(util.getValidEnumValues(this._def.values));\n }\n if (!this._cache.has(input.data)) {\n const expectedValues = util.objectValues(nativeEnumValues);\n addIssueToContext(ctx, {\n received: ctx.data,\n code: ZodIssueCode.invalid_enum_value,\n options: expectedValues,\n });\n return INVALID;\n }\n return OK(input.data);\n }\n get enum() {\n return this._def.values;\n }\n}\nZodNativeEnum.create = (values, params) => {\n return new ZodNativeEnum({\n values: values,\n typeName: ZodFirstPartyTypeKind.ZodNativeEnum,\n ...processCreateParams(params),\n });\n};\nexport class ZodPromise extends ZodType {\n unwrap() {\n return this._def.type;\n }\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n if (ctx.parsedType !== ZodParsedType.promise && ctx.common.async === false) {\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.promise,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n const promisified = ctx.parsedType === ZodParsedType.promise ? ctx.data : Promise.resolve(ctx.data);\n return OK(promisified.then((data) => {\n return this._def.type.parseAsync(data, {\n path: ctx.path,\n errorMap: ctx.common.contextualErrorMap,\n });\n }));\n }\n}\nZodPromise.create = (schema, params) => {\n return new ZodPromise({\n type: schema,\n typeName: ZodFirstPartyTypeKind.ZodPromise,\n ...processCreateParams(params),\n });\n};\nexport class ZodEffects extends ZodType {\n innerType() {\n return this._def.schema;\n }\n sourceType() {\n return this._def.schema._def.typeName === ZodFirstPartyTypeKind.ZodEffects\n ? this._def.schema.sourceType()\n : this._def.schema;\n }\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n const effect = this._def.effect || null;\n const checkCtx = {\n addIssue: (arg) => {\n addIssueToContext(ctx, arg);\n if (arg.fatal) {\n status.abort();\n }\n else {\n status.dirty();\n }\n },\n get path() {\n return ctx.path;\n },\n };\n checkCtx.addIssue = checkCtx.addIssue.bind(checkCtx);\n if (effect.type === \"preprocess\") {\n const processed = effect.transform(ctx.data, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(processed).then(async (processed) => {\n if (status.value === \"aborted\")\n return INVALID;\n const result = await this._def.schema._parseAsync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n });\n }\n else {\n if (status.value === \"aborted\")\n return INVALID;\n const result = this._def.schema._parseSync({\n data: processed,\n path: ctx.path,\n parent: ctx,\n });\n if (result.status === \"aborted\")\n return INVALID;\n if (result.status === \"dirty\")\n return DIRTY(result.value);\n if (status.value === \"dirty\")\n return DIRTY(result.value);\n return result;\n }\n }\n if (effect.type === \"refinement\") {\n const executeRefinement = (acc) => {\n const result = effect.refinement(acc, checkCtx);\n if (ctx.common.async) {\n return Promise.resolve(result);\n }\n if (result instanceof Promise) {\n throw new Error(\"Async refinement encountered during synchronous parse operation. Use .parseAsync instead.\");\n }\n return acc;\n };\n if (ctx.common.async === false) {\n const inner = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n // return value is ignored\n executeRefinement(inner.value);\n return { status: status.value, value: inner.value };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((inner) => {\n if (inner.status === \"aborted\")\n return INVALID;\n if (inner.status === \"dirty\")\n status.dirty();\n return executeRefinement(inner.value).then(() => {\n return { status: status.value, value: inner.value };\n });\n });\n }\n }\n if (effect.type === \"transform\") {\n if (ctx.common.async === false) {\n const base = this._def.schema._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (!isValid(base))\n return INVALID;\n const result = effect.transform(base.value, checkCtx);\n if (result instanceof Promise) {\n throw new Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);\n }\n return { status: status.value, value: result };\n }\n else {\n return this._def.schema._parseAsync({ data: ctx.data, path: ctx.path, parent: ctx }).then((base) => {\n if (!isValid(base))\n return INVALID;\n return Promise.resolve(effect.transform(base.value, checkCtx)).then((result) => ({\n status: status.value,\n value: result,\n }));\n });\n }\n }\n util.assertNever(effect);\n }\n}\nZodEffects.create = (schema, effect, params) => {\n return new ZodEffects({\n schema,\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n effect,\n ...processCreateParams(params),\n });\n};\nZodEffects.createWithPreprocess = (preprocess, schema, params) => {\n return new ZodEffects({\n schema,\n effect: { type: \"preprocess\", transform: preprocess },\n typeName: ZodFirstPartyTypeKind.ZodEffects,\n ...processCreateParams(params),\n });\n};\nexport { ZodEffects as ZodTransformer };\nexport class ZodOptional extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.undefined) {\n return OK(undefined);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodOptional.create = (type, params) => {\n return new ZodOptional({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodOptional,\n ...processCreateParams(params),\n });\n};\nexport class ZodNullable extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType === ZodParsedType.null) {\n return OK(null);\n }\n return this._def.innerType._parse(input);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodNullable.create = (type, params) => {\n return new ZodNullable({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodNullable,\n ...processCreateParams(params),\n });\n};\nexport class ZodDefault extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n let data = ctx.data;\n if (ctx.parsedType === ZodParsedType.undefined) {\n data = this._def.defaultValue();\n }\n return this._def.innerType._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n removeDefault() {\n return this._def.innerType;\n }\n}\nZodDefault.create = (type, params) => {\n return new ZodDefault({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodDefault,\n defaultValue: typeof params.default === \"function\" ? params.default : () => params.default,\n ...processCreateParams(params),\n });\n};\nexport class ZodCatch extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n // newCtx is used to not collect issues from inner types in ctx\n const newCtx = {\n ...ctx,\n common: {\n ...ctx.common,\n issues: [],\n },\n };\n const result = this._def.innerType._parse({\n data: newCtx.data,\n path: newCtx.path,\n parent: {\n ...newCtx,\n },\n });\n if (isAsync(result)) {\n return result.then((result) => {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n });\n }\n else {\n return {\n status: \"valid\",\n value: result.status === \"valid\"\n ? result.value\n : this._def.catchValue({\n get error() {\n return new ZodError(newCtx.common.issues);\n },\n input: newCtx.data,\n }),\n };\n }\n }\n removeCatch() {\n return this._def.innerType;\n }\n}\nZodCatch.create = (type, params) => {\n return new ZodCatch({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodCatch,\n catchValue: typeof params.catch === \"function\" ? params.catch : () => params.catch,\n ...processCreateParams(params),\n });\n};\nexport class ZodNaN extends ZodType {\n _parse(input) {\n const parsedType = this._getType(input);\n if (parsedType !== ZodParsedType.nan) {\n const ctx = this._getOrReturnCtx(input);\n addIssueToContext(ctx, {\n code: ZodIssueCode.invalid_type,\n expected: ZodParsedType.nan,\n received: ctx.parsedType,\n });\n return INVALID;\n }\n return { status: \"valid\", value: input.data };\n }\n}\nZodNaN.create = (params) => {\n return new ZodNaN({\n typeName: ZodFirstPartyTypeKind.ZodNaN,\n ...processCreateParams(params),\n });\n};\nexport const BRAND = Symbol(\"zod_brand\");\nexport class ZodBranded extends ZodType {\n _parse(input) {\n const { ctx } = this._processInputParams(input);\n const data = ctx.data;\n return this._def.type._parse({\n data,\n path: ctx.path,\n parent: ctx,\n });\n }\n unwrap() {\n return this._def.type;\n }\n}\nexport class ZodPipeline extends ZodType {\n _parse(input) {\n const { status, ctx } = this._processInputParams(input);\n if (ctx.common.async) {\n const handleAsync = async () => {\n const inResult = await this._def.in._parseAsync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return DIRTY(inResult.value);\n }\n else {\n return this._def.out._parseAsync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n };\n return handleAsync();\n }\n else {\n const inResult = this._def.in._parseSync({\n data: ctx.data,\n path: ctx.path,\n parent: ctx,\n });\n if (inResult.status === \"aborted\")\n return INVALID;\n if (inResult.status === \"dirty\") {\n status.dirty();\n return {\n status: \"dirty\",\n value: inResult.value,\n };\n }\n else {\n return this._def.out._parseSync({\n data: inResult.value,\n path: ctx.path,\n parent: ctx,\n });\n }\n }\n }\n static create(a, b) {\n return new ZodPipeline({\n in: a,\n out: b,\n typeName: ZodFirstPartyTypeKind.ZodPipeline,\n });\n }\n}\nexport class ZodReadonly extends ZodType {\n _parse(input) {\n const result = this._def.innerType._parse(input);\n const freeze = (data) => {\n if (isValid(data)) {\n data.value = Object.freeze(data.value);\n }\n return data;\n };\n return isAsync(result) ? result.then((data) => freeze(data)) : freeze(result);\n }\n unwrap() {\n return this._def.innerType;\n }\n}\nZodReadonly.create = (type, params) => {\n return new ZodReadonly({\n innerType: type,\n typeName: ZodFirstPartyTypeKind.ZodReadonly,\n ...processCreateParams(params),\n });\n};\n////////////////////////////////////////\n////////////////////////////////////////\n////////// //////////\n////////// z.custom //////////\n////////// //////////\n////////////////////////////////////////\n////////////////////////////////////////\nfunction cleanParams(params, data) {\n const p = typeof params === \"function\" ? params(data) : typeof params === \"string\" ? { message: params } : params;\n const p2 = typeof p === \"string\" ? { message: p } : p;\n return p2;\n}\nexport function custom(check, _params = {}, \n/**\n * @deprecated\n *\n * Pass `fatal` into the params object instead:\n *\n * ```ts\n * z.string().custom((val) => val.length > 5, { fatal: false })\n * ```\n *\n */\nfatal) {\n if (check)\n return ZodAny.create().superRefine((data, ctx) => {\n const r = check(data);\n if (r instanceof Promise) {\n return r.then((r) => {\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n });\n }\n if (!r) {\n const params = cleanParams(_params, data);\n const _fatal = params.fatal ?? fatal ?? true;\n ctx.addIssue({ code: \"custom\", ...params, fatal: _fatal });\n }\n return;\n });\n return ZodAny.create();\n}\nexport { ZodType as Schema, ZodType as ZodSchema };\nexport const late = {\n object: ZodObject.lazycreate,\n};\nexport var ZodFirstPartyTypeKind;\n(function (ZodFirstPartyTypeKind) {\n ZodFirstPartyTypeKind[\"ZodString\"] = \"ZodString\";\n ZodFirstPartyTypeKind[\"ZodNumber\"] = \"ZodNumber\";\n ZodFirstPartyTypeKind[\"ZodNaN\"] = \"ZodNaN\";\n ZodFirstPartyTypeKind[\"ZodBigInt\"] = \"ZodBigInt\";\n ZodFirstPartyTypeKind[\"ZodBoolean\"] = \"ZodBoolean\";\n ZodFirstPartyTypeKind[\"ZodDate\"] = \"ZodDate\";\n ZodFirstPartyTypeKind[\"ZodSymbol\"] = \"ZodSymbol\";\n ZodFirstPartyTypeKind[\"ZodUndefined\"] = \"ZodUndefined\";\n ZodFirstPartyTypeKind[\"ZodNull\"] = \"ZodNull\";\n ZodFirstPartyTypeKind[\"ZodAny\"] = \"ZodAny\";\n ZodFirstPartyTypeKind[\"ZodUnknown\"] = \"ZodUnknown\";\n ZodFirstPartyTypeKind[\"ZodNever\"] = \"ZodNever\";\n ZodFirstPartyTypeKind[\"ZodVoid\"] = \"ZodVoid\";\n ZodFirstPartyTypeKind[\"ZodArray\"] = \"ZodArray\";\n ZodFirstPartyTypeKind[\"ZodObject\"] = \"ZodObject\";\n ZodFirstPartyTypeKind[\"ZodUnion\"] = \"ZodUnion\";\n ZodFirstPartyTypeKind[\"ZodDiscriminatedUnion\"] = \"ZodDiscriminatedUnion\";\n ZodFirstPartyTypeKind[\"ZodIntersection\"] = \"ZodIntersection\";\n ZodFirstPartyTypeKind[\"ZodTuple\"] = \"ZodTuple\";\n ZodFirstPartyTypeKind[\"ZodRecord\"] = \"ZodRecord\";\n ZodFirstPartyTypeKind[\"ZodMap\"] = \"ZodMap\";\n ZodFirstPartyTypeKind[\"ZodSet\"] = \"ZodSet\";\n ZodFirstPartyTypeKind[\"ZodFunction\"] = \"ZodFunction\";\n ZodFirstPartyTypeKind[\"ZodLazy\"] = \"ZodLazy\";\n ZodFirstPartyTypeKind[\"ZodLiteral\"] = \"ZodLiteral\";\n ZodFirstPartyTypeKind[\"ZodEnum\"] = \"ZodEnum\";\n ZodFirstPartyTypeKind[\"ZodEffects\"] = \"ZodEffects\";\n ZodFirstPartyTypeKind[\"ZodNativeEnum\"] = \"ZodNativeEnum\";\n ZodFirstPartyTypeKind[\"ZodOptional\"] = \"ZodOptional\";\n ZodFirstPartyTypeKind[\"ZodNullable\"] = \"ZodNullable\";\n ZodFirstPartyTypeKind[\"ZodDefault\"] = \"ZodDefault\";\n ZodFirstPartyTypeKind[\"ZodCatch\"] = \"ZodCatch\";\n ZodFirstPartyTypeKind[\"ZodPromise\"] = \"ZodPromise\";\n ZodFirstPartyTypeKind[\"ZodBranded\"] = \"ZodBranded\";\n ZodFirstPartyTypeKind[\"ZodPipeline\"] = \"ZodPipeline\";\n ZodFirstPartyTypeKind[\"ZodReadonly\"] = \"ZodReadonly\";\n})(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));\n// requires TS 4.4+\nclass Class {\n constructor(..._) { }\n}\nconst instanceOfType = (\n// const instanceOfType = <T extends new (...args: any[]) => any>(\ncls, params = {\n message: `Input not instance of ${cls.name}`,\n}) => custom((data) => data instanceof cls, params);\nconst stringType = ZodString.create;\nconst numberType = ZodNumber.create;\nconst nanType = ZodNaN.create;\nconst bigIntType = ZodBigInt.create;\nconst booleanType = ZodBoolean.create;\nconst dateType = ZodDate.create;\nconst symbolType = ZodSymbol.create;\nconst undefinedType = ZodUndefined.create;\nconst nullType = ZodNull.create;\nconst anyType = ZodAny.create;\nconst unknownType = ZodUnknown.create;\nconst neverType = ZodNever.create;\nconst voidType = ZodVoid.create;\nconst arrayType = ZodArray.create;\nconst objectType = ZodObject.create;\nconst strictObjectType = ZodObject.strictCreate;\nconst unionType = ZodUnion.create;\nconst discriminatedUnionType = ZodDiscriminatedUnion.create;\nconst intersectionType = ZodIntersection.create;\nconst tupleType = ZodTuple.create;\nconst recordType = ZodRecord.create;\nconst mapType = ZodMap.create;\nconst setType = ZodSet.create;\nconst functionType = ZodFunction.create;\nconst lazyType = ZodLazy.create;\nconst literalType = ZodLiteral.create;\nconst enumType = ZodEnum.create;\nconst nativeEnumType = ZodNativeEnum.create;\nconst promiseType = ZodPromise.create;\nconst effectsType = ZodEffects.create;\nconst optionalType = ZodOptional.create;\nconst nullableType = ZodNullable.create;\nconst preprocessType = ZodEffects.createWithPreprocess;\nconst pipelineType = ZodPipeline.create;\nconst ostring = () => stringType().optional();\nconst onumber = () => numberType().optional();\nconst oboolean = () => booleanType().optional();\nexport const coerce = {\n string: ((arg) => ZodString.create({ ...arg, coerce: true })),\n number: ((arg) => ZodNumber.create({ ...arg, coerce: true })),\n boolean: ((arg) => ZodBoolean.create({\n ...arg,\n coerce: true,\n })),\n bigint: ((arg) => ZodBigInt.create({ ...arg, coerce: true })),\n date: ((arg) => ZodDate.create({ ...arg, coerce: true })),\n};\nexport { anyType as any, arrayType as array, bigIntType as bigint, booleanType as boolean, dateType as date, discriminatedUnionType as discriminatedUnion, effectsType as effect, enumType as enum, functionType as function, instanceOfType as instanceof, intersectionType as intersection, lazyType as lazy, literalType as literal, mapType as map, nanType as nan, nativeEnumType as nativeEnum, neverType as never, nullType as null, nullableType as nullable, numberType as number, objectType as object, oboolean, onumber, optionalType as optional, ostring, pipelineType as pipeline, preprocessType as preprocess, promiseType as promise, recordType as record, setType as set, strictObjectType as strictObject, stringType as string, symbolType as symbol, effectsType as transformer, tupleType as tuple, undefinedType as undefined, unionType as union, unknownType as unknown, voidType as void, };\nexport const NEVER = INVALID;\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { appendEvent, recordSearchForCorrelation } from \"../../core/telemetry.js\";\n\n/**\n * Selection telemetry (v1.3.1): record what a semantic search returned and prime\n * the correlation ring so a subsequent read_note can be attributed to it. Awaited\n * so the log is durable before the result returns; appendEvent never throws and\n * respects the opt-out, so it can't fail the search.\n */\nasync function logSearch(ctx: ServerContext, tool: string, query: string, enriched: any[]): Promise<void> {\n const results = enriched.map((r) => ({\n path: r.path,\n score: r.score,\n ...(r.decay ? { decay: r.decay.multiplier } : {}),\n }));\n recordSearchForCorrelation(ctx.notesPath, results.map((r) => r.path));\n await appendEvent(ctx.notesPath, { kind: \"search\", tool, query, results });\n}\n\nexport function registerSearchTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"search_semantic\",\n \"Vector similarity search — find notes similar to a query by meaning. Scores are boosted by load_priority and down-weighted by confidence decay (time since last_verified); decayed results carry a `decay` block. Set decay.enabled:false in vault.schema.yml to disable.\",\n {\n query: z.string(),\n limit: z.coerce.number().optional().default(10),\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date (e.g. '2026-01-01')\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status (e.g. 'active', 'draft')\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier (e.g. 'guide', 'reference')\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain (e.g. 'api', 'security')\"),\n },\n async ({ query, limit, modifiedAfter, modifiedBefore, status, tier, domain }) => {\n const vectorIndex = ctx.getVectorIndex();\n if (!vectorIndex) {\n return ctx.textResponse(ctx.indexingMessage());\n }\n const queryEmbed = await ctx.embedder.embed(query);\n await ctx.refreshUsageBoost();\n let results = vectorIndex.search(queryEmbed, limit * 3);\n results = results.map((r) => ctx.applyUsageBoost(ctx.applyPathClass(ctx.applyDecay({ ...r, score: ctx.applyPriorityBoost(r.score, r.path) }))));\n results.sort((a, b) => b.score - a.score);\n results = ctx.applyDateFilter(results, modifiedAfter, modifiedBefore);\n const docByPath = ctx.getDocByPath();\n if (status) results = results.filter((r) => docByPath.get(r.path)?.status === status);\n if (tier) results = results.filter((r) => docByPath.get(r.path)?.tier === tier);\n if (domain) results = results.filter((r) => docByPath.get(r.path)?.domains?.includes(domain));\n const enriched = results.slice(0, limit).map((r) => ctx.enrichResult(r));\n await logSearch(ctx, \"search_semantic\", query, enriched);\n return ctx.textResponse(JSON.stringify(enriched, null, 2));\n }\n );\n\n server.tool(\n \"search_text\",\n \"Full-text keyword or regex search across all notes with optional filters\",\n {\n pattern: z.string(),\n regex: z.boolean().optional().default(false),\n caseSensitive: z.boolean().optional().default(false),\n pathGlob: z.string().optional(),\n tagFilter: z.array(z.string()).optional(),\n limit: z.coerce.number().optional().default(20),\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain\"),\n },\n async ({ modifiedAfter, modifiedBefore, status, tier, domain, ...opts }) => {\n const documents = ctx.getDocuments();\n if (documents.length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n let results = ctx.textSearch.search(opts);\n results = ctx.applyDateFilter(results, modifiedAfter, modifiedBefore);\n const docByPath = ctx.getDocByPath();\n if (status) results = results.filter((r) => docByPath.get(r.path)?.status === status);\n if (tier) results = results.filter((r) => docByPath.get(r.path)?.tier === tier);\n if (domain) results = results.filter((r) => docByPath.get(r.path)?.domains?.includes(domain));\n const enriched = results.map((r) => ctx.enrichResult(r));\n return ctx.textResponse(JSON.stringify(enriched, null, 2));\n }\n );\n\n server.tool(\n \"search_graph\",\n \"Graph traversal — find notes connected to a concept via wikilinks, related_docs, and specific tags. Results ranked by directness, load_priority, and degree.\",\n {\n concept: z.string(),\n maxDepth: z.coerce.number().optional().default(2),\n limit: z.coerce.number().optional().default(20),\n },\n async ({ concept, maxDepth, limit }) => {\n const documents = ctx.getDocuments();\n if (documents.length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const results = ctx.graph.searchGraph(concept, maxDepth, limit);\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n\n server.tool(\n \"search_hybrid\",\n \"Combined semantic + graph search — vector results re-ranked by graph proximity and load_priority, and down-weighted by confidence decay (time since last_verified); decayed results carry a `decay` block.\",\n {\n query: z.string(),\n limit: z.coerce.number().optional().default(10),\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain\"),\n },\n async ({ query, limit, modifiedAfter, modifiedBefore, status, tier, domain }) => {\n const vectorIndex = ctx.getVectorIndex();\n if (!vectorIndex) {\n return ctx.textResponse(ctx.indexingMessage());\n }\n\n const queryEmbed = await ctx.embedder.embed(query);\n await ctx.refreshUsageBoost();\n const semanticResults = vectorIndex.search(queryEmbed, limit * 3);\n const graphResults = ctx.graph.searchGraph(query, 2);\n const graphPaths = new Set(graphResults.map((r) => r.path));\n\n let hybrid = semanticResults.map((r) =>\n ctx.applyUsageBoost(\n ctx.applyPathClass(\n ctx.applyDecay({\n ...r,\n score: ctx.applyPriorityBoost(graphPaths.has(r.path) ? r.score * 1.3 : r.score, r.path),\n })\n )\n )\n );\n hybrid.sort((a, b) => b.score - a.score);\n\n hybrid = ctx.applyDateFilter(hybrid, modifiedAfter, modifiedBefore);\n const docByPath = ctx.getDocByPath();\n if (status) hybrid = hybrid.filter((r) => docByPath.get(r.path)?.status === status);\n if (tier) hybrid = hybrid.filter((r) => docByPath.get(r.path)?.tier === tier);\n if (domain) hybrid = hybrid.filter((r) => docByPath.get(r.path)?.domains?.includes(domain));\n\n const enriched = hybrid.slice(0, limit).map((r) => ctx.enrichResult(r));\n await logSearch(ctx, \"search_hybrid\", query, enriched);\n return ctx.textResponse(JSON.stringify(enriched, null, 2));\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { appendEvent, wasRecentlySearched } from \"../../core/telemetry.js\";\nimport { extractSection } from \"../../core/section.js\";\n\nexport function registerReadTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"read_note\",\n \"Read a note by path. Pass `section` (a heading name) to read only that heading's section instead of the whole file — cheaper when you only need one part (e.g. a dossier's 'Knobs' section).\",\n { path: z.string(), section: z.string().optional().describe(\"Heading name — return only that section (heading through the next same-or-higher heading).\") },\n async ({ path, section }) => {\n const content = await ctx.crud.read(path);\n // Selection telemetry (v1.3.1): reading a note is a \"this got used\" signal —\n // the valuable, low-frequency half of the log. Awaited so it's durably\n // recorded before we return; appendEvent never throws and respects the opt-out,\n // so it can add tiny latency but can never fail the read.\n await appendEvent(ctx.notesPath, {\n kind: \"selection\",\n note_path: path,\n via: \"read_note\",\n correlated: wasRecentlySearched(ctx.notesPath, path),\n });\n if (section) {\n const extracted = extractSection(content, section);\n return ctx.textResponse(extracted ?? `Section \"${section}\" not found in ${path}. Read without \\`section\\` for the full note.`);\n }\n return ctx.textResponse(content);\n }\n );\n\n server.tool(\n \"read_multiple_notes\",\n \"[DEPRECATED — removed in v2.0.0; use read_note in a loop or via batched MCP calls] Batch read multiple notes in one call\",\n { paths: z.array(z.string()) },\n async ({ paths }) => {\n const results = await ctx.crud.readMultiple(paths);\n const output: Record<string, string> = {};\n for (const [k, v] of results) output[k] = v;\n return ctx.textResponse(JSON.stringify(output, null, 2));\n }\n );\n\n server.tool(\n \"list_notes\",\n \"List all indexed notes with metadata (title, tags, timestamps, link count). Supports filtering by date, status, tier, and domain.\",\n {\n modifiedAfter: z.string().optional().describe(\"ISO date — only return notes modified after this date (e.g. '2026-01-01')\"),\n modifiedBefore: z.string().optional().describe(\"ISO date — only return notes modified before this date\"),\n status: z.string().optional().describe(\"Filter by frontmatter status (e.g. 'active', 'deprecated')\"),\n tier: z.string().optional().describe(\"Filter by frontmatter tier (e.g. 'guide', 'reference')\"),\n domain: z.string().optional().describe(\"Filter by frontmatter domain (e.g. 'api', 'security')\"),\n },\n async ({ modifiedAfter, modifiedBefore, status, tier, domain }) => {\n const documents = ctx.getDocuments();\n if (documents.length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const after = modifiedAfter ? new Date(modifiedAfter).getTime() : -Infinity;\n const before = modifiedBefore ? new Date(modifiedBefore).getTime() : Infinity;\n\n const list = documents\n .filter((d) => {\n const t = new Date(d.mtime).getTime();\n if (t < after || t > before) return false;\n if (status && d.status !== status) return false;\n if (tier && d.tier !== tier) return false;\n if (domain && !d.domains?.includes(domain)) return false;\n return true;\n })\n .map((d) => ({\n path: d.path,\n title: d.title,\n mtime: d.mtime,\n tags: d.tags,\n wikilinks: d.wikilinks.length,\n chunks: d.chunks.length,\n ...(d.loadPriority !== undefined && { loadPriority: d.loadPriority }),\n ...(d.status !== undefined && { status: d.status }),\n ...(d.tier !== undefined && { tier: d.tier }),\n ...(d.domains !== undefined && { domains: d.domains }),\n ...(d.purpose !== undefined && { purpose: d.purpose }),\n }));\n\n return ctx.textResponse(JSON.stringify(list, null, 2));\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { redactedNote } from \"../../core/redact.js\";\n\nexport function registerWriteTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"create_note\",\n \"Create a new markdown note\",\n {\n path: z.string(),\n content: z.string(),\n frontmatter: z.record(z.unknown()).optional(),\n },\n async ({ path, content, frontmatter }) => {\n const { redacted } = await ctx.crud.create(path, content, frontmatter);\n return ctx.textResponse(`Created: ${path}${redactedNote(redacted)}`);\n }\n );\n\n server.tool(\n \"update_note\",\n \"Edit note content — overwrite, append, prepend, or patch by heading\",\n {\n path: z.string(),\n content: z.string(),\n mode: z.enum([\"overwrite\", \"append\", \"prepend\", \"patch-by-heading\"]),\n heading: z.string().optional(),\n },\n async ({ path, content, mode, heading }) => {\n const { redacted } = await ctx.crud.update(path, content, { mode, heading });\n return ctx.textResponse(`Updated: ${path} (${mode})${redactedNote(redacted)}`);\n }\n );\n\n server.tool(\n \"delete_note\",\n \"Delete a note permanently\",\n { path: z.string(), confirm: z.boolean().default(false) },\n async ({ path, confirm }) => {\n if (!confirm) return ctx.textResponse(`Set confirm=true to delete ${path}`);\n await ctx.crud.delete(path);\n return ctx.textResponse(`Deleted: ${path}`);\n }\n );\n\n server.tool(\n \"move_note\",\n \"Move or rename a note — updates wikilinks across the vault\",\n { from: z.string(), to: z.string() },\n async ({ from, to }) => {\n await ctx.crud.move(from, to);\n return ctx.textResponse(`Moved: ${from} → ${to}`);\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { applyPatch, type ChangeSet } from \"../../core/patch.js\";\nimport { buildSynthesizeChangeSet, buildPromoteChangeSet } from \"../../core/synthesize.js\";\nimport { buildIngestChangeSet } from \"../../core/ingest.js\";\nimport { installDefaultSchema } from \"../../core/schema.js\";\nimport { logEvent } from \"../../core/log.js\";\nimport { computeDecay, loadDecayConfig } from \"../../core/decay.js\";\nimport { addAlias, removeAlias, compileLexicon, loadLexiconCache, expandQuery } from \"../../core/lexicon.js\";\nimport { initDossier, listDossiers, appendIncident, setCurrentState, resolveDossierPath, compileDossiers } from \"../../core/dossier.js\";\nimport { initSpeakerProfile, readSpeakerProfile, updateProfileSection, SPEAKER_PROFILE_PATH } from \"../../core/profile.js\";\nimport { readFile } from \"node:fs/promises\";\nimport { join } from \"node:path\";\nimport matter from \"../../core/matter.js\";\n\nexport function registerPatchTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"apply_patch\",\n \"Atomic multi-note patch with rollback — apply a ChangeSet of creates/updates/deletes/moves. If any op fails, earlier ops are reverted. In dry-run, nothing is written; result describes the proposed state + schema findings.\",\n {\n creates: z\n .array(\n z.object({\n path: z.string(),\n content: z.string(),\n frontmatter: z.record(z.unknown()).optional(),\n })\n )\n .optional(),\n updates: z\n .array(\n z.object({\n path: z.string(),\n content: z.string(),\n mode: z.enum([\"overwrite\", \"append\", \"prepend\", \"patch-by-heading\"]),\n heading: z.string().optional(),\n })\n )\n .optional(),\n deletes: z.array(z.object({ path: z.string() })).optional(),\n moves: z.array(z.object({ from: z.string(), to: z.string() })).optional(),\n dry_run: z.boolean().optional().default(false),\n validate: z.boolean().optional().default(true),\n allow_lint_warnings: z.boolean().optional().default(true),\n },\n async (args) => {\n const cs: ChangeSet = {\n creates: args.creates,\n updates: args.updates,\n deletes: args.deletes,\n moves: args.moves,\n };\n const result = await applyPatch(ctx.notesPath, cs, {\n dryRun: args.dry_run,\n validate: args.validate,\n allowLintWarnings: args.allow_lint_warnings,\n });\n if (!result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"error\",\n summary: `apply_patch failed: ${result.errors[0] ?? \"unknown\"}`,\n payload: { tool: \"apply_patch\", errors: result.errors, rolled_back: result.rolledBack.length },\n }).catch(() => { /* never let logging failure mask the real error */ });\n }\n if (result.ok && !args.dry_run) {\n const touched = result.applied.map((o) => o.path);\n await ctx.sessions.recordNotesTouched(touched).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"synthesize_note\",\n \"Turn a researched answer + sources into a new filed note with provenance frontmatter and auto-wikilinks. Builds a ChangeSet and applies it (dry-run supported). The primary path from query-answer to durable vault artifact. Pass `proposal: true` to file the result under `proposals/<date>-<slug>.md` with `status: proposal` for review-first workflows; `synthesize_promote` then moves it to the canonical destination.\",\n {\n topic: z.string(),\n answer: z.string(),\n suggested_path: z.string().describe(\"Target path relative to vault root, e.g. 'decisions/auth-migration.md'. In proposal mode, this is recorded as proposed_target frontmatter and the actual write goes to proposals/.\"),\n type: z.string().optional().default(\"note\").describe(\"One of the schema types: note, decision, gotcha, source\"),\n sources: z.array(z.string()).optional().describe(\"External URLs or paths — populate provenance.sources\"),\n derived_from: z.array(z.string()).optional().describe(\"Wikilinks to other vault notes — populate provenance.derived_from\"),\n related_notes: z.array(z.string()).optional().describe(\"Note names or paths to auto-link in the body + list under Related\"),\n status: z.string().optional().default(\"active\"),\n confidence: z.string().optional().default(\"medium\"),\n decision_maker: z.string().optional(),\n decided_on: z.string().optional(),\n severity: z.string().optional(),\n symptoms: z.array(z.string()).optional().describe(\"Verbatim symptom phrases in the user's own words (e.g. 'it hangs after the second reindex'). Stored as `symptoms:` frontmatter and symptom-keyed at index time so terse symptom queries match this note — the retrieval key for next time.\"),\n dry_run: z.boolean().optional().default(false),\n proposal: z.boolean().optional().default(false).describe(\"Write to proposals/<date>-<slug>.md with status:proposal instead of the canonical destination. Use for review-first workflows.\"),\n proposal_subdir: z.string().optional().describe(\"Override the proposal subdirectory (default 'proposals'). Useful for source segregation, e.g. 'proposals/research'.\"),\n from_session: z.boolean().optional().default(false).describe(\"When true, pull defaults from the active session: prepend a verification summary to `answer`, default `derived_from` to session.notes_touched, and append session id+task to `sources`. No-op when no session is active.\"),\n },\n async (args) => {\n // from_session: if requested AND a session is active, enrich the synthesis input\n // with session context so the agent has fewer fields to specify by hand.\n let answer = args.answer;\n let derivedFrom = args.derived_from;\n let sources = args.sources;\n if (args.from_session) {\n const session = await ctx.sessions.readActive();\n if (session) {\n const verifLines = session.verifications.map((v) =>\n `- \\`${v.cmd}\\` → exit=${v.exit ?? \"(killed)\"} in ${v.duration_ms}ms`\n );\n if (verifLines.length > 0) {\n answer = `${answer}\\n\\n## Session verifications (${session.id})\\n\\n${verifLines.join(\"\\n\")}\\n`;\n }\n if ((!derivedFrom || derivedFrom.length === 0) && session.notes_touched.length > 0) {\n derivedFrom = [...session.notes_touched];\n }\n const sessionTag = `session:${session.id} task:${session.task}`;\n sources = sources ? [...sources, sessionTag] : [sessionTag];\n }\n }\n\n const preview = buildSynthesizeChangeSet({\n topic: args.topic,\n answer,\n suggested_path: args.suggested_path,\n type: args.type,\n sources,\n derived_from: derivedFrom,\n related_notes: args.related_notes,\n status: args.status,\n confidence: args.confidence,\n decision_maker: args.decision_maker,\n decided_on: args.decided_on,\n severity: args.severity,\n symptoms: args.symptoms,\n proposal: args.proposal,\n proposal_subdir: args.proposal_subdir,\n });\n const result = await applyPatch(ctx.notesPath, preview.changeset, {\n dryRun: args.dry_run,\n });\n if (result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"synthesis\",\n summary: `synthesized ${preview.title}${preview.is_proposal ? \" (proposal)\" : \"\"}`,\n payload: {\n path: preview.path,\n type: args.type,\n sources: sources ?? [],\n derived_from: derivedFrom ?? [],\n ...(preview.is_proposal && { is_proposal: true, proposed_target: preview.proposed_target }),\n },\n }).catch(() => {});\n await ctx.sessions.recordNotesTouched([preview.path]).catch(() => {});\n } else if (!result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"error\",\n summary: `synthesize_note failed: ${result.errors[0] ?? \"unknown\"}`,\n payload: { tool: \"synthesize_note\", path: preview.path, errors: result.errors },\n }).catch(() => {});\n }\n return ctx.textResponse(\n JSON.stringify(\n {\n preview: {\n path: preview.path,\n title: preview.title,\n ...(preview.is_proposal && { is_proposal: true, proposed_target: preview.proposed_target }),\n },\n result,\n },\n null,\n 2\n )\n );\n }\n );\n\n server.tool(\n \"synthesize_promote\",\n \"Move a reviewed proposal note to its canonical destination. Reads the proposal's frontmatter (which must have `status: proposal` and `proposed_target`), strips proposal markers, restores canonical status, and atomically creates the target + deletes the proposal. Optional `target_path` overrides the proposal's recorded `proposed_target`.\",\n {\n proposal_path: z.string().describe(\"Path to the proposal note relative to vault root, e.g. 'proposals/2026-05-08-auth-flow.md'\"),\n target_path: z.string().optional().describe(\"Optional destination override. When omitted, uses the proposal's own `proposed_target` frontmatter.\"),\n dry_run: z.boolean().optional().default(false),\n },\n async (args) => {\n const absoluteProposalPath = join(ctx.notesPath, args.proposal_path);\n let raw: string;\n try {\n raw = await readFile(absoluteProposalPath, \"utf-8\");\n } catch (err) {\n return ctx.textResponse(JSON.stringify({\n ok: false,\n error: `Proposal file not found: ${args.proposal_path}`,\n }, null, 2));\n }\n const parsed = matter(raw);\n const fm = parsed.data as Record<string, unknown>;\n if (fm.status !== \"proposal\") {\n return ctx.textResponse(JSON.stringify({\n ok: false,\n error: `Note ${args.proposal_path} does not have status:proposal frontmatter (got status=${JSON.stringify(fm.status)}). Refusing to promote — only proposal-flagged notes are eligible.`,\n }, null, 2));\n }\n\n let preview;\n try {\n preview = buildPromoteChangeSet({\n proposal_path: args.proposal_path,\n target_path: args.target_path,\n body: parsed.content,\n frontmatter: fm,\n });\n } catch (err: any) {\n return ctx.textResponse(JSON.stringify({ ok: false, error: err?.message ?? String(err) }, null, 2));\n }\n\n const result = await applyPatch(ctx.notesPath, preview.changeset, { dryRun: args.dry_run });\n if (result.ok && !args.dry_run) {\n await logEvent(ctx.notesPath, {\n kind: \"synthesis\",\n summary: `promoted proposal ${preview.from} → ${preview.to}`,\n payload: { tool: \"synthesize_promote\", from: preview.from, to: preview.to },\n }).catch(() => {});\n await ctx.sessions.recordNotesTouched([preview.to]).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify({ preview: { from: preview.from, to: preview.to }, result }, null, 2));\n }\n );\n\n server.tool(\n \"ingest_source\",\n \"Build + apply a ChangeSet that ingests a source (paper, doc, URL) and the notes extracted from it. Produces one sources/<slug>.md note (type=source) plus one create per extracted unit, each stamped with derived_from pointing at the source. Routes through apply_patch — atomic, validated, rollback-capable, dry-run supported.\",\n {\n source: z.object({\n source_uri: z.string(),\n source_title: z.string(),\n source_type: z.string().optional(),\n source_path: z.string().optional(),\n source_summary: z.string().optional(),\n source_tags: z.array(z.string()).optional(),\n }),\n units: z.array(\n z.object({\n path: z.string(),\n title: z.string().optional(),\n content: z.string(),\n type: z.string().optional(),\n extra_derived_from: z.array(z.string()).optional(),\n extra_frontmatter: z.record(z.unknown()).optional(),\n confidence: z.string().optional(),\n })\n ),\n dry_run: z.boolean().optional().default(false),\n auto_apply: z.boolean().optional().default(true).describe(\"If false, force dry-run regardless of dry_run flag — use for review-first workflows\"),\n },\n async (args) => {\n const preview = buildIngestChangeSet({\n source: args.source,\n units: args.units,\n });\n const dry = args.dry_run || args.auto_apply === false;\n const result = await applyPatch(ctx.notesPath, preview.changeset, { dryRun: dry });\n if (result.ok && !dry) {\n await logEvent(ctx.notesPath, {\n kind: \"ingest\",\n summary: `ingested ${preview.unitPaths.length} note(s) from ${args.source.source_title}`,\n payload: {\n source_path: preview.sourcePath,\n unit_paths: preview.unitPaths,\n source_uri: args.source.source_uri,\n },\n }).catch(() => {});\n } else if (!result.ok && !dry) {\n await logEvent(ctx.notesPath, {\n kind: \"error\",\n summary: `ingest_source failed: ${result.errors[0] ?? \"unknown\"}`,\n payload: {\n tool: \"ingest_source\",\n source_uri: args.source.source_uri,\n source_title: args.source.source_title,\n errors: result.errors,\n },\n }).catch(() => {});\n }\n return ctx.textResponse(\n JSON.stringify(\n {\n preview: {\n source_path: preview.sourcePath,\n unit_paths: preview.unitPaths,\n },\n result,\n dry_run: dry,\n },\n null,\n 2\n )\n );\n }\n );\n\n server.tool(\n \"install_schema\",\n \"Bootstrap vault.schema.yml in the vault root with the default schema (note/decision/gotcha/source types + provenance fields). Skipped if present unless force=true.\",\n { force: z.boolean().optional().default(false) },\n async ({ force }) => {\n const r = await installDefaultSchema(ctx.notesPath, force);\n return ctx.textResponse(\n r.written ? `Installed default schema: ${r.path}` : `Schema already exists: ${r.path} (pass force=true to overwrite)`\n );\n }\n );\n\n server.tool(\n \"verify_note\",\n \"Re-verify a note: stamp `last_verified` to today WITHOUT changing content or any other frontmatter field, and log a `verify` event. Resets the confidence-decay clock so the note ranks fresh again. Returns the note's new decay multiplier (typically 1.0).\",\n { path: z.string() },\n async ({ path }) => {\n let fm: Record<string, unknown>;\n try {\n fm = await ctx.frontmatterManager.get(path);\n } catch {\n return ctx.textResponse(`verify_note: note not found: ${path}`);\n }\n const today = new Date().toISOString().slice(0, 10);\n await ctx.frontmatterManager.update(path, { last_verified: today });\n await logEvent(ctx.notesPath, {\n kind: \"verify\",\n summary: `verified ${path}`,\n payload: { path, last_verified: today },\n });\n const d = computeDecay({\n type: typeof fm.type === \"string\" ? fm.type : undefined,\n last_verified: today,\n evergreen: fm.evergreen === true,\n config: loadDecayConfig(ctx.notesPath),\n });\n return ctx.textResponse(\n JSON.stringify({ path, last_verified: today, decay_multiplier: d.multiplier }, null, 2)\n );\n }\n );\n\n server.tool(\n \"manage_lexicon\",\n \"Manage the learned human→artifact lexicon (v1.4). `action`: add (upsert a canonical target + the human phrases that refer to it; bumps evidence_count on repeats), lookup (expand a query via matching alias phrases), list (all aliases), remove (by canonical), compile (rebuild the derived cache). The lexicon maps how THIS human names things to concrete paths/symbols.\",\n {\n action: z.enum([\"add\", \"lookup\", \"list\", \"remove\", \"compile\"]),\n canonical: z.string().optional().describe(\"For add/remove: the concrete target (note path or code symbol).\"),\n phrases: z.array(z.string()).optional().describe(\"For add: the human's verbatim phrases for the canonical target.\"),\n query: z.string().optional().describe(\"For lookup: the utterance to expand via alias phrases.\"),\n source: z.enum([\"learned\", \"authored\"]).optional().describe(\"For add: provenance of the binding (default learned).\"),\n },\n async ({ action, canonical, phrases, query, source }) => {\n switch (action) {\n case \"add\": {\n if (!canonical || !phrases || phrases.length === 0) return ctx.textResponse(\"manage_lexicon add requires `canonical` and non-empty `phrases`\");\n const r = await addAlias(ctx.notesPath, { canonical, phrases, source });\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"lookup\": {\n if (!query) return ctx.textResponse(\"manage_lexicon lookup requires `query`\");\n const aliases = await loadLexiconCache(ctx.notesPath);\n const { expanded, matched } = expandQuery(aliases, query);\n return ctx.textResponse(JSON.stringify({ query, expanded, matched }, null, 2));\n }\n case \"list\": {\n return ctx.textResponse(JSON.stringify(await loadLexiconCache(ctx.notesPath), null, 2));\n }\n case \"remove\": {\n if (!canonical) return ctx.textResponse(\"manage_lexicon remove requires `canonical`\");\n const removed = await removeAlias(ctx.notesPath, canonical);\n return ctx.textResponse(removed ? `removed alias: ${canonical}` : `no alias for canonical: ${canonical}`);\n }\n case \"compile\": {\n const entries = await compileLexicon(ctx.notesPath);\n return ctx.textResponse(`compiled ${entries.length} alias(es) to lexicon-cache.json`);\n }\n }\n }\n );\n\n server.tool(\n \"manage_dossier\",\n \"Manage entity dossiers (v1.5) — the per-component living notes that organize memory by entity instead of by file. `action`: init (scaffold a dossier for an entity with the fixed Purpose/Failure modes/Knobs/Incident log/Current state sections), append_incident (append a dated line to the Incident log — accretion, never a new note), set_state (replace the Current state one-liner), get (read a dossier by entity/alias/path), list (all dossiers with their current state). Knowledge about a critical component accretes IN PLACE here.\",\n {\n action: z.enum([\"init\", \"append_incident\", \"set_state\", \"get\", \"list\"]),\n entity: z.string().optional().describe(\"For init/append_incident/set_state/get: the entity name, one of its aliases, or a dossier path.\"),\n aliases: z.array(z.string()).optional().describe(\"For init: the human's phrases for this entity (fed to the lexicon compiler for query expansion).\"),\n purpose: z.string().optional().describe(\"For init: seed the Purpose section instead of the placeholder.\"),\n seeded_from: z.string().optional().describe(\"For init: provenance of the scaffold (e.g. a babel-fish project-map entry).\"),\n incident: z.string().optional().describe(\"For append_incident: what happened → cause → fix, in one line. Dated automatically.\"),\n state: z.string().optional().describe(\"For set_state: the single freshest sentence about where the entity stands.\"),\n },\n async ({ action, entity, aliases, purpose, seeded_from, incident, state }) => {\n switch (action) {\n case \"init\": {\n if (!entity) return ctx.textResponse(\"manage_dossier init requires `entity`\");\n const r = await initDossier(ctx.notesPath, entity, { aliases, purpose, seeded_from });\n if (r.created) await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"append_incident\": {\n if (!entity || !incident) return ctx.textResponse(\"manage_dossier append_incident requires `entity` and `incident`\");\n const r = await appendIncident(ctx.notesPath, entity, incident);\n if (!r) return ctx.textResponse(`no dossier for entity: ${entity} (run action:init first)`);\n await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n await logEvent(ctx.notesPath, { kind: \"synthesis\", summary: `dossier incident: ${entity}`, payload: { path: r.path, incident } }).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"set_state\": {\n if (!entity || !state) return ctx.textResponse(\"manage_dossier set_state requires `entity` and `state`\");\n const r = await setCurrentState(ctx.notesPath, entity, state);\n if (!r) return ctx.textResponse(`no dossier for entity: ${entity} (run action:init first)`);\n await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"get\": {\n if (!entity) return ctx.textResponse(\"manage_dossier get requires `entity`\");\n const rel = await resolveDossierPath(ctx.notesPath, entity);\n if (!rel) return ctx.textResponse(`no dossier for entity: ${entity}`);\n const content = await readFile(join(ctx.notesPath, rel), \"utf-8\");\n return ctx.textResponse(JSON.stringify({ path: rel, content }, null, 2));\n }\n case \"list\": {\n await compileDossiers(ctx.notesPath);\n const entries = await listDossiers(ctx.notesPath);\n return ctx.textResponse(JSON.stringify(entries, null, 2));\n }\n }\n }\n );\n\n server.tool(\n \"manage_profile\",\n \"Manage the speaker profile (v1.5) — the model of how THIS human communicates (severity calibration, chronic omissions, verbosity preference, non-entity shorthand). `action`: init (scaffold profile/speaker.md with the fixed sections), get (read it), update_section (append a learned line to — or replace — one section; scaffolds first if absent). Update it when the user corrects an interpretation (\\\"no, when I say X I mean Y\\\"). One human, one profile.\",\n {\n action: z.enum([\"init\", \"get\", \"update_section\"]),\n section: z.string().optional().describe(\"For update_section: the section heading (e.g. 'Severity calibration', 'Shorthand & terms').\"),\n text: z.string().optional().describe(\"For update_section: the learned line or replacement body.\"),\n mode: z.enum([\"append\", \"replace\"]).optional().describe(\"For update_section: append a line (default) or replace the section body.\"),\n },\n async ({ action, section, text, mode }) => {\n switch (action) {\n case \"init\": {\n const r = await initSpeakerProfile(ctx.notesPath);\n if (r.created) await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n case \"get\": {\n const p = await readSpeakerProfile(ctx.notesPath);\n if (!p) return ctx.textResponse(`no speaker profile yet (run action:init or manage_profile update_section)`);\n const content = await readFile(join(ctx.notesPath, SPEAKER_PROFILE_PATH), \"utf-8\");\n return ctx.textResponse(JSON.stringify({ path: p.path, head: p.head, content }, null, 2));\n }\n case \"update_section\": {\n if (!section || !text) return ctx.textResponse(\"manage_profile update_section requires `section` and `text`\");\n const r = await updateProfileSection(ctx.notesPath, section, text, mode ?? \"append\");\n await ctx.sessions.recordNotesTouched([r.path]).catch(() => {});\n return ctx.textResponse(JSON.stringify(r, null, 2));\n }\n }\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { lintVault } from \"../../core/lint.js\";\n\ntype LintCheck = \"schema\" | \"provenance\" | \"stale\" | \"broken_links\" | \"code_symbols\" | \"decay_candidates\" | \"alias_conflicts\" | \"decoys\" | \"secrets\" | \"skills\";\nconst ALL_CHECKS: LintCheck[] = [\"schema\", \"provenance\", \"stale\", \"broken_links\"];\n\nconst RULE_KEY_FOR_CHECK: Record<LintCheck, \"schema_violations\" | \"missing_provenance\" | \"stale\" | \"broken_links\" | \"code_symbols\" | \"decay_candidates\" | \"alias_conflicts\" | \"decoys\" | \"secrets\" | \"skills\"> = {\n schema: \"schema_violations\",\n provenance: \"missing_provenance\",\n stale: \"stale\",\n broken_links: \"broken_links\",\n code_symbols: \"code_symbols\",\n decay_candidates: \"decay_candidates\",\n alias_conflicts: \"alias_conflicts\",\n decoys: \"decoys\",\n secrets: \"secrets\",\n skills: \"skills\",\n};\n\nexport function registerLintTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"find_schema_violations\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['schema']})] Scan the vault for schema violations — missing required fields, unknown types, enum mismatches. Errors block apply_patch when validate=true.\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.schema_violations, null, 2));\n }\n );\n\n server.tool(\n \"find_missing_provenance\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['provenance']})] Scan the vault for notes of types (note/decision/gotcha by default) that lack both sources and derived_from frontmatter. Warnings by default.\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.missing_provenance, null, 2));\n }\n );\n\n server.tool(\n \"find_stale\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['stale']})] Scan the vault for notes whose last_verified date is older than the schema's stale.max_age_days (default 180).\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.stale, null, 2));\n }\n );\n\n server.tool(\n \"find_broken_links\",\n \"[DEPRECATED — removed in v2.0.0; use lint_vault({checks:['broken_links']})] Scan the vault for [[wikilinks]] that point to non-existent notes. Heavier than the other lints (cross-note check) but still metadata-only.\",\n { pathGlob: z.string().optional() },\n async ({ pathGlob }) => {\n const report = await lintVault(ctx.notesPath, { pathGlob });\n return ctx.textResponse(JSON.stringify(report.byRule.broken_links, null, 2));\n }\n );\n\n server.tool(\n \"lint_vault\",\n \"Run lint rules across the vault. Default returns the full LintReport with all findings grouped by rule. Pass `checks` to filter to specific rules (schema, provenance, stale, broken_links, code_symbols, decay_candidates) — when filtered, byRule contains only the requested rules. Two checks are opt-in only (never in the default report): `code_symbols` flags inline-code file-path references that no longer exist under the project root (no-op outside a code repo); `decay_candidates` cross-references the selection log against current decay to surface frequently-retrieved-but-decayed notes (no-op with no selection log). `decoys` flags notes retrieved 3+ times but never cited - surfaced for review, never auto-down-ranked (v1.5 Q5). `secrets` flags notes containing an API key, token, password or private key (path, line, kind — never the value; nothing is rewritten): rotate the secret, then remove it. `skills` lints the skill loop's learned skills this repo loads (format, description, evidence, sections, cites, applies_to paths, secrets, name clashes with skills it did not write).\",\n {\n pathGlob: z.string().optional(),\n checks: z\n .array(z.enum([\"schema\", \"provenance\", \"stale\", \"broken_links\", \"code_symbols\", \"decay_candidates\", \"alias_conflicts\", \"decoys\", \"secrets\", \"skills\"]))\n .optional()\n .describe(\"Filter to specific lint rules. Omit for full report (excludes the opt-in code_symbols / decay_candidates / alias_conflicts / decoys / secrets / skills).\"),\n },\n async ({ pathGlob, checks }) => {\n const report = await lintVault(ctx.notesPath, {\n pathGlob,\n checkCodeSymbols: !!checks?.includes(\"code_symbols\"),\n checkDecayCandidates: !!checks?.includes(\"decay_candidates\"),\n checkAliasConflicts: !!checks?.includes(\"alias_conflicts\"),\n checkDecoys: !!checks?.includes(\"decoys\"),\n checkSecrets: !!checks?.includes(\"secrets\"),\n checkSkills: !!checks?.includes(\"skills\"),\n });\n if (!checks || checks.length === 0) {\n return ctx.textResponse(JSON.stringify(report, null, 2));\n }\n const requested = new Set<LintCheck>(checks.length > 0 ? checks : ALL_CHECKS);\n const filteredByRule: Record<string, unknown[]> = {};\n for (const check of requested) {\n const ruleKey = RULE_KEY_FOR_CHECK[check];\n filteredByRule[ruleKey] = report.byRule[ruleKey] ?? [];\n }\n const filteredFindings = report.findings.filter((f) => {\n const matchedCheck = (Object.entries(RULE_KEY_FOR_CHECK) as [LintCheck, string][])\n .find(([, ruleKey]) => ruleKey === f.rule);\n return matchedCheck ? requested.has(matchedCheck[0]) : false;\n });\n return ctx.textResponse(\n JSON.stringify(\n {\n ...report,\n findings: filteredFindings,\n byRule: filteredByRule,\n counts: {\n ...report.counts,\n errors: filteredFindings.filter((f) => f.severity === \"error\").length,\n warnings: filteredFindings.filter((f) => f.severity === \"warn\").length,\n },\n },\n null,\n 2\n )\n );\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { logEvent, logQuery } from \"../../core/log.js\";\nimport { regenIndexesForPaths, regenDirectoryIndex } from \"../../core/index-regen.js\";\n\nexport function registerLogTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"log_query\",\n \"Read structured log entries filtered by kind and/or date range. Returns parsed entries from log.md.\",\n {\n kind: z.string().optional(),\n after: z.string().optional().describe(\"ISO timestamp (inclusive)\"),\n before: z.string().optional().describe(\"ISO timestamp (inclusive)\"),\n limit: z.coerce.number().optional(),\n },\n async (args) => {\n const entries = await logQuery(ctx.notesPath, args);\n return ctx.textResponse(JSON.stringify(entries, null, 2));\n }\n );\n\n if (!ctx.options.readOnly) {\n server.tool(\n \"log_event\",\n \"Append a structured event to the vault's log.md. Each entry renders as a human line + a machine-readable YAML block for later querying.\",\n {\n kind: z.string().describe(\"Category: ingest, synthesis, decision, incident, etc.\"),\n summary: z.string().describe(\"One-line human summary\"),\n payload: z.record(z.unknown()).optional().describe(\"Arbitrary structured data\"),\n },\n async (args) => {\n const entry = await logEvent(ctx.notesPath, args);\n return ctx.textResponse(JSON.stringify(entry, null, 2));\n }\n );\n\n server.tool(\n \"regenerate_index\",\n \"Force regeneration of INDEX.md for one directory (or all affected by a list of paths). Idempotent — skips write if unchanged.\",\n {\n directory: z.string().optional().describe(\"Directory path relative to vault root (mutually exclusive with 'paths')\"),\n paths: z.array(z.string()).optional().describe(\"Files to infer affected directories from\"),\n },\n async ({ directory, paths }) => {\n let results;\n if (directory) {\n results = [await regenDirectoryIndex(ctx.notesPath, directory)];\n } else if (paths && paths.length > 0) {\n results = await regenIndexesForPaths(ctx.notesPath, paths);\n } else {\n return ctx.textResponse(\"Provide either `directory` or `paths`.\");\n }\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n }\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { redactedNote } from \"../../core/redact.js\";\n\nexport function registerMetadataTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"get_frontmatter\",\n \"Read parsed YAML frontmatter from a note as JSON\",\n { path: z.string() },\n async ({ path }) => {\n const fm = await ctx.frontmatterManager.get(path);\n return ctx.textResponse(JSON.stringify(fm, null, 2));\n }\n );\n\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"update_frontmatter\",\n \"Set or delete YAML frontmatter keys — pass null to delete a key\",\n { path: z.string(), fields: z.record(z.unknown()) },\n async ({ path, fields }) => {\n const { redacted } = await ctx.frontmatterManager.update(path, fields);\n return ctx.textResponse(`Frontmatter updated: ${path}${redactedNote(redacted)}`);\n }\n );\n\n server.tool(\n \"manage_tags\",\n \"Add, remove, list, or rename tags on a note (frontmatter and inline). Use action='rename' with `from` and `to` to rename a tag vault-wide; `path` is ignored in that mode.\",\n {\n path: z.string(),\n action: z.enum([\"add\", \"remove\", \"list\", \"rename\"]),\n tags: z.array(z.string()).optional(),\n from: z.string().optional().describe(\"For action='rename': the existing tag name (no leading #)\"),\n to: z.string().optional().describe(\"For action='rename': the new tag name (no leading #)\"),\n },\n async ({ path, action, tags, from, to }) => {\n switch (action) {\n case \"list\": {\n const result = await ctx.tagManager.list(path);\n return ctx.textResponse(JSON.stringify(result));\n }\n case \"add\": {\n if (!tags?.length) return ctx.textResponse(\"No tags provided\");\n await ctx.tagManager.add(path, tags);\n return ctx.textResponse(`Added tags to ${path}: ${tags.join(\", \")}`);\n }\n case \"remove\": {\n if (!tags?.length) return ctx.textResponse(\"No tags provided\");\n await ctx.tagManager.remove(path, tags);\n return ctx.textResponse(`Removed tags from ${path}: ${tags.join(\", \")}`);\n }\n case \"rename\": {\n if (!from || !to) return ctx.textResponse(\"action='rename' requires both `from` and `to`\");\n const count = await ctx.tagManager.renameVaultWide(from, to);\n return ctx.textResponse(`Renamed #${from} → #${to} in ${count} files`);\n }\n }\n }\n );\n\n server.tool(\n \"rename_tag\",\n \"[DEPRECATED — removed in v2.0.0; use manage_tags({action:'rename', from, to})] Rename a tag across all notes in the vault\",\n { oldTag: z.string(), newTag: z.string() },\n async ({ oldTag, newTag }) => {\n const count = await ctx.tagManager.renameVaultWide(oldTag, newTag);\n return ctx.textResponse(`Renamed #${oldTag} → #${newTag} in ${count} files`);\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\n\nexport function registerGraphTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"backlinks\",\n \"Find all notes that link TO a given note\",\n { path: z.string(), limit: z.coerce.number().optional().default(50) },\n async ({ path, limit }) => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const results = ctx.graph.backlinks(path).slice(0, limit);\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n\n server.tool(\n \"forwardlinks\",\n \"Find all notes linked FROM a given note\",\n { path: z.string(), limit: z.coerce.number().optional().default(50) },\n async ({ path, limit }) => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const results = ctx.graph.forwardlinks(path).slice(0, limit);\n return ctx.textResponse(JSON.stringify(results, null, 2));\n }\n );\n\n server.tool(\n \"graph_path\",\n \"Find the shortest path between two notes in the knowledge graph\",\n { from: z.string(), to: z.string() },\n async ({ from, to }) => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const path = ctx.graph.findPath(from, to);\n if (!path) return ctx.textResponse(\"No path found\");\n return ctx.textResponse(JSON.stringify(path));\n }\n );\n\n server.tool(\n \"graph_statistics\",\n \"Knowledge graph stats — most connected nodes, orphans, density\",\n {},\n async () => {\n if (ctx.getDocuments().length === 0 && ctx.getIndexState() !== \"ready\") return ctx.textResponse(ctx.indexingMessage());\n const stats = ctx.graph.statistics();\n return ctx.textResponse(JSON.stringify(stats, null, 2));\n }\n );\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport type { ServerContext } from \"../context.js\";\nimport type { VaultStats } from \"../../core/types.js\";\n\nexport function registerSystemTools(server: McpServer, ctx: ServerContext): void {\n server.tool(\n \"get_stats\",\n \"Vault and index statistics — note count, chunks, embeddings, graph density\",\n {},\n async () => {\n const documents = ctx.getDocuments();\n const vectorIndex = ctx.getVectorIndex();\n const indexState = ctx.getIndexState();\n const indexProgress = ctx.getIndexProgress();\n const graphStats = documents.length > 0 ? ctx.graph.statistics() : { totalNodes: 0, totalEdges: 0 };\n const stats: VaultStats = {\n totalNotes: documents.length,\n totalChunks: documents.reduce((n, d) => n + d.chunks.length, 0),\n totalEmbeddings: vectorIndex?.getChunkMeta().length ?? 0,\n embeddingDimensions: ctx.embedder.getDimensions(),\n embeddingModel: ctx.embedder.getModel(),\n embeddingRuntime: ctx.embedder.getRuntime?.() ?? \"unknown\",\n graphNodes: graphStats.totalNodes,\n graphEdges: graphStats.totalEdges,\n indexSize: 0,\n lastIndexed: indexState === \"ready\" ? new Date().toISOString() : null,\n indexState,\n indexProgress: indexState === \"indexing\" ? indexProgress : undefined,\n };\n return ctx.textResponse(JSON.stringify(stats, null, 2));\n }\n );\n\n server.tool(\n \"reindex\",\n \"Force a full reindex of the vault\",\n {},\n async () => {\n if (ctx.isIndexingInFlight()) return ctx.textResponse(\"Reindex already in progress. \" + ctx.indexingMessage());\n await ctx.fullIndex();\n const documents = ctx.getDocuments();\n return ctx.textResponse(\n `Reindexed: ${documents.length} notes, ${documents.reduce((n, d) => n + d.chunks.length, 0)} chunks`\n );\n }\n );\n}\n","/**\n * Canonical inventory of MCP tools shipped by semantic-memory.\n *\n * This is the source of truth for tool naming, description, and deprecation\n * status. The AGENTS.md generator reads this list to render the Tool Surface\n * section. Phase 8 healthcheck cross-references this against the live MCP\n * server registration to detect drift.\n *\n * When you add or remove a tool registration in src/mcp/tools/*.ts, update\n * this list in the same commit. CI/Phase 8 will catch the drift.\n */\n\nexport interface ToolInventoryEntry {\n name: string;\n description: string;\n deprecated?: boolean;\n group: \"search\" | \"read\" | \"write\" | \"patch\" | \"lint\" | \"log\" | \"metadata\" | \"graph\" | \"system\" | \"contract\" | \"session\";\n}\n\nexport const CURRENT_TOOL_INVENTORY: readonly ToolInventoryEntry[] = [\n // search\n { name: \"search_semantic\", description: \"Vector similarity search — find notes similar to a query by meaning.\", group: \"search\" },\n { name: \"search_text\", description: \"Full-text keyword or regex search across all notes with optional filters.\", group: \"search\" },\n { name: \"search_graph\", description: \"Graph traversal — find notes connected to a concept via wikilinks, related_docs, and tags.\", group: \"search\" },\n { name: \"search_hybrid\", description: \"Combined semantic + graph search — vector results re-ranked by graph proximity and load_priority.\", group: \"search\" },\n // read\n { name: \"read_note\", description: \"Read the full content of a specific note by path.\", group: \"read\" },\n { name: \"read_multiple_notes\", description: \"Batch read multiple notes in one call.\", group: \"read\", deprecated: true },\n { name: \"list_notes\", description: \"List all indexed notes with metadata.\", group: \"read\" },\n // write (CRUD)\n { name: \"create_note\", description: \"Create a new markdown note.\", group: \"write\" },\n { name: \"update_note\", description: \"Edit note content — overwrite, append, prepend, or patch by heading.\", group: \"write\" },\n { name: \"delete_note\", description: \"Delete a note permanently.\", group: \"write\" },\n { name: \"move_note\", description: \"Move or rename a note — updates wikilinks across the vault.\", group: \"write\" },\n // patch / synthesis\n { name: \"apply_patch\", description: \"Atomic multi-note patch with rollback.\", group: \"patch\" },\n { name: \"synthesize_note\", description: \"Turn a researched answer + sources into a new filed note with provenance frontmatter. Pass proposal:true for review-first workflows.\", group: \"patch\" },\n { name: \"synthesize_promote\", description: \"Move a reviewed proposal note to its canonical destination, stripping proposal markers.\", group: \"patch\" },\n { name: \"ingest_source\", description: \"Build + apply a ChangeSet that ingests a source and the notes extracted from it.\", group: \"patch\" },\n { name: \"install_schema\", description: \"Bootstrap vault.schema.yml in the vault root with the default schema.\", group: \"patch\" },\n { name: \"verify_note\", description: \"Stamp last_verified to today (content unchanged) to reset the confidence-decay clock; logs a verify event.\", group: \"patch\" },\n { name: \"manage_lexicon\", description: \"Manage the learned human→artifact lexicon (add/lookup/list/remove/compile aliases).\", group: \"patch\" },\n { name: \"manage_dossier\", description: \"Manage entity dossiers — per-component living notes (init/append_incident/set_state/get/list). Knowledge accretes in place.\", group: \"patch\" },\n { name: \"manage_profile\", description: \"Manage the speaker profile — how this human communicates (init/get/update_section).\", group: \"patch\" },\n // lint\n { name: \"find_schema_violations\", description: \"Scan for schema violations.\", group: \"lint\", deprecated: true },\n { name: \"find_missing_provenance\", description: \"Scan for notes lacking sources/derived_from.\", group: \"lint\", deprecated: true },\n { name: \"find_stale\", description: \"Scan for notes whose last_verified is older than the threshold.\", group: \"lint\", deprecated: true },\n { name: \"find_broken_links\", description: \"Scan for [[wikilinks]] pointing to non-existent notes.\", group: \"lint\", deprecated: true },\n { name: \"lint_vault\", description: \"Run lint rules across the vault. Pass `checks` to filter to specific rules.\", group: \"lint\" },\n // log\n { name: \"log_event\", description: \"Append a structured event to the vault's log.md.\", group: \"log\" },\n { name: \"log_query\", description: \"Read structured log entries filtered by kind and/or date range.\", group: \"log\" },\n { name: \"regenerate_index\", description: \"Force regeneration of INDEX.md for one or more directories.\", group: \"log\" },\n // metadata\n { name: \"get_frontmatter\", description: \"Read parsed YAML frontmatter from a note as JSON.\", group: \"metadata\" },\n { name: \"update_frontmatter\", description: \"Set or delete YAML frontmatter keys.\", group: \"metadata\" },\n { name: \"manage_tags\", description: \"Add, remove, list, or rename tags on a note.\", group: \"metadata\" },\n { name: \"rename_tag\", description: \"Rename a tag across all notes.\", group: \"metadata\", deprecated: true },\n // graph\n { name: \"backlinks\", description: \"Find all notes that link TO a given note.\", group: \"graph\" },\n { name: \"forwardlinks\", description: \"Find all notes linked FROM a given note.\", group: \"graph\" },\n { name: \"graph_path\", description: \"Find the shortest path between two notes in the knowledge graph.\", group: \"graph\" },\n { name: \"graph_statistics\", description: \"Knowledge graph stats — most connected nodes, orphans, density.\", group: \"graph\" },\n // system\n { name: \"get_stats\", description: \"Vault and index statistics.\", group: \"system\" },\n { name: \"reindex\", description: \"Force a full reindex of the vault.\", group: \"system\" },\n // contract (Phase 3)\n { name: \"regenerate_contract\", description: \"Generate or refresh AGENTS.md at the project root with a managed-block contract.\", group: \"contract\" },\n { name: \"inspect_contract\", description: \"Read-only inspection of AGENTS.md state.\", group: \"contract\" },\n // session (Phase 5)\n { name: \"session_start\", description: \"Open a verification-gated session for a multi-step task.\", group: \"session\" },\n { name: \"session_run\", description: \"Run a verification command inside the active session, capture exit and tail.\", group: \"session\" },\n { name: \"session_finish\", description: \"Close the active session — hard-gated on verifications unless explicitly waived.\", group: \"session\" },\n { name: \"session_status\", description: \"Read-only inspection of the active session.\", group: \"session\" },\n];\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport {\n regenerateAgentsContract,\n inspectAgentsContract,\n type ToolSummary,\n type ModeSummary,\n} from \"../../core/agents-contract.js\";\nimport { CURRENT_TOOL_INVENTORY } from \"./inventory.js\";\nimport { fileURLToPath } from \"node:url\";\nimport { dirname, join } from \"node:path\";\nimport { existsSync, readFileSync } from \"node:fs\";\n\n// Read the real package version dynamically so the contract stamp tracks releases.\n// (Was hardcoded \"1.1.0\" through v1.3, which froze the AGENTS.md version — the same\n// class of bug as the frozen plugin.json fixed in 1.2.2.)\n//\n// Walks up from this module's runtime location to find the package's OWN\n// package.json (matched by name, so a dependency's package.json can't shadow it).\n// Robust to tsup bundling/splitting, where the emitted file may live at dist/ or\n// dist/mcp/ or a hoisted chunk — a fixed relative depth would not be.\nfunction pluginVersion(): string {\n try {\n let dir = dirname(fileURLToPath(import.meta.url));\n for (let i = 0; i < 6; i++) {\n const pkgPath = join(dir, \"package.json\");\n if (existsSync(pkgPath)) {\n const pkg = JSON.parse(readFileSync(pkgPath, \"utf8\")) as { name?: string; version?: string };\n if (pkg?.name === \"@theglitchking/semantic-memory\" && typeof pkg.version === \"string\") {\n return pkg.version;\n }\n }\n const parent = dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return \"0.0.0\";\n } catch {\n return \"0.0.0\";\n }\n}\n\nexport function registerContractTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"regenerate_contract\",\n \"Generate or refresh AGENTS.md at the project root with a managed-block contract. Preserves the 'Local Notes' tail across regenerations. Refuses to overwrite hand-edits inside the managed block unless force=true. Returns the path written and whether hand-edits were detected.\",\n {\n projectRoot: z.string().optional().describe(\"Override the project root path. Defaults to the parent of the vault directory if not provided.\"),\n force: z.boolean().optional().default(false).describe(\"Overwrite hand-edited managed-block content.\"),\n },\n async ({ projectRoot, force }) => {\n const root = projectRoot ?? defaultProjectRoot(ctx.notesPath);\n const tools: ToolSummary[] = CURRENT_TOOL_INVENTORY.map((t) => ({\n name: t.name,\n description: t.description,\n deprecated: t.deprecated,\n }));\n const modes: ModeSummary[] = [\n { name: \"vault-first\", description: \"Project-scoped prose questions trigger vault consultation with cite-or-deflect.\", isDefault: true },\n { name: \"research\", description: \"Every source introduced is filed via ingest_source; mandatory synthesize_note on exit.\" },\n { name: \"outage-silence\", description: \"No proactive vault search. Terse responses. Postmortem synthesize_note on exit.\" },\n ];\n const result = await regenerateAgentsContract({\n projectRoot: root,\n pluginVersion: pluginVersion(),\n tools,\n modes,\n force,\n });\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"inspect_contract\",\n \"Read-only inspection of AGENTS.md state — whether it exists, whether the managed-block markers are present, and how much Local Notes content is preserved.\",\n {\n projectRoot: z.string().optional().describe(\"Override the project root path. Defaults to the parent of the vault directory if not provided.\"),\n },\n async ({ projectRoot }) => {\n const root = projectRoot ?? defaultProjectRoot(ctx.notesPath);\n const result = await inspectAgentsContract(root);\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n}\n\nfunction defaultProjectRoot(notesPath: string): string {\n // Heuristic: if notesPath points at .claude/.vault, the project root is two levels up.\n // Otherwise, treat notesPath itself as the project root.\n if (notesPath.endsWith(\"/.claude/.vault\") || notesPath.endsWith(\"\\\\.claude\\\\.vault\")) {\n return notesPath.slice(0, -\".claude/.vault\".length);\n }\n return notesPath;\n}\n","import type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { z } from \"zod\";\nimport type { ServerContext } from \"../context.js\";\nimport { logEvent } from \"../../core/log.js\";\n\nexport function registerSessionTools(server: McpServer, ctx: ServerContext): void {\n if (ctx.options.readOnly) return;\n\n server.tool(\n \"session_start\",\n \"Open a verification-gated session for a multi-step task. State persists at .claude/.semantic-memory/session.json. Refuses if a session is already open with a different task. Calling with the same task as an open session returns the existing id (idempotent).\",\n {\n task: z.string().describe(\"Short description of the task being worked on. Recorded in session state and surfaced at session_finish.\"),\n },\n async ({ task }) => {\n const result = await ctx.sessions.start(task);\n if (result.ok) {\n await logEvent(ctx.notesPath, {\n kind: \"session\",\n summary: result.reused ? `resumed session ${result.id}` : `started session ${result.id}`,\n payload: { tool: \"session_start\", id: result.id, task, reused: !!result.reused },\n }).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"session_run\",\n \"Run a verification command inside the active session. Captures exit code, signal, duration, and a tail of stdout+stderr. Refused when no session is open. Default timeout: 5 minutes.\",\n {\n cmd: z.string().describe(\"Shell command to run, e.g. 'npm test' or 'go test ./...'.\"),\n timeout_ms: z.coerce.number().int().positive().optional().describe(\"Override the default 5-minute timeout (in milliseconds).\"),\n },\n async ({ cmd, timeout_ms }) => {\n const result = await ctx.sessions.run(cmd, timeout_ms);\n if (result.ok) {\n await logEvent(ctx.notesPath, {\n kind: \"session\",\n summary: `ran ${cmd} → exit=${result.record.exit ?? \"(killed)\"}`,\n payload: {\n tool: \"session_run\",\n cmd,\n exit: result.record.exit,\n signal: result.record.signal,\n duration_ms: result.record.duration_ms,\n },\n }).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"session_finish\",\n \"Close the active session. HARD GATED: refused without recorded verifications unless verified=false is passed with a `reason` waiving verification (e.g. for prose-only edits). Deletes session state on success.\",\n {\n summary: z.string().describe(\"One-line description of what was accomplished. Appears in the closeout log entry.\"),\n verified: z.boolean().optional().default(true).describe(\"Pass false to explicitly waive verification (requires `reason`).\"),\n reason: z.string().optional().describe(\"Required when verified=false. Why verification is not applicable to this task.\"),\n },\n async ({ summary, verified, reason }) => {\n const result = await ctx.sessions.finish({ summary, verified, reason });\n if (result.ok) {\n await logEvent(ctx.notesPath, {\n kind: \"session\",\n summary: `finished session ${result.closed.id}: ${summary}`,\n payload: {\n tool: \"session_finish\",\n id: result.closed.id,\n task: result.closed.task,\n verifications: result.closed.verifications.length,\n verified_waived: !!result.closed.closed_verified_waived,\n ...(result.closed.closed_verified_waived && { waiver_reason: result.closed.closed_waiver_reason }),\n },\n }).catch(() => {});\n }\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n\n server.tool(\n \"session_status\",\n \"Read-only inspection of the active session — task, verifications, notes_touched, and a state label (active | stale | no_session). 'stale' indicates last_activity_at >24h ago.\",\n {},\n async () => {\n const result = await ctx.sessions.status();\n return ctx.textResponse(JSON.stringify(result, null, 2));\n }\n );\n}\n","import { existsSync, readFileSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { parse as parseYaml } from \"yaml\";\nimport { deriveProjectRoot } from \"./session.js\";\n\n/**\n * Token-frugal tool surface (v1.4 Phase 7).\n *\n * When `tools.conditional` is enabled in vault.schema.yml, the server registers a\n * reduced tool set in modes that don't need the whole surface (outage-silence\n * wants search/read only, not the full ~42). Ships DEFAULT OFF (KQ9): mid-session\n * mode switches don't re-register, so this must be opted into and dogfooded before\n * it can default on. Default (disabled) → the full surface, unchanged.\n */\nexport interface ToolsConfig {\n conditional: boolean;\n}\n\nexport function loadToolsConfig(vaultPath: string): ToolsConfig {\n try {\n const schemaPath = join(vaultPath, \"vault.schema.yml\");\n if (!existsSync(schemaPath)) return { conditional: false };\n const parsed = parseYaml(readFileSync(schemaPath, \"utf-8\")) as { tools?: { conditional?: boolean } } | null;\n return { conditional: parsed?.tools?.conditional === true };\n } catch {\n return { conditional: false };\n }\n}\n\n/** Read the active mode from the state file (new path, then legacy). Default vault-first. */\nexport function readActiveMode(vaultPath: string): string {\n const root = deriveProjectRoot(vaultPath);\n const candidates = [\n join(root, \".claude\", \".semantic-memory\", \"mode\"),\n join(root, \".claude\", \".sidekick-mode\"),\n ];\n for (const p of candidates) {\n try {\n if (existsSync(p)) {\n const v = readFileSync(p, \"utf-8\").trim();\n if (v) return v;\n }\n } catch {\n /* fall through */\n }\n }\n return \"vault-first\";\n}\n\n/**\n * Decide whether to register only the minimal read/search surface. True only when\n * conditional registration is enabled AND the active mode is outage-silence.\n */\nexport function useMinimalToolSurface(vaultPath: string): boolean {\n const cfg = loadToolsConfig(vaultPath);\n if (!cfg.conditional) return false;\n return readActiveMode(vaultPath) === \"outage-silence\";\n}\n"],"mappings":"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","names":["join","existsSync","existsSync","readFileSync","join","parseYaml","join","existsSync","parseYaml","readFileSync","join","existsSync","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","readFile","join","join","readFile","join","existsSync","readFileSync","existsSync","readFileSync","join","parseYaml","join","existsSync","parseYaml","readFileSync"]}
|