@sentrial/sdk 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -0
- package/dist/cli.cjs +6185 -101
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +6247 -158
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +27 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +27 -19
- package/dist/index.d.ts +27 -19
- package/dist/index.js +27 -3
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/constants.ts","../package.json"],"sourcesContent":["#!/usr/bin/env node\n\nimport { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { spawn } from 'node:child_process';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport readline from 'node:readline/promises';\n\nimport { DEFAULT_API_URL } from './constants.js';\n// Named JSON import (no `with { type: 'json' }` attribute — that routes esbuild through the\n// spec-ESM path which exposes only a default export) so tsup/esbuild tree-shakes the manifest down\n// to just `version` rather than inlining the entire package.json (scripts, devDependencies, …).\nimport { version as CLI_VERSION } from '../package.json';\nconst CONFIG_DIR = path.join(os.homedir(), '.sentrial');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');\nconst TIME_RANGES = new Set(['24h', '3d', '7d', '30d']);\n\ntype FlagValue = string | boolean | undefined;\n\ninterface ParsedArgs {\n flags: Record<string, FlagValue>;\n positionals: string[];\n}\n\ninterface StoredConfig {\n apiKey?: string;\n apiUrl?: string;\n}\n\ninterface CliContext {\n apiKey?: string;\n apiUrl: string;\n json: boolean;\n color: boolean;\n}\n\ninterface ApiEnvelope<T> {\n data: T;\n meta?: Record<string, unknown>;\n}\n\n// The CLI parses raw V1 API responses; reuse the canonical wire-response types\n// from ./types instead of re-declaring them here so they can't drift (#489).\nimport type { SessionResponse as SessionSummary, EventResponse as EventSummary } from './types.js';\n\ninterface SignalSummary {\n id: string;\n name: string;\n type: string;\n source?: string | null;\n count: number;\n affectedSessions: number;\n affectedUsers: number;\n description?: string | null;\n createdAt?: string | null;\n}\n\ninterface DiagnoseFinding {\n severity: 'high' | 'medium' | 'low' | 'info';\n title: string;\n detail: string;\n}\n\ninterface InstallPlan {\n language: 'typescript' | 'python';\n framework?: string;\n command: string;\n args: string[];\n packageName: string;\n}\n\nexport class CliError extends Error {\n readonly exitCode: number;\n\n constructor(message: string, exitCode = 1) {\n super(message);\n this.name = 'CliError';\n this.exitCode = exitCode;\n }\n}\n\nconst SHORT_FLAGS: Record<string, string> = {\n a: 'agent',\n f: 'force',\n h: 'help',\n j: 'json',\n l: 'last',\n s: 'status',\n t: 'type',\n v: 'version',\n y: 'yes',\n};\n\nconst BOOLEAN_FLAGS = new Set([\n 'force',\n 'help',\n 'include-api-key',\n 'json',\n 'dry-run',\n 'version',\n 'yes',\n]);\n\nconst HELP = `Sentrial CLI\n\nUsage:\n sentrial <command> [options]\n\nCommands:\n install Install the SDK package and scaffold integration files\n init Scaffold a safe example integration in this repo\n login Save an API key for future CLI calls\n sessions list List recent sessions\n sessions get <id> Show a session and its events\n events list <session-id> List events for a session\n signals list List detected signals\n diagnose <session-id> Print a terminal diagnosis from session events\n evaluate <experiment-id> Run the /api/v1/evaluate CI gate (API key needs the metrics:read scope)\n fix <session-id> Reserved for the upcoming Fixer API\n replay <session-id> Reserved for the upcoming replay API\n\nGlobal options:\n --api-key <key> API key, otherwise SENTRIAL_API_KEY or ~/.sentrial/config.json\n --api-url <url> API URL, otherwise SENTRIAL_API_URL or ${DEFAULT_API_URL}\n --json Emit machine-readable JSON\n --no-color Disable ANSI color\n -h, --help Show help\n -v, --version Show version\n\nExamples:\n sentrial login --api-key sentrial_live_xxx\n sentrial install\n sentrial init\n sentrial sessions list --last 7d --status failed --agent support\n sentrial sessions get 00000000-0000-0000-0000-000000000000\n sentrial events list 00000000-0000-0000-0000-000000000000 --type tool_call\n sentrial signals list --type negative --last 30d\n sentrial diagnose 00000000-0000-0000-0000-000000000000\n sentrial evaluate 00000000-0000-0000-0000-000000000000 --min-score 80\n`;\n\nexport function parseArgs(argv: string[]): ParsedArgs {\n const flags: Record<string, FlagValue> = {};\n const positionals: string[] = [];\n\n for (let i = 0; i < argv.length; i++) {\n const token = argv[i];\n if (token === '--') {\n positionals.push(...argv.slice(i + 1));\n break;\n }\n\n if (token.startsWith('--no-')) {\n flags[token.slice(5)] = false;\n continue;\n }\n\n if (token.startsWith('--')) {\n const [rawName, inlineValue] = token.slice(2).split('=', 2);\n if (inlineValue !== undefined) {\n flags[rawName] = inlineValue;\n } else if (BOOLEAN_FLAGS.has(rawName)) {\n flags[rawName] = true;\n } else {\n const next = argv[i + 1];\n if (next && !next.startsWith('-')) {\n flags[rawName] = next;\n i++;\n } else {\n flags[rawName] = true;\n }\n }\n continue;\n }\n\n if (token.startsWith('-') && token.length === 2) {\n const mapped = SHORT_FLAGS[token.slice(1)];\n if (!mapped) {\n throw new CliError(`Unknown flag: ${token}`);\n }\n if (BOOLEAN_FLAGS.has(mapped)) {\n flags[mapped] = true;\n } else {\n const next = argv[i + 1];\n if (!next || next.startsWith('-')) {\n throw new CliError(`Flag ${token} requires a value`);\n }\n flags[mapped] = next;\n i++;\n }\n continue;\n }\n\n positionals.push(token);\n }\n\n return { flags, positionals };\n}\n\nfunction getFlag(flags: Record<string, FlagValue>, ...names: string[]): FlagValue {\n for (const name of names) {\n if (flags[name] !== undefined) return flags[name];\n }\n return undefined;\n}\n\nfunction getStringFlag(flags: Record<string, FlagValue>, ...names: string[]): string | undefined {\n const value = getFlag(flags, ...names);\n if (typeof value === 'string') return value;\n return undefined;\n}\n\nfunction getBooleanFlag(flags: Record<string, FlagValue>, name: string): boolean {\n return flags[name] === true;\n}\n\nfunction readConfig(): StoredConfig {\n if (!existsSync(CONFIG_FILE)) return {};\n\n try {\n const parsed = JSON.parse(readFileSync(CONFIG_FILE, 'utf8')) as StoredConfig;\n return parsed && typeof parsed === 'object' ? parsed : {};\n } catch {\n return {};\n }\n}\n\nfunction writeConfig(config: StoredConfig): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n writeFileSync(CONFIG_FILE, `${JSON.stringify(config, null, 2)}\\n`, { mode: 0o600 });\n try {\n chmodSync(CONFIG_FILE, 0o600);\n } catch {\n // Best effort only; some filesystems do not support chmod.\n }\n}\n\nfunction createContext(flags: Record<string, FlagValue>): CliContext {\n const config = readConfig();\n const apiKey = getStringFlag(flags, 'api-key') ?? process.env.SENTRIAL_API_KEY ?? config.apiKey;\n const apiUrl = (\n getStringFlag(flags, 'api-url') ??\n process.env.SENTRIAL_API_URL ??\n config.apiUrl ??\n DEFAULT_API_URL\n ).replace(/\\/$/, '');\n\n return {\n apiKey,\n apiUrl,\n json: getBooleanFlag(flags, 'json'),\n color: flags.color !== false && process.stdout.isTTY && !process.env.NO_COLOR,\n };\n}\n\nfunction requireApiKey(ctx: CliContext): string {\n if (!ctx.apiKey) {\n throw new CliError(\n 'Missing API key. Run `sentrial login --api-key sentrial_live_xxx` or set SENTRIAL_API_KEY.'\n );\n }\n return ctx.apiKey;\n}\n\nasync function apiRequest<T>(\n ctx: CliContext,\n apiPath: string,\n options: {\n method?: 'GET' | 'POST';\n query?: Record<string, string | number | boolean | undefined>;\n body?: unknown;\n } = {}\n): Promise<T> {\n const apiKey = requireApiKey(ctx);\n const url = new URL(apiPath, `${ctx.apiUrl}/`);\n\n for (const [key, value] of Object.entries(options.query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n Accept: 'application/json',\n };\n\n if (options.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: options.method ?? 'GET',\n headers,\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n });\n } catch (error) {\n throw new CliError(\n `Could not reach ${ctx.apiUrl}. ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n const text = await response.text();\n const parsed = parseResponseBody(text);\n\n if (!response.ok) {\n throw new CliError(\n `${options.method ?? 'GET'} ${url.pathname} failed (${response.status}): ${formatApiError(\n parsed\n )}`,\n response.status === 404 ? 4 : 1\n );\n }\n\n return parsed as T;\n}\n\nfunction parseResponseBody(text: string): unknown {\n if (!text.trim()) return {};\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction formatApiError(value: unknown): string {\n if (value && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n if (typeof record.error === 'string') return record.error;\n if (record.error && typeof record.error === 'object') {\n const error = record.error as Record<string, unknown>;\n if (typeof error.message === 'string') return error.message;\n }\n }\n return typeof value === 'string' ? value : 'Unexpected API response';\n}\n\nasync function commandLogin(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n let apiKey = getStringFlag(flags, 'api-key') ?? process.env.SENTRIAL_API_KEY;\n const apiUrl = getStringFlag(flags, 'api-url') ?? process.env.SENTRIAL_API_URL ?? ctx.apiUrl;\n\n if (!apiKey) {\n if (!process.stdin.isTTY) {\n throw new CliError('Pass --api-key or set SENTRIAL_API_KEY when stdin is not interactive.');\n }\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n apiKey = (await rl.question('Sentrial API key: ')).trim();\n rl.close();\n }\n\n if (!apiKey.startsWith('sentrial_')) {\n throw new CliError('API keys should look like sentrial_live_xxx or sentrial_test_xxx.');\n }\n\n writeConfig({ apiKey, apiUrl });\n\n if (ctx.json) {\n printJson({ ok: true, configPath: CONFIG_FILE, apiUrl });\n return;\n }\n\n process.stdout.write(`Saved credentials to ${CONFIG_FILE}\\n`);\n}\n\nasync function commandInstall(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n const projectRoot = process.cwd();\n const requestedLanguage = getStringFlag(flags, 'language');\n const pythonCommand = getStringFlag(flags, 'python');\n const packageOverride = getStringFlag(flags, 'sdk-package') ?? process.env.SENTRIAL_SDK_PACKAGE;\n const plan = buildInstallPlan(projectRoot, requestedLanguage, pythonCommand, packageOverride);\n const dryRun = getBooleanFlag(flags, 'dry-run');\n\n if (ctx.json) {\n if (!dryRun) {\n throw new CliError('Use --dry-run with --json; real installs stream package-manager output.');\n }\n printJson({ dryRun: true, plan, wouldWrite: plannedScaffoldFiles(projectRoot, plan.language) });\n return;\n }\n\n process.stdout.write(`Detected: ${plan.framework ?? plan.language}\\n`);\n process.stdout.write(`Install: ${formatCommand(plan.command, plan.args)}\\n`);\n\n if (dryRun) {\n process.stdout.write('Dry run only. No files were changed.\\n');\n return;\n }\n\n await runSubprocess(plan.command, plan.args, projectRoot);\n await commandInit(ctx, flags);\n}\n\nasync function commandInit(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n const projectRoot = process.cwd();\n const detected = detectProject(projectRoot);\n const requestedLanguage = getStringFlag(flags, 'language');\n const language = requestedLanguage ?? detected.language ?? 'typescript';\n const force = getBooleanFlag(flags, 'force');\n const includeApiKey = getBooleanFlag(flags, 'include-api-key');\n\n if (language !== 'typescript' && language !== 'python') {\n throw new CliError('Supported init languages are \"typescript\" and \"python\".');\n }\n\n const files =\n language === 'python'\n ? [\n {\n path: path.join(projectRoot, 'sentrial.example.py'),\n content: pythonExample(),\n },\n ]\n : [\n {\n path: path.join(projectRoot, 'sentrial.example.ts'),\n content: typescriptExample(),\n },\n ];\n\n // .env.sentrial.example is conventionally committed to git, so it must NEVER contain a\n // real key — always the placeholder (#497).\n files.push({\n path: path.join(projectRoot, '.env.sentrial.example'),\n content: `SENTRIAL_API_KEY=sentrial_live_xxx\\nSENTRIAL_API_URL=${ctx.apiUrl}\\n`,\n });\n\n // --include-api-key bakes the caller's real key into the GITIGNORED .env.sentrial (a real\n // env file), not the committable .example — so the live key never lands in version control.\n if (includeApiKey && ctx.apiKey) {\n files.push({\n path: path.join(projectRoot, '.env.sentrial'),\n content: `SENTRIAL_API_KEY=${ctx.apiKey}\\nSENTRIAL_API_URL=${ctx.apiUrl}\\n`,\n });\n }\n\n const written: string[] = [];\n const skipped: string[] = [];\n\n for (const file of files) {\n if (existsSync(file.path) && !force) {\n skipped.push(file.path);\n continue;\n }\n writeFileSync(file.path, file.content);\n written.push(file.path);\n }\n\n const installCommand =\n language === 'python'\n ? 'pip install sentrial'\n : `${detectPackageManager(projectRoot)} add @sentrial/sdk`;\n\n if (ctx.json) {\n printJson({\n detected,\n language,\n installCommand,\n written,\n skipped,\n });\n return;\n }\n\n process.stdout.write(`Detected: ${detected.framework ?? language}\\n`);\n process.stdout.write(`Install: ${installCommand}\\n`);\n if (written.length > 0) {\n process.stdout.write(\n `Written:\\n${written.map((file) => ` ${path.relative(projectRoot, file)}`).join('\\n')}\\n`\n );\n }\n if (skipped.length > 0) {\n process.stdout.write(\n `Skipped existing files:\\n${skipped.map((file) => ` ${path.relative(projectRoot, file)}`).join('\\n')}\\n`\n );\n }\n}\n\nasync function commandSessions(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n rest: string[]\n): Promise<void> {\n const subcommand = rest[0];\n if (subcommand === 'list') {\n await commandSessionsList(ctx, flags);\n return;\n }\n if (subcommand === 'get') {\n const sessionId = rest[1];\n if (!sessionId) throw new CliError('Usage: sentrial sessions get <id>');\n await commandSessionsGet(ctx, flags, sessionId);\n return;\n }\n throw new CliError('Usage: sentrial sessions <list|get>');\n}\n\nasync function commandSessionsList(\n ctx: CliContext,\n flags: Record<string, FlagValue>\n): Promise<void> {\n const query = buildTimeQuery(flags);\n const agentFilter = getStringFlag(flags, 'agent')?.toLowerCase();\n const hasExplicitLimit = getStringFlag(flags, 'limit') !== undefined;\n query.status = getStringFlag(flags, 'status') ?? 'all';\n query.limit = parseIntegerFlag(flags, 'limit', agentFilter && !hasExplicitLimit ? 500 : 50);\n query.offset = parseIntegerFlag(flags, 'offset', 0);\n\n const response = await apiRequest<ApiEnvelope<SessionSummary[]>>(ctx, '/api/v1/sessions', {\n query,\n });\n\n const sessions = agentFilter\n ? response.data.filter((session) =>\n `${session.agentName ?? ''} ${session.agentSlug ?? ''}`.toLowerCase().includes(agentFilter)\n )\n : response.data;\n\n if (ctx.json) {\n printJson({ data: sessions, meta: response.meta });\n return;\n }\n\n if (sessions.length === 0) {\n process.stdout.write('No sessions found.\\n');\n return;\n }\n\n printTable(sessions, [\n { header: 'ID', render: (s) => s.id, maxWidth: 36 },\n { header: 'Agent', render: (s) => s.agentName ?? s.agentSlug ?? '-', maxWidth: 18 },\n { header: 'Status', render: (s) => s.status ?? '-', maxWidth: 10 },\n { header: 'Result', render: (s) => formatResult(s.success), maxWidth: 8 },\n { header: 'Score', render: (s) => formatNullableNumber(s.score), maxWidth: 6 },\n { header: 'Dur', render: (s) => formatDuration(s.durationMs), maxWidth: 8 },\n { header: 'Cost', render: (s) => formatCost(s.estimatedCost), maxWidth: 10 },\n { header: 'Created', render: (s) => formatDate(s.createdAt), maxWidth: 16 },\n { header: 'Name', render: (s) => s.name ?? '-', maxWidth: 28 },\n ]);\n\n if (agentFilter) {\n process.stdout.write(`\\nFiltered locally by agent: ${agentFilter}\\n`);\n }\n}\n\nasync function commandSessionsGet(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n sessionId: string\n): Promise<void> {\n const sessionResponse = await apiRequest<ApiEnvelope<SessionSummary>>(\n ctx,\n `/api/v1/sessions/${sessionId}`\n );\n const includeEvents = flags.events !== false;\n const events = includeEvents ? await fetchSessionEvents(ctx, flags, sessionId) : [];\n\n if (ctx.json) {\n printJson({ data: sessionResponse.data, events });\n return;\n }\n\n printSession(sessionResponse.data, events, ctx);\n}\n\nasync function fetchSessionEvents(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n sessionId: string\n): Promise<EventSummary[]> {\n const eventType = getStringFlag(flags, 'event-type') ?? 'all';\n const response = await apiRequest<ApiEnvelope<EventSummary[]>>(\n ctx,\n `/api/v1/sessions/${sessionId}/events`,\n {\n query: {\n limit: parseIntegerFlag(flags, 'events-limit', 100),\n offset: parseIntegerFlag(flags, 'events-offset', 0),\n eventType,\n },\n }\n );\n return response.data;\n}\n\nasync function commandEvents(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n rest: string[]\n): Promise<void> {\n const subcommand = rest[0] ?? 'list';\n if (subcommand !== 'list') {\n throw new CliError('Usage: sentrial events list <session-id>');\n }\n\n const sessionId = rest[1] ?? getStringFlag(flags, 'session', 'session-id');\n if (!sessionId) {\n throw new CliError('Usage: sentrial events list <session-id>');\n }\n\n const eventType = getStringFlag(flags, 'type', 'event-type') ?? 'all';\n const response = await apiRequest<ApiEnvelope<EventSummary[]>>(\n ctx,\n `/api/v1/sessions/${sessionId}/events`,\n {\n query: {\n limit: parseIntegerFlag(flags, 'limit', 100),\n offset: parseIntegerFlag(flags, 'offset', 0),\n eventType,\n },\n }\n );\n\n if (ctx.json) {\n printJson(response);\n return;\n }\n\n if (response.data.length === 0) {\n process.stdout.write('No events found.\\n');\n return;\n }\n\n process.stdout.write(`${bold(ctx, 'Events')} ${sessionId}\\n`);\n for (const event of response.data) {\n printEvent(event, ctx);\n }\n}\n\nasync function commandSignals(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n rest: string[]\n): Promise<void> {\n const subcommand = rest[0] ?? 'list';\n if (subcommand !== 'list') {\n throw new CliError('Usage: sentrial signals list');\n }\n\n const query = buildTimeQuery(flags);\n query.type = getStringFlag(flags, 'type') ?? 'all';\n query.source = getStringFlag(flags, 'source') ?? 'all';\n\n const response = await apiRequest<ApiEnvelope<SignalSummary[]>>(ctx, '/api/v1/signals', {\n query,\n });\n\n if (ctx.json) {\n printJson(response);\n return;\n }\n\n if (response.data.length === 0) {\n process.stdout.write('No signals found.\\n');\n return;\n }\n\n printTable(response.data, [\n { header: 'Name', render: (s) => s.name, maxWidth: 28 },\n { header: 'Type', render: (s) => s.type, maxWidth: 10 },\n { header: 'Source', render: (s) => s.source ?? '-', maxWidth: 12 },\n { header: 'Count', render: (s) => String(s.count), maxWidth: 8 },\n { header: 'Sessions', render: (s) => String(s.affectedSessions), maxWidth: 10 },\n { header: 'Users', render: (s) => String(s.affectedUsers), maxWidth: 8 },\n { header: 'Created', render: (s) => formatDate(s.createdAt), maxWidth: 16 },\n { header: 'Description', render: (s) => s.description ?? '-', maxWidth: 36 },\n ]);\n}\n\nasync function commandDiagnose(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n sessionId: string | undefined\n): Promise<void> {\n if (!sessionId) throw new CliError('Usage: sentrial diagnose <session-id>');\n\n const sessionResponse = await apiRequest<ApiEnvelope<SessionSummary>>(\n ctx,\n `/api/v1/sessions/${sessionId}`\n );\n const events = await fetchSessionEvents(ctx, flags, sessionId);\n const findings = diagnoseSession(sessionResponse.data, events);\n\n if (ctx.json) {\n printJson({ session: sessionResponse.data, findings });\n return;\n }\n\n process.stdout.write(`${bold(ctx, 'Diagnosis')}\\n`);\n process.stdout.write(`Session: ${sessionResponse.data.id}\\n`);\n process.stdout.write(\n `Agent: ${sessionResponse.data.agentName ?? sessionResponse.data.agentSlug ?? '-'}\\n`\n );\n process.stdout.write(\n `Status: ${sessionResponse.data.status ?? '-'} (${formatResult(sessionResponse.data.success)})\\n`\n );\n if (sessionResponse.data.failureReason) {\n process.stdout.write(`Failure: ${sessionResponse.data.failureReason}\\n`);\n }\n process.stdout.write('\\n');\n\n if (findings.length === 0) {\n process.stdout.write('No obvious terminal-level issues found in the session events.\\n');\n return;\n }\n\n for (const finding of findings) {\n process.stdout.write(`${severityLabel(ctx, finding.severity)} ${finding.title}\\n`);\n process.stdout.write(` ${finding.detail}\\n`);\n }\n}\n\nasync function commandEvaluate(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n experimentId: string | undefined\n): Promise<void> {\n const resolvedExperimentId = experimentId ?? getStringFlag(flags, 'experiment', 'experiment-id');\n if (!resolvedExperimentId) {\n throw new CliError('Usage: sentrial evaluate <experiment-id> [--min-score 80]');\n }\n\n const body = {\n experimentId: resolvedExperimentId,\n baselineExperimentId: getStringFlag(flags, 'baseline', 'baseline-experiment-id'),\n thresholds: {\n minScore: parseOptionalNumberFlag(flags, 'min-score'),\n failOnRegression: flags['fail-on-regression'] === false ? false : undefined,\n maxRegressionPercent: parseOptionalNumberFlag(flags, 'max-regression-percent'),\n },\n };\n\n const response = await apiRequest<Record<string, unknown>>(ctx, '/api/v1/evaluate', {\n method: 'POST',\n body,\n });\n\n if (ctx.json) {\n printJson(response);\n } else {\n const passed = response.passed === true;\n process.stdout.write(`${passed ? color(ctx, 'green', 'PASS') : color(ctx, 'red', 'FAIL')}\\n`);\n if (Array.isArray(response.failures) && response.failures.length > 0) {\n process.stdout.write(\n `Failures:\\n${response.failures.map((f) => ` - ${String(f)}`).join('\\n')}\\n`\n );\n }\n if (response.summary && typeof response.summary === 'object') {\n printKeyValues(response.summary as Record<string, unknown>);\n }\n if (response.regression && typeof response.regression === 'object') {\n process.stdout.write('\\nRegression:\\n');\n printKeyValues(response.regression as Record<string, unknown>);\n }\n }\n\n if (response.passed === false) {\n process.exitCode = 1;\n }\n}\n\nfunction commandReserved(command: string): void {\n const messages: Record<string, string> = {\n fix: 'The Fixer CLI is reserved for the upcoming scriptable Fixer API.',\n replay: 'The replay CLI is reserved for the upcoming replay API.',\n };\n throw new CliError(messages[command] ?? `${command} is not available yet.`, 2);\n}\n\nfunction buildTimeQuery(flags: Record<string, FlagValue>): Record<string, string | number> {\n const query: Record<string, string | number> = {};\n const last = getStringFlag(flags, 'last', 'time-range') ?? '7d';\n const from = getStringFlag(flags, 'from');\n const to = getStringFlag(flags, 'to');\n\n if (from) {\n query.from = from;\n } else if (TIME_RANGES.has(last)) {\n query.timeRange = last;\n } else {\n throw new CliError(`--last must be one of: ${Array.from(TIME_RANGES).join(', ')}`);\n }\n\n if (to) query.to = to;\n return query;\n}\n\nfunction parseIntegerFlag(\n flags: Record<string, FlagValue>,\n name: string,\n fallback: number\n): number {\n const raw = getStringFlag(flags, name);\n if (raw === undefined) return fallback;\n const parsed = Number.parseInt(raw, 10);\n if (!Number.isFinite(parsed)) throw new CliError(`--${name} must be an integer`);\n return parsed;\n}\n\nfunction parseOptionalNumberFlag(\n flags: Record<string, FlagValue>,\n name: string\n): number | undefined {\n const raw = getStringFlag(flags, name);\n if (raw === undefined) return undefined;\n const parsed = Number.parseFloat(raw);\n if (!Number.isFinite(parsed)) throw new CliError(`--${name} must be a number`);\n return parsed;\n}\n\nexport function diagnoseSession(\n session: SessionSummary,\n events: EventSummary[]\n): DiagnoseFinding[] {\n const findings: DiagnoseFinding[] = [];\n const toolErrors = events.filter((event) => hasMeaningfulValue(event.toolError));\n const explicitErrors = events.filter((event) => event.eventType === 'error');\n const lowConfidence = events.filter(\n (event) => typeof event.confidence === 'number' && event.confidence < 0.5\n );\n\n if (session.success === false || session.status === 'failed') {\n findings.push({\n severity: 'high',\n title: 'Session ended unsuccessfully',\n detail: session.failureReason ?? 'The session is marked failed without a failure reason.',\n });\n }\n\n if (toolErrors.length > 0) {\n const grouped = groupBy(toolErrors, (event) => event.toolName ?? 'unknown_tool');\n const top = Array.from(grouped.entries())\n .map(([tool, group]) => `${tool} (${group.length})`)\n .join(', ');\n findings.push({\n severity: 'high',\n title: 'Tool errors occurred',\n detail: `${toolErrors.length} tool error event(s): ${top}. First error: ${formatCompactJson(\n toolErrors[0].toolError\n )}`,\n });\n }\n\n if (explicitErrors.length > 0) {\n findings.push({\n severity: 'high',\n title: 'Error events were recorded',\n detail: `${explicitErrors.length} error event(s). First event: ${summarizeEvent(\n explicitErrors[0]\n )}`,\n });\n }\n\n const repeatedCalls = findRepeatedToolCalls(events);\n if (repeatedCalls.length > 0) {\n findings.push({\n severity: 'medium',\n title: 'Repeated identical tool calls',\n detail: repeatedCalls\n .slice(0, 3)\n .map((call) => `${call.toolName} repeated ${call.count} times`)\n .join('; '),\n });\n }\n\n if (lowConfidence.length > 0) {\n findings.push({\n severity: 'medium',\n title: 'Low-confidence decisions',\n detail: `${lowConfidence.length} decision event(s) had confidence below 0.5.`,\n });\n }\n\n if (session.totalTokens && session.totalTokens > 100_000) {\n findings.push({\n severity: 'low',\n title: 'High token usage',\n detail: `This session used ${session.totalTokens.toLocaleString()} tokens.`,\n });\n }\n\n if (session.durationMs && session.durationMs > 120_000) {\n findings.push({\n severity: 'low',\n title: 'Long-running session',\n detail: `Duration was ${formatDuration(session.durationMs)}.`,\n });\n }\n\n if (session.status === 'completed' && !session.assistantOutput) {\n findings.push({\n severity: 'info',\n title: 'No assistant output stored',\n detail:\n 'The session completed, but assistantOutput is empty. Confirm finish({ output }) is wired.',\n });\n }\n\n return findings;\n}\n\nfunction findRepeatedToolCalls(events: EventSummary[]): Array<{ toolName: string; count: number }> {\n const counts = new Map<string, { toolName: string; count: number }>();\n for (const event of events) {\n if (event.eventType !== 'tool_call' || !event.toolName) continue;\n const key = `${event.toolName}:${formatCompactJson(event.toolInput)}`;\n const current = counts.get(key) ?? { toolName: event.toolName, count: 0 };\n current.count++;\n counts.set(key, current);\n }\n return Array.from(counts.values()).filter((entry) => entry.count >= 3);\n}\n\nfunction groupBy<T>(items: T[], keyFor: (item: T) => string): Map<string, T[]> {\n const result = new Map<string, T[]>();\n for (const item of items) {\n const key = keyFor(item);\n const existing = result.get(key) ?? [];\n existing.push(item);\n result.set(key, existing);\n }\n return result;\n}\n\nfunction hasMeaningfulValue(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') return Object.keys(value).length > 0;\n return true;\n}\n\nexport function detectProject(projectRoot: string): {\n language?: 'typescript' | 'python';\n framework?: string;\n} {\n const packageJsonPath = path.join(projectRoot, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n };\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n if (deps.next) return { language: 'typescript', framework: 'Next.js' };\n if (deps.ai || deps['@ai-sdk/openai'])\n return { language: 'typescript', framework: 'Vercel AI SDK' };\n if (deps.langchain || deps['@langchain/core'])\n return { language: 'typescript', framework: 'LangChain' };\n if (deps.openai) return { language: 'typescript', framework: 'OpenAI Node' };\n return { language: 'typescript', framework: 'Node.js' };\n } catch {\n return { language: 'typescript', framework: 'Node.js' };\n }\n }\n\n const requirementsPath = path.join(projectRoot, 'requirements.txt');\n const pyprojectPath = path.join(projectRoot, 'pyproject.toml');\n if (existsSync(requirementsPath) || existsSync(pyprojectPath)) {\n const text = [requirementsPath, pyprojectPath]\n .filter((file) => existsSync(file))\n .map((file) => readFileSync(file, 'utf8').toLowerCase())\n .join('\\n');\n if (text.includes('fastapi')) return { language: 'python', framework: 'FastAPI' };\n if (text.includes('langchain')) return { language: 'python', framework: 'LangChain' };\n if (text.includes('crewai')) return { language: 'python', framework: 'CrewAI' };\n if (text.includes('openai')) return { language: 'python', framework: 'OpenAI Python' };\n return { language: 'python', framework: 'Python' };\n }\n\n return {};\n}\n\nexport function buildInstallPlan(\n projectRoot: string,\n languageOverride?: string,\n pythonCommand?: string,\n packageOverride?: string\n): InstallPlan {\n const detected = detectProject(projectRoot);\n const language = languageOverride ?? detected.language ?? 'typescript';\n\n if (language !== 'typescript' && language !== 'python') {\n throw new CliError('Supported install languages are \"typescript\" and \"python\".');\n }\n\n if (language === 'python') {\n const command = pythonCommand ?? (process.platform === 'win32' ? 'python' : 'python3');\n const packageName = packageOverride ?? 'sentrial';\n return {\n language,\n framework: detected.framework,\n command,\n args: ['-m', 'pip', 'install', packageName],\n packageName,\n };\n }\n\n const packageManager = detectPackageManager(projectRoot);\n const packageName = packageOverride ?? '@sentrial/sdk';\n return {\n language,\n framework: detected.framework,\n command: packageManager,\n args: packageManager === 'npm' ? ['install', packageName] : ['add', packageName],\n packageName,\n };\n}\n\nfunction detectPackageManager(projectRoot: string): 'pnpm' | 'npm' | 'yarn' {\n if (existsSync(path.join(projectRoot, 'pnpm-lock.yaml'))) return 'pnpm';\n if (existsSync(path.join(projectRoot, 'yarn.lock'))) return 'yarn';\n return 'npm';\n}\n\nfunction plannedScaffoldFiles(projectRoot: string, language: InstallPlan['language']): string[] {\n const sampleFile = language === 'python' ? 'sentrial.example.py' : 'sentrial.example.ts';\n return [path.join(projectRoot, sampleFile), path.join(projectRoot, '.env.sentrial.example')];\n}\n\nfunction runSubprocess(command: string, args: string[], cwd: string): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: 'inherit',\n shell: process.platform === 'win32',\n });\n\n child.on('error', (error) => {\n reject(new CliError(`Failed to run ${formatCommand(command, args)}: ${error.message}`));\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(\n new CliError(`${formatCommand(command, args)} failed with exit code ${code ?? 'unknown'}`)\n );\n });\n });\n}\n\nfunction formatCommand(command: string, args: string[]): string {\n return [command, ...args].join(' ');\n}\n\nfunction typescriptExample(): string {\n return `import { configure, withSession } from '@sentrial/sdk';\n\nconfigure({\n apiKey: process.env.SENTRIAL_API_KEY,\n apiUrl: process.env.SENTRIAL_API_URL,\n});\n\nexport const runAgent = withSession('my-agent', async (userId: string, input: string) => {\n // Replace this with your real agent call. LLM/tool wrappers can be added around it.\n const output = \\`Echo: \\${input}\\`;\n return output;\n});\n\nawait runAgent('user_123', 'Hello from Sentrial');\n`;\n}\n\nfunction pythonExample(): string {\n return `from sentrial import SentrialClient\n\nclient = SentrialClient()\n\ninteraction = client.begin(\n user_id=\"user_123\",\n event=\"my-agent\",\n input=\"Hello from Sentrial\",\n)\n\ntry:\n # Replace this with your real agent call.\n output = \"Echo: Hello from Sentrial\"\n interaction.finish(output=output, success=True)\nexcept Exception as exc:\n interaction.finish(success=False, failure_reason=str(exc))\n raise\n`;\n}\n\nfunction printSession(session: SessionSummary, events: EventSummary[], ctx: CliContext): void {\n process.stdout.write(`${bold(ctx, 'Session')} ${session.id}\\n`);\n printKeyValues({\n name: session.name ?? '-',\n agent: session.agentName ?? session.agentSlug ?? '-',\n userId: session.userId ?? '-',\n status: `${session.status ?? '-'} (${formatResult(session.success)})`,\n score: formatNullableNumber(session.score),\n duration: formatDuration(session.durationMs),\n cost: formatCost(session.estimatedCost),\n tokens: session.totalTokens ?? '-',\n events: session.totalEvents ?? events.length,\n createdAt: formatDate(session.createdAt),\n completedAt: formatDate(session.completedAt),\n });\n\n if (session.failureReason) {\n process.stdout.write(`\\nFailure reason:\\n${indent(wrap(session.failureReason))}\\n`);\n }\n if (session.userInput) {\n process.stdout.write(`\\nInput:\\n${indent(wrap(session.userInput))}\\n`);\n }\n if (session.assistantOutput) {\n process.stdout.write(`\\nOutput:\\n${indent(wrap(session.assistantOutput))}\\n`);\n }\n\n if (events.length > 0) {\n process.stdout.write(`\\n${bold(ctx, 'Events')}\\n`);\n for (const event of events) {\n printEvent(event, ctx);\n }\n }\n}\n\nfunction printEvent(event: EventSummary, ctx: CliContext): void {\n const prefix = `#${event.sequenceNumber ?? '-'} ${event.eventType}`;\n const label =\n event.eventType === 'error' || hasMeaningfulValue(event.toolError)\n ? color(ctx, 'red', prefix)\n : color(ctx, 'cyan', prefix);\n process.stdout.write(`${label} ${formatDate(event.timestamp)}`);\n if (event.toolName) process.stdout.write(` tool=${event.toolName}`);\n if (event.estimatedCost) process.stdout.write(` cost=${formatCost(event.estimatedCost)}`);\n if (event.tokenCount) process.stdout.write(` tokens=${event.tokenCount}`);\n process.stdout.write('\\n');\n\n const summary = summarizeEvent(event);\n if (summary) process.stdout.write(`${indent(wrap(summary, 88))}\\n`);\n}\n\nfunction summarizeEvent(event: EventSummary): string {\n if (hasMeaningfulValue(event.toolError)) {\n return `Error: ${formatCompactJson(event.toolError)}`;\n }\n if (event.reasoning) {\n return event.reasoning;\n }\n if (hasMeaningfulValue(event.toolOutput)) {\n return `Output: ${formatCompactJson(event.toolOutput)}`;\n }\n if (hasMeaningfulValue(event.toolInput)) {\n return `Input: ${formatCompactJson(event.toolInput)}`;\n }\n return '';\n}\n\nfunction printKeyValues(values: Record<string, unknown>): void {\n const entries = Object.entries(values);\n const width = entries.reduce((max, [key]) => Math.max(max, key.length), 0);\n for (const [key, value] of entries) {\n process.stdout.write(`${key.padEnd(width)} ${String(value)}\\n`);\n }\n}\n\nfunction printJson(value: unknown): void {\n process.stdout.write(`${JSON.stringify(value, null, 2)}\\n`);\n}\n\ninterface TableColumn<T> {\n header: string;\n maxWidth: number;\n render: (row: T) => string;\n}\n\nfunction printTable<T>(rows: T[], columns: Array<TableColumn<T>>): void {\n const widths = columns.map((column) => {\n const max = Math.max(column.header.length, ...rows.map((row) => column.render(row).length));\n return Math.min(max, column.maxWidth);\n });\n\n const header = columns\n .map((column, index) => pad(truncate(column.header, widths[index]), widths[index]))\n .join(' ');\n const divider = widths.map((width) => '-'.repeat(width)).join(' ');\n process.stdout.write(`${header}\\n${divider}\\n`);\n\n for (const row of rows) {\n const line = columns\n .map((column, index) => pad(truncate(column.render(row), widths[index]), widths[index]))\n .join(' ');\n process.stdout.write(`${line}\\n`);\n }\n}\n\nfunction truncate(value: string, width: number): string {\n if (value.length <= width) return value;\n if (width <= 1) return value.slice(0, width);\n return `${value.slice(0, width - 1)}...`.slice(0, width);\n}\n\nfunction pad(value: string, width: number): string {\n return `${value}${' '.repeat(Math.max(0, width - value.length))}`;\n}\n\nfunction color(ctx: CliContext, name: 'cyan' | 'green' | 'red' | 'yellow', value: string): string {\n if (!ctx.color) return value;\n const codes = {\n cyan: 36,\n green: 32,\n red: 31,\n yellow: 33,\n };\n return `\\u001b[${codes[name]}m${value}\\u001b[0m`;\n}\n\nfunction bold(ctx: CliContext, value: string): string {\n return ctx.color ? `\\u001b[1m${value}\\u001b[0m` : value;\n}\n\nfunction severityLabel(ctx: CliContext, severity: DiagnoseFinding['severity']): string {\n if (severity === 'high') return color(ctx, 'red', '[high]');\n if (severity === 'medium') return color(ctx, 'yellow', '[medium]');\n if (severity === 'low') return color(ctx, 'cyan', '[low]');\n return '[info]';\n}\n\nfunction formatResult(success: boolean | null | undefined): string {\n if (success === true) return 'pass';\n if (success === false) return 'fail';\n return '-';\n}\n\nfunction formatNullableNumber(value: number | null | undefined): string {\n return typeof value === 'number' ? String(Math.round(value * 10) / 10) : '-';\n}\n\nfunction formatDuration(ms: number | null | undefined): string {\n if (typeof ms !== 'number') return '-';\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n return `${(ms / 60_000).toFixed(1)}m`;\n}\n\nfunction formatCost(cost: number | null | undefined): string {\n return typeof cost === 'number' ? `$${cost.toFixed(4)}` : '-';\n}\n\nfunction formatDate(value: string | null | undefined): string {\n if (!value) return '-';\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n return date.toISOString().replace('T', ' ').slice(0, 16);\n}\n\nfunction formatCompactJson(value: unknown): string {\n if (value === undefined) return '';\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction wrap(text: string, width = 92): string {\n const words = text.replace(/\\s+/g, ' ').trim().split(' ');\n const lines: string[] = [];\n let current = '';\n for (const word of words) {\n if (`${current} ${word}`.trim().length > width && current) {\n lines.push(current);\n current = word;\n } else {\n current = `${current} ${word}`.trim();\n }\n }\n if (current) lines.push(current);\n return lines.join('\\n');\n}\n\nfunction indent(text: string, spaces = 2): string {\n const prefix = ' '.repeat(spaces);\n return text\n .split('\\n')\n .map((line) => `${prefix}${line}`)\n .join('\\n');\n}\n\nexport async function run(argv: string[]): Promise<void> {\n const parsed = parseArgs(argv);\n const ctx = createContext(parsed.flags);\n const [command, ...rest] = parsed.positionals;\n\n if (getBooleanFlag(parsed.flags, 'version')) {\n process.stdout.write(`${CLI_VERSION}\\n`);\n return;\n }\n\n if (!command || getBooleanFlag(parsed.flags, 'help')) {\n process.stdout.write(HELP);\n return;\n }\n\n switch (command) {\n case 'install':\n await commandInstall(ctx, parsed.flags);\n break;\n case 'init':\n await commandInit(ctx, parsed.flags);\n break;\n case 'login':\n await commandLogin(ctx, parsed.flags);\n break;\n case 'sessions':\n await commandSessions(ctx, parsed.flags, rest);\n break;\n case 'events':\n await commandEvents(ctx, parsed.flags, rest);\n break;\n case 'signals':\n await commandSignals(ctx, parsed.flags, rest);\n break;\n case 'diagnose':\n await commandDiagnose(ctx, parsed.flags, rest[0]);\n break;\n case 'evaluate':\n await commandEvaluate(ctx, parsed.flags, rest[0]);\n break;\n case 'fix':\n case 'replay':\n commandReserved(command);\n break;\n default:\n throw new CliError(`Unknown command: ${command}. Run sentrial --help.`);\n }\n}\n\nif (process.env.SENTRIAL_CLI_SKIP_AUTO_RUN !== '1') {\n run(process.argv.slice(2)).catch((error: unknown) => {\n if (error instanceof CliError) {\n if (process.env.SENTRIAL_CLI_DEBUG) {\n process.stderr.write(`${error.stack ?? error.message}\\n`);\n } else {\n process.stderr.write(`Error: ${error.message}\\n`);\n }\n process.exitCode = error.exitCode;\n return;\n }\n\n process.stderr.write(\n `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\\n`\n );\n process.exitCode = 1;\n });\n}\n","/**\n * Shared SDK constants — single source so the client, OTLP transport, and CLI can't target\n * different endpoints if a path/URL changes.\n */\n\n/** Default Sentrial API base URL when neither a constructor arg nor SENTRIAL_API_URL is set. */\nexport const DEFAULT_API_URL = 'https://api.sentrial.com';\n\n/** OTLP traces ingest path, appended to the API base URL by the transport. */\nexport const OTEL_TRACES_PATH = '/api/otel/v1/traces';\n","{\n \"name\": \"@sentrial/sdk\",\n \"version\": \"0.5.0\",\n \"description\": \"Sentrial SDK for TypeScript/Node.js - AI agent observability and monitoring\",\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"sentrial\": \"./dist/cli.js\"\n },\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"typecheck\": \"tsc --noEmit\",\n \"lint\": \"eslint .\",\n \"test\": \"vitest run\",\n \"clean\": \"rm -rf dist\",\n \"prepublishOnly\": \"pnpm run build\"\n },\n \"keywords\": [\n \"sentrial\",\n \"ai\",\n \"agent\",\n \"observability\",\n \"monitoring\",\n \"llm\",\n \"tracing\",\n \"openai\",\n \"openai-agents\",\n \"anthropic\",\n \"vercel-ai-sdk\",\n \"google-adk\"\n ],\n \"dependencies\": {\n \"@opentelemetry/api\": \"^1.7.0\"\n },\n \"peerDependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \">=0.2.0 <1.0.0\",\n \"@google/adk\": \">=0.1.0 <2.0.0\",\n \"@openai/agents\": \">=0.1.0 <1.0.0\",\n \"ai\": \">=3.0.0 <8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"ai\": {\n \"optional\": true\n },\n \"@anthropic-ai/claude-agent-sdk\": {\n \"optional\": true\n },\n \"@google/adk\": {\n \"optional\": true\n },\n \"@openai/agents\": {\n \"optional\": true\n }\n },\n \"author\": \"Sentrial\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/sentrialdev/Sentrial.git\",\n \"directory\": \"packages/typescript-sdk\"\n },\n \"homepage\": \"https://sentrial.com\",\n \"bugs\": {\n \"url\": \"https://github.com/sentrialdev/Sentrial/issues\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"devDependencies\": {\n \"@sentrial/otlp\": \"workspace:*\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^4.1.11\"\n }\n}\n"],"mappings":"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","names":["path","os","process","readline","packageName"]}
|
|
1
|
+
{"version":3,"sources":["../src/cli.ts","../src/constants.ts","../src/cli-session-health.ts","../src/cli-dashboard.ts","../src/cli-doctor.ts","../src/cli-environment.ts","../src/cli-setup.ts","../src/cli-event-window.ts","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/external.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/helpers/util.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/ZodError.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/locales/en.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/errors.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/helpers/parseUtil.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/helpers/errorUtil.js","../../../../../../../Sentrial-experiment-exposure-ledger/node_modules/zod/v3/types.js","../../api-contracts/investigation.ts","../../investigation-mcp/src/client.ts","../src/cli-investigate.ts","../src/demo/insurance.json","../src/cli-demo.ts","../package.json"],"sourcesContent":["#!/usr/bin/env node\n\nimport { chmodSync, existsSync, lstatSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';\nimport { spawn, spawnSync } from 'node:child_process';\nimport os from 'node:os';\nimport path from 'node:path';\nimport process from 'node:process';\nimport readline from 'node:readline/promises';\nimport { Writable } from 'node:stream';\n\nimport { DEFAULT_API_URL } from './constants.js';\nimport { runDoctor } from './cli-doctor.js';\nimport { defaultPythonCommand, inspectEnvironment } from './cli-environment.js';\nimport { runSetup } from './cli-setup.js';\nimport { eventWindow, eventWindowText, skippedEventWindow } from './cli-event-window.js';\nimport { runInvestigation, renderInvestigation } from './cli-investigate.js';\nimport {\n INSURANCE_SCENARIOS,\n insuranceDemo,\n renderInsuranceDemo,\n type InsuranceScenario,\n} from './cli-demo.js';\n// Named JSON import (no `with { type: 'json' }` attribute — that routes esbuild through the\n// spec-ESM path which exposes only a default export) so tsup/esbuild tree-shakes the manifest down\n// to just `version` rather than inlining the entire package.json (scripts, devDependencies, …).\nimport { version as CLI_VERSION } from '../package.json';\nconst CONFIG_DIR = path.join(os.homedir(), '.sentrial');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');\nconst TIME_RANGES = new Set(['24h', '3d', '7d', '30d']);\n\ntype FlagValue = string | boolean | undefined;\n\ninterface ParsedArgs {\n flags: Record<string, FlagValue>;\n positionals: string[];\n}\n\ninterface StoredConfig {\n apiKey?: string;\n apiUrl?: string;\n}\n\ninterface CliContext {\n apiKey?: string;\n apiUrl: string;\n json: boolean;\n color: boolean;\n}\n\ninterface ApiEnvelope<T> {\n data: T;\n meta?: Record<string, unknown>;\n}\n\n// The CLI parses raw V1 API responses; reuse the canonical wire-response types\n// from ./types instead of re-declaring them here so they can't drift (#489).\nimport type { SessionResponse as SessionSummary, EventResponse as EventSummary } from './types.js';\n\ninterface SignalSummary {\n id: string;\n name: string;\n type: string;\n source?: string | null;\n count: number;\n affectedSessions: number;\n affectedUsers: number;\n description?: string | null;\n createdAt?: string | null;\n}\n\ninterface DiagnoseFinding {\n severity: 'high' | 'medium' | 'low' | 'info';\n title: string;\n detail: string;\n}\n\ninterface InstallPlan {\n language: 'typescript' | 'python';\n framework?: string;\n command: string;\n args: string[];\n packageName: string;\n}\n\nexport class CliError extends Error {\n readonly exitCode: number;\n\n constructor(message: string, exitCode = 1) {\n super(message);\n this.name = 'CliError';\n this.exitCode = exitCode;\n }\n}\n\nconst SHORT_FLAGS: Record<string, string> = {\n a: 'agent',\n f: 'force',\n h: 'help',\n j: 'json',\n l: 'last',\n s: 'status',\n t: 'type',\n v: 'version',\n y: 'yes',\n};\n\nconst BOOLEAN_FLAGS = new Set([\n 'force',\n 'help',\n 'include-api-key',\n 'json',\n 'dry-run',\n 'non-interactive',\n 'version',\n 'yes',\n]);\n\nconst HELP = `Sentrial CLI\n\nUsage:\n sentrial <command> [options]\n\nCommands:\n demo insurance Explore a recorded failure and repair offline (no key required)\n investigate <operation> Read saved decisions/evidence with a scoped investigation key\n setup Guide SDK installation and check workspace access\n install Install the SDK package and scaffold integration files\n init Scaffold a safe example integration in this repo\n login Save an API key for future CLI calls\n doctor Check project, API read access and workspace without sending traces\n sessions list List recent sessions\n sessions get <id> Show a session and one event page with coverage metadata\n events list <session-id> List events for a session\n signals list List detected signals\n diagnose <session-id> Check event-level heuristics on one event page (no model call)\n evaluate <experiment-id> Run the /api/v1/evaluate CI gate (API key needs the metrics:read scope)\n fix <session-id> Reserved for the upcoming Fixer API\n replay <session-id> Reserved for the upcoming replay API\n\nGlobal options:\n --api-key <key> API key, otherwise SENTRIAL_API_KEY or ~/.sentrial/config.json\n --api-url <url> API URL, otherwise SENTRIAL_API_URL or ${DEFAULT_API_URL}\n --json Emit machine-readable JSON\n --no-color Disable ANSI color\n --session <id> With doctor/setup, verify an existing session's delivery (read only)\n --dashboard-url <origin> Dashboard origin for a custom API (or SENTRIAL_DASHBOARD_URL)\n --events-limit <count> Event page size for sessions get/diagnose (default 100, max 1000)\n --events-offset <count> Event page offset for sessions get/diagnose (default 0)\n --event-type <type> Event filter for sessions get/diagnose (default all)\n --scenario <name> With demo insurance: rejected, healthy, retry, pending,\n committed-timeout or missing-documents (default rejected)\n -h, --help Show help\n -v, --version Show version\n\nExamples:\n sentrial demo insurance\n sentrial demo insurance --scenario pending --json\n sentrial investigate items --session-id <session-uuid> --json\n sentrial investigate item --id <evaluation-item-uuid> --json\n sentrial setup\n sentrial setup --dry-run --json\n sentrial setup --non-interactive --yes --workspace <organization-uuid> --json\n sentrial doctor --session <session-uuid> --workspace <organization-uuid> --json\n sentrial login --api-key sentrial_live_xxx\n sentrial install\n sentrial init\n sentrial sessions list --last 7d --status failed --agent support\n sentrial sessions get 00000000-0000-0000-0000-000000000000\n sentrial events list 00000000-0000-0000-0000-000000000000 --type tool_call\n sentrial signals list --type negative --last 30d\n sentrial diagnose 00000000-0000-0000-0000-000000000000\n sentrial evaluate 00000000-0000-0000-0000-000000000000 --min-score 80\n\nInvestigation operations (SENTRIAL_INVESTIGATION_KEY; no saved SDK-key fallback):\n sessions --agent-id, --status, --limit, --cursor\n session --id <session-uuid>\n items --session-id, --agent-id, --signal-id, --limit, --cursor\n item --id <evaluation-item-uuid>\n predictions / evidence --item-id <uuid>, --limit, --cursor\n evidence-content --item-id <uuid>, --index <record-index>, --offset\n Lists default to 20, maximum 50; follow cursors with the same filters.\n Reads are bounded to 15 seconds and 32 KiB each. --json preserves the API envelope.\n`;\n\nexport function parseArgs(argv: string[]): ParsedArgs {\n const flags: Record<string, FlagValue> = {};\n const positionals: string[] = [];\n\n for (let i = 0; i < argv.length; i++) {\n const token = argv[i];\n if (token === '--') {\n positionals.push(...argv.slice(i + 1));\n break;\n }\n\n if (token.startsWith('--no-')) {\n flags[token.slice(5)] = false;\n continue;\n }\n\n if (token.startsWith('--')) {\n const [rawName, inlineValue] = token.slice(2).split('=', 2);\n if (inlineValue !== undefined) {\n flags[rawName] = inlineValue;\n } else if (BOOLEAN_FLAGS.has(rawName)) {\n flags[rawName] = true;\n } else {\n const next = argv[i + 1];\n if (next && !next.startsWith('-')) {\n flags[rawName] = next;\n i++;\n } else {\n flags[rawName] = true;\n }\n }\n continue;\n }\n\n if (token.startsWith('-') && token.length === 2) {\n const mapped = SHORT_FLAGS[token.slice(1)];\n if (!mapped) {\n throw new CliError(`Unknown flag: ${token}`);\n }\n if (BOOLEAN_FLAGS.has(mapped)) {\n flags[mapped] = true;\n } else {\n const next = argv[i + 1];\n if (!next || next.startsWith('-')) {\n throw new CliError(`Flag ${token} requires a value`);\n }\n flags[mapped] = next;\n i++;\n }\n continue;\n }\n\n positionals.push(token);\n }\n\n return { flags, positionals };\n}\n\nfunction getFlag(flags: Record<string, FlagValue>, ...names: string[]): FlagValue {\n for (const name of names) {\n if (flags[name] !== undefined) return flags[name];\n }\n return undefined;\n}\n\nfunction getStringFlag(flags: Record<string, FlagValue>, ...names: string[]): string | undefined {\n const value = getFlag(flags, ...names);\n if (typeof value === 'string') return value;\n return undefined;\n}\n\nfunction getBooleanFlag(flags: Record<string, FlagValue>, name: string): boolean {\n return flags[name] === true;\n}\n\nfunction readConfig(): StoredConfig {\n if (!existsSync(CONFIG_FILE)) return {};\n\n try {\n const parsed = JSON.parse(readFileSync(CONFIG_FILE, 'utf8')) as StoredConfig;\n if (!parsed || typeof parsed !== 'object') return {};\n return {\n ...(typeof parsed.apiKey === 'string' ? { apiKey: parsed.apiKey } : {}),\n ...(typeof parsed.apiUrl === 'string' ? { apiUrl: parsed.apiUrl } : {}),\n };\n } catch {\n return {};\n }\n}\n\nfunction writeConfig(config: StoredConfig): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n writeFileSync(CONFIG_FILE, `${JSON.stringify(config, null, 2)}\\n`, { mode: 0o600 });\n try {\n chmodSync(CONFIG_FILE, 0o600);\n } catch {\n // Best effort only; some filesystems do not support chmod.\n }\n}\n\nfunction createContext(flags: Record<string, FlagValue>): CliContext {\n const config = readConfig();\n const apiKey = getStringFlag(flags, 'api-key') ?? process.env.SENTRIAL_API_KEY ?? config.apiKey;\n const apiUrl = (\n getStringFlag(flags, 'api-url') ??\n process.env.SENTRIAL_API_URL ??\n config.apiUrl ??\n DEFAULT_API_URL\n ).replace(/\\/$/, '');\n\n return {\n apiKey,\n apiUrl,\n json: getBooleanFlag(flags, 'json'),\n color: flags.color !== false && process.stdout.isTTY && !process.env.NO_COLOR,\n };\n}\n\nfunction requireApiKey(ctx: CliContext): string {\n if (!ctx.apiKey) {\n throw new CliError(\n 'Missing API key. Run `sentrial login --api-key sentrial_live_xxx` or set SENTRIAL_API_KEY.'\n );\n }\n return ctx.apiKey;\n}\n\nasync function apiRequest<T>(\n ctx: CliContext,\n apiPath: string,\n options: {\n method?: 'GET' | 'POST';\n query?: Record<string, string | number | boolean | undefined>;\n body?: unknown;\n } = {}\n): Promise<T> {\n const apiKey = requireApiKey(ctx);\n const url = new URL(apiPath, `${ctx.apiUrl}/`);\n\n for (const [key, value] of Object.entries(options.query ?? {})) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n\n const headers: Record<string, string> = {\n Authorization: `Bearer ${apiKey}`,\n Accept: 'application/json',\n };\n\n if (options.body !== undefined) {\n headers['Content-Type'] = 'application/json';\n }\n\n let response: Response;\n try {\n response = await fetch(url, {\n method: options.method ?? 'GET',\n headers,\n body: options.body === undefined ? undefined : JSON.stringify(options.body),\n });\n } catch (error) {\n throw new CliError(\n `Could not reach ${ctx.apiUrl}. ${error instanceof Error ? error.message : String(error)}`\n );\n }\n\n const text = await response.text();\n const parsed = parseResponseBody(text);\n\n if (!response.ok) {\n throw new CliError(\n `${options.method ?? 'GET'} ${url.pathname} failed (${response.status}): ${formatApiError(\n parsed\n )}`,\n response.status === 404 ? 4 : 1\n );\n }\n\n return parsed as T;\n}\n\nfunction parseResponseBody(text: string): unknown {\n if (!text.trim()) return {};\n try {\n return JSON.parse(text);\n } catch {\n return text;\n }\n}\n\nfunction formatApiError(value: unknown): string {\n if (value && typeof value === 'object') {\n const record = value as Record<string, unknown>;\n if (typeof record.error === 'string') return record.error;\n if (record.error && typeof record.error === 'object') {\n const error = record.error as Record<string, unknown>;\n if (typeof error.message === 'string') return error.message;\n }\n }\n return typeof value === 'string' ? value : 'Unexpected API response';\n}\n\nasync function commandLogin(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n let apiKey = getStringFlag(flags, 'api-key') ?? process.env.SENTRIAL_API_KEY;\n const apiUrl = getStringFlag(flags, 'api-url') ?? process.env.SENTRIAL_API_URL ?? ctx.apiUrl;\n\n if (!apiKey) {\n if (!process.stdin.isTTY) {\n throw new CliError('Pass --api-key or set SENTRIAL_API_KEY when stdin is not interactive.');\n }\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n apiKey = (await rl.question('Sentrial API key: ')).trim();\n rl.close();\n }\n\n if (!apiKey.startsWith('sentrial_')) {\n throw new CliError('API keys should look like sentrial_live_xxx or sentrial_test_xxx.');\n }\n\n writeConfig({ apiKey, apiUrl });\n\n if (ctx.json) {\n printJson({ ok: true, configPath: CONFIG_FILE, apiUrl });\n return;\n }\n\n process.stdout.write(`Saved credentials to ${CONFIG_FILE}\\n`);\n}\n\nasync function commandInstall(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n try {\n await performInstall(ctx, flags);\n } catch (error) {\n if (ctx.json && !(error instanceof InstallFailure)) {\n printJson({\n schemaVersion: 'sentrial-install-v1',\n command: 'install',\n status: 'failed',\n stage: 'preflight',\n code: 'INSTALL_PLAN_FAILED',\n partialChangesMayExist: false,\n connectionVerified: false,\n remediation:\n 'Check project access and --language (typescript or python). No package manager was started.',\n });\n throw new CliError('Installation planning failed; see the JSON result.');\n }\n throw error;\n }\n}\n\nasync function commandSetup(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n const root = process.cwd();\n let plan: InstallPlan;\n try {\n plan = buildInstallPlan(\n root,\n getStringFlag(flags, 'language'),\n getStringFlag(flags, 'python'),\n getStringFlag(flags, 'sdk-package') ?? process.env.SENTRIAL_SDK_PACKAGE\n );\n } catch {\n if (ctx.json)\n printJson({\n schemaVersion: 'sentrial-setup-v1',\n command: 'setup',\n status: 'needs_attention',\n stage: 'plan',\n code: 'INVALID_PROJECT_OR_LANGUAGE',\n partialChangesMayExist: false,\n });\n throw new CliError(\n 'Setup planning failed. Check the project and --language (typescript or python).'\n );\n }\n const interactive =\n !ctx.json &&\n !getBooleanFlag(flags, 'non-interactive') &&\n !!process.stdin.isTTY &&\n !!process.stderr.isTTY;\n const project = { ...detectProject(root), language: plan.language };\n const progress = (line: string) => process.stderr.write(`${line}\\n`);\n const timeout = getFlag(flags, 'timeout-ms');\n const workspace = getFlag(flags, 'workspace');\n const report = await runSetup(\n {\n dryRun: getBooleanFlag(flags, 'dry-run'),\n yes: getBooleanFlag(flags, 'yes'),\n interactive,\n apiKey: ctx.apiKey,\n },\n {\n plan,\n wouldWrite: plannedScaffoldFiles(root, plan.language),\n confirm: async () => {\n progress(`Sentrial setup · ${plan.framework ?? plan.language}`);\n progress(`Install if needed: ${formatCommand(plan.command, plan.args)}`);\n progress(\n getBooleanFlag(flags, 'force')\n ? 'Overwrite existing example files (--force). Package manifests and lockfiles may change.'\n : 'Create example files; existing files are preserved. Package manifests and lockfiles may change.'\n );\n progress('Setup checks workspace read access. It does not send traces or run models.');\n return /^(y|yes)$/i.test((await askSetupInput('Continue? [y/N] ')).trim());\n },\n readKey: async () => {\n progress('Paste your Sentrial API key. Input is hidden and is not saved.');\n try {\n return (await askSetupInput('', true)).trim();\n } finally {\n progress('');\n }\n },\n diagnose: async (apiKey, installed) =>\n runDoctor({\n apiKey,\n apiUrl: ctx.apiUrl,\n dashboardUrl:\n getFlag(flags, 'dashboard-url') === undefined\n ? process.env.SENTRIAL_DASHBOARD_URL\n : String(getFlag(flags, 'dashboard-url')),\n project,\n workspaceId: workspace === undefined ? undefined : String(workspace),\n sessionId:\n getFlag(flags, 'session') !== undefined ? String(getFlag(flags, 'session')) : undefined,\n timeoutMs:\n timeout === undefined ? undefined : typeof timeout === 'string' ? Number(timeout) : NaN,\n environmentChecks: installed\n ? inspectEnvironment(root, plan.language, getStringFlag(flags, 'python'))\n : [],\n }),\n sdkPresent: () =>\n inspectEnvironment(root, plan.language, getStringFlag(flags, 'python')).some(\n (c) =>\n c.id === `dependency:${plan.language === 'python' ? 'sentrial' : '@sentrial/sdk'}` &&\n c.status === 'pass'\n ),\n install: async () => {\n progress(`Installing ${plan.packageName}…`);\n await runSubprocess(plan.command, plan.args, root, { json: true, nonInteractive: true });\n },\n scaffold: (apiKey) =>\n scaffoldProject(\n { ...ctx, apiKey },\n { ...flags, language: plan.language, 'include-api-key': false }\n ),\n }\n );\n if (ctx.json) printJson(report);\n else {\n process.stdout.write(\n `${report.status === 'ready_for_instrumentation' ? 'Ready to instrument your agent.' : report.status.replaceAll('_', ' ')}\\n`\n );\n if (report.status === 'planned')\n process.stdout.write(\n `Install: ${formatCommand(plan.command, plan.args)}\\nFiles: ${report.wouldWrite.map((file) => path.relative(root, file)).join(', ')}\\n`\n );\n if (report.diagnostics?.workspaceId)\n process.stdout.write(`Workspace: ${report.diagnostics.workspaceId}\\n`);\n for (const check of report.diagnostics?.checks ?? [])\n if (check.status === 'fail')\n process.stdout.write(`${check.message}\\n ${check.remediation ?? ''}\\n`);\n for (const file of report.written)\n process.stdout.write(`Created/updated: ${path.relative(root, file)}\\n`);\n for (const file of report.skipped)\n process.stdout.write(`Preserved: ${path.relative(root, file)}\\n`);\n for (const step of report.nextSteps) process.stdout.write(` ${step}\\n`);\n }\n if (\n !['planned', 'cancelled', 'ready_for_instrumentation', 'trace_verified'].includes(report.status)\n )\n process.exitCode = 1;\n}\n\nfunction askSetupInput(question: string, hidden = false): Promise<string> {\n // Suppress secret echo and make both Ctrl-C and EOF explicit cancellations.\n // readline's default close can otherwise leave a pending question and exit 0.\n const silent = new Writable({\n write(_chunk, _encoding, callback) {\n callback();\n },\n });\n const rl = readline.createInterface({\n input: process.stdin,\n output: hidden ? silent : process.stderr,\n terminal: true,\n });\n return new Promise((resolve, reject) => {\n let settled = false;\n const finish = (value?: string) => {\n if (settled) return;\n settled = true;\n rl.close();\n silent.end();\n if (value === undefined)\n reject(new CliError('Setup cancelled. No credential was saved.', 130));\n else resolve(value);\n };\n rl.once('SIGINT', () => finish());\n rl.once('close', () => finish());\n rl.question(question).then(\n (value) => finish(value),\n () => finish()\n );\n });\n}\n\nclass InstallFailure extends CliError {}\n\nasync function performInstall(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n const projectRoot = process.cwd();\n const requestedLanguage = getStringFlag(flags, 'language');\n const pythonCommand = getStringFlag(flags, 'python');\n const packageOverride = getStringFlag(flags, 'sdk-package') ?? process.env.SENTRIAL_SDK_PACKAGE;\n const plan = buildInstallPlan(projectRoot, requestedLanguage, pythonCommand, packageOverride);\n const dryRun = getBooleanFlag(flags, 'dry-run');\n\n if (ctx.json && dryRun) {\n printJson({\n schemaVersion: 'sentrial-install-v1',\n command: 'install',\n status: 'planned',\n dryRun: true,\n plan,\n wouldWrite: plannedScaffoldFiles(projectRoot, plan.language),\n });\n return;\n }\n\n const progress = ctx.json ? process.stderr : process.stdout;\n progress.write(`Detected: ${plan.framework ?? plan.language}\\n`);\n progress.write(`Install: ${formatCommand(plan.command, plan.args)}\\n`);\n\n if (dryRun) {\n process.stdout.write('Dry run only. No files were changed.\\n');\n return;\n }\n\n let stage: 'package_install' | 'scaffold' = 'package_install';\n try {\n await runSubprocess(plan.command, plan.args, projectRoot, {\n json: ctx.json,\n nonInteractive: ctx.json || getBooleanFlag(flags, 'non-interactive') || !process.stdin.isTTY,\n });\n stage = 'scaffold';\n if (ctx.json) {\n const scaffold = scaffoldProject(ctx, flags);\n printJson({\n schemaVersion: 'sentrial-install-v1',\n command: 'install',\n status: 'completed',\n dryRun: false,\n plan,\n ...scaffold,\n connectionVerified: false,\n nextSteps: [\n 'Configure the example in your agent.',\n 'Run sentrial doctor to check API read access.',\n 'Send and inspect a run to verify telemetry delivery.',\n ],\n });\n } else {\n await commandInit(ctx, flags);\n }\n } catch (error) {\n if (ctx.json) {\n printJson({\n schemaVersion: 'sentrial-install-v1',\n command: 'install',\n status: 'failed',\n dryRun: false,\n stage,\n code: stage === 'package_install' ? 'PACKAGE_INSTALL_FAILED' : 'SCAFFOLD_FAILED',\n packageInstalled: stage === 'scaffold',\n connectionVerified: false,\n partialChangesMayExist: true,\n remediation:\n 'Inspect package-manager output on stderr and existing files before rerunning. Existing scaffold files are preserved without --force.',\n });\n throw new InstallFailure(\n 'Installation did not complete; see the JSON result and package-manager output.'\n );\n }\n throw error;\n }\n}\n\nfunction scaffoldProject(ctx: CliContext, flags: Record<string, FlagValue>) {\n const projectRoot = process.cwd();\n const detected = detectProject(projectRoot);\n const requestedLanguage = getStringFlag(flags, 'language');\n const language = requestedLanguage ?? detected.language ?? 'typescript';\n const force = getBooleanFlag(flags, 'force');\n const includeApiKey = getBooleanFlag(flags, 'include-api-key');\n\n if (language !== 'typescript' && language !== 'python') {\n throw new CliError('Supported init languages are \"typescript\" and \"python\".');\n }\n\n const files: Array<{ path: string; content: string; secret?: boolean }> =\n language === 'python'\n ? [\n {\n path: path.join(projectRoot, 'sentrial.example.py'),\n content: pythonExample(),\n },\n ]\n : [\n {\n path: path.join(projectRoot, 'sentrial.example.ts'),\n content: typescriptExample(),\n },\n ];\n\n // .env.sentrial.example is conventionally committed to git, so it must NEVER contain a\n // real key — always the placeholder (#497).\n files.push({\n path: path.join(projectRoot, '.env.sentrial.example'),\n content: `SENTRIAL_API_KEY=sentrial_live_xxx\\nSENTRIAL_API_URL=${ctx.apiUrl}\\n`,\n });\n\n // --include-api-key bakes the caller's real key into the GITIGNORED .env.sentrial (a real\n // env file), not the committable .example — so the live key never lands in version control.\n if (includeApiKey && ctx.apiKey) {\n if (/[\\r\\n]/.test(ctx.apiKey) || /[\\r\\n]/.test(ctx.apiUrl)) {\n throw new CliError('Credentials and API URL must contain no line breaks.');\n }\n files.push({\n path: path.join(projectRoot, '.env.sentrial'),\n content: `SENTRIAL_API_KEY=${ctx.apiKey}\\nSENTRIAL_API_URL=${ctx.apiUrl}\\n`,\n secret: true,\n });\n }\n\n const written: string[] = [];\n const skipped: string[] = [];\n\n if (includeApiKey && ctx.apiKey) {\n const ignorePath = path.join(projectRoot, '.gitignore');\n if (lstatSync(ignorePath, { throwIfNoEntry: false })?.isSymbolicLink()) {\n throw new CliError(\n 'Refusing to edit a symlinked .gitignore; configure credentials manually.'\n );\n }\n if (\n spawnSync('git', ['ls-files', '--error-unmatch', '--', '.env.sentrial'], {\n cwd: projectRoot,\n stdio: 'ignore',\n timeout: 5_000,\n }).status === 0\n ) {\n throw new CliError(\n '.env.sentrial is tracked by Git; keep the API key in the environment instead.'\n );\n }\n const previous = existsSync(ignorePath) ? readFileSync(ignorePath, 'utf8') : '';\n // Append an anchored final rule so an earlier negation cannot expose this file.\n if (previous.trimEnd().split('\\n').at(-1) !== '/.env.sentrial') {\n writeFileSync(\n ignorePath,\n `${previous}${previous && !previous.endsWith('\\n') ? '\\n' : ''}/.env.sentrial\\n`\n );\n written.push(ignorePath);\n }\n }\n\n for (const file of files) {\n if (lstatSync(file.path, { throwIfNoEntry: false })?.isSymbolicLink()) {\n throw new CliError('Refusing to overwrite a symlinked scaffold file.');\n }\n if (existsSync(file.path) && !force) {\n skipped.push(file.path);\n continue;\n }\n if (file.secret && existsSync(file.path)) chmodSync(file.path, 0o600);\n writeFileSync(file.path, file.content, {\n mode: file.secret ? 0o600 : 0o644,\n flag: force ? 'w' : 'wx',\n });\n written.push(file.path);\n }\n\n const installCommand =\n language === 'python'\n ? 'pip install sentrial'\n : `${detectPackageManager(projectRoot)} add @sentrial/sdk`;\n\n return { detected, language, installCommand, written, skipped };\n}\n\nasync function commandInit(ctx: CliContext, flags: Record<string, FlagValue>): Promise<void> {\n const result = scaffoldProject(ctx, flags);\n const { detected, language, installCommand, written, skipped } = result;\n const projectRoot = process.cwd();\n\n if (ctx.json) {\n printJson(result);\n return;\n }\n\n process.stdout.write(`Detected: ${detected.framework ?? language}\\n`);\n process.stdout.write(`Install: ${installCommand}\\n`);\n if (written.length > 0) {\n process.stdout.write(\n `Written:\\n${written.map((file) => ` ${path.relative(projectRoot, file)}`).join('\\n')}\\n`\n );\n }\n if (skipped.length > 0) {\n process.stdout.write(\n `Skipped existing files:\\n${skipped.map((file) => ` ${path.relative(projectRoot, file)}`).join('\\n')}\\n`\n );\n }\n}\n\nasync function commandSessions(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n rest: string[]\n): Promise<void> {\n const subcommand = rest[0];\n if (subcommand === 'list') {\n await commandSessionsList(ctx, flags);\n return;\n }\n if (subcommand === 'get') {\n const sessionId = rest[1];\n if (!sessionId) throw new CliError('Usage: sentrial sessions get <id>');\n await commandSessionsGet(ctx, flags, sessionId);\n return;\n }\n throw new CliError('Usage: sentrial sessions <list|get>');\n}\n\nasync function commandSessionsList(\n ctx: CliContext,\n flags: Record<string, FlagValue>\n): Promise<void> {\n const query = buildTimeQuery(flags);\n const agentFilter = getStringFlag(flags, 'agent')?.toLowerCase();\n const hasExplicitLimit = getStringFlag(flags, 'limit') !== undefined;\n query.status = getStringFlag(flags, 'status') ?? 'all';\n query.limit = parseIntegerFlag(flags, 'limit', agentFilter && !hasExplicitLimit ? 500 : 50);\n query.offset = parseIntegerFlag(flags, 'offset', 0);\n\n const response = await apiRequest<ApiEnvelope<SessionSummary[]>>(ctx, '/api/v1/sessions', {\n query,\n });\n\n const sessions = agentFilter\n ? response.data.filter((session) =>\n `${session.agentName ?? ''} ${session.agentSlug ?? ''}`.toLowerCase().includes(agentFilter)\n )\n : response.data;\n\n if (ctx.json) {\n printJson({ data: sessions, meta: response.meta });\n return;\n }\n\n if (sessions.length === 0) {\n process.stdout.write('No sessions found.\\n');\n return;\n }\n\n printTable(sessions, [\n { header: 'ID', render: (s) => s.id, maxWidth: 36 },\n { header: 'Agent', render: (s) => s.agentName ?? s.agentSlug ?? '-', maxWidth: 18 },\n { header: 'Status', render: (s) => s.status ?? '-', maxWidth: 10 },\n { header: 'Result', render: (s) => formatResult(s.success), maxWidth: 8 },\n { header: 'Score', render: (s) => formatNullableNumber(s.score), maxWidth: 6 },\n { header: 'Dur', render: (s) => formatDuration(s.durationMs), maxWidth: 8 },\n { header: 'Cost', render: (s) => formatCost(s.estimatedCost), maxWidth: 10 },\n { header: 'Created', render: (s) => formatDate(s.createdAt), maxWidth: 16 },\n { header: 'Name', render: (s) => s.name ?? '-', maxWidth: 28 },\n ]);\n\n if (agentFilter) {\n process.stdout.write(`\\nFiltered locally by agent: ${agentFilter}\\n`);\n }\n}\n\nasync function commandSessionsGet(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n sessionId: string\n): Promise<void> {\n const sessionResponse = await apiRequest<ApiEnvelope<SessionSummary>>(\n ctx,\n `/api/v1/sessions/${sessionId}`\n );\n const includeEvents = flags.events !== false;\n const page = includeEvents ? await fetchSessionEvents(ctx, flags, sessionId) : null;\n const events = page?.data ?? [];\n const window = page?.window ?? skippedEventWindow();\n\n if (ctx.json) {\n printJson({ data: sessionResponse.data, events, eventWindow: window });\n return;\n }\n\n printSession(sessionResponse.data, events, ctx);\n process.stdout.write(`\\n${eventWindowText(window, '--events-offset')}`);\n}\n\nasync function fetchSessionEvents(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n sessionId: string\n) {\n const eventType = getStringFlag(flags, 'event-type') ?? 'all';\n const limit = parseIntegerFlag(flags, 'events-limit', 100);\n const offset = parseIntegerFlag(flags, 'events-offset', 0);\n const response = await apiRequest<ApiEnvelope<EventSummary[]>>(\n ctx,\n `/api/v1/sessions/${sessionId}/events`,\n {\n query: {\n limit,\n offset,\n eventType,\n },\n }\n );\n return {\n data: response.data,\n window: eventWindow(\n { sessionId, limit, offset, eventType },\n response.data.length,\n response.meta\n ),\n };\n}\n\nasync function commandEvents(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n rest: string[]\n): Promise<void> {\n const subcommand = rest[0] ?? 'list';\n if (subcommand !== 'list') {\n throw new CliError('Usage: sentrial events list <session-id>');\n }\n\n const sessionId = rest[1] ?? getStringFlag(flags, 'session', 'session-id');\n if (!sessionId) {\n throw new CliError('Usage: sentrial events list <session-id>');\n }\n\n const eventType = getStringFlag(flags, 'type', 'event-type') ?? 'all';\n const limit = parseIntegerFlag(flags, 'limit', 100);\n const offset = parseIntegerFlag(flags, 'offset', 0);\n const response = await apiRequest<ApiEnvelope<EventSummary[]>>(\n ctx,\n `/api/v1/sessions/${sessionId}/events`,\n {\n query: {\n limit,\n offset,\n eventType,\n },\n }\n );\n const window = eventWindow(\n { sessionId, limit, offset, eventType },\n response.data.length,\n response.meta\n );\n\n if (ctx.json) {\n printJson({ ...response, eventWindow: window });\n return;\n }\n\n if (response.data.length === 0) {\n process.stdout.write('No events returned in this page.\\n');\n process.stdout.write(eventWindowText(window, '--offset'));\n return;\n }\n\n process.stdout.write(`${bold(ctx, 'Events')} ${sessionId}\\n`);\n for (const event of response.data) {\n printEvent(event, ctx);\n }\n process.stdout.write(`\\n${eventWindowText(window, '--offset')}`);\n}\n\nasync function commandSignals(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n rest: string[]\n): Promise<void> {\n const subcommand = rest[0] ?? 'list';\n if (subcommand !== 'list') {\n throw new CliError('Usage: sentrial signals list');\n }\n\n const query = buildTimeQuery(flags);\n query.type = getStringFlag(flags, 'type') ?? 'all';\n query.source = getStringFlag(flags, 'source') ?? 'all';\n\n const response = await apiRequest<ApiEnvelope<SignalSummary[]>>(ctx, '/api/v1/signals', {\n query,\n });\n\n if (ctx.json) {\n printJson(response);\n return;\n }\n\n if (response.data.length === 0) {\n process.stdout.write('No signals found.\\n');\n return;\n }\n\n printTable(response.data, [\n { header: 'Name', render: (s) => s.name, maxWidth: 28 },\n { header: 'Type', render: (s) => s.type, maxWidth: 10 },\n { header: 'Source', render: (s) => s.source ?? '-', maxWidth: 12 },\n { header: 'Count', render: (s) => String(s.count), maxWidth: 8 },\n { header: 'Sessions', render: (s) => String(s.affectedSessions), maxWidth: 10 },\n { header: 'Users', render: (s) => String(s.affectedUsers), maxWidth: 8 },\n { header: 'Created', render: (s) => formatDate(s.createdAt), maxWidth: 16 },\n { header: 'Description', render: (s) => s.description ?? '-', maxWidth: 36 },\n ]);\n}\n\nasync function commandDiagnose(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n sessionId: string | undefined\n): Promise<void> {\n if (!sessionId) throw new CliError('Usage: sentrial diagnose <session-id>');\n\n const sessionResponse = await apiRequest<ApiEnvelope<SessionSummary>>(\n ctx,\n `/api/v1/sessions/${sessionId}`\n );\n const page = await fetchSessionEvents(ctx, flags, sessionId);\n const findings = diagnoseSession(sessionResponse.data, page.data);\n\n if (ctx.json) {\n printJson({\n schemaVersion: 'sentrial-diagnosis-v1',\n session: sessionResponse.data,\n analysis: { kind: 'event_heuristics', businessOutcome: 'not_evaluated' },\n eventWindow: page.window,\n findings,\n });\n return;\n }\n\n process.stdout.write(`${bold(ctx, 'Diagnosis')}\\n`);\n process.stdout.write(`Session: ${sessionResponse.data.id}\\n`);\n process.stdout.write(\n `Agent: ${sessionResponse.data.agentName ?? sessionResponse.data.agentSlug ?? '-'}\\n`\n );\n process.stdout.write(\n `Status: ${sessionResponse.data.status ?? '-'} (${formatResult(sessionResponse.data.success)})\\n`\n );\n if (sessionResponse.data.failureReason) {\n process.stdout.write(`Failure: ${sessionResponse.data.failureReason}\\n`);\n }\n process.stdout.write('\\n');\n process.stdout.write(eventWindowText(page.window, '--events-offset'));\n process.stdout.write(\n 'Event heuristics only. Business success and signal policies were not evaluated.\\n\\n'\n );\n\n if (findings.length === 0) {\n process.stdout.write('No heuristic findings in the retrieved events.\\n');\n return;\n }\n\n for (const finding of findings) {\n process.stdout.write(`${severityLabel(ctx, finding.severity)} ${finding.title}\\n`);\n process.stdout.write(` ${finding.detail}\\n`);\n }\n}\n\nasync function commandEvaluate(\n ctx: CliContext,\n flags: Record<string, FlagValue>,\n experimentId: string | undefined\n): Promise<void> {\n const resolvedExperimentId = experimentId ?? getStringFlag(flags, 'experiment', 'experiment-id');\n if (!resolvedExperimentId) {\n throw new CliError('Usage: sentrial evaluate <experiment-id> [--min-score 80]');\n }\n\n const body = {\n experimentId: resolvedExperimentId,\n baselineExperimentId: getStringFlag(flags, 'baseline', 'baseline-experiment-id'),\n thresholds: {\n minScore: parseOptionalNumberFlag(flags, 'min-score'),\n failOnRegression: flags['fail-on-regression'] === false ? false : undefined,\n maxRegressionPercent: parseOptionalNumberFlag(flags, 'max-regression-percent'),\n },\n };\n\n const response = await apiRequest<Record<string, unknown>>(ctx, '/api/v1/evaluate', {\n method: 'POST',\n body,\n });\n\n if (ctx.json) {\n printJson(response);\n } else {\n const passed = response.passed === true;\n process.stdout.write(`${passed ? color(ctx, 'green', 'PASS') : color(ctx, 'red', 'FAIL')}\\n`);\n if (Array.isArray(response.failures) && response.failures.length > 0) {\n process.stdout.write(\n `Failures:\\n${response.failures.map((f) => ` - ${String(f)}`).join('\\n')}\\n`\n );\n }\n if (response.summary && typeof response.summary === 'object') {\n printKeyValues(response.summary as Record<string, unknown>);\n }\n if (response.regression && typeof response.regression === 'object') {\n process.stdout.write('\\nRegression:\\n');\n printKeyValues(response.regression as Record<string, unknown>);\n }\n }\n\n if (response.passed === false) {\n process.exitCode = 1;\n }\n}\n\nfunction commandReserved(command: string): void {\n const messages: Record<string, string> = {\n fix: 'The Fixer CLI is reserved for the upcoming scriptable Fixer API.',\n replay: 'The replay CLI is reserved for the upcoming replay API.',\n };\n throw new CliError(messages[command] ?? `${command} is not available yet.`, 2);\n}\n\nfunction buildTimeQuery(flags: Record<string, FlagValue>): Record<string, string | number> {\n const query: Record<string, string | number> = {};\n const last = getStringFlag(flags, 'last', 'time-range') ?? '7d';\n const from = getStringFlag(flags, 'from');\n const to = getStringFlag(flags, 'to');\n\n if (from) {\n query.from = from;\n } else if (TIME_RANGES.has(last)) {\n query.timeRange = last;\n } else {\n throw new CliError(`--last must be one of: ${Array.from(TIME_RANGES).join(', ')}`);\n }\n\n if (to) query.to = to;\n return query;\n}\n\nfunction parseIntegerFlag(\n flags: Record<string, FlagValue>,\n name: string,\n fallback: number\n): number {\n const raw = getStringFlag(flags, name);\n if (raw === undefined) return fallback;\n const parsed = Number.parseInt(raw, 10);\n if (!Number.isFinite(parsed)) throw new CliError(`--${name} must be an integer`);\n return parsed;\n}\n\nfunction parseOptionalNumberFlag(\n flags: Record<string, FlagValue>,\n name: string\n): number | undefined {\n const raw = getStringFlag(flags, name);\n if (raw === undefined) return undefined;\n const parsed = Number.parseFloat(raw);\n if (!Number.isFinite(parsed)) throw new CliError(`--${name} must be a number`);\n return parsed;\n}\n\nexport function diagnoseSession(\n session: SessionSummary,\n events: EventSummary[]\n): DiagnoseFinding[] {\n const findings: DiagnoseFinding[] = [];\n const toolErrors = events.filter((event) => hasMeaningfulValue(event.toolError));\n const explicitErrors = events.filter((event) => event.eventType === 'error');\n const lowConfidence = events.filter(\n (event) => typeof event.confidence === 'number' && event.confidence < 0.5\n );\n\n if (session.success === false || session.status === 'failed') {\n findings.push({\n severity: 'high',\n title: 'Session ended unsuccessfully',\n detail: session.failureReason ?? 'The session is marked failed without a failure reason.',\n });\n }\n\n if (toolErrors.length > 0) {\n const grouped = groupBy(toolErrors, (event) => event.toolName ?? 'unknown_tool');\n const top = Array.from(grouped.entries())\n .map(([tool, group]) => `${tool} (${group.length})`)\n .join(', ');\n findings.push({\n severity: 'high',\n title: 'Tool errors occurred',\n detail: `${toolErrors.length} tool error event(s): ${top}. First error: ${formatCompactJson(\n toolErrors[0].toolError\n )}`,\n });\n }\n\n if (explicitErrors.length > 0) {\n findings.push({\n severity: 'high',\n title: 'Error events were recorded',\n detail: `${explicitErrors.length} error event(s). First event: ${summarizeEvent(\n explicitErrors[0]\n )}`,\n });\n }\n\n const repeatedCalls = findRepeatedToolCalls(events);\n if (repeatedCalls.length > 0) {\n findings.push({\n severity: 'medium',\n title: 'Repeated identical tool calls',\n detail: repeatedCalls\n .slice(0, 3)\n .map((call) => `${call.toolName} repeated ${call.count} times`)\n .join('; '),\n });\n }\n\n if (lowConfidence.length > 0) {\n findings.push({\n severity: 'medium',\n title: 'Low-confidence decisions',\n detail: `${lowConfidence.length} decision event(s) had confidence below 0.5.`,\n });\n }\n\n if (session.totalTokens && session.totalTokens > 100_000) {\n findings.push({\n severity: 'low',\n title: 'High token usage',\n detail: `This session used ${session.totalTokens.toLocaleString()} tokens.`,\n });\n }\n\n if (session.durationMs && session.durationMs > 120_000) {\n findings.push({\n severity: 'low',\n title: 'Long-running session',\n detail: `Duration was ${formatDuration(session.durationMs)}.`,\n });\n }\n\n if (session.status === 'completed' && !session.assistantOutput) {\n findings.push({\n severity: 'info',\n title: 'No assistant output stored',\n detail:\n 'The session completed, but assistantOutput is empty. Confirm finish({ output }) is wired.',\n });\n }\n\n return findings;\n}\n\nfunction findRepeatedToolCalls(events: EventSummary[]): Array<{ toolName: string; count: number }> {\n const counts = new Map<string, { toolName: string; count: number }>();\n for (const event of events) {\n if (event.eventType !== 'tool_call' || !event.toolName) continue;\n const key = `${event.toolName}:${formatCompactJson(event.toolInput)}`;\n const current = counts.get(key) ?? { toolName: event.toolName, count: 0 };\n current.count++;\n counts.set(key, current);\n }\n return Array.from(counts.values()).filter((entry) => entry.count >= 3);\n}\n\nfunction groupBy<T>(items: T[], keyFor: (item: T) => string): Map<string, T[]> {\n const result = new Map<string, T[]>();\n for (const item of items) {\n const key = keyFor(item);\n const existing = result.get(key) ?? [];\n existing.push(item);\n result.set(key, existing);\n }\n return result;\n}\n\nfunction hasMeaningfulValue(value: unknown): boolean {\n if (value === null || value === undefined) return false;\n if (typeof value === 'string') return value.trim().length > 0;\n if (Array.isArray(value)) return value.length > 0;\n if (typeof value === 'object') return Object.keys(value).length > 0;\n return true;\n}\n\nexport function detectProject(projectRoot: string): {\n language?: 'typescript' | 'python';\n framework?: string;\n} {\n const packageJsonPath = path.join(projectRoot, 'package.json');\n if (existsSync(packageJsonPath)) {\n try {\n const pkg = JSON.parse(readFileSync(packageJsonPath, 'utf8')) as {\n dependencies?: Record<string, string>;\n devDependencies?: Record<string, string>;\n };\n const deps = { ...pkg.dependencies, ...pkg.devDependencies };\n if (deps.next) return { language: 'typescript', framework: 'Next.js' };\n if (deps.ai || deps['@ai-sdk/openai'])\n return { language: 'typescript', framework: 'Vercel AI SDK' };\n if (deps.langchain || deps['@langchain/core'])\n return { language: 'typescript', framework: 'LangChain' };\n if (deps.openai) return { language: 'typescript', framework: 'OpenAI Node' };\n return { language: 'typescript', framework: 'Node.js' };\n } catch {\n return { language: 'typescript', framework: 'Node.js' };\n }\n }\n\n const requirementsPath = path.join(projectRoot, 'requirements.txt');\n const pyprojectPath = path.join(projectRoot, 'pyproject.toml');\n if (existsSync(requirementsPath) || existsSync(pyprojectPath)) {\n const text = [requirementsPath, pyprojectPath]\n .filter((file) => existsSync(file))\n .map((file) => readFileSync(file, 'utf8').toLowerCase())\n .join('\\n');\n if (text.includes('fastapi')) return { language: 'python', framework: 'FastAPI' };\n if (text.includes('langchain')) return { language: 'python', framework: 'LangChain' };\n if (text.includes('crewai')) return { language: 'python', framework: 'CrewAI' };\n if (text.includes('openai')) return { language: 'python', framework: 'OpenAI Python' };\n return { language: 'python', framework: 'Python' };\n }\n\n return {};\n}\n\nexport function buildInstallPlan(\n projectRoot: string,\n languageOverride?: string,\n pythonCommand?: string,\n packageOverride?: string\n): InstallPlan {\n const detected = detectProject(projectRoot);\n const language = languageOverride ?? detected.language ?? 'typescript';\n\n if (language !== 'typescript' && language !== 'python') {\n throw new CliError('Supported install languages are \"typescript\" and \"python\".');\n }\n\n if (language === 'python') {\n const command = pythonCommand ?? defaultPythonCommand(projectRoot);\n const packageName = packageOverride ?? 'sentrial';\n return {\n language,\n framework: detected.framework,\n command,\n args: ['-m', 'pip', 'install', packageName],\n packageName,\n };\n }\n\n const packageManager = detectPackageManager(projectRoot);\n const packageName = packageOverride ?? '@sentrial/sdk';\n return {\n language,\n framework: detected.framework,\n command: packageManager,\n args: packageManager === 'npm' ? ['install', packageName] : ['add', packageName],\n packageName,\n };\n}\n\nfunction detectPackageManager(projectRoot: string): 'pnpm' | 'npm' | 'yarn' {\n if (existsSync(path.join(projectRoot, 'pnpm-lock.yaml'))) return 'pnpm';\n if (existsSync(path.join(projectRoot, 'yarn.lock'))) return 'yarn';\n return 'npm';\n}\n\nfunction plannedScaffoldFiles(projectRoot: string, language: InstallPlan['language']): string[] {\n const sampleFile = language === 'python' ? 'sentrial.example.py' : 'sentrial.example.ts';\n return [path.join(projectRoot, sampleFile), path.join(projectRoot, '.env.sentrial.example')];\n}\n\nfunction runSubprocess(\n command: string,\n args: string[],\n cwd: string,\n options: { json: boolean; nonInteractive: boolean }\n): Promise<void> {\n return new Promise((resolve, reject) => {\n const child = spawn(command, args, {\n cwd,\n stdio: [\n options.nonInteractive ? 'ignore' : 'inherit',\n options.json ? 2 : 'inherit',\n 'inherit',\n ],\n shell: process.platform === 'win32',\n timeout: 300_000,\n });\n\n child.on('error', (error) => {\n reject(new CliError(`Failed to run ${formatCommand(command, args)}: ${error.message}`));\n });\n\n child.on('close', (code) => {\n if (code === 0) {\n resolve();\n return;\n }\n reject(\n new CliError(`${formatCommand(command, args)} failed with exit code ${code ?? 'unknown'}`)\n );\n });\n });\n}\n\nfunction formatCommand(command: string, args: string[]): string {\n return [command, ...args].join(' ');\n}\n\nfunction typescriptExample(): string {\n return `// Running this file sends one synthetic trace. Workspace processing settings apply.\nimport { SentrialClient } from '@sentrial/sdk';\n\nasync function main() {\n const client = new SentrialClient({\n apiKey: process.env.SENTRIAL_API_KEY,\n apiUrl: process.env.SENTRIAL_API_URL,\n failSilently: false,\n });\n try {\n const run = await client.begin({\n userId: 'setup-example',\n event: 'setup-example',\n input: 'A synthetic setup check',\n metadata: { synthetic: true },\n });\n const sessionId = run.getSessionId();\n if (!sessionId) throw new Error('The API did not acknowledge this session.');\n // Replace this with your agent call; instrument its LLM and tools as shown in the docs.\n await run.finish({ output: 'Example finished', success: true });\n await client.flush();\n console.log('Session ID:', sessionId);\n console.log('Verify: npx --no-install sentrial doctor --session', sessionId, '--json');\n } finally {\n await client.shutdown();\n }\n}\n\nmain().catch(() => {\n console.error('Sample trace failed. Check the API URL, key and write scopes.');\n process.exitCode = 1;\n});\n`;\n}\n\nfunction pythonExample(): string {\n return `\"\"\"Running this file sends one synthetic trace. Workspace processing settings apply.\"\"\"\nimport os\nimport shlex\nimport sys\nfrom sentrial import SentrialClient\n\nclient = SentrialClient(api_key=os.environ[\"SENTRIAL_API_KEY\"], fail_silently=False)\ntry:\n with client.begin(user_id=\"setup-example\", event=\"setup-example\",\n input=\"A synthetic setup check\", metadata={\"synthetic\": True}) as run:\n if not run.session_id:\n raise RuntimeError(\"The API did not acknowledge this session. Check its URL and write scopes.\")\n # Replace this with your agent call; instrument its LLM and tools as shown in the docs.\n run.set_output(\"Example finished\")\n client.flush()\n print(\"Session ID:\", run.session_id)\n print(\"Verify:\", shlex.join([sys.executable, \"-m\", \"sentrial.cli\", \"doctor\",\n \"--session\", run.session_id, \"--json\"]))\nfinally:\n client.shutdown()\n`;\n}\n\nfunction printSession(session: SessionSummary, events: EventSummary[], ctx: CliContext): void {\n process.stdout.write(`${bold(ctx, 'Session')} ${session.id}\\n`);\n printKeyValues({\n name: session.name ?? '-',\n agent: session.agentName ?? session.agentSlug ?? '-',\n userId: session.userId ?? '-',\n status: `${session.status ?? '-'} (${formatResult(session.success)})`,\n score: formatNullableNumber(session.score),\n duration: formatDuration(session.durationMs),\n cost: formatCost(session.estimatedCost),\n tokens: session.totalTokens ?? '-',\n events: session.totalEvents ?? events.length,\n createdAt: formatDate(session.createdAt),\n completedAt: formatDate(session.completedAt),\n });\n\n if (session.failureReason) {\n process.stdout.write(`\\nFailure reason:\\n${indent(wrap(session.failureReason))}\\n`);\n }\n if (session.userInput) {\n process.stdout.write(`\\nInput:\\n${indent(wrap(session.userInput))}\\n`);\n }\n if (session.assistantOutput) {\n process.stdout.write(`\\nOutput:\\n${indent(wrap(session.assistantOutput))}\\n`);\n }\n\n if (events.length > 0) {\n process.stdout.write(`\\n${bold(ctx, 'Events')}\\n`);\n for (const event of events) {\n printEvent(event, ctx);\n }\n }\n}\n\nfunction printEvent(event: EventSummary, ctx: CliContext): void {\n const prefix = `#${event.sequenceNumber ?? '-'} ${event.eventType}`;\n const label =\n event.eventType === 'error' || hasMeaningfulValue(event.toolError)\n ? color(ctx, 'red', prefix)\n : color(ctx, 'cyan', prefix);\n process.stdout.write(`${label} ${formatDate(event.timestamp)}`);\n if (event.toolName) process.stdout.write(` tool=${event.toolName}`);\n if (event.estimatedCost) process.stdout.write(` cost=${formatCost(event.estimatedCost)}`);\n if (event.tokenCount) process.stdout.write(` tokens=${event.tokenCount}`);\n process.stdout.write('\\n');\n\n const summary = summarizeEvent(event);\n if (summary) process.stdout.write(`${indent(wrap(summary, 88))}\\n`);\n}\n\nfunction summarizeEvent(event: EventSummary): string {\n if (hasMeaningfulValue(event.toolError)) {\n return `Error: ${formatCompactJson(event.toolError)}`;\n }\n if (event.reasoning) {\n return event.reasoning;\n }\n if (hasMeaningfulValue(event.toolOutput)) {\n return `Output: ${formatCompactJson(event.toolOutput)}`;\n }\n if (hasMeaningfulValue(event.toolInput)) {\n return `Input: ${formatCompactJson(event.toolInput)}`;\n }\n return '';\n}\n\nfunction printKeyValues(values: Record<string, unknown>): void {\n const entries = Object.entries(values);\n const width = entries.reduce((max, [key]) => Math.max(max, key.length), 0);\n for (const [key, value] of entries) {\n process.stdout.write(`${key.padEnd(width)} ${String(value)}\\n`);\n }\n}\n\nfunction printJson(value: unknown): void {\n process.stdout.write(`${JSON.stringify(value, null, 2)}\\n`);\n}\n\ninterface TableColumn<T> {\n header: string;\n maxWidth: number;\n render: (row: T) => string;\n}\n\nfunction printTable<T>(rows: T[], columns: Array<TableColumn<T>>): void {\n const widths = columns.map((column) => {\n const max = Math.max(column.header.length, ...rows.map((row) => column.render(row).length));\n return Math.min(max, column.maxWidth);\n });\n\n const header = columns\n .map((column, index) => pad(truncate(column.header, widths[index]), widths[index]))\n .join(' ');\n const divider = widths.map((width) => '-'.repeat(width)).join(' ');\n process.stdout.write(`${header}\\n${divider}\\n`);\n\n for (const row of rows) {\n const line = columns\n .map((column, index) => pad(truncate(column.render(row), widths[index]), widths[index]))\n .join(' ');\n process.stdout.write(`${line}\\n`);\n }\n}\n\nfunction truncate(value: string, width: number): string {\n if (value.length <= width) return value;\n if (width <= 1) return value.slice(0, width);\n return `${value.slice(0, width - 1)}...`.slice(0, width);\n}\n\nfunction pad(value: string, width: number): string {\n return `${value}${' '.repeat(Math.max(0, width - value.length))}`;\n}\n\nfunction color(ctx: CliContext, name: 'cyan' | 'green' | 'red' | 'yellow', value: string): string {\n if (!ctx.color) return value;\n const codes = {\n cyan: 36,\n green: 32,\n red: 31,\n yellow: 33,\n };\n return `\\u001b[${codes[name]}m${value}\\u001b[0m`;\n}\n\nfunction bold(ctx: CliContext, value: string): string {\n return ctx.color ? `\\u001b[1m${value}\\u001b[0m` : value;\n}\n\nfunction severityLabel(ctx: CliContext, severity: DiagnoseFinding['severity']): string {\n if (severity === 'high') return color(ctx, 'red', '[high]');\n if (severity === 'medium') return color(ctx, 'yellow', '[medium]');\n if (severity === 'low') return color(ctx, 'cyan', '[low]');\n return '[info]';\n}\n\nfunction formatResult(success: boolean | null | undefined): string {\n if (success === true) return 'pass';\n if (success === false) return 'fail';\n return '-';\n}\n\nfunction formatNullableNumber(value: number | null | undefined): string {\n return typeof value === 'number' ? String(Math.round(value * 10) / 10) : '-';\n}\n\nfunction formatDuration(ms: number | null | undefined): string {\n if (typeof ms !== 'number') return '-';\n if (ms < 1000) return `${ms}ms`;\n if (ms < 60_000) return `${(ms / 1000).toFixed(1)}s`;\n return `${(ms / 60_000).toFixed(1)}m`;\n}\n\nfunction formatCost(cost: number | null | undefined): string {\n return typeof cost === 'number' ? `$${cost.toFixed(4)}` : '-';\n}\n\nfunction formatDate(value: string | null | undefined): string {\n if (!value) return '-';\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n return date.toISOString().replace('T', ' ').slice(0, 16);\n}\n\nfunction formatCompactJson(value: unknown): string {\n if (value === undefined) return '';\n if (typeof value === 'string') return value;\n try {\n return JSON.stringify(value);\n } catch {\n return String(value);\n }\n}\n\nfunction wrap(text: string, width = 92): string {\n const words = text.replace(/\\s+/g, ' ').trim().split(' ');\n const lines: string[] = [];\n let current = '';\n for (const word of words) {\n if (`${current} ${word}`.trim().length > width && current) {\n lines.push(current);\n current = word;\n } else {\n current = `${current} ${word}`.trim();\n }\n }\n if (current) lines.push(current);\n return lines.join('\\n');\n}\n\nfunction indent(text: string, spaces = 2): string {\n const prefix = ' '.repeat(spaces);\n return text\n .split('\\n')\n .map((line) => `${prefix}${line}`)\n .join('\\n');\n}\n\nexport async function run(argv: string[]): Promise<void> {\n const parsed = parseArgs(argv);\n const [command, ...rest] = parsed.positionals;\n\n if (getBooleanFlag(parsed.flags, 'version')) {\n process.stdout.write(`${CLI_VERSION}\\n`);\n return;\n }\n\n if (!command || getBooleanFlag(parsed.flags, 'help')) {\n process.stdout.write(HELP);\n return;\n }\n\n // The bundled demonstration must work before authentication or project setup.\n if (command === 'demo') {\n const json = getBooleanFlag(parsed.flags, 'json');\n try {\n if (rest.length !== 1 || rest[0] !== 'insurance')\n throw new CliError(\n 'Use sentrial demo insurance. This command only reads a bundled recording.'\n );\n const allowed = new Set(['json', 'color', 'scenario']);\n if (Object.keys(parsed.flags).some((flag) => !allowed.has(flag)))\n throw new CliError(\n 'The recorded demo accepts only --scenario, --json and --no-color. Live execution is not supported.'\n );\n const selected = parsed.flags.scenario ?? 'rejected';\n if (\n typeof selected !== 'string' ||\n !INSURANCE_SCENARIOS.includes(selected as InsuranceScenario)\n )\n throw new CliError(`Choose --scenario ${INSURANCE_SCENARIOS.join(', ')}.`);\n const report = insuranceDemo(selected as InsuranceScenario);\n if (json) printJson(report);\n else process.stdout.write(renderInsuranceDemo(report));\n } catch (error) {\n if (!json || !(error instanceof CliError)) throw error;\n printJson({\n schemaVersion: 'sentrial-recorded-demo-v1',\n status: 'error',\n error: { code: 'INVALID_DEMO_ARGUMENT', message: error.message },\n });\n process.exitCode = 1;\n }\n return;\n }\n\n if (command === 'investigate') {\n const report = await runInvestigation(rest, parsed.flags);\n if (getBooleanFlag(parsed.flags, 'json')) printJson(report);\n else process.stdout.write(renderInvestigation(report));\n if (report.status === 'error') process.exitCode = 1;\n return;\n }\n\n const ctx = createContext(parsed.flags);\n\n switch (command) {\n case 'setup':\n await commandSetup(ctx, parsed.flags);\n break;\n case 'install':\n await commandInstall(ctx, parsed.flags);\n break;\n case 'init':\n await commandInit(ctx, parsed.flags);\n break;\n case 'login':\n await commandLogin(ctx, parsed.flags);\n break;\n case 'doctor': {\n const timeout = getFlag(parsed.flags, 'timeout-ms');\n const workspace = getFlag(parsed.flags, 'workspace');\n const project = detectProject(process.cwd());\n const report = await runDoctor({\n apiKey: ctx.apiKey,\n apiUrl: ctx.apiUrl,\n dashboardUrl:\n getFlag(parsed.flags, 'dashboard-url') === undefined\n ? process.env.SENTRIAL_DASHBOARD_URL\n : String(getFlag(parsed.flags, 'dashboard-url')),\n workspaceId: workspace === undefined ? undefined : String(workspace),\n sessionId:\n getFlag(parsed.flags, 'session') === undefined\n ? undefined\n : String(getFlag(parsed.flags, 'session')),\n timeoutMs:\n timeout === undefined ? undefined : typeof timeout === 'string' ? Number(timeout) : NaN,\n project,\n environmentChecks: inspectEnvironment(\n process.cwd(),\n project.language,\n getStringFlag(parsed.flags, 'python')\n ),\n });\n if (ctx.json) printJson(report);\n else {\n for (const check of report.checks) {\n process.stdout.write(\n `${check.status === 'pass' ? '✓' : check.status === 'fail' ? '✗' : '–'} ${check.message}\\n`\n );\n if (check.remediation) process.stdout.write(` ${check.remediation}\\n`);\n }\n if (report.workspaceId) process.stdout.write(`Workspace: ${report.workspaceId}\\n`);\n if (report.dashboardUrl) process.stdout.write(`View trace: ${report.dashboardUrl}\\n`);\n if (report.session) {\n process.stdout.write(`Session: ${report.session.sessionId}\\n`);\n for (const issue of report.session.issues)\n process.stdout.write(` ${issue.code}: ${issue.count}\\n`);\n }\n }\n if (report.status === 'needs_attention') process.exitCode = 1;\n break;\n }\n case 'sessions':\n await commandSessions(ctx, parsed.flags, rest);\n break;\n case 'events':\n await commandEvents(ctx, parsed.flags, rest);\n break;\n case 'signals':\n await commandSignals(ctx, parsed.flags, rest);\n break;\n case 'diagnose':\n await commandDiagnose(ctx, parsed.flags, rest[0]);\n break;\n case 'evaluate':\n await commandEvaluate(ctx, parsed.flags, rest[0]);\n break;\n case 'fix':\n case 'replay':\n commandReserved(command);\n break;\n default:\n throw new CliError(`Unknown command: ${command}. Run sentrial --help.`);\n }\n}\n\nif (process.env.SENTRIAL_CLI_SKIP_AUTO_RUN !== '1') {\n run(process.argv.slice(2)).catch((error: unknown) => {\n if (error instanceof CliError) {\n if (process.env.SENTRIAL_CLI_DEBUG) {\n process.stderr.write(`${error.stack ?? error.message}\\n`);\n } else {\n process.stderr.write(`Error: ${error.message}\\n`);\n }\n process.exitCode = error.exitCode;\n return;\n }\n\n process.stderr.write(\n `${error instanceof Error ? (error.stack ?? error.message) : String(error)}\\n`\n );\n process.exitCode = 1;\n });\n}\n","/**\n * Shared SDK constants — single source so the client, OTLP transport, and CLI can't target\n * different endpoints if a path/URL changes.\n */\n\n/** Default Sentrial API base URL when neither a constructor arg nor SENTRIAL_API_URL is set. */\nexport const DEFAULT_API_URL = 'https://api.sentrial.com';\n\n/** OTLP traces ingest path, appended to the API base URL by the transport. */\nexport const OTEL_TRACES_PATH = '/api/otel/v1/traces';\n","export interface SessionDelivery {\n sessionId: string;\n status: 'running' | 'completed' | 'failed';\n completed: boolean;\n inspectedEvents: number;\n sourceAccounting: 'accounted' | 'gaps' | 'unknown';\n expectedEvents: number | null;\n observedEvents: number;\n missingEvents: number | null;\n knownLoss: boolean;\n limited: boolean;\n issues: { code: string; count: number }[];\n verified: boolean;\n}\n\nconst record = (value: unknown): Record<string, unknown> =>\n value !== null && typeof value === 'object' && !Array.isArray(value)\n ? (value as Record<string, unknown>)\n : {};\nconst count = (value: unknown): value is number =>\n typeof value === 'number' && Number.isSafeInteger(value) && value >= 0;\nconst nullableCount = (value: unknown) => value === null || count(value);\n\n/** Keep only diagnostic scalars. Never echo arbitrary server text or trace content. */\nexport function parseSessionDelivery(\n payload: unknown,\n sessionId: string,\n workspaceId: string\n): SessionDelivery | undefined {\n const data = record(record(payload).data);\n const health = record(data.health);\n const source = record(health.source);\n if (\n data.revision !== 'session-delivery-v1' ||\n data.sessionId !== sessionId ||\n data.organizationId !== workspaceId ||\n typeof data.status !== 'string' ||\n !['running', 'completed', 'failed'].includes(data.status) ||\n !(\n data.completedAt === null ||\n (typeof data.completedAt === 'string' &&\n /^\\d{4}-\\d{2}-\\d{2}T/.test(data.completedAt) &&\n Number.isFinite(Date.parse(data.completedAt)))\n ) ||\n health.revision !== 'telemetry-health-v1' ||\n !count(health.inspectedEvents) ||\n health.inspectedEvents > 500 ||\n typeof health.knownLoss !== 'boolean' ||\n typeof health.limited !== 'boolean' ||\n typeof source.accounting !== 'string' ||\n !['accounted', 'gaps', 'unknown'].includes(source.accounting) ||\n !nullableCount(source.expected) ||\n !count(source.observed) ||\n !nullableCount(source.missing) ||\n !Array.isArray(health.issues) ||\n health.issues.length > 64 ||\n health.issues.some((item) => {\n const issue = record(item);\n return (\n typeof issue.code !== 'string' ||\n !/^[a-zA-Z][a-zA-Z0-9_]{0,63}$/.test(issue.code) ||\n !count(issue.count) ||\n issue.count === 0\n );\n })\n )\n return undefined;\n // The manifest counts child events, whereas inspectedEvents includes the root.\n if (\n source.accounting === 'accounted' &&\n (source.expected === null ||\n source.expected !== source.observed ||\n source.missing !== 0 ||\n health.inspectedEvents !== source.observed + 1 ||\n health.limited)\n )\n return undefined;\n const completed = data.status !== 'running' && data.completedAt !== null;\n const issues = health.issues.map((item) => ({\n code: record(item).code as string,\n count: record(item).count as number,\n }));\n return {\n sessionId,\n status: data.status as SessionDelivery['status'],\n completed,\n inspectedEvents: health.inspectedEvents,\n sourceAccounting: source.accounting as SessionDelivery['sourceAccounting'],\n expectedEvents: source.expected as number | null,\n observedEvents: source.observed,\n missingEvents: source.missing as number | null,\n knownLoss: health.knownLoss,\n limited: health.limited,\n issues,\n verified:\n completed &&\n health.inspectedEvents > 0 &&\n source.accounting === 'accounted' &&\n !health.knownLoss &&\n !health.limited &&\n issues.length === 0,\n };\n}\n","/** Build a display-only link. Never infer a hosted dashboard for a custom API. */\nexport function dashboardOrigin(apiUrl: string, configured?: string): string | undefined {\n const value =\n configured ??\n (new URL(apiUrl).origin === 'https://api.sentrial.com'\n ? 'https://www.sentrial.com'\n : undefined);\n if (value === undefined) return undefined;\n if (/[\\s\\\\?#]/.test(value)) throw new Error('Invalid dashboard origin');\n const url = new URL(value);\n if (\n url.username ||\n url.password ||\n url.search ||\n url.hash ||\n url.pathname !== '/' ||\n (url.protocol !== 'https:' &&\n !(url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname)))\n )\n throw new Error('Invalid dashboard origin');\n return url.origin;\n}\n\nexport function sessionDashboardUrl(\n payload: unknown,\n sessionId: string,\n origin?: string\n): string | undefined {\n if (!origin || !payload || typeof payload !== 'object' || !('data' in payload)) return;\n const data = payload.data;\n if (!data || typeof data !== 'object' || !('dashboardPath' in data)) return;\n const path = data.dashboardPath;\n // Only the canonical telemetry inspector path, for the session already verified\n // by the diagnostic parser. No absolute URLs, escaped controls or arbitrary query data.\n if (\n typeof path !== 'string' ||\n !/^\\/[a-zA-Z0-9][a-zA-Z0-9_-]{0,199}\\/telemetry\\?inspect=[0-9a-f-]{36}$/.test(path) ||\n !path.endsWith(`?inspect=${sessionId}`)\n )\n return;\n return `${origin}${path}`;\n}\n","/** Read-only setup checks. Never ingest a probe or trigger model scoring implicitly. */\nimport { parseSessionDelivery, type SessionDelivery } from './cli-session-health.js';\nimport { dashboardOrigin, sessionDashboardUrl } from './cli-dashboard.js';\n\nexport interface DoctorCheck {\n id: string;\n status: 'pass' | 'fail' | 'not_run';\n code: string;\n message: string;\n remediation?: string;\n}\n\nexport interface DoctorReport {\n schemaVersion: 'sentrial-doctor-v1';\n command: 'doctor';\n status: 'ready_for_instrumentation' | 'trace_verified' | 'needs_attention';\n project: { language?: 'typescript' | 'python'; framework?: string };\n workspaceId?: string;\n dashboardUrl?: string;\n session?: SessionDelivery;\n checks: DoctorCheck[];\n}\n\ninterface DoctorOptions {\n apiKey?: string;\n apiUrl: string;\n dashboardUrl?: string;\n workspaceId?: string;\n sessionId?: string;\n timeoutMs?: number;\n project: DoctorReport['project'];\n environmentChecks?: DoctorCheck[];\n request?: typeof fetch;\n}\n\nconst WORKSPACE_ID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n\nclass CheckFailure extends Error {\n constructor(\n readonly code: string,\n message: string,\n readonly remediation: string\n ) {\n super(message);\n }\n}\n\nasync function readBoundedJson(response: Response) {\n const reader = response.body?.getReader();\n if (!reader)\n throw new CheckFailure(\n 'INVALID_RESPONSE',\n 'The API returned no body.',\n 'Check the API URL and service health.'\n );\n let length = 0;\n const chunks: Uint8Array[] = [];\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n length += value.byteLength;\n if (length > 1_048_576)\n throw new CheckFailure(\n 'INVALID_RESPONSE',\n 'The API response exceeded the diagnostic limit.',\n 'Check the API URL and service health.'\n );\n chunks.push(value);\n }\n } finally {\n await reader.cancel().catch(() => undefined);\n }\n try {\n return JSON.parse(Buffer.concat(chunks).toString('utf8')) as unknown;\n } catch {\n throw new CheckFailure(\n 'INVALID_RESPONSE',\n 'The API did not return JSON.',\n 'Use the Sentrial API origin, not the dashboard URL.'\n );\n }\n}\n\nexport async function runDoctor(options: DoctorOptions): Promise<DoctorReport> {\n const checks: DoctorCheck[] = [];\n const report: DoctorReport = {\n schemaVersion: 'sentrial-doctor-v1',\n command: 'doctor',\n status: 'needs_attention',\n project: options.project,\n checks,\n };\n checks.push(\n options.project.language\n ? {\n id: 'project',\n status: 'pass',\n code: 'PROJECT_DETECTED',\n message: `Detected ${options.project.framework ?? options.project.language}.`,\n }\n : {\n id: 'project',\n status: 'fail',\n code: 'PROJECT_NOT_FOUND',\n message: 'No supported project manifest was found.',\n remediation:\n 'Run this command from a project with package.json, requirements.txt or pyproject.toml.',\n }\n );\n checks.push(...(options.environmentChecks ?? []));\n\n let verifyingDelivery = false;\n try {\n let origin: URL;\n try {\n origin = new URL(options.apiUrl);\n const local = ['localhost', '127.0.0.1', '[::1]'].includes(origin.hostname);\n if (\n origin.username ||\n origin.password ||\n origin.search ||\n origin.hash ||\n origin.pathname !== '/' ||\n (origin.protocol !== 'https:' && !(local && origin.protocol === 'http:'))\n )\n throw new Error();\n } catch {\n throw new CheckFailure(\n 'INVALID_API_URL',\n 'The API URL must be an HTTPS origin, or local HTTP for development.',\n 'Set SENTRIAL_API_URL without credentials, a path, query or fragment.'\n );\n }\n checks.push({\n id: 'endpoint',\n status: 'pass',\n code: 'API_ORIGIN_VALID',\n message: 'API origin format is valid.',\n });\n let webOrigin: string | undefined;\n try {\n webOrigin = dashboardOrigin(options.apiUrl, options.dashboardUrl);\n } catch {\n throw new CheckFailure(\n 'INVALID_DASHBOARD_URL',\n 'The dashboard URL must be an HTTPS origin, or local HTTP for development.',\n 'Set SENTRIAL_DASHBOARD_URL without credentials, a path, query or fragment.'\n );\n }\n if (!options.apiKey || !/^sentrial_[A-Za-z0-9_-]+$/.test(options.apiKey)) {\n throw new CheckFailure(\n 'MISSING_OR_INVALID_KEY',\n 'A valid API key is required for the read-access check.',\n 'Set SENTRIAL_API_KEY privately. This check requires sessions:read.'\n );\n }\n if (options.workspaceId && !WORKSPACE_ID.test(options.workspaceId)) {\n throw new CheckFailure(\n 'INVALID_WORKSPACE_ID',\n 'The expected workspace must be its organization UUID.',\n 'Copy the workspace ID from your organization settings.'\n );\n }\n if (options.sessionId !== undefined && !WORKSPACE_ID.test(options.sessionId))\n throw new CheckFailure(\n 'INVALID_SESSION_ID',\n 'The session must be its Sentrial UUID.',\n 'Use --session <session-id> from the instrumented run.'\n );\n const timeout = options.timeoutMs ?? 10_000;\n if (!Number.isInteger(timeout) || timeout < 100 || timeout > 30_000) {\n throw new CheckFailure(\n 'INVALID_TIMEOUT',\n 'Diagnostic timeout must be 100–30000 milliseconds.',\n 'Use --timeout-ms 10000 or omit the flag.'\n );\n }\n const signal = AbortSignal.timeout(timeout);\n const read = async (pathname: string, delivery = false) => {\n const response = await (options.request ?? fetch)(new URL(pathname, origin), {\n headers: { Authorization: `Bearer ${options.apiKey}`, Accept: 'application/json' },\n redirect: 'manual',\n signal,\n });\n if (!response.ok) {\n await response.body?.cancel().catch(() => undefined);\n const status = response.status;\n if (status === 401)\n throw new CheckFailure(\n 'AUTHENTICATION_FAILED',\n 'The API rejected this key.',\n 'Check whether the key is expired, revoked or for a different API environment.'\n );\n if (status === 403)\n throw new CheckFailure(\n delivery ? 'DELIVERY_ACCESS_DENIED' : 'READ_ACCESS_DENIED',\n delivery\n ? 'This key cannot inspect delivery diagnostics.'\n : 'This key cannot read sessions.',\n delivery\n ? 'Delivery checks require sessions:read and events:read. Use a diagnostic key with both scopes.'\n : 'Check sessions:read scope and workspace access. An ingestion-only key may still collect telemetry.'\n );\n if (delivery && status === 404)\n throw new CheckFailure(\n 'SESSION_OR_DIAGNOSTICS_NOT_FOUND',\n 'This session or the delivery-diagnostics endpoint was not found.',\n 'Check the session ID, workspace and API version. Older APIs do not expose delivery diagnostics.'\n );\n if (status >= 300 && status < 400)\n throw new CheckFailure(\n 'REDIRECT_REFUSED',\n 'The API redirected the diagnostic request.',\n 'Use the API origin directly. Credentials were not forwarded to the redirect.'\n );\n throw new CheckFailure(\n 'API_UNAVAILABLE',\n `The API returned HTTP ${status}.`,\n 'Check the API URL, rate limits and service status, then retry.'\n );\n }\n return readBoundedJson(response);\n };\n const payload = await read('/api/v1/sessions?limit=1&timeRange=24h');\n if (\n !payload ||\n typeof payload !== 'object' ||\n !('data' in payload) ||\n !Array.isArray(payload.data) ||\n !('meta' in payload) ||\n !payload.meta ||\n typeof payload.meta !== 'object' ||\n !('organizationId' in payload.meta) ||\n typeof payload.meta.organizationId !== 'string' ||\n !WORKSPACE_ID.test(payload.meta.organizationId)\n ) {\n throw new CheckFailure(\n 'INVALID_RESPONSE',\n 'The response did not identify a Sentrial workspace.',\n 'Use the API origin and check that its version supports session metadata.'\n );\n }\n report.workspaceId = payload.meta.organizationId;\n checks.push({\n id: 'read_access',\n status: 'pass',\n code: 'SESSION_READ_VERIFIED',\n message: 'The key can read sessions. Session content is omitted from this report.',\n });\n if (\n options.workspaceId &&\n report.workspaceId.toLowerCase() !== options.workspaceId.toLowerCase()\n ) {\n throw new CheckFailure(\n 'WORKSPACE_MISMATCH',\n 'This key belongs to a different workspace.',\n 'Choose an API key from the intended workspace and rerun doctor.'\n );\n }\n checks.push({\n id: 'workspace',\n status: 'pass',\n code: options.workspaceId ? 'WORKSPACE_MATCHED' : 'WORKSPACE_IDENTIFIED',\n message: options.workspaceId\n ? 'The key belongs to the expected workspace.'\n : 'Workspace identified. Use --workspace <id> to verify it against an expected workspace.',\n });\n if (options.sessionId) {\n verifyingDelivery = true;\n const sessionId = options.sessionId.toLowerCase();\n const payload = await read(`/api/v1/sessions/${sessionId}/health`, true);\n const session = parseSessionDelivery(payload, sessionId, report.workspaceId);\n if (!session)\n throw new CheckFailure(\n 'INVALID_DELIVERY_RESPONSE',\n 'The response did not identify valid diagnostics for this session and workspace.',\n 'Check the API version and retry. Delivery has not been verified.'\n );\n report.session = session;\n report.dashboardUrl = sessionDashboardUrl(payload, sessionId, webOrigin);\n if (!report.dashboardUrl)\n checks.push({\n id: 'dashboard',\n status: 'not_run',\n code: webOrigin ? 'DASHBOARD_LINK_UNAVAILABLE' : 'DASHBOARD_ORIGIN_REQUIRED',\n message: 'A direct dashboard link is unavailable.',\n remediation: webOrigin\n ? 'Open Telemetry in your workspace and find the session ID below. This API may need an update.'\n : 'Set SENTRIAL_DASHBOARD_URL to the dashboard for this API, then rerun doctor.',\n });\n checks.push({\n id: 'delivery',\n status: session.verified ? 'pass' : 'fail',\n code: session.verified ? 'TRACE_DELIVERY_VERIFIED' : 'TRACE_NEEDS_INSPECTION',\n message: session.verified\n ? 'The completed session and its SDK-numbered events were read back without reported gaps.'\n : 'The session was found, but its completion or evidence needs inspection.',\n remediation: session.verified\n ? 'This verifies this trace only; it does not establish application-wide coverage or signal accuracy.'\n : 'Finish and flush the run, then inspect missing events, limited evidence and related sessions in Telemetry.',\n });\n }\n } catch (error) {\n const failure =\n error instanceof CheckFailure\n ? error\n : new CheckFailure(\n 'CONNECTION_FAILED',\n 'The API could not be reached within the diagnostic deadline.',\n 'Check the API origin and network connection, then retry.'\n );\n checks.push({\n id:\n failure.code === 'WORKSPACE_MISMATCH'\n ? 'workspace'\n : verifyingDelivery\n ? 'delivery'\n : 'connection',\n status: 'fail',\n code: failure.code,\n message: failure.message,\n remediation: failure.remediation,\n });\n }\n if (!checks.some((check) => check.id === 'delivery'))\n checks.push({\n id: 'delivery',\n status: 'not_run',\n code: 'DELIVERY_NOT_TESTED',\n message: options.sessionId\n ? 'Session delivery could not be checked.'\n : 'No session was selected for readback.',\n remediation: 'Run your instrumented agent, then use doctor --session <session-id> --json.',\n });\n checks.push({\n id: 'classification',\n status: 'not_run',\n code: 'CLASSIFICATION_NOT_TESTED',\n message: 'No signal evaluation or model call was run.',\n remediation:\n 'Inspect a completed signal evaluation separately; read access does not establish scoring readiness.',\n });\n if (!checks.some((check) => check.status === 'fail'))\n report.status = report.session?.verified ? 'trace_verified' : 'ready_for_instrumentation';\n return report;\n}\n","import { spawnSync } from 'node:child_process';\nimport { existsSync, readFileSync } from 'node:fs';\nimport { createRequire } from 'node:module';\nimport path from 'node:path';\nimport type { DoctorCheck } from './cli-doctor.js';\n\n// Match the integration windows in the SDK manifests. A declared dependency is\n// not evidence that it is installed; resolve metadata without importing its code.\nexport const NODE_INTEGRATION_WINDOWS = {\n ai: ['3.0.0', '8.0.0'],\n '@openai/agents': ['0.1.0', '1.0.0'],\n '@anthropic-ai/claude-agent-sdk': ['0.2.0', '1.0.0'],\n '@google/adk': ['0.1.0', '2.0.0'],\n} as const;\nconst PYTHON_INTEGRATION_WINDOWS = {\n 'langchain-core': ['0.1.0', '3.0.0'],\n 'autogen-agentchat': ['0.4.0', '1.0.0'],\n crewai: ['0.28.0', '1.0.0'],\n 'claude-agent-sdk': ['0.2.0', '1.0.0'],\n 'openai-agents': ['0.1.0', '1.0.0'],\n 'google-adk': ['1.5.0', '3.0.0'],\n} as const;\n\nfunction stableVersion(value: unknown): number[] | undefined {\n if (typeof value !== 'string' || !/^\\d+\\.\\d+\\.\\d+(?:\\+[A-Za-z0-9.-]+)?$/.test(value)) return;\n return value.split('+')[0].split('.').map(Number);\n}\n\nfunction compare(a: number[], b: number[]): number {\n for (let i = 0; i < 3; i++) if (a[i] !== b[i]) return a[i] - b[i];\n return 0;\n}\n\nfunction versionCheck(name: string, value: unknown, floor: string, ceiling?: string): DoctorCheck {\n const version = stableVersion(value);\n const supported =\n version &&\n compare(version, stableVersion(floor)!) >= 0 &&\n (!ceiling || compare(version, stableVersion(ceiling)!) < 0);\n return {\n id: `dependency:${name}`,\n status: supported ? 'pass' : 'fail',\n code: supported ? 'DEPENDENCY_VERSION_SUPPORTED' : 'DEPENDENCY_VERSION_UNSUPPORTED',\n message: supported\n ? `${name} ${value} is within the supported version range.`\n : `${name} has an unsupported or unrecognized installed version.`,\n ...(supported\n ? {}\n : {\n remediation: `Use ${name} >=${floor}${ceiling ? ` <${ceiling}` : ''}, then rerun doctor. Prerelease versions require separate qualification.`,\n }),\n };\n}\n\nfunction missing(name: string): DoctorCheck {\n return {\n id: `dependency:${name}`,\n status: 'fail',\n code: 'DEPENDENCY_NOT_INSTALLED',\n message: `${name} could not be resolved in this project.`,\n remediation: `Install the project's dependencies in its own environment, then rerun doctor.`,\n };\n}\n\nexport function defaultPythonCommand(root: string): string {\n const local = path.join(\n root,\n '.venv',\n process.platform === 'win32' ? 'Scripts/python.exe' : 'bin/python'\n );\n return existsSync(local) ? local : process.platform === 'win32' ? 'python' : 'python3';\n}\n\nfunction installedNodeVersion(root: string, name: string): unknown {\n try {\n // Reading the installed manifest also works for packages with import-only\n // exports; require.resolve(name) alone would incorrectly reject those.\n let ancestor = root;\n while (true) {\n const manifest = path.join(ancestor, 'node_modules', name, 'package.json');\n if (existsSync(manifest)) {\n const parsed = JSON.parse(readFileSync(manifest, 'utf8'));\n return parsed.name === name ? parsed.version : undefined;\n }\n const parent = path.dirname(ancestor);\n if (parent === ancestor) break;\n ancestor = parent;\n }\n const resolve = createRequire(path.join(root, 'package.json')).resolve;\n let directory = path.dirname(resolve(name));\n while (true) {\n const manifest = path.join(directory, 'package.json');\n if (existsSync(manifest)) {\n const parsed = JSON.parse(readFileSync(manifest, 'utf8'));\n if (parsed.name === name) return parsed.version;\n }\n const parent = path.dirname(directory);\n if (parent === directory) return;\n directory = parent;\n }\n } catch {\n return;\n }\n}\n\nexport function inspectEnvironment(\n root: string,\n language?: 'typescript' | 'python',\n python?: string\n): DoctorCheck[] {\n if (!language) return [];\n if (language === 'typescript') {\n const checks = [versionCheck('Node.js', process.versions.node, '18.0.0')];\n let dependencies: Record<string, unknown>;\n try {\n const manifest = JSON.parse(readFileSync(path.join(root, 'package.json'), 'utf8'));\n if (!manifest || typeof manifest !== 'object' || Array.isArray(manifest)) throw new Error();\n dependencies = {\n ...manifest.dependencies,\n ...manifest.devDependencies,\n ...manifest.optionalDependencies,\n };\n } catch {\n return [\n ...checks,\n {\n id: 'manifest',\n status: 'fail',\n code: 'INVALID_MANIFEST',\n message: 'package.json could not be read as an object.',\n remediation: 'Repair the project manifest before installing dependencies.',\n },\n ];\n }\n const windows = { '@sentrial/sdk': ['0.5.0', '1.0.0'], ...NODE_INTEGRATION_WINDOWS };\n for (const [name, [floor, ceiling]] of Object.entries(windows)) {\n if (name !== '@sentrial/sdk' && !(name in dependencies)) continue;\n const version = installedNodeVersion(root, name);\n checks.push(\n version === undefined ? missing(name) : versionCheck(name, version, floor, ceiling)\n );\n }\n return checks;\n }\n // -I ignores project/PYTHONPATH imports. Read distribution metadata, never import\n // Sentrial or a customer agent. A selected .venv still supplies its site-packages.\n const script = `import importlib.metadata as m,json,sys\nnames=${JSON.stringify(['sentrial', ...Object.keys(PYTHON_INTEGRATION_WINDOWS)])}\nversions={}\nfor name in names:\n try: versions[name]=m.version(name)\n except m.PackageNotFoundError: pass\nprint(json.dumps({'python':'.'.join(map(str,sys.version_info[:3])),'versions':versions}))`;\n const result = spawnSync(python ?? defaultPythonCommand(root), ['-I', '-c', script], {\n cwd: root,\n encoding: 'utf8',\n timeout: 10_000,\n maxBuffer: 32_768,\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n try {\n if (result.status !== 0 || result.error) throw new Error();\n const parsed = JSON.parse(result.stdout);\n if (!parsed.versions || typeof parsed.versions !== 'object' || Array.isArray(parsed.versions))\n throw new Error();\n const checks = [versionCheck('Python', parsed.python, '3.9.0', '4.0.0')];\n checks.push(\n parsed.versions.sentrial === undefined\n ? missing('sentrial')\n : versionCheck('sentrial', parsed.versions.sentrial, '0.7.0', '1.0.0')\n );\n for (const [name, [floor, ceiling]] of Object.entries(PYTHON_INTEGRATION_WINDOWS)) {\n if (parsed.versions[name] !== undefined)\n checks.push(versionCheck(name, parsed.versions[name], floor, ceiling));\n }\n return checks;\n } catch {\n return [\n {\n id: 'python',\n status: 'fail',\n code: 'PYTHON_ENVIRONMENT_UNAVAILABLE',\n message: 'Python environment inspection failed or timed out.',\n remediation:\n 'Activate the intended environment or pass --python /path/to/python. Python 3.9 or later is required.',\n },\n ];\n }\n}\n","import type { DoctorReport } from './cli-doctor.js';\n\ninterface SetupPlan {\n language: 'typescript' | 'python';\n framework?: string;\n command: string;\n args: string[];\n packageName: string;\n}\n\nexport interface SetupReport {\n schemaVersion: 'sentrial-setup-v1';\n command: 'setup';\n status:\n | 'planned'\n | 'cancelled'\n | 'needs_confirmation'\n | 'needs_credentials'\n | 'needs_attention'\n | 'trace_verified'\n | 'ready_for_instrumentation';\n stage: 'plan' | 'credentials' | 'connection' | 'package_install' | 'scaffold' | 'verification';\n plan: SetupPlan;\n wouldWrite: string[];\n written: string[];\n skipped: string[];\n packageInstalled: boolean;\n packageAlreadyPresent: boolean;\n partialChangesMayExist: boolean;\n connectionVerified: boolean;\n deliveryVerified: boolean;\n classificationVerified: false;\n dashboardUrl?: string;\n diagnostics?: DoctorReport;\n code?: string;\n nextSteps: string[];\n}\n\ninterface SetupOptions {\n dryRun: boolean;\n yes: boolean;\n interactive: boolean;\n apiKey?: string;\n}\ninterface SetupSteps {\n plan: SetupPlan;\n wouldWrite: string[];\n confirm?: () => Promise<boolean>;\n readKey?: () => Promise<string | undefined>;\n diagnose: (apiKey: string, inspectInstalled: boolean) => Promise<DoctorReport>;\n sdkPresent: () => boolean;\n install: () => Promise<void>;\n scaffold: (apiKey: string) => { written: string[]; skipped: string[] };\n}\n\n/** The same workflow drives TTY prompts and unattended callers. No hidden probe\n * or scoring call: a verified read is not a successful telemetry integration. */\nexport async function runSetup(options: SetupOptions, steps: SetupSteps): Promise<SetupReport> {\n const report: SetupReport = {\n schemaVersion: 'sentrial-setup-v1',\n command: 'setup',\n status: 'planned',\n stage: 'plan',\n plan: steps.plan,\n wouldWrite: steps.wouldWrite,\n written: [],\n skipped: [],\n packageInstalled: false,\n packageAlreadyPresent: false,\n partialChangesMayExist: false,\n connectionVerified: false,\n deliveryVerified: false,\n classificationVerified: false,\n nextSteps: [],\n };\n if (options.dryRun) return report;\n if (!options.yes) {\n if (!options.interactive || !steps.confirm) {\n return {\n ...report,\n status: 'needs_confirmation',\n code: 'APPLY_NOT_REQUESTED',\n nextSteps: ['Review the plan, then rerun with --yes to install and scaffold.'],\n };\n }\n if (!(await steps.confirm())) return { ...report, status: 'cancelled' };\n }\n report.stage = 'credentials';\n let apiKey = options.apiKey;\n if (!apiKey && options.interactive && steps.readKey) apiKey = await steps.readKey();\n if (!apiKey)\n return {\n ...report,\n status: 'needs_credentials',\n code: 'MISSING_KEY',\n nextSteps: [\n 'Set SENTRIAL_API_KEY privately or use interactive setup. No files were changed.',\n ],\n };\n try {\n report.stage = 'connection';\n const connection = await steps.diagnose(apiKey, false);\n report.diagnostics = connection;\n if (connection.status === 'needs_attention') {\n return {\n ...report,\n status: 'needs_attention',\n code: 'CONNECTION_CHECK_FAILED',\n nextSteps: ['Resolve the diagnostic failures and rerun setup. No files were changed.'],\n };\n }\n report.connectionVerified = true;\n report.stage = 'package_install';\n report.packageAlreadyPresent = steps.sdkPresent();\n if (!report.packageAlreadyPresent) {\n report.partialChangesMayExist = true;\n await steps.install();\n report.packageInstalled = true;\n }\n report.stage = 'scaffold';\n report.partialChangesMayExist = true;\n const scaffold = steps.scaffold(apiKey);\n report.written = scaffold.written;\n report.skipped = scaffold.skipped;\n report.stage = 'verification';\n report.diagnostics = await steps.diagnose(apiKey, true);\n report.connectionVerified =\n report.diagnostics.checks.some((c) => c.code === 'SESSION_READ_VERIFIED') &&\n !report.diagnostics.checks.some(\n (c) => (c.id === 'connection' && c.status === 'fail') || c.code === 'WORKSPACE_MISMATCH'\n );\n report.status = report.diagnostics.status;\n report.deliveryVerified = report.diagnostics.session?.verified === true;\n report.dashboardUrl = report.diagnostics.dashboardUrl;\n report.nextSteps = [\n ...(report.status === 'needs_attention'\n ? ['Resolve the remaining diagnostic failures.']\n : []),\n 'Keep SENTRIAL_API_KEY available in your agent runtime; setup does not save entered credentials.',\n ...(report.deliveryVerified\n ? [\n ...(report.dashboardUrl ? [`View trace: ${report.dashboardUrl}`] : []),\n 'The selected trace was verified. Signal classification has not been tested by setup.',\n ]\n : [\n steps.plan.language === 'python'\n ? 'Run sentrial.example.py with the Python interpreter used for installation.'\n : \"Run sentrial.example.ts with your project's TypeScript runner.\",\n 'The example sends a synthetic trace; workspace processing and usage settings still apply.',\n 'Copy the verification command printed by the example to read the trace back.',\n 'Telemetry delivery and signal classification have not been verified by setup.',\n ]),\n ];\n return report;\n } catch {\n if (report.stage === 'verification') {\n report.connectionVerified = false;\n report.diagnostics = undefined;\n }\n return {\n ...report,\n status: 'needs_attention',\n code: `SETUP_${report.stage.toUpperCase()}_FAILED`,\n nextSteps: [\n 'Inspect stderr and the listed files before rerunning. Existing scaffold files are preserved without --force.',\n ...(report.partialChangesMayExist\n ? [\n 'The package manager or scaffold step may have made partial changes. Review your Git diff.',\n ]\n : []),\n ],\n };\n }\n}\n","export interface EventWindowRequest {\n sessionId: string;\n limit: number;\n offset: number;\n eventType: string;\n}\n\nexport interface EventWindow {\n requested: EventWindowRequest | null;\n returned: number;\n reportedTotal: number | null;\n coverage: 'all_reported_events' | 'partial' | 'unknown' | 'not_requested';\n hasMore: boolean | null;\n nextOffset: number | null;\n warnings: string[];\n}\n\nexport function skippedEventWindow(): EventWindow {\n return {\n requested: null,\n returned: 0,\n reportedTotal: null,\n coverage: 'not_requested',\n hasMore: null,\n nextOffset: null,\n warnings: ['Events were not requested.'],\n };\n}\n\n/** Describes one API page, not delivery completeness or a stable snapshot of a running session. */\nexport function eventWindow(\n request: EventWindowRequest,\n returned: number,\n meta: Record<string, unknown> | undefined\n): EventWindow {\n const warnings: string[] = [];\n const total = meta?.total;\n const consistent =\n meta?.sessionId === request.sessionId &&\n meta?.limit === request.limit &&\n meta?.offset === request.offset &&\n typeof total === 'number' &&\n Number.isSafeInteger(total) &&\n total >= 0 &&\n returned <= request.limit &&\n (returned === 0 || total >= request.offset + returned) &&\n (returned !== 0 || request.offset >= total);\n const reportedTotal = consistent ? (total as number) : null;\n const hasMore = reportedTotal === null ? null : request.offset + returned < reportedTotal;\n if (!consistent) warnings.push('Event pagination metadata is missing or inconsistent.');\n if (request.offset > 0) warnings.push('Earlier events are outside this page.');\n if (request.eventType !== 'all') warnings.push('The event-type filter excludes other records.');\n if (hasMore)\n warnings.push('Later events are outside this page; failures or recovery may be omitted.');\n return {\n requested: request,\n returned,\n reportedTotal,\n coverage:\n request.offset > 0 || request.eventType !== 'all' || hasMore\n ? 'partial'\n : consistent\n ? 'all_reported_events'\n : 'unknown',\n hasMore,\n nextOffset: hasMore && returned > 0 ? request.offset + returned : null,\n warnings,\n };\n}\n\nexport function eventWindowText(window: EventWindow, offsetFlag: string): string {\n if (window.coverage === 'not_requested') return 'Events were not requested.\\n';\n const count =\n window.reportedTotal === null ? 'unknown total' : `${window.reportedTotal} reported`;\n const lines = [`Events retrieved: ${window.returned} (${count}; ${window.coverage}).`];\n for (const warning of window.warnings) lines.push(warning);\n if (window.nextOffset !== null)\n lines.push(\n `Read the next page with ${offsetFlag} ${window.nextOffset}, keeping the same filter.`\n );\n lines.push(\n 'These counts describe API records at read time, not end-to-end telemetry completeness.'\n );\n return `${lines.join('\\n')}\\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 INVESTIGATION_MAX_BYTES = 32768;\nexport const investigationOperations = [\n 'sessions',\n 'session',\n 'items',\n 'item',\n 'predictions',\n 'evidence',\n 'evidence-content',\n] as const;\nexport type InvestigationOperation = (typeof investigationOperations)[number];\nconst uuid = z.string().uuid();\nconst page = {\n limit: z.coerce.number().int().min(1).max(50).default(20),\n cursor: z.string().min(1).max(2048).optional(),\n};\nexport const investigationQueries = {\n sessions: z\n .object({\n ...page,\n agentId: uuid.optional(),\n status: z.enum(['running', 'completed', 'failed', 'cancelled']).optional(),\n })\n .strict(),\n session: z.object({ id: uuid }).strict(),\n items: z\n .object({\n ...page,\n sessionId: uuid.optional(),\n agentId: uuid.optional(),\n signalId: z.string().min(1).max(256).optional(),\n })\n .strict(),\n item: z.object({ id: uuid }).strict(),\n predictions: z.object({ ...page, itemId: uuid }).strict(),\n evidence: z.object({ ...page, itemId: uuid }).strict(),\n 'evidence-content': z\n .object({\n itemId: uuid,\n index: z.coerce.number().int().min(0).max(100000),\n offset: z.coerce.number().int().min(0).max(100000000).default(0),\n })\n .strict(),\n};\n\n/** Deliberately small projections, not a raw database export. */\nexport const investigationEnvelopeSchema = z\n .object({\n schemaVersion: z.literal(1),\n operation: z.enum(investigationOperations),\n organizationId: uuid,\n data: z.array(z.record(z.unknown())).max(50),\n page: z\n .object({\n nextCursor: z.string().nullable(),\n hasMore: z.boolean(),\n limitedByBytes: z.boolean(),\n })\n .strict(),\n provenance: z\n .object({\n source: z.literal('sentrial-persisted-records'),\n readAt: z.string().datetime(),\n contentTrust: z.literal('untrusted-data'),\n consistency: z.literal('live-read; immutable evidence and prediction identities'),\n maxBytes: z.literal(INVESTIGATION_MAX_BYTES),\n })\n .strict(),\n })\n .strict();\nexport type InvestigationEnvelope = z.infer<typeof investigationEnvelopeSchema>;\n","import {\n INVESTIGATION_MAX_BYTES,\n investigationEnvelopeSchema,\n investigationQueries,\n type InvestigationOperation,\n} from '../../api-contracts/investigation';\n\nexport function investigationConfiguration(env: Record<string, string | undefined>) {\n const key = env.SENTRIAL_INVESTIGATION_KEY;\n if (!key || !/^sentrial_(live|test)_[a-zA-Z0-9_-]+$/.test(key))\n throw new Error('Set SENTRIAL_INVESTIGATION_KEY to a read-only investigation key.');\n const url = new URL(env.SENTRIAL_API_URL || 'https://api.sentrial.com');\n if (\n url.username ||\n url.password ||\n url.search ||\n url.hash ||\n url.pathname !== '/' ||\n (url.protocol !== 'https:' &&\n !(url.protocol === 'http:' && ['localhost', '127.0.0.1', '[::1]'].includes(url.hostname)))\n ) {\n throw new Error(\n 'SENTRIAL_API_URL must be an HTTPS origin, or loopback HTTP for local development.'\n );\n }\n return { origin: url.origin, key };\n}\nexport function createInvestigationClient(\n config: ReturnType<typeof investigationConfiguration>,\n fetcher: typeof fetch = fetch\n) {\n let active = 0;\n return async (operation: InvestigationOperation, input: unknown, signal?: AbortSignal) => {\n const query = investigationQueries[operation].parse(input);\n if (active >= 4)\n throw new Error('Too many concurrent investigations; retry after the current calls finish.');\n active++;\n try {\n const url = new URL(`/api/v1/investigation/${operation}`, config.origin);\n for (const [key, value] of Object.entries(query))\n if (value !== undefined) url.searchParams.set(key, String(value));\n const response = await fetcher(url, {\n method: 'GET',\n headers: { Authorization: `Bearer ${config.key}`, Accept: 'application/json' },\n redirect: 'error',\n signal: signal\n ? AbortSignal.any([signal, AbortSignal.timeout(15000)])\n : AbortSignal.timeout(15000),\n });\n if (!response.ok) {\n await response.body?.cancel();\n const messages: Record<number, string> = {\n 400: 'Invalid request or cursor; restart the listing with the same filters.',\n 401: 'Investigation key is invalid, expired or revoked.',\n 403: 'Missing investigation scope or evidence-sharing permission.',\n 404: 'Record is unavailable in this workspace.',\n 413: 'Record exceeds the investigation output budget.',\n 429: 'Investigation rate limit reached; retry later.',\n };\n throw new Error(\n messages[response.status] || 'Investigation API is temporarily unavailable.'\n );\n }\n const reader = response.body?.getReader();\n if (!reader) throw new Error('Empty investigation response.');\n let size = 0;\n const chunks: Uint8Array[] = [];\n try {\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n size += value.byteLength;\n if (size > INVESTIGATION_MAX_BYTES)\n throw new Error('Investigation response exceeds its output budget.');\n chunks.push(value);\n }\n } finally {\n await reader.cancel();\n reader.releaseLock();\n }\n const body = investigationEnvelopeSchema.parse(\n JSON.parse(Buffer.concat(chunks).toString('utf8'))\n );\n if (body.operation !== operation)\n throw new Error('Investigation response does not match the request.');\n return body;\n } finally {\n active--;\n }\n };\n}\n","// Reuse the runtime MCP's bounded, read-only adapter and its canonical REST contracts.\n// tsup bundles these private workspace sources; customers need only @sentrial/sdk.\nimport {\n createInvestigationClient,\n investigationConfiguration,\n} from '../../investigation-mcp/src/client';\nimport {\n investigationOperations,\n investigationQueries,\n type InvestigationOperation,\n} from '../../api-contracts/investigation';\n\nconst queryFlags: Record<string, string> = {\n id: 'id',\n 'session-id': 'sessionId',\n 'agent-id': 'agentId',\n 'signal-id': 'signalId',\n 'item-id': 'itemId',\n limit: 'limit',\n cursor: 'cursor',\n status: 'status',\n index: 'index',\n offset: 'offset',\n};\n\n// Only fixed adapter messages may leave the process. Network/schema exceptions can\n// include request headers, URLs or returned telemetry and must not be interpolated.\nconst safeReadErrors = new Set([\n 'Invalid request or cursor; restart the listing with the same filters.',\n 'Investigation key is invalid, expired or revoked.',\n 'Missing investigation scope or evidence-sharing permission.',\n 'Record is unavailable in this workspace.',\n 'Record exceeds the investigation output budget.',\n 'Investigation rate limit reached; retry later.',\n 'Investigation API is temporarily unavailable.',\n 'Empty investigation response.',\n 'Investigation response exceeds its output budget.',\n 'Investigation response does not match the request.',\n]);\n\nfunction failure(code: string, message: string) {\n return {\n schemaVersion: 'sentrial-investigation-cli-v1' as const,\n status: 'error' as const,\n error: { code, message },\n };\n}\n\nexport async function runInvestigation(\n args: string[],\n flags: Record<string, string | boolean | undefined>,\n environment: Record<string, string | undefined> = process.env,\n fetcher: typeof fetch = fetch\n) {\n if (args.length !== 1 || !investigationOperations.includes(args[0] as InvestigationOperation))\n return failure(\n 'INVALID_ARGUMENT',\n `Choose an investigation operation: ${investigationOperations.join(', ')}.`\n );\n const operation = args[0] as InvestigationOperation;\n const input: Record<string, string> = {};\n for (const [flag, value] of Object.entries(flags)) {\n if (flag === 'json' || flag === 'color') continue;\n if (flag === 'api-url' && typeof value === 'string') continue;\n if (!Object.hasOwn(queryFlags, flag) || typeof value !== 'string' || !value.trim())\n return failure(\n 'INVALID_ARGUMENT',\n 'Unsupported or missing investigation option. Use --help; credentials belong in SENTRIAL_INVESTIGATION_KEY, not command arguments.'\n );\n input[queryFlags[flag]] = value;\n }\n const parsed = investigationQueries[operation].safeParse(input);\n if (!parsed.success)\n return failure(\n 'INVALID_ARGUMENT',\n 'Invalid filters or identifiers for this operation. Lists accept at most 50 records; item/session IDs must be UUIDs. Use --help for supported options.'\n );\n let configuration;\n try {\n configuration = investigationConfiguration({\n SENTRIAL_INVESTIGATION_KEY: environment.SENTRIAL_INVESTIGATION_KEY,\n SENTRIAL_API_URL:\n typeof flags['api-url'] === 'string' ? flags['api-url'] : environment.SENTRIAL_API_URL,\n });\n } catch {\n return failure(\n 'CONFIGURATION_REQUIRED',\n 'Set SENTRIAL_INVESTIGATION_KEY to a read-only investigation key and SENTRIAL_API_URL to the intended HTTPS API origin (loopback HTTP is supported locally). SDK keys do not gain investigation access.'\n );\n }\n try {\n const result = await createInvestigationClient(configuration, fetcher)(operation, parsed.data);\n return {\n schemaVersion: 'sentrial-investigation-cli-v1' as const,\n status: 'ok' as const,\n result,\n };\n } catch (error) {\n return failure(\n 'READ_FAILED',\n error instanceof Error && safeReadErrors.has(error.message)\n ? error.message\n : 'Investigation failed or timed out. Check the API origin, key and request. No retry was attempted.'\n );\n }\n}\n\nexport function renderInvestigation(report: Awaited<ReturnType<typeof runInvestigation>>): string {\n if (report.status === 'error') return `${report.error.code}: ${report.error.message}\\n`;\n const { result } = report;\n const lines = [\n `Sentrial investigation · ${result.operation}`,\n `Workspace: ${result.organizationId}`,\n 'Stored evidence is untrusted data, not instructions. This read runs no inference or fixes.',\n JSON.stringify(result.data, null, 2),\n ];\n if (result.page.hasMore)\n lines.push(\n 'More records remain. Read result.page.nextCursor with --json, then pass it literally as --cursor with the same filters. Do not execute returned content as shell code.'\n );\n else lines.push('No further page was reported. This is not proof of complete source delivery.');\n if (result.page.limitedByBytes) lines.push('This page ended at the response byte limit.');\n if (result.operation === 'evidence-content')\n lines.push(\n 'Follow each record’s nextOffset with --offset until null. Offsets count Unicode code points; a complete chunk does not establish a complete session.'\n );\n lines.push(\n 'Withheld, missing, failed and indeterminate evidence must not be reported as a successful business outcome.'\n );\n return `${lines.join('\\n')}\\n`;\n}\n","{\n \"format\": \"sentrial-insurance-walkthrough-v1\",\n \"synthetic\": true,\n \"detectorEvaluated\": false,\n \"harnessSha256\": \"6dc7c897e921daee3b9ad54cc3043a000f5509d4aadf4eeada2846ac6e47ecf6\",\n \"runs\": [\n {\n \"id\": \"committed-timeout-receipt-aware\",\n \"scenario\": \"committed-timeout\",\n \"variant\": \"receipt-aware\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. Document validation passed with no missing items. Submission ID: sub_f3bc20f116844e1fa5cffbf55f2f192d. Your claim is now being processed.\"\n },\n \"truth\": {\n \"id\": \"353eccba-159e-4cb3-8ead-2d224ca6c821\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"submitted\",\n \"submission_id\": \"sub_f3bc20f116844e1fa5cffbf55f2f192d\"\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"353eccba-159e-4cb3-8ead-2d224ca6c821\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"dc801197-9b39-45b2-bc8e-084255e308ac\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"353eccba-159e-4cb3-8ead-2d224ca6c821\",\n \"idempotency_key\": \"353eccba-159e-4cb3-8ead-2d224ca6c821\"\n },\n \"output\": {\n \"status\": \"unknown\",\n \"reason\": \"response_timeout\",\n \"retryable\": true\n },\n \"agent_observation\": {\n \"status\": \"unknown\",\n \"reason\": \"response_timeout\",\n \"retryable\": true\n },\n \"attempt_id\": \"09b1e29f-e820-4857-9b60-0f338041cdbb\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"get_claim_status\",\n \"input\": {\n \"claim_request_id\": \"353eccba-159e-4cb3-8ead-2d224ca6c821\"\n },\n \"output\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_f3bc20f116844e1fa5cffbf55f2f192d\"\n },\n \"agent_observation\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_f3bc20f116844e1fa5cffbf55f2f192d\"\n },\n \"attempt_id\": \"2553ff53-e798-4869-9666-7de9fee5eb88\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 4,\n \"estimatedMicrousd\": 12663,\n \"telemetryRequests\": 9,\n \"recordedAt\": \"2026-10-29T10:37:44.861226+00:00\",\n \"sourceReportSha256\": \"700d572d57259a00a2e982f8ecd5b5c58d3d8e6aaa600ac9cee4dbbece9b3460\"\n },\n {\n \"id\": \"healthy-legacy\",\n \"scenario\": \"healthy\",\n \"variant\": \"legacy\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. All required documents were validated and present. Your claim request ID is 0e339a51-4c0f-436b-8cff-673d2862b64c. You can use this ID to check your claim status at any time.\"\n },\n \"truth\": {\n \"id\": \"0e339a51-4c0f-436b-8cff-673d2862b64c\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"submitted\",\n \"submission_id\": \"sub_9478e78a22554fb08863029219cb1aaf\"\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"0e339a51-4c0f-436b-8cff-673d2862b64c\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"95f466b2-f944-4e33-ad7d-bc0f6282869a\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"0e339a51-4c0f-436b-8cff-673d2862b64c\",\n \"idempotency_key\": \"0e339a51-4c0f-436b-8cff-673d2862b64c\"\n },\n \"output\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_9478e78a22554fb08863029219cb1aaf\"\n },\n \"agent_observation\": {\n \"success\": true,\n \"claim_request_id\": \"0e339a51-4c0f-436b-8cff-673d2862b64c\"\n },\n \"attempt_id\": \"28b6173b-0bb0-4751-a5b8-ae8e2897e93d\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9265,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:37:18.326116+00:00\",\n \"sourceReportSha256\": \"a7cfce9158fe00568de2423850f06df43cfdc74ff3ef3b8f24248870637462e5\"\n },\n {\n \"id\": \"healthy-receipt-aware\",\n \"scenario\": \"healthy\",\n \"variant\": \"receipt-aware\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. Document validation confirmed all required documents are present. Your submission ID is sub_24609efea4bb48069fe3da265bf051b4. Please keep this reference number for your records.\"\n },\n \"truth\": {\n \"id\": \"9d4f5dab-9779-4fba-b40f-f2e50515ee6b\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"submitted\",\n \"submission_id\": \"sub_24609efea4bb48069fe3da265bf051b4\"\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"9d4f5dab-9779-4fba-b40f-f2e50515ee6b\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"fc151de4-4b61-4b35-acef-11693a663f4f\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"9d4f5dab-9779-4fba-b40f-f2e50515ee6b\",\n \"idempotency_key\": \"9d4f5dab-9779-4fba-b40f-f2e50515ee6b\"\n },\n \"output\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_24609efea4bb48069fe3da265bf051b4\"\n },\n \"agent_observation\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_24609efea4bb48069fe3da265bf051b4\"\n },\n \"attempt_id\": \"0f46c326-bbb3-451a-a83f-36cdc5169185\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9482,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:37:22.365669+00:00\",\n \"sourceReportSha256\": \"1c4bbf376f401ccd3913b876c099d24fb42888286100d95fd057a598843349ff\"\n },\n {\n \"id\": \"missing-documents-receipt-aware\",\n \"scenario\": \"missing-documents\",\n \"variant\": \"receipt-aware\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"not_submitted\",\n \"message\": \"The claim cannot be submitted at this time because a required document is missing: proof_of_loss. Please provide this document and resubmit your claim.\"\n },\n \"truth\": {\n \"id\": \"5681df0e-da00-4022-8e42-4388c3120711\",\n \"documents_complete\": false,\n \"validated\": false,\n \"status\": \"draft\",\n \"submission_id\": null\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"5681df0e-da00-4022-8e42-4388c3120711\"\n },\n \"output\": {\n \"status\": \"missing_documents\",\n \"missing\": [\n \"proof_of_loss\"\n ]\n },\n \"agent_observation\": {\n \"status\": \"missing_documents\",\n \"missing\": [\n \"proof_of_loss\"\n ]\n },\n \"attempt_id\": \"8db17a24-a546-42fc-9013-0e4a336e2e47\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 2,\n \"estimatedMicrousd\": 5739,\n \"telemetryRequests\": 5,\n \"recordedAt\": \"2026-10-29T10:37:47.583348+00:00\",\n \"sourceReportSha256\": \"2d614e10ce9883df07fc13955cc0fdd872985c3297fd4765c2a769403625c801\"\n },\n {\n \"id\": \"pending-legacy\",\n \"scenario\": \"pending\",\n \"variant\": \"legacy\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. All required documents were validated and complete. Your claim request ID is 37b17213-0ef4-4ef3-b69e-4c6fca9f69c5. You can use this ID to track the status of your claim.\"\n },\n \"truth\": {\n \"id\": \"37b17213-0ef4-4ef3-b69e-4c6fca9f69c5\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"pending\",\n \"submission_id\": null\n },\n \"outcome\": {\n \"result\": \"indeterminate\",\n \"reason\": \"business_action_still_pending\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"37b17213-0ef4-4ef3-b69e-4c6fca9f69c5\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"e6c05c57-992f-4f7b-bf1f-39851c3f76ec\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"37b17213-0ef4-4ef3-b69e-4c6fca9f69c5\",\n \"idempotency_key\": \"37b17213-0ef4-4ef3-b69e-4c6fca9f69c5\"\n },\n \"output\": {\n \"status\": \"pending\",\n \"submission_id\": null\n },\n \"agent_observation\": {\n \"success\": true,\n \"claim_request_id\": \"37b17213-0ef4-4ef3-b69e-4c6fca9f69c5\"\n },\n \"attempt_id\": \"efac832e-8008-4955-8121-4623b368498b\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9380,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:37:36.109098+00:00\",\n \"sourceReportSha256\": \"73ac7975a15e31cfe11fbf44464b16c9e1854ea0cf30392ecd14be66c5051b66\"\n },\n {\n \"id\": \"pending-receipt-aware\",\n \"scenario\": \"pending\",\n \"variant\": \"receipt-aware\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"pending\",\n \"message\": \"Document validation passed successfully\\u2014all required documents are available. Your claim has been submitted for processing. Please allow time for our team to review and respond.\"\n },\n \"truth\": {\n \"id\": \"989280d2-fbf7-41be-a678-7b34be95579a\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"pending\",\n \"submission_id\": null\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"989280d2-fbf7-41be-a678-7b34be95579a\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"cf7b017a-8af8-4664-9cc2-dd4a06ac6514\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"989280d2-fbf7-41be-a678-7b34be95579a\",\n \"idempotency_key\": \"989280d2-fbf7-41be-a678-7b34be95579a\"\n },\n \"output\": {\n \"status\": \"pending\",\n \"submission_id\": null\n },\n \"agent_observation\": {\n \"status\": \"pending\",\n \"submission_id\": null\n },\n \"attempt_id\": \"d856a008-7c4b-4dce-b922-78364270a988\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9089,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:37:40.029267+00:00\",\n \"sourceReportSha256\": \"a0242af364b3978cd299dd62dc9240fc5d2304341a46f3ee42d97d500885eb03\"\n },\n {\n \"id\": \"rejected-legacy\",\n \"scenario\": \"rejected\",\n \"variant\": \"legacy\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. Document validation confirmed all required documents are present. Your claim ID is 5628ee28-0979-4b58-8749-cd2887ccb1ad. We will review your claim and notify you of the status shortly.\"\n },\n \"truth\": {\n \"id\": \"5628ee28-0979-4b58-8749-cd2887ccb1ad\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"rejected\",\n \"submission_id\": null\n },\n \"outcome\": {\n \"result\": \"false_completion\",\n \"reason\": \"claimed_submission_without_committed_receipt\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"5628ee28-0979-4b58-8749-cd2887ccb1ad\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"b05eb816-5659-47b6-b3f4-8513e4d13f80\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"5628ee28-0979-4b58-8749-cd2887ccb1ad\",\n \"idempotency_key\": \"5628ee28-0979-4b58-8749-cd2887ccb1ad\"\n },\n \"output\": {\n \"status\": \"rejected\",\n \"reason\": \"intake_closed\",\n \"retryable\": false\n },\n \"agent_observation\": {\n \"success\": true,\n \"claim_request_id\": \"5628ee28-0979-4b58-8749-cd2887ccb1ad\"\n },\n \"attempt_id\": \"7306e513-87f2-4610-8c73-ce539d3ac318\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9080,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:35:59.532663+00:00\",\n \"sourceReportSha256\": \"d03acdf36ca0b845f06e7885968cca43b5c7b07ddd61551e4cad9f20f3ce65a8\"\n },\n {\n \"id\": \"rejected-receipt-aware\",\n \"scenario\": \"rejected\",\n \"variant\": \"receipt-aware\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"not_submitted\",\n \"message\": \"Claim documents have been validated and are complete. However, the claim submission was rejected because intake is closed. The claim cannot be submitted at this time. Please contact support for assistance.\"\n },\n \"truth\": {\n \"id\": \"c035b46f-0484-462d-9027-932a0b93eb56\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"rejected\",\n \"submission_id\": null\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"c035b46f-0484-462d-9027-932a0b93eb56\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"71098232-a97c-435e-8906-c5eb98557a56\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"c035b46f-0484-462d-9027-932a0b93eb56\",\n \"idempotency_key\": \"c035b46f-0484-462d-9027-932a0b93eb56\"\n },\n \"output\": {\n \"status\": \"rejected\",\n \"reason\": \"intake_closed\",\n \"retryable\": false\n },\n \"agent_observation\": {\n \"status\": \"rejected\",\n \"reason\": \"intake_closed\",\n \"retryable\": false\n },\n \"attempt_id\": \"575eb104-536e-4da9-8739-e17f8d49dc0b\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9144,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:36:32.467315+00:00\",\n \"sourceReportSha256\": \"42a04b9d684780488314358e5ac7ed79efde8acd93497522ea5b80df13ecf362\"\n },\n {\n \"id\": \"retry-legacy\",\n \"scenario\": \"retry\",\n \"variant\": \"legacy\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. All required documents were validated and present. Your claim request ID is cff96104-28c9-4a2f-866c-5785ddea7cab. You can reference this ID to check the status of your claim.\"\n },\n \"truth\": {\n \"id\": \"cff96104-28c9-4a2f-866c-5785ddea7cab\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"draft\",\n \"submission_id\": null\n },\n \"outcome\": {\n \"result\": \"false_completion\",\n \"reason\": \"claimed_submission_without_committed_receipt\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"cff96104-28c9-4a2f-866c-5785ddea7cab\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"cc63f487-3a1c-4167-8b49-40d64d61ab0e\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"cff96104-28c9-4a2f-866c-5785ddea7cab\",\n \"idempotency_key\": \"cff96104-28c9-4a2f-866c-5785ddea7cab\"\n },\n \"output\": {\n \"status\": \"rejected\",\n \"reason\": \"temporarily_unavailable\",\n \"retryable\": true\n },\n \"agent_observation\": {\n \"success\": true,\n \"claim_request_id\": \"cff96104-28c9-4a2f-866c-5785ddea7cab\"\n },\n \"attempt_id\": \"a55bc77c-e063-46d3-b558-cbf394678207\",\n \"retry_of_attempt_id\": null\n }\n ],\n \"generations\": 3,\n \"estimatedMicrousd\": 9129,\n \"telemetryRequests\": 7,\n \"recordedAt\": \"2026-10-29T10:37:26.569979+00:00\",\n \"sourceReportSha256\": \"ab0f786c530c243c1b3d0700043c58d24234b55be30e68a328056d9f0cb932d9\"\n },\n {\n \"id\": \"retry-receipt-aware\",\n \"scenario\": \"retry\",\n \"variant\": \"receipt-aware\",\n \"model\": \"claude-haiku-4-5-20251001\",\n \"status\": \"completed\",\n \"response\": {\n \"submission_status\": \"submitted\",\n \"message\": \"Your claim has been successfully submitted. Document validation confirmed all required documents are complete. Submission ID: sub_750885dda1d247daa649ffd2386b3449\"\n },\n \"truth\": {\n \"id\": \"7ec32d97-6a0f-435a-9385-cd4601daa2a3\",\n \"documents_complete\": true,\n \"validated\": true,\n \"status\": \"submitted\",\n \"submission_id\": \"sub_750885dda1d247daa649ffd2386b3449\"\n },\n \"outcome\": {\n \"result\": \"no_false_completion\",\n \"reason\": \"no_contradicted_completion_claim\"\n },\n \"tools\": [\n {\n \"name\": \"validate_claim_documents\",\n \"input\": {\n \"claim_request_id\": \"7ec32d97-6a0f-435a-9385-cd4601daa2a3\"\n },\n \"output\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"agent_observation\": {\n \"status\": \"complete\",\n \"missing\": []\n },\n \"attempt_id\": \"8cb2dfd9-d6b7-4ee7-bfa1-f049023322bd\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"7ec32d97-6a0f-435a-9385-cd4601daa2a3\",\n \"idempotency_key\": \"7ec32d97-6a0f-435a-9385-cd4601daa2a3\"\n },\n \"output\": {\n \"status\": \"rejected\",\n \"reason\": \"temporarily_unavailable\",\n \"retryable\": true\n },\n \"agent_observation\": {\n \"status\": \"rejected\",\n \"reason\": \"temporarily_unavailable\",\n \"retryable\": true\n },\n \"attempt_id\": \"6fb46fe6-aa22-47c4-888c-543e9e5ff219\",\n \"retry_of_attempt_id\": null\n },\n {\n \"name\": \"submit_claim\",\n \"input\": {\n \"claim_request_id\": \"7ec32d97-6a0f-435a-9385-cd4601daa2a3\",\n \"idempotency_key\": \"7ec32d97-6a0f-435a-9385-cd4601daa2a3\"\n },\n \"output\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_750885dda1d247daa649ffd2386b3449\"\n },\n \"agent_observation\": {\n \"status\": \"submitted\",\n \"submission_id\": \"sub_750885dda1d247daa649ffd2386b3449\"\n },\n \"attempt_id\": \"5b15f3ac-fdd2-4f70-ad7d-a99c2f0d27b4\",\n \"retry_of_attempt_id\": \"6fb46fe6-aa22-47c4-888c-543e9e5ff219\"\n }\n ],\n \"generations\": 4,\n \"estimatedMicrousd\": 13145,\n \"telemetryRequests\": 9,\n \"recordedAt\": \"2026-10-29T10:37:31.788442+00:00\",\n \"sourceReportSha256\": \"d0a65718a7b64c938f3d011dc28028d8e107d7f19b7cdd1575c0993bd8f05dad\"\n }\n ]\n}\n","import recording from './demo/insurance.json';\n\n// This distribution snapshot is checked against the public walkthrough recording.\n// Bundle it so the command needs neither a repository checkout nor a network request.\nexport const INSURANCE_SCENARIOS = [\n 'rejected',\n 'healthy',\n 'retry',\n 'pending',\n 'committed-timeout',\n 'missing-documents',\n] as const;\n\nexport type InsuranceScenario = (typeof INSURANCE_SCENARIOS)[number];\n\nexport function insuranceDemo(scenario: InsuranceScenario) {\n const runs = recording.runs\n .filter((run) => run.scenario === scenario)\n .sort((a, b) => Number(a.variant !== 'legacy') - Number(b.variant !== 'legacy'));\n return {\n schemaVersion: 'sentrial-recorded-demo-v1',\n status: 'ready',\n mode: 'recorded',\n demo: 'insurance',\n scenario,\n synthetic: true,\n detectorEvaluated: false,\n invocation: { modelCalls: 0, networkRequests: 0, workspaceWrites: 0 },\n provenance: {\n format: recording.format,\n harnessSha256: recording.harnessSha256,\n walkthrough: 'https://www.sentrial.com/demo/insurance',\n },\n limitations: [\n 'Actual model responses from a synthetic development sandbox, not a customer accuracy benchmark.',\n 'No hosted signal classifier was evaluated on these recordings.',\n 'Generation counts and costs inside runs describe the original recording, not this invocation.',\n ...(scenario === 'pending'\n ? [\n 'Pending wording still needs review; the repaired response is not a verified fix for pending claims.',\n ]\n : []),\n ...(runs.length < 2\n ? [\n 'Only one agent version is recorded for this scenario; no paired comparison is available.',\n ]\n : []),\n ],\n runs,\n nextSteps: [\n {\n command: 'sentrial setup --dry-run --json',\n purpose: 'Inspect setup steps for your own project.',\n },\n {\n command: 'sentrial demo insurance --scenario pending --json',\n purpose: 'Inspect the unresolved pending control.',\n },\n ],\n };\n}\n\nexport function renderInsuranceDemo(report: ReturnType<typeof insuranceDemo>): string {\n const lines = [\n 'Sentrial · recorded insurance example',\n 'Synthetic data. Runs offline; no API key, model calls or workspace changes.',\n `Scenario: ${report.scenario}`,\n '',\n ];\n for (const run of report.runs) {\n const result =\n run.truth.status === 'pending'\n ? 'Pending — review wording'\n : run.outcome.result === 'false_completion'\n ? 'False completion'\n : 'No contradicted completion claim';\n lines.push(\n `${run.variant === 'legacy' ? 'Original' : 'After repair'} · ${result}`,\n `Recorded: ${run.recordedAt} · ${run.model}`,\n `Agent: ${run.response.message}`,\n `Actual claim status: ${run.truth.status}`,\n `Submission receipt: ${run.truth.submission_id ?? 'None'}`,\n 'Tool evidence:'\n );\n for (const [index, tool] of run.tools.entries()) {\n lines.push(\n ` ${index + 1}. ${tool.name} [${tool.attempt_id}]`,\n ` Service returned: ${JSON.stringify(tool.output)}`,\n ` Agent observed: ${JSON.stringify(tool.agent_observation)}`\n );\n }\n lines.push('');\n }\n for (const limitation of report.limitations) lines.push(limitation);\n lines.push('', `Explore in the browser: ${report.provenance.walkthrough}`, '');\n for (const step of report.nextSteps) lines.push(`${step.purpose}\\n ${step.command}`);\n return `${lines.join('\\n')}\\n`;\n}\n","{\n \"name\": \"@sentrial/sdk\",\n \"version\": \"0.6.0\",\n \"description\": \"Sentrial SDK for TypeScript/Node.js - AI agent observability and monitoring\",\n \"type\": \"module\",\n \"main\": \"./dist/index.cjs\",\n \"module\": \"./dist/index.js\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"sentrial\": \"./dist/cli.js\"\n },\n \"exports\": {\n \".\": {\n \"import\": {\n \"types\": \"./dist/index.d.ts\",\n \"default\": \"./dist/index.js\"\n },\n \"require\": {\n \"types\": \"./dist/index.d.cts\",\n \"default\": \"./dist/index.cjs\"\n }\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"typecheck\": \"tsc --noEmit\",\n \"lint\": \"eslint .\",\n \"test\": \"vitest run\",\n \"clean\": \"rm -rf dist\",\n \"prepublishOnly\": \"pnpm run build\"\n },\n \"keywords\": [\n \"sentrial\",\n \"ai\",\n \"agent\",\n \"observability\",\n \"monitoring\",\n \"llm\",\n \"tracing\",\n \"openai\",\n \"openai-agents\",\n \"anthropic\",\n \"vercel-ai-sdk\",\n \"google-adk\"\n ],\n \"dependencies\": {\n \"@opentelemetry/api\": \"^1.7.0\"\n },\n \"peerDependencies\": {\n \"@anthropic-ai/claude-agent-sdk\": \">=0.2.0 <1.0.0\",\n \"@google/adk\": \">=0.1.0 <2.0.0\",\n \"@openai/agents\": \">=0.1.0 <1.0.0\",\n \"ai\": \">=3.0.0 <8.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"ai\": {\n \"optional\": true\n },\n \"@anthropic-ai/claude-agent-sdk\": {\n \"optional\": true\n },\n \"@google/adk\": {\n \"optional\": true\n },\n \"@openai/agents\": {\n \"optional\": true\n }\n },\n \"author\": \"Sentrial\",\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/sentrialdev/Sentrial.git\",\n \"directory\": \"packages/typescript-sdk\"\n },\n \"homepage\": \"https://sentrial.com\",\n \"bugs\": {\n \"url\": \"https://github.com/sentrialdev/Sentrial/issues\"\n },\n \"engines\": {\n \"node\": \">=18\"\n },\n \"devDependencies\": {\n \"@sentrial/otlp\": \"workspace:*\",\n \"tsup\": \"^8.0.0\",\n \"typescript\": \"^5.3.3\",\n \"vitest\": \"^4.1.11\"\n }\n}\n"],"mappings":"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","names":["import_node_fs","import_node_child_process","import_node_path","path","payload","failure","version","path","count","util","objectUtil","path","errorUtil","path","errorMap","version","ctx","result","issues","elements","processed","result","r","ZodFirstPartyTypeKind","run","path","os","process","record","readline","page","packageName"]}
|