bleam 0.0.9 → 0.0.11

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 (68) hide show
  1. package/dist/ai.cjs +608 -59
  2. package/dist/ai.d.cts +217 -89
  3. package/dist/ai.d.ts +217 -89
  4. package/dist/ai.js +601 -59
  5. package/dist/cli.cjs +142 -94
  6. package/dist/cli.d.cts +11 -27
  7. package/dist/cli.d.ts +11 -27
  8. package/dist/cli.js +143 -95
  9. package/dist/files.d.cts +1 -1
  10. package/dist/files.d.ts +1 -1
  11. package/dist/platform.cjs +1 -13
  12. package/dist/platform.d.cts +1 -26
  13. package/dist/platform.d.ts +1 -26
  14. package/dist/platform.js +1 -10
  15. package/dist/schema.d.cts +1 -1
  16. package/dist/schema.d.ts +1 -1
  17. package/dist/state.d.cts +1 -1
  18. package/dist/state.d.ts +1 -1
  19. package/dist/{ui-Bg11tvlc.d.ts → ui-CHc4xEs_.d.ts} +7 -7
  20. package/dist/ui.d.ts +1 -1
  21. package/dist/window.d.ts +1 -1
  22. package/package.json +2 -1
  23. package/templates/image-generation/app/index.tsx +3 -1
  24. package/templates/native/ios/Bleam/AI/Flux2/Configuration/ModelRegistry.swift +1 -1
  25. package/templates/native/ios/Bleam/AI/Flux2/Pipeline/FluxImageRunner.swift +7 -2
  26. package/templates/native/ios/Bleam/AI/TextGeneration/Bonsai/BonsaiTextGenerator.swift +46 -0
  27. package/templates/native/ios/Bleam/AI/TextGeneration/Bonsai/BonsaiTextModel.swift +107 -0
  28. package/templates/native/ios/Bleam/AI/TextGeneration/Bonsai/BonsaiTextSnapshotValidator.swift +201 -0
  29. package/templates/native/ios/Bleam/AI/TextGeneration/Core/GenerationTypes.swift +85 -0
  30. package/templates/native/ios/Bleam/AI/TextGeneration/Core/ModelCapabilities.swift +21 -0
  31. package/templates/native/ios/Bleam/AI/TextGeneration/Core/TextKVCache.swift +23 -0
  32. package/templates/native/ios/Bleam/AI/TextGeneration/Core/TokenSampler.swift +79 -0
  33. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen3/Qwen3CheckpointLoader.swift +161 -0
  34. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen3/Qwen3Configuration.swift +119 -0
  35. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen3/Qwen3InferenceSession.swift +84 -0
  36. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen3/Qwen3Layers.swift +197 -0
  37. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen3/Qwen3Model.swift +130 -0
  38. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen35/Qwen35Checkpoint.swift +102 -0
  39. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen35/Qwen35Configuration.swift +140 -0
  40. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen35/Qwen35Model.swift +112 -0
  41. package/templates/native/ios/Bleam/AI/TextGeneration/Qwen35/Qwen35Session.swift +121 -0
  42. package/templates/native/ios/Bleam/AI/TextGeneration/QwenHybrid/QwenHybridCache.swift +42 -0
  43. package/templates/native/ios/Bleam/AI/TextGeneration/QwenHybrid/QwenHybridFullAttention.swift +57 -0
  44. package/templates/native/ios/Bleam/AI/TextGeneration/QwenHybrid/QwenHybridLayers.swift +58 -0
  45. package/templates/native/ios/Bleam/AI/TextGeneration/QwenHybrid/QwenHybridLinearAttention.swift +111 -0
  46. package/templates/native/ios/Bleam/AppDelegate.swift +0 -97
  47. package/templates/native/ios/Bleam.xcodeproj/project.pbxproj +128 -121
  48. package/templates/native/ios/GenerationService/BonsaiTextGenerationRunner.swift +103 -0
  49. package/templates/native/ios/GenerationService/ImageGenerationRunner.swift +19 -7
  50. package/templates/native/ios/GenerationService/main.swift +174 -48
  51. package/templates/native/ios/Shared/Generation/GenerationServiceProtocol.swift +3 -0
  52. package/templates/native/ios/Shared/Generation/GenerationWorkerProtocol.swift +44 -0
  53. package/templates/native/modules/bleam-runtime/ios/AIModule.swift +225 -5
  54. package/templates/native/modules/bleam-runtime/ios/GenerationContracts.swift +47 -0
  55. package/templates/native/modules/bleam-runtime/ios/PlatformModule.swift +0 -175
  56. package/templates/text-generation/app/index.tsx +93 -0
  57. package/templates/text-generation/app.config.ts +5 -0
  58. package/templates/updates/README.md +116 -0
  59. package/templates/updates/src/index.ts +292 -0
  60. package/templates/updates/src/schema.ts +230 -0
  61. package/templates/updates/tsconfig.json +12 -0
  62. package/templates/updates/wrangler.jsonc +19 -0
  63. package/templates/native/ios/PlatformHelper/Info.plist +0 -29
  64. package/templates/native/ios/PlatformHelper/main.swift +0 -335
  65. /package/dist/{files-DwA7pzr3.d.cts → files-4ZEoAWiv.d.ts} +0 -0
  66. /package/dist/{files-VrkQlKIT.d.ts → files-Dt5mbzLq.d.cts} +0 -0
  67. /package/dist/{schema-DOOjfXvs.d.ts → schema-CYh6n8GS.d.ts} +0 -0
  68. /package/dist/{schema-ENSMX_1t.d.cts → schema-oeOrd3i1.d.cts} +0 -0
package/dist/ai.d.cts CHANGED
@@ -1,37 +1,48 @@
1
- import { s as FileRef } from "./files-DwA7pzr3.cjs";
2
- import { h as StandardSchema, p as SchemaResult, s as InferOutput } from "./schema-ENSMX_1t.cjs";
1
+ import { h as StandardSchema, p as SchemaResult, s as InferOutput } from "./schema-oeOrd3i1.cjs";
2
+ import { s as FileRef } from "./files-Dt5mbzLq.cjs";
3
3
 
4
- //#region src/ai/errors.d.ts
5
- type AIErrorCode = 'unsupported_runtime' | 'unsupported_os' | 'model_unavailable' | 'generation_failed' | 'generation_canceled' | 'concurrent_request' | 'guardrail_violation' | 'unsupported_language_or_locale' | 'rate_limited' | 'tool_failed' | 'image_generation_failed' | 'invalid_message' | 'invalid_schema' | 'invalid_model' | 'validation_failed' | 'context_window_exceeded';
6
- type ImageGenerationStage = 'download' | 'tokenize' | 'encode' | 'denoise' | 'decode' | 'write';
7
- type ImageGenerationErrorDetails = {
8
- stage: ImageGenerationStage;
9
- };
10
- declare class AIError extends Error {
11
- readonly code: AIErrorCode;
12
- readonly cause?: unknown | undefined;
13
- constructor(code: AIErrorCode, message: string, cause?: unknown | undefined);
14
- }
15
- declare class ImageGenerationError extends AIError {
16
- readonly stage: ImageGenerationStage;
17
- constructor(stage: ImageGenerationStage, message: string, cause?: unknown);
18
- }
4
+ //#region src/ai/bonsai.d.ts
5
+ type BonsaiTextModelId = 'ternary-bonsai-1.7b' | 'ternary-bonsai-4b' | 'ternary-bonsai-8b' | 'ternary-bonsai-27b';
6
+ type BonsaiImageModelId = 'ternary-bonsai-image-4b';
7
+ type BonsaiTextModel<Id extends BonsaiTextModelId = BonsaiTextModelId> = Readonly<{
8
+ provider: 'bonsai';
9
+ kind: 'text';
10
+ id: Id;
11
+ }>;
12
+ type BonsaiImageModel<Id extends BonsaiImageModelId = BonsaiImageModelId> = Readonly<{
13
+ provider: 'bonsai';
14
+ kind: 'image';
15
+ id: Id;
16
+ }>;
17
+ type BonsaiModel = BonsaiTextModel | BonsaiImageModel;
18
+ type BonsaiTextModelMetadata = Readonly<{
19
+ id: BonsaiTextModelId;
20
+ repo: string;
21
+ revision: string;
22
+ estimatedDownloadBytes: number;
23
+ contextLength: number;
24
+ }>;
25
+ declare const bonsaiTextModelCatalog: readonly BonsaiTextModelMetadata[];
26
+ declare function bonsai<const Id extends BonsaiTextModelId>(id: Id): BonsaiTextModel<Id>;
27
+ declare function bonsai<const Id extends BonsaiImageModelId>(id: Id): BonsaiImageModel<Id>;
19
28
  //#endregion
20
29
  //#region src/ai/image-models.d.ts
21
30
  type FluxImageModelId = 'flux2-klein-4b-8bit-abliterated';
31
+ type ImageModelId = FluxImageModelId | 'ternary-bonsai-image-4b';
32
+ type ImageModel = ImageModelId | BonsaiImageModel;
22
33
  type ImageModelCapability = 'text-to-image' | 'image-to-image' | 'inpainting' | 'outpainting' | 'references' | 'lora';
23
34
  type ImageModelMetadata = {
24
35
  displayName: string;
25
- family: 'flux2-klein';
26
- precision: '8-bit';
36
+ family: 'flux2-klein' | 'bonsai-image';
37
+ precision: '8-bit' | '2-bit';
27
38
  estimatedMemoryGB: number;
28
39
  quality: 'high';
29
40
  speed: 'fast';
30
41
  capabilities: ImageModelCapability[];
31
42
  };
32
- type FluxImageModelManifest = {
43
+ type ImageModelManifest = {
33
44
  formatVersion: 1;
34
- model: FluxImageModelId;
45
+ model: ImageModelId;
35
46
  directory: string;
36
47
  metadata: ImageModelMetadata;
37
48
  components: {
@@ -40,6 +51,9 @@ type FluxImageModelManifest = {
40
51
  vae: FluxModelComponentManifest;
41
52
  };
42
53
  };
54
+ type FluxImageModelManifest = ImageModelManifest & {
55
+ model: FluxImageModelId;
56
+ };
43
57
  type FluxModelComponentManifest = {
44
58
  repo: string;
45
59
  revision: string;
@@ -51,13 +65,13 @@ type FluxTokenizedPrompt = {
51
65
  attentionMask: number[];
52
66
  };
53
67
  type FluxImageModelPaths = {
54
- modelRoot: string;
68
+ path: string;
55
69
  textEncoderPath: string;
56
70
  transformerPath: string;
57
71
  vaePath: string;
58
72
  };
59
73
  type PrepareImageModelProgress = {
60
- model: FluxImageModelId;
74
+ model: ImageModelId;
61
75
  file: string;
62
76
  index: number;
63
77
  total: number;
@@ -76,7 +90,8 @@ type PrepareImageLoRAProgress = {
76
90
  fraction?: number;
77
91
  };
78
92
  type PrepareImageModelOptions = {
79
- model?: FluxImageModelId;
93
+ model?: ImageModel;
94
+ directory?: string;
80
95
  accessToken?: string;
81
96
  concurrency?: number;
82
97
  onProgress?: (progress: PrepareImageModelProgress) => void;
@@ -98,7 +113,7 @@ type ImageLoRASource = {
98
113
  };
99
114
  type ImageLoRAPrecision = 'float16' | 'bfloat16' | 'float32';
100
115
  type ImageLoRAMetadata = {
101
- baseModel?: FluxImageModelId;
116
+ baseModel?: ImageModelId;
102
117
  precision?: ImageLoRAPrecision;
103
118
  recommendedScale?: number;
104
119
  sigmaSchedule?: number[];
@@ -130,7 +145,7 @@ type ImageLoRAState = PreparedImageLoRA & {
130
145
  size?: number;
131
146
  };
132
147
  type PreparedImageModel = FluxImageModelPaths & {
133
- model: FluxImageModelId;
148
+ model: ImageModelId;
134
149
  tokenizer: FluxTokenizer;
135
150
  };
136
151
  type FluxTokenizer = (input: {
@@ -175,8 +190,8 @@ type GenerateImageOptions = {
175
190
  guidance?: number;
176
191
  strength?: number;
177
192
  seed?: number;
178
- model?: FluxImageModelId;
179
- modelRoot?: string;
193
+ model?: ImageModel;
194
+ path?: string;
180
195
  tokenizer?: FluxTokenizer;
181
196
  accessToken?: string;
182
197
  concurrency?: number;
@@ -193,7 +208,7 @@ type GenerateImageResult = {
193
208
  uri: string;
194
209
  width: number;
195
210
  height: number;
196
- model: FluxImageModelId;
211
+ model: ImageModelId;
197
212
  metadata: GenerateImageMetadata;
198
213
  };
199
214
  type GenerateImagesOptions = GenerateImageOptions & {
@@ -218,7 +233,7 @@ type ImageGenerationJob = {
218
233
  subscribe(listener: (snapshot: ImageGenerationJobSnapshot) => void): () => void;
219
234
  };
220
235
  type GenerateImageMetadata = {
221
- model: FluxImageModelId;
236
+ model: ImageModelId;
222
237
  width: number;
223
238
  height: number;
224
239
  steps: number;
@@ -234,8 +249,8 @@ type GenerateImageMetadata = {
234
249
  sigmaSchedule?: number[];
235
250
  };
236
251
  type ImageModelState = {
237
- model: FluxImageModelId;
238
- modelRoot: string;
252
+ model: ImageModelId;
253
+ path: string;
239
254
  paths: FluxImageModelPaths;
240
255
  installed: boolean;
241
256
  verified: boolean;
@@ -260,9 +275,142 @@ type UpscaleImageResult = {
260
275
  scale: number;
261
276
  };
262
277
  declare const flux2Klein4B8BitAbliterated: FluxImageModelManifest;
263
- declare const imageModelManifests: readonly [FluxImageModelManifest];
264
- declare function imageModelManifest(model: FluxImageModelId): FluxImageModelManifest | undefined;
265
- declare function fluxImageModelPaths(modelRoot: string, manifest?: FluxImageModelManifest): FluxImageModelPaths;
278
+ declare const ternaryBonsaiImage4B: ImageModelManifest;
279
+ declare const imageModelManifests: readonly [FluxImageModelManifest, ImageModelManifest];
280
+ declare function imageModelManifest(model: ImageModelId): ImageModelManifest | FluxImageModelManifest | undefined;
281
+ declare function fluxImageModelPaths(path: string, manifest?: ImageModelManifest): FluxImageModelPaths;
282
+ //#endregion
283
+ //#region src/ai/shape.d.ts
284
+ type PrimitiveToken = 'string' | 'number' | 'boolean';
285
+ type ShapeArray = readonly [ShapeDefinition];
286
+ type ShapeObject = {
287
+ readonly [key: string]: ShapeDefinition;
288
+ };
289
+ type ShapeDefinition = PrimitiveToken | ShapeObject | ShapeArray;
290
+ type InferShapeValue<Definition extends ShapeDefinition> = Definition extends 'string' ? string : Definition extends 'number' ? number : Definition extends 'boolean' ? boolean : Definition extends readonly [infer Item] ? Item extends ShapeDefinition ? Array<InferShapeValue<Item>> : never : Definition extends ShapeObject ? { [Key in keyof Definition]: InferShapeValue<Definition[Key]> } : never;
291
+ type InferShape<Definition extends ShapeObject> = { [Key in keyof Definition]: InferShapeValue<Definition[Key]> };
292
+ type BridgeSchema = {
293
+ type: PrimitiveToken;
294
+ } | {
295
+ type: 'array';
296
+ items: BridgeSchema;
297
+ } | {
298
+ type: 'object';
299
+ properties: Record<string, BridgeSchema>;
300
+ required: string[];
301
+ };
302
+ type StructuredInput = {
303
+ value: unknown;
304
+ shape: BleamAIShape<unknown, unknown> | StandardSchema;
305
+ };
306
+ type StructuredSchema = BleamAIShape<unknown, unknown> | StandardSchema;
307
+ type BridgeStructuredSchema = StandardSchema & {
308
+ toJSONSchema(): BridgeSchema;
309
+ };
310
+ interface BleamAIShape<Input, Output$1> extends StandardSchema<Input, Output$1> {
311
+ parse(value: unknown): Output$1;
312
+ safeParse(value: unknown): SchemaResult<Output$1>;
313
+ toJSONSchema(): BridgeSchema;
314
+ }
315
+ type InferShapeOutput<Value extends BleamAIShape<unknown, unknown>> = Value extends BleamAIShape<unknown, infer Output> ? Output : never;
316
+ declare function shape<Definition extends ShapeObject>(definition: Definition): BleamAIShape<InferShape<Definition>, InferShape<Definition>>;
317
+ type GenerateResult<Output$1 extends StructuredSchema | undefined> = Output$1 extends BleamAIShape<unknown, infer ShapeOutput> ? ShapeOutput : Output$1 extends StandardSchema ? InferOutput<Output$1> : string;
318
+ //#endregion
319
+ //#region src/ai/native.d.ts
320
+ type ModelAvailabilityResult = {
321
+ available: boolean;
322
+ reason?: 'device_not_eligible' | 'apple_intelligence_not_enabled' | 'model_not_ready' | 'not_installed' | 'invalid_model' | 'unknown';
323
+ };
324
+ //#endregion
325
+ //#region src/ai/bonsai-generation.d.ts
326
+ type TextMessage = Readonly<{
327
+ role: 'system' | 'user' | 'assistant';
328
+ content: string;
329
+ }>;
330
+ //#endregion
331
+ //#region src/ai/bonsai-text.d.ts
332
+ declare const bonsaiTextModelFiles: readonly ["config.json", "tokenizer.json", "tokenizer_config.json", "chat_template.jinja", "model.safetensors", "model.safetensors.index.json"];
333
+ type BonsaiTextModelFile = (typeof bonsaiTextModelFiles)[number];
334
+ type PrepareBonsaiTextModelProgress = Readonly<{
335
+ model: BonsaiTextModelId;
336
+ file: BonsaiTextModelFile;
337
+ index: number;
338
+ total: number;
339
+ bytesWritten: number;
340
+ totalBytes?: number;
341
+ fraction?: number;
342
+ modelBytesWritten: number;
343
+ estimatedModelBytes: number;
344
+ modelFraction: number;
345
+ }>;
346
+ type PrepareBonsaiTextModelOptions = Readonly<{
347
+ accessToken?: string;
348
+ directory?: string;
349
+ signal?: AbortSignal;
350
+ onProgress?: (progress: PrepareBonsaiTextModelProgress) => void;
351
+ }>;
352
+ type PreparedBonsaiTextModel = Readonly<{
353
+ model: BonsaiTextModel;
354
+ path: string;
355
+ }>;
356
+ type BonsaiTextModelState = Readonly<{
357
+ model: BonsaiTextModel;
358
+ metadata: BonsaiTextModelMetadata;
359
+ path: string;
360
+ installed: boolean;
361
+ verified: boolean;
362
+ bytesPresent: number;
363
+ estimatedTotalBytes: number;
364
+ missingFiles: readonly string[];
365
+ invalidFiles: readonly string[];
366
+ }>;
367
+ type ModelInput = BonsaiTextModelId | BonsaiTextModel;
368
+ declare function prepareBonsaiTextModel(model: ModelInput, options?: PrepareBonsaiTextModelOptions): Promise<PreparedBonsaiTextModel>;
369
+ declare function verifyBonsaiTextModel(model: ModelInput, options?: Readonly<{
370
+ path?: string;
371
+ }>): Promise<Readonly<{
372
+ model: BonsaiTextModel;
373
+ metadata: BonsaiTextModelMetadata;
374
+ path: string;
375
+ installed: boolean;
376
+ verified: boolean;
377
+ bytesPresent: number;
378
+ estimatedTotalBytes: number;
379
+ missingFiles: readonly string[];
380
+ invalidFiles: readonly string[];
381
+ }>>;
382
+ declare function listBonsaiTextModels(options?: Readonly<{
383
+ directory?: string;
384
+ }>): Promise<Readonly<{
385
+ model: BonsaiTextModel;
386
+ metadata: BonsaiTextModelMetadata;
387
+ path: string;
388
+ installed: boolean;
389
+ verified: boolean;
390
+ bytesPresent: number;
391
+ estimatedTotalBytes: number;
392
+ missingFiles: readonly string[];
393
+ invalidFiles: readonly string[];
394
+ }>[]>;
395
+ declare function deleteBonsaiTextModel(model: ModelInput, options?: Readonly<{
396
+ path?: string;
397
+ }>): Promise<void>;
398
+ //#endregion
399
+ //#region src/ai/errors.d.ts
400
+ type AIErrorCode = 'unsupported_runtime' | 'unsupported_os' | 'model_unavailable' | 'generation_failed' | 'generation_canceled' | 'concurrent_request' | 'guardrail_violation' | 'unsupported_language_or_locale' | 'rate_limited' | 'tool_failed' | 'image_generation_failed' | 'invalid_message' | 'invalid_schema' | 'invalid_model' | 'validation_failed' | 'context_window_exceeded';
401
+ type ImageGenerationStage = 'download' | 'tokenize' | 'encode' | 'denoise' | 'decode' | 'write';
402
+ type ImageGenerationErrorDetails = {
403
+ stage: ImageGenerationStage;
404
+ };
405
+ declare class AIError extends Error {
406
+ readonly code: AIErrorCode;
407
+ readonly cause?: unknown | undefined;
408
+ constructor(code: AIErrorCode, message: string, cause?: unknown | undefined);
409
+ }
410
+ declare class ImageGenerationError extends AIError {
411
+ readonly stage: ImageGenerationStage;
412
+ constructor(stage: ImageGenerationStage, message: string, cause?: unknown);
413
+ }
266
414
  //#endregion
267
415
  //#region src/ai/image.d.ts
268
416
  declare const defaultImageLongSide = 1152;
@@ -270,15 +418,15 @@ declare function normalizeImageSize(size: ImageSize, maxLongSide?: number | fals
270
418
  declare function imageSizeForPreset(aspectRatio: ImageAspectRatio, maxLongSide?: number): ImageSize;
271
419
  declare function prepareImageModel(options?: PrepareImageModelOptions): Promise<PreparedImageModel>;
272
420
  declare function verifyImageModel(options?: {
273
- model?: FluxImageModelId;
274
- modelRoot?: string;
421
+ model?: ImageModel;
422
+ path?: string;
275
423
  }): Promise<ImageModelState>;
276
424
  declare function listImageModels(options?: {
277
- modelRoot?: string;
425
+ directory?: string;
278
426
  }): Promise<ImageModelState[]>;
279
427
  declare function deleteImageModel(options?: {
280
- model?: FluxImageModelId;
281
- modelRoot?: string;
428
+ model?: ImageModel;
429
+ path?: string;
282
430
  }): Promise<void>;
283
431
  declare function imageMemoryTelemetry(): Promise<ImageMemoryTelemetry>;
284
432
  declare function unloadImageModel(): Promise<boolean>;
@@ -415,7 +563,7 @@ declare function rectForSourceScale(sourceSize: ImageComposerSize, scale: number
415
563
  y: number;
416
564
  }): ImageComposerRect;
417
565
  declare function initialOutpaintRect(sourceSize: ImageComposerSize): ImageComposerRect;
418
- declare function buildImageGenerationRequest(input: ImageGenerationRequestInput, options?: Pick<GenerateImageOptions, 'signal' | 'onModelProgress' | 'onProgress' | 'model' | 'modelRoot' | 'tokenizer' | 'accessToken' | 'concurrency' | 'loras'>): GenerateImageOptions;
566
+ declare function buildImageGenerationRequest(input: ImageGenerationRequestInput, options?: Pick<GenerateImageOptions, 'signal' | 'onModelProgress' | 'onProgress' | 'model' | 'path' | 'tokenizer' | 'accessToken' | 'concurrency' | 'loras'>): GenerateImageOptions;
419
567
  declare function useImageComposer(options?: ImageComposerOptions): ImageComposerController;
420
568
  declare function useImageComposer(mode: 'text', options?: ImageComposerOptions): TextImageComposer;
421
569
  declare function useImageComposer(mode: 'subject', options?: ImageComposerOptions): SubjectImageComposer;
@@ -444,48 +592,6 @@ declare function useImageModel(): {
444
592
  error: Error | null;
445
593
  };
446
594
  //#endregion
447
- //#region src/ai/shape.d.ts
448
- type PrimitiveToken = 'string' | 'number' | 'boolean';
449
- type ShapeArray = readonly [ShapeDefinition];
450
- type ShapeObject = {
451
- readonly [key: string]: ShapeDefinition;
452
- };
453
- type ShapeDefinition = PrimitiveToken | ShapeObject | ShapeArray;
454
- type InferShapeValue<Definition extends ShapeDefinition> = Definition extends 'string' ? string : Definition extends 'number' ? number : Definition extends 'boolean' ? boolean : Definition extends readonly [infer Item] ? Item extends ShapeDefinition ? Array<InferShapeValue<Item>> : never : Definition extends ShapeObject ? { [Key in keyof Definition]: InferShapeValue<Definition[Key]> } : never;
455
- type InferShape<Definition extends ShapeObject> = { [Key in keyof Definition]: InferShapeValue<Definition[Key]> };
456
- type BridgeSchema = {
457
- type: PrimitiveToken;
458
- } | {
459
- type: 'array';
460
- items: BridgeSchema;
461
- } | {
462
- type: 'object';
463
- properties: Record<string, BridgeSchema>;
464
- required: string[];
465
- };
466
- type StructuredInput = {
467
- value: unknown;
468
- shape: BleamAIShape<unknown, unknown> | StandardSchema;
469
- };
470
- type StructuredSchema = BleamAIShape<unknown, unknown> | StandardSchema;
471
- type BridgeStructuredSchema = StandardSchema & {
472
- toJSONSchema(): BridgeSchema;
473
- };
474
- interface BleamAIShape<Input, Output$1> extends StandardSchema<Input, Output$1> {
475
- parse(value: unknown): Output$1;
476
- safeParse(value: unknown): SchemaResult<Output$1>;
477
- toJSONSchema(): BridgeSchema;
478
- }
479
- type InferShapeOutput<Value extends BleamAIShape<unknown, unknown>> = Value extends BleamAIShape<unknown, infer Output> ? Output : never;
480
- declare function shape<Definition extends ShapeObject>(definition: Definition): BleamAIShape<InferShape<Definition>, InferShape<Definition>>;
481
- type GenerateResult<Output$1 extends StructuredSchema | undefined> = Output$1 extends BleamAIShape<unknown, infer ShapeOutput> ? ShapeOutput : Output$1 extends StandardSchema ? InferOutput<Output$1> : string;
482
- //#endregion
483
- //#region src/ai/native.d.ts
484
- type ModelAvailabilityResult = {
485
- available: boolean;
486
- reason?: 'device_not_eligible' | 'apple_intelligence_not_enabled' | 'model_not_ready' | 'unknown';
487
- };
488
- //#endregion
489
595
  //#region src/ai/text.d.ts
490
596
  type AITool<Input extends BridgeStructuredSchema = BridgeStructuredSchema> = {
491
597
  name: string;
@@ -500,21 +606,43 @@ type InferToolInput<Input extends BridgeStructuredSchema> = Input extends {
500
606
  };
501
607
  };
502
608
  } ? Output : unknown;
503
- type GenerateOptions<Output$1 extends BridgeStructuredSchema | undefined = undefined> = {
609
+ type FoundationGenerateOptions<Output$1 extends BridgeStructuredSchema | undefined = undefined> = {
610
+ model?: never;
504
611
  system?: string;
505
612
  prompt?: string;
506
613
  input?: string | StructuredInput;
614
+ messages?: never;
507
615
  output?: Output$1;
508
616
  temperature?: number;
509
617
  maxTokens?: number;
510
618
  tools?: readonly AITool[];
511
619
  signal?: AbortSignal;
512
620
  };
513
- type StreamOptions = Omit<GenerateOptions<undefined>, 'output'>;
621
+ type BonsaiGenerateOptions = {
622
+ model: BonsaiTextModel;
623
+ path?: string;
624
+ system?: string;
625
+ prompt?: string;
626
+ messages?: readonly TextMessage[];
627
+ input?: never;
628
+ output?: never;
629
+ tools?: never;
630
+ temperature?: number;
631
+ maxTokens?: number;
632
+ seed?: number;
633
+ signal?: AbortSignal;
634
+ };
635
+ type GenerateOptions<Output$1 extends BridgeStructuredSchema | undefined = undefined> = FoundationGenerateOptions<Output$1> | BonsaiGenerateOptions;
636
+ type StreamOptions = Omit<FoundationGenerateOptions<undefined>, 'output'> | BonsaiGenerateOptions;
514
637
  type ModelAvailability = ModelAvailabilityResult;
515
- declare function isAvailable(): Promise<boolean>;
516
- declare function availability(): Promise<ModelAvailability>;
517
- declare function generate<Output$1 extends BridgeStructuredSchema | undefined = undefined>(options: GenerateOptions<Output$1>): Promise<GenerateResult<Output$1>>;
638
+ declare function isAvailable(model?: BonsaiTextModel, options?: Readonly<{
639
+ path?: string;
640
+ }>): Promise<boolean>;
641
+ declare function availability(model?: BonsaiTextModel, options?: Readonly<{
642
+ path?: string;
643
+ }>): Promise<ModelAvailability>;
644
+ declare function generate(options: BonsaiGenerateOptions): Promise<string>;
645
+ declare function generate<Output$1 extends BridgeStructuredSchema | undefined = undefined>(options: FoundationGenerateOptions<Output$1>): Promise<GenerateResult<Output$1>>;
518
646
  declare function stream(options: StreamOptions): AsyncGenerator<string>;
519
647
  //#endregion
520
648
  //#region src/ai/text-hook.d.ts
@@ -532,4 +660,4 @@ declare function useTextGeneration(): {
532
660
  error: Error | null;
533
661
  };
534
662
  //#endregion
535
- export { AIError, AIErrorCode, AITool, BleamAIShape, EditImageComposer, FluxImageModelId, FluxImageModelManifest, FluxImageModelPaths, FluxModelComponentManifest, FluxTokenizedPrompt, FluxTokenizer, GenerateImageMetadata, GenerateImageOptions, GenerateImageResult, GenerateImagesOptions, GenerateOptions, ImageAspectRatio, ImageComposer, ImageComposerController, ImageComposerImage, ImageComposerMode, ImageComposerRect, ImageComposerSize, ImageGenerationError, ImageGenerationErrorDetails, ImageGenerationJob, ImageGenerationJobSnapshot, ImageGenerationJobStatus, ImageGenerationRequestInput, ImageGenerationStage, ImageLoRADefinition, ImageLoRAMetadata, ImageLoRAPrecision, ImageLoRASource, ImageLoRAState, ImageMaskMode, ImageMemoryTelemetry, ImageModelCapability, ImageModelMetadata, ImageModelState, ImageOutpaintOptions, ImageOutpaintSourceRect, ImageResizeMode, ImageSize, ImagegenProgress, InferShapeOutput, ModelAvailability, OutpaintImageComposer, PrepareImageLoRAOptions, PrepareImageLoRAProgress, PrepareImageModelOptions, PrepareImageModelProgress, PreparedImageLoRA, PreparedImageModel, StreamOptions, SubjectImageComposer, TextGenerationState, TextImageComposer, UpscaleImageOptions, UpscaleImageResult, availability, buildImageGenerationRequest, clampOutpaintRect, defaultImageLongSide, deleteImageLoRA, deleteImageModel, flux2Klein4B8BitAbliterated, fluxImageModelPaths, generate, generateImage, generateImages, getImageGenerationJob, imageMemoryTelemetry, imageModelManifest, imageModelManifests, imageSizeForAspectRatio, imageSizeForPreset, initialOutpaintRect, isAvailable, listImageGenerationJobs, listImageLoRAs, listImageModels, normalizeImageSize, prepareImageLoRA, prepareImageModel, rectForSourceScale, roundImageDimension, roundedImageSize, scheduleImageGeneration, shape, stream, unloadImageModel, upscaleImage, useImageComposer, useImageGeneration, useImageModel, useTextGeneration, verifyImageLoRA, verifyImageModel };
663
+ export { AIError, AIErrorCode, AITool, BleamAIShape, BonsaiGenerateOptions, BonsaiImageModel, BonsaiImageModelId, BonsaiModel, BonsaiTextModel, BonsaiTextModelId, BonsaiTextModelMetadata, EditImageComposer, FluxImageModelId, FluxImageModelManifest, FluxImageModelPaths, FluxModelComponentManifest, FluxTokenizedPrompt, FluxTokenizer, FoundationGenerateOptions, GenerateImageMetadata, GenerateImageOptions, GenerateImageResult, GenerateImagesOptions, GenerateOptions, ImageAspectRatio, ImageComposer, ImageComposerController, ImageComposerImage, ImageComposerMode, ImageComposerRect, ImageComposerSize, ImageGenerationError, ImageGenerationErrorDetails, ImageGenerationJob, ImageGenerationJobSnapshot, ImageGenerationJobStatus, ImageGenerationRequestInput, ImageGenerationStage, ImageLoRADefinition, ImageLoRAMetadata, ImageLoRAPrecision, ImageLoRASource, ImageLoRAState, ImageMaskMode, ImageMemoryTelemetry, ImageModel, ImageModelCapability, ImageModelId, ImageModelManifest, ImageModelMetadata, ImageModelState, ImageOutpaintOptions, ImageOutpaintSourceRect, ImageResizeMode, ImageSize, ImagegenProgress, InferShapeOutput, ModelAvailability, OutpaintImageComposer, PrepareImageLoRAOptions, PrepareImageLoRAProgress, PrepareImageModelOptions, PrepareImageModelProgress, PrepareBonsaiTextModelOptions as PrepareTextModelOptions, PrepareBonsaiTextModelProgress as PrepareTextModelProgress, PreparedImageLoRA, PreparedImageModel, PreparedBonsaiTextModel as PreparedTextModel, StreamOptions, SubjectImageComposer, TextGenerationState, TextImageComposer, TextMessage, BonsaiTextModelState as TextModelState, UpscaleImageOptions, UpscaleImageResult, availability, bonsai, bonsaiTextModelCatalog, buildImageGenerationRequest, clampOutpaintRect, defaultImageLongSide, deleteImageLoRA, deleteImageModel, deleteBonsaiTextModel as deleteTextModel, flux2Klein4B8BitAbliterated, fluxImageModelPaths, generate, generateImage, generateImages, getImageGenerationJob, imageMemoryTelemetry, imageModelManifest, imageModelManifests, imageSizeForAspectRatio, imageSizeForPreset, initialOutpaintRect, isAvailable, listImageGenerationJobs, listImageLoRAs, listImageModels, listBonsaiTextModels as listTextModels, normalizeImageSize, prepareImageLoRA, prepareImageModel, prepareBonsaiTextModel as prepareTextModel, rectForSourceScale, roundImageDimension, roundedImageSize, scheduleImageGeneration, shape, stream, ternaryBonsaiImage4B, unloadImageModel, upscaleImage, useImageComposer, useImageGeneration, useImageModel, useTextGeneration, verifyImageLoRA, verifyImageModel, verifyBonsaiTextModel as verifyTextModel };