hermesRuntimeEnvironment.ts 811 B

12345678910111213141516
  1. import { z } from 'zod'
  2. import type { HermesRuntimeMetadata } from '../shared/botEnvironment.js'
  3. const text = z.string().min(1).max(256).refine(value => !/[\u0000-\u001f]/.test(value))
  4. const tools = z.array(z.string().regex(/^[A-Za-z0-9_.:-]{1,128}$/)).max(256)
  5. const metadata = z.object({
  6. version: z.literal(1), profile: text, platform: text, osRelease: text, arch: text,
  7. nativeTools: z.object({ terminal: tools, files: tools, desktop: tools, browser: tools }),
  8. })
  9. /** Optional protocol extension: old or incompatible bridges leave facts unknown. */
  10. export function parseHermesRuntimeMetadata(value: unknown, profile: string): HermesRuntimeMetadata | undefined {
  11. const parsed = metadata.safeParse(value)
  12. if (!parsed.success || parsed.data.profile !== profile) return undefined
  13. return parsed.data
  14. }