@nodeskai/genehub 2026.3.3 → 2026.3.4
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/dist/index.js +6466 -250
- package/dist/index.js.map +1 -1
- package/package.json +7 -6
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/commands/auth.ts","../src/config.ts","../src/output.ts","../src/commands/config.ts","../src/commands/init.ts","../src/commands/install.ts","../src/commands/learn.ts","../src/commands/list.ts","../src/commands/publish.ts","../src/commands/search.ts","../src/commands/uninstall.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { authCommand } from './commands/auth.js';\nimport { configCommand } from './commands/config.js';\nimport { initCommand } from './commands/init.js';\nimport { installCommand } from './commands/install.js';\nimport { learnCommand } from './commands/learn.js';\nimport { listCommand } from './commands/list.js';\nimport { publishCommand } from './commands/publish.js';\nimport { searchCommand } from './commands/search.js';\nimport { uninstallCommand } from './commands/uninstall.js';\n\nconst program = new Command();\n\nprogram.name('genehub').description('GeneHub CLI - AI 员工基因管理工具').version('0.1.0');\n\nprogram.addCommand(authCommand);\nprogram.addCommand(installCommand);\nprogram.addCommand(uninstallCommand);\nprogram.addCommand(searchCommand);\nprogram.addCommand(listCommand);\nprogram.addCommand(publishCommand);\nprogram.addCommand(initCommand);\nprogram.addCommand(configCommand);\nprogram.addCommand(learnCommand);\n\nprogram.parse();\n","import { createServer } from 'node:http';\nimport { Command } from 'commander';\nimport { loadConfig, saveConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const authCommand = new Command('auth').description('认证管理');\n\nauthCommand\n .command('login')\n .description('通过 GitHub OAuth 登录并自动创建 API Key')\n .action(async () => {\n const config = await loadConfig();\n const registryUrl = config.registryUrl.replace(/\\/$/, '');\n\n const port = await findAvailablePort(9876);\n const callbackUrl = `http://localhost:${port}/callback`;\n\n const tokenPromise = waitForCallback(port);\n\n const authUrl = `${registryUrl}/auth/github?cli_callback=${encodeURIComponent(callbackUrl)}`;\n output.info(`Opening browser for GitHub login...`);\n output.info(` ${authUrl}`);\n\n const open = await import('open').catch(() => null);\n if (open) {\n await open.default(authUrl);\n } else {\n output.warn('Cannot open browser automatically. Please open the URL above manually.');\n }\n\n try {\n const { token, login } = await tokenPromise;\n await saveConfig({ token });\n output.ok(`Logged in as @${login}`);\n output.ok(`Token saved to config (${token.slice(0, 12)}****)`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : 'Login failed');\n process.exit(1);\n }\n });\n\nauthCommand\n .command('status')\n .description('查看当前登录状态')\n .action(async () => {\n const config = await loadConfig();\n\n if (!config.token) {\n output.info('Not logged in');\n output.info(' Run: genehub auth login');\n return;\n }\n\n output.ok(`Token: ${config.token.slice(0, 12)}****`);\n output.info(`Registry: ${config.registryUrl}`);\n });\n\nauthCommand\n .command('logout')\n .description('退出登录(清除本地 token)')\n .action(async () => {\n await saveConfig({ token: undefined });\n output.ok('Logged out. Token removed.');\n });\n\nfunction findAvailablePort(preferred: number): Promise<number> {\n return new Promise((resolve, reject) => {\n const server = createServer();\n server.listen(preferred, () => {\n server.close(() => resolve(preferred));\n });\n server.on('error', () => {\n const fallback = createServer();\n fallback.listen(0, () => {\n const addr = fallback.address();\n const port = typeof addr === 'object' && addr ? addr.port : 0;\n fallback.close(() => resolve(port));\n });\n fallback.on('error', reject);\n });\n });\n}\n\nfunction waitForCallback(port: number): Promise<{ token: string; login: string }> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n server.close();\n reject(new Error('Login timeout (60s)'));\n }, 60_000);\n\n const server = createServer((req, res) => {\n if (!req.url?.startsWith('/callback')) {\n res.writeHead(404);\n res.end();\n return;\n }\n\n const url = new URL(req.url, `http://localhost:${port}`);\n const token = url.searchParams.get('token');\n const login = url.searchParams.get('login');\n\n if (!token) {\n res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });\n res.end('<h2>Login failed</h2><p>No token received.</p>');\n return;\n }\n\n res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });\n res.end(`<h2>Login successful</h2><p>@${login ?? 'unknown'} - you can close this tab.</p>`);\n\n clearTimeout(timeout);\n server.close();\n resolve({ token, login: login ?? '' });\n });\n\n server.listen(port);\n });\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nconst CONFIG_DIR = join(homedir(), '.genehub');\nconst CONFIG_PATH = join(CONFIG_DIR, 'config.json');\n\nexport type CliConfig = {\n registryUrl: string;\n token?: string;\n};\n\nconst DEFAULT_CONFIG: CliConfig = {\n registryUrl: 'https://genehub.nodeskai.com',\n};\n\n/**\n * Priority: env vars > config file > defaults\n *\n * - GENEHUB_REGISTRY_URL / GENEHUB_REGISTRY\n * - GENEHUB_TOKEN\n */\nexport async function loadConfig(): Promise<CliConfig> {\n let fileConfig: Partial<CliConfig> = {};\n try {\n const raw = await readFile(CONFIG_PATH, 'utf-8');\n fileConfig = JSON.parse(raw);\n } catch {\n // no config file, use defaults\n }\n\n const merged = { ...DEFAULT_CONFIG, ...fileConfig };\n\n const envUrl = process.env.GENEHUB_REGISTRY_URL ?? process.env.GENEHUB_REGISTRY;\n if (envUrl) {\n merged.registryUrl = envUrl;\n }\n\n const envToken = process.env.GENEHUB_TOKEN;\n if (envToken) {\n merged.token = envToken;\n }\n\n return merged;\n}\n\nexport function getConfigSource(key: 'registry' | 'token'): 'env' | 'file' | 'default' {\n if (key === 'registry') {\n if (process.env.GENEHUB_REGISTRY_URL || process.env.GENEHUB_REGISTRY) return 'env';\n }\n if (key === 'token') {\n if (process.env.GENEHUB_TOKEN) return 'env';\n }\n return 'file';\n}\n\nexport async function saveConfig(config: Partial<CliConfig>): Promise<void> {\n const current = await loadConfig();\n const merged = { ...current, ...config };\n await mkdir(CONFIG_DIR, { recursive: true });\n await writeFile(CONFIG_PATH, JSON.stringify(merged, null, 2), 'utf-8');\n}\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\n\nexport function info(msg: string) {\n console.log(chalk.blue('i'), msg);\n}\n\nexport function ok(msg: string) {\n console.log(chalk.green('+'), msg);\n}\n\nexport function warn(msg: string) {\n console.log(chalk.yellow('!'), msg);\n}\n\nexport function fail(msg: string) {\n console.error(chalk.red('x'), msg);\n}\n\nexport function table(headers: string[], rows: string[][]) {\n const t = new Table({\n head: headers.map((h) => chalk.cyan(h)),\n style: { head: [], border: [] },\n });\n for (const row of rows) {\n t.push(row);\n }\n console.log(t.toString());\n}\n","import { Command } from 'commander';\nimport { getConfigSource, loadConfig, saveConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const configCommand = new Command('config').description('管理 GeneHub CLI 配置');\n\nfunction sourceLabel(source: 'env' | 'file' | 'default'): string {\n if (source === 'env') return ' [env]';\n if (source === 'default') return ' [default]';\n return '';\n}\n\nconfigCommand\n .command('set <key> <value>')\n .description('设置配置项(registry / token)')\n .action(async (key: string, value: string) => {\n const validKeys = ['registry', 'token'] as const;\n if (!validKeys.includes(key as (typeof validKeys)[number])) {\n output.fail(`无效的配置项: ${key},可选: ${validKeys.join(', ')}`);\n return;\n }\n\n if (key === 'registry') {\n await saveConfig({ registryUrl: value });\n } else if (key === 'token') {\n await saveConfig({ token: value });\n }\n\n output.ok(`${key} = ${key === 'token' ? `${value.slice(0, 8)}***` : value}`);\n });\n\nconfigCommand\n .command('get [key]')\n .description('查看配置(支持 GENEHUB_REGISTRY_URL / GENEHUB_TOKEN 环境变量覆盖)')\n .action(async (key?: string) => {\n const config = await loadConfig();\n\n if (key) {\n const map: Record<string, string | undefined> = {\n registry: config.registryUrl,\n token: config.token ? `${config.token.slice(0, 8)}***` : undefined,\n };\n const src = sourceLabel(getConfigSource(key as 'registry' | 'token'));\n output.info(`${key} = ${map[key] ?? '(未设置)'}${src}`);\n } else {\n const regSrc = sourceLabel(getConfigSource('registry'));\n const tokSrc = sourceLabel(getConfigSource('token'));\n output.info(`registry = ${config.registryUrl}${regSrc}`);\n output.info(\n `token = ${config.token ? `${config.token.slice(0, 8)}***` : '(未设置)'}${tokSrc}`,\n );\n }\n });\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { Command } from 'commander';\nimport { stringify } from 'yaml';\nimport * as output from '../output.js';\n\nconst TEMPLATE = {\n slug: 'my-gene',\n name: '我的基因',\n version: '1.0.0',\n description: '基因功能描述',\n short_description: '一句话描述',\n category: 'development',\n tags: ['ability'],\n author: { type: 'human', name: '' },\n compatibility: [\n { product: 'openclaw', min_version: '0.5.0' },\n { product: 'nanobot', min_version: '0.1.0' },\n ],\n dependencies: [],\n synergies: [],\n skill: {\n name: 'my-gene',\n always: false,\n file: 'SKILL.md',\n },\n rules: [],\n config: {},\n mcp_servers: [],\n learning: {\n force_deep_learn: false,\n objectives: [],\n scenarios: [],\n },\n};\n\nconst SKILL_TEMPLATE = `---\nname: my-gene\ndescription: 一句话描述\nmetadata:\n openclaw:\n always: false\n nanobot:\n always: false\n---\n\n在此编写基因的技能描述...\n`;\n\nexport const initCommand = new Command('init')\n .description('初始化基因模板')\n .argument('[path]', '目标目录', '.')\n .action(async (dirPath: string) => {\n const absPath = resolve(dirPath);\n\n try {\n await mkdir(absPath, { recursive: true });\n\n const yamlPath = join(absPath, 'gene.yaml');\n await writeFile(yamlPath, stringify(TEMPLATE), 'utf-8');\n\n const skillPath = join(absPath, 'SKILL.md');\n await writeFile(skillPath, SKILL_TEMPLATE, 'utf-8');\n\n output.ok(`基因模板已创建:`);\n output.info(` ${yamlPath}`);\n output.info(` ${skillPath}`);\n output.info('编辑这两个文件后,使用 genehub publish 发布');\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { detectAdapter, GeneHubClient, getAdapter, LearningEngine } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nfunction parseSlugVersion(input: string): { slug: string; version?: string } {\n const atIdx = input.lastIndexOf('@');\n if (atIdx > 0) {\n return { slug: input.slice(0, atIdx), version: input.slice(atIdx + 1) };\n }\n return { slug: input };\n}\n\nexport const installCommand = new Command('install')\n .description('安装基因到当前 Agent 环境')\n .argument('<slug>', '基因标识符(支持 slug@version 格式)')\n .option('-p, --product <product>', '指定目标产品(openclaw / nanobot / generic)')\n .option('-f, --force', '强制覆盖已安装版本', false)\n .option('--target <path>', '指定安装目标路径')\n .option('--learn', '安装后自动触发深度学习', false)\n .action(async (rawSlug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n const { slug, version } = parseSlugVersion(rawSlug);\n const spinner = ora(`获取基因 ${slug}${version ? `@${version}` : ''} 的 manifest...`).start();\n\n try {\n const manifest = await client.getManifest(slug, version);\n spinner.succeed(`获取 ${manifest.name} v${manifest.version}`);\n\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n output.info(`目标产品: ${adapter.product}`);\n\n if (!opts.force && (await adapter.isInstalled(slug))) {\n const installedVer = await adapter.getInstalledVersion(slug);\n output.warn(`${slug}${installedVer ? ` v${installedVer}` : ''} 已安装,使用 --force 覆盖`);\n return;\n }\n\n const installSpinner = ora('安装中...').start();\n const result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n installSpinner.succeed('安装完成');\n\n output.ok(`${result.slug}@${result.version} 安装成功`);\n output.info(`文件: ${result.files.join(', ')}`);\n\n if (result.needsRestart) {\n output.warn('需要重启 Agent Host 使基因生效');\n }\n\n if (result.dependencies.length > 0) {\n output.info(`依赖基因: ${result.dependencies.join(', ')}`);\n }\n\n try {\n await client.reportInstall(slug);\n } catch {\n // non-critical\n }\n\n if (opts.learn) {\n const workspaceDir =\n adapter.product === 'openclaw'\n ? join(homedir(), '.openclaw', 'workspace')\n : adapter.product === 'nanobot'\n ? join(homedir(), '.nanobot', 'workspace')\n : join(process.cwd(), '.genehub');\n\n const engine = new LearningEngine({ workspaceDir, adapter });\n const learnSpinner = ora('生成学习任务...').start();\n await engine.createLearningTask(manifest);\n learnSpinner.succeed('学习任务已创建,Agent 将在下次对话中处理');\n }\n } catch (err) {\n spinner.fail('安装失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { detectAdapter, GeneHubClient, getAdapter, LearningEngine } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nfunction getWorkspaceDir(product: string): string {\n switch (product) {\n case 'openclaw':\n return join(homedir(), '.openclaw', 'workspace');\n case 'nanobot':\n return join(homedir(), '.nanobot', 'workspace');\n default:\n return join(process.cwd(), '.genehub');\n }\n}\n\nexport const learnCommand = new Command('learn')\n .description('触发基因深度学习(L2)')\n .argument('<slug>', '基因标识符')\n .option('-p, --product <product>', '指定目标产品')\n .option('--check', '检查学习结果并应用')\n .action(async (slug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n const workspaceDir = getWorkspaceDir(adapter.product);\n const engine = new LearningEngine({ workspaceDir, adapter });\n\n if (opts.check) {\n const spinner = ora('检查学习结果...').start();\n const result = await engine.checkResult(slug);\n\n if (!result) {\n spinner.fail('未找到学习结果');\n output.info('Agent 还未完成该基因的学习任务');\n\n const pending = await engine.listPendingTasks();\n if (pending.length > 0) {\n output.info(`待完成的学习任务: ${pending.join(', ')}`);\n }\n return;\n }\n\n spinner.succeed(`学习结果: ${result.decision}`);\n\n if (result.self_eval !== undefined) {\n output.info(`自评分: ${result.self_eval}`);\n }\n if (result.reason) {\n output.info(`理由: ${result.reason}`);\n }\n\n if (result.decision === 'learned' && result.content) {\n const skillsDir = join(workspaceDir, 'skills');\n const applied = await engine.applyResult(slug, skillsDir);\n if (applied) {\n output.ok('已将个性化版本应用到技能目录');\n }\n }\n\n return;\n }\n\n const spinner = ora(`获取 ${slug} 的 manifest...`).start();\n\n try {\n const manifest = await client.getManifest(slug);\n spinner.succeed(`获取 ${manifest.name} v${manifest.version}`);\n\n if (!manifest.learning?.objectives?.length && !manifest.learning?.scenarios?.length) {\n output.warn('该基因没有定义学习目标或练习场景,将创建基础学习任务');\n }\n\n const learnSpinner = ora('生成学习任务...').start();\n const task = await engine.createLearningTask(manifest);\n learnSpinner.succeed('学习任务已创建');\n\n output.ok(`任务文件: ${join(workspaceDir, 'learning-tasks', `${slug}.md`)}`);\n output.info(`结果路径: ${task.callback_path}`);\n output.info('');\n output.info('下一步:');\n output.info(' 1. Agent 在下次对话中会自动发现并处理学习任务');\n output.info(` 2. 学习完成后运行: genehub learn --check ${slug}`);\n } catch (err) {\n spinner.fail('学习任务创建失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { detectAdapter, getAdapter } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport * as output from '../output.js';\n\nexport const listCommand = new Command('list')\n .description('列出当前环境已安装的基因')\n .option('-p, --product <product>', '指定目标产品')\n .option('--json', 'JSON 格式输出', false)\n .action(async (opts) => {\n try {\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n const genes = await adapter.list();\n\n if (opts.json) {\n console.log(JSON.stringify(genes, null, 2));\n return;\n }\n\n if (genes.length === 0) {\n output.info(`[${adapter.product}] 没有已安装的基因`);\n return;\n }\n\n output.info(`[${adapter.product}] 已安装 ${genes.length} 个基因:\\n`);\n\n for (const gene of genes) {\n const date = new Date(gene.installedAt).toLocaleDateString('zh-CN');\n console.log(` ${gene.slug.padEnd(24)} v${gene.version.padEnd(10)} ${date}`);\n }\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { readFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { GeneHubClient } from '@nodeskai/genehub-sdk';\nimport type { Gene } from '@nodeskai/genehub-types';\nimport { GeneManifestSchema } from '@nodeskai/genehub-types';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { parse } from 'yaml';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const publishCommand = new Command('publish')\n .description('发布基因到 GeneHub Registry')\n .argument('<path>', '基因目录路径(包含 gene.yaml)')\n .action(async (dirPath: string) => {\n const config = await loadConfig();\n\n if (!config.token) {\n output.fail('未配置认证 token');\n output.info(' 方式 1: genehub config set token <token>');\n output.info(' 方式 2: export GENEHUB_TOKEN=<token>');\n process.exit(1);\n }\n\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n const absPath = resolve(dirPath);\n\n try {\n const yamlPath = join(absPath, 'gene.yaml');\n const raw = await readFile(yamlPath, 'utf-8');\n const parsed = parse(raw);\n\n const skillMdPath = join(absPath, 'SKILL.md');\n if (parsed.skill?.file && !parsed.skill.content) {\n try {\n parsed.skill.content = await readFile(join(absPath, parsed.skill.file), 'utf-8');\n } catch {\n parsed.skill.content = await readFile(skillMdPath, 'utf-8');\n }\n }\n\n const validation = GeneManifestSchema.safeParse(parsed);\n if (!validation.success) {\n output.fail('Manifest 校验失败:');\n for (const issue of validation.error.issues) {\n output.fail(` ${issue.path.join('.')}: ${issue.message}`);\n }\n process.exit(1);\n }\n\n const { slug, version } = validation.data;\n const spinner = ora(`发布 ${slug}@${version}...`).start();\n\n let gene: Gene;\n try {\n gene = await client.publishGene(validation.data);\n } catch (err) {\n const isSlugExists = err instanceof Error && err.message.includes('gene_slug_exists');\n if (!isSlugExists) throw err;\n\n spinner.text = `基因 ${slug} 已存在,发布新版本 ${version}...`;\n gene = await client.publishVersion(slug, validation.data);\n }\n\n spinner.succeed('发布成功');\n output.ok(`${gene.slug}@${gene.version} 已发布到 GeneHub Registry`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { GeneHubClient } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const searchCommand = new Command('search')\n .description('搜索基因库')\n .argument('[keyword]', '搜索关键词')\n .option('-c, --category <category>', '按分类过滤')\n .option('-t, --tags <tags>', '按标签过滤(逗号分隔)')\n .option('--compat <product>', '按兼容产品过滤')\n .option('-s, --sort <sort>', '排序方式(newest / popular / rating)', 'newest')\n .option('--page <page>', '页码', '1')\n .option('--json', 'JSON 格式输出', false)\n .action(async (keyword: string | undefined, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n try {\n const result = await client.searchGenes({\n q: keyword,\n category: opts.category,\n tags: opts.tags?.split(','),\n compatibility: opts.compat,\n sort: opts.sort,\n page: Number(opts.page),\n });\n\n if (opts.json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (result.items.length === 0) {\n output.info('未找到匹配的基因');\n return;\n }\n\n output.table(\n ['slug', '名称', '版本', '分类', '兼容', '安装数'],\n result.items.map((g) => [\n g.slug,\n g.name,\n g.version,\n g.category,\n (g.compatibility as string[]).join(', '),\n String(g.install_count),\n ]),\n );\n\n output.info(`共 ${result.total} 条结果,第 ${result.page}/${result.total_pages} 页`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { detectAdapter, getAdapter } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport * as output from '../output.js';\n\nexport const uninstallCommand = new Command('uninstall')\n .description('从当前 Agent 环境卸载基因')\n .argument('<slug>', '基因标识符')\n .option('-p, --product <product>', '指定目标产品(openclaw / nanobot / generic)')\n .action(async (slug: string, opts) => {\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n output.info(`目标产品: ${adapter.product}`);\n\n if (!(await adapter.isInstalled(slug))) {\n output.warn(`${slug} 未安装`);\n return;\n }\n\n const spinner = ora('卸载中...').start();\n\n try {\n const result = await adapter.uninstall(slug);\n spinner.succeed('卸载完成');\n\n output.ok(`${result.slug} 已卸载`);\n output.info(`清理文件: ${result.files.join(', ')}`);\n\n if (result.needsRestart) {\n output.warn('需要重启 Agent Host 使变更生效');\n }\n } catch (err) {\n spinner.fail('卸载失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n"],"mappings":"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","names":["Command","resolve","Command","Command","mkdir","writeFile","join","Command","Command","mkdir","join","writeFile","homedir","join","Command","Command","join","homedir","homedir","join","detectAdapter","GeneHubClient","getAdapter","LearningEngine","Command","ora","join","homedir","Command","GeneHubClient","getAdapter","detectAdapter","LearningEngine","spinner","ora","detectAdapter","getAdapter","Command","Command","getAdapter","detectAdapter","readFile","join","resolve","GeneHubClient","Command","ora","Command","GeneHubClient","resolve","join","readFile","ora","GeneHubClient","Command","Command","GeneHubClient","detectAdapter","getAdapter","Command","ora","Command","getAdapter","detectAdapter","ora","Command"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/commands/auth.ts","../src/config.ts","../src/output.ts","../src/commands/config.ts","../src/commands/genome.ts","../../sdk/typescript/src/adapters/generic.ts","../../sdk/typescript/src/adapters/base.ts","../../sdk/typescript/src/adapters/nanobot.ts","../../sdk/typescript/src/adapters/openclaw.ts","../../sdk/typescript/src/adapters/index.ts","../../sdk/typescript/src/client.ts","../../sdk/typescript/src/learning/engine.ts","../../sdk/typescript/src/learning/meta-gene.ts","../../sdk/typescript/src/learning/prompts.ts","../src/commands/init.ts","../src/commands/install.ts","../src/commands/learn.ts","../src/commands/list.ts","../src/commands/publish.ts","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/external.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/util.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/ZodError.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/locales/en.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/errors.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/parseUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/helpers/errorUtil.js","../../../node_modules/.pnpm/zod@3.25.76/node_modules/zod/v3/types.js","../../types/src/enums.ts","../../types/src/manifest.ts","../src/commands/search.ts","../src/commands/template.ts","../src/commands/uninstall.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { authCommand } from './commands/auth.js';\nimport { configCommand } from './commands/config.js';\nimport { genomeCommand } from './commands/genome.js';\nimport { initCommand } from './commands/init.js';\nimport { installCommand } from './commands/install.js';\nimport { learnCommand } from './commands/learn.js';\nimport { listCommand } from './commands/list.js';\nimport { publishCommand } from './commands/publish.js';\nimport { searchCommand } from './commands/search.js';\nimport { templateCommand } from './commands/template.js';\nimport { uninstallCommand } from './commands/uninstall.js';\n\nconst program = new Command();\n\nprogram.name('genehub').description('GeneHub CLI - AI 员工基因管理工具').version('0.1.0');\n\nprogram.addCommand(authCommand);\nprogram.addCommand(installCommand);\nprogram.addCommand(uninstallCommand);\nprogram.addCommand(searchCommand);\nprogram.addCommand(listCommand);\nprogram.addCommand(publishCommand);\nprogram.addCommand(initCommand);\nprogram.addCommand(configCommand);\nprogram.addCommand(learnCommand);\nprogram.addCommand(genomeCommand);\nprogram.addCommand(templateCommand);\n\nprogram.parse();\n","import { createServer } from 'node:http';\nimport { Command } from 'commander';\nimport { loadConfig, saveConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const authCommand = new Command('auth').description('认证管理');\n\nauthCommand\n .command('login')\n .description('通过 GitHub OAuth 登录并自动创建 API Key')\n .action(async () => {\n const config = await loadConfig();\n const registryUrl = config.registryUrl.replace(/\\/$/, '');\n\n const port = await findAvailablePort(9876);\n const callbackUrl = `http://localhost:${port}/callback`;\n\n const tokenPromise = waitForCallback(port);\n\n const authUrl = `${registryUrl}/auth/github?cli_callback=${encodeURIComponent(callbackUrl)}`;\n output.info(`Opening browser for GitHub login...`);\n output.info(` ${authUrl}`);\n\n const open = await import('open').catch(() => null);\n if (open) {\n await open.default(authUrl);\n } else {\n output.warn('Cannot open browser automatically. Please open the URL above manually.');\n }\n\n try {\n const { token, login } = await tokenPromise;\n await saveConfig({ token });\n output.ok(`Logged in as @${login}`);\n output.ok(`Token saved to config (${token.slice(0, 12)}****)`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : 'Login failed');\n process.exit(1);\n }\n });\n\nauthCommand\n .command('status')\n .description('查看当前登录状态')\n .action(async () => {\n const config = await loadConfig();\n\n if (!config.token) {\n output.info('Not logged in');\n output.info(' Run: genehub auth login');\n return;\n }\n\n output.ok(`Token: ${config.token.slice(0, 12)}****`);\n output.info(`Registry: ${config.registryUrl}`);\n });\n\nauthCommand\n .command('logout')\n .description('退出登录(清除本地 token)')\n .action(async () => {\n await saveConfig({ token: undefined });\n output.ok('Logged out. Token removed.');\n });\n\nfunction findAvailablePort(preferred: number): Promise<number> {\n return new Promise((resolve, reject) => {\n const server = createServer();\n server.listen(preferred, () => {\n server.close(() => resolve(preferred));\n });\n server.on('error', () => {\n const fallback = createServer();\n fallback.listen(0, () => {\n const addr = fallback.address();\n const port = typeof addr === 'object' && addr ? addr.port : 0;\n fallback.close(() => resolve(port));\n });\n fallback.on('error', reject);\n });\n });\n}\n\nfunction waitForCallback(port: number): Promise<{ token: string; login: string }> {\n return new Promise((resolve, reject) => {\n const timeout = setTimeout(() => {\n server.close();\n reject(new Error('Login timeout (60s)'));\n }, 60_000);\n\n const server = createServer((req, res) => {\n if (!req.url?.startsWith('/callback')) {\n res.writeHead(404);\n res.end();\n return;\n }\n\n const url = new URL(req.url, `http://localhost:${port}`);\n const token = url.searchParams.get('token');\n const login = url.searchParams.get('login');\n\n if (!token) {\n res.writeHead(400, { 'Content-Type': 'text/html; charset=utf-8' });\n res.end('<h2>Login failed</h2><p>No token received.</p>');\n return;\n }\n\n res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });\n res.end(`<h2>Login successful</h2><p>@${login ?? 'unknown'} - you can close this tab.</p>`);\n\n clearTimeout(timeout);\n server.close();\n resolve({ token, login: login ?? '' });\n });\n\n server.listen(port);\n });\n}\n","import { mkdir, readFile, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nconst CONFIG_DIR = join(homedir(), '.genehub');\nconst CONFIG_PATH = join(CONFIG_DIR, 'config.json');\n\nexport type CliConfig = {\n registryUrl: string;\n token?: string;\n};\n\nconst DEFAULT_CONFIG: CliConfig = {\n registryUrl: 'https://genehub.nodeskai.com',\n};\n\n/**\n * Priority: env vars > config file > defaults\n *\n * - GENEHUB_REGISTRY_URL / GENEHUB_REGISTRY\n * - GENEHUB_TOKEN\n */\nexport async function loadConfig(): Promise<CliConfig> {\n let fileConfig: Partial<CliConfig> = {};\n try {\n const raw = await readFile(CONFIG_PATH, 'utf-8');\n fileConfig = JSON.parse(raw);\n } catch {\n // no config file, use defaults\n }\n\n const merged = { ...DEFAULT_CONFIG, ...fileConfig };\n\n const envUrl = process.env.GENEHUB_REGISTRY_URL ?? process.env.GENEHUB_REGISTRY;\n if (envUrl) {\n merged.registryUrl = envUrl;\n }\n\n const envToken = process.env.GENEHUB_TOKEN;\n if (envToken) {\n merged.token = envToken;\n }\n\n return merged;\n}\n\nexport function getConfigSource(key: 'registry' | 'token'): 'env' | 'file' | 'default' {\n if (key === 'registry') {\n if (process.env.GENEHUB_REGISTRY_URL || process.env.GENEHUB_REGISTRY) return 'env';\n }\n if (key === 'token') {\n if (process.env.GENEHUB_TOKEN) return 'env';\n }\n return 'file';\n}\n\nexport async function saveConfig(config: Partial<CliConfig>): Promise<void> {\n const current = await loadConfig();\n const merged = { ...current, ...config };\n await mkdir(CONFIG_DIR, { recursive: true });\n await writeFile(CONFIG_PATH, JSON.stringify(merged, null, 2), 'utf-8');\n}\n","import chalk from 'chalk';\nimport Table from 'cli-table3';\n\nexport function info(msg: string) {\n console.log(chalk.blue('i'), msg);\n}\n\nexport function ok(msg: string) {\n console.log(chalk.green('+'), msg);\n}\n\nexport function warn(msg: string) {\n console.log(chalk.yellow('!'), msg);\n}\n\nexport function fail(msg: string) {\n console.error(chalk.red('x'), msg);\n}\n\nexport function table(headers: string[], rows: string[][]) {\n const t = new Table({\n head: headers.map((h) => chalk.cyan(h)),\n style: { head: [], border: [] },\n });\n for (const row of rows) {\n t.push(row);\n }\n console.log(t.toString());\n}\n","import { Command } from 'commander';\nimport { getConfigSource, loadConfig, saveConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const configCommand = new Command('config').description('管理 GeneHub CLI 配置');\n\nfunction sourceLabel(source: 'env' | 'file' | 'default'): string {\n if (source === 'env') return ' [env]';\n if (source === 'default') return ' [default]';\n return '';\n}\n\nconfigCommand\n .command('set <key> <value>')\n .description('设置配置项(registry / token)')\n .action(async (key: string, value: string) => {\n const validKeys = ['registry', 'token'] as const;\n if (!validKeys.includes(key as (typeof validKeys)[number])) {\n output.fail(`无效的配置项: ${key},可选: ${validKeys.join(', ')}`);\n return;\n }\n\n if (key === 'registry') {\n await saveConfig({ registryUrl: value });\n } else if (key === 'token') {\n await saveConfig({ token: value });\n }\n\n output.ok(`${key} = ${key === 'token' ? `${value.slice(0, 8)}***` : value}`);\n });\n\nconfigCommand\n .command('get [key]')\n .description('查看配置(支持 GENEHUB_REGISTRY_URL / GENEHUB_TOKEN 环境变量覆盖)')\n .action(async (key?: string) => {\n const config = await loadConfig();\n\n if (key) {\n const map: Record<string, string | undefined> = {\n registry: config.registryUrl,\n token: config.token ? `${config.token.slice(0, 8)}***` : undefined,\n };\n const src = sourceLabel(getConfigSource(key as 'registry' | 'token'));\n output.info(`${key} = ${map[key] ?? '(未设置)'}${src}`);\n } else {\n const regSrc = sourceLabel(getConfigSource('registry'));\n const tokSrc = sourceLabel(getConfigSource('token'));\n output.info(`registry = ${config.registryUrl}${regSrc}`);\n output.info(\n `token = ${config.token ? `${config.token.slice(0, 8)}***` : '(未设置)'}${tokSrc}`,\n );\n }\n });\n","import { readdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { join, relative, resolve } from 'node:path';\nimport { detectAdapter, GeneHubClient, getAdapter } from '@nodeskai/genehub-sdk';\nimport type { InstallResult } from '@nodeskai/genehub-types';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { parse } from 'yaml';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nconst IGNORED_PATTERNS = ['.git', 'node_modules', '.DS_Store', '__pycache__', '.venv'];\n\nasync function scanDirectory(dirPath: string): Promise<Record<string, string>> {\n const files: Record<string, string> = {};\n\n async function walk(currentPath: string) {\n const entries = await readdir(currentPath, { withFileTypes: true });\n for (const entry of entries) {\n if (IGNORED_PATTERNS.includes(entry.name)) continue;\n const fullPath = join(currentPath, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath);\n } else if (entry.isFile()) {\n const relPath = relative(dirPath, fullPath);\n const content = await readFile(fullPath, 'utf-8');\n files[relPath] = content;\n }\n }\n }\n\n await walk(dirPath);\n return files;\n}\n\nasync function extractTarGz(buffer: ArrayBuffer, destDir: string): Promise<void> {\n const { mkdir } = await import('node:fs/promises');\n await mkdir(destDir, { recursive: true });\n const { extract } = await import('tar');\n const tarPath = join(tmpdir(), `genehub-genome-${Date.now()}.tar.gz`);\n await writeFile(tarPath, Buffer.from(buffer));\n try {\n await extract({ file: tarPath, cwd: destDir, strip: 1 });\n } finally {\n await rm(tarPath, { force: true });\n }\n}\n\ntype GenomeYaml = {\n name: string;\n slug: string;\n version: string;\n description?: string;\n short_description?: string;\n category?: string;\n tags?: string[];\n icon?: string;\n genes: { slug: string; version: string; config_override?: Record<string, unknown> }[];\n compatibility?: string[];\n author?: { type: string; id?: string; name: string };\n};\n\nconst publishGenomeCommand = new Command('publish')\n .description('发布基因组到 GeneHub Registry')\n .argument('<path>', '基因组目录路径(包含 genome.yaml)')\n .action(async (dirPath: string) => {\n const config = await loadConfig();\n\n if (!config.token) {\n output.fail('未配置认证 token');\n process.exit(1);\n }\n\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n const absPath = resolve(dirPath);\n\n try {\n const yamlPath = join(absPath, 'genome.yaml');\n const raw = await readFile(yamlPath, 'utf-8');\n const parsed = parse(raw) as GenomeYaml;\n\n if (!parsed.name || !parsed.slug || !parsed.version || !parsed.genes?.length) {\n output.fail('genome.yaml 缺少必填字段: name, slug, version, genes');\n process.exit(1);\n }\n\n const scanSpinner = ora('扫描基因组目录...').start();\n const files = await scanDirectory(absPath);\n const fileCount = Object.keys(files).length;\n scanSpinner.succeed(`扫描完成: ${fileCount} 个文件`);\n\n const spinner = ora(`发布基因组 ${parsed.slug}@${parsed.version}...`).start();\n\n try {\n const genome = await client.publishGenome(parsed, files);\n spinner.succeed('发布成功');\n output.ok(\n `${genome.slug}@${genome.version} 已发布到 GeneHub Registry (${fileCount} 个文件)`,\n );\n } catch (err) {\n const isSlugExists = err instanceof Error && err.message.includes('genome_slug_exists');\n if (!isSlugExists) throw err;\n\n spinner.text = `基因组 ${parsed.slug} 已存在,发布新版本 ${parsed.version}...`;\n const genome = await client.publishGenomeVersion(\n parsed.slug,\n { version: parsed.version, genes: parsed.genes, files },\n files,\n );\n spinner.succeed('发布成功');\n output.ok(`${genome.slug}@${genome.version} 新版本已发布 (${fileCount} 个文件)`);\n }\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nconst installGenomeCommand = new Command('install')\n .description('安装基因组(递归安装所有引用的基因)')\n .argument('<slug>', '基因组标识符(支持 slug@version 格式)')\n .option('-p, --product <product>', '指定目标产品')\n .option('-f, --force', '强制覆盖已安装基因', false)\n .option('--target <path>', '指定安装目标路径')\n .action(async (rawSlug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n const atIdx = rawSlug.lastIndexOf('@');\n const slug = atIdx > 0 ? rawSlug.slice(0, atIdx) : rawSlug;\n const version = atIdx > 0 ? rawSlug.slice(atIdx + 1) : undefined;\n\n const spinner = ora(`获取基因组 ${slug}...`).start();\n\n try {\n const genome = await client.getGenome(slug);\n spinner.succeed(`基因组: ${genome.name} v${genome.version} (${genome.genes.length} 个基因)`);\n\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n output.info(`目标产品: ${adapter.product}`);\n\n const resolveSpinner = ora('解析基因依赖...').start();\n const resolved = await client.resolveGenome(slug, version);\n resolveSpinner.succeed(`解析完成: ${resolved.genes.length} 个基因(含依赖)`);\n\n if (resolved.warnings.length > 0) {\n for (const w of resolved.warnings) output.warn(w);\n }\n if (resolved.conflicts.length > 0) {\n for (const c of resolved.conflicts) output.warn(`冲突: ${c}`);\n }\n\n let installed = 0;\n let skipped = 0;\n\n for (const gene of resolved.genes) {\n if (!opts.force && (await adapter.isInstalled(gene.slug))) {\n skipped++;\n continue;\n }\n\n const geneSpinner = ora(` 安装 ${gene.slug}@${gene.version}...`).start();\n\n try {\n const manifest = await client.getManifest(gene.slug, gene.version);\n let result: InstallResult | undefined;\n\n try {\n const archive = await client.downloadArchive(gene.slug, gene.version);\n const tempDir = join(tmpdir(), `genehub-install-${gene.slug}-${Date.now()}`);\n await extractTarGz(archive, tempDir);\n\n if (adapter.installFromDirectory) {\n result = await adapter.installFromDirectory(tempDir, manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n } else {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n await rm(tempDir, { recursive: true, force: true });\n } catch {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n geneSpinner.succeed(` ${result.slug}@${result.version}`);\n installed++;\n\n try {\n await client.reportInstall(gene.slug);\n } catch {\n // non-critical\n }\n } catch (err) {\n geneSpinner.fail(\n ` ${gene.slug} 安装失败: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n output.ok(`基因组安装完成: ${installed} 安装, ${skipped} 跳过`);\n\n try {\n await client.reportGenomeInstall(slug);\n } catch {\n // non-critical\n }\n } catch (err) {\n spinner.fail('安装失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nconst infoGenomeCommand = new Command('info')\n .description('查看基因组详情')\n .argument('<slug>', '基因组标识符')\n .option('--json', 'JSON 格式输出', false)\n .action(async (slug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n try {\n const genome = await client.getGenome(slug);\n\n if (opts.json) {\n console.log(JSON.stringify(genome, null, 2));\n return;\n }\n\n output.info(`名称: ${genome.name}`);\n output.info(`Slug: ${genome.slug}`);\n output.info(`版本: ${genome.version}`);\n output.info(`分类: ${genome.category}`);\n output.info(`描述: ${genome.description || genome.short_description || '(无)'}`);\n output.info(`安装数: ${genome.install_count}`);\n\n if (genome.genes.length > 0) {\n output.info(`\\n基因列表 (${genome.genes.length}个):`);\n output.table(\n ['slug', '版本'],\n genome.genes.map((g) => [g.slug, g.version]),\n );\n }\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nconst listGenomeCommand = new Command('list')\n .description('搜索基因组')\n .option('-q, --query <keyword>', '搜索关键词')\n .option('-c, --category <category>', '按分类过滤')\n .option('--json', 'JSON 格式输出', false)\n .action(async (opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n try {\n const result = await client.searchGenomes({\n q: opts.query,\n category: opts.category,\n });\n\n if (opts.json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (result.items.length === 0) {\n output.info('未找到基因组');\n return;\n }\n\n output.table(\n ['slug', '名称', '版本', '分类', '基因数', '安装数'],\n result.items.map((g) => [\n g.slug,\n g.name,\n g.version,\n g.category,\n String(g.genes.length),\n String(g.install_count),\n ]),\n );\n\n output.info(`共 ${result.total} 条结果`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nexport const genomeCommand = new Command('genome').description('基因组管理');\n\ngenomeCommand.addCommand(publishGenomeCommand);\ngenomeCommand.addCommand(installGenomeCommand);\ngenomeCommand.addCommand(infoGenomeCommand);\ngenomeCommand.addCommand(listGenomeCommand);\n","import { cp, mkdir, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type {\n GeneManifest,\n InstalledGene,\n InstallOptions,\n InstallResult,\n UninstallOptions,\n UninstallResult,\n} from '@nodeskai/genehub-types';\nimport { stringify } from 'yaml';\nimport { BaseAdapter } from './base.js';\n\nconst DEFAULT_DIR = join(process.cwd(), '.genehub', 'genes');\n\nexport class GenericAdapter extends BaseAdapter {\n readonly product = 'generic';\n private genesDir: string;\n\n constructor(options?: { genesDir?: string }) {\n super();\n this.genesDir = options?.genesDir ?? DEFAULT_DIR;\n }\n\n async detect(): Promise<boolean> {\n return true;\n }\n\n protected async doInstall(\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const targetDir = options?.targetPath\n ? join(options.targetPath, manifest.slug)\n : join(this.genesDir, manifest.slug);\n\n await mkdir(targetDir, { recursive: true });\n const files: string[] = [];\n\n const yamlPath = join(targetDir, 'gene.yaml');\n await writeFile(yamlPath, stringify(manifest), 'utf-8');\n files.push(yamlPath);\n\n if (manifest.skill.content) {\n const skillPath = join(targetDir, 'SKILL.md');\n await writeFile(skillPath, manifest.skill.content, 'utf-8');\n files.push(skillPath);\n }\n\n return {\n success: true,\n slug: manifest.slug,\n version: manifest.version,\n files,\n needsRestart: false,\n dependencies: manifest.dependencies.map((d) => d.slug),\n };\n }\n\n protected override async doInstallFromDirectory(\n geneDir: string,\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const targetDir = options?.targetPath\n ? join(options.targetPath, manifest.slug)\n : join(this.genesDir, manifest.slug);\n\n await cp(geneDir, targetDir, { recursive: true });\n\n const files: string[] = [];\n async function collectFiles(dir: string) {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const full = join(dir, entry.name);\n if (entry.isDirectory()) await collectFiles(full);\n else files.push(full);\n }\n }\n await collectFiles(targetDir);\n\n return {\n success: true,\n slug: manifest.slug,\n version: manifest.version,\n files,\n needsRestart: false,\n dependencies: manifest.dependencies.map((d) => d.slug),\n };\n }\n\n protected async doUninstall(slug: string, _options?: UninstallOptions): Promise<UninstallResult> {\n const targetDir = join(this.genesDir, slug);\n try {\n await rm(targetDir, { recursive: true });\n } catch {\n // already removed\n }\n return { success: true, slug, files: [targetDir], needsRestart: false };\n }\n\n async list(): Promise<InstalledGene[]> {\n try {\n const dirs = await readdir(this.genesDir, { withFileTypes: true });\n const results: InstalledGene[] = [];\n\n for (const dir of dirs) {\n if (!dir.isDirectory()) continue;\n const yamlPath = join(this.genesDir, dir.name, 'gene.yaml');\n try {\n const s = await stat(yamlPath);\n const raw = await readFile(yamlPath, 'utf-8');\n const versionMatch = raw.match(/^version:\\s*[\"']?(.+?)[\"']?\\s*$/m);\n results.push({\n slug: dir.name,\n version: versionMatch?.[1] ?? 'unknown',\n installedAt: s.mtime.toISOString(),\n files: [yamlPath],\n });\n } catch {\n // skip\n }\n }\n\n return results;\n } catch {\n return [];\n }\n }\n\n async isInstalled(slug: string): Promise<boolean> {\n try {\n await stat(join(this.genesDir, slug, 'gene.yaml'));\n return true;\n } catch {\n return false;\n }\n }\n\n async getInstalledVersion(slug: string): Promise<string | null> {\n try {\n const raw = await readFile(join(this.genesDir, slug, 'gene.yaml'), 'utf-8');\n const match = raw.match(/^version:\\s*[\"']?(.+?)[\"']?\\s*$/m);\n return match?.[1] ?? null;\n } catch {\n return null;\n }\n }\n}\n","import type {\n GeneAdapter,\n GeneManifest,\n InstalledGene,\n InstallOptions,\n InstallResult,\n UninstallOptions,\n UninstallResult,\n} from '@nodeskai/genehub-types';\n\nexport abstract class BaseAdapter implements GeneAdapter {\n abstract readonly product: string;\n\n abstract detect(): Promise<boolean>;\n\n async install(manifest: GeneManifest, options?: InstallOptions): Promise<InstallResult> {\n const result = await this.doInstall(manifest, options);\n await this.onPostInstall(manifest, result);\n return result;\n }\n\n async installFromDirectory(\n geneDir: string,\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const result = await this.doInstallFromDirectory(geneDir, manifest, options);\n await this.onPostInstall(manifest, result);\n return result;\n }\n\n protected abstract doInstall(\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult>;\n\n protected async doInstallFromDirectory(\n _geneDir: string,\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n return this.doInstall(manifest, options);\n }\n\n protected async onPostInstall(_manifest: GeneManifest, _result: InstallResult): Promise<void> {}\n\n protected async onPostUninstall(_slug: string, _result: UninstallResult): Promise<void> {}\n\n async uninstall(slug: string, options?: UninstallOptions): Promise<UninstallResult> {\n const result = await this.doUninstall(slug, options);\n await this.onPostUninstall(slug, result);\n return result;\n }\n\n protected abstract doUninstall(\n slug: string,\n options?: UninstallOptions,\n ): Promise<UninstallResult>;\n\n abstract list(): Promise<InstalledGene[]>;\n\n abstract isInstalled(slug: string): Promise<boolean>;\n\n abstract getInstalledVersion(slug: string): Promise<string | null>;\n\n protected generateSkillContent(manifest: GeneManifest, metadataNamespace: string): string {\n const skillMeta = manifest.skill.always ? 'true' : 'false';\n const frontMatter = [\n '---',\n `name: ${manifest.skill.name}`,\n `version: ${manifest.version}`,\n `description: ${manifest.short_description}`,\n 'metadata:',\n ` ${metadataNamespace}:`,\n ` always: ${skillMeta}`,\n '---',\n ].join('\\n');\n\n if (manifest.skill.content) {\n const content = manifest.skill.content.trim();\n if (content.startsWith('---')) {\n return content;\n }\n return `${frontMatter}\\n\\n${content}`;\n }\n\n return frontMatter;\n }\n\n protected parseSkillVersion(content: string): string | null {\n const match = content.match(/^---[\\s\\S]*?version:\\s*(.+?)[\\s\\n][\\s\\S]*?---/m);\n return match?.[1]?.trim() ?? null;\n }\n}\n","import { cp, mkdir, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport type {\n GeneManifest,\n InstalledGene,\n InstallOptions,\n InstallResult,\n UninstallOptions,\n UninstallResult,\n} from '@nodeskai/genehub-types';\nimport { BaseAdapter } from './base.js';\n\nconst DEFAULT_WORKSPACE = join(homedir(), '.nanobot', 'workspace');\n\nexport class NanobotAdapter extends BaseAdapter {\n readonly product = 'nanobot';\n private workspace: string;\n\n constructor(options?: { workspace?: string }) {\n super();\n this.workspace = options?.workspace ?? DEFAULT_WORKSPACE;\n }\n\n private get skillsDir(): string {\n return join(this.workspace, 'skills');\n }\n\n async detect(): Promise<boolean> {\n try {\n await stat(join(homedir(), '.nanobot', 'config.json'));\n return true;\n } catch {\n return false;\n }\n }\n\n protected async doInstall(\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const targetDir = options?.targetPath\n ? join(options.targetPath, manifest.skill.name)\n : join(this.skillsDir, manifest.skill.name);\n\n await mkdir(targetDir, { recursive: true });\n const files: string[] = [];\n\n const skillContent = this.buildNanobotSkillContent(manifest);\n const skillPath = join(targetDir, 'SKILL.md');\n await writeFile(skillPath, skillContent, 'utf-8');\n files.push(skillPath);\n\n if (manifest.mcp_servers.length > 0) {\n await this.mergeNanobotMcpConfig(manifest.mcp_servers);\n }\n\n return {\n success: true,\n slug: manifest.slug,\n version: manifest.version,\n files,\n needsRestart: false,\n dependencies: manifest.dependencies.map((d) => d.slug),\n };\n }\n\n protected override async doInstallFromDirectory(\n geneDir: string,\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const targetDir = options?.targetPath\n ? join(options.targetPath, manifest.skill.name)\n : join(this.skillsDir, manifest.skill.name);\n\n await mkdir(targetDir, { recursive: true });\n await cp(geneDir, targetDir, { recursive: true });\n\n if (manifest.mcp_servers.length > 0) {\n await this.mergeNanobotMcpConfig(manifest.mcp_servers);\n }\n\n const files: string[] = [];\n async function collectFiles(dir: string) {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const full = join(dir, entry.name);\n if (entry.isDirectory()) await collectFiles(full);\n else files.push(full);\n }\n }\n await collectFiles(targetDir);\n\n return {\n success: true,\n slug: manifest.slug,\n version: manifest.version,\n files,\n needsRestart: false,\n dependencies: manifest.dependencies.map((d) => d.slug),\n };\n }\n\n protected async onPostInstall(manifest: GeneManifest, _result: InstallResult): Promise<void> {\n await this.writeMemoryEntry(manifest, 'install');\n }\n\n protected async doUninstall(slug: string, _options?: UninstallOptions): Promise<UninstallResult> {\n const targetDir = join(this.skillsDir, slug);\n const files: string[] = [];\n\n try {\n await rm(targetDir, { recursive: true });\n files.push(targetDir);\n } catch {\n // already removed\n }\n\n return { success: true, slug, files, needsRestart: false };\n }\n\n protected async onPostUninstall(slug: string, _result: UninstallResult): Promise<void> {\n await this.writeMemoryEntry(\n { slug, name: slug, version: 'unknown' } as GeneManifest,\n 'uninstall',\n );\n }\n\n async list(): Promise<InstalledGene[]> {\n try {\n const dirs = await readdir(this.skillsDir, { withFileTypes: true });\n const results: InstalledGene[] = [];\n\n for (const dir of dirs) {\n if (!dir.isDirectory()) continue;\n const skillPath = join(this.skillsDir, dir.name, 'SKILL.md');\n try {\n const s = await stat(skillPath);\n const content = await readFile(skillPath, 'utf-8');\n const version = this.parseSkillVersion(content) ?? 'unknown';\n results.push({\n slug: dir.name,\n version,\n installedAt: s.mtime.toISOString(),\n files: [skillPath],\n });\n } catch {\n // skip\n }\n }\n\n return results;\n } catch {\n return [];\n }\n }\n\n async isInstalled(slug: string): Promise<boolean> {\n try {\n await stat(join(this.skillsDir, slug, 'SKILL.md'));\n return true;\n } catch {\n return false;\n }\n }\n\n async getInstalledVersion(slug: string): Promise<string | null> {\n try {\n const content = await readFile(join(this.skillsDir, slug, 'SKILL.md'), 'utf-8');\n return this.parseSkillVersion(content);\n } catch {\n return null;\n }\n }\n\n async triggerLearning(prompt: string): Promise<void> {\n const { exec } = await import('node:child_process');\n const { promisify } = await import('node:util');\n const execAsync = promisify(exec);\n\n const escaped = prompt.replace(/\"/g, '\\\\\"');\n try {\n await execAsync(`nanobot run --prompt \"${escaped}\"`, { timeout: 5000 });\n } catch {\n // fire-and-forget: nanobot CLI support is tentative\n }\n }\n\n private async writeMemoryEntry(\n manifest: GeneManifest,\n action: 'install' | 'uninstall',\n ): Promise<void> {\n const memoryDir = join(this.workspace, 'memory');\n await mkdir(memoryDir, { recursive: true });\n\n const today = new Date().toISOString().slice(0, 10);\n const memoryPath = join(memoryDir, `${today}.md`);\n\n let existing = '';\n try {\n existing = await readFile(memoryPath, 'utf-8');\n } catch {\n /* new file */\n }\n\n const time = new Date().toLocaleTimeString('zh-CN', { hour12: false });\n const verb = action === 'install' ? '学习了' : '遗忘了';\n const entry = `\\n- [${time}] 通过 GeneHub ${verb}基因: **${manifest.name ?? manifest.slug}** v${manifest.version ?? '?'}\\n`;\n\n await writeFile(memoryPath, existing + entry, 'utf-8');\n }\n\n private buildNanobotSkillContent(manifest: GeneManifest): string {\n if (manifest.skill.content?.trim().startsWith('---')) {\n return manifest.skill.content;\n }\n\n return this.generateSkillContent(manifest, 'nanobot');\n }\n\n private async mergeNanobotMcpConfig(mcpServers: GeneManifest['mcp_servers']): Promise<void> {\n const configPath = join(homedir(), '.nanobot', 'config.json');\n\n let config: Record<string, unknown> = {};\n try {\n const raw = await readFile(configPath, 'utf-8');\n config = JSON.parse(raw);\n } catch {\n return;\n }\n\n if (!config.tools) config.tools = {};\n const tools = config.tools as Record<string, unknown>;\n if (!tools.mcpServers) tools.mcpServers = {};\n const servers = tools.mcpServers as Record<string, unknown>;\n\n for (const srv of mcpServers) {\n if (servers[srv.name]) continue;\n servers[srv.name] = {\n ...(srv.command ? { command: srv.command, args: srv.args ?? [], env: srv.env ?? {} } : {}),\n ...(srv.url ? { url: srv.url, headers: srv.headers ?? {} } : {}),\n };\n }\n\n await writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');\n }\n}\n","import { randomUUID } from 'node:crypto';\nimport { appendFile, cp, mkdir, readdir, readFile, rm, stat, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { basename, join } from 'node:path';\nimport type {\n GeneManifest,\n InstalledGene,\n InstallOptions,\n InstallResult,\n UninstallOptions,\n UninstallResult,\n} from '@nodeskai/genehub-types';\nimport { BaseAdapter } from './base.js';\n\nconst DEFAULT_CONFIG_DIR = join(homedir(), '.openclaw');\nconst DEFAULT_WORKSPACE_DIR = join(DEFAULT_CONFIG_DIR, 'workspace');\nconst DEFAULT_SKILLS_DIR = join(DEFAULT_WORKSPACE_DIR, 'skills');\nconst DEFAULT_CONFIG_PATH = join(DEFAULT_CONFIG_DIR, 'openclaw.json');\nconst SESSIONS_REL = join('agents', 'main', 'sessions');\n\nexport class OpenClawAdapter extends BaseAdapter {\n readonly product = 'openclaw';\n private skillsDir: string;\n private configPath: string;\n private configDir: string;\n private workspaceDir: string;\n\n constructor(options?: {\n skillsDir?: string;\n configPath?: string;\n workspaceDir?: string;\n configDir?: string;\n }) {\n super();\n this.configDir = options?.configDir ?? DEFAULT_CONFIG_DIR;\n this.workspaceDir = options?.workspaceDir ?? DEFAULT_WORKSPACE_DIR;\n this.skillsDir = options?.skillsDir ?? DEFAULT_SKILLS_DIR;\n this.configPath = options?.configPath ?? DEFAULT_CONFIG_PATH;\n }\n\n async detect(): Promise<boolean> {\n try {\n await stat(this.configPath);\n return true;\n } catch {\n return false;\n }\n }\n\n protected async doInstall(\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const targetDir = options?.targetPath\n ? join(options.targetPath, manifest.skill.name)\n : join(this.skillsDir, manifest.skill.name);\n\n await mkdir(targetDir, { recursive: true });\n const files: string[] = [];\n\n const skillPath = join(targetDir, 'SKILL.md');\n const content = this.generateSkillContent(manifest, 'openclaw');\n await writeFile(skillPath, content, 'utf-8');\n files.push(skillPath);\n\n if (manifest.config?.openclaw) {\n await this.mergeOpenClawConfig(manifest.config.openclaw);\n files.push(this.configPath);\n }\n\n if (manifest.mcp_servers?.length) {\n await this.mergeMcpServers(manifest.mcp_servers);\n files.push(this.configPath);\n }\n\n return {\n success: true,\n slug: manifest.slug,\n version: manifest.version,\n files: [...new Set(files)],\n needsRestart: true,\n dependencies: manifest.dependencies.map((d) => d.slug),\n };\n }\n\n protected override async doInstallFromDirectory(\n geneDir: string,\n manifest: GeneManifest,\n options?: InstallOptions,\n ): Promise<InstallResult> {\n const targetDir = options?.targetPath\n ? join(options.targetPath, manifest.skill.name)\n : join(this.skillsDir, manifest.skill.name);\n\n await mkdir(targetDir, { recursive: true });\n await cp(geneDir, targetDir, { recursive: true });\n\n if (manifest.config?.openclaw) {\n await this.mergeOpenClawConfig(manifest.config.openclaw);\n }\n if (manifest.mcp_servers?.length) {\n await this.mergeMcpServers(manifest.mcp_servers);\n }\n\n const files: string[] = [];\n async function collectFiles(dir: string) {\n const entries = await readdir(dir, { withFileTypes: true });\n for (const entry of entries) {\n const full = join(dir, entry.name);\n if (entry.isDirectory()) await collectFiles(full);\n else files.push(full);\n }\n }\n await collectFiles(targetDir);\n\n return {\n success: true,\n slug: manifest.slug,\n version: manifest.version,\n files,\n needsRestart: true,\n dependencies: manifest.dependencies.map((d) => d.slug),\n };\n }\n\n protected async onPostInstall(manifest: GeneManifest, _result: InstallResult): Promise<void> {\n await this.updateAgentsMd(manifest, 'add');\n await this.writeMemoryEntry(manifest, 'install');\n await this.invalidateSkillSnapshots();\n await this.injectEvolutionNotification(manifest.name ?? manifest.slug, 'installed');\n }\n\n protected async doUninstall(slug: string, _options?: UninstallOptions): Promise<UninstallResult> {\n const targetDir = join(this.skillsDir, slug);\n const files: string[] = [];\n\n try {\n await rm(targetDir, { recursive: true });\n files.push(targetDir);\n } catch {\n // already removed\n }\n\n return { success: true, slug, files, needsRestart: true };\n }\n\n protected async onPostUninstall(slug: string, _result: UninstallResult): Promise<void> {\n await this.updateAgentsMd({ slug } as GeneManifest, 'remove');\n await this.writeMemoryEntry(\n { slug, name: slug, version: 'unknown' } as GeneManifest,\n 'uninstall',\n );\n await this.invalidateSkillSnapshots();\n await this.injectEvolutionNotification(slug, 'uninstalled');\n }\n\n async list(): Promise<InstalledGene[]> {\n try {\n const dirs = await readdir(this.skillsDir, { withFileTypes: true });\n const results: InstalledGene[] = [];\n\n for (const dir of dirs) {\n if (!dir.isDirectory()) continue;\n const skillPath = join(this.skillsDir, dir.name, 'SKILL.md');\n try {\n const s = await stat(skillPath);\n const content = await readFile(skillPath, 'utf-8');\n const version = this.parseSkillVersion(content) ?? 'unknown';\n results.push({\n slug: dir.name,\n version,\n installedAt: s.mtime.toISOString(),\n files: [skillPath],\n });\n } catch {\n // skip\n }\n }\n\n return results;\n } catch {\n return [];\n }\n }\n\n async isInstalled(slug: string): Promise<boolean> {\n try {\n await stat(join(this.skillsDir, slug, 'SKILL.md'));\n return true;\n } catch {\n return false;\n }\n }\n\n async getInstalledVersion(slug: string): Promise<string | null> {\n try {\n const content = await readFile(join(this.skillsDir, slug, 'SKILL.md'), 'utf-8');\n return this.parseSkillVersion(content);\n } catch {\n return null;\n }\n }\n\n private async updateAgentsMd(manifest: GeneManifest, action: 'add' | 'remove'): Promise<void> {\n const agentsPath = join(this.workspaceDir, 'AGENTS.md');\n let content: string;\n try {\n content = await readFile(agentsPath, 'utf-8');\n } catch {\n return;\n }\n\n const marker = `<!-- genehub:${manifest.slug} -->`;\n const endMarker = `<!-- /genehub:${manifest.slug} -->`;\n\n const existingPattern = new RegExp(\n `${escapeRegex(marker)}[\\\\s\\\\S]*?${escapeRegex(endMarker)}\\\\n?`,\n );\n content = content.replace(existingPattern, '');\n\n if (action === 'add') {\n const geneBlock = [\n marker,\n `- **${manifest.name ?? manifest.slug}** (v${manifest.version}) — ${manifest.short_description ?? ''}`,\n endMarker,\n ].join('\\n');\n\n const toolsSection = content.indexOf('## Tools');\n if (toolsSection !== -1) {\n const nextSection = content.indexOf('\\n## ', toolsSection + 1);\n const insertPos = nextSection !== -1 ? nextSection : content.length;\n content = `${content.slice(0, insertPos)}\\n${geneBlock}\\n${content.slice(insertPos)}`;\n } else {\n content += `\\n\\n## GeneHub Skills\\n\\n${geneBlock}\\n`;\n }\n }\n\n if (action === 'remove' && manifest.slug === 'genehub-learner') {\n const bootBegin = '<!-- genehub:learning-boot -->';\n const bootEnd = '<!-- /genehub:learning-boot -->';\n const bootPattern = new RegExp(\n `\\\\n?${escapeRegex(bootBegin)}[\\\\s\\\\S]*?${escapeRegex(bootEnd)}\\\\n?`,\n );\n content = content.replace(bootPattern, '');\n }\n\n await writeFile(agentsPath, content, 'utf-8');\n }\n\n private async writeMemoryEntry(\n manifest: GeneManifest,\n action: 'install' | 'uninstall',\n ): Promise<void> {\n const memoryDir = join(this.workspaceDir, 'memory');\n await mkdir(memoryDir, { recursive: true });\n\n const today = new Date().toISOString().slice(0, 10);\n const memoryPath = join(memoryDir, `${today}.md`);\n\n let existing = '';\n try {\n existing = await readFile(memoryPath, 'utf-8');\n } catch {\n // new file\n }\n\n const time = new Date().toLocaleTimeString('zh-CN', { hour12: false });\n const verb = action === 'install' ? '学习了' : '遗忘了';\n const entry = `\\n- [${time}] 通过 GeneHub ${verb}基因: **${manifest.name ?? manifest.slug}** v${manifest.version ?? '?'}\\n`;\n\n await writeFile(memoryPath, existing + entry, 'utf-8');\n }\n\n private async mergeOpenClawConfig(config: NonNullable<GeneManifest['config']>['openclaw']) {\n if (!config) return;\n\n let existing: Record<string, unknown> = {};\n try {\n const raw = await readFile(this.configPath, 'utf-8');\n existing = JSON.parse(raw);\n } catch {\n // no existing config\n }\n\n if (config.openclaw_config) {\n Object.assign(existing, config.openclaw_config);\n }\n\n if (config.tool_allow) {\n const current = ((existing.tools as Record<string, unknown>)?.allow as string[]) ?? [];\n const merged = [...new Set([...current, ...config.tool_allow])];\n if (!existing.tools) existing.tools = {};\n (existing.tools as Record<string, unknown>).allow = merged;\n }\n\n await writeFile(this.configPath, JSON.stringify(existing, null, 2), 'utf-8');\n }\n\n private async mergeMcpServers(servers: NonNullable<GeneManifest['mcp_servers']>) {\n if (!servers?.length) return;\n\n let existing: Record<string, unknown> = {};\n try {\n const raw = await readFile(this.configPath, 'utf-8');\n existing = JSON.parse(raw);\n } catch {\n return;\n }\n\n const mcpServers = (existing.mcpServers ?? {}) as Record<string, unknown>;\n for (const server of servers) {\n mcpServers[server.name] = {\n transport: server.transport,\n command: server.command,\n args: server.args,\n env: server.env,\n };\n }\n existing.mcpServers = mcpServers;\n\n await writeFile(this.configPath, JSON.stringify(existing, null, 2), 'utf-8');\n }\n\n async triggerLearning(prompt: string): Promise<void> {\n const { exec } = await import('node:child_process');\n const { promisify } = await import('node:util');\n const execAsync = promisify(exec);\n\n const escaped = prompt.replace(/\"/g, '\\\\\"');\n try {\n await execAsync(`openclaw agent --message \"${escaped}\"`, { timeout: 5000 });\n } catch {\n // fire-and-forget: the command may keep running after timeout\n }\n }\n\n async notifySkillChange(\n geneName: string,\n action: 'installed' | 'updated' | 'uninstalled',\n ): Promise<void> {\n await this.invalidateSkillSnapshots();\n const notifyAction = action === 'uninstalled' ? 'uninstalled' : 'installed';\n await this.injectEvolutionNotification(geneName, notifyAction);\n }\n\n /**\n * Clear cached skillsSnapshot from all OpenClaw sessions.\n * Without this, OpenClaw keeps using the stale skill list even after restart.\n */\n private async invalidateSkillSnapshots(): Promise<void> {\n const sessionsPath = join(this.configDir, SESSIONS_REL, 'sessions.json');\n let raw: string;\n try {\n raw = await readFile(sessionsPath, 'utf-8');\n } catch {\n return;\n }\n\n try {\n const store = JSON.parse(raw) as Record<string, unknown>;\n let changed = false;\n\n for (const entry of Object.values(store)) {\n if (entry && typeof entry === 'object' && 'skillsSnapshot' in entry) {\n delete (entry as Record<string, unknown>).skillsSnapshot;\n changed = true;\n }\n }\n\n if (changed) {\n await writeFile(sessionsPath, JSON.stringify(store, null, 2), 'utf-8');\n }\n } catch {\n // best-effort\n }\n }\n\n /**\n * Inject evolution notification into all active session JSONL files.\n *\n * Old conversation history may contain stale skill listings from the agent.\n * The LLM repeats its previous answer instead of re-checking the system prompt.\n * By appending a user+assistant message pair about the evolution, we override\n * the stale context. Also resets systemSent to force system prompt rebuild.\n */\n private async injectEvolutionNotification(\n geneName: string,\n action: 'installed' | 'uninstalled',\n ): Promise<void> {\n const sessionsDir = join(this.configDir, SESSIONS_REL);\n const sessionsPath = join(sessionsDir, 'sessions.json');\n\n let raw: string;\n try {\n raw = await readFile(sessionsPath, 'utf-8');\n } catch {\n return;\n }\n\n const userText =\n action === 'installed'\n ? `[System] 基因系统通知: 你刚刚获取了新的基因「${geneName}」,完成了一轮进化。你的技能列表已更新,请以 system prompt 中 <available_skills> 为准。`\n : `[System] 基因系统通知: 基因「${geneName}」已遗忘。你的技能列表已更新,请以 system prompt 中 <available_skills> 为准。`;\n\n const assistantText =\n action === 'installed'\n ? `收到,我已获取新基因「${geneName}」并完成进化。我的技能列表已更新。`\n : `收到,基因「${geneName}」已遗忘。我的技能列表已更新。`;\n\n try {\n const store = JSON.parse(raw) as Record<string, unknown>;\n let storeChanged = false;\n\n for (const entry of Object.values(store)) {\n if (!entry || typeof entry !== 'object') continue;\n const rec = entry as Record<string, unknown>;\n const sessionFile = rec.sessionFile as string | undefined;\n if (!sessionFile) continue;\n\n const localPath = join(sessionsDir, basename(sessionFile));\n let content: string;\n try {\n content = (await readFile(localPath, 'utf-8')).trimEnd();\n if (!content) continue;\n } catch {\n continue;\n }\n\n try {\n const lastLine = content.split('\\n').pop() ?? '';\n const lastEntry = JSON.parse(lastLine) as Record<string, unknown>;\n const parentId = (lastEntry.id as string) ?? randomUUID().slice(0, 8);\n\n const now = new Date();\n const tsIso = now.toISOString();\n const tsMs = now.getTime();\n const userId = randomUUID().slice(0, 8);\n const assistantId = randomUUID().slice(0, 8);\n\n const modelProvider = (rec.modelProvider as string) ?? 'system';\n const modelName = (rec.model as string) ?? 'system';\n\n const userMsg = JSON.stringify({\n type: 'message',\n id: userId,\n parentId,\n timestamp: tsIso,\n message: {\n role: 'user',\n content: [{ type: 'text', text: userText }],\n timestamp: tsMs,\n },\n });\n\n const assistantMsg = JSON.stringify({\n type: 'message',\n id: assistantId,\n parentId: userId,\n timestamp: tsIso,\n message: {\n role: 'assistant',\n content: [{ type: 'text', text: assistantText }],\n api: 'openai-completions',\n provider: modelProvider,\n model: modelName,\n usage: {\n input: 0,\n output: 0,\n cacheRead: 0,\n cacheWrite: 0,\n totalTokens: 0,\n cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n },\n stopReason: 'stop',\n timestamp: tsMs,\n },\n });\n\n await appendFile(localPath, `\\n${userMsg}\\n${assistantMsg}`, 'utf-8');\n } catch {\n continue;\n }\n\n rec.systemSent = false;\n storeChanged = true;\n }\n\n if (storeChanged) {\n await writeFile(sessionsPath, JSON.stringify(store, null, 2), 'utf-8');\n }\n } catch {\n // best-effort\n }\n }\n}\n\nfunction escapeRegex(str: string) {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n","import type { GeneAdapter } from '@nodeskai/genehub-types';\nimport { GenericAdapter } from './generic.js';\nimport { NanobotAdapter } from './nanobot.js';\nimport { OpenClawAdapter } from './openclaw.js';\n\nconst ADAPTERS: (() => GeneAdapter)[] = [\n () => new OpenClawAdapter(),\n () => new NanobotAdapter(),\n () => new GenericAdapter(),\n];\n\nexport async function detectAdapter(): Promise<GeneAdapter> {\n for (const create of ADAPTERS) {\n const adapter = create();\n if (await adapter.detect()) {\n return adapter;\n }\n }\n return new GenericAdapter();\n}\n\nexport function getAdapter(product: string): GeneAdapter {\n switch (product) {\n case 'openclaw':\n return new OpenClawAdapter();\n case 'nanobot':\n return new NanobotAdapter();\n default:\n return new GenericAdapter();\n }\n}\n","import type {\n AgentTemplate,\n AgentTemplateListParams,\n AgentTemplateVersion,\n ApiResponse,\n CreateAgentTemplateRequest,\n CreateGenomeRequest,\n Gene,\n GeneListParams,\n GeneManifest,\n GeneVersion,\n Genome,\n GenomeListParams,\n GenomeResolveResult,\n GenomeVersion,\n PaginatedData,\n PublishAgentTemplateVersionRequest,\n PublishGenomeVersionRequest,\n ResolvedGene,\n} from '@nodeskai/genehub-types';\n\nexport type GeneHubClientOptions = {\n registryUrl: string;\n token?: string;\n};\n\nexport class GeneHubClient {\n private baseUrl: string;\n private token?: string;\n\n constructor(options: GeneHubClientOptions) {\n this.baseUrl = options.registryUrl.replace(/\\/$/, '');\n this.token = options.token;\n }\n\n private async request<T>(path: string, init?: RequestInit): Promise<T> {\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...(init?.headers as Record<string, string>),\n };\n\n if (this.token) {\n headers.Authorization = `Bearer ${this.token}`;\n }\n\n const res = await fetch(`${this.baseUrl}${path}`, { ...init, headers });\n\n const json = (await res.json()) as ApiResponse<T> & { error_code?: string };\n\n if (!res.ok || json.code !== 0) {\n const msg = json.message || `HTTP ${res.status}`;\n throw new Error(`[GeneHub] ${json.error_code ?? 'error'}: ${msg}`);\n }\n\n return json.data;\n }\n\n // ── Gene ──\n\n async searchGenes(params: GeneListParams = {}): Promise<PaginatedData<Gene>> {\n const qs = new URLSearchParams();\n if (params.q) qs.set('q', params.q);\n if (params.category) qs.set('category', params.category);\n if (params.tags?.length) qs.set('tags', params.tags.join(','));\n if (params.compatibility) qs.set('compatibility', params.compatibility);\n if (params.sort) qs.set('sort', params.sort);\n if (params.page) qs.set('page', String(params.page));\n if (params.page_size) qs.set('page_size', String(params.page_size));\n\n const query = qs.toString();\n return this.request<PaginatedData<Gene>>(`/api/v1/genes${query ? `?${query}` : ''}`);\n }\n\n async getGene(slug: string): Promise<Gene> {\n return this.request<Gene>(`/api/v1/genes/${slug}`);\n }\n\n async getManifest(slug: string, version?: string): Promise<GeneManifest> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request<GeneManifest>(`/api/v1/genes/${slug}/manifest${qs}`);\n }\n\n async getVersions(slug: string): Promise<GeneVersion[]> {\n return this.request<GeneVersion[]>(`/api/v1/genes/${slug}/versions`);\n }\n\n async getVersion(slug: string, version: string): Promise<GeneVersion> {\n return this.request<GeneVersion>(`/api/v1/genes/${slug}/versions/${version}`);\n }\n\n async publishGene(manifest: GeneManifest, files?: Record<string, string>): Promise<Gene> {\n return this.request<Gene>('/api/v1/genes', {\n method: 'POST',\n body: JSON.stringify({ manifest, files }),\n });\n }\n\n async publishVersion(\n slug: string,\n manifest: GeneManifest,\n changelog?: string,\n files?: Record<string, string>,\n ): Promise<Gene> {\n return this.request<Gene>(`/api/v1/genes/${slug}/versions`, {\n method: 'POST',\n body: JSON.stringify({ manifest, changelog, files }),\n });\n }\n\n async getGeneFiles(\n slug: string,\n version?: string,\n ): Promise<{ path: string; size: number; sha: string; type: string }[]> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request(`/api/v1/genes/${slug}/files${qs}`);\n }\n\n async getGeneFileContent(\n slug: string,\n filePath: string,\n version?: string,\n ): Promise<{ path: string; content: string }> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request(`/api/v1/genes/${slug}/files/${filePath}${qs}`);\n }\n\n async downloadArchive(slug: string, version?: string): Promise<ArrayBuffer> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n const url = `${this.baseUrl}/api/v1/genes/${slug}/archive${qs}`;\n const headers: Record<string, string> = {};\n if (this.token) {\n headers.Authorization = `Bearer ${this.token}`;\n }\n const res = await fetch(url, { headers });\n if (!res.ok) {\n throw new Error(`[GeneHub] Download archive failed: HTTP ${res.status}`);\n }\n return res.arrayBuffer();\n }\n\n async resolve(\n slug: string,\n version?: string,\n product?: string,\n ): Promise<{ plan: ResolvedGene[]; warnings: string[] }> {\n return this.request(`/api/v1/resolve`, {\n method: 'POST',\n body: JSON.stringify({ slug, version, product }),\n });\n }\n\n async reportInstall(slug: string): Promise<void> {\n await this.request(`/api/v1/genes/${slug}/installed`, { method: 'POST', body: '{}' });\n }\n\n async reportEffectiveness(\n slug: string,\n report: { metric_type: string; value: number; context?: string },\n ): Promise<void> {\n await this.request(`/api/v1/genes/${slug}/effectiveness`, {\n method: 'POST',\n body: JSON.stringify(report),\n });\n }\n\n // ── Genome ──\n\n async searchGenomes(params: GenomeListParams = {}): Promise<PaginatedData<Genome>> {\n const qs = new URLSearchParams();\n if (params.q) qs.set('q', params.q);\n if (params.category) qs.set('category', params.category);\n if (params.sort) qs.set('sort', params.sort);\n if (params.page) qs.set('page', String(params.page));\n if (params.page_size) qs.set('page_size', String(params.page_size));\n\n const query = qs.toString();\n return this.request<PaginatedData<Genome>>(`/api/v1/genomes${query ? `?${query}` : ''}`);\n }\n\n async getGenome(slug: string): Promise<Genome> {\n return this.request<Genome>(`/api/v1/genomes/${slug}`);\n }\n\n async getGenomeVersions(slug: string): Promise<GenomeVersion[]> {\n return this.request<GenomeVersion[]>(`/api/v1/genomes/${slug}/versions`);\n }\n\n async getGenomeVersion(slug: string, version: string): Promise<GenomeVersion> {\n return this.request<GenomeVersion>(`/api/v1/genomes/${slug}/versions/${version}`);\n }\n\n async resolveGenome(\n slug: string,\n version?: string,\n product?: string,\n ): Promise<GenomeResolveResult> {\n const qs = new URLSearchParams();\n if (version) qs.set('version', version);\n if (product) qs.set('product', product);\n const query = qs.toString();\n return this.request<GenomeResolveResult>(\n `/api/v1/genomes/${slug}/resolve${query ? `?${query}` : ''}`,\n );\n }\n\n async publishGenome(data: CreateGenomeRequest, files?: Record<string, string>): Promise<Genome> {\n return this.request<Genome>('/api/v1/genomes', {\n method: 'POST',\n body: JSON.stringify({ ...data, files }),\n });\n }\n\n async publishGenomeVersion(\n slug: string,\n data: PublishGenomeVersionRequest,\n files?: Record<string, string>,\n ): Promise<Genome> {\n return this.request<Genome>(`/api/v1/genomes/${slug}/versions`, {\n method: 'POST',\n body: JSON.stringify({ ...data, files }),\n });\n }\n\n async getGenomeFiles(\n slug: string,\n version?: string,\n ): Promise<{ path: string; size: number; sha: string; type: string }[]> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request(`/api/v1/genomes/${slug}/files${qs}`);\n }\n\n async getGenomeFileContent(\n slug: string,\n filePath: string,\n version?: string,\n ): Promise<{ path: string; content: string }> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request(`/api/v1/genomes/${slug}/files/${filePath}${qs}`);\n }\n\n async downloadGenomeArchive(slug: string, version?: string): Promise<ArrayBuffer> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n const url = `${this.baseUrl}/api/v1/genomes/${slug}/archive${qs}`;\n const headers: Record<string, string> = {};\n if (this.token) headers.Authorization = `Bearer ${this.token}`;\n const res = await fetch(url, { headers });\n if (!res.ok) throw new Error(`[GeneHub] Download genome archive failed: HTTP ${res.status}`);\n return res.arrayBuffer();\n }\n\n async reportGenomeInstall(slug: string): Promise<void> {\n await this.request(`/api/v1/genomes/${slug}/installed`, { method: 'POST', body: '{}' });\n }\n\n // ── Agent Template ──\n\n async searchTemplates(\n params: AgentTemplateListParams = {},\n ): Promise<PaginatedData<AgentTemplate>> {\n const qs = new URLSearchParams();\n if (params.q) qs.set('q', params.q);\n if (params.category) qs.set('category', params.category);\n if (params.role) qs.set('role', params.role);\n if (params.sort) qs.set('sort', params.sort);\n if (params.page) qs.set('page', String(params.page));\n if (params.page_size) qs.set('page_size', String(params.page_size));\n\n const query = qs.toString();\n return this.request<PaginatedData<AgentTemplate>>(\n `/api/v1/templates${query ? `?${query}` : ''}`,\n );\n }\n\n async getTemplate(slug: string): Promise<AgentTemplate> {\n return this.request<AgentTemplate>(`/api/v1/templates/${slug}`);\n }\n\n async getTemplateVersions(slug: string): Promise<AgentTemplateVersion[]> {\n return this.request<AgentTemplateVersion[]>(`/api/v1/templates/${slug}/versions`);\n }\n\n async getTemplateVersion(slug: string, version: string): Promise<AgentTemplateVersion> {\n return this.request<AgentTemplateVersion>(`/api/v1/templates/${slug}/versions/${version}`);\n }\n\n async publishTemplate(\n data: CreateAgentTemplateRequest,\n files?: Record<string, string>,\n ): Promise<AgentTemplate> {\n return this.request<AgentTemplate>('/api/v1/templates', {\n method: 'POST',\n body: JSON.stringify({ ...data, files }),\n });\n }\n\n async publishTemplateVersion(\n slug: string,\n data: PublishAgentTemplateVersionRequest,\n files?: Record<string, string>,\n ): Promise<AgentTemplate> {\n return this.request<AgentTemplate>(`/api/v1/templates/${slug}/versions`, {\n method: 'POST',\n body: JSON.stringify({ ...data, files }),\n });\n }\n\n async getTemplateFiles(\n slug: string,\n version?: string,\n ): Promise<{ path: string; size: number; sha: string; type: string }[]> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request(`/api/v1/templates/${slug}/files${qs}`);\n }\n\n async getTemplateFileContent(\n slug: string,\n filePath: string,\n version?: string,\n ): Promise<{ path: string; content: string }> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n return this.request(`/api/v1/templates/${slug}/files/${filePath}${qs}`);\n }\n\n async downloadTemplateArchive(slug: string, version?: string): Promise<ArrayBuffer> {\n const qs = version ? `?version=${encodeURIComponent(version)}` : '';\n const url = `${this.baseUrl}/api/v1/templates/${slug}/archive${qs}`;\n const headers: Record<string, string> = {};\n if (this.token) headers.Authorization = `Bearer ${this.token}`;\n const res = await fetch(url, { headers });\n if (!res.ok) throw new Error(`[GeneHub] Download template archive failed: HTTP ${res.status}`);\n return res.arrayBuffer();\n }\n\n async reportTemplateInstall(slug: string): Promise<void> {\n await this.request(`/api/v1/templates/${slug}/installed`, { method: 'POST', body: '{}' });\n }\n}\n","import { mkdir, readdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { join } from 'node:path';\nimport type { GeneAdapter, GeneManifest } from '@nodeskai/genehub-types';\nimport { META_LEARNER_MANIFEST } from './meta-gene.js';\nimport { generateForgetTaskMarkdown, generateLearningTaskMarkdown } from './prompts.js';\nimport type { LearningResult, LearningTask } from './task.js';\n\nexport type LearningEngineOptions = {\n workspaceDir: string;\n adapter?: GeneAdapter;\n};\n\nexport class LearningEngine {\n private workspaceDir: string;\n private adapter?: GeneAdapter;\n\n constructor(options: LearningEngineOptions) {\n this.workspaceDir = options.workspaceDir;\n this.adapter = options.adapter;\n }\n\n private get tasksDir(): string {\n return join(this.workspaceDir, 'learning-tasks');\n }\n\n private get resultsDir(): string {\n return join(this.workspaceDir, 'learning-results');\n }\n\n async ensureMetaGeneInstalled(): Promise<boolean> {\n if (!this.adapter) return false;\n\n const installed = await this.adapter.isInstalled('genehub-learner');\n if (installed) return false;\n\n await this.adapter.install(META_LEARNER_MANIFEST, { force: true });\n await this.injectBootInstruction();\n return true;\n }\n\n private async injectBootInstruction(): Promise<void> {\n const agentsPath = join(this.workspaceDir, 'AGENTS.md');\n let content: string;\n try {\n content = await readFile(agentsPath, 'utf-8');\n } catch {\n return;\n }\n\n const BEGIN = '<!-- genehub:learning-boot -->';\n const END = '<!-- /genehub:learning-boot -->';\n\n if (content.includes(BEGIN)) return;\n\n const instruction = [\n '',\n BEGIN,\n '### GeneHub Learning',\n '',\n 'Check `learning-tasks/` for pending `.md` files. If any exist:',\n '',\n '1. Read `skills/genehub-learner/SKILL.md` for the full learning protocol',\n '2. Process each task file following those instructions',\n '3. Write results to `learning-results/`',\n '4. Log what you learned in `memory/YYYY-MM-DD.md`',\n END,\n ].join('\\n');\n\n const everySession = content.indexOf('## Every Session');\n if (everySession !== -1) {\n const nextSection = content.indexOf('\\n## ', everySession + 1);\n const insertPos = nextSection !== -1 ? nextSection : content.length;\n content = `${content.slice(0, insertPos)}\\n${instruction}\\n${content.slice(insertPos)}`;\n } else {\n content += `\\n${instruction}\\n`;\n }\n\n await writeFile(agentsPath, content, 'utf-8');\n }\n\n async createLearningTask(manifest: GeneManifest): Promise<LearningTask> {\n await this.ensureMetaGeneInstalled();\n\n await mkdir(this.tasksDir, { recursive: true });\n await mkdir(this.resultsDir, { recursive: true });\n\n const task: LearningTask = {\n mode: 'learn',\n task_id: `learn-${manifest.slug}-${Date.now()}`,\n gene_slug: manifest.slug,\n gene_name: manifest.name,\n gene_version: manifest.version,\n gene_content: manifest.skill.content ?? '',\n gene_meta: {\n name: manifest.name,\n description: manifest.description,\n category: manifest.category,\n short_description: manifest.short_description,\n },\n learning: manifest.learning\n ? {\n objectives: manifest.learning.objectives,\n scenarios: manifest.learning.scenarios,\n force_deep_learn: manifest.learning.force_deep_learn,\n }\n : undefined,\n callback_path: join(this.resultsDir, `${manifest.slug}.md`),\n created_at: new Date().toISOString(),\n };\n\n const md = generateLearningTaskMarkdown(task);\n await writeFile(join(this.tasksDir, `${manifest.slug}.md`), md, 'utf-8');\n\n return task;\n }\n\n async createForgetTask(slug: string, name: string, skillContent: string): Promise<void> {\n await mkdir(this.tasksDir, { recursive: true });\n await mkdir(this.resultsDir, { recursive: true });\n\n const callbackPath = join(this.resultsDir, `${slug}.md`);\n const md = generateForgetTaskMarkdown(slug, name, skillContent, callbackPath);\n await writeFile(join(this.tasksDir, `${slug}.md`), md, 'utf-8');\n }\n\n async checkResult(slug: string): Promise<LearningResult | null> {\n const resultPath = join(this.resultsDir, `${slug}.md`);\n\n try {\n const content = await readFile(resultPath, 'utf-8');\n return this.parseResult(content);\n } catch {\n return null;\n }\n }\n\n async listPendingTasks(): Promise<string[]> {\n try {\n const files = await readdir(this.tasksDir);\n const pending: string[] = [];\n\n for (const file of files) {\n if (!file.endsWith('.md')) continue;\n const slug = file.replace('.md', '');\n const result = await this.checkResult(slug);\n if (!result) {\n pending.push(slug);\n }\n }\n\n return pending;\n } catch {\n return [];\n }\n }\n\n async listCompletedResults(): Promise<LearningResult[]> {\n const results: LearningResult[] = [];\n\n try {\n const files = await readdir(this.resultsDir);\n for (const file of files) {\n if (!file.endsWith('.md')) continue;\n const content = await readFile(join(this.resultsDir, file), 'utf-8');\n const result = this.parseResult(content);\n if (result) results.push(result);\n }\n } catch {\n // no results\n }\n\n return results;\n }\n\n async applyResult(slug: string, skillsDir: string): Promise<boolean> {\n const result = await this.checkResult(slug);\n if (!result) return false;\n\n if (result.decision === 'learned' && result.content) {\n const skillDir = join(skillsDir, slug);\n await mkdir(skillDir, { recursive: true });\n await writeFile(join(skillDir, 'SKILL.md'), result.content, 'utf-8');\n\n if (this.adapter?.notifySkillChange) {\n await this.adapter.notifySkillChange(slug, 'updated');\n }\n }\n\n await this.cleanupTask(slug);\n return true;\n }\n\n async cleanupTask(slug: string): Promise<void> {\n try {\n await rm(join(this.tasksDir, `${slug}.md`));\n } catch {\n /* ok */\n }\n try {\n await rm(join(this.resultsDir, `${slug}.md`));\n } catch {\n /* ok */\n }\n }\n\n private parseResult(content: string): LearningResult | null {\n const fmMatch = content.match(/^---\\n([\\s\\S]*?)\\n---/);\n if (!fmMatch) return null;\n\n const fm = fmMatch[1];\n const get = (key: string): string | undefined => {\n const m = fm.match(new RegExp(`^${key}:\\\\s*[\"']?(.+?)[\"']?\\\\s*$`, 'm'));\n return m?.[1];\n };\n\n const taskId = get('task_id');\n const geneSlug = get('gene_slug');\n const mode = get('mode') as LearningResult['mode'] | undefined;\n const decision = get('decision') as LearningResult['decision'] | undefined;\n\n if (!taskId || !geneSlug || !decision) return null;\n\n const bodyStart = content.indexOf('---', 4);\n const body = bodyStart !== -1 ? content.slice(bodyStart + 3).trim() : undefined;\n\n return {\n task_id: taskId,\n gene_slug: geneSlug,\n mode: mode ?? 'learn',\n decision,\n content: body || undefined,\n self_eval: get('self_eval') ? Number.parseFloat(get('self_eval') as string) : undefined,\n reason: get('reason'),\n completed_at: new Date().toISOString(),\n };\n }\n}\n","import type { GeneManifest } from '@nodeskai/genehub-types';\n\nconst SKILL_CONTENT = `---\nname: genehub-learner\nversion: 1.1.0\ndescription: GeneHub 基因管理与深度学习引擎\nmetadata:\n openclaw:\n always: true\n nanobot:\n always: true\n---\n\n# GeneHub 基因管理与学习引擎\n\n你具备通过 GeneHub 管理和深度学习新基因的能力。GeneHub 是你的基因库,提供各种可学习的技能基因。\n\n## 一、从 GeneHub 获取基因\n\n### 搜索可用基因\n\n\\`\\`\\`bash\ngenehub search <关键词>\ngenehub search --json <关键词>\n\\`\\`\\`\n\n### 查看已安装基因\n\n\\`\\`\\`bash\ngenehub list -p openclaw\n\\`\\`\\`\n\n### 安装基因(浅安装)\n\n直接安装 SKILL.md,不经过学习过程:\n\n\\`\\`\\`bash\ngenehub install <slug> -p openclaw\n\\`\\`\\`\n\n### 深度安装(推荐)\n\n安装后自动生成学习任务,你需要完成学习才能真正掌握:\n\n\\`\\`\\`bash\ngenehub install <slug> --learn -p openclaw\n\\`\\`\\`\n\n### 仅学习(不安装)\n\n从 Registry 获取基因内容生成学习任务,学习完成后再安装:\n\n\\`\\`\\`bash\ngenehub learn <slug> -p openclaw\n\\`\\`\\`\n\n### 检查学习结果\n\n学习完成后,验证并应用个性化版本:\n\n\\`\\`\\`bash\ngenehub learn --check <slug> -p openclaw\n\\`\\`\\`\n\n### 卸载基因\n\n\\`\\`\\`bash\ngenehub uninstall <slug> -p openclaw\n\\`\\`\\`\n\n## 二、处理学习任务\n\n每次会话开始时,检查 \\`learning-tasks/\\` 目录是否有待处理的学习任务。\n\n### 1. 发现任务\n\n\\`\\`\\`\nlearning-tasks/*.md\n\\`\\`\\`\n\n每个 \\`.md\\` 文件是一个待学习的基因任务,包含 YAML front matter 和任务详情。\n\n### 2. 执行学习\n\n对于每个任务:\n\n1. **阅读理解** — 仔细阅读技能原文,理解它要教你什么\n2. **完成目标** — 逐一完成 \\\\\\`学习目标\\\\\\` 中列出的 checklist\n3. **练习场景** — 如果有练习场景,认真完成每个场景的分析\n4. **个性化** — 基于你的理解和风格,改写技能内容为你自己的版本\n5. **自我评估** — 诚实评估你对该技能的掌握程度(0.0 - 1.0)\n\n### 3. 提交结果\n\n在 \\`learning-results/\\` 目录创建同名的 \\`.md\\` 文件:\n\n\\`\\`\\`markdown\n---\ntask_id: learn-code-review-1234567890\ngene_slug: code-review\nmode: learn\ndecision: learned\nself_eval: 0.85\nreason: \"我已深入理解代码审查的四个维度,并结合自己的经验进行了个性化\"\n---\n\n(你个性化后的 SKILL.md 完整内容放在这里)\n\\`\\`\\`\n\n### decision 选项\n\n| 值 | 含义 |\n|---|---|\n| \\`direct_install\\` | 技能内容很好,直接使用原版 |\n| \\`learned\\` | 已深度学习并生成了个性化版本(正文包含新 SKILL.md) |\n| \\`failed\\` | 学习失败(在 reason 中说明原因) |\n\n### 4. 记录心得\n\n学习完成后,将心得记录到 \\`memory/YYYY-MM-DD.md\\`。\n\n## 三、遗忘任务\n\n如果 \\`learning-tasks/\\` 中有 \\`mode: forget\\` 的任务:\n\n1. 回顾该技能的使用经验\n2. 决定完全遗忘(forgotten)还是保留精华(simplified)\n3. 将结果写入 \\`learning-results/\\`\n\n## 重要原则\n\n- **诚实自评** — 真正理解了才打高分\n- **真正个性化** — 融入你的理解和风格,不是复制粘贴\n- **记录过程** — 学习过程本身也是宝贵的记忆\n- **主动学习** — 发现新任务就立即开始,不等催促\n- **主动探索** — 当用户提到你不具备的能力时,尝试用 \\\\\\`genehub search\\\\\\` 搜索是否有对应基因`;\n\nexport const META_LEARNER_MANIFEST: GeneManifest = {\n slug: 'genehub-learner',\n name: 'GeneHub 学习引擎',\n version: '1.1.0',\n description: 'GeneHub 基因管理与学习引擎。提供从 GeneHub 搜索、安装、深度学习基因的完整能力。',\n short_description: '基因管理 + 深度学习引擎',\n category: 'efficiency',\n tags: ['ability'],\n compatibility: [\n { product: 'openclaw', min_version: '0.5.0' },\n { product: 'nanobot', min_version: '0.1.0' },\n ],\n dependencies: [],\n synergies: [],\n skill: {\n name: 'genehub-learner',\n always: true,\n content: SKILL_CONTENT,\n },\n rules: [],\n mcp_servers: [],\n learning: {\n force_deep_learn: false,\n objectives: [\n '掌握 genehub CLI 的搜索、安装、学习、卸载命令',\n '能够处理 learning-tasks/ 中的学习任务并提交结果',\n '能够生成个性化技能版本',\n ],\n scenarios: [],\n },\n};\n","import type { LearningTask } from './task.js';\n\nexport function generateLearningTaskMarkdown(task: LearningTask): string {\n const lines: string[] = [];\n\n lines.push('---');\n lines.push(`task_id: ${task.task_id}`);\n lines.push(`mode: ${task.mode}`);\n lines.push(`gene_slug: ${task.gene_slug}`);\n lines.push(`gene_version: ${task.gene_version}`);\n lines.push(`callback_path: ${task.callback_path}`);\n lines.push(`created_at: ${task.created_at}`);\n lines.push('---');\n lines.push('');\n lines.push(`# 学习任务: ${task.gene_name}`);\n lines.push('');\n lines.push(`> 类别: ${task.gene_meta.category} | 版本: ${task.gene_version}`);\n lines.push('');\n lines.push(`${task.gene_meta.description}`);\n lines.push('');\n\n if (task.learning?.objectives?.length) {\n lines.push('## 学习目标');\n lines.push('');\n for (const obj of task.learning.objectives) {\n lines.push(`- [ ] ${obj}`);\n }\n lines.push('');\n }\n\n if (task.learning?.scenarios?.length) {\n lines.push('## 练习场景');\n lines.push('');\n for (let i = 0; i < task.learning.scenarios.length; i++) {\n const s = task.learning.scenarios[i];\n lines.push(`### 场景 ${i + 1}: ${s.title}`);\n lines.push('');\n lines.push(`**上下文**: ${s.context}`);\n lines.push('');\n lines.push(`**预期关注点**: ${s.expected_focus}`);\n lines.push('');\n lines.push('**你的练习**:');\n lines.push('');\n lines.push('(请在此处记录你对该场景的分析和应对方案)');\n lines.push('');\n }\n }\n\n lines.push('## 技能原文');\n lines.push('');\n lines.push('```');\n lines.push(task.gene_content);\n lines.push('```');\n lines.push('');\n lines.push('## 完成学习');\n lines.push('');\n lines.push('学习完成后,请执行以下操作:');\n lines.push('');\n lines.push(`1. 在 \\`${task.callback_path}\\` 创建学习结果文件`);\n lines.push('2. 包含 YAML front matter(task_id, decision, self_eval)');\n lines.push('3. 如果你个性化了技能内容,将修改后的 SKILL.md 内容放在正文中');\n lines.push('');\n lines.push('### 结果文件模板');\n lines.push('');\n lines.push('```markdown');\n lines.push('---');\n lines.push(`task_id: ${task.task_id}`);\n lines.push(`gene_slug: ${task.gene_slug}`);\n lines.push(`mode: ${task.mode}`);\n lines.push('decision: learned # direct_install | learned | failed');\n lines.push('self_eval: 0.8 # 0.0 - 1.0 自评分');\n lines.push('reason: \"我已理解并个性化了该技能\"');\n lines.push('---');\n lines.push('');\n lines.push('(如果 decision 为 learned,在此放入个性化后的 SKILL.md 内容)');\n lines.push('```');\n\n return lines.join('\\n');\n}\n\nexport function generateForgetTaskMarkdown(\n slug: string,\n name: string,\n skillContent: string,\n callbackPath: string,\n): string {\n const taskId = `forget-${slug}-${Date.now()}`;\n return [\n '---',\n `task_id: ${taskId}`,\n 'mode: forget',\n `gene_slug: ${slug}`,\n `callback_path: ${callbackPath}`,\n `created_at: ${new Date().toISOString()}`,\n '---',\n '',\n `# 遗忘任务: ${name}`,\n '',\n '请回顾你使用该技能的经验,然后决定:',\n '',\n '- **forgotten**: 完全遗忘,清除所有痕迹',\n '- **simplified**: 保留精华,简化为更短的技能描述',\n '',\n '## 当前技能内容',\n '',\n '```',\n skillContent,\n '```',\n '',\n `请将遗忘结果写入 \\`${callbackPath}\\``,\n ].join('\\n');\n}\n","import { mkdir, writeFile } from 'node:fs/promises';\nimport { join, resolve } from 'node:path';\nimport { Command } from 'commander';\nimport { stringify } from 'yaml';\nimport * as output from '../output.js';\n\nconst TEMPLATE = {\n slug: 'my-gene',\n name: '我的基因',\n version: '1.0.0',\n description: '基因功能描述',\n short_description: '一句话描述',\n category: 'development',\n tags: ['ability'],\n author: { type: 'human', name: '' },\n compatibility: [\n { product: 'openclaw', min_version: '0.5.0' },\n { product: 'nanobot', min_version: '0.1.0' },\n ],\n dependencies: [],\n synergies: [],\n skill: {\n name: 'my-gene',\n always: false,\n file: 'SKILL.md',\n },\n rules: [],\n config: {},\n mcp_servers: [],\n learning: {\n force_deep_learn: false,\n objectives: [],\n scenarios: [],\n },\n};\n\nconst SKILL_TEMPLATE = `---\nname: my-gene\ndescription: 一句话描述\nmetadata:\n openclaw:\n always: false\n nanobot:\n always: false\n---\n\n在此编写基因的技能描述...\n`;\n\nexport const initCommand = new Command('init')\n .description('初始化基因模板')\n .argument('[path]', '目标目录', '.')\n .action(async (dirPath: string) => {\n const absPath = resolve(dirPath);\n\n try {\n await mkdir(absPath, { recursive: true });\n\n const yamlPath = join(absPath, 'gene.yaml');\n await writeFile(yamlPath, stringify(TEMPLATE), 'utf-8');\n\n const skillPath = join(absPath, 'SKILL.md');\n await writeFile(skillPath, SKILL_TEMPLATE, 'utf-8');\n\n output.ok(`基因模板已创建:`);\n output.info(` ${yamlPath}`);\n output.info(` ${skillPath}`);\n output.info('编辑这两个文件后,使用 genehub publish 发布');\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { mkdir, rm, writeFile } from 'node:fs/promises';\nimport { homedir, tmpdir } from 'node:os';\nimport { join } from 'node:path';\nimport { detectAdapter, GeneHubClient, getAdapter, LearningEngine } from '@nodeskai/genehub-sdk';\nimport type { InstallResult } from '@nodeskai/genehub-types';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nfunction parseSlugVersion(input: string): { slug: string; version?: string } {\n const atIdx = input.lastIndexOf('@');\n if (atIdx > 0) {\n return { slug: input.slice(0, atIdx), version: input.slice(atIdx + 1) };\n }\n return { slug: input };\n}\n\nasync function extractTarGz(buffer: ArrayBuffer, destDir: string): Promise<void> {\n await mkdir(destDir, { recursive: true });\n const { extract } = await import('tar');\n const tarPath = join(tmpdir(), `genehub-${Date.now()}.tar.gz`);\n await writeFile(tarPath, Buffer.from(buffer));\n try {\n await extract({ file: tarPath, cwd: destDir, strip: 1 });\n } finally {\n await rm(tarPath, { force: true });\n }\n}\n\nexport const installCommand = new Command('install')\n .description('安装基因到当前 Agent 环境')\n .argument('<slug>', '基因标识符(支持 slug@version 格式)')\n .option('-p, --product <product>', '指定目标产品(openclaw / nanobot / generic)')\n .option('-f, --force', '强制覆盖已安装版本', false)\n .option('--target <path>', '指定安装目标路径')\n .option('--learn', '安装后自动触发深度学习', false)\n .action(async (rawSlug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n const { slug, version } = parseSlugVersion(rawSlug);\n const spinner = ora(`获取基因 ${slug}${version ? `@${version}` : ''} 的 manifest...`).start();\n\n try {\n const manifest = await client.getManifest(slug, version);\n spinner.succeed(`获取 ${manifest.name} v${manifest.version}`);\n\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n output.info(`目标产品: ${adapter.product}`);\n\n if (!opts.force && (await adapter.isInstalled(slug))) {\n const installedVer = await adapter.getInstalledVersion(slug);\n output.warn(`${slug}${installedVer ? ` v${installedVer}` : ''} 已安装,使用 --force 覆盖`);\n return;\n }\n\n const installSpinner = ora('安装中...').start();\n\n let result: InstallResult | undefined;\n let isMultiFile = false;\n\n try {\n const archive = await client.downloadArchive(slug, version);\n const tempDir = join(tmpdir(), `genehub-install-${slug}-${Date.now()}`);\n await extractTarGz(archive, tempDir);\n isMultiFile = true;\n\n if (adapter.installFromDirectory) {\n result = await adapter.installFromDirectory(tempDir, manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n } else {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n await rm(tempDir, { recursive: true, force: true });\n } catch {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n installSpinner.succeed(isMultiFile ? '安装完成(多文件基因)' : '安装完成');\n\n output.ok(`${result.slug}@${result.version} 安装成功`);\n output.info(`文件: ${result.files.join(', ')}`);\n\n if (result.needsRestart) {\n output.warn('需要重启 Agent Host 使基因生效');\n }\n\n if (result.dependencies.length > 0) {\n output.info(`依赖基因: ${result.dependencies.join(', ')}`);\n }\n\n try {\n await client.reportInstall(slug);\n } catch {\n // non-critical\n }\n\n if (opts.learn) {\n const workspaceDir =\n adapter.product === 'openclaw'\n ? join(homedir(), '.openclaw', 'workspace')\n : adapter.product === 'nanobot'\n ? join(homedir(), '.nanobot', 'workspace')\n : join(process.cwd(), '.genehub');\n\n const engine = new LearningEngine({ workspaceDir, adapter });\n const learnSpinner = ora('生成学习任务...').start();\n await engine.createLearningTask(manifest);\n learnSpinner.succeed('学习任务已创建');\n\n if (adapter.triggerLearning) {\n const triggerSpinner = ora('触发 bot 学习...').start();\n try {\n await adapter.triggerLearning('检查 learning-tasks/ 目录并处理学习任务');\n triggerSpinner.succeed('已触发 bot 学习(后台处理中)');\n } catch {\n triggerSpinner.warn('自动触发失败,Agent 将在下次对话中处理');\n }\n } else {\n output.info('Agent 将在下次对话中处理学习任务');\n }\n }\n } catch (err) {\n spinner.fail('安装失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { homedir } from 'node:os';\nimport { join } from 'node:path';\nimport { detectAdapter, GeneHubClient, getAdapter, LearningEngine } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nfunction getWorkspaceDir(product: string): string {\n switch (product) {\n case 'openclaw':\n return join(homedir(), '.openclaw', 'workspace');\n case 'nanobot':\n return join(homedir(), '.nanobot', 'workspace');\n default:\n return join(process.cwd(), '.genehub');\n }\n}\n\nexport const learnCommand = new Command('learn')\n .description('触发基因深度学习(L2)')\n .argument('<slug>', '基因标识符')\n .option('-p, --product <product>', '指定目标产品')\n .option('--check', '检查学习结果并应用')\n .action(async (slug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n const workspaceDir = getWorkspaceDir(adapter.product);\n const engine = new LearningEngine({ workspaceDir, adapter });\n\n if (opts.check) {\n const spinner = ora('检查学习结果...').start();\n const result = await engine.checkResult(slug);\n\n if (!result) {\n spinner.fail('未找到学习结果');\n output.info('Agent 还未完成该基因的学习任务');\n\n const pending = await engine.listPendingTasks();\n if (pending.length > 0) {\n output.info(`待完成的学习任务: ${pending.join(', ')}`);\n }\n return;\n }\n\n spinner.succeed(`学习结果: ${result.decision}`);\n\n if (result.self_eval !== undefined) {\n output.info(`自评分: ${result.self_eval}`);\n }\n if (result.reason) {\n output.info(`理由: ${result.reason}`);\n }\n\n if (result.decision === 'learned' && result.content) {\n const skillsDir = join(workspaceDir, 'skills');\n const applied = await engine.applyResult(slug, skillsDir);\n if (applied) {\n output.ok('已将个性化版本应用到技能目录');\n }\n }\n\n return;\n }\n\n const spinner = ora(`获取 ${slug} 的 manifest...`).start();\n\n try {\n const manifest = await client.getManifest(slug);\n spinner.succeed(`获取 ${manifest.name} v${manifest.version}`);\n\n if (!manifest.learning?.objectives?.length && !manifest.learning?.scenarios?.length) {\n output.warn('该基因没有定义学习目标或练习场景,将创建基础学习任务');\n }\n\n const learnSpinner = ora('生成学习任务...').start();\n const task = await engine.createLearningTask(manifest);\n learnSpinner.succeed('学习任务已创建');\n\n output.ok(`任务文件: ${join(workspaceDir, 'learning-tasks', `${slug}.md`)}`);\n output.info(`结果路径: ${task.callback_path}`);\n output.info('');\n output.info('下一步:');\n output.info(' 1. Agent 在下次对话中会自动发现并处理学习任务');\n output.info(` 2. 学习完成后运行: genehub learn --check ${slug}`);\n } catch (err) {\n spinner.fail('学习任务创建失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { detectAdapter, getAdapter } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport * as output from '../output.js';\n\nexport const listCommand = new Command('list')\n .description('列出当前环境已安装的基因')\n .option('-p, --product <product>', '指定目标产品')\n .option('--json', 'JSON 格式输出', false)\n .action(async (opts) => {\n try {\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n const genes = await adapter.list();\n\n if (opts.json) {\n console.log(JSON.stringify(genes, null, 2));\n return;\n }\n\n if (genes.length === 0) {\n output.info(`[${adapter.product}] 没有已安装的基因`);\n return;\n }\n\n output.info(`[${adapter.product}] 已安装 ${genes.length} 个基因:\\n`);\n\n for (const gene of genes) {\n const date = new Date(gene.installedAt).toLocaleDateString('zh-CN');\n console.log(` ${gene.slug.padEnd(24)} v${gene.version.padEnd(10)} ${date}`);\n }\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { readdir, readFile } from 'node:fs/promises';\nimport { join, relative, resolve } from 'node:path';\nimport { GeneHubClient } from '@nodeskai/genehub-sdk';\nimport type { Gene } from '@nodeskai/genehub-types';\nimport { GeneManifestSchema } from '@nodeskai/genehub-types';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { parse } from 'yaml';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nconst IGNORED_PATTERNS = ['.git', 'node_modules', '.DS_Store', '__pycache__', '.venv'];\n\nasync function scanDirectory(dirPath: string): Promise<Record<string, string>> {\n const files: Record<string, string> = {};\n\n async function walk(currentPath: string) {\n const entries = await readdir(currentPath, { withFileTypes: true });\n for (const entry of entries) {\n if (IGNORED_PATTERNS.includes(entry.name)) continue;\n const fullPath = join(currentPath, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath);\n } else if (entry.isFile()) {\n const relPath = relative(dirPath, fullPath);\n const content = await readFile(fullPath, 'utf-8');\n files[relPath] = content;\n }\n }\n }\n\n await walk(dirPath);\n return files;\n}\n\nexport const publishCommand = new Command('publish')\n .description('发布基因到 GeneHub Registry')\n .argument('<path>', '基因目录路径(包含 gene.yaml)')\n .action(async (dirPath: string) => {\n const config = await loadConfig();\n\n if (!config.token) {\n output.fail('未配置认证 token');\n output.info(' 方式 1: genehub config set token <token>');\n output.info(' 方式 2: export GENEHUB_TOKEN=<token>');\n process.exit(1);\n }\n\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n const absPath = resolve(dirPath);\n\n try {\n const yamlPath = join(absPath, 'gene.yaml');\n const raw = await readFile(yamlPath, 'utf-8');\n const parsed = parse(raw);\n\n if (parsed.skill?.file && !parsed.skill.content) {\n try {\n parsed.skill.content = await readFile(join(absPath, parsed.skill.file), 'utf-8');\n } catch {\n try {\n parsed.skill.content = await readFile(join(absPath, 'SKILL.md'), 'utf-8');\n } catch {\n // no skill content file found\n }\n }\n }\n\n const validation = GeneManifestSchema.safeParse(parsed);\n if (!validation.success) {\n output.fail('Manifest 校验失败:');\n for (const issue of validation.error.issues) {\n output.fail(` ${issue.path.join('.')}: ${issue.message}`);\n }\n process.exit(1);\n }\n\n const { slug, version } = validation.data;\n\n const scanSpinner = ora('扫描基因目录...').start();\n const files = await scanDirectory(absPath);\n const fileCount = Object.keys(files).length;\n scanSpinner.succeed(`扫描完成: ${fileCount} 个文件`);\n\n const spinner = ora(`发布 ${slug}@${version} (${fileCount} 个文件)...`).start();\n\n let gene: Gene;\n try {\n gene = await client.publishGene(validation.data, files);\n } catch (err) {\n const isSlugExists = err instanceof Error && err.message.includes('gene_slug_exists');\n if (!isSlugExists) throw err;\n\n spinner.text = `基因 ${slug} 已存在,发布新版本 ${version}...`;\n gene = await client.publishVersion(slug, validation.data, undefined, files);\n }\n\n spinner.succeed('发布成功');\n output.ok(`${gene.slug}@${gene.version} 已发布到 GeneHub Registry (${fileCount} 个文件)`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\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 { z } from 'zod';\n\nexport const GeneCategory = z.enum([\n 'development',\n 'data',\n 'operations',\n 'network',\n 'creative',\n 'communication',\n 'security',\n 'efficiency',\n]);\nexport type GeneCategory = z.infer<typeof GeneCategory>;\n\nexport const GeneTag = z.enum(['ability', 'personality', 'knowledge', 'tool']);\nexport type GeneTag = z.infer<typeof GeneTag>;\n\nexport const GeneSource = z.enum(['official', 'clawhub', 'evomap', 'community', 'agent', 'github']);\nexport type GeneSource = z.infer<typeof GeneSource>;\n\nexport const ReviewStatus = z.enum(['draft', 'pending', 'approved', 'rejected', 'flagged']);\nexport type ReviewStatus = z.infer<typeof ReviewStatus>;\n\nexport const ProductId = z.enum(['openclaw', 'nanobot', 'deskclaw', 'generic']);\nexport type ProductId = z.infer<typeof ProductId>;\n\nexport const AuthorType = z.enum(['human', 'agent']);\nexport type AuthorType = z.infer<typeof AuthorType>;\n\nexport const LearningMode = z.enum(['learn', 'create', 'forget']);\nexport type LearningMode = z.infer<typeof LearningMode>;\n\nexport const LearningDecision = z.enum([\n 'direct_install',\n 'learned',\n 'failed',\n 'created',\n 'forgotten',\n 'simplified',\n 'forget_failed',\n]);\nexport type LearningDecision = z.infer<typeof LearningDecision>;\n","import { z } from 'zod';\nimport { AuthorType, GeneCategory, GeneTag, ProductId } from './enums.js';\n\nconst SLUG_REGEX = /^[a-z0-9][a-z0-9-]{1,62}[a-z0-9]$/;\nconst SEMVER_REGEX = /^\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.]+)?$/;\n\nexport const AuthorSchema = z.object({\n type: AuthorType,\n name: z.string().max(128),\n ref: z.string().optional().default(''),\n});\nexport type Author = z.infer<typeof AuthorSchema>;\n\nexport const CompatibilityEntrySchema = z.object({\n product: ProductId,\n min_version: z.string().optional().default('0.0.0'),\n});\nexport type CompatibilityEntry = z.infer<typeof CompatibilityEntrySchema>;\n\nexport const DependencyEntrySchema = z.object({\n slug: z.string().regex(SLUG_REGEX),\n version: z.string(),\n optional: z.boolean().optional().default(false),\n});\nexport type DependencyEntry = z.infer<typeof DependencyEntrySchema>;\n\nexport const SkillSchema = z.object({\n name: z.string().min(1).max(128),\n always: z.boolean().optional().default(false),\n content: z.string().optional(),\n file: z.string().optional(),\n});\nexport type Skill = z.infer<typeof SkillSchema>;\n\nexport const RuleSchema = z.object({\n name: z.string().min(1).max(128),\n content: z.string(),\n applies_to: z.string().optional(),\n});\nexport type Rule = z.infer<typeof RuleSchema>;\n\nexport const OpenClawConfigSchema = z.object({\n openclaw_config: z.record(z.unknown()).optional(),\n tool_allow: z.array(z.string()).optional(),\n});\n\nexport const NanobotConfigSchema = z.object({\n capabilities: z.array(z.string()).optional(),\n requires: z\n .object({\n bins: z.array(z.string()).optional(),\n env: z.array(z.string()).optional(),\n })\n .optional(),\n always: z.boolean().optional(),\n os: z.array(z.string()).optional(),\n install: z\n .array(\n z.object({\n id: z.string(),\n kind: z.string(),\n formula: z.string().optional(),\n bins: z.array(z.string()).optional(),\n label: z.string().optional(),\n }),\n )\n .optional(),\n});\n\nexport const GeneConfigSchema = z.object({\n common: z.record(z.unknown()).optional(),\n openclaw: OpenClawConfigSchema.optional(),\n nanobot: NanobotConfigSchema.optional(),\n});\nexport type GeneConfig = z.infer<typeof GeneConfigSchema>;\n\nexport const McpServerSchema = z.object({\n name: z.string(),\n transport: z.enum(['stdio', 'http']).optional().default('stdio'),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string()).optional(),\n url: z.string().optional(),\n headers: z.record(z.string()).optional(),\n});\nexport type McpServer = z.infer<typeof McpServerSchema>;\n\nexport const LearningScenarioSchema = z.object({\n title: z.string(),\n context: z.string(),\n expected_focus: z.string(),\n});\nexport type LearningScenario = z.infer<typeof LearningScenarioSchema>;\n\nexport const LearningSchema = z.object({\n force_deep_learn: z.boolean().optional().default(false),\n objectives: z.array(z.string()).optional(),\n scenarios: z.array(LearningScenarioSchema).optional(),\n});\nexport type Learning = z.infer<typeof LearningSchema>;\n\nexport const GeneManifestSchema = z.object({\n slug: z.string().regex(SLUG_REGEX, 'slug 必须为 kebab-case,3-64 字符'),\n name: z.string().min(1).max(128),\n version: z.string().regex(SEMVER_REGEX, '版本号必须符合 SemVer'),\n description: z.string(),\n short_description: z.string().max(256),\n category: GeneCategory,\n tags: z.array(GeneTag).min(1),\n icon: z.string().max(64).optional(),\n author: AuthorSchema.optional(),\n\n compatibility: z.array(CompatibilityEntrySchema).min(1),\n\n dependencies: z.array(DependencyEntrySchema).optional().default([]),\n synergies: z.array(z.string()).optional().default([]),\n\n skill: SkillSchema,\n rules: z.array(RuleSchema).optional().default([]),\n config: GeneConfigSchema.optional(),\n mcp_servers: z.array(McpServerSchema).optional().default([]),\n learning: LearningSchema.optional(),\n});\nexport type GeneManifest = z.infer<typeof GeneManifestSchema>;\n","import { GeneHubClient } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nexport const searchCommand = new Command('search')\n .description('搜索基因库')\n .argument('[keyword]', '搜索关键词')\n .option('-c, --category <category>', '按分类过滤')\n .option('-t, --tags <tags>', '按标签过滤(逗号分隔)')\n .option('--compat <product>', '按兼容产品过滤')\n .option('-s, --sort <sort>', '排序方式(newest / popular / rating)', 'newest')\n .option('--page <page>', '页码', '1')\n .option('--json', 'JSON 格式输出', false)\n .action(async (keyword: string | undefined, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n try {\n const result = await client.searchGenes({\n q: keyword,\n category: opts.category,\n tags: opts.tags?.split(','),\n compatibility: opts.compat,\n sort: opts.sort,\n page: Number(opts.page),\n });\n\n if (opts.json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (result.items.length === 0) {\n output.info('未找到匹配的基因');\n return;\n }\n\n output.table(\n ['slug', '名称', '版本', '分类', '兼容', '安装数'],\n result.items.map((g) => [\n g.slug,\n g.name,\n g.version,\n g.category,\n (g.compatibility as string[]).join(', '),\n String(g.install_count),\n ]),\n );\n\n output.info(`共 ${result.total} 条结果,第 ${result.page}/${result.total_pages} 页`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n","import { readdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { tmpdir } from 'node:os';\nimport { join, relative, resolve } from 'node:path';\nimport { detectAdapter, GeneHubClient, getAdapter } from '@nodeskai/genehub-sdk';\nimport type { InstallResult } from '@nodeskai/genehub-types';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport { parse } from 'yaml';\nimport { loadConfig } from '../config.js';\nimport * as output from '../output.js';\n\nconst IGNORED_PATTERNS = ['.git', 'node_modules', '.DS_Store', '__pycache__', '.venv'];\n\nasync function scanDirectory(dirPath: string): Promise<Record<string, string>> {\n const files: Record<string, string> = {};\n\n async function walk(currentPath: string) {\n const entries = await readdir(currentPath, { withFileTypes: true });\n for (const entry of entries) {\n if (IGNORED_PATTERNS.includes(entry.name)) continue;\n const fullPath = join(currentPath, entry.name);\n if (entry.isDirectory()) {\n await walk(fullPath);\n } else if (entry.isFile()) {\n const relPath = relative(dirPath, fullPath);\n const content = await readFile(fullPath, 'utf-8');\n files[relPath] = content;\n }\n }\n }\n\n await walk(dirPath);\n return files;\n}\n\nasync function extractTarGz(buffer: ArrayBuffer, destDir: string): Promise<void> {\n const { mkdir } = await import('node:fs/promises');\n await mkdir(destDir, { recursive: true });\n const { extract } = await import('tar');\n const tarPath = join(tmpdir(), `genehub-template-${Date.now()}.tar.gz`);\n await writeFile(tarPath, Buffer.from(buffer));\n try {\n await extract({ file: tarPath, cwd: destDir, strip: 1 });\n } finally {\n await rm(tarPath, { force: true });\n }\n}\n\ntype TemplateYaml = {\n name: string;\n slug: string;\n version: string;\n description?: string;\n short_description?: string;\n role?: string;\n category?: string;\n tags?: string[];\n icon?: string;\n avatar_url?: string;\n genomes: { slug: string; version: string }[];\n genes?: { slug: string; version: string }[];\n compatibility?: string[];\n author?: { type: string; id?: string; name: string };\n};\n\nconst publishTemplateCommand = new Command('publish')\n .description('发布 AI 员工模板到 GeneHub Registry')\n .argument('<path>', '模板目录路径(包含 template.yaml)')\n .action(async (dirPath: string) => {\n const config = await loadConfig();\n\n if (!config.token) {\n output.fail('未配置认证 token');\n process.exit(1);\n }\n\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n const absPath = resolve(dirPath);\n\n try {\n const yamlPath = join(absPath, 'template.yaml');\n const raw = await readFile(yamlPath, 'utf-8');\n const parsed = parse(raw) as TemplateYaml;\n\n if (!parsed.name || !parsed.slug || !parsed.version) {\n output.fail('template.yaml 缺少必填字段: name, slug, version');\n process.exit(1);\n }\n if (!parsed.genomes?.length && !parsed.genes?.length) {\n output.fail('template.yaml 至少需要引用一个 genome 或 gene');\n process.exit(1);\n }\n\n const scanSpinner = ora('扫描模板目录...').start();\n const files = await scanDirectory(absPath);\n const fileCount = Object.keys(files).length;\n scanSpinner.succeed(`扫描完成: ${fileCount} 个文件`);\n\n const spinner = ora(`发布模板 ${parsed.slug}@${parsed.version}...`).start();\n\n try {\n const template = await client.publishTemplate(parsed, files);\n spinner.succeed('发布成功');\n output.ok(\n `${template.slug}@${template.version} 已发布到 GeneHub Registry (${fileCount} 个文件)`,\n );\n } catch (err) {\n const isSlugExists = err instanceof Error && err.message.includes('template_slug_exists');\n if (!isSlugExists) throw err;\n\n spinner.text = `模板 ${parsed.slug} 已存在,发布新版本 ${parsed.version}...`;\n const template = await client.publishTemplateVersion(\n parsed.slug,\n {\n version: parsed.version,\n genomes: parsed.genomes ?? [],\n genes: parsed.genes,\n files,\n },\n files,\n );\n spinner.succeed('发布成功');\n output.ok(`${template.slug}@${template.version} 新版本已发布 (${fileCount} 个文件)`);\n }\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nconst installTemplateCommand = new Command('install')\n .description('安装 AI 员工模板(递归安装所有基因组和基因)')\n .argument('<slug>', '模板标识符(支持 slug@version 格式)')\n .option('-p, --product <product>', '指定目标产品')\n .option('-f, --force', '强制覆盖已安装基因', false)\n .option('--target <path>', '指定安装目标路径')\n .action(async (rawSlug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n const atIdx = rawSlug.lastIndexOf('@');\n const slug = atIdx > 0 ? rawSlug.slice(0, atIdx) : rawSlug;\n\n const spinner = ora(`获取模板 ${slug}...`).start();\n\n try {\n const template = await client.getTemplate(slug);\n spinner.succeed(\n `模板: ${template.name} v${template.version} (${template.genomes.length} 基因组, ${template.genes.length} 额外基因)`,\n );\n\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n output.info(`目标产品: ${adapter.product}`);\n\n const allGeneSlugs = new Set<string>();\n let installed = 0;\n let skipped = 0;\n\n for (const genomeRef of template.genomes) {\n output.info(`\\n解析基因组: ${genomeRef.slug}@${genomeRef.version}`);\n try {\n const resolved = await client.resolveGenome(genomeRef.slug, genomeRef.version);\n\n if (resolved.warnings.length > 0) {\n for (const w of resolved.warnings) output.warn(w);\n }\n\n for (const gene of resolved.genes) {\n if (allGeneSlugs.has(gene.slug)) continue;\n allGeneSlugs.add(gene.slug);\n\n if (!opts.force && (await adapter.isInstalled(gene.slug))) {\n skipped++;\n continue;\n }\n\n const geneSpinner = ora(` 安装 ${gene.slug}@${gene.version}...`).start();\n try {\n const manifest = await client.getManifest(gene.slug, gene.version);\n let result: InstallResult | undefined;\n\n try {\n const archive = await client.downloadArchive(gene.slug, gene.version);\n const tempDir = join(tmpdir(), `genehub-install-${gene.slug}-${Date.now()}`);\n await extractTarGz(archive, tempDir);\n\n if (adapter.installFromDirectory) {\n result = await adapter.installFromDirectory(tempDir, manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n } else {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n await rm(tempDir, { recursive: true, force: true });\n } catch {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n geneSpinner.succeed(` ${result.slug}@${result.version}`);\n installed++;\n\n try {\n await client.reportInstall(gene.slug);\n } catch {\n // non-critical\n }\n } catch (err) {\n geneSpinner.fail(\n ` ${gene.slug} 安装失败: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n } catch (err) {\n output.warn(\n `基因组 ${genomeRef.slug} 解析失败: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n\n if (template.genes.length > 0) {\n output.info(`\\n安装额外基因 (${template.genes.length}个):`);\n for (const geneRef of template.genes) {\n if (allGeneSlugs.has(geneRef.slug)) continue;\n allGeneSlugs.add(geneRef.slug);\n\n if (!opts.force && (await adapter.isInstalled(geneRef.slug))) {\n skipped++;\n continue;\n }\n\n const geneSpinner = ora(` 安装 ${geneRef.slug}@${geneRef.version}...`).start();\n try {\n const manifest = await client.getManifest(geneRef.slug, geneRef.version);\n let result: InstallResult | undefined;\n\n try {\n const archive = await client.downloadArchive(geneRef.slug, geneRef.version);\n const tempDir = join(tmpdir(), `genehub-install-${geneRef.slug}-${Date.now()}`);\n await extractTarGz(archive, tempDir);\n\n if (adapter.installFromDirectory) {\n result = await adapter.installFromDirectory(tempDir, manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n } else {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n await rm(tempDir, { recursive: true, force: true });\n } catch {\n result = await adapter.install(manifest, {\n force: opts.force,\n targetPath: opts.target,\n });\n }\n\n geneSpinner.succeed(` ${result.slug}@${result.version}`);\n installed++;\n\n try {\n await client.reportInstall(geneRef.slug);\n } catch {\n // non-critical\n }\n } catch (err) {\n geneSpinner.fail(\n ` ${geneRef.slug} 安装失败: ${err instanceof Error ? err.message : String(err)}`,\n );\n }\n }\n }\n\n output.ok(`模板安装完成: ${installed} 安装, ${skipped} 跳过`);\n\n try {\n await client.reportTemplateInstall(slug);\n } catch {\n // non-critical\n }\n } catch (err) {\n spinner.fail('安装失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nconst infoTemplateCommand = new Command('info')\n .description('查看 AI 员工模板详情')\n .argument('<slug>', '模板标识符')\n .option('--json', 'JSON 格式输出', false)\n .action(async (slug: string, opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n try {\n const template = await client.getTemplate(slug);\n\n if (opts.json) {\n console.log(JSON.stringify(template, null, 2));\n return;\n }\n\n output.info(`名称: ${template.name}`);\n output.info(`Slug: ${template.slug}`);\n output.info(`版本: ${template.version}`);\n output.info(`角色: ${template.role ?? '(无)'}`);\n output.info(`分类: ${template.category}`);\n output.info(`描述: ${template.description || template.short_description || '(无)'}`);\n output.info(`安装数: ${template.install_count}`);\n\n if (template.genomes.length > 0) {\n output.info(`\\n基因组 (${template.genomes.length}个):`);\n output.table(\n ['slug', '版本'],\n template.genomes.map((g) => [g.slug, g.version]),\n );\n }\n\n if (template.genes.length > 0) {\n output.info(`\\n额外基因 (${template.genes.length}个):`);\n output.table(\n ['slug', '版本'],\n template.genes.map((g) => [g.slug, g.version]),\n );\n }\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nconst listTemplateCommand = new Command('list')\n .description('搜索 AI 员工模板')\n .option('-q, --query <keyword>', '搜索关键词')\n .option('-c, --category <category>', '按分类过滤')\n .option('-r, --role <role>', '按角色过滤')\n .option('--json', 'JSON 格式输出', false)\n .action(async (opts) => {\n const config = await loadConfig();\n const client = new GeneHubClient({ registryUrl: config.registryUrl, token: config.token });\n\n try {\n const result = await client.searchTemplates({\n q: opts.query,\n category: opts.category,\n role: opts.role,\n });\n\n if (opts.json) {\n console.log(JSON.stringify(result, null, 2));\n return;\n }\n\n if (result.items.length === 0) {\n output.info('未找到模板');\n return;\n }\n\n output.table(\n ['slug', '名称', '版本', '角色', '基因组', '安装数'],\n result.items.map((t) => [\n t.slug,\n t.name,\n t.version,\n t.role ?? '-',\n String(t.genomes.length),\n String(t.install_count),\n ]),\n );\n\n output.info(`共 ${result.total} 条结果`);\n } catch (err) {\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n\nexport const templateCommand = new Command('template').description('AI 员工模板管理');\n\ntemplateCommand.addCommand(publishTemplateCommand);\ntemplateCommand.addCommand(installTemplateCommand);\ntemplateCommand.addCommand(infoTemplateCommand);\ntemplateCommand.addCommand(listTemplateCommand);\n","import { detectAdapter, getAdapter } from '@nodeskai/genehub-sdk';\nimport { Command } from 'commander';\nimport ora from 'ora';\nimport * as output from '../output.js';\n\nexport const uninstallCommand = new Command('uninstall')\n .description('从当前 Agent 环境卸载基因')\n .argument('<slug>', '基因标识符')\n .option('-p, --product <product>', '指定目标产品(openclaw / nanobot / generic)')\n .action(async (slug: string, opts) => {\n const adapter = opts.product ? getAdapter(opts.product) : await detectAdapter();\n\n output.info(`目标产品: ${adapter.product}`);\n\n if (!(await adapter.isInstalled(slug))) {\n output.warn(`${slug} 未安装`);\n return;\n }\n\n const spinner = ora('卸载中...').start();\n\n try {\n const result = await adapter.uninstall(slug);\n spinner.succeed('卸载完成');\n\n output.ok(`${result.slug} 已卸载`);\n output.info(`清理文件: ${result.files.join(', ')}`);\n\n if (result.needsRestart) {\n output.warn('需要重启 Agent Host 使变更生效');\n }\n } catch (err) {\n spinner.fail('卸载失败');\n output.fail(err instanceof Error ? err.message : String(err));\n process.exit(1);\n }\n });\n"],"mappings":"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","names":["Command","resolve","Command","Command","readdir","readFile","rm","writeFile","join","mkdir","readFile","writeFile","join","join","mkdir","writeFile","readFile","cp","mkdir","readdir","readFile","rm","stat","writeFile","homedir","join","join","homedir","stat","mkdir","writeFile","cp","readdir","rm","readFile","cp","mkdir","readdir","readFile","rm","stat","writeFile","homedir","join","join","homedir","stat","mkdir","writeFile","cp","readdir","rm","readFile","mkdir","readdir","readFile","rm","writeFile","join","join","readFile","writeFile","mkdir","readdir","rm","Command","readdir","join","readFile","mkdir","writeFile","rm","Command","mkdir","writeFile","join","resolve","Command","stringify","Command","resolve","mkdir","join","writeFile","stringify","mkdir","rm","writeFile","homedir","tmpdir","join","Command","ora","extractTarGz","mkdir","join","tmpdir","writeFile","rm","Command","ora","homedir","homedir","join","Command","ora","join","homedir","Command","spinner","ora","Command","Command","readdir","readFile","join","relative","resolve","util","objectUtil","errorUtil","errorMap","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","Command","ora","parse","IGNORED_PATTERNS","scanDirectory","readdir","join","relative","readFile","Command","resolve","parse","ora","Command","Command","readdir","readFile","rm","writeFile","tmpdir","join","relative","resolve","Command","ora","parse","IGNORED_PATTERNS","scanDirectory","readdir","join","relative","readFile","extractTarGz","mkdir","tmpdir","writeFile","rm","Command","resolve","parse","ora","Command","ora","Command","ora","Command"]}
|