react-native-ai-core 0.2.0 → 0.3.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 CHANGED
@@ -47,7 +47,14 @@ Add to `android/gradle.properties`:
47
47
  minSdkVersion=26
48
48
  ```
49
49
 
50
- No additional permissions are required. The native module is auto-linked.
50
+ The native module is auto-linked. No manual permission declarations are needed the library's `AndroidManifest.xml` is merged automatically into your app and includes:
51
+
52
+ - `FOREGROUND_SERVICE` — keeps the process alive during background generation
53
+ - `FOREGROUND_SERVICE_DATA_SYNC` — required foreground service type (Android 14+)
54
+
55
+ These permissions will appear in your compiled app manifest and may be visible in Play Store security reviews.
56
+
57
+ > **Note:** Testing requires a physical Android device. The Android emulator does not support NPU hardware or the AICore system service, so the ML Kit AICore backend will not function on it. The MediaPipe backend may run in an emulator but is not officially supported or tested in that environment.
51
58
 
52
59
  ---
53
60
 
@@ -109,6 +116,7 @@ For app-internal AI features such as extraction, classification, routing, or too
109
116
  - Validates the final payload with `zod`
110
117
  - Retries automatically with a repair prompt when validation fails
111
118
  - Uses a stateless native request so it does not pollute chat conversation history
119
+ - Supports an `AbortSignal` to cancel mid-generation
112
120
 
113
121
  ```tsx
114
122
  import { z } from 'zod';
@@ -121,13 +129,19 @@ const TicketSchema = z.object({
121
129
  needsHuman: z.boolean(),
122
130
  });
123
131
 
132
+ const ctrl = new AbortController();
133
+
124
134
  const result = await generateStructuredResponse({
125
135
  prompt: 'Classify this support request and summarize it.',
126
136
  input: {
127
137
  message: 'The app crashes when I try to export a PDF invoice.',
128
138
  },
129
139
  output: TicketSchema,
140
+ signal: ctrl.signal,
130
141
  });
142
+
143
+ // Cancel mid-way
144
+ ctrl.abort();
131
145
  ```
132
146
 
133
147
  Recommended for reliability on-device:
@@ -139,6 +153,43 @@ Recommended for reliability on-device:
139
153
 
140
154
  There is also a concrete demo helper in [example/src/examples/structuredOutputExample.ts](example/src/examples/structuredOutputExample.ts).
141
155
 
156
+ ### Cancelling generation
157
+
158
+ Both chat and structured generation can be stopped at any point.
159
+
160
+ **Chat / streaming:**
161
+
162
+ ```tsx
163
+ import { cancelGeneration } from 'react-native-ai-core';
164
+
165
+ // Stop an ongoing generateResponse or generateResponseStream call
166
+ await cancelGeneration();
167
+ ```
168
+
169
+ For streaming, the `onComplete` callback fires normally after cancellation — `onError` is not called.
170
+
171
+ **Structured output:**
172
+
173
+ Pass an `AbortSignal` from an `AbortController` to `generateStructuredResponse`. When you call `ctrl.abort()` the tree-walker stops at the next field boundary and rejects with an `Error` whose `name` is `'AbortError'`.
174
+
175
+ ```tsx
176
+ const ctrl = new AbortController();
177
+
178
+ // Start generation
179
+ const promise = generateStructuredResponse({ ..., signal: ctrl.signal });
180
+
181
+ // Cancel from a button handler
182
+ ctrl.abort();
183
+
184
+ try {
185
+ await promise;
186
+ } catch (err) {
187
+ if (err.name === 'AbortError') {
188
+ console.log('Cancelled by user');
189
+ }
190
+ }
191
+ ```
192
+
142
193
  ---
143
194
 
144
195
  ## API Reference
@@ -160,6 +211,23 @@ Returns `true` on success. Throws on failure.
160
211
 
161
212
  ---
162
213
 
214
+ ### `cancelGeneration(): Promise<void>`
215
+
216
+ Cancels the in-progress generation immediately.
217
+
218
+ - For **streaming** (`generateResponseStream`): stops the token stream and fires `onComplete` (not `onError`).
219
+ - For **blocking** (`generateResponse`): rejects the pending promise with code `CANCELLED`.
220
+ - Safe to call even when no generation is running.
221
+
222
+ ```tsx
223
+ await AICore.cancelGeneration();
224
+ // or named export:
225
+ import { cancelGeneration } from 'react-native-ai-core';
226
+ await cancelGeneration();
227
+ ```
228
+
229
+ ---
230
+
163
231
  ### `generateResponse(prompt: string): Promise<string>`
164
232
 
165
233
  Generates a complete response synchronously (waits for the full output).
@@ -186,19 +254,30 @@ const OutputSchema = z.object({
186
254
  confidence: z.number(),
187
255
  });
188
256
 
257
+ const ctrl = new AbortController();
258
+
189
259
  const output = await generateStructuredResponse({
190
260
  prompt: 'Determine the next action for this message.',
191
261
  input: { message: 'Can you send me the invoice again?' },
192
262
  output: OutputSchema,
263
+ signal: ctrl.signal,
193
264
  });
194
265
  ```
195
266
 
196
267
  Options:
197
- - `prompt` — natural language instruction
198
- - `input` optional structured input object
199
- - `inputSchema` — optional `zod` schema to validate the input before generation
200
- - `output` required `zod` schema used to validate the model output
201
- - `maxRetries` optional number of repair attempts when validation fails
268
+
269
+ | Option | Type | Description |
270
+ |---|---|---|
271
+ | `prompt` | `string` | Natural language instruction |
272
+ | `input` | `unknown` | Optional structured input object |
273
+ | `inputSchema` | `ZodType` | Optional schema to validate `input` before generation |
274
+ | `output` | `ZodType` | Required schema to validate the model output |
275
+ | `strategy` | `'single' \| 'chunked'` | `'single'` (default) generates the whole JSON in one call. `'chunked'` walks the schema field-by-field — use for large or complex schemas |
276
+ | `maxRetries` | `number` | Repair attempts when validation fails (default `2`) |
277
+ | `maxContinuations` | `number` | Max continuation calls when JSON is truncated (default `8`) |
278
+ | `timeoutMs` | `number` | Per-call timeout in ms (default `300000`) |
279
+ | `onProgress` | `(field, done) => void` | Called for each field during `'chunked'` generation |
280
+ | `signal` | `AbortSignal` | Pass a signal to cancel mid-generation. Rejects with `Error { name: 'AbortError' }` |
202
281
 
203
282
  Throws `StructuredOutputError` if valid JSON matching the schema cannot be produced after retries.
204
283
 
@@ -287,6 +366,7 @@ A ready-to-use React hook is available in the example app as a reference impleme
287
366
  - Streaming with incremental message updates
288
367
  - Conversation history reset on clear
289
368
  - Error state management
369
+ - `stopGeneration()` — calls `cancelGeneration()` to abort the in-progress response
290
370
 
291
371
  See [`example/src/hooks/useAICore.ts`](example/src/hooks/useAICore.ts).
292
372
 
@@ -319,7 +399,7 @@ Dependency: `com.google.mediapipe:tasks-genai:0.10.22`
319
399
  - [ ] Model quantization options
320
400
  - [ ] System prompt / persona configuration
321
401
  - [ ] Token count estimation
322
- - [ ] Abort/cancel streaming mid-generation
402
+ - [x] Abort/cancel streaming mid-generation
323
403
  - [ ] Web support (WebGPU / WASM)
324
404
 
325
405
  ---
@@ -336,7 +416,7 @@ Contributions, issues and feature requests are welcome.
336
416
 
337
417
  ## License
338
418
 
339
- MIT © [Alberto Fernandez](https://github.com/albertofernandezroda)
419
+ MIT © [Alberto Fernandez](https://github.com/albertoroda)
340
420
 
341
421
  ---
342
422
 
@@ -19,6 +19,7 @@ import com.google.mlkit.genai.prompt.TextPart
19
19
  import com.google.mlkit.genai.prompt.generateContentRequest
20
20
  import kotlinx.coroutines.CoroutineScope
21
21
  import kotlinx.coroutines.Dispatchers
22
+ import kotlinx.coroutines.Job
22
23
  import kotlinx.coroutines.SupervisorJob
23
24
  import kotlinx.coroutines.cancel
24
25
  import kotlinx.coroutines.delay
@@ -39,6 +40,8 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
39
40
  private val coroutineScope = CoroutineScope(Dispatchers.IO + SupervisorJob())
40
41
 
41
42
  private val conversationHistory = mutableListOf<Pair<String, String>>()
43
+ @Volatile private var cancelRequested = false
44
+ @Volatile private var activeGenerationJob: Job? = null
42
45
 
43
46
  companion object {
44
47
  const val NAME = NativeAiCoreSpec.NAME
@@ -439,6 +442,7 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
439
442
  val mlkit = mlkitModel
440
443
  val mediapipe = llmInference
441
444
  startInferenceService()
445
+ cancelRequested = false
442
446
  when {
443
447
  mlkit != null -> coroutineScope.launch {
444
448
  try {
@@ -449,6 +453,11 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
449
453
  var continuationJoinPending = false
450
454
  var quotaRetries = 0
451
455
  while (true) {
456
+ if (cancelRequested) {
457
+ stopInferenceService()
458
+ promise.reject("CANCELLED", "Generation cancelled.")
459
+ return@launch
460
+ }
452
461
  val part = try {
453
462
  generateMlKitChunk(mlkit, currentPrompt)
454
463
  } catch (e: GenAiException) {
@@ -495,10 +504,15 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
495
504
  stopInferenceService()
496
505
  promise.resolve(full)
497
506
  } catch (e: Exception) {
498
- stopInferenceService()
499
- promise.reject("GENERATION_ERROR", e.message, e)
507
+ if (cancelRequested) {
508
+ stopInferenceService()
509
+ promise.reject("CANCELLED", "Generation cancelled.")
510
+ } else {
511
+ stopInferenceService()
512
+ promise.reject("GENERATION_ERROR", e.message, e)
513
+ }
500
514
  }
501
- }
515
+ }.also { activeGenerationJob = it }
502
516
  mediapipe != null -> executor.execute {
503
517
  var session: LlmInferenceSession? = null
504
518
  try {
@@ -508,6 +522,11 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
508
522
  var continuations = 0
509
523
  var continuationJoinPending = false
510
524
  while (true) {
525
+ if (cancelRequested) {
526
+ stopInferenceService()
527
+ promise.reject("CANCELLED", "Generation cancelled.")
528
+ return@execute
529
+ }
511
530
  session = createMediaPipeSession()
512
531
  session.addQueryChunk(currentPrompt)
513
532
  val part = session.generateResponse()
@@ -558,6 +577,7 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
558
577
  val mlkit = mlkitModel
559
578
  val mediapipe = llmInference
560
579
  startInferenceService()
580
+ cancelRequested = false
561
581
  when {
562
582
  mlkit != null -> coroutineScope.launch {
563
583
  val total = StringBuilder()
@@ -571,6 +591,7 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
571
591
  var markerReached = false
572
592
  try {
573
593
  while (true) {
594
+ if (cancelRequested) break
574
595
  val beforeLength = total.length
575
596
  firstDeltaInPass = true
576
597
  var quotaHit = false
@@ -605,6 +626,7 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
605
626
  throw e
606
627
  }
607
628
  } catch (e: Exception) {
629
+ if (cancelRequested) break
608
630
  streamError = true
609
631
  stopInferenceService()
610
632
  sendEvent(EVENT_STREAM_ERROR, createErrorMap("STREAM_ERROR", e.message ?: "Error"))
@@ -630,17 +652,21 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
630
652
  delay(if (quotaHit) QUOTA_RETRY_DELAY_MS else CONTINUATION_DELAY_MS)
631
653
  } else break
632
654
  }
633
- saveToHistory(prompt, sanitizeVisibleText(total.toString()))
655
+ if (!cancelRequested) saveToHistory(prompt, sanitizeVisibleText(total.toString()))
634
656
  emitStreamToken("", true)
635
657
  stopInferenceService()
636
658
  sendEvent(EVENT_STREAM_COMPLETE, Arguments.createMap())
637
659
  } catch (e: Exception) {
638
- if (!streamError) {
660
+ if (cancelRequested) {
661
+ emitStreamToken("", true)
662
+ stopInferenceService()
663
+ sendEvent(EVENT_STREAM_COMPLETE, Arguments.createMap())
664
+ } else if (!streamError) {
639
665
  stopInferenceService()
640
666
  sendEvent(EVENT_STREAM_ERROR, createErrorMap("STREAM_ERROR", e.message ?: "Error"))
641
667
  }
642
668
  }
643
- }
669
+ }.also { activeGenerationJob = it }
644
670
  mediapipe != null -> executor.execute {
645
671
  val total = StringBuilder()
646
672
  val rawTotal = StringBuilder()
@@ -652,12 +678,18 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
652
678
  var markerReached = false
653
679
  try {
654
680
  while (true) {
681
+ if (cancelRequested) break
655
682
  val latch = CountDownLatch(1)
656
683
  firstDeltaInPass = true
657
684
  session = createMediaPipeSession()
658
685
  val capturedSession = session
659
686
  session.addQueryChunk(currentPrompt)
660
687
  session.generateResponseAsync(ProgressListener<String> { partial, done ->
688
+ if (cancelRequested) {
689
+ capturedSession.close()
690
+ latch.countDown()
691
+ return@ProgressListener
692
+ }
661
693
  val token = partial ?: ""
662
694
  rawTotal.append(token)
663
695
  if (containsEndMarker(rawTotal.toString())) {
@@ -694,14 +726,20 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
694
726
  continuationJoinPending = true
695
727
  } else break
696
728
  }
697
- saveToHistory(prompt, sanitizeVisibleText(total.toString()))
729
+ if (!cancelRequested) saveToHistory(prompt, sanitizeVisibleText(total.toString()))
698
730
  emitStreamToken("", true)
699
731
  stopInferenceService()
700
732
  sendEvent(EVENT_STREAM_COMPLETE, Arguments.createMap())
701
733
  } catch (e: Exception) {
702
734
  session?.close()
703
- stopInferenceService()
704
- sendEvent(EVENT_STREAM_ERROR, createErrorMap("STREAM_ERROR", e.message ?: "Error"))
735
+ if (cancelRequested) {
736
+ emitStreamToken("", true)
737
+ stopInferenceService()
738
+ sendEvent(EVENT_STREAM_COMPLETE, Arguments.createMap())
739
+ } else {
740
+ stopInferenceService()
741
+ sendEvent(EVENT_STREAM_ERROR, createErrorMap("STREAM_ERROR", e.message ?: "Error"))
742
+ }
705
743
  }
706
744
  }
707
745
  else -> sendEvent(EVENT_STREAM_ERROR, createErrorMap("NOT_INITIALIZED", "LLM not initialized."))
@@ -752,6 +790,12 @@ class AiCoreModule(reactContext: ReactApplicationContext) :
752
790
  promise.resolve(null)
753
791
  }
754
792
 
793
+ override fun cancelGeneration(promise: Promise) {
794
+ cancelRequested = true
795
+ activeGenerationJob?.cancel()
796
+ promise.resolve(null)
797
+ }
798
+
755
799
  override fun addListener(eventName: String) {}
756
800
  override fun removeListeners(count: Double) {}
757
801
 
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAiCore.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,mBAAmB,QAA0B,cAAc;AAoDpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,QAAQ,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeAiCore.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,mBAAmB,QAA0B,cAAc;AA2DpE,eAAeA,mBAAmB,CAACC,YAAY,CAAO,QAAQ,CAAC","ignoreList":[]}
@@ -169,6 +169,19 @@ export async function resetConversation() {
169
169
  return NativeAiCore.resetConversation();
170
170
  }
171
171
 
172
+ /**
173
+ * Cancels any generation currently in progress.
174
+ *
175
+ * - **Streaming**: the stream ends immediately with tokens generated so far.
176
+ * - **Non-streaming**: the pending `generateResponse` promise rejects with code `'CANCELLED'`.
177
+ *
178
+ * Safe to call when no generation is running.
179
+ */
180
+ export async function cancelGeneration() {
181
+ if (!NativeAiCore) return;
182
+ return NativeAiCore.cancelGeneration();
183
+ }
184
+
172
185
  // ── Default export (API object) ───────────────────────────────────────────────
173
186
 
174
187
  const AICore = {
@@ -178,7 +191,8 @@ const AICore = {
178
191
  generateStructuredResponse,
179
192
  checkAvailability,
180
193
  release,
181
- resetConversation
194
+ resetConversation,
195
+ cancelGeneration
182
196
  };
183
197
  export default AICore;
184
198
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeEventEmitter","Platform","NativeAiCore","generateStructuredResponse","StructuredOutputError","EVENT_STREAM_TOKEN","EVENT_STREAM_COMPLETE","EVENT_STREAM_ERROR","emitter","assertAvailable","Error","OS","initialize","modelPath","generateResponse","prompt","generateResponseStream","callbacks","onError","code","message","tokenSub","addListener","event","onToken","token","done","completeSub","onComplete","errorSub","error","remove","checkAvailability","release","resetConversation","AICore"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeEventEmitter","Platform","NativeAiCore","generateStructuredResponse","StructuredOutputError","EVENT_STREAM_TOKEN","EVENT_STREAM_COMPLETE","EVENT_STREAM_ERROR","emitter","assertAvailable","Error","OS","initialize","modelPath","generateResponse","prompt","generateResponseStream","callbacks","onError","code","message","tokenSub","addListener","event","onToken","token","done","completeSub","onComplete","errorSub","error","remove","checkAvailability","release","resetConversation","cancelGeneration","AICore"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -21,8 +21,25 @@ const DEFAULT_STRUCTURED_TIMEOUT_MS = 300000; // 5 min default
21
21
  const QUOTA_ERROR_CODE = 9;
22
22
  const QUOTA_RETRY_DELAY_MS = 1800;
23
23
  const MAX_QUOTA_RETRIES = 2;
24
- function sleep(ms) {
25
- return new Promise(resolve => setTimeout(resolve, ms));
24
+ function makeAbortError() {
25
+ return Object.assign(new Error('Generation cancelled.'), {
26
+ name: 'AbortError'
27
+ });
28
+ }
29
+ function sleep(ms, signal) {
30
+ return new Promise((resolve, reject) => {
31
+ if (signal?.aborted) {
32
+ reject(makeAbortError());
33
+ return;
34
+ }
35
+ const timer = setTimeout(resolve, ms);
36
+ signal?.addEventListener('abort', () => {
37
+ clearTimeout(timer);
38
+ reject(makeAbortError());
39
+ }, {
40
+ once: true
41
+ });
42
+ });
26
43
  }
27
44
  function toErrorMessage(error) {
28
45
  if (error instanceof Error) return error.message;
@@ -269,18 +286,19 @@ function buildRepairPrompt(prompt, outputSchema, invalidResponse, issues) {
269
286
  const normalizedInvalidResponse = truncateStart(compactWhitespace(extractJsonPayload(invalidResponse)), STRUCTURED_REPAIR_RESPONSE_BUDGET);
270
287
  return fitStructuredPrompt([buildStructuredPrompt(prompt, outputSchema), 'Your previous response was invalid.', 'Fix it and return only corrected JSON.', 'Validation errors:', normalizedIssues, 'Previous response:', normalizedInvalidResponse]);
271
288
  }
272
- async function generateStateless(prompt) {
289
+ async function generateStateless(prompt, signal) {
273
290
  if (!NativeAiCore) {
274
291
  throw new Error(`react-native-ai-core: native module unavailable on ${Platform.OS}. This feature requires Android.`);
275
292
  }
293
+ if (signal?.aborted) throw makeAbortError();
276
294
  if (NativeAiCore?.generateResponseStateless) {
277
295
  return NativeAiCore.generateResponseStateless(prompt);
278
296
  }
279
297
  return NativeAiCore.generateResponse(prompt);
280
298
  }
281
- async function generateStatelessWithTimeout(prompt, timeoutMs) {
299
+ async function generateStatelessWithTimeout(prompt, timeoutMs, signal) {
282
300
  if (timeoutMs <= 0) {
283
- return generateStateless(prompt);
301
+ return generateStateless(prompt, signal);
284
302
  }
285
303
  let timer;
286
304
  const timeout = new Promise((_, reject) => {
@@ -289,29 +307,31 @@ async function generateStatelessWithTimeout(prompt, timeoutMs) {
289
307
  }, timeoutMs);
290
308
  });
291
309
  try {
292
- return await Promise.race([generateStateless(prompt), timeout]);
310
+ return await Promise.race([generateStateless(prompt, signal), timeout]);
293
311
  } finally {
294
312
  if (timer) clearTimeout(timer);
295
313
  }
296
314
  }
297
- async function generateStatelessWithQuotaRetry(prompt, timeoutMs) {
315
+ async function generateStatelessWithQuotaRetry(prompt, timeoutMs, signal) {
298
316
  let quotaRetries = 0;
299
317
  while (true) {
300
318
  try {
301
- return await generateStatelessWithTimeout(prompt, timeoutMs);
319
+ return await generateStatelessWithTimeout(prompt, timeoutMs, signal);
302
320
  } catch (error) {
321
+ if (error.name === 'AbortError') throw error;
303
322
  if (!isQuotaError(error) || quotaRetries >= MAX_QUOTA_RETRIES) {
304
323
  throw error;
305
324
  }
306
325
  quotaRetries += 1;
307
- await sleep(QUOTA_RETRY_DELAY_MS);
326
+ await sleep(QUOTA_RETRY_DELAY_MS, signal);
308
327
  }
309
328
  }
310
329
  }
311
- async function tryGenerateWithQuotaTolerance(prompt, timeoutMs) {
330
+ async function tryGenerateWithQuotaTolerance(prompt, timeoutMs, signal) {
312
331
  try {
313
- return await generateStatelessWithQuotaRetry(prompt, timeoutMs);
332
+ return await generateStatelessWithQuotaRetry(prompt, timeoutMs, signal);
314
333
  } catch (error) {
334
+ if (error.name === 'AbortError') throw error;
315
335
  if (isQuotaError(error)) {
316
336
  return null;
317
337
  }
@@ -534,9 +554,9 @@ async function walkLeaf(schema, ctx) {
534
554
  let lastRaw = '';
535
555
  let lastErrorMessage = '';
536
556
  for (let attempt = 0; attempt <= leafMaxRetries; attempt++) {
537
- if (attempt > 0) await sleep(INTER_CALL_DELAY_MS);
557
+ if (attempt > 0) await sleep(INTER_CALL_DELAY_MS, ctx.signal);
538
558
  try {
539
- lastRaw = await generateStatelessWithQuotaRetry(prompt, leafTimeoutMs);
559
+ lastRaw = await generateStatelessWithQuotaRetry(prompt, leafTimeoutMs, ctx.signal);
540
560
  const coerced = coercePrimitiveField(lastRaw, schema);
541
561
  const validated = schema.safeParse(coerced);
542
562
  if (validated.success) {
@@ -568,7 +588,7 @@ async function walkCompact(schema, ctx) {
568
588
  const itemCtx = ctx.itemHint ? `Context: ${ctx.itemHint}.` : '';
569
589
  const prompt = fitStructuredPrompt([`"${fieldName}" (${typeDesc}): return JSON value only — no key, no markdown.`, `Task: ${truncateEnd(compactWhitespace(ctx.taskPrompt), 250)}`, ctx.input !== undefined ? `Input: ${stringifyInput(ctx.input, 150)}` : '', itemCtx]);
570
590
  const compactTimeoutMs = Math.min(ctx.timeoutMs, COMPACT_TIMEOUT_CAP_MS);
571
- let combined = await generateStatelessWithQuotaRetry(prompt, compactTimeoutMs);
591
+ let combined = await generateStatelessWithQuotaRetry(prompt, compactTimeoutMs, ctx.signal);
572
592
  for (let cont = 0; cont < 6; cont++) {
573
593
  try {
574
594
  const result = JSON.parse(extractJsonPayload(combined));
@@ -577,8 +597,8 @@ async function walkCompact(schema, ctx) {
577
597
  } catch {
578
598
  if (!looksLikeIncompleteJson(combined)) break;
579
599
  }
580
- await sleep(INTER_CALL_DELAY_MS);
581
- const extra = await tryGenerateWithQuotaTolerance(buildStructuredContinuationPrompt(ctx.taskPrompt, schema, combined, ctx.input), compactTimeoutMs);
600
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
601
+ const extra = await tryGenerateWithQuotaTolerance(buildStructuredContinuationPrompt(ctx.taskPrompt, schema, combined, ctx.input), compactTimeoutMs, ctx.signal);
582
602
  if (!extra) break;
583
603
  const merged = mergeStructuredFragments(combined, extra);
584
604
  if (merged === combined) break;
@@ -592,9 +612,9 @@ async function askArrayCount(arraySchema, fieldName, ctx) {
592
612
  const bounds = getArrayBounds(arraySchema, fieldName);
593
613
  const prompt = fitContinuationPrompt([`"${fieldName}" array count (${bounds.min}-${bounds.max}). Reply: single integer only.`, `Task: ${truncateEnd(compactWhitespace(ctx.taskPrompt), 150)}`]);
594
614
  try {
595
- await sleep(INTER_CALL_DELAY_MS);
615
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
596
616
  const countTimeoutMs = Math.min(ctx.timeoutMs, ARRAY_COUNT_TIMEOUT_CAP_MS);
597
- const raw = await generateStatelessWithQuotaRetry(prompt, countTimeoutMs);
617
+ const raw = await generateStatelessWithQuotaRetry(prompt, countTimeoutMs, ctx.signal);
598
618
  const n = parseInt(raw.trim().replace(/\D/g, ''), 10);
599
619
  if (Number.isFinite(n) && n >= bounds.min && n <= bounds.max) return n;
600
620
  } catch {
@@ -605,7 +625,7 @@ async function askArrayCount(arraySchema, fieldName, ctx) {
605
625
  async function walkSchema(schema, ctx) {
606
626
  const inner = unwrapModifiers(schema);
607
627
  if (isLeafSchema(inner)) {
608
- await sleep(INTER_CALL_DELAY_MS);
628
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
609
629
  return walkLeaf(inner, ctx);
610
630
  }
611
631
  if (inner instanceof z.ZodArray) {
@@ -618,7 +638,7 @@ async function walkSchema(schema, ctx) {
618
638
  // generate the entire array in one walkCompact call instead of per-element.
619
639
  if (isCompactElement(elementSchema) && count <= MAX_WHOLE_ARRAY_COMPACT_ITEMS) {
620
640
  ctx.onProgress?.(arrayLabel, false);
621
- await sleep(INTER_CALL_DELAY_MS);
641
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
622
642
  const result = await walkCompact(inner, {
623
643
  ...ctx,
624
644
  progressLabel: arrayLabel
@@ -631,7 +651,7 @@ async function walkSchema(schema, ctx) {
631
651
  ctx.onProgress?.(arrayLabel, false);
632
652
  const items = [];
633
653
  for (let i = 0; i < count; i++) {
634
- await sleep(INTER_CALL_DELAY_MS);
654
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
635
655
  const elemLabel = `${arrayLabel}[${i + 1}/${count}]`;
636
656
  const elemCtx = {
637
657
  ...ctx,
@@ -647,7 +667,7 @@ async function walkSchema(schema, ctx) {
647
667
 
648
668
  // Compact object: single call (except at root where per-field gives better progress).
649
669
  if (isCompactSchema(inner) && ctx.path.length > 0) {
650
- await sleep(INTER_CALL_DELAY_MS);
670
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
651
671
  return walkCompact(inner, ctx);
652
672
  }
653
673
  if (inner instanceof z.ZodObject) {
@@ -664,10 +684,10 @@ async function walkSchema(schema, ctx) {
664
684
  progressLabel: [...ctx.path, key].join('.')
665
685
  };
666
686
  if (isLeafSchema(unwrapModifiers(fieldSchema))) {
667
- await sleep(INTER_CALL_DELAY_MS);
687
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
668
688
  result[key] = await walkLeaf(fieldSchema, fieldCtx);
669
689
  } else {
670
- await sleep(INTER_CALL_DELAY_MS);
690
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
671
691
  result[key] = await walkCompact(fieldSchema, fieldCtx);
672
692
  }
673
693
  }
@@ -680,17 +700,18 @@ async function walkSchema(schema, ctx) {
680
700
  }
681
701
  return result;
682
702
  }
683
- await sleep(INTER_CALL_DELAY_MS);
703
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
684
704
  return walkLeaf(inner, ctx);
685
705
  }
686
- async function generateChunked(prompt, schema, input, timeoutMs, maxRetries, onProgress) {
706
+ async function generateChunked(prompt, schema, input, timeoutMs, maxRetries, onProgress, signal) {
687
707
  return walkSchema(schema, {
688
708
  taskPrompt: prompt,
689
709
  input,
690
710
  timeoutMs,
691
711
  maxRetries,
692
712
  path: [],
693
- onProgress
713
+ onProgress,
714
+ signal
694
715
  });
695
716
  }
696
717
  export async function generateStructuredResponse(options) {
@@ -703,19 +724,21 @@ export async function generateStructuredResponse(options) {
703
724
  maxContinuations = DEFAULT_MAX_STRUCTURED_CONTINUATIONS,
704
725
  timeoutMs = DEFAULT_STRUCTURED_TIMEOUT_MS,
705
726
  strategy = 'single',
706
- onProgress
727
+ onProgress,
728
+ signal
707
729
  } = options;
708
730
  if (inputSchema && input !== undefined) {
709
731
  inputSchema.parse(input);
710
732
  }
711
733
  if (strategy === 'chunked') {
712
- const assembled = await generateChunked(prompt, output, input, timeoutMs, maxRetries, onProgress);
734
+ const assembled = await generateChunked(prompt, output, input, timeoutMs, maxRetries, onProgress, signal);
713
735
  return output.parse(assembled);
714
736
  }
715
737
  let lastRawResponse = '';
716
738
  let lastIssues = [];
717
739
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
718
- lastRawResponse = attempt === 0 ? await generateStructuredRawResponse(prompt, output, input, maxContinuations, timeoutMs) : await generateStatelessWithQuotaRetry(buildRepairPrompt(prompt, output, lastRawResponse, lastIssues), timeoutMs);
740
+ if (signal?.aborted) throw makeAbortError();
741
+ lastRawResponse = attempt === 0 ? await generateStructuredRawResponse(prompt, output, input, maxContinuations, timeoutMs) : await generateStatelessWithQuotaRetry(buildRepairPrompt(prompt, output, lastRawResponse, lastIssues), timeoutMs, signal);
719
742
  try {
720
743
  const parsed = JSON.parse(extractJsonPayload(lastRawResponse));
721
744
  return output.parse(parsed);
@@ -1 +1 @@
1
- {"version":3,"names":["Platform","z","NativeAiCore","StructuredOutputError","Error","constructor","message","rawResponse","issues","name","STRUCTURED_PROMPT_BUDGET","STRUCTURED_REPAIR_RESPONSE_BUDGET","STRUCTURED_ISSUES_BUDGET","STRUCTURED_CONTINUATION_BUDGET","DEFAULT_MAX_STRUCTURED_CONTINUATIONS","CONTINUATION_OVERLAP_WINDOW","DEFAULT_STRUCTURED_TIMEOUT_MS","QUOTA_ERROR_CODE","QUOTA_RETRY_DELAY_MS","MAX_QUOTA_RETRIES","sleep","ms","Promise","resolve","setTimeout","toErrorMessage","error","JSON","stringify","String","readNumericErrorCode","directCode","errorCode","code","parsed","Number","parseInt","isFinite","match","capturedCode","isQuotaError","toLowerCase","includes","truncateStart","text","maxChars","length","slice","truncateEnd","compactWhitespace","replace","trim","stringifyInput","value","fitStructuredPrompt","parts","filter","Boolean","join","fitContinuationPrompt","zodTypeToDescription","schema","ZodString","ZodNumber","ZodBoolean","ZodNull","ZodEnum","options","map","ZodLiteral","ZodArray","element","ZodOptional","unwrap","ZodNullable","ZodUnion","option","ZodObject","shape","entries","Object","key","formatIssues","issue","path","extractFencedJson","extractBalancedJson","start","depth","inString","escaped","index","char","extractJsonPayload","raw","trimmed","fenced","balanced","stripCodeFences","mergeStructuredFragments","existing","incoming","normalizedIncoming","trimStart","maxOverlap","Math","min","size","endsWith","looksLikeIncompleteJson","candidate","max","lastChar","buildStructuredContinuationPrompt","prompt","outputSchema","partialResponse","input","schemaDescription","normalizedPrompt","serializedInput","undefined","partialTail","buildJsonParseIssues","ZodError","generateStructuredRawResponse","output","maxContinuations","timeoutMs","combined","generateStatelessWithQuotaRetry","buildStructuredPrompt","attempt","parse","continuationPrompt","continuation","tryGenerateWithQuotaTolerance","merged","buildRepairPrompt","invalidResponse","issueText","normalizedIssues","normalizedInvalidResponse","generateStateless","OS","generateResponseStateless","generateResponse","generateStatelessWithTimeout","timer","timeout","_","reject","race","clearTimeout","quotaRetries","INTER_CALL_DELAY_MS","DEFAULT_ARRAY_COUNT","MAX_ARRAY_COUNT","MAX_WHOLE_ARRAY_COMPACT_ITEMS","LEAF_TIMEOUT_CAP_MS","COMPACT_TIMEOUT_CAP_MS","ARRAY_COUNT_TIMEOUT_CAP_MS","LEAF_MAX_RETRIES_CAP","MAX_COMPACT_SCHEMA_CHARS","readZodLengthValue","maybe","getArrayBounds","arraySchema","fieldName","def","_def","exact","exactLength","minLen","minLength","maxLen","maxLength","fixed","round","preferred","unwrapModifiers","isLeafSchema","inner","isCompactSchema","hasNestedArray","isCompactElement","values","some","isStringSchema","isNumberSchema","isBooleanSchema","getEnumOptions","getLiteralValue","synthesizeLeafFallback","field","maybeIndex","idx","coercePrimitiveField","n","isNaN","test","enumOptions","normalized","direct","find","opt","ci","literalValue","walkLeaf","ctx","fieldPath","progressLabel","onProgress","fieldType","itemCtx","itemHint","isStr","valueInstruction","taskPrompt","leafTimeoutMs","leafMaxRetries","maxRetries","lastRaw","lastErrorMessage","coerced","validated","safeParse","success","data","fallbackFromRaw","fallbackSynth","fallback","fallbackValidated","walkCompact","typeDesc","compactTimeoutMs","cont","result","extra","finalResult","askArrayCount","bounds","countTimeoutMs","walkSchema","elementSchema","arrayLabel","count","items","i","elemLabel","elemCtx","push","compactEntries","s","complexEntries","fieldSchema","fieldCtx","generateChunked","generateStructuredResponse","inputSchema","strategy","assembled","lastRawResponse","lastIssues"],"sourceRoot":"../../src","sources":["structured.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Platform","z","NativeAiCore","StructuredOutputError","Error","constructor","message","rawResponse","issues","name","STRUCTURED_PROMPT_BUDGET","STRUCTURED_REPAIR_RESPONSE_BUDGET","STRUCTURED_ISSUES_BUDGET","STRUCTURED_CONTINUATION_BUDGET","DEFAULT_MAX_STRUCTURED_CONTINUATIONS","CONTINUATION_OVERLAP_WINDOW","DEFAULT_STRUCTURED_TIMEOUT_MS","QUOTA_ERROR_CODE","QUOTA_RETRY_DELAY_MS","MAX_QUOTA_RETRIES","makeAbortError","Object","assign","sleep","ms","signal","Promise","resolve","reject","aborted","timer","setTimeout","addEventListener","clearTimeout","once","toErrorMessage","error","JSON","stringify","String","readNumericErrorCode","directCode","errorCode","code","parsed","Number","parseInt","isFinite","match","capturedCode","isQuotaError","toLowerCase","includes","truncateStart","text","maxChars","length","slice","truncateEnd","compactWhitespace","replace","trim","stringifyInput","value","fitStructuredPrompt","parts","filter","Boolean","join","fitContinuationPrompt","zodTypeToDescription","schema","ZodString","ZodNumber","ZodBoolean","ZodNull","ZodEnum","options","map","ZodLiteral","ZodArray","element","ZodOptional","unwrap","ZodNullable","ZodUnion","option","ZodObject","shape","entries","key","formatIssues","issue","path","extractFencedJson","extractBalancedJson","start","depth","inString","escaped","index","char","extractJsonPayload","raw","trimmed","fenced","balanced","stripCodeFences","mergeStructuredFragments","existing","incoming","normalizedIncoming","trimStart","maxOverlap","Math","min","size","endsWith","looksLikeIncompleteJson","candidate","max","lastChar","buildStructuredContinuationPrompt","prompt","outputSchema","partialResponse","input","schemaDescription","normalizedPrompt","serializedInput","undefined","partialTail","buildJsonParseIssues","ZodError","generateStructuredRawResponse","output","maxContinuations","timeoutMs","combined","generateStatelessWithQuotaRetry","buildStructuredPrompt","attempt","parse","continuationPrompt","continuation","tryGenerateWithQuotaTolerance","merged","buildRepairPrompt","invalidResponse","issueText","normalizedIssues","normalizedInvalidResponse","generateStateless","OS","generateResponseStateless","generateResponse","generateStatelessWithTimeout","timeout","_","race","quotaRetries","INTER_CALL_DELAY_MS","DEFAULT_ARRAY_COUNT","MAX_ARRAY_COUNT","MAX_WHOLE_ARRAY_COMPACT_ITEMS","LEAF_TIMEOUT_CAP_MS","COMPACT_TIMEOUT_CAP_MS","ARRAY_COUNT_TIMEOUT_CAP_MS","LEAF_MAX_RETRIES_CAP","MAX_COMPACT_SCHEMA_CHARS","readZodLengthValue","maybe","getArrayBounds","arraySchema","fieldName","def","_def","exact","exactLength","minLen","minLength","maxLen","maxLength","fixed","round","preferred","unwrapModifiers","isLeafSchema","inner","isCompactSchema","hasNestedArray","isCompactElement","values","some","isStringSchema","isNumberSchema","isBooleanSchema","getEnumOptions","getLiteralValue","synthesizeLeafFallback","field","maybeIndex","idx","coercePrimitiveField","n","isNaN","test","enumOptions","normalized","direct","find","opt","ci","literalValue","walkLeaf","ctx","fieldPath","progressLabel","onProgress","fieldType","itemCtx","itemHint","isStr","valueInstruction","taskPrompt","leafTimeoutMs","leafMaxRetries","maxRetries","lastRaw","lastErrorMessage","coerced","validated","safeParse","success","data","fallbackFromRaw","fallbackSynth","fallback","fallbackValidated","walkCompact","typeDesc","compactTimeoutMs","cont","result","extra","finalResult","askArrayCount","bounds","countTimeoutMs","walkSchema","elementSchema","arrayLabel","count","items","i","elemLabel","elemCtx","push","compactEntries","s","complexEntries","fieldSchema","fieldCtx","generateChunked","generateStructuredResponse","inputSchema","strategy","assembled","lastRawResponse","lastIssues"],"sourceRoot":"../../src","sources":["structured.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,CAAC,QAAyB,KAAK;AACxC,OAAOC,YAAY,MAAM,mBAAgB;AAuCzC,OAAO,MAAMC,qBAAqB,SAASC,KAAK,CAAC;EAI/CC,WAAWA,CACTC,OAAe,EACfC,WAAmB,EACnBC,MAAmC,GAAG,EAAE,EACxC;IACA,KAAK,CAACF,OAAO,CAAC;IACd,IAAI,CAACG,IAAI,GAAG,uBAAuB;IACnC,IAAI,CAACF,WAAW,GAAGA,WAAW;IAC9B,IAAI,CAACC,MAAM,GAAGA,MAAM;EACtB;AACF;AAEA,MAAME,wBAAwB,GAAG,IAAI;AACrC,MAAMC,iCAAiC,GAAG,IAAI;AAC9C,MAAMC,wBAAwB,GAAG,GAAG;AACpC,MAAMC,8BAA8B,GAAG,IAAI;AAC3C,MAAMC,oCAAoC,GAAG,CAAC;AAC9C,MAAMC,2BAA2B,GAAG,GAAG;AACvC,MAAMC,6BAA6B,GAAG,MAAM,CAAC,CAAC;AAC9C,MAAMC,gBAAgB,GAAG,CAAC;AAC1B,MAAMC,oBAAoB,GAAG,IAAI;AACjC,MAAMC,iBAAiB,GAAG,CAAC;AAE3B,SAASC,cAAcA,CAAA,EAAU;EAC/B,OAAOC,MAAM,CAACC,MAAM,CAAC,IAAIlB,KAAK,CAAC,uBAAuB,CAAC,EAAE;IACvDK,IAAI,EAAE;EACR,CAAC,CAAC;AACJ;AAEA,SAASc,KAAKA,CAACC,EAAU,EAAEC,MAAoB,EAAiB;EAC9D,OAAO,IAAIC,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;IACtC,IAAIH,MAAM,EAAEI,OAAO,EAAE;MACnBD,MAAM,CAACR,cAAc,CAAC,CAAC,CAAC;MACxB;IACF;IACA,MAAMU,KAAK,GAAGC,UAAU,CAACJ,OAAO,EAAEH,EAAE,CAAC;IACrCC,MAAM,EAAEO,gBAAgB,CACtB,OAAO,EACP,MAAM;MACJC,YAAY,CAACH,KAAK,CAAC;MACnBF,MAAM,CAACR,cAAc,CAAC,CAAC,CAAC;IAC1B,CAAC,EACD;MAAEc,IAAI,EAAE;IAAK,CACf,CAAC;EACH,CAAC,CAAC;AACJ;AAEA,SAASC,cAAcA,CAACC,KAAc,EAAU;EAC9C,IAAIA,KAAK,YAAYhC,KAAK,EAAE,OAAOgC,KAAK,CAAC9B,OAAO;EAChD,IAAI,OAAO8B,KAAK,KAAK,QAAQ,EAAE,OAAOA,KAAK;EAC3C,IAAI;IACF,OAAOC,IAAI,CAACC,SAAS,CAACF,KAAK,CAAC;EAC9B,CAAC,CAAC,MAAM;IACN,OAAOG,MAAM,CAACH,KAAK,CAAC;EACtB;AACF;AAEA,SAASI,oBAAoBA,CAACJ,KAAc,EAAiB;EAC3D,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;IAC/C,MAAMK,UAAU,GAAIL,KAAK,CAA6BM,SAAS;IAC/D,IAAI,OAAOD,UAAU,KAAK,QAAQ,EAAE,OAAOA,UAAU;IAErD,MAAME,IAAI,GAAIP,KAAK,CAAwBO,IAAI;IAC/C,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE,OAAOA,IAAI;IACzC,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;MAC5B,MAAMC,MAAM,GAAGC,MAAM,CAACC,QAAQ,CAACH,IAAI,EAAE,EAAE,CAAC;MACxC,IAAIE,MAAM,CAACE,QAAQ,CAACH,MAAM,CAAC,EAAE,OAAOA,MAAM;IAC5C;EACF;EAEA,MAAMtC,OAAO,GAAG6B,cAAc,CAACC,KAAK,CAAC;EACrC,MAAMY,KAAK,GAAG1C,OAAO,CAAC0C,KAAK,CAAC,+BAA+B,CAAC;EAC5D,IAAI,CAACA,KAAK,EAAE,OAAO,IAAI;EACvB,MAAMC,YAAY,GAAGD,KAAK,CAAC,CAAC,CAAC;EAC7B,IAAI,CAACC,YAAY,EAAE,OAAO,IAAI;EAC9B,MAAML,MAAM,GAAGC,MAAM,CAACC,QAAQ,CAACG,YAAY,EAAE,EAAE,CAAC;EAChD,OAAOJ,MAAM,CAACE,QAAQ,CAACH,MAAM,CAAC,GAAGA,MAAM,GAAG,IAAI;AAChD;AAEA,SAASM,YAAYA,CAACd,KAAc,EAAW;EAC7C,MAAMO,IAAI,GAAGH,oBAAoB,CAACJ,KAAK,CAAC;EACxC,IAAIO,IAAI,KAAK1B,gBAAgB,EAAE,OAAO,IAAI;EAC1C,MAAMX,OAAO,GAAG6B,cAAc,CAACC,KAAK,CAAC,CAACe,WAAW,CAAC,CAAC;EACnD,OACE7C,OAAO,CAAC8C,QAAQ,CAAC,cAAc,CAAC,IAChC9C,OAAO,CAAC8C,QAAQ,CAAC,gBAAgB,CAAC,IAClC9C,OAAO,CAAC8C,QAAQ,CAAC,eAAe,CAAC;AAErC;AAEA,SAASC,aAAaA,CAACC,IAAY,EAAEC,QAAgB,EAAU;EAC7D,IAAID,IAAI,CAACE,MAAM,IAAID,QAAQ,EAAE,OAAOD,IAAI;EACxC,OAAOA,IAAI,CAACG,KAAK,CAACH,IAAI,CAACE,MAAM,GAAGD,QAAQ,CAAC;AAC3C;AAEA,SAASG,WAAWA,CAACJ,IAAY,EAAEC,QAAgB,EAAU;EAC3D,IAAID,IAAI,CAACE,MAAM,IAAID,QAAQ,EAAE,OAAOD,IAAI;EACxC,OAAOA,IAAI,CAACG,KAAK,CAAC,CAAC,EAAEF,QAAQ,CAAC;AAChC;AAEA,SAASI,iBAAiBA,CAACL,IAAY,EAAU;EAC/C,OAAOA,IAAI,CAACM,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAACC,IAAI,CAAC,CAAC;AACzC;AAEA,SAASC,cAAcA,CAACC,KAAc,EAAER,QAAgB,EAAU;EAChE,OAAOF,aAAa,CAAChB,IAAI,CAACC,SAAS,CAACyB,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAER,QAAQ,CAAC;AAChE;AAEA,SAASS,mBAAmBA,CAACC,KAAe,EAAU;EACpD,OAAOZ,aAAa,CAClBY,KAAK,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,EAChC1D,wBACF,CAAC;AACH;AAEA,SAAS2D,qBAAqBA,CAACJ,KAAe,EAAU;EACtD,OAAOZ,aAAa,CAClBY,KAAK,CAACC,MAAM,CAACC,OAAO,CAAC,CAACC,IAAI,CAAC,IAAI,CAAC,EAChCvD,8BACF,CAAC;AACH;AAEA,SAASyD,oBAAoBA,CAACC,MAAkB,EAAU;EACxD,IAAIA,MAAM,YAAYtE,CAAC,CAACuE,SAAS,EAAE,OAAO,QAAQ;EAClD,IAAID,MAAM,YAAYtE,CAAC,CAACwE,SAAS,EAAE,OAAO,QAAQ;EAClD,IAAIF,MAAM,YAAYtE,CAAC,CAACyE,UAAU,EAAE,OAAO,SAAS;EACpD,IAAIH,MAAM,YAAYtE,CAAC,CAAC0E,OAAO,EAAE,OAAO,MAAM;EAC9C,IAAIJ,MAAM,YAAYtE,CAAC,CAAC2E,OAAO,EAAE;IAC/B,OAAO,QAAQL,MAAM,CAACM,OAAO,CAC1BC,GAAG,CAAEf,KAAa,IAAK1B,IAAI,CAACC,SAAS,CAACyB,KAAK,CAAC,CAAC,CAC7CK,IAAI,CAAC,IAAI,CAAC,GAAG;EAClB;EACA,IAAIG,MAAM,YAAYtE,CAAC,CAAC8E,UAAU,EAAE;IAClC,OAAO,WAAW1C,IAAI,CAACC,SAAS,CAACiC,MAAM,CAACR,KAAK,CAAC,GAAG;EACnD;EACA,IAAIQ,MAAM,YAAYtE,CAAC,CAAC+E,QAAQ,EAAE;IAChC,OAAO,SAASV,oBAAoB,CAACC,MAAM,CAACU,OAAgC,CAAC,GAAG;EAClF;EACA,IAAIV,MAAM,YAAYtE,CAAC,CAACiF,WAAW,EAAE;IACnC,OAAO,GAAGZ,oBAAoB,CAACC,MAAM,CAACY,MAAM,CAAC,CAA0B,CAAC,cAAc;EACxF;EACA,IAAIZ,MAAM,YAAYtE,CAAC,CAACmF,WAAW,EAAE;IACnC,OAAO,GAAGd,oBAAoB,CAACC,MAAM,CAACY,MAAM,CAAC,CAA0B,CAAC,SAAS;EACnF;EACA,IAAIZ,MAAM,YAAYtE,CAAC,CAACoF,QAAQ,EAAE;IAChC,OAAOd,MAAM,CAACM,OAAO,CAClBC,GAAG,CAAEQ,MAAe,IAAKhB,oBAAoB,CAACgB,MAAoB,CAAC,CAAC,CACpElB,IAAI,CAAC,KAAK,CAAC;EAChB;EACA,IAAIG,MAAM,YAAYtE,CAAC,CAACsF,SAAS,EAAE;IACjC,MAAMC,KAAK,GAAGjB,MAAM,CAACiB,KAAK;IAC1B,MAAMC,OAAO,GAAGpE,MAAM,CAACoE,OAAO,CAACD,KAAK,CAAC,CAACV,GAAG,CACvC,CAAC,CAACY,GAAG,EAAE3B,KAAK,CAAC,KAAK,KAAK2B,GAAG,KAAKpB,oBAAoB,CAACP,KAAmB,CAAC,EAC1E,CAAC;IACD,OAAO;AACX,EAAE0B,OAAO,CAACrB,IAAI,CAAC,KAAK,CAAC;AACrB,EAAE;EACA;EAEA,OAAO,SAAS;AAClB;AAEA,SAASuB,YAAYA,CAACvD,KAAiB,EAA+B;EACpE,OAAOA,KAAK,CAAC5B,MAAM,CAACsE,GAAG,CAAEc,KAAK,KAAM;IAClCC,IAAI,EAAED,KAAK,CAACC,IAAI,CAACzB,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG;IACjC9D,OAAO,EAAEsF,KAAK,CAACtF;EACjB,CAAC,CAAC,CAAC;AACL;AAEA,SAASwF,iBAAiBA,CAACxC,IAAY,EAAiB;EACtD,MAAMN,KAAK,GAAGM,IAAI,CAACN,KAAK,CAAC,+BAA+B,CAAC;EACzD,OAAOA,KAAK,GAAG,CAAC,CAAC,EAAEa,IAAI,CAAC,CAAC,IAAI,IAAI;AACnC;AAEA,SAASkC,mBAAmBA,CAACzC,IAAY,EAAiB;EACxD,IAAI0C,KAAK,GAAG,CAAC,CAAC;EACd,IAAIC,KAAK,GAAG,CAAC;EACb,IAAIC,QAAQ,GAAG,KAAK;EACpB,IAAIC,OAAO,GAAG,KAAK;EAEnB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAG9C,IAAI,CAACE,MAAM,EAAE4C,KAAK,EAAE,EAAE;IAChD,MAAMC,IAAI,GAAG/C,IAAI,CAAC8C,KAAK,CAAC;IAExB,IAAIF,QAAQ,EAAE;MACZ,IAAIC,OAAO,EAAE;QACXA,OAAO,GAAG,KAAK;MACjB,CAAC,MAAM,IAAIE,IAAI,KAAK,IAAI,EAAE;QACxBF,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM,IAAIE,IAAI,KAAK,GAAG,EAAE;QACvBH,QAAQ,GAAG,KAAK;MAClB;MACA;IACF;IAEA,IAAIG,IAAI,KAAK,GAAG,EAAE;MAChBH,QAAQ,GAAG,IAAI;MACf;IACF;IAEA,IAAIG,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAAE;MAChC,IAAIJ,KAAK,KAAK,CAAC,EAAED,KAAK,GAAGI,KAAK;MAC9BH,KAAK,EAAE;MACP;IACF;IAEA,IAAII,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAAE;MAChCJ,KAAK,EAAE;MACP,IAAIA,KAAK,KAAK,CAAC,IAAID,KAAK,IAAI,CAAC,EAAE;QAC7B,OAAO1C,IAAI,CAACG,KAAK,CAACuC,KAAK,EAAEI,KAAK,GAAG,CAAC,CAAC;MACrC;IACF;EACF;EAEA,OAAO,IAAI;AACb;AAEA,SAASE,kBAAkBA,CAACC,GAAW,EAAU;EAC/C,MAAMC,OAAO,GAAGD,GAAG,CAAC1C,IAAI,CAAC,CAAC;EAC1B,MAAM4C,MAAM,GAAGX,iBAAiB,CAACU,OAAO,CAAC;EACzC,IAAIC,MAAM,EAAE,OAAOA,MAAM;EACzB,MAAMC,QAAQ,GAAGX,mBAAmB,CAACS,OAAO,CAAC;EAC7C,IAAIE,QAAQ,EAAE,OAAOA,QAAQ;EAC7B,OAAOF,OAAO;AAChB;AAEA,SAASG,eAAeA,CAACrD,IAAY,EAAU;EAC7C,OAAOA,IAAI,CAACM,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;AACtE;AAEA,SAASgD,wBAAwBA,CAACC,QAAgB,EAAEC,QAAgB,EAAU;EAC5E,MAAMC,kBAAkB,GAAGJ,eAAe,CAACG,QAAQ,CAAC,CAACE,SAAS,CAAC,CAAC;EAChE,IAAI,CAACD,kBAAkB,EAAE,OAAOF,QAAQ;EACxC,IAAI,CAACA,QAAQ,EAAE,OAAOE,kBAAkB;EAExC,MAAME,UAAU,GAAGC,IAAI,CAACC,GAAG,CACzBpG,2BAA2B,EAC3B8F,QAAQ,CAACrD,MAAM,EACfuD,kBAAkB,CAACvD,MACrB,CAAC;EAED,KAAK,IAAI4D,IAAI,GAAGH,UAAU,EAAEG,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EAAE;IAC5C,IAAIP,QAAQ,CAACQ,QAAQ,CAACN,kBAAkB,CAACtD,KAAK,CAAC,CAAC,EAAE2D,IAAI,CAAC,CAAC,EAAE;MACxD,OAAOP,QAAQ,GAAGE,kBAAkB,CAACtD,KAAK,CAAC2D,IAAI,CAAC;IAClD;EACF;EAEA,OAAOP,QAAQ,GAAGE,kBAAkB;AACtC;AAEA,SAASO,uBAAuBA,CAAChE,IAAY,EAAW;EACtD,MAAMiE,SAAS,GAAGjB,kBAAkB,CAAChD,IAAI,CAAC,CAACO,IAAI,CAAC,CAAC;EACjD,IAAI,CAAC0D,SAAS,EAAE,OAAO,KAAK;EAE5B,IAAItB,KAAK,GAAG,CAAC;EACb,IAAIC,QAAQ,GAAG,KAAK;EACpB,IAAIC,OAAO,GAAG,KAAK;EAEnB,KAAK,IAAIC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGmB,SAAS,CAAC/D,MAAM,EAAE4C,KAAK,EAAE,EAAE;IACrD,MAAMC,IAAI,GAAGkB,SAAS,CAACnB,KAAK,CAAC;IAE7B,IAAIF,QAAQ,EAAE;MACZ,IAAIC,OAAO,EAAE;QACXA,OAAO,GAAG,KAAK;MACjB,CAAC,MAAM,IAAIE,IAAI,KAAK,IAAI,EAAE;QACxBF,OAAO,GAAG,IAAI;MAChB,CAAC,MAAM,IAAIE,IAAI,KAAK,GAAG,EAAE;QACvBH,QAAQ,GAAG,KAAK;MAClB;MACA;IACF;IAEA,IAAIG,IAAI,KAAK,GAAG,EAAE;MAChBH,QAAQ,GAAG,IAAI;MACf;IACF;IAEA,IAAIG,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAAE;MAChCJ,KAAK,EAAE;MACP;IACF;IAEA,IAAII,IAAI,KAAK,GAAG,IAAIA,IAAI,KAAK,GAAG,EAAE;MAChCJ,KAAK,GAAGiB,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEvB,KAAK,GAAG,CAAC,CAAC;IAChC;EACF;EAEA,MAAMwB,QAAQ,GAAGF,SAAS,CAACA,SAAS,CAAC/D,MAAM,GAAG,CAAC,CAAC;EAChD,OAAO0C,QAAQ,IAAID,KAAK,GAAG,CAAC,IAAIwB,QAAQ,KAAK,GAAG,IAAIA,QAAQ,KAAK,GAAG;AACtE;AAEA,SAASC,iCAAiCA,CACxCC,MAAc,EACdC,YAAwB,EACxBC,eAAuB,EACvBC,KAAc,EACN;EACR,MAAMC,iBAAiB,GAAGrE,WAAW,CACnCY,oBAAoB,CAACsD,YAAY,CAAC,EAClC,GACF,CAAC;EACD,MAAMI,gBAAgB,GAAGtE,WAAW,CAACC,iBAAiB,CAACgE,MAAM,CAAC,EAAE,GAAG,CAAC;EACpE,MAAMM,eAAe,GACnBH,KAAK,KAAKI,SAAS,GAAG,EAAE,GAAG,gBAAgBpE,cAAc,CAACgE,KAAK,EAAE,GAAG,CAAC,EAAE;EACzE,MAAMK,WAAW,GAAG9E,aAAa,CAACsD,eAAe,CAACkB,eAAe,CAAC,EAAE,GAAG,CAAC;EAExE,OAAOxD,qBAAqB,CAAC,CAC3B,uDAAuD,EACvD,kEAAkE,EAClE,wEAAwE,EACxE,SAAS,EACT0D,iBAAiB,EACjB,UAAUC,gBAAgB,EAAE,EAC5BC,eAAe,EACf,4BAA4B,EAC5BE,WAAW,CACZ,CAAC;AACJ;AAEA,SAASC,oBAAoBA,CAAChG,KAAc,EAA+B;EACzE,IAAIA,KAAK,YAAYnC,CAAC,CAACoI,QAAQ,EAAE;IAC/B,OAAO1C,YAAY,CAACvD,KAAK,CAAC;EAC5B;EAEA,IAAIA,KAAK,YAAYhC,KAAK,EAAE;IAC1B,OAAO,CAAC;MAAEyF,IAAI,EAAE,GAAG;MAAEvF,OAAO,EAAE8B,KAAK,CAAC9B;IAAQ,CAAC,CAAC;EAChD;EAEA,OAAO,CAAC;IAAEuF,IAAI,EAAE,GAAG;IAAEvF,OAAO,EAAE;EAAkC,CAAC,CAAC;AACpE;AAEA,eAAegI,6BAA6BA,CAI1CX,MAAc,EACdY,MAAqB,EACrBT,KAAyB,EACzBU,gBAAwB,EACxBC,SAAiB,EACA;EACjB,IAAIC,QAAQ,GAAG,MAAMC,+BAA+B,CAClDC,qBAAqB,CAACjB,MAAM,EAAEY,MAAM,EAAET,KAAK,CAAC,EAC5CW,SACF,CAAC;EAED,KAAK,IAAII,OAAO,GAAG,CAAC,EAAEA,OAAO,GAAGL,gBAAgB,EAAEK,OAAO,EAAE,EAAE;IAC3D,IAAI;MACFxG,IAAI,CAACyG,KAAK,CAACxC,kBAAkB,CAACoC,QAAQ,CAAC,CAAC;MACxC,OAAOA,QAAQ;IACjB,CAAC,CAAC,MAAM;MACN,IAAI,CAACpB,uBAAuB,CAACoB,QAAQ,CAAC,EAAE;QACtC,OAAOA,QAAQ;MACjB;IACF;IAEA,MAAMK,kBAAkB,GAAGrB,iCAAiC,CAC1DC,MAAM,EACNY,MAAM,EACNG,QAAQ,EACRZ,KACF,CAAC;IACD,MAAMkB,YAAY,GAAG,MAAMC,6BAA6B,CACtDF,kBAAkB,EAClBN,SACF,CAAC;IACD,IAAIO,YAAY,KAAK,IAAI,EAAE;MACzB;IACF;IACA,MAAME,MAAM,GAAGtC,wBAAwB,CAAC8B,QAAQ,EAAEM,YAAY,CAAC;IAC/D,IAAIE,MAAM,KAAKR,QAAQ,EAAE;MACvB;IACF;IACAA,QAAQ,GAAGQ,MAAM;EACnB;EAEA,OAAOR,QAAQ;AACjB;AAEA,SAASE,qBAAqBA,CAC5BjB,MAAc,EACdC,YAAwB,EACxBE,KAAc,EACN;EACR,MAAMC,iBAAiB,GAAGrE,WAAW,CACnCY,oBAAoB,CAACsD,YAAY,CAAC,EAClC,GACF,CAAC;EACD,MAAMI,gBAAgB,GAAGtE,WAAW,CAACC,iBAAiB,CAACgE,MAAM,CAAC,EAAE,GAAG,CAAC;EACpE,MAAMM,eAAe,GACnBH,KAAK,KAAKI,SAAS,GAAG,EAAE,GAAG,gBAAgBpE,cAAc,CAACgE,KAAK,EAAE,GAAG,CAAC,EAAE;EAEzE,OAAO9D,mBAAmB,CAAC,CACzB,yBAAyB,EACzB,yEAAyE,EACzE,wDAAwD,EACxD+D,iBAAiB,EACjB,UAAUC,gBAAgB,EAAE,EAC5BC,eAAe,CAChB,CAAC;AACJ;AAEA,SAASkB,iBAAiBA,CACxBxB,MAAc,EACdC,YAAwB,EACxBwB,eAAuB,EACvB5I,MAAmC,EAC3B;EACR,MAAM6I,SAAS,GAAG7I,MAAM,CACrBsE,GAAG,CAAEc,KAAK,IAAK,KAAKA,KAAK,CAACC,IAAI,KAAKD,KAAK,CAACtF,OAAO,EAAE,CAAC,CACnD8D,IAAI,CAAC,IAAI,CAAC;EACb,MAAMkF,gBAAgB,GAAG5F,WAAW,CAAC2F,SAAS,EAAEzI,wBAAwB,CAAC;EACzE,MAAM2I,yBAAyB,GAAGlG,aAAa,CAC7CM,iBAAiB,CAAC2C,kBAAkB,CAAC8C,eAAe,CAAC,CAAC,EACtDzI,iCACF,CAAC;EAED,OAAOqD,mBAAmB,CAAC,CACzB4E,qBAAqB,CAACjB,MAAM,EAAEC,YAAY,CAAC,EAC3C,qCAAqC,EACrC,wCAAwC,EACxC,oBAAoB,EACpB0B,gBAAgB,EAChB,oBAAoB,EACpBC,yBAAyB,CAC1B,CAAC;AACJ;AAEA,eAAeC,iBAAiBA,CAC9B7B,MAAc,EACdlG,MAAoB,EACH;EACjB,IAAI,CAACvB,YAAY,EAAE;IACjB,MAAM,IAAIE,KAAK,CACb,sDAAsDJ,QAAQ,CAACyJ,EAAE,kCACnE,CAAC;EACH;EAEA,IAAIhI,MAAM,EAAEI,OAAO,EAAE,MAAMT,cAAc,CAAC,CAAC;EAE3C,IAAIlB,YAAY,EAAEwJ,yBAAyB,EAAE;IAC3C,OAAOxJ,YAAY,CAACwJ,yBAAyB,CAAC/B,MAAM,CAAC;EACvD;EAEA,OAAOzH,YAAY,CAACyJ,gBAAgB,CAAChC,MAAM,CAAC;AAC9C;AAEA,eAAeiC,4BAA4BA,CACzCjC,MAAc,EACdc,SAAiB,EACjBhH,MAAoB,EACH;EACjB,IAAIgH,SAAS,IAAI,CAAC,EAAE;IAClB,OAAOe,iBAAiB,CAAC7B,MAAM,EAAElG,MAAM,CAAC;EAC1C;EAEA,IAAIK,KAAgD;EACpD,MAAM+H,OAAO,GAAG,IAAInI,OAAO,CAAS,CAACoI,CAAC,EAAElI,MAAM,KAAK;IACjDE,KAAK,GAAGC,UAAU,CAAC,MAAM;MACvBH,MAAM,CAAC,IAAIxB,KAAK,CAAC,yCAAyCqI,SAAS,IAAI,CAAC,CAAC;IAC3E,CAAC,EAAEA,SAAS,CAAC;EACf,CAAC,CAAC;EAEF,IAAI;IACF,OAAO,MAAM/G,OAAO,CAACqI,IAAI,CAAC,CAACP,iBAAiB,CAAC7B,MAAM,EAAElG,MAAM,CAAC,EAAEoI,OAAO,CAAC,CAAC;EACzE,CAAC,SAAS;IACR,IAAI/H,KAAK,EAAEG,YAAY,CAACH,KAAK,CAAC;EAChC;AACF;AAEA,eAAe6G,+BAA+BA,CAC5ChB,MAAc,EACdc,SAAiB,EACjBhH,MAAoB,EACH;EACjB,IAAIuI,YAAY,GAAG,CAAC;EACpB,OAAO,IAAI,EAAE;IACX,IAAI;MACF,OAAO,MAAMJ,4BAA4B,CAACjC,MAAM,EAAEc,SAAS,EAAEhH,MAAM,CAAC;IACtE,CAAC,CAAC,OAAOW,KAAK,EAAE;MACd,IAAKA,KAAK,CAAuB3B,IAAI,KAAK,YAAY,EAAE,MAAM2B,KAAK;MACnE,IAAI,CAACc,YAAY,CAACd,KAAK,CAAC,IAAI4H,YAAY,IAAI7I,iBAAiB,EAAE;QAC7D,MAAMiB,KAAK;MACb;MACA4H,YAAY,IAAI,CAAC;MACjB,MAAMzI,KAAK,CAACL,oBAAoB,EAAEO,MAAM,CAAC;IAC3C;EACF;AACF;AAEA,eAAewH,6BAA6BA,CAC1CtB,MAAc,EACdc,SAAiB,EACjBhH,MAAoB,EACI;EACxB,IAAI;IACF,OAAO,MAAMkH,+BAA+B,CAAChB,MAAM,EAAEc,SAAS,EAAEhH,MAAM,CAAC;EACzE,CAAC,CAAC,OAAOW,KAAK,EAAE;IACd,IAAKA,KAAK,CAAuB3B,IAAI,KAAK,YAAY,EAAE,MAAM2B,KAAK;IACnE,IAAIc,YAAY,CAACd,KAAK,CAAC,EAAE;MACvB,OAAO,IAAI;IACb;IACA,MAAMA,KAAK;EACb;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM6H,mBAAmB,GAAG,GAAG;AAC/B,MAAMC,mBAAmB,GAAG,CAAC;AAC7B,MAAMC,eAAe,GAAG,CAAC;AACzB,MAAMC,6BAA6B,GAAG,CAAC;AACvC,MAAMC,mBAAmB,GAAG,KAAK;AACjC,MAAMC,sBAAsB,GAAG,KAAK;AACpC,MAAMC,0BAA0B,GAAG,IAAI;AACvC,MAAMC,oBAAoB,GAAG,CAAC;AAC9B;AACA,MAAMC,wBAAwB,GAAG,GAAG;AAuBpC,SAASC,kBAAkBA,CAAC3G,KAAc,EAAiB;EACzD,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIlB,MAAM,CAACE,QAAQ,CAACgB,KAAK,CAAC,EAAE,OAAOA,KAAK;EACrE,IAAI,OAAOA,KAAK,KAAK,QAAQ,IAAIA,KAAK,KAAK,IAAI,EAAE;IAC/C,MAAM4G,KAAK,GAAI5G,KAAK,CAAyBA,KAAK;IAClD,IAAI,OAAO4G,KAAK,KAAK,QAAQ,IAAI9H,MAAM,CAACE,QAAQ,CAAC4H,KAAK,CAAC,EAAE,OAAOA,KAAK;EACvE;EACA,OAAO,IAAI;AACb;AAEA,SAASC,cAAcA,CACrBC,WAAmC,EACnCC,SAAiB,EACC;EAClB,MAAMC,GAAG,GAAIF,WAAW,CACrBG,IAAI;EACP,MAAMC,KAAK,GAAGP,kBAAkB,CAACK,GAAG,EAAEG,WAAW,CAAC;EAClD,MAAMC,MAAM,GAAGT,kBAAkB,CAACK,GAAG,EAAEK,SAAS,CAAC;EACjD,MAAMC,MAAM,GAAGX,kBAAkB,CAACK,GAAG,EAAEO,SAAS,CAAC;EAEjD,IAAIL,KAAK,KAAK,IAAI,EAAE;IAClB,MAAMM,KAAK,GAAGrE,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEN,IAAI,CAACsE,KAAK,CAACP,KAAK,CAAC,CAAC;IAC5C,OAAO;MAAE9D,GAAG,EAAEoE,KAAK;MAAE/D,GAAG,EAAE+D,KAAK;MAAEE,SAAS,EAAEF;IAAM,CAAC;EACrD;EAEA,IAAIpE,GAAG,GAAGgE,MAAM,KAAK,IAAI,GAAGjE,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEN,IAAI,CAACsE,KAAK,CAACL,MAAM,CAAC,CAAC,GAAG,CAAC;EAC/D,IAAI3D,GAAG,GACL6D,MAAM,KAAK,IAAI,GAAGnE,IAAI,CAACM,GAAG,CAACL,GAAG,EAAED,IAAI,CAACsE,KAAK,CAACH,MAAM,CAAC,CAAC,GAAGlB,eAAe;;EAEvE;EACA,MAAM1J,IAAI,GAAGqK,SAAS,CAAC3H,WAAW,CAAC,CAAC;EACpC,IAAI1C,IAAI,KAAK,MAAM,EAAE;IACnB0G,GAAG,GAAGD,IAAI,CAACM,GAAG,CAACL,GAAG,EAAE,CAAC,CAAC;IACtBK,GAAG,GAAGN,IAAI,CAACC,GAAG,CAACK,GAAG,EAAE,CAAC,CAAC;EACxB;EACA,IAAI/G,IAAI,KAAK,WAAW,EAAE;IACxB0G,GAAG,GAAGD,IAAI,CAACM,GAAG,CAACL,GAAG,EAAE,CAAC,CAAC;IACtBK,GAAG,GAAGN,IAAI,CAACC,GAAG,CAACK,GAAG,EAAE,CAAC,CAAC;EACxB;EAEA,MAAMiE,SAAS,GAAGvE,IAAI,CAACM,GAAG,CAACL,GAAG,EAAED,IAAI,CAACC,GAAG,CAACK,GAAG,EAAE0C,mBAAmB,CAAC,CAAC;EACnE,OAAO;IAAE/C,GAAG;IAAEK,GAAG;IAAEiE;EAAU,CAAC;AAChC;AAEA,SAASC,eAAeA,CAACnH,MAAkB,EAAc;EACvD,IAAIA,MAAM,YAAYtE,CAAC,CAACiF,WAAW,IAAIX,MAAM,YAAYtE,CAAC,CAACmF,WAAW,EAAE;IACtE,OAAOsG,eAAe,CAACnH,MAAM,CAACY,MAAM,CAAC,CAAe,CAAC;EACvD;EACA,OAAOZ,MAAM;AACf;AAEA,SAASoH,YAAYA,CAACpH,MAAkB,EAAW;EACjD,MAAMqH,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EACrC,OACEqH,KAAK,YAAY3L,CAAC,CAACuE,SAAS,IAC5BoH,KAAK,YAAY3L,CAAC,CAACwE,SAAS,IAC5BmH,KAAK,YAAY3L,CAAC,CAACyE,UAAU,IAC7BkH,KAAK,YAAY3L,CAAC,CAAC2E,OAAO,IAC1BgH,KAAK,YAAY3L,CAAC,CAAC8E,UAAU,IAC7B6G,KAAK,YAAY3L,CAAC,CAAC0E,OAAO;AAE9B;;AAEA;AACA;AACA,SAASkH,eAAeA,CAACtH,MAAkB,EAAW;EACpD,MAAMqH,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EACrC,IAAIoH,YAAY,CAACC,KAAK,CAAC,EAAE,OAAO,IAAI;EACpC,IAAIA,KAAK,YAAY3L,CAAC,CAAC+E,QAAQ,EAAE,OAAO,KAAK;EAC7C,IAAI8G,cAAc,CAACF,KAAK,CAAC,EAAE,OAAO,KAAK;EACvC,OAAOtH,oBAAoB,CAACsH,KAAK,CAAC,CAACpI,MAAM,IAAIiH,wBAAwB;AACvE;;AAEA;AACA,SAASsB,gBAAgBA,CAACxH,MAAkB,EAAW;EACrD,MAAMqH,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EACrC,IAAIoH,YAAY,CAACC,KAAK,CAAC,EAAE,OAAO,IAAI;EACpC,IAAIE,cAAc,CAACF,KAAK,CAAC,EAAE,OAAO,KAAK;EACvC,OAAOtH,oBAAoB,CAACsH,KAAK,CAAC,CAACpI,MAAM,IAAIiH,wBAAwB;AACvE;;AAEA;AACA;AACA,SAASqB,cAAcA,CAACvH,MAAkB,EAAW;EACnD,MAAMqH,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EAErC,IAAIqH,KAAK,YAAY3L,CAAC,CAAC+E,QAAQ,EAAE,OAAO,IAAI;EAE5C,IAAI4G,KAAK,YAAY3L,CAAC,CAACsF,SAAS,EAAE;IAChC,MAAMC,KAAK,GAAIoG,KAAK,CAAgCpG,KAAK;IACzD,OAAOnE,MAAM,CAAC2K,MAAM,CAACxG,KAAK,CAAC,CAACyG,IAAI,CAAElI,KAAK,IACrC+H,cAAc,CAAC/H,KAAmB,CACpC,CAAC;EACH;EAEA,IAAI6H,KAAK,YAAY3L,CAAC,CAACoF,QAAQ,EAAE;IAC/B,OAAOuG,KAAK,CAAC/G,OAAO,CAACoH,IAAI,CAAE3G,MAAe,IACxCwG,cAAc,CAACxG,MAA+B,CAChD,CAAC;EACH;EAEA,OAAO,KAAK;AACd;AAEA,SAAS4G,cAAcA,CAAC3H,MAAkB,EAAW;EACnD,OAAOmH,eAAe,CAACnH,MAAM,CAAC,YAAYtE,CAAC,CAACuE,SAAS;AACvD;AAEA,SAAS2H,cAAcA,CAAC5H,MAAkB,EAAW;EACnD,OAAOmH,eAAe,CAACnH,MAAM,CAAC,YAAYtE,CAAC,CAACwE,SAAS;AACvD;AAEA,SAAS2H,eAAeA,CAAC7H,MAAkB,EAAW;EACpD,OAAOmH,eAAe,CAACnH,MAAM,CAAC,YAAYtE,CAAC,CAACyE,UAAU;AACxD;AAEA,SAAS2H,cAAcA,CAAC9H,MAAkB,EAAmB;EAC3D,MAAMqH,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EACrC,IAAIqH,KAAK,YAAY3L,CAAC,CAAC2E,OAAO,EAAE;IAC9B,OAAO,CAAC,GAAGgH,KAAK,CAAC/G,OAAO,CAAC;EAC3B;EACA,OAAO,IAAI;AACb;AAEA,SAASyH,eAAeA,CAAC/H,MAAkB,EAAkB;EAC3D,MAAMqH,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EACrC,IAAIqH,KAAK,YAAY3L,CAAC,CAAC8E,UAAU,EAAE;IACjC,OAAO6G,KAAK,CAAC7H,KAAK;EACpB;EACA,OAAO,IAAI;AACb;AAEA,SAASwI,sBAAsBA,CAAChI,MAAkB,EAAEsB,IAAc,EAAW;EAC3E,MAAM+F,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EACrC,MAAMiI,KAAK,GAAG,CAAC3G,IAAI,CAACA,IAAI,CAACrC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAEL,WAAW,CAAC,CAAC;EAEzD,IAAIyI,KAAK,YAAY3L,CAAC,CAAC8E,UAAU,EAAE;IACjC,OAAO6G,KAAK,CAAC7H,KAAK;EACpB;EAEA,IAAI6H,KAAK,YAAY3L,CAAC,CAAC2E,OAAO,EAAE;IAC9B;IACA,IAAI4H,KAAK,KAAK,KAAK,IAAI3G,IAAI,CAACrC,MAAM,IAAI,CAAC,EAAE;MACvC,MAAMiJ,UAAU,GAAG5J,MAAM,CAACC,QAAQ,CAAC+C,IAAI,CAACA,IAAI,CAACrC,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC;MACnE,IAAIX,MAAM,CAACE,QAAQ,CAAC0J,UAAU,CAAC,EAAE;QAC/B,MAAMC,GAAG,GAAGxF,IAAI,CAACM,GAAG,CAAC,CAAC,EAAEN,IAAI,CAACC,GAAG,CAACyE,KAAK,CAAC/G,OAAO,CAACrB,MAAM,GAAG,CAAC,EAAEiJ,UAAU,CAAC,CAAC;QACvE,OAAOb,KAAK,CAAC/G,OAAO,CAAC6H,GAAG,CAAC;MAC3B;IACF;IACA,OAAOd,KAAK,CAAC/G,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI;EACjC;EAEA,IAAI+G,KAAK,YAAY3L,CAAC,CAACuE,SAAS,EAAE;IAChC,IAAIgI,KAAK,KAAK,MAAM,EAAE,OAAO,qBAAqB;IAClD,IAAIA,KAAK,KAAK,OAAO,EAAE,OAAO,yBAAyB;IACvD,IAAIA,KAAK,KAAK,OAAO,EAAE,OAAO,2CAA2C;IACzE,IAAIA,KAAK,KAAK,MAAM,EAAE,OAAO,MAAM;IACnC,IAAIA,KAAK,KAAK,MAAM,EAAE,OAAO,gBAAgB;IAC7C,OAAO,KAAK;EACd;EAEA,IAAIZ,KAAK,YAAY3L,CAAC,CAACwE,SAAS,EAAE;IAChC,IAAI+H,KAAK,KAAK,eAAe,EAAE,OAAO,CAAC;IACvC,IAAIA,KAAK,KAAK,MAAM,EAAE,OAAO,CAAC;IAC9B,IAAIA,KAAK,KAAK,aAAa,EAAE,OAAO,EAAE;IACtC,OAAO,CAAC;EACV;EAEA,IAAIZ,KAAK,YAAY3L,CAAC,CAACyE,UAAU,EAAE;IACjC,OAAO,KAAK;EACd;EAEA,IAAIkH,KAAK,YAAY3L,CAAC,CAAC0E,OAAO,EAAE;IAC9B,OAAO,IAAI;EACb;EAEA,OAAO,IAAI;AACb;AAEA,SAASgI,oBAAoBA,CAACpG,GAAW,EAAEhC,MAAkB,EAAW;EACtE,MAAMiC,OAAO,GAAGD,GAAG,CAChB1C,IAAI,CAAC,CAAC,CACND,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CACjCC,IAAI,CAAC,CAAC;EAET,IAAI;IACF,OAAOxB,IAAI,CAACyG,KAAK,CAACtC,OAAO,CAAC;EAC5B,CAAC,CAAC,MAAM;IACN;EAAA;EAGF,IAAI0F,cAAc,CAAC3H,MAAM,CAAC,EAAE,OAAOiC,OAAO;EAE1C,IAAI2F,cAAc,CAAC5H,MAAM,CAAC,EAAE;IAC1B,MAAMqI,CAAC,GAAG/J,MAAM,CAAC2D,OAAO,CAAC5C,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACjD,IAAI,CAACf,MAAM,CAACgK,KAAK,CAACD,CAAC,CAAC,EAAE,OAAOA,CAAC;EAChC;EAEA,IAAIR,eAAe,CAAC7H,MAAM,CAAC,EAAE;IAC3B,IAAI,SAAS,CAACuI,IAAI,CAACtG,OAAO,CAAC,EAAE,OAAO,IAAI;IACxC,IAAI,UAAU,CAACsG,IAAI,CAACtG,OAAO,CAAC,EAAE,OAAO,KAAK;EAC5C;EAEA,MAAMuG,WAAW,GAAGV,cAAc,CAAC9H,MAAM,CAAC;EAC1C,IAAIwI,WAAW,EAAE;IACf,MAAMC,UAAU,GAAGxG,OAAO,CAAC5C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAACC,IAAI,CAAC,CAAC;IACvD,MAAMoJ,MAAM,GAAGF,WAAW,CAACG,IAAI,CAAEC,GAAG,IAAKA,GAAG,KAAKH,UAAU,CAAC;IAC5D,IAAIC,MAAM,EAAE,OAAOA,MAAM;IACzB,MAAMG,EAAE,GAAGL,WAAW,CAACG,IAAI,CACxBC,GAAG,IAAKA,GAAG,CAAChK,WAAW,CAAC,CAAC,KAAK6J,UAAU,CAAC7J,WAAW,CAAC,CACxD,CAAC;IACD,IAAIiK,EAAE,EAAE,OAAOA,EAAE;EACnB;EAEA,MAAMC,YAAY,GAAGf,eAAe,CAAC/H,MAAM,CAAC;EAC5C,IAAI8I,YAAY,KAAK,IAAI,EAAE;IACzB,MAAML,UAAU,GAAGxG,OAAO,CAAC5C,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAACC,IAAI,CAAC,CAAC;IACvD,IAAItB,MAAM,CAAC8K,YAAY,CAAC,KAAKL,UAAU,EAAE,OAAOK,YAAY;EAC9D;EAEA,OAAO,IAAI;AACb;AAEA,eAAeC,QAAQA,CACrB/I,MAAkB,EAClBgJ,GAAgB,EACE;EAClB,MAAMC,SAAS,GAAGD,GAAG,CAACE,aAAa,KAAKF,GAAG,CAAC1H,IAAI,CAACzB,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;EACrE,MAAM0G,SAAS,GAAGyC,GAAG,CAAC1H,IAAI,CAAC0H,GAAG,CAAC1H,IAAI,CAACrC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO;EAC1D+J,GAAG,CAACG,UAAU,GAAGF,SAAS,EAAE,KAAK,CAAC;EAClC,MAAMG,SAAS,GAAGjK,WAAW,CAACY,oBAAoB,CAACC,MAAM,CAAC,EAAE,GAAG,CAAC;EAChE,MAAMqJ,OAAO,GAAGL,GAAG,CAACM,QAAQ,GAAG,YAAYN,GAAG,CAACM,QAAQ,GAAG,GAAG,EAAE;EAC/D,MAAMC,KAAK,GAAG5B,cAAc,CAAC3H,MAAM,CAAC;EACpC,MAAMwI,WAAW,GAAGV,cAAc,CAAC9H,MAAM,CAAC;EAC1C,MAAM8I,YAAY,GAAGf,eAAe,CAAC/H,MAAM,CAAC;EAE5C,MAAMwJ,gBAAgB,GAAGhB,WAAW,GAChC,WAAWA,WAAW,CAAC3I,IAAI,CAAC,KAAK,CAAC,mCAAmC,GACrEiJ,YAAY,KAAK,IAAI,GACnB,wBAAwBhL,IAAI,CAACC,SAAS,CAAC+K,YAAY,CAAC,GAAG,GACvDS,KAAK,GACH,qCAAqC,GACrC,2CAA2C;EAEnD,MAAMnG,MAAM,GAAG3D,mBAAmB,CAAC,CACjC,IAAI8G,SAAS,MAAM6C,SAAS,aAAaI,gBAAgB,GAAG,EAC5D,SAASrK,WAAW,CAACC,iBAAiB,CAAC4J,GAAG,CAACS,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,EAC9DT,GAAG,CAACzF,KAAK,KAAKI,SAAS,GAAG,UAAUpE,cAAc,CAACyJ,GAAG,CAACzF,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EACzE8F,OAAO,CACR,CAAC;EAEF,MAAMK,aAAa,GAAG/G,IAAI,CAACC,GAAG,CAACoG,GAAG,CAAC9E,SAAS,EAAE4B,mBAAmB,CAAC;EAClE,MAAM6D,cAAc,GAAGhH,IAAI,CAACC,GAAG,CAACoG,GAAG,CAACY,UAAU,EAAE3D,oBAAoB,CAAC;EACrE,IAAI4D,OAAO,GAAG,EAAE;EAChB,IAAIC,gBAAgB,GAAG,EAAE;EACzB,KAAK,IAAIxF,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIqF,cAAc,EAAErF,OAAO,EAAE,EAAE;IAC1D,IAAIA,OAAO,GAAG,CAAC,EAAE,MAAMtH,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;IAC7D,IAAI;MACF2M,OAAO,GAAG,MAAMzF,+BAA+B,CAC7ChB,MAAM,EACNsG,aAAa,EACbV,GAAG,CAAC9L,MACN,CAAC;MACD,MAAM6M,OAAO,GAAG3B,oBAAoB,CAACyB,OAAO,EAAE7J,MAAM,CAAC;MACrD,MAAMgK,SAAS,GAAGhK,MAAM,CAACiK,SAAS,CAACF,OAAO,CAAC;MAC3C,IAAIC,SAAS,CAACE,OAAO,EAAE;QACrBlB,GAAG,CAACG,UAAU,GAAGF,SAAS,EAAE,IAAI,CAAC;QACjC,OAAOe,SAAS,CAACG,IAAI;MACvB;IACF,CAAC,CAAC,OAAOtM,KAAK,EAAE;MACdiM,gBAAgB,GAAGlM,cAAc,CAACC,KAAK,CAAC;IAC1C;EACF;EAEA,MAAMuM,eAAe,GAAGb,KAAK,GAAGM,OAAO,CAACvK,IAAI,CAAC,CAAC,GAAG,IAAI;EACrD,MAAM+K,aAAa,GAAGrC,sBAAsB,CAAChI,MAAM,EAAEgJ,GAAG,CAAC1H,IAAI,CAAC;EAC9D,MAAMgJ,QAAQ,GAAGF,eAAe,IAAIC,aAAa;EACjD,MAAME,iBAAiB,GAAGvK,MAAM,CAACiK,SAAS,CAACK,QAAQ,CAAC;EACpD,IAAIC,iBAAiB,CAACL,OAAO,EAAE;IAC7BlB,GAAG,CAACG,UAAU,GAAGF,SAAS,EAAE,IAAI,CAAC;IACjC,OAAOsB,iBAAiB,CAACJ,IAAI;EAC/B;EACA,MAAM,IAAIvO,qBAAqB,CAC7B,4BAA4BoN,GAAG,CAAC1H,IAAI,CAACzB,IAAI,CAAC,GAAG,CAAC,GAAG,EACjDgK,OAAO,IAAIC,gBAAgB,EAC3B,CACE;IACExI,IAAI,EAAE0H,GAAG,CAAC1H,IAAI,CAACzB,IAAI,CAAC,GAAG,CAAC;IACxB9D,OAAO,EAAE,CACP8N,OAAO,IACPC,gBAAgB,IAChB,wBAAwB,EACxB5K,KAAK,CAAC,CAAC,EAAE,GAAG;EAChB,CAAC,CAEL,CAAC;AACH;AAEA,eAAesL,WAAWA,CACxBxK,MAAkB,EAClBgJ,GAAgB,EACE;EAClB,MAAMC,SAAS,GAAGD,GAAG,CAACE,aAAa,KAAKF,GAAG,CAAC1H,IAAI,CAACzB,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC;EACrE,MAAM0G,SAAS,GAAGyC,GAAG,CAAC1H,IAAI,CAAC0H,GAAG,CAAC1H,IAAI,CAACrC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO;EAC1D+J,GAAG,CAACG,UAAU,GAAGF,SAAS,EAAE,KAAK,CAAC;EAClC,MAAMwB,QAAQ,GAAGtL,WAAW,CAACY,oBAAoB,CAACC,MAAM,CAAC,EAAE,GAAG,CAAC;EAC/D,MAAMqJ,OAAO,GAAGL,GAAG,CAACM,QAAQ,GAAG,YAAYN,GAAG,CAACM,QAAQ,GAAG,GAAG,EAAE;EAE/D,MAAMlG,MAAM,GAAG3D,mBAAmB,CAAC,CACjC,IAAI8G,SAAS,MAAMkE,QAAQ,kDAAkD,EAC7E,SAAStL,WAAW,CAACC,iBAAiB,CAAC4J,GAAG,CAACS,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,EAC9DT,GAAG,CAACzF,KAAK,KAAKI,SAAS,GAAG,UAAUpE,cAAc,CAACyJ,GAAG,CAACzF,KAAK,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,EACzE8F,OAAO,CACR,CAAC;EAEF,MAAMqB,gBAAgB,GAAG/H,IAAI,CAACC,GAAG,CAACoG,GAAG,CAAC9E,SAAS,EAAE6B,sBAAsB,CAAC;EACxE,IAAI5B,QAAQ,GAAG,MAAMC,+BAA+B,CAClDhB,MAAM,EACNsH,gBAAgB,EAChB1B,GAAG,CAAC9L,MACN,CAAC;EAED,KAAK,IAAIyN,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAG,CAAC,EAAEA,IAAI,EAAE,EAAE;IACnC,IAAI;MACF,MAAMC,MAAM,GAAG9M,IAAI,CAACyG,KAAK,CAACxC,kBAAkB,CAACoC,QAAQ,CAAC,CAAC;MACvD6E,GAAG,CAACG,UAAU,GAAGF,SAAS,EAAE,IAAI,CAAC;MACjC,OAAO2B,MAAM;IACf,CAAC,CAAC,MAAM;MACN,IAAI,CAAC7H,uBAAuB,CAACoB,QAAQ,CAAC,EAAE;IAC1C;IACA,MAAMnH,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;IAC5C,MAAM2N,KAAK,GAAG,MAAMnG,6BAA6B,CAC/CvB,iCAAiC,CAC/B6F,GAAG,CAACS,UAAU,EACdzJ,MAAM,EACNmE,QAAQ,EACR6E,GAAG,CAACzF,KACN,CAAC,EACDmH,gBAAgB,EAChB1B,GAAG,CAAC9L,MACN,CAAC;IACD,IAAI,CAAC2N,KAAK,EAAE;IACZ,MAAMlG,MAAM,GAAGtC,wBAAwB,CAAC8B,QAAQ,EAAE0G,KAAK,CAAC;IACxD,IAAIlG,MAAM,KAAKR,QAAQ,EAAE;IACzBA,QAAQ,GAAGQ,MAAM;EACnB;EAEA,MAAMmG,WAAW,GAAGhN,IAAI,CAACyG,KAAK,CAACxC,kBAAkB,CAACoC,QAAQ,CAAC,CAAC;EAC5D6E,GAAG,CAACG,UAAU,GAAGF,SAAS,EAAE,IAAI,CAAC;EACjC,OAAO6B,WAAW;AACpB;AAEA,eAAeC,aAAaA,CAC1BzE,WAAmC,EACnCC,SAAiB,EACjByC,GAAgB,EACC;EACjB,MAAMgC,MAAM,GAAG3E,cAAc,CAACC,WAAW,EAAEC,SAAS,CAAC;EACrD,MAAMnD,MAAM,GAAGtD,qBAAqB,CAAC,CACnC,IAAIyG,SAAS,kBAAkByE,MAAM,CAACpI,GAAG,IAAIoI,MAAM,CAAC/H,GAAG,gCAAgC,EACvF,SAAS9D,WAAW,CAACC,iBAAiB,CAAC4J,GAAG,CAACS,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,CAC/D,CAAC;EAEF,IAAI;IACF,MAAMzM,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;IAC5C,MAAM+N,cAAc,GAAGtI,IAAI,CAACC,GAAG,CAACoG,GAAG,CAAC9E,SAAS,EAAE8B,0BAA0B,CAAC;IAC1E,MAAMhE,GAAG,GAAG,MAAMoC,+BAA+B,CAC/ChB,MAAM,EACN6H,cAAc,EACdjC,GAAG,CAAC9L,MACN,CAAC;IACD,MAAMmL,CAAC,GAAG9J,QAAQ,CAACyD,GAAG,CAAC1C,IAAI,CAAC,CAAC,CAACD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;IACrD,IAAIf,MAAM,CAACE,QAAQ,CAAC6J,CAAC,CAAC,IAAIA,CAAC,IAAI2C,MAAM,CAACpI,GAAG,IAAIyF,CAAC,IAAI2C,MAAM,CAAC/H,GAAG,EAAE,OAAOoF,CAAC;EACxE,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAO2C,MAAM,CAAC9D,SAAS;AACzB;AAEA,eAAegE,UAAUA,CACvBlL,MAAkB,EAClBgJ,GAAgB,EACE;EAClB,MAAM3B,KAAK,GAAGF,eAAe,CAACnH,MAAM,CAAC;EAErC,IAAIoH,YAAY,CAACC,KAAK,CAAC,EAAE;IACvB,MAAMrK,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;IAC5C,OAAO6L,QAAQ,CAAC1B,KAAK,EAAE2B,GAAG,CAAC;EAC7B;EAEA,IAAI3B,KAAK,YAAY3L,CAAC,CAAC+E,QAAQ,EAAE;IAC/B,MAAM0K,aAAa,GAAGhE,eAAe,CAACE,KAAK,CAAC3G,OAAqB,CAAC;IAClE,MAAM6F,SAAS,GAAGyC,GAAG,CAAC1H,IAAI,CAAC0H,GAAG,CAAC1H,IAAI,CAACrC,MAAM,GAAG,CAAC,CAAC,IAAI,OAAO;IAC1D,MAAMmM,UAAU,GAAGpC,GAAG,CAAC1H,IAAI,CAACzB,IAAI,CAAC,GAAG,CAAC,IAAI0G,SAAS;IAClD,MAAM8E,KAAK,GAAG,MAAMN,aAAa,CAC/B1D,KAAK,EACLd,SAAS,EACTyC,GACF,CAAC;;IAED;IACA;IACA,IACExB,gBAAgB,CAAC2D,aAAa,CAAC,IAC/BE,KAAK,IAAIxF,6BAA6B,EACtC;MACAmD,GAAG,CAACG,UAAU,GAAGiC,UAAU,EAAE,KAAK,CAAC;MACnC,MAAMpO,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;MAC5C,MAAM0N,MAAM,GAAG,MAAMJ,WAAW,CAACnD,KAAK,EAAE;QACtC,GAAG2B,GAAG;QACNE,aAAa,EAAEkC;MACjB,CAAC,CAAC;MACFpC,GAAG,CAACG,UAAU,GAAGiC,UAAU,EAAE,IAAI,CAAC;MAClC,OAAOR,MAAM;IACf;;IAEA;IACA5B,GAAG,CAACG,UAAU,GAAGiC,UAAU,EAAE,KAAK,CAAC;IACnC,MAAME,KAAgB,GAAG,EAAE;IAE3B,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGF,KAAK,EAAEE,CAAC,EAAE,EAAE;MAC9B,MAAMvO,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;MAC5C,MAAMsO,SAAS,GAAG,GAAGJ,UAAU,IAAIG,CAAC,GAAG,CAAC,IAAIF,KAAK,GAAG;MACpD,MAAMI,OAAoB,GAAG;QAC3B,GAAGzC,GAAG;QACN1H,IAAI,EAAE,CAAC,GAAG0H,GAAG,CAAC1H,IAAI,EAAEtD,MAAM,CAACuN,CAAC,CAAC,CAAC;QAC9BjC,QAAQ,EAAE,QAAQiC,CAAC,GAAG,CAAC,OAAOF,KAAK,EAAE;QACrCnC,aAAa,EAAEsC;MACjB,CAAC;MACDF,KAAK,CAACI,IAAI,CAAC,MAAMR,UAAU,CAACC,aAAa,EAAEM,OAAO,CAAC,CAAC;IACtD;IAEAzC,GAAG,CAACG,UAAU,GAAGiC,UAAU,EAAE,IAAI,CAAC;IAClC,OAAOE,KAAK;EACd;;EAEA;EACA,IAAIhE,eAAe,CAACD,KAAK,CAAC,IAAI2B,GAAG,CAAC1H,IAAI,CAACrC,MAAM,GAAG,CAAC,EAAE;IACjD,MAAMjC,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;IAC5C,OAAOsN,WAAW,CAACnD,KAAK,EAAE2B,GAAG,CAAC;EAChC;EAEA,IAAI3B,KAAK,YAAY3L,CAAC,CAACsF,SAAS,EAAE;IAChC,MAAMC,KAAK,GAAIoG,KAAK,CAAgCpG,KAAK;IACzD,MAAMC,OAAO,GAAGpE,MAAM,CAACoE,OAAO,CAACD,KAAK,CAAC;IACrC,MAAM2J,MAA+B,GAAG,CAAC,CAAC;IAE1C,MAAMe,cAAc,GAAGzK,OAAO,CAACvB,MAAM,CAAC,CAAC,GAAGiM,CAAC,CAAC,KAC1CtE,eAAe,CAACsE,CAAe,CACjC,CAAC;IACD,MAAMC,cAAc,GAAG3K,OAAO,CAACvB,MAAM,CACnC,CAAC,GAAGiM,CAAC,CAAC,KAAK,CAACtE,eAAe,CAACsE,CAAe,CAC7C,CAAC;IAED,IAAID,cAAc,CAAC1M,MAAM,GAAG,CAAC,EAAE;MAC7B,KAAK,MAAM,CAACkC,GAAG,EAAE2K,WAAW,CAAC,IAAIH,cAAc,EAAE;QAC/C,MAAMI,QAAqB,GAAG;UAC5B,GAAG/C,GAAG;UACN1H,IAAI,EAAE,CAAC,GAAG0H,GAAG,CAAC1H,IAAI,EAAEH,GAAG,CAAC;UACxB+H,aAAa,EAAE,CAAC,GAAGF,GAAG,CAAC1H,IAAI,EAAEH,GAAG,CAAC,CAACtB,IAAI,CAAC,GAAG;QAC5C,CAAC;QACD,IAAIuH,YAAY,CAACD,eAAe,CAAC2E,WAAyB,CAAC,CAAC,EAAE;UAC5D,MAAM9O,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;UAC5C0N,MAAM,CAACzJ,GAAG,CAAC,GAAG,MAAM4H,QAAQ,CAAC+C,WAAW,EAAgBC,QAAQ,CAAC;QACnE,CAAC,MAAM;UACL,MAAM/O,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;UAC5C0N,MAAM,CAACzJ,GAAG,CAAC,GAAG,MAAMqJ,WAAW,CAACsB,WAAW,EAAgBC,QAAQ,CAAC;QACtE;MACF;IACF;IAEA,KAAK,MAAM,CAAC5K,GAAG,EAAE2K,WAAW,CAAC,IAAID,cAAc,EAAE;MAC/CjB,MAAM,CAACzJ,GAAG,CAAC,GAAG,MAAM+J,UAAU,CAACY,WAAW,EAAgB;QACxD,GAAG9C,GAAG;QACN1H,IAAI,EAAE,CAAC,GAAG0H,GAAG,CAAC1H,IAAI,EAAEH,GAAG;MACzB,CAAC,CAAC;IACJ;IAEA,OAAOyJ,MAAM;EACf;EAEA,MAAM5N,KAAK,CAAC0I,mBAAmB,EAAEsD,GAAG,CAAC9L,MAAM,CAAC;EAC5C,OAAO6L,QAAQ,CAAC1B,KAAK,EAAE2B,GAAG,CAAC;AAC7B;AAEA,eAAegD,eAAeA,CAC5B5I,MAAc,EACdpD,MAAqB,EACrBuD,KAAyB,EACzBW,SAAiB,EACjB0F,UAAkB,EAClBT,UAAmD,EACnDjM,MAAoB,EACF;EAClB,OAAOgO,UAAU,CAAClL,MAAM,EAAE;IACxByJ,UAAU,EAAErG,MAAM;IAClBG,KAAK;IACLW,SAAS;IACT0F,UAAU;IACVtI,IAAI,EAAE,EAAE;IACR6H,UAAU;IACVjM;EACF,CAAC,CAAC;AACJ;AAEA,OAAO,eAAe+O,0BAA0BA,CAI9C3L,OAAyD,EACxB;EACjC,MAAM;IACJ8C,MAAM;IACNY,MAAM;IACNT,KAAK;IACL2I,WAAW;IACXtC,UAAU,GAAG,CAAC;IACd3F,gBAAgB,GAAG1H,oCAAoC;IACvD2H,SAAS,GAAGzH,6BAA6B;IACzC0P,QAAQ,GAAG,QAAQ;IACnBhD,UAAU;IACVjM;EACF,CAAC,GAAGoD,OAAO;EAEX,IAAI4L,WAAW,IAAI3I,KAAK,KAAKI,SAAS,EAAE;IACtCuI,WAAW,CAAC3H,KAAK,CAAChB,KAAK,CAAC;EAC1B;EAEA,IAAI4I,QAAQ,KAAK,SAAS,EAAE;IAC1B,MAAMC,SAAS,GAAG,MAAMJ,eAAe,CACrC5I,MAAM,EACNY,MAAM,EACNT,KAAK,EACLW,SAAS,EACT0F,UAAU,EACVT,UAAU,EACVjM,MACF,CAAC;IACD,OAAO8G,MAAM,CAACO,KAAK,CAAC6H,SAAS,CAAC;EAChC;EAEA,IAAIC,eAAe,GAAG,EAAE;EACxB,IAAIC,UAAuC,GAAG,EAAE;EAEhD,KAAK,IAAIhI,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIsF,UAAU,EAAEtF,OAAO,EAAE,EAAE;IACtD,IAAIpH,MAAM,EAAEI,OAAO,EAAE,MAAMT,cAAc,CAAC,CAAC;IAC3CwP,eAAe,GACb/H,OAAO,KAAK,CAAC,GACT,MAAMP,6BAA6B,CACjCX,MAAM,EACNY,MAAM,EACNT,KAAK,EACLU,gBAAgB,EAChBC,SACF,CAAC,GACD,MAAME,+BAA+B,CACnCQ,iBAAiB,CAACxB,MAAM,EAAEY,MAAM,EAAEqI,eAAe,EAAEC,UAAU,CAAC,EAC9DpI,SAAS,EACThH,MACF,CAAC;IAEP,IAAI;MACF,MAAMmB,MAAM,GAAGP,IAAI,CAACyG,KAAK,CAACxC,kBAAkB,CAACsK,eAAe,CAAC,CAAC;MAC9D,OAAOrI,MAAM,CAACO,KAAK,CAAClG,MAAM,CAAC;IAC7B,CAAC,CAAC,OAAOR,KAAK,EAAE;MACdyO,UAAU,GAAGzI,oBAAoB,CAAChG,KAAK,CAAC;MAExC,IAAIyG,OAAO,KAAKsF,UAAU,EAAE;IAC9B;EACF;EAEA,MAAM,IAAIhO,qBAAqB,CAC7B,0DAA0D,EAC1DyQ,eAAe,EACfC,UACF,CAAC;AACH","ignoreList":[]}
@@ -43,6 +43,12 @@ export interface Spec extends TurboModule {
43
43
  * The next message will start a fresh conversation.
44
44
  */
45
45
  resetConversation(): Promise<void>;
46
+ /**
47
+ * Cancels any generation currently in progress.
48
+ * For streaming: the stream ends with the tokens generated so far.
49
+ * For non-streaming: the pending promise rejects with code 'CANCELLED'.
50
+ */
51
+ cancelGeneration(): Promise<void>;
46
52
  addListener(eventName: string): void;
47
53
  removeListeners(count: number): void;
48
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"NativeAiCore.d.ts","sourceRoot":"","sources":["../../../src/NativeAiCore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD;;;OAGG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGnC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAAgE"}
1
+ {"version":3,"file":"NativeAiCore.d.ts","sourceRoot":"","sources":["../../../src/NativeAiCore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErE,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;OAEG;IACH,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAElD;;;OAGG;IACH,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE3D;;;;;;OAMG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7C;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAErC;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEzB;;;OAGG;IACH,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnC;;;;OAIG;IACH,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAGlC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;;AAED,wBAAgE"}
@@ -114,6 +114,15 @@ export declare function release(): Promise<void>;
114
114
  * await resetConversation(); // new conversation, same engine
115
115
  */
116
116
  export declare function resetConversation(): Promise<void>;
117
+ /**
118
+ * Cancels any generation currently in progress.
119
+ *
120
+ * - **Streaming**: the stream ends immediately with tokens generated so far.
121
+ * - **Non-streaming**: the pending `generateResponse` promise rejects with code `'CANCELLED'`.
122
+ *
123
+ * Safe to call when no generation is running.
124
+ */
125
+ export declare function cancelGeneration(): Promise<void>;
117
126
  declare const AICore: {
118
127
  initialize: typeof initialize;
119
128
  generateResponse: typeof generateResponse;
@@ -122,6 +131,7 @@ declare const AICore: {
122
131
  checkAvailability: typeof checkAvailability;
123
132
  release: typeof release;
124
133
  resetConversation: typeof resetConversation;
134
+ cancelGeneration: typeof cancelGeneration;
125
135
  };
126
136
  export default AICore;
127
137
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC;AAItB,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,CAAC;AAEjG,mCAAmC;AACnC,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,qDAAqD;IACrD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,kDAAkD;IAClD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,iCAAiC;AACjC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,eAAe,GACzB,MAAM,IAAI,CAuCZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAGrE;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvD;AAID,QAAA,MAAM,MAAM;;;;;;;;CAQX,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EACL,0BAA0B,EAC1B,qBAAqB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,cAAc,CAAC;AAItB,uDAAuD;AACvD,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,eAAe,GAAG,eAAe,GAAG,aAAa,CAAC;AAEjG,mCAAmC;AACnC,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,qDAAqD;IACrD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,kDAAkD;IAClD,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACnC;AAED,iCAAiC;AACjC,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAqBD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGpE;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGtE;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,eAAe,GACzB,MAAM,IAAI,CAuCZ;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAGrE;AAED;;;;;;;;;GASG;AACH,wBAAsB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAG7C;AAED;;;;;;GAMG;AACH,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGvD;AAED;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAGtD;AAID,QAAA,MAAM,MAAM;;;;;;;;;CASX,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -20,6 +20,11 @@ export interface StructuredGenerateOptions<TOutputSchema extends ZodTypeAny, TIn
20
20
  * @param done true when the field has just been completed
21
21
  */
22
22
  onProgress?: (field: string, done: boolean) => void;
23
+ /**
24
+ * Optional AbortSignal to cancel the generation mid-way.
25
+ * When aborted, the promise rejects with an Error whose `name` is `'AbortError'`.
26
+ */
27
+ signal?: AbortSignal;
23
28
  }
24
29
  export interface StructuredValidationIssue {
25
30
  path: string;
@@ -1 +1 @@
1
- {"version":3,"file":"structured.d.ts","sourceRoot":"","sources":["../../../src/structured.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAGzC,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,WAAW,yBAAyB,CACxC,aAAa,SAAS,UAAU,EAChC,MAAM,GAAG,OAAO;IAEhB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CACrD;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;gBAGlB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,yBAAyB,EAAO;CAO3C;AAw+BD,wBAAsB,0BAA0B,CAC9C,aAAa,SAAS,UAAU,EAChC,MAAM,GAAG,OAAO,EAEhB,OAAO,EAAE,yBAAyB,CAAC,aAAa,EAAE,MAAM,CAAC,GACxD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CA8DjC"}
1
+ {"version":3,"file":"structured.d.ts","sourceRoot":"","sources":["../../../src/structured.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,KAAK,UAAU,EAAE,MAAM,KAAK,CAAC;AAGzC,MAAM,MAAM,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAE/C,MAAM,WAAW,yBAAyB,CACxC,aAAa,SAAS,UAAU,EAChC,MAAM,GAAG,OAAO;IAEhB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;IAChC;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACpD;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,WAAW,EAAE,MAAM,CAAC;gBAGlB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,yBAAyB,EAAO;CAO3C;AAmhCD,wBAAsB,0BAA0B,CAC9C,aAAa,SAAS,UAAU,EAChC,MAAM,GAAG,OAAO,EAEhB,OAAO,EAAE,yBAAyB,CAAC,aAAa,EAAE,MAAM,CAAC,GACxD,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAkEjC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ai-core",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "description": "High-performance AI bridge for React Native using Google AI Edge MediaPipe and Gemini Nano",
5
5
  "main": "./lib/module/index.js",
6
6
  "types": "./lib/typescript/src/index.d.ts",
@@ -51,6 +51,13 @@ export interface Spec extends TurboModule {
51
51
  */
52
52
  resetConversation(): Promise<void>;
53
53
 
54
+ /**
55
+ * Cancels any generation currently in progress.
56
+ * For streaming: the stream ends with the tokens generated so far.
57
+ * For non-streaming: the pending promise rejects with code 'CANCELLED'.
58
+ */
59
+ cancelGeneration(): Promise<void>;
60
+
54
61
  // Required by NativeEventEmitter
55
62
  addListener(eventName: string): void;
56
63
  removeListeners(count: number): void;
package/src/index.tsx CHANGED
@@ -211,6 +211,19 @@ export async function resetConversation(): Promise<void> {
211
211
  return NativeAiCore.resetConversation();
212
212
  }
213
213
 
214
+ /**
215
+ * Cancels any generation currently in progress.
216
+ *
217
+ * - **Streaming**: the stream ends immediately with tokens generated so far.
218
+ * - **Non-streaming**: the pending `generateResponse` promise rejects with code `'CANCELLED'`.
219
+ *
220
+ * Safe to call when no generation is running.
221
+ */
222
+ export async function cancelGeneration(): Promise<void> {
223
+ if (!NativeAiCore) return;
224
+ return NativeAiCore.cancelGeneration();
225
+ }
226
+
214
227
  // ── Default export (API object) ───────────────────────────────────────────────
215
228
 
216
229
  const AICore = {
@@ -221,6 +234,7 @@ const AICore = {
221
234
  checkAvailability,
222
235
  release,
223
236
  resetConversation,
237
+ cancelGeneration,
224
238
  };
225
239
 
226
240
  export default AICore;
package/src/structured.ts CHANGED
@@ -27,6 +27,11 @@ export interface StructuredGenerateOptions<
27
27
  * @param done true when the field has just been completed
28
28
  */
29
29
  onProgress?: (field: string, done: boolean) => void;
30
+ /**
31
+ * Optional AbortSignal to cancel the generation mid-way.
32
+ * When aborted, the promise rejects with an Error whose `name` is `'AbortError'`.
33
+ */
34
+ signal?: AbortSignal;
30
35
  }
31
36
 
32
37
  export interface StructuredValidationIssue {
@@ -61,8 +66,28 @@ const QUOTA_ERROR_CODE = 9;
61
66
  const QUOTA_RETRY_DELAY_MS = 1800;
62
67
  const MAX_QUOTA_RETRIES = 2;
63
68
 
64
- function sleep(ms: number): Promise<void> {
65
- return new Promise((resolve) => setTimeout(resolve, ms));
69
+ function makeAbortError(): Error {
70
+ return Object.assign(new Error('Generation cancelled.'), {
71
+ name: 'AbortError',
72
+ });
73
+ }
74
+
75
+ function sleep(ms: number, signal?: AbortSignal): Promise<void> {
76
+ return new Promise((resolve, reject) => {
77
+ if (signal?.aborted) {
78
+ reject(makeAbortError());
79
+ return;
80
+ }
81
+ const timer = setTimeout(resolve, ms);
82
+ signal?.addEventListener(
83
+ 'abort',
84
+ () => {
85
+ clearTimeout(timer);
86
+ reject(makeAbortError());
87
+ },
88
+ { once: true }
89
+ );
90
+ });
66
91
  }
67
92
 
68
93
  function toErrorMessage(error: unknown): string {
@@ -445,13 +470,18 @@ function buildRepairPrompt(
445
470
  ]);
446
471
  }
447
472
 
448
- async function generateStateless(prompt: string): Promise<string> {
473
+ async function generateStateless(
474
+ prompt: string,
475
+ signal?: AbortSignal
476
+ ): Promise<string> {
449
477
  if (!NativeAiCore) {
450
478
  throw new Error(
451
479
  `react-native-ai-core: native module unavailable on ${Platform.OS}. This feature requires Android.`
452
480
  );
453
481
  }
454
482
 
483
+ if (signal?.aborted) throw makeAbortError();
484
+
455
485
  if (NativeAiCore?.generateResponseStateless) {
456
486
  return NativeAiCore.generateResponseStateless(prompt);
457
487
  }
@@ -461,10 +491,11 @@ async function generateStateless(prompt: string): Promise<string> {
461
491
 
462
492
  async function generateStatelessWithTimeout(
463
493
  prompt: string,
464
- timeoutMs: number
494
+ timeoutMs: number,
495
+ signal?: AbortSignal
465
496
  ): Promise<string> {
466
497
  if (timeoutMs <= 0) {
467
- return generateStateless(prompt);
498
+ return generateStateless(prompt, signal);
468
499
  }
469
500
 
470
501
  let timer: ReturnType<typeof setTimeout> | undefined;
@@ -475,7 +506,7 @@ async function generateStatelessWithTimeout(
475
506
  });
476
507
 
477
508
  try {
478
- return await Promise.race([generateStateless(prompt), timeout]);
509
+ return await Promise.race([generateStateless(prompt, signal), timeout]);
479
510
  } finally {
480
511
  if (timer) clearTimeout(timer);
481
512
  }
@@ -483,29 +514,33 @@ async function generateStatelessWithTimeout(
483
514
 
484
515
  async function generateStatelessWithQuotaRetry(
485
516
  prompt: string,
486
- timeoutMs: number
517
+ timeoutMs: number,
518
+ signal?: AbortSignal
487
519
  ): Promise<string> {
488
520
  let quotaRetries = 0;
489
521
  while (true) {
490
522
  try {
491
- return await generateStatelessWithTimeout(prompt, timeoutMs);
523
+ return await generateStatelessWithTimeout(prompt, timeoutMs, signal);
492
524
  } catch (error) {
525
+ if ((error as { name?: string }).name === 'AbortError') throw error;
493
526
  if (!isQuotaError(error) || quotaRetries >= MAX_QUOTA_RETRIES) {
494
527
  throw error;
495
528
  }
496
529
  quotaRetries += 1;
497
- await sleep(QUOTA_RETRY_DELAY_MS);
530
+ await sleep(QUOTA_RETRY_DELAY_MS, signal);
498
531
  }
499
532
  }
500
533
  }
501
534
 
502
535
  async function tryGenerateWithQuotaTolerance(
503
536
  prompt: string,
504
- timeoutMs: number
537
+ timeoutMs: number,
538
+ signal?: AbortSignal
505
539
  ): Promise<string | null> {
506
540
  try {
507
- return await generateStatelessWithQuotaRetry(prompt, timeoutMs);
541
+ return await generateStatelessWithQuotaRetry(prompt, timeoutMs, signal);
508
542
  } catch (error) {
543
+ if ((error as { name?: string }).name === 'AbortError') throw error;
509
544
  if (isQuotaError(error)) {
510
545
  return null;
511
546
  }
@@ -548,6 +583,7 @@ interface WalkContext {
548
583
  /** Label for onProgress — overrides the computed path when set */
549
584
  progressLabel?: string;
550
585
  onProgress?: (field: string, done: boolean) => void;
586
+ signal?: AbortSignal;
551
587
  }
552
588
 
553
589
  interface ArrayCountBounds {
@@ -811,9 +847,13 @@ async function walkLeaf(
811
847
  let lastRaw = '';
812
848
  let lastErrorMessage = '';
813
849
  for (let attempt = 0; attempt <= leafMaxRetries; attempt++) {
814
- if (attempt > 0) await sleep(INTER_CALL_DELAY_MS);
850
+ if (attempt > 0) await sleep(INTER_CALL_DELAY_MS, ctx.signal);
815
851
  try {
816
- lastRaw = await generateStatelessWithQuotaRetry(prompt, leafTimeoutMs);
852
+ lastRaw = await generateStatelessWithQuotaRetry(
853
+ prompt,
854
+ leafTimeoutMs,
855
+ ctx.signal
856
+ );
817
857
  const coerced = coercePrimitiveField(lastRaw, schema);
818
858
  const validated = schema.safeParse(coerced);
819
859
  if (validated.success) {
@@ -869,7 +909,8 @@ async function walkCompact(
869
909
  const compactTimeoutMs = Math.min(ctx.timeoutMs, COMPACT_TIMEOUT_CAP_MS);
870
910
  let combined = await generateStatelessWithQuotaRetry(
871
911
  prompt,
872
- compactTimeoutMs
912
+ compactTimeoutMs,
913
+ ctx.signal
873
914
  );
874
915
 
875
916
  for (let cont = 0; cont < 6; cont++) {
@@ -880,7 +921,7 @@ async function walkCompact(
880
921
  } catch {
881
922
  if (!looksLikeIncompleteJson(combined)) break;
882
923
  }
883
- await sleep(INTER_CALL_DELAY_MS);
924
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
884
925
  const extra = await tryGenerateWithQuotaTolerance(
885
926
  buildStructuredContinuationPrompt(
886
927
  ctx.taskPrompt,
@@ -888,7 +929,8 @@ async function walkCompact(
888
929
  combined,
889
930
  ctx.input
890
931
  ),
891
- compactTimeoutMs
932
+ compactTimeoutMs,
933
+ ctx.signal
892
934
  );
893
935
  if (!extra) break;
894
936
  const merged = mergeStructuredFragments(combined, extra);
@@ -913,9 +955,13 @@ async function askArrayCount(
913
955
  ]);
914
956
 
915
957
  try {
916
- await sleep(INTER_CALL_DELAY_MS);
958
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
917
959
  const countTimeoutMs = Math.min(ctx.timeoutMs, ARRAY_COUNT_TIMEOUT_CAP_MS);
918
- const raw = await generateStatelessWithQuotaRetry(prompt, countTimeoutMs);
960
+ const raw = await generateStatelessWithQuotaRetry(
961
+ prompt,
962
+ countTimeoutMs,
963
+ ctx.signal
964
+ );
919
965
  const n = parseInt(raw.trim().replace(/\D/g, ''), 10);
920
966
  if (Number.isFinite(n) && n >= bounds.min && n <= bounds.max) return n;
921
967
  } catch {
@@ -931,7 +977,7 @@ async function walkSchema(
931
977
  const inner = unwrapModifiers(schema);
932
978
 
933
979
  if (isLeafSchema(inner)) {
934
- await sleep(INTER_CALL_DELAY_MS);
980
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
935
981
  return walkLeaf(inner, ctx);
936
982
  }
937
983
 
@@ -952,7 +998,7 @@ async function walkSchema(
952
998
  count <= MAX_WHOLE_ARRAY_COMPACT_ITEMS
953
999
  ) {
954
1000
  ctx.onProgress?.(arrayLabel, false);
955
- await sleep(INTER_CALL_DELAY_MS);
1001
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
956
1002
  const result = await walkCompact(inner, {
957
1003
  ...ctx,
958
1004
  progressLabel: arrayLabel,
@@ -966,7 +1012,7 @@ async function walkSchema(
966
1012
  const items: unknown[] = [];
967
1013
 
968
1014
  for (let i = 0; i < count; i++) {
969
- await sleep(INTER_CALL_DELAY_MS);
1015
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
970
1016
  const elemLabel = `${arrayLabel}[${i + 1}/${count}]`;
971
1017
  const elemCtx: WalkContext = {
972
1018
  ...ctx,
@@ -983,7 +1029,7 @@ async function walkSchema(
983
1029
 
984
1030
  // Compact object: single call (except at root where per-field gives better progress).
985
1031
  if (isCompactSchema(inner) && ctx.path.length > 0) {
986
- await sleep(INTER_CALL_DELAY_MS);
1032
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
987
1033
  return walkCompact(inner, ctx);
988
1034
  }
989
1035
 
@@ -1007,10 +1053,10 @@ async function walkSchema(
1007
1053
  progressLabel: [...ctx.path, key].join('.'),
1008
1054
  };
1009
1055
  if (isLeafSchema(unwrapModifiers(fieldSchema as ZodTypeAny))) {
1010
- await sleep(INTER_CALL_DELAY_MS);
1056
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
1011
1057
  result[key] = await walkLeaf(fieldSchema as ZodTypeAny, fieldCtx);
1012
1058
  } else {
1013
- await sleep(INTER_CALL_DELAY_MS);
1059
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
1014
1060
  result[key] = await walkCompact(fieldSchema as ZodTypeAny, fieldCtx);
1015
1061
  }
1016
1062
  }
@@ -1026,7 +1072,7 @@ async function walkSchema(
1026
1072
  return result;
1027
1073
  }
1028
1074
 
1029
- await sleep(INTER_CALL_DELAY_MS);
1075
+ await sleep(INTER_CALL_DELAY_MS, ctx.signal);
1030
1076
  return walkLeaf(inner, ctx);
1031
1077
  }
1032
1078
 
@@ -1036,7 +1082,8 @@ async function generateChunked<TOutputSchema extends ZodTypeAny, TInput>(
1036
1082
  input: TInput | undefined,
1037
1083
  timeoutMs: number,
1038
1084
  maxRetries: number,
1039
- onProgress?: (field: string, done: boolean) => void
1085
+ onProgress?: (field: string, done: boolean) => void,
1086
+ signal?: AbortSignal
1040
1087
  ): Promise<unknown> {
1041
1088
  return walkSchema(schema, {
1042
1089
  taskPrompt: prompt,
@@ -1045,6 +1092,7 @@ async function generateChunked<TOutputSchema extends ZodTypeAny, TInput>(
1045
1092
  maxRetries,
1046
1093
  path: [],
1047
1094
  onProgress,
1095
+ signal,
1048
1096
  });
1049
1097
  }
1050
1098
 
@@ -1064,6 +1112,7 @@ export async function generateStructuredResponse<
1064
1112
  timeoutMs = DEFAULT_STRUCTURED_TIMEOUT_MS,
1065
1113
  strategy = 'single',
1066
1114
  onProgress,
1115
+ signal,
1067
1116
  } = options;
1068
1117
 
1069
1118
  if (inputSchema && input !== undefined) {
@@ -1077,7 +1126,8 @@ export async function generateStructuredResponse<
1077
1126
  input,
1078
1127
  timeoutMs,
1079
1128
  maxRetries,
1080
- onProgress
1129
+ onProgress,
1130
+ signal
1081
1131
  );
1082
1132
  return output.parse(assembled);
1083
1133
  }
@@ -1086,6 +1136,7 @@ export async function generateStructuredResponse<
1086
1136
  let lastIssues: StructuredValidationIssue[] = [];
1087
1137
 
1088
1138
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
1139
+ if (signal?.aborted) throw makeAbortError();
1089
1140
  lastRawResponse =
1090
1141
  attempt === 0
1091
1142
  ? await generateStructuredRawResponse(
@@ -1097,7 +1148,8 @@ export async function generateStructuredResponse<
1097
1148
  )
1098
1149
  : await generateStatelessWithQuotaRetry(
1099
1150
  buildRepairPrompt(prompt, output, lastRawResponse, lastIssues),
1100
- timeoutMs
1151
+ timeoutMs,
1152
+ signal
1101
1153
  );
1102
1154
 
1103
1155
  try {