mirror of
https://github.com/hanzo-apps/hanzo.ai.git
synced 2026-10-29 07:20:43 +00:00
60 lines
2.4 KiB
TypeScript
60 lines
2.4 KiB
TypeScript
/**
|
|
* Zen, said once. Every page that names a Zen generation reads it here —
|
|
* /models, /zen, /zen/models, the family cards, the Research menu and
|
|
* /research-access — so no two of them can disagree about which generation
|
|
* answers, which came before it, which is next, and what it is for.
|
|
*
|
|
* Zen 7 is @hanzo/ui's `RESEARCH` entry, the one the model pickers list, so a
|
|
* page and a picker cannot disagree about it either. Its request link is an
|
|
* absolute address there, because the pickers run on other hosts; here it is
|
|
* this site's own path.
|
|
*
|
|
* Zen is named as Zen: see lib/upstream for what the copy never says.
|
|
*/
|
|
import { RESEARCH } from '@hanzo/ui/models/catalog'
|
|
|
|
const zen7 = RESEARCH.find((m) => m.id === 'zen7')!
|
|
|
|
export interface Generation {
|
|
/** The id a caller passes, or the generation's own id when none answers yet. */
|
|
id: string
|
|
name: string
|
|
/** What it is, in a few words. */
|
|
what: string
|
|
/** The ids the gateway serves for it. */
|
|
ids: readonly string[]
|
|
}
|
|
|
|
/** The generation that answers now: Zen 6, and Zen 6 Flash, its compact build. */
|
|
export const NOW: Generation = { id: 'zen6', name: 'Zen 6', what: 'Available now', ids: ['zen6', 'zen6-flash'] }
|
|
|
|
/** The compact build of the generation that answers now. */
|
|
export const FLASH = { id: 'zen6-flash', name: 'Zen 6 Flash' } as const
|
|
|
|
/** The models that answer now, as the copy says them. */
|
|
export const LINEUP = `${NOW.name} and ${FLASH.name}`
|
|
|
|
/** The generation in research preview: listed everywhere, callable nowhere. */
|
|
export const NEXT = {
|
|
id: zen7.id,
|
|
name: zen7.name!,
|
|
what: 'Research preview',
|
|
blurb: zen7.description!,
|
|
// The catalog names the page; its Zen track is `?track=zen`, since /research-access
|
|
// opens on Creative AI (1dedf1e3) and a Zen 7 request landed there.
|
|
request: `${new URL(zen7.request!).pathname}?track=zen`,
|
|
} as const
|
|
|
|
/**
|
|
* The two jobs Zen 6 is chosen for. Video belongs to Zen 6; the ternary build
|
|
* reads text and images. The history of the family is components/zen/line.ts,
|
|
* not this module — the header imports NOW from here.
|
|
*/
|
|
export const USES = [
|
|
{ job: 'Agentic coding', detail: 'Long repositories, tool use, long context, and fast speculative decoding.' },
|
|
{ job: 'Multimodal work', detail: 'Zen 6 reads text, images, and video in one context.' },
|
|
] as const
|
|
|
|
/** The same two jobs, as one sentence. */
|
|
export const JOBS = `Built for ${USES.map((u) => u.job.toLowerCase()).join(' and ')}.`
|