@hanzo/ui 8.27.60 → 8.27.61

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.
Files changed (44) hide show
  1. package/dist/chat/Composer.cjs +1 -1
  2. package/dist/chat/Composer.d.ts +1 -1
  3. package/dist/chat/Composer.js +1 -1
  4. package/dist/gallery.cjs +4 -4
  5. package/dist/gallery.d.ts.map +1 -1
  6. package/dist/gallery.html +4 -5
  7. package/dist/gallery.js +5 -5
  8. package/dist/gallery.js.map +1 -1
  9. package/dist/index.cjs +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/index.node.cjs +1 -1
  12. package/dist/index.node.js +1 -1
  13. package/dist/models/ModelPicker.cjs +191 -0
  14. package/dist/models/ModelPicker.d.ts +27 -0
  15. package/dist/models/ModelPicker.d.ts.map +1 -0
  16. package/dist/models/ModelPicker.js +189 -0
  17. package/dist/models/ModelPicker.js.map +1 -0
  18. package/dist/models/catalog.cjs +313 -184
  19. package/dist/models/catalog.d.ts +101 -38
  20. package/dist/models/catalog.d.ts.map +1 -1
  21. package/dist/models/catalog.js +295 -179
  22. package/dist/models/catalog.js.map +1 -1
  23. package/dist/models/index.cjs +33 -12
  24. package/dist/models/index.d.ts +7 -4
  25. package/dist/models/index.d.ts.map +1 -1
  26. package/dist/models/index.js +7 -6
  27. package/dist/models/index.js.map +1 -1
  28. package/dist/models/picker.logic.cjs +83 -0
  29. package/dist/models/picker.logic.d.ts +51 -0
  30. package/dist/models/picker.logic.d.ts.map +1 -0
  31. package/dist/models/picker.logic.js +74 -0
  32. package/dist/models/picker.logic.js.map +1 -0
  33. package/dist/product/limits.cjs +14 -13
  34. package/dist/product/limits.d.ts +9 -10
  35. package/dist/product/limits.d.ts.map +1 -1
  36. package/dist/product/limits.js +14 -12
  37. package/dist/product/limits.js.map +1 -1
  38. package/dist/styles.css +1 -2
  39. package/package.json +1 -1
  40. package/dist/models/ModelSelector.cjs +0 -80
  41. package/dist/models/ModelSelector.d.ts +0 -44
  42. package/dist/models/ModelSelector.d.ts.map +0 -1
  43. package/dist/models/ModelSelector.js +0 -78
  44. package/dist/models/ModelSelector.js.map +0 -1
@@ -1,213 +1,329 @@
1
- /**
2
- * @hanzo/ui/models — Model catalog data layer
3
- *
4
- * Pure, SSR-safe helpers shared by the unified ModelSelector. No React,
5
- * no browser globals — usable on the server, in edge runtimes, or the client.
6
- *
7
- * ModelCatalogEntry is the gateway/OpenAI-shaped record ({ id, owned_by, ... })
8
- * returned by `${baseUrl}/models`. It is intentionally distinct from the
9
- * registry-shaped ZenModelLike in ./types (which drives the marketing cards).
10
- */
11
1
  /**
12
2
  * The models that exist and cannot be called, said once for every list of
13
3
  * models: a picker draws each one disabled, a catalogue page draws it muted.
14
- *
15
- * No gateway serves them, and that is the point: `/v1/models` never answers for
16
- * one, so nothing can route to it. A host that lists them appends these to what
17
- * the gateway said.
4
+ * `/v1/models` never answers for one, so nothing can route to it.
18
5
  */
19
6
  export const RESEARCH = [
20
7
  {
21
8
  id: 'zen7',
22
9
  owned_by: 'zenlm',
23
- label: 'Zen 7',
10
+ family: 'zen',
11
+ name: 'Zen 7',
24
12
  access: 'research',
25
13
  request: 'https://hanzo.ai/research-access',
26
14
  description: 'The next open-weight generation after Zen 6, in research preview.',
27
15
  },
28
16
  ];
17
+ /** The catalog with the research models it does not already list, appended. */
18
+ export function withResearch(models) {
19
+ const ids = new Set(models.map((m) => m.id));
20
+ return [...models, ...RESEARCH.filter((m) => !ids.has(m.id))];
21
+ }
22
+ // ── reading the wire ─────────────────────────────────────────────────────────
23
+ const CLASSES = ['premium', 'ours', 'free'];
24
+ const FAMILY_IDS = ['enso', 'zen', 'kai', 'jev', 'zoo'];
25
+ const str = (v) => (typeof v === 'string' && v.trim() ? v : undefined);
26
+ const num = (v) => (typeof v === 'number' && Number.isFinite(v) ? v : undefined);
27
+ const pos = (v) => {
28
+ const n = num(v);
29
+ return n !== undefined && n > 0 ? n : undefined;
30
+ };
31
+ const yes = (v) => (v === true ? true : undefined);
32
+ const strs = (v) => {
33
+ if (!Array.isArray(v))
34
+ return undefined;
35
+ const out = v.filter((x) => typeof x === 'string' && x.trim() !== '').map((x) => x.toLowerCase());
36
+ return out.length ? out : undefined;
37
+ };
38
+ const oneOf = (set, v) => typeof v === 'string' && set.includes(v) ? v : undefined;
39
+ function pricingOf(v) {
40
+ if (!v || typeof v !== 'object')
41
+ return undefined;
42
+ const p = v;
43
+ const input = num(p.input_per_million);
44
+ const output = num(p.output_per_million);
45
+ if (input === undefined && output === undefined)
46
+ return undefined;
47
+ return {
48
+ ...(input !== undefined && input >= 0 ? { input_per_million: input } : {}),
49
+ ...(output !== undefined && output >= 0 ? { output_per_million: output } : {}),
50
+ };
51
+ }
52
+ /** One row, checked field by field: it is a network response. Null without an id. */
53
+ export function modelOf(v) {
54
+ if (!v || typeof v !== 'object')
55
+ return null;
56
+ const r = v;
57
+ const id = str(r.id);
58
+ if (!id)
59
+ return null;
60
+ const m = { id };
61
+ const set = (k, val) => {
62
+ if (val !== undefined)
63
+ m[k] = val;
64
+ };
65
+ set('owned_by', str(r.owned_by));
66
+ set('name', str(r.name));
67
+ set('description', str(r.description));
68
+ set('class', oneOf(CLASSES, r.class));
69
+ set('family', oneOf(FAMILY_IDS, r.family));
70
+ set('premium', typeof r.premium === 'boolean' ? r.premium : undefined);
71
+ set('created', pos(r.created));
72
+ set('context_window', pos(r.context_window));
73
+ set('max_output_tokens', pos(r.max_output_tokens));
74
+ set('inputs', strs(r.inputs));
75
+ set('outputs', strs(r.outputs));
76
+ set('supports_vision', yes(r.supports_vision));
77
+ set('supports_tools', yes(r.supports_tools));
78
+ set('supports_reasoning', yes(r.supports_reasoning));
79
+ set('pricing', pricingOf(r.pricing));
80
+ return m;
81
+ }
29
82
  /**
30
- * owned_by → display family.
31
- *
32
- * There is no `hanzo` entry, and its absence is the point. It used to say
33
- * `hanzo: 'Zen'`, which was wrong twice: Zoo Labs Foundation makes Zen, and the
34
- * gateway does not report Zen that way — it answers `owned_by: 'zenlm'`. What
35
- * `owned_by: 'hanzo'` actually names is the dozen models Hanzo serves under its
36
- * own namespace, so that entry filed Whisper, Kokoro, GLM, Kimi, Qwen3.5 and
37
- * MiniMax under "Zen" as well. Without it each falls to its id prefix and lands
38
- * where it belongs, and what is genuinely Hanzo's capitalizes to "Hanzo".
83
+ * The catalog from a `/v1/models` body (`{data: [...]}`) or its `data` array.
84
+ * Rows without an id are dropped; a repeated id keeps its first row.
39
85
  */
40
- const OWNER_FAMILY = {
41
- zenlm: 'Zen',
86
+ export function parseModels(body) {
87
+ const rows = Array.isArray(body)
88
+ ? body
89
+ : body && typeof body === 'object' && Array.isArray(body.data)
90
+ ? (body.data)
91
+ : [];
92
+ const seen = new Set();
93
+ const out = [];
94
+ for (const row of rows) {
95
+ const m = modelOf(row);
96
+ if (!m || seen.has(m.id))
97
+ continue;
98
+ seen.add(m.id);
99
+ out.push(m);
100
+ }
101
+ return out;
102
+ }
103
+ /**
104
+ * Fetch the catalog from an OpenAI-shaped `/models` endpoint. No caching, no
105
+ * state: the host owns both. Throws on a non-2xx answer.
106
+ */
107
+ export async function fetchModelCatalog(baseUrl, token) {
108
+ const base = (baseUrl ?? 'https://api.hanzo.ai/v1').replace(/\/+$/, '');
109
+ const headers = { Accept: 'application/json' };
110
+ if (token)
111
+ headers.Authorization = `Bearer ${token}`;
112
+ const res = await fetch(`${base}/models`, { headers });
113
+ if (!res.ok)
114
+ throw new Error(`fetchModelCatalog: ${res.status} ${res.statusText}`);
115
+ return parseModels(await res.json());
116
+ }
117
+ // ── what a model is ──────────────────────────────────────────────────────────
118
+ /** The families, in the order every surface leads with them. */
119
+ export const FAMILIES = [
120
+ { id: 'enso', label: 'Enso' },
121
+ { id: 'zen', label: 'Zen' },
122
+ { id: 'kai', label: 'Kai' },
123
+ { id: 'jev', label: 'Jev' },
124
+ { id: 'zoo', label: 'Zoo' },
125
+ ];
126
+ export const CLASS_NAMES = {
127
+ premium: 'Premium',
128
+ ours: 'Hanzo',
129
+ free: 'Free',
130
+ };
131
+ /** The makers whose name is not their id capitalized. */
132
+ const MAKERS = {
133
+ 'aion-labs': 'Aion Labs',
134
+ 'arcee-ai': 'Arcee AI',
135
+ 'bytedance-seed': 'ByteDance Seed',
136
+ 'dots-studio': 'dots.studio',
137
+ 'ibm-granite': 'IBM Granite',
138
+ 'inference-net': 'Inference.net',
139
+ 'meta-llama': 'Meta Llama',
140
+ 'nex-agi': 'Nex AGI',
141
+ 'prism-ml': 'Prism ML',
142
+ 'x-ai': 'xAI',
143
+ 'z-ai': 'Z.ai',
144
+ ai21: 'AI21',
42
145
  anthropic: 'Anthropic',
43
- openai: 'OpenAI',
146
+ bytedance: 'ByteDance',
147
+ cognitivecomputations: 'Cognitive Computations',
44
148
  deepseek: 'DeepSeek',
45
- alibaba: 'Qwen',
46
- qwen: 'Qwen',
47
- meta: 'Meta Llama',
48
- mistralai: 'Mistral',
49
- mistral: 'Mistral',
50
- google: 'Google Gemma',
149
+ inclusionai: 'inclusionAI',
150
+ minimax: 'MiniMax',
151
+ mistralai: 'Mistral AI',
152
+ moonshotai: 'Moonshot AI',
153
+ nousresearch: 'Nous Research',
51
154
  nvidia: 'NVIDIA',
52
- moonshot: 'Kimi',
155
+ openai: 'OpenAI',
156
+ openrouter: 'OpenRouter',
157
+ rekaai: 'Reka AI',
158
+ thedrummer: 'TheDrummer',
159
+ thinkingmachines: 'Thinking Machines',
160
+ typesafe: 'TypeSafe',
161
+ zenlm: 'Zen LM',
53
162
  };
54
- /** What the picker leads with; everything else sorts alphabetically after these. */
55
- const FAMILY_ORDER = ['Enso', 'Zen', 'Anthropic', 'OpenAI'];
56
- function capitalize(s) {
57
- return s ? s.charAt(0).toUpperCase() + s.slice(1) : s;
58
- }
59
- /** Infer a family from an id prefix. Returns undefined when nothing matches. */
60
- function familyFromId(id) {
61
- if (id.startsWith('enso'))
62
- return 'Enso';
63
- if (id.startsWith('zen'))
64
- return 'Zen';
65
- if (id.startsWith('claude'))
66
- return 'Anthropic';
67
- if (id.startsWith('gpt') || id === 'o1' || id.startsWith('o1-') || id.startsWith('o3'))
68
- return 'OpenAI';
69
- if (id.startsWith('qwen'))
70
- return 'Qwen';
71
- if (id.startsWith('llama'))
72
- return 'Meta Llama';
73
- if (id.startsWith('glm'))
74
- return 'GLM';
75
- if (id.startsWith('kimi'))
76
- return 'Kimi';
77
- if (id.startsWith('deepseek'))
78
- return 'DeepSeek';
79
- if (id.startsWith('mistral'))
80
- return 'Mistral';
81
- if (id.startsWith('gemma'))
82
- return 'Google Gemma';
83
- if (id.startsWith('nemotron'))
84
- return 'NVIDIA';
85
- if (id.startsWith('minimax'))
86
- return 'MiniMax';
87
- if (id.startsWith('mimo'))
88
- return 'MiMo';
89
- return undefined;
163
+ /** Who made a model, as the catalog keys it: `owned_by`, lowercased, without OpenRouter's `~` alias mark. */
164
+ export function makerOf(m) {
165
+ return (m.owned_by ?? '').trim().replace(/^~/, '').toLowerCase() || 'other';
166
+ }
167
+ /** A maker's display name. */
168
+ export function makerName(maker) {
169
+ return (MAKERS[maker] ??
170
+ maker
171
+ .split(/[-_]/)
172
+ .filter(Boolean)
173
+ .map((w) => w[0].toUpperCase() + w.slice(1))
174
+ .join(' '));
175
+ }
176
+ /** The name a model is shown by: the catalog's name, else its id. */
177
+ export function modelName(m) {
178
+ return m.name ?? m.id;
179
+ }
180
+ export function groupKey(m) {
181
+ return m.family ? `family:${m.family}` : `maker:${makerOf(m)}`;
182
+ }
183
+ export function groupLabel(m) {
184
+ const f = m.family && FAMILIES.find((x) => x.id === m.family);
185
+ return f ? f.label : makerName(makerOf(m));
90
186
  }
91
187
  /**
92
- * Resolve the display family of a model.
93
- * Precedence: explicit `family` → enso id (house split, beats owned_by) →
94
- * owned_by map → llama id under any owner → capitalized owned_by → id prefix → "Other".
188
+ * Models in groups: Hanzo's families first, in FAMILIES order, then every maker
189
+ * by name. Models keep the order they came in, so the caller sorts first.
95
190
  */
96
- export function familyOf(m) {
97
- const explicit = m.family?.trim();
98
- if (explicit)
99
- return explicit;
100
- const id = (m.id ?? '').toLowerCase();
101
- // Enso ids form their own house family regardless of owned_by.
102
- if (id.startsWith('enso'))
103
- return 'Enso';
104
- const owned = m.owned_by?.toLowerCase().trim();
105
- if (owned) {
106
- const byOwner = OWNER_FAMILY[owned];
107
- if (byOwner)
108
- return byOwner;
109
- // llama* ids resolve to Meta Llama even under a different owner.
110
- const byId = familyFromId(id);
111
- if (byId)
112
- return byId;
113
- return capitalize(owned);
114
- }
115
- return familyFromId(id) ?? 'Other';
116
- }
117
- function orderFamilies(a, b) {
118
- const ia = FAMILY_ORDER.indexOf(a);
119
- const ib = FAMILY_ORDER.indexOf(b);
120
- if (ia !== -1 || ib !== -1) {
121
- if (ia === -1)
122
- return 1;
123
- if (ib === -1)
124
- return -1;
125
- return ia - ib;
191
+ export function groupModels(models) {
192
+ const groups = new Map();
193
+ for (const m of models) {
194
+ const key = groupKey(m);
195
+ let g = groups.get(key);
196
+ if (!g) {
197
+ g = { key, label: groupLabel(m), ...(m.family ? { family: m.family } : {}), models: [] };
198
+ groups.set(key, g);
199
+ }
200
+ g.models.push(m);
126
201
  }
127
- return a.localeCompare(b);
202
+ const rank = (g) => (g.family ? FAMILIES.findIndex((f) => f.id === g.family) : FAMILIES.length);
203
+ return [...groups.values()].sort((a, b) => rank(a) - rank(b) || a.label.localeCompare(b.label));
128
204
  }
205
+ const has = (list, ...want) => !!list && want.some((w) => list.includes(w));
129
206
  /**
130
- * Group models by family, ordered house-then-marquee-then-alphabetical.
131
- * Model order within each family is the input order (stable).
207
+ * What a model can do, read from what it publishes. A model that names no
208
+ * outputs is read as a text model, the way the gateway serves it.
132
209
  */
133
- export function groupModelsByFamily(models) {
134
- const byFamily = new Map();
135
- for (const m of models) {
136
- const fam = familyOf(m);
137
- const arr = byFamily.get(fam);
138
- if (arr)
139
- arr.push(m);
140
- else
141
- byFamily.set(fam, [m]);
210
+ export function capabilitiesOf(m) {
211
+ const out = [];
212
+ const embeddings = has(m.outputs, 'embeddings', 'embedding');
213
+ const rerank = has(m.outputs, 'rerank');
214
+ const decision = has(m.outputs, 'decision');
215
+ const text = !m.outputs || has(m.outputs, 'text');
216
+ if (text && !embeddings && !rerank && !decision)
217
+ out.push('chat');
218
+ if (m.supports_vision || has(m.inputs, 'image'))
219
+ out.push('vision');
220
+ if (embeddings)
221
+ out.push('embeddings');
222
+ if (rerank)
223
+ out.push('rerank');
224
+ if (has(m.outputs, 'image'))
225
+ out.push('image');
226
+ if (has(m.outputs, 'video'))
227
+ out.push('video');
228
+ if (has(m.outputs, 'audio', 'transcript') || has(m.inputs, 'audio'))
229
+ out.push('audio');
230
+ if (decision)
231
+ out.push('decision');
232
+ if (m.supports_tools)
233
+ out.push('tools');
234
+ if (m.supports_reasoning)
235
+ out.push('reasoning');
236
+ return out;
237
+ }
238
+ export function can(m, c) {
239
+ return capabilitiesOf(m).includes(c);
240
+ }
241
+ export const CAPABILITY_NAMES = {
242
+ chat: 'Chat',
243
+ vision: 'Vision',
244
+ embeddings: 'Embeddings',
245
+ rerank: 'Rerank',
246
+ image: 'Image',
247
+ video: 'Video',
248
+ audio: 'Audio',
249
+ decision: 'Decision',
250
+ tools: 'Tools',
251
+ reasoning: 'Reasoning',
252
+ };
253
+ /** Whether `id` matches a paused entry: the same id, or a glob whose `*` stands for any run of characters. */
254
+ export function matchesPaused(id, pattern) {
255
+ if (!pattern.includes('*'))
256
+ return id === pattern;
257
+ const parts = pattern.split('*');
258
+ if (!id.startsWith(parts[0]) || !id.endsWith(parts.at(-1)))
259
+ return false;
260
+ let at = parts[0].length;
261
+ const end = id.length - parts.at(-1).length;
262
+ for (const part of parts.slice(1, -1)) {
263
+ const i = id.indexOf(part, at);
264
+ if (i < 0 || i + part.length > end)
265
+ return false;
266
+ at = i + part.length;
142
267
  }
143
- return Array.from(byFamily.keys())
144
- .sort(orderFamilies)
145
- .map((family) => ({ family, models: byFamily.get(family) }));
146
- }
147
- /** Modality/id keywords that mark a model as NOT chat-capable. */
148
- const NON_CHAT = [
149
- 'embedding',
150
- 'embed',
151
- 'image',
152
- 'video',
153
- 'music',
154
- 'voice',
155
- 'tts',
156
- 'rerank',
157
- 'guard',
158
- 'foley',
159
- 'moderation',
160
- 'router',
161
- ];
268
+ return at <= end;
269
+ }
162
270
  /**
163
- * True when a model can be used for chat. Excludes embedding/image/video/
164
- * music/voice/tts/rerank/guard/foley/moderation/router by explicit modality
165
- * or by an id-segment heuristic.
271
+ * Whether the payer's plan has paused this model: its whole class is limited,
272
+ * or an entry in `paused` names it. It is still listed and still picked; the
273
+ * gateway refuses it or answers from Enso.
166
274
  */
167
- export function isChatModel(m) {
168
- const modality = (m.modality ?? '').toLowerCase().trim();
169
- if (modality && NON_CHAT.some((k) => modality.includes(k)))
170
- return false;
171
- const id = (m.id ?? '').toLowerCase();
172
- if (NON_CHAT.some((k) => id.includes(k)))
275
+ export function isPaused(m, limits) {
276
+ if (!limits)
173
277
  return false;
174
- return true;
278
+ if (m.class && limits.classes[m.class]?.state === 'limited')
279
+ return true;
280
+ return !!limits.paused?.some((p) => matchesPaused(m.id, p.model));
175
281
  }
176
- /** Keep only chat-capable models. */
177
- export function filterChatModels(models) {
178
- return models.filter(isChatModel);
282
+ /** Case-insensitive search: every word of the query appears in the model's id, name, maker, group or description. */
283
+ export function matchesModel(m, query) {
284
+ const words = query.trim().toLowerCase().split(/\s+/).filter(Boolean);
285
+ if (!words.length)
286
+ return true;
287
+ const hay = [m.id, m.name, makerOf(m), makerName(makerOf(m)), groupLabel(m), m.description]
288
+ .filter(Boolean)
289
+ .join(' ')
290
+ .toLowerCase();
291
+ return words.every((w) => hay.includes(w));
179
292
  }
180
- /**
181
- * Fetch a model catalog from an OpenAI-shaped `/models` endpoint.
182
- * SSR-safe: uses global fetch, no browser globals, no caching/state —
183
- * consumers own caching. Throws on a non-2xx response.
184
- */
185
- export async function fetchModelCatalog(baseUrl, token) {
186
- const base = (baseUrl ?? 'https://api.hanzo.ai/v1').replace(/\/+$/, '');
187
- const headers = { Accept: 'application/json' };
188
- if (token)
189
- headers.Authorization = `Bearer ${token}`;
190
- const res = await fetch(`${base}/models`, { headers });
191
- if (!res.ok) {
192
- throw new Error(`fetchModelCatalog: ${res.status} ${res.statusText}`);
193
- }
194
- const json = await res.json();
195
- const rows = Array.isArray(json)
196
- ? json
197
- : Array.isArray(json?.data)
198
- ? json.data
199
- : [];
200
- return rows
201
- .map((d) => ({
202
- id: String(d.id),
203
- owned_by: d.owned_by ?? d.ownedBy ?? undefined,
204
- family: d.family ?? undefined,
205
- label: d.label ?? d.name ?? undefined,
206
- premium: d.premium ?? undefined,
207
- modality: d.modality ?? undefined,
208
- context_window: d.context_window ?? d.contextWindow ?? d.context ?? undefined,
209
- description: d.description ?? undefined,
210
- }))
211
- .filter((m) => m.id && m.id !== 'undefined');
293
+ /** A sorted copy. Context and price put models without the figure last. */
294
+ export function sortModels(models, by = 'name') {
295
+ const name = (a, b) => modelName(a).localeCompare(modelName(b));
296
+ const last = (v, dir) => (v === undefined ? Infinity : dir * v);
297
+ return [...models].sort((a, b) => {
298
+ switch (by) {
299
+ case 'newest':
300
+ return (b.created ?? 0) - (a.created ?? 0) || name(a, b);
301
+ case 'context':
302
+ return last(a.context_window, -1) - last(b.context_window, -1) || name(a, b);
303
+ case 'price':
304
+ return last(a.pricing?.input_per_million, 1) - last(b.pricing?.input_per_million, 1) || name(a, b);
305
+ default:
306
+ return name(a, b);
307
+ }
308
+ });
309
+ }
310
+ // ── how a figure reads ───────────────────────────────────────────────────────
311
+ /** "200K", "1M", "1.5M"; "" when the catalog states no window. */
312
+ export function formatContext(n) {
313
+ if (!n)
314
+ return '';
315
+ if (n >= 1_000_000)
316
+ return `${+(n / 1_000_000).toFixed(1)}M`;
317
+ if (n >= 1000)
318
+ return `${Math.round(n / 1000)}K`;
319
+ return String(n);
320
+ }
321
+ /** "$3.00" per 1M tokens, "Free" at zero, "" when the catalog lists no price. */
322
+ export function formatPrice(n) {
323
+ if (n === undefined)
324
+ return '';
325
+ if (n === 0)
326
+ return 'Free';
327
+ return n < 0.01 ? `$${+n.toPrecision(2)}` : `$${n.toFixed(2)}`;
212
328
  }
213
329
  //# sourceMappingURL=catalog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/models/catalog.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,38 @@
1
1
  "use strict";
2
- // @hanzo/ui/models — the unified, data-agnostic model picker + catalog helpers.
2
+ // @hanzo/ui/models — the model catalog and the one model picker.
3
3
  //
4
- // import { ModelSelector, fetchModelCatalog } from '@hanzo/ui/models'
5
- // const models = await fetchModelCatalog()
6
- // <ModelSelector models={models} value={id} onChange={setId} />
4
+ // import { ModelPicker, fetchModelCatalog, defaultModel } from '@hanzo/ui/models'
5
+ // const models = await fetchModelCatalog(api, token)
6
+ // <ModelPicker models={models} value={id} onChange={setId} limits={limits} />
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.RESEARCH = exports.fetchModelCatalog = exports.filterChatModels = exports.isChatModel = exports.groupModelsByFamily = exports.familyOf = exports.ModelSelector = void 0;
9
- var ModelSelector_1 = require("./ModelSelector.cjs");
10
- Object.defineProperty(exports, "ModelSelector", { enumerable: true, get: function () { return ModelSelector_1.ModelSelector; } });
8
+ exports.visibleRange = exports.pickerRows = exports.defaultModel = exports.ENSO = exports.withResearch = exports.sortModels = exports.parseModels = exports.modelOf = exports.modelName = exports.matchesPaused = exports.matchesModel = exports.makerOf = exports.makerName = exports.isPaused = exports.groupModels = exports.groupLabel = exports.groupKey = exports.formatPrice = exports.formatContext = exports.fetchModelCatalog = exports.capabilitiesOf = exports.can = exports.RESEARCH = exports.FAMILIES = exports.CLASS_NAMES = exports.CAPABILITY_NAMES = exports.ModelPicker = void 0;
9
+ var ModelPicker_1 = require("./ModelPicker.cjs");
10
+ Object.defineProperty(exports, "ModelPicker", { enumerable: true, get: function () { return ModelPicker_1.ModelPicker; } });
11
11
  var catalog_1 = require("./catalog.cjs");
12
- Object.defineProperty(exports, "familyOf", { enumerable: true, get: function () { return catalog_1.familyOf; } });
13
- Object.defineProperty(exports, "groupModelsByFamily", { enumerable: true, get: function () { return catalog_1.groupModelsByFamily; } });
14
- Object.defineProperty(exports, "isChatModel", { enumerable: true, get: function () { return catalog_1.isChatModel; } });
15
- Object.defineProperty(exports, "filterChatModels", { enumerable: true, get: function () { return catalog_1.filterChatModels; } });
16
- Object.defineProperty(exports, "fetchModelCatalog", { enumerable: true, get: function () { return catalog_1.fetchModelCatalog; } });
12
+ Object.defineProperty(exports, "CAPABILITY_NAMES", { enumerable: true, get: function () { return catalog_1.CAPABILITY_NAMES; } });
13
+ Object.defineProperty(exports, "CLASS_NAMES", { enumerable: true, get: function () { return catalog_1.CLASS_NAMES; } });
14
+ Object.defineProperty(exports, "FAMILIES", { enumerable: true, get: function () { return catalog_1.FAMILIES; } });
17
15
  Object.defineProperty(exports, "RESEARCH", { enumerable: true, get: function () { return catalog_1.RESEARCH; } });
16
+ Object.defineProperty(exports, "can", { enumerable: true, get: function () { return catalog_1.can; } });
17
+ Object.defineProperty(exports, "capabilitiesOf", { enumerable: true, get: function () { return catalog_1.capabilitiesOf; } });
18
+ Object.defineProperty(exports, "fetchModelCatalog", { enumerable: true, get: function () { return catalog_1.fetchModelCatalog; } });
19
+ Object.defineProperty(exports, "formatContext", { enumerable: true, get: function () { return catalog_1.formatContext; } });
20
+ Object.defineProperty(exports, "formatPrice", { enumerable: true, get: function () { return catalog_1.formatPrice; } });
21
+ Object.defineProperty(exports, "groupKey", { enumerable: true, get: function () { return catalog_1.groupKey; } });
22
+ Object.defineProperty(exports, "groupLabel", { enumerable: true, get: function () { return catalog_1.groupLabel; } });
23
+ Object.defineProperty(exports, "groupModels", { enumerable: true, get: function () { return catalog_1.groupModels; } });
24
+ Object.defineProperty(exports, "isPaused", { enumerable: true, get: function () { return catalog_1.isPaused; } });
25
+ Object.defineProperty(exports, "makerName", { enumerable: true, get: function () { return catalog_1.makerName; } });
26
+ Object.defineProperty(exports, "makerOf", { enumerable: true, get: function () { return catalog_1.makerOf; } });
27
+ Object.defineProperty(exports, "matchesModel", { enumerable: true, get: function () { return catalog_1.matchesModel; } });
28
+ Object.defineProperty(exports, "matchesPaused", { enumerable: true, get: function () { return catalog_1.matchesPaused; } });
29
+ Object.defineProperty(exports, "modelName", { enumerable: true, get: function () { return catalog_1.modelName; } });
30
+ Object.defineProperty(exports, "modelOf", { enumerable: true, get: function () { return catalog_1.modelOf; } });
31
+ Object.defineProperty(exports, "parseModels", { enumerable: true, get: function () { return catalog_1.parseModels; } });
32
+ Object.defineProperty(exports, "sortModels", { enumerable: true, get: function () { return catalog_1.sortModels; } });
33
+ Object.defineProperty(exports, "withResearch", { enumerable: true, get: function () { return catalog_1.withResearch; } });
34
+ var picker_logic_1 = require("./picker.logic.cjs");
35
+ Object.defineProperty(exports, "ENSO", { enumerable: true, get: function () { return picker_logic_1.ENSO; } });
36
+ Object.defineProperty(exports, "defaultModel", { enumerable: true, get: function () { return picker_logic_1.defaultModel; } });
37
+ Object.defineProperty(exports, "pickerRows", { enumerable: true, get: function () { return picker_logic_1.pickerRows; } });
38
+ Object.defineProperty(exports, "visibleRange", { enumerable: true, get: function () { return picker_logic_1.visibleRange; } });
@@ -1,6 +1,9 @@
1
- export { ModelSelector } from './ModelSelector.js';
2
- export type { ModelSelectorProps } from './ModelSelector.js';
3
- export { familyOf, groupModelsByFamily, isChatModel, filterChatModels, fetchModelCatalog, RESEARCH, } from './catalog.js';
4
- export type { ModelCatalogEntry } from './catalog.js';
1
+ export { ModelPicker } from './ModelPicker.js';
2
+ export type { ModelPickerProps } from './ModelPicker.js';
3
+ export { CAPABILITY_NAMES, CLASS_NAMES, FAMILIES, RESEARCH, can, capabilitiesOf, fetchModelCatalog, formatContext, formatPrice, groupKey, groupLabel, groupModels, isPaused, makerName, makerOf, matchesModel, matchesPaused, modelName, modelOf, parseModels, sortModels, withResearch, } from './catalog.js';
4
+ export type { Capability, ModelCatalogEntry, ModelClass, ModelFamily, ModelGroup, ModelPricing, ModelSort, PauseSource, } from './catalog.js';
5
+ export type { PausedModel } from '../product/limits.js';
6
+ export { ENSO, defaultModel, pickerRows, visibleRange } from './picker.logic.js';
7
+ export type { PickerRow } from './picker.logic.js';
5
8
  export type { ZenModelLike, ModelFamilyLike, ModelSpecLike, ModelPricingLike } from './types.js';
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAEzD,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,GACT,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAElD,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/models/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAC3C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,GAAG,EACH,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,aAAa,EACb,SAAS,EACT,OAAO,EACP,WAAW,EACX,UAAU,EACV,YAAY,GACb,MAAM,WAAW,CAAA;AAClB,YAAY,EACV,UAAU,EACV,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,UAAU,EACV,YAAY,EACZ,SAAS,EACT,WAAW,GACZ,MAAM,WAAW,CAAA;AAClB,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7E,YAAY,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE/C,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA"}