llama-cpp-capacitor 0.0.1 → 0.0.2
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/dist/esm/index.js +1 -11
- package/dist/esm/index.js.map +1 -1
- package/dist/plugin.cjs.js +2 -12
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +3 -14
- package/dist/plugin.js.map +1 -1
- package/package.json +4 -3
- package/types/llama-cpp-capacitor.d.ts +441 -0
package/dist/esm/index.js
CHANGED
|
@@ -1,15 +1,5 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
4
|
-
t[p] = s[p];
|
|
5
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
6
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
7
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
8
|
-
t[p[i]] = s[p[i]];
|
|
9
|
-
}
|
|
10
|
-
return t;
|
|
11
|
-
};
|
|
12
1
|
var _a, _b, _c;
|
|
2
|
+
import { __rest } from "tslib";
|
|
13
3
|
import { registerPlugin } from '@capacitor/core';
|
|
14
4
|
// Constants
|
|
15
5
|
export const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerPlugin } from '@capacitor/core';\nimport type {\n NativeContextParams,\n NativeLlamaContext,\n NativeCompletionParams,\n NativeCompletionTokenProb,\n NativeCompletionResult,\n NativeTokenizeResult,\n NativeEmbeddingResult,\n NativeSessionLoadResult,\n NativeEmbeddingParams,\n NativeRerankParams,\n NativeRerankResult,\n NativeCompletionTokenProbItem,\n NativeCompletionResultTimings,\n JinjaFormattedChatResult,\n FormattedChatResult,\n NativeImageProcessingResult,\n NativeLlamaChatMessage,\n LlamaCppMessagePart,\n LlamaCppOAICompatibleMessage,\n ContextParams,\n EmbeddingParams,\n RerankParams,\n RerankResult,\n CompletionResponseFormat,\n CompletionParams,\n BenchResult,\n LlamaCppPlugin,\n} from './definitions';\n\n// Constants\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\n\n// Event names\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\n\n// Register the plugin\nconst LlamaCpp = registerPlugin<LlamaCppPlugin>('LlamaCpp');\n\n// Log listeners management\nconst logListeners: Array<(level: string, text: string) => void> = [];\n\n// Set up native log listener\nLlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt: { level: string; text: string }) => {\n logListeners.forEach((listener) => listener(evt.level, evt.text));\n});\n\n// Trigger unset to use default log callback\nLlamaCpp?.toggleNativeLog?.({ enabled: false })?.catch?.(() => {});\n\n// High-level types for the plugin interface\nexport type RNLlamaMessagePart = LlamaCppMessagePart;\nexport type RNLlamaOAICompatibleMessage = LlamaCppOAICompatibleMessage;\n\n// Re-export all types from definitions\nexport type {\n NativeContextParams,\n NativeLlamaContext,\n NativeCompletionParams,\n NativeCompletionTokenProb,\n NativeCompletionResult,\n NativeTokenizeResult,\n NativeEmbeddingResult,\n NativeSessionLoadResult,\n NativeEmbeddingParams,\n NativeRerankParams,\n NativeRerankResult,\n NativeCompletionTokenProbItem,\n NativeCompletionResultTimings,\n FormattedChatResult,\n JinjaFormattedChatResult,\n NativeImageProcessingResult,\n ContextParams,\n EmbeddingParams,\n RerankParams,\n RerankResult,\n CompletionResponseFormat,\n CompletionParams,\n BenchResult,\n};\n\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\n\nexport type ToolCall = {\n type: 'function';\n id?: string;\n function: {\n name: string;\n arguments: string; // JSON string\n };\n};\n\nexport type TokenData = {\n token: string;\n completion_probabilities?: Array<NativeCompletionTokenProb>;\n // Parsed content from accumulated text\n content?: string;\n reasoning_content?: string;\n tool_calls?: Array<ToolCall>;\n accumulated_text?: string;\n};\n\ntype TokenNativeEvent = {\n contextId: number;\n tokenResult: TokenData;\n};\n\nconst validCacheTypes = [\n 'f16',\n 'f32',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n];\n\nconst getJsonSchema = (responseFormat?: CompletionResponseFormat) => {\n if (responseFormat?.type === 'json_schema') {\n return responseFormat.json_schema?.schema;\n }\n if (responseFormat?.type === 'json_object') {\n return responseFormat.schema || {};\n }\n return null;\n};\n\nexport class LlamaContext {\n id: number;\n gpu: boolean = false;\n reasonNoGPU: string = '';\n model: NativeLlamaContext['model'];\n\n constructor({ contextId, gpu, reasonNoGPU, model }: NativeLlamaContext) {\n this.id = contextId;\n this.gpu = gpu;\n this.reasonNoGPU = reasonNoGPU;\n this.model = model;\n }\n\n /**\n * Load cached prompt & completion state from a file.\n */\n async loadSession(filepath: string): Promise<NativeSessionLoadResult> {\n let path = filepath;\n if (path.startsWith('file://')) path = path.slice(7);\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\n }\n\n /**\n * Save current cached prompt & completion state to a file.\n */\n async saveSession(\n filepath: string,\n options?: { tokenSize: number },\n ): Promise<number> {\n return LlamaCpp.saveSession({ \n contextId: this.id, \n filepath, \n size: options?.tokenSize || -1 \n });\n }\n\n isLlamaChatSupported(): boolean {\n return !!this.model.chatTemplates.llamaChat;\n }\n\n isJinjaSupported(): boolean {\n const { minja } = this.model.chatTemplates;\n return !!minja?.toolUse || !!minja?.default;\n }\n\n async getFormattedChat(\n messages: RNLlamaOAICompatibleMessage[],\n template?: string | null,\n params?: {\n jinja?: boolean;\n response_format?: CompletionResponseFormat;\n tools?: object;\n parallel_tool_calls?: object;\n tool_choice?: string;\n enable_thinking?: boolean;\n add_generation_prompt?: boolean;\n now?: string | number;\n chat_template_kwargs?: Record<string, string>;\n },\n ): Promise<FormattedChatResult | JinjaFormattedChatResult> {\n const mediaPaths: string[] = [];\n const chat = messages.map((msg) => {\n if (Array.isArray(msg.content)) {\n const content = msg.content.map((part) => {\n // Handle multimodal content\n if (part.type === 'image_url') {\n let path = part.image_url?.url || '';\n if (path?.startsWith('file://')) path = path.slice(7);\n mediaPaths.push(path);\n return {\n type: 'text',\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\n };\n } else if (part.type === 'input_audio') {\n const { input_audio: audio } = part;\n if (!audio) throw new Error('input_audio is required');\n\n const { format } = audio;\n if (format != 'wav' && format != 'mp3') {\n throw new Error(`Unsupported audio format: ${format}`);\n }\n if (audio.url) {\n const path = audio.url.replace(/file:\\/\\//, '');\n mediaPaths.push(path);\n } else if (audio.data) {\n mediaPaths.push(audio.data);\n }\n return {\n type: 'text',\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\n };\n }\n return part;\n });\n\n return {\n ...msg,\n content,\n };\n }\n return msg;\n }) as NativeLlamaChatMessage[];\n\n const useJinja = this.isJinjaSupported() && params?.jinja;\n let tmpl;\n if (template) tmpl = template; // Force replace if provided\n const jsonSchema = getJsonSchema(params?.response_format);\n\n const result = await LlamaCpp.getFormattedChat({\n contextId: this.id,\n messages: JSON.stringify(chat),\n chatTemplate: tmpl,\n params: {\n jinja: useJinja,\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\n tools: params?.tools ? JSON.stringify(params.tools) : undefined,\n parallel_tool_calls: params?.parallel_tool_calls\n ? JSON.stringify(params.parallel_tool_calls)\n : undefined,\n tool_choice: params?.tool_choice,\n enable_thinking: params?.enable_thinking ?? true,\n add_generation_prompt: params?.add_generation_prompt,\n now: typeof params?.now === 'number' ? params.now.toString() : params?.now,\n chat_template_kwargs: params?.chat_template_kwargs ? JSON.stringify(\n Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\n return acc;\n }, {} as Record<string, any>)\n ) : undefined,\n },\n });\n\n if (!useJinja) {\n return {\n type: 'llama-chat',\n prompt: result as string,\n has_media: mediaPaths.length > 0,\n media_paths: mediaPaths,\n };\n }\n const jinjaResult = result as JinjaFormattedChatResult;\n jinjaResult.type = 'jinja';\n jinjaResult.has_media = mediaPaths.length > 0;\n jinjaResult.media_paths = mediaPaths;\n return jinjaResult;\n }\n\n /**\n * Generate a completion based on the provided parameters\n * @param params Completion parameters including prompt or messages\n * @param callback Optional callback for token-by-token streaming\n * @returns Promise resolving to the completion result\n *\n * Note: For multimodal support, you can include an media_paths parameter.\n * This will process the images and add them to the context before generating text.\n * Multimodal support must be enabled via initMultimodal() first.\n */\n async completion(\n params: CompletionParams,\n callback?: (data: TokenData) => void,\n ): Promise<NativeCompletionResult> {\n const nativeParams = {\n ...params,\n prompt: params.prompt || '',\n emit_partial_completion: !!callback,\n };\n\n if (params.messages) {\n const formattedResult = await this.getFormattedChat(\n params.messages,\n params.chat_template || params.chatTemplate,\n {\n jinja: params.jinja,\n tools: params.tools,\n parallel_tool_calls: params.parallel_tool_calls,\n tool_choice: params.tool_choice,\n enable_thinking: params.enable_thinking,\n add_generation_prompt: params.add_generation_prompt,\n now: params.now,\n chat_template_kwargs: params.chat_template_kwargs,\n },\n );\n if (formattedResult.type === 'jinja') {\n const jinjaResult = formattedResult as JinjaFormattedChatResult;\n\n nativeParams.prompt = jinjaResult.prompt || '';\n if (typeof jinjaResult.chat_format === 'number')\n nativeParams.chat_format = jinjaResult.chat_format;\n if (jinjaResult.grammar) nativeParams.grammar = jinjaResult.grammar;\n if (typeof jinjaResult.grammar_lazy === 'boolean')\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\n if (jinjaResult.grammar_triggers)\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\n if (jinjaResult.preserved_tokens)\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\n if (jinjaResult.additional_stops) {\n if (!nativeParams.stop) nativeParams.stop = [];\n nativeParams.stop.push(...jinjaResult.additional_stops);\n }\n if (jinjaResult.has_media) {\n nativeParams.media_paths = jinjaResult.media_paths;\n }\n } else if (formattedResult.type === 'llama-chat') {\n const llamaChatResult = formattedResult as FormattedChatResult;\n nativeParams.prompt = llamaChatResult.prompt || '';\n if (llamaChatResult.has_media) {\n nativeParams.media_paths = llamaChatResult.media_paths;\n }\n }\n } else {\n nativeParams.prompt = params.prompt || '';\n }\n\n // If media_paths were explicitly provided or extracted from messages, use them\n if (!nativeParams.media_paths && params.media_paths) {\n nativeParams.media_paths = params.media_paths;\n }\n\n if (nativeParams.response_format && !nativeParams.grammar) {\n const jsonSchema = getJsonSchema(params.response_format);\n if (jsonSchema) nativeParams.json_schema = JSON.stringify(jsonSchema);\n }\n\n let tokenListener: any =\n callback &&\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt: TokenNativeEvent) => {\n const { contextId, tokenResult } = evt;\n if (contextId !== this.id) return;\n callback(tokenResult);\n });\n\n if (!nativeParams.prompt) throw new Error('Prompt is required');\n\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\n return promise\n .then((completionResult) => {\n tokenListener?.remove();\n tokenListener = null;\n return completionResult;\n })\n .catch((err: any) => {\n tokenListener?.remove();\n tokenListener = null;\n throw err;\n });\n }\n\n stopCompletion(): Promise<void> {\n return LlamaCpp.stopCompletion({ contextId: this.id });\n }\n\n /**\n * Tokenize text or text with images\n * @param text Text to tokenize\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\n * @returns Promise resolving to the tokenize result\n */\n tokenize(\n text: string,\n {\n media_paths: mediaPaths,\n }: {\n media_paths?: string[];\n } = {},\n ): Promise<NativeTokenizeResult> {\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\n }\n\n detokenize(tokens: number[]): Promise<string> {\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\n }\n\n embedding(\n text: string,\n params?: EmbeddingParams,\n ): Promise<NativeEmbeddingResult> {\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\n }\n\n /**\n * Rerank documents based on relevance to a query\n * @param query The query text to rank documents against\n * @param documents Array of document texts to rank\n * @param params Optional reranking parameters\n * @returns Promise resolving to an array of ranking results with scores and indices\n */\n async rerank(\n query: string,\n documents: string[],\n params?: RerankParams,\n ): Promise<RerankResult[]> {\n const results = await LlamaCpp.rerank({ \n contextId: this.id, \n query, \n documents, \n params: params || {} \n });\n\n // Sort by score descending and add document text if requested\n return results\n .map((result) => ({\n ...result,\n document: documents[result.index],\n }))\n .sort((a, b) => b.score - a.score);\n }\n\n async bench(\n pp: number,\n tg: number,\n pl: number,\n nr: number,\n ): Promise<BenchResult> {\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] =\n JSON.parse(result);\n return {\n modelDesc,\n modelSize,\n modelNParams,\n ppAvg,\n ppStd,\n tgAvg,\n tgStd,\n };\n }\n\n async applyLoraAdapters(\n loraList: Array<{ path: string; scaled?: number }>,\n ): Promise<void> {\n let loraAdapters: Array<{ path: string; scaled?: number }> = [];\n if (loraList)\n loraAdapters = loraList.map((l) => ({\n path: l.path.replace(/file:\\/\\//, ''),\n scaled: l.scaled,\n }));\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\n }\n\n async removeLoraAdapters(): Promise<void> {\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\n }\n\n async getLoadedLoraAdapters(): Promise<\n Array<{ path: string; scaled?: number }>\n > {\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\n }\n\n /**\n * Initialize multimodal support with a mmproj file\n * @param params Parameters for multimodal support\n * @param params.path Path to the multimodal projector file\n * @param params.use_gpu Whether to use GPU\n * @returns Promise resolving to true if initialization was successful\n */\n async initMultimodal({\n path,\n use_gpu: useGpu,\n }: {\n path: string;\n use_gpu?: boolean;\n }): Promise<boolean> {\n if (path.startsWith('file://')) path = path.slice(7);\n return LlamaCpp.initMultimodal({\n contextId: this.id,\n params: {\n path,\n use_gpu: useGpu ?? true,\n },\n });\n }\n\n /**\n * Check if multimodal support is enabled\n * @returns Promise resolving to true if multimodal is enabled\n */\n async isMultimodalEnabled(): Promise<boolean> {\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\n }\n\n /**\n * Check multimodal support\n * @returns Promise resolving to an object with vision and audio support\n */\n async getMultimodalSupport(): Promise<{\n vision: boolean;\n audio: boolean;\n }> {\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\n }\n\n /**\n * Release multimodal support\n * @returns Promise resolving to void\n */\n async releaseMultimodal(): Promise<void> {\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\n }\n\n /**\n * Initialize TTS support with a vocoder model\n * @param params Parameters for TTS support\n * @param params.path Path to the vocoder model\n * @param params.n_batch Batch size for the vocoder model\n * @returns Promise resolving to true if initialization was successful\n */\n async initVocoder({ path, n_batch: nBatch }: { path: string; n_batch?: number }): Promise<boolean> {\n if (path.startsWith('file://')) path = path.slice(7);\n return await LlamaCpp.initVocoder({ \n contextId: this.id, \n params: { path, n_batch: nBatch } \n });\n }\n\n /**\n * Check if TTS support is enabled\n * @returns Promise resolving to true if TTS is enabled\n */\n async isVocoderEnabled(): Promise<boolean> {\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\n }\n\n /**\n * Get a formatted audio completion prompt\n * @param speakerJsonStr JSON string representing the speaker\n * @param textToSpeak Text to speak\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\n */\n async getFormattedAudioCompletion(\n speaker: object | null,\n textToSpeak: string,\n ): Promise<{\n prompt: string;\n grammar?: string;\n }> {\n return await LlamaCpp.getFormattedAudioCompletion({\n contextId: this.id,\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\n textToSpeak,\n });\n }\n\n /**\n * Get guide tokens for audio completion\n * @param textToSpeak Text to speak\n * @returns Promise resolving to the guide tokens\n */\n async getAudioCompletionGuideTokens(\n textToSpeak: string,\n ): Promise<Array<number>> {\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\n }\n\n /**\n * Decode audio tokens\n * @param tokens Array of audio tokens\n * @returns Promise resolving to the decoded audio tokens\n */\n async decodeAudioTokens(tokens: number[]): Promise<Array<number>> {\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\n }\n\n /**\n * Release TTS support\n * @returns Promise resolving to void\n */\n async releaseVocoder(): Promise<void> {\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\n }\n\n async release(): Promise<void> {\n return LlamaCpp.releaseContext({ contextId: this.id });\n }\n}\n\nexport async function toggleNativeLog(enabled: boolean): Promise<void> {\n return LlamaCpp.toggleNativeLog({ enabled });\n}\n\nexport function addNativeLogListener(\n listener: (level: string, text: string) => void,\n): { remove: () => void } {\n logListeners.push(listener);\n return {\n remove: () => {\n logListeners.splice(logListeners.indexOf(listener), 1);\n },\n };\n}\n\nexport async function setContextLimit(limit: number): Promise<void> {\n return LlamaCpp.setContextLimit({ limit });\n}\n\nlet contextIdCounter = 0;\nconst contextIdRandom = () =>\n process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000);\n\nconst modelInfoSkip = [\n // Large fields\n 'tokenizer.ggml.tokens',\n 'tokenizer.ggml.token_type',\n 'tokenizer.ggml.merges',\n 'tokenizer.ggml.scores',\n];\n\nexport async function loadLlamaModelInfo(model: string): Promise<Object> {\n let path = model;\n if (path.startsWith('file://')) path = path.slice(7);\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\n}\n\nconst poolTypeMap = {\n // -1 is unspecified as undefined\n none: 0,\n mean: 1,\n cls: 2,\n last: 3,\n rank: 4,\n};\n\nexport async function initLlama(\n {\n model,\n is_model_asset: isModelAsset,\n pooling_type: poolingType,\n lora,\n lora_list: loraList,\n ...rest\n }: ContextParams,\n onProgress?: (progress: number) => void,\n): Promise<LlamaContext> {\n let path = model;\n if (path.startsWith('file://')) path = path.slice(7);\n\n let loraPath = lora;\n if (loraPath?.startsWith('file://')) loraPath = loraPath.slice(7);\n\n let loraAdapters: Array<{ path: string; scaled?: number }> = [];\n if (loraList)\n loraAdapters = loraList.map((l) => ({\n path: l.path.replace(/file:\\/\\//, ''),\n scaled: l.scaled,\n }));\n\n const contextId = contextIdCounter + contextIdRandom();\n contextIdCounter += 1;\n\n let removeProgressListener: any = null;\n if (onProgress) {\n removeProgressListener = LlamaCpp.addListener(\n EVENT_ON_INIT_CONTEXT_PROGRESS,\n (evt: { contextId: number; progress: number }) => {\n if (evt.contextId !== contextId) return;\n onProgress(evt.progress);\n },\n );\n }\n\n const poolType = poolTypeMap[poolingType as keyof typeof poolTypeMap];\n\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\n delete rest.cache_type_k;\n }\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\n delete rest.cache_type_v;\n }\n\n const {\n gpu,\n reasonNoGPU,\n model: modelDetails,\n androidLib,\n } = await LlamaCpp.initContext({\n contextId,\n params: {\n model: path,\n is_model_asset: !!isModelAsset,\n use_progress_callback: !!onProgress,\n pooling_type: poolType,\n lora: loraPath,\n lora_list: loraAdapters,\n ...rest,\n },\n }).catch((err: any) => {\n removeProgressListener?.remove();\n throw err;\n });\n removeProgressListener?.remove();\n return new LlamaContext({\n contextId,\n gpu,\n reasonNoGPU,\n model: modelDetails,\n androidLib,\n });\n}\n\nexport async function releaseAllLlama(): Promise<void> {\n return LlamaCpp.releaseAllContexts();\n}\n\nexport const BuildInfo = {\n number: '1.0.0',\n commit: 'capacitor-llama-cpp',\n};\n\n// Re-export the plugin for direct access\nexport { LlamaCpp };\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { registerPlugin } from '@capacitor/core';\nimport type {\n NativeContextParams,\n NativeLlamaContext,\n NativeCompletionParams,\n NativeCompletionTokenProb,\n NativeCompletionResult,\n NativeTokenizeResult,\n NativeEmbeddingResult,\n NativeSessionLoadResult,\n NativeEmbeddingParams,\n NativeRerankParams,\n NativeRerankResult,\n NativeCompletionTokenProbItem,\n NativeCompletionResultTimings,\n JinjaFormattedChatResult,\n FormattedChatResult,\n NativeImageProcessingResult,\n NativeLlamaChatMessage,\n LlamaCppMessagePart,\n LlamaCppOAICompatibleMessage,\n ContextParams,\n EmbeddingParams,\n RerankParams,\n RerankResult,\n CompletionResponseFormat,\n CompletionParams,\n BenchResult,\n LlamaCppPlugin,\n} from './definitions';\n\n// Constants\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\n\n// Event names\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\n\n// Register the plugin\nconst LlamaCpp = registerPlugin<LlamaCppPlugin>('LlamaCpp');\n\n// Log listeners management\nconst logListeners: Array<(level: string, text: string) => void> = [];\n\n// Set up native log listener\nLlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt: { level: string; text: string }) => {\n logListeners.forEach((listener) => listener(evt.level, evt.text));\n});\n\n// Trigger unset to use default log callback\nLlamaCpp?.toggleNativeLog?.({ enabled: false })?.catch?.(() => {});\n\n// High-level types for the plugin interface\nexport type RNLlamaMessagePart = LlamaCppMessagePart;\nexport type RNLlamaOAICompatibleMessage = LlamaCppOAICompatibleMessage;\n\n// Re-export all types from definitions\nexport type {\n NativeContextParams,\n NativeLlamaContext,\n NativeCompletionParams,\n NativeCompletionTokenProb,\n NativeCompletionResult,\n NativeTokenizeResult,\n NativeEmbeddingResult,\n NativeSessionLoadResult,\n NativeEmbeddingParams,\n NativeRerankParams,\n NativeRerankResult,\n NativeCompletionTokenProbItem,\n NativeCompletionResultTimings,\n FormattedChatResult,\n JinjaFormattedChatResult,\n NativeImageProcessingResult,\n ContextParams,\n EmbeddingParams,\n RerankParams,\n RerankResult,\n CompletionResponseFormat,\n CompletionParams,\n BenchResult,\n};\n\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\n\nexport type ToolCall = {\n type: 'function';\n id?: string;\n function: {\n name: string;\n arguments: string; // JSON string\n };\n};\n\nexport type TokenData = {\n token: string;\n completion_probabilities?: Array<NativeCompletionTokenProb>;\n // Parsed content from accumulated text\n content?: string;\n reasoning_content?: string;\n tool_calls?: Array<ToolCall>;\n accumulated_text?: string;\n};\n\ntype TokenNativeEvent = {\n contextId: number;\n tokenResult: TokenData;\n};\n\nconst validCacheTypes = [\n 'f16',\n 'f32',\n 'bf16',\n 'q8_0',\n 'q4_0',\n 'q4_1',\n 'iq4_nl',\n 'q5_0',\n 'q5_1',\n];\n\nconst getJsonSchema = (responseFormat?: CompletionResponseFormat) => {\n if (responseFormat?.type === 'json_schema') {\n return responseFormat.json_schema?.schema;\n }\n if (responseFormat?.type === 'json_object') {\n return responseFormat.schema || {};\n }\n return null;\n};\n\nexport class LlamaContext {\n id: number;\n gpu: boolean = false;\n reasonNoGPU: string = '';\n model: NativeLlamaContext['model'];\n\n constructor({ contextId, gpu, reasonNoGPU, model }: NativeLlamaContext) {\n this.id = contextId;\n this.gpu = gpu;\n this.reasonNoGPU = reasonNoGPU;\n this.model = model;\n }\n\n /**\n * Load cached prompt & completion state from a file.\n */\n async loadSession(filepath: string): Promise<NativeSessionLoadResult> {\n let path = filepath;\n if (path.startsWith('file://')) path = path.slice(7);\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\n }\n\n /**\n * Save current cached prompt & completion state to a file.\n */\n async saveSession(\n filepath: string,\n options?: { tokenSize: number },\n ): Promise<number> {\n return LlamaCpp.saveSession({ \n contextId: this.id, \n filepath, \n size: options?.tokenSize || -1 \n });\n }\n\n isLlamaChatSupported(): boolean {\n return !!this.model.chatTemplates.llamaChat;\n }\n\n isJinjaSupported(): boolean {\n const { minja } = this.model.chatTemplates;\n return !!minja?.toolUse || !!minja?.default;\n }\n\n async getFormattedChat(\n messages: RNLlamaOAICompatibleMessage[],\n template?: string | null,\n params?: {\n jinja?: boolean;\n response_format?: CompletionResponseFormat;\n tools?: object;\n parallel_tool_calls?: object;\n tool_choice?: string;\n enable_thinking?: boolean;\n add_generation_prompt?: boolean;\n now?: string | number;\n chat_template_kwargs?: Record<string, string>;\n },\n ): Promise<FormattedChatResult | JinjaFormattedChatResult> {\n const mediaPaths: string[] = [];\n const chat = messages.map((msg) => {\n if (Array.isArray(msg.content)) {\n const content = msg.content.map((part) => {\n // Handle multimodal content\n if (part.type === 'image_url') {\n let path = part.image_url?.url || '';\n if (path?.startsWith('file://')) path = path.slice(7);\n mediaPaths.push(path);\n return {\n type: 'text',\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\n };\n } else if (part.type === 'input_audio') {\n const { input_audio: audio } = part;\n if (!audio) throw new Error('input_audio is required');\n\n const { format } = audio;\n if (format != 'wav' && format != 'mp3') {\n throw new Error(`Unsupported audio format: ${format}`);\n }\n if (audio.url) {\n const path = audio.url.replace(/file:\\/\\//, '');\n mediaPaths.push(path);\n } else if (audio.data) {\n mediaPaths.push(audio.data);\n }\n return {\n type: 'text',\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\n };\n }\n return part;\n });\n\n return {\n ...msg,\n content,\n };\n }\n return msg;\n }) as NativeLlamaChatMessage[];\n\n const useJinja = this.isJinjaSupported() && params?.jinja;\n let tmpl;\n if (template) tmpl = template; // Force replace if provided\n const jsonSchema = getJsonSchema(params?.response_format);\n\n const result = await LlamaCpp.getFormattedChat({\n contextId: this.id,\n messages: JSON.stringify(chat),\n chatTemplate: tmpl,\n params: {\n jinja: useJinja,\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\n tools: params?.tools ? JSON.stringify(params.tools) : undefined,\n parallel_tool_calls: params?.parallel_tool_calls\n ? JSON.stringify(params.parallel_tool_calls)\n : undefined,\n tool_choice: params?.tool_choice,\n enable_thinking: params?.enable_thinking ?? true,\n add_generation_prompt: params?.add_generation_prompt,\n now: typeof params?.now === 'number' ? params.now.toString() : params?.now,\n chat_template_kwargs: params?.chat_template_kwargs ? JSON.stringify(\n Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\n return acc;\n }, {} as Record<string, any>)\n ) : undefined,\n },\n });\n\n if (!useJinja) {\n return {\n type: 'llama-chat',\n prompt: result as string,\n has_media: mediaPaths.length > 0,\n media_paths: mediaPaths,\n };\n }\n const jinjaResult = result as JinjaFormattedChatResult;\n jinjaResult.type = 'jinja';\n jinjaResult.has_media = mediaPaths.length > 0;\n jinjaResult.media_paths = mediaPaths;\n return jinjaResult;\n }\n\n /**\n * Generate a completion based on the provided parameters\n * @param params Completion parameters including prompt or messages\n * @param callback Optional callback for token-by-token streaming\n * @returns Promise resolving to the completion result\n *\n * Note: For multimodal support, you can include an media_paths parameter.\n * This will process the images and add them to the context before generating text.\n * Multimodal support must be enabled via initMultimodal() first.\n */\n async completion(\n params: CompletionParams,\n callback?: (data: TokenData) => void,\n ): Promise<NativeCompletionResult> {\n const nativeParams = {\n ...params,\n prompt: params.prompt || '',\n emit_partial_completion: !!callback,\n };\n\n if (params.messages) {\n const formattedResult = await this.getFormattedChat(\n params.messages,\n params.chat_template || params.chatTemplate,\n {\n jinja: params.jinja,\n tools: params.tools,\n parallel_tool_calls: params.parallel_tool_calls,\n tool_choice: params.tool_choice,\n enable_thinking: params.enable_thinking,\n add_generation_prompt: params.add_generation_prompt,\n now: params.now,\n chat_template_kwargs: params.chat_template_kwargs,\n },\n );\n if (formattedResult.type === 'jinja') {\n const jinjaResult = formattedResult as JinjaFormattedChatResult;\n\n nativeParams.prompt = jinjaResult.prompt || '';\n if (typeof jinjaResult.chat_format === 'number')\n nativeParams.chat_format = jinjaResult.chat_format;\n if (jinjaResult.grammar) nativeParams.grammar = jinjaResult.grammar;\n if (typeof jinjaResult.grammar_lazy === 'boolean')\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\n if (jinjaResult.grammar_triggers)\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\n if (jinjaResult.preserved_tokens)\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\n if (jinjaResult.additional_stops) {\n if (!nativeParams.stop) nativeParams.stop = [];\n nativeParams.stop.push(...jinjaResult.additional_stops);\n }\n if (jinjaResult.has_media) {\n nativeParams.media_paths = jinjaResult.media_paths;\n }\n } else if (formattedResult.type === 'llama-chat') {\n const llamaChatResult = formattedResult as FormattedChatResult;\n nativeParams.prompt = llamaChatResult.prompt || '';\n if (llamaChatResult.has_media) {\n nativeParams.media_paths = llamaChatResult.media_paths;\n }\n }\n } else {\n nativeParams.prompt = params.prompt || '';\n }\n\n // If media_paths were explicitly provided or extracted from messages, use them\n if (!nativeParams.media_paths && params.media_paths) {\n nativeParams.media_paths = params.media_paths;\n }\n\n if (nativeParams.response_format && !nativeParams.grammar) {\n const jsonSchema = getJsonSchema(params.response_format);\n if (jsonSchema) nativeParams.json_schema = JSON.stringify(jsonSchema);\n }\n\n let tokenListener: any =\n callback &&\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt: TokenNativeEvent) => {\n const { contextId, tokenResult } = evt;\n if (contextId !== this.id) return;\n callback(tokenResult);\n });\n\n if (!nativeParams.prompt) throw new Error('Prompt is required');\n\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\n return promise\n .then((completionResult) => {\n tokenListener?.remove();\n tokenListener = null;\n return completionResult;\n })\n .catch((err: any) => {\n tokenListener?.remove();\n tokenListener = null;\n throw err;\n });\n }\n\n stopCompletion(): Promise<void> {\n return LlamaCpp.stopCompletion({ contextId: this.id });\n }\n\n /**\n * Tokenize text or text with images\n * @param text Text to tokenize\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\n * @returns Promise resolving to the tokenize result\n */\n tokenize(\n text: string,\n {\n media_paths: mediaPaths,\n }: {\n media_paths?: string[];\n } = {},\n ): Promise<NativeTokenizeResult> {\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\n }\n\n detokenize(tokens: number[]): Promise<string> {\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\n }\n\n embedding(\n text: string,\n params?: EmbeddingParams,\n ): Promise<NativeEmbeddingResult> {\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\n }\n\n /**\n * Rerank documents based on relevance to a query\n * @param query The query text to rank documents against\n * @param documents Array of document texts to rank\n * @param params Optional reranking parameters\n * @returns Promise resolving to an array of ranking results with scores and indices\n */\n async rerank(\n query: string,\n documents: string[],\n params?: RerankParams,\n ): Promise<RerankResult[]> {\n const results = await LlamaCpp.rerank({ \n contextId: this.id, \n query, \n documents, \n params: params || {} \n });\n\n // Sort by score descending and add document text if requested\n return results\n .map((result) => ({\n ...result,\n document: documents[result.index],\n }))\n .sort((a, b) => b.score - a.score);\n }\n\n async bench(\n pp: number,\n tg: number,\n pl: number,\n nr: number,\n ): Promise<BenchResult> {\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] =\n JSON.parse(result);\n return {\n modelDesc,\n modelSize,\n modelNParams,\n ppAvg,\n ppStd,\n tgAvg,\n tgStd,\n };\n }\n\n async applyLoraAdapters(\n loraList: Array<{ path: string; scaled?: number }>,\n ): Promise<void> {\n let loraAdapters: Array<{ path: string; scaled?: number }> = [];\n if (loraList)\n loraAdapters = loraList.map((l) => ({\n path: l.path.replace(/file:\\/\\//, ''),\n scaled: l.scaled,\n }));\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\n }\n\n async removeLoraAdapters(): Promise<void> {\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\n }\n\n async getLoadedLoraAdapters(): Promise<\n Array<{ path: string; scaled?: number }>\n > {\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\n }\n\n /**\n * Initialize multimodal support with a mmproj file\n * @param params Parameters for multimodal support\n * @param params.path Path to the multimodal projector file\n * @param params.use_gpu Whether to use GPU\n * @returns Promise resolving to true if initialization was successful\n */\n async initMultimodal({\n path,\n use_gpu: useGpu,\n }: {\n path: string;\n use_gpu?: boolean;\n }): Promise<boolean> {\n if (path.startsWith('file://')) path = path.slice(7);\n return LlamaCpp.initMultimodal({\n contextId: this.id,\n params: {\n path,\n use_gpu: useGpu ?? true,\n },\n });\n }\n\n /**\n * Check if multimodal support is enabled\n * @returns Promise resolving to true if multimodal is enabled\n */\n async isMultimodalEnabled(): Promise<boolean> {\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\n }\n\n /**\n * Check multimodal support\n * @returns Promise resolving to an object with vision and audio support\n */\n async getMultimodalSupport(): Promise<{\n vision: boolean;\n audio: boolean;\n }> {\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\n }\n\n /**\n * Release multimodal support\n * @returns Promise resolving to void\n */\n async releaseMultimodal(): Promise<void> {\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\n }\n\n /**\n * Initialize TTS support with a vocoder model\n * @param params Parameters for TTS support\n * @param params.path Path to the vocoder model\n * @param params.n_batch Batch size for the vocoder model\n * @returns Promise resolving to true if initialization was successful\n */\n async initVocoder({ path, n_batch: nBatch }: { path: string; n_batch?: number }): Promise<boolean> {\n if (path.startsWith('file://')) path = path.slice(7);\n return await LlamaCpp.initVocoder({ \n contextId: this.id, \n params: { path, n_batch: nBatch } \n });\n }\n\n /**\n * Check if TTS support is enabled\n * @returns Promise resolving to true if TTS is enabled\n */\n async isVocoderEnabled(): Promise<boolean> {\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\n }\n\n /**\n * Get a formatted audio completion prompt\n * @param speakerJsonStr JSON string representing the speaker\n * @param textToSpeak Text to speak\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\n */\n async getFormattedAudioCompletion(\n speaker: object | null,\n textToSpeak: string,\n ): Promise<{\n prompt: string;\n grammar?: string;\n }> {\n return await LlamaCpp.getFormattedAudioCompletion({\n contextId: this.id,\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\n textToSpeak,\n });\n }\n\n /**\n * Get guide tokens for audio completion\n * @param textToSpeak Text to speak\n * @returns Promise resolving to the guide tokens\n */\n async getAudioCompletionGuideTokens(\n textToSpeak: string,\n ): Promise<Array<number>> {\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\n }\n\n /**\n * Decode audio tokens\n * @param tokens Array of audio tokens\n * @returns Promise resolving to the decoded audio tokens\n */\n async decodeAudioTokens(tokens: number[]): Promise<Array<number>> {\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\n }\n\n /**\n * Release TTS support\n * @returns Promise resolving to void\n */\n async releaseVocoder(): Promise<void> {\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\n }\n\n async release(): Promise<void> {\n return LlamaCpp.releaseContext({ contextId: this.id });\n }\n}\n\nexport async function toggleNativeLog(enabled: boolean): Promise<void> {\n return LlamaCpp.toggleNativeLog({ enabled });\n}\n\nexport function addNativeLogListener(\n listener: (level: string, text: string) => void,\n): { remove: () => void } {\n logListeners.push(listener);\n return {\n remove: () => {\n logListeners.splice(logListeners.indexOf(listener), 1);\n },\n };\n}\n\nexport async function setContextLimit(limit: number): Promise<void> {\n return LlamaCpp.setContextLimit({ limit });\n}\n\nlet contextIdCounter = 0;\nconst contextIdRandom = () =>\n process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000);\n\nconst modelInfoSkip = [\n // Large fields\n 'tokenizer.ggml.tokens',\n 'tokenizer.ggml.token_type',\n 'tokenizer.ggml.merges',\n 'tokenizer.ggml.scores',\n];\n\nexport async function loadLlamaModelInfo(model: string): Promise<Object> {\n let path = model;\n if (path.startsWith('file://')) path = path.slice(7);\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\n}\n\nconst poolTypeMap = {\n // -1 is unspecified as undefined\n none: 0,\n mean: 1,\n cls: 2,\n last: 3,\n rank: 4,\n};\n\nexport async function initLlama(\n {\n model,\n is_model_asset: isModelAsset,\n pooling_type: poolingType,\n lora,\n lora_list: loraList,\n ...rest\n }: ContextParams,\n onProgress?: (progress: number) => void,\n): Promise<LlamaContext> {\n let path = model;\n if (path.startsWith('file://')) path = path.slice(7);\n\n let loraPath = lora;\n if (loraPath?.startsWith('file://')) loraPath = loraPath.slice(7);\n\n let loraAdapters: Array<{ path: string; scaled?: number }> = [];\n if (loraList)\n loraAdapters = loraList.map((l) => ({\n path: l.path.replace(/file:\\/\\//, ''),\n scaled: l.scaled,\n }));\n\n const contextId = contextIdCounter + contextIdRandom();\n contextIdCounter += 1;\n\n let removeProgressListener: any = null;\n if (onProgress) {\n removeProgressListener = LlamaCpp.addListener(\n EVENT_ON_INIT_CONTEXT_PROGRESS,\n (evt: { contextId: number; progress: number }) => {\n if (evt.contextId !== contextId) return;\n onProgress(evt.progress);\n },\n );\n }\n\n const poolType = poolTypeMap[poolingType as keyof typeof poolTypeMap];\n\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\n delete rest.cache_type_k;\n }\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\n delete rest.cache_type_v;\n }\n\n const {\n gpu,\n reasonNoGPU,\n model: modelDetails,\n androidLib,\n } = await LlamaCpp.initContext({\n contextId,\n params: {\n model: path,\n is_model_asset: !!isModelAsset,\n use_progress_callback: !!onProgress,\n pooling_type: poolType,\n lora: loraPath,\n lora_list: loraAdapters,\n ...rest,\n },\n }).catch((err: any) => {\n removeProgressListener?.remove();\n throw err;\n });\n removeProgressListener?.remove();\n return new LlamaContext({\n contextId,\n gpu,\n reasonNoGPU,\n model: modelDetails,\n androidLib,\n });\n}\n\nexport async function releaseAllLlama(): Promise<void> {\n return LlamaCpp.releaseAllContexts();\n}\n\nexport const BuildInfo = {\n number: '1.0.0',\n commit: 'capacitor-llama-cpp',\n};\n\n// Re-export the plugin for direct access\nexport { LlamaCpp };\n"]}
|
package/dist/plugin.cjs.js
CHANGED
|
@@ -1,18 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
+
var tslib = require('tslib');
|
|
3
4
|
var core = require('@capacitor/core');
|
|
4
5
|
|
|
5
|
-
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
6
|
-
var t = {};
|
|
7
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
8
|
-
t[p] = s[p];
|
|
9
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
10
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
11
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
12
|
-
t[p[i]] = s[p[i]];
|
|
13
|
-
}
|
|
14
|
-
return t;
|
|
15
|
-
};
|
|
16
6
|
var _a, _b, _c;
|
|
17
7
|
// Constants
|
|
18
8
|
const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';
|
|
@@ -461,7 +451,7 @@ const poolTypeMap = {
|
|
|
461
451
|
rank: 4,
|
|
462
452
|
};
|
|
463
453
|
async function initLlama(_a, onProgress) {
|
|
464
|
-
var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, ["model", "is_model_asset", "pooling_type", "lora", "lora_list"]);
|
|
454
|
+
var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = tslib.__rest(_a, ["model", "is_model_asset", "pooling_type", "lora", "lora_list"]);
|
|
465
455
|
let path = model;
|
|
466
456
|
if (path.startsWith('file://'))
|
|
467
457
|
path = path.slice(7);
|
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js"],"sourcesContent":["var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nvar _a, _b, _c;\r\nimport { registerPlugin } from '@capacitor/core';\r\n// Constants\r\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\r\n// Event names\r\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\r\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\r\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\r\n// Register the plugin\r\nconst LlamaCpp = registerPlugin('LlamaCpp');\r\n// Log listeners management\r\nconst logListeners = [];\r\n// Set up native log listener\r\nLlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt) => {\r\n logListeners.forEach((listener) => listener(evt.level, evt.text));\r\n});\r\n// Trigger unset to use default log callback\r\n(_c = (_b = (_a = LlamaCpp === null || LlamaCpp === void 0 ? void 0 : LlamaCpp.toggleNativeLog) === null || _a === void 0 ? void 0 : _a.call(LlamaCpp, { enabled: false })) === null || _b === void 0 ? void 0 : _b.catch) === null || _c === void 0 ? void 0 : _c.call(_b, () => { });\r\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\r\nconst validCacheTypes = [\r\n 'f16',\r\n 'f32',\r\n 'bf16',\r\n 'q8_0',\r\n 'q4_0',\r\n 'q4_1',\r\n 'iq4_nl',\r\n 'q5_0',\r\n 'q5_1',\r\n];\r\nconst getJsonSchema = (responseFormat) => {\r\n var _a;\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_schema') {\r\n return (_a = responseFormat.json_schema) === null || _a === void 0 ? void 0 : _a.schema;\r\n }\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_object') {\r\n return responseFormat.schema || {};\r\n }\r\n return null;\r\n};\r\nexport class LlamaContext {\r\n constructor({ contextId, gpu, reasonNoGPU, model }) {\r\n this.gpu = false;\r\n this.reasonNoGPU = '';\r\n this.id = contextId;\r\n this.gpu = gpu;\r\n this.reasonNoGPU = reasonNoGPU;\r\n this.model = model;\r\n }\r\n /**\r\n * Load cached prompt & completion state from a file.\r\n */\r\n async loadSession(filepath) {\r\n let path = filepath;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\r\n }\r\n /**\r\n * Save current cached prompt & completion state to a file.\r\n */\r\n async saveSession(filepath, options) {\r\n return LlamaCpp.saveSession({\r\n contextId: this.id,\r\n filepath,\r\n size: (options === null || options === void 0 ? void 0 : options.tokenSize) || -1\r\n });\r\n }\r\n isLlamaChatSupported() {\r\n return !!this.model.chatTemplates.llamaChat;\r\n }\r\n isJinjaSupported() {\r\n const { minja } = this.model.chatTemplates;\r\n return !!(minja === null || minja === void 0 ? void 0 : minja.toolUse) || !!(minja === null || minja === void 0 ? void 0 : minja.default);\r\n }\r\n async getFormattedChat(messages, template, params) {\r\n var _a;\r\n const mediaPaths = [];\r\n const chat = messages.map((msg) => {\r\n if (Array.isArray(msg.content)) {\r\n const content = msg.content.map((part) => {\r\n var _a;\r\n // Handle multimodal content\r\n if (part.type === 'image_url') {\r\n let path = ((_a = part.image_url) === null || _a === void 0 ? void 0 : _a.url) || '';\r\n if (path === null || path === void 0 ? void 0 : path.startsWith('file://'))\r\n path = path.slice(7);\r\n mediaPaths.push(path);\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n else if (part.type === 'input_audio') {\r\n const { input_audio: audio } = part;\r\n if (!audio)\r\n throw new Error('input_audio is required');\r\n const { format } = audio;\r\n if (format != 'wav' && format != 'mp3') {\r\n throw new Error(`Unsupported audio format: ${format}`);\r\n }\r\n if (audio.url) {\r\n const path = audio.url.replace(/file:\\/\\//, '');\r\n mediaPaths.push(path);\r\n }\r\n else if (audio.data) {\r\n mediaPaths.push(audio.data);\r\n }\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n return part;\r\n });\r\n return Object.assign(Object.assign({}, msg), { content });\r\n }\r\n return msg;\r\n });\r\n const useJinja = this.isJinjaSupported() && (params === null || params === void 0 ? void 0 : params.jinja);\r\n let tmpl;\r\n if (template)\r\n tmpl = template; // Force replace if provided\r\n const jsonSchema = getJsonSchema(params === null || params === void 0 ? void 0 : params.response_format);\r\n const result = await LlamaCpp.getFormattedChat({\r\n contextId: this.id,\r\n messages: JSON.stringify(chat),\r\n chatTemplate: tmpl,\r\n params: {\r\n jinja: useJinja,\r\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\r\n tools: (params === null || params === void 0 ? void 0 : params.tools) ? JSON.stringify(params.tools) : undefined,\r\n parallel_tool_calls: (params === null || params === void 0 ? void 0 : params.parallel_tool_calls) ? JSON.stringify(params.parallel_tool_calls)\r\n : undefined,\r\n tool_choice: params === null || params === void 0 ? void 0 : params.tool_choice,\r\n enable_thinking: (_a = params === null || params === void 0 ? void 0 : params.enable_thinking) !== null && _a !== void 0 ? _a : true,\r\n add_generation_prompt: params === null || params === void 0 ? void 0 : params.add_generation_prompt,\r\n now: typeof (params === null || params === void 0 ? void 0 : params.now) === 'number' ? params.now.toString() : params === null || params === void 0 ? void 0 : params.now,\r\n chat_template_kwargs: (params === null || params === void 0 ? void 0 : params.chat_template_kwargs) ? JSON.stringify(Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\r\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\r\n return acc;\r\n }, {})) : undefined,\r\n },\r\n });\r\n if (!useJinja) {\r\n return {\r\n type: 'llama-chat',\r\n prompt: result,\r\n has_media: mediaPaths.length > 0,\r\n media_paths: mediaPaths,\r\n };\r\n }\r\n const jinjaResult = result;\r\n jinjaResult.type = 'jinja';\r\n jinjaResult.has_media = mediaPaths.length > 0;\r\n jinjaResult.media_paths = mediaPaths;\r\n return jinjaResult;\r\n }\r\n /**\r\n * Generate a completion based on the provided parameters\r\n * @param params Completion parameters including prompt or messages\r\n * @param callback Optional callback for token-by-token streaming\r\n * @returns Promise resolving to the completion result\r\n *\r\n * Note: For multimodal support, you can include an media_paths parameter.\r\n * This will process the images and add them to the context before generating text.\r\n * Multimodal support must be enabled via initMultimodal() first.\r\n */\r\n async completion(params, callback) {\r\n const nativeParams = Object.assign(Object.assign({}, params), { prompt: params.prompt || '', emit_partial_completion: !!callback });\r\n if (params.messages) {\r\n const formattedResult = await this.getFormattedChat(params.messages, params.chat_template || params.chatTemplate, {\r\n jinja: params.jinja,\r\n tools: params.tools,\r\n parallel_tool_calls: params.parallel_tool_calls,\r\n tool_choice: params.tool_choice,\r\n enable_thinking: params.enable_thinking,\r\n add_generation_prompt: params.add_generation_prompt,\r\n now: params.now,\r\n chat_template_kwargs: params.chat_template_kwargs,\r\n });\r\n if (formattedResult.type === 'jinja') {\r\n const jinjaResult = formattedResult;\r\n nativeParams.prompt = jinjaResult.prompt || '';\r\n if (typeof jinjaResult.chat_format === 'number')\r\n nativeParams.chat_format = jinjaResult.chat_format;\r\n if (jinjaResult.grammar)\r\n nativeParams.grammar = jinjaResult.grammar;\r\n if (typeof jinjaResult.grammar_lazy === 'boolean')\r\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\r\n if (jinjaResult.grammar_triggers)\r\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\r\n if (jinjaResult.preserved_tokens)\r\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\r\n if (jinjaResult.additional_stops) {\r\n if (!nativeParams.stop)\r\n nativeParams.stop = [];\r\n nativeParams.stop.push(...jinjaResult.additional_stops);\r\n }\r\n if (jinjaResult.has_media) {\r\n nativeParams.media_paths = jinjaResult.media_paths;\r\n }\r\n }\r\n else if (formattedResult.type === 'llama-chat') {\r\n const llamaChatResult = formattedResult;\r\n nativeParams.prompt = llamaChatResult.prompt || '';\r\n if (llamaChatResult.has_media) {\r\n nativeParams.media_paths = llamaChatResult.media_paths;\r\n }\r\n }\r\n }\r\n else {\r\n nativeParams.prompt = params.prompt || '';\r\n }\r\n // If media_paths were explicitly provided or extracted from messages, use them\r\n if (!nativeParams.media_paths && params.media_paths) {\r\n nativeParams.media_paths = params.media_paths;\r\n }\r\n if (nativeParams.response_format && !nativeParams.grammar) {\r\n const jsonSchema = getJsonSchema(params.response_format);\r\n if (jsonSchema)\r\n nativeParams.json_schema = JSON.stringify(jsonSchema);\r\n }\r\n let tokenListener = callback &&\r\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt) => {\r\n const { contextId, tokenResult } = evt;\r\n if (contextId !== this.id)\r\n return;\r\n callback(tokenResult);\r\n });\r\n if (!nativeParams.prompt)\r\n throw new Error('Prompt is required');\r\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\r\n return promise\r\n .then((completionResult) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n return completionResult;\r\n })\r\n .catch((err) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n throw err;\r\n });\r\n }\r\n stopCompletion() {\r\n return LlamaCpp.stopCompletion({ contextId: this.id });\r\n }\r\n /**\r\n * Tokenize text or text with images\r\n * @param text Text to tokenize\r\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\r\n * @returns Promise resolving to the tokenize result\r\n */\r\n tokenize(text, { media_paths: mediaPaths, } = {}) {\r\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\r\n }\r\n detokenize(tokens) {\r\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\r\n }\r\n embedding(text, params) {\r\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\r\n }\r\n /**\r\n * Rerank documents based on relevance to a query\r\n * @param query The query text to rank documents against\r\n * @param documents Array of document texts to rank\r\n * @param params Optional reranking parameters\r\n * @returns Promise resolving to an array of ranking results with scores and indices\r\n */\r\n async rerank(query, documents, params) {\r\n const results = await LlamaCpp.rerank({\r\n contextId: this.id,\r\n query,\r\n documents,\r\n params: params || {}\r\n });\r\n // Sort by score descending and add document text if requested\r\n return results\r\n .map((result) => (Object.assign(Object.assign({}, result), { document: documents[result.index] })))\r\n .sort((a, b) => b.score - a.score);\r\n }\r\n async bench(pp, tg, pl, nr) {\r\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\r\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);\r\n return {\r\n modelDesc,\r\n modelSize,\r\n modelNParams,\r\n ppAvg,\r\n ppStd,\r\n tgAvg,\r\n tgStd,\r\n };\r\n }\r\n async applyLoraAdapters(loraList) {\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\r\n }\r\n async removeLoraAdapters() {\r\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\r\n }\r\n async getLoadedLoraAdapters() {\r\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize multimodal support with a mmproj file\r\n * @param params Parameters for multimodal support\r\n * @param params.path Path to the multimodal projector file\r\n * @param params.use_gpu Whether to use GPU\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initMultimodal({ path, use_gpu: useGpu, }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.initMultimodal({\r\n contextId: this.id,\r\n params: {\r\n path,\r\n use_gpu: useGpu !== null && useGpu !== void 0 ? useGpu : true,\r\n },\r\n });\r\n }\r\n /**\r\n * Check if multimodal support is enabled\r\n * @returns Promise resolving to true if multimodal is enabled\r\n */\r\n async isMultimodalEnabled() {\r\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Check multimodal support\r\n * @returns Promise resolving to an object with vision and audio support\r\n */\r\n async getMultimodalSupport() {\r\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\r\n }\r\n /**\r\n * Release multimodal support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseMultimodal() {\r\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize TTS support with a vocoder model\r\n * @param params Parameters for TTS support\r\n * @param params.path Path to the vocoder model\r\n * @param params.n_batch Batch size for the vocoder model\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initVocoder({ path, n_batch: nBatch }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return await LlamaCpp.initVocoder({\r\n contextId: this.id,\r\n params: { path, n_batch: nBatch }\r\n });\r\n }\r\n /**\r\n * Check if TTS support is enabled\r\n * @returns Promise resolving to true if TTS is enabled\r\n */\r\n async isVocoderEnabled() {\r\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Get a formatted audio completion prompt\r\n * @param speakerJsonStr JSON string representing the speaker\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\r\n */\r\n async getFormattedAudioCompletion(speaker, textToSpeak) {\r\n return await LlamaCpp.getFormattedAudioCompletion({\r\n contextId: this.id,\r\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\r\n textToSpeak,\r\n });\r\n }\r\n /**\r\n * Get guide tokens for audio completion\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the guide tokens\r\n */\r\n async getAudioCompletionGuideTokens(textToSpeak) {\r\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\r\n }\r\n /**\r\n * Decode audio tokens\r\n * @param tokens Array of audio tokens\r\n * @returns Promise resolving to the decoded audio tokens\r\n */\r\n async decodeAudioTokens(tokens) {\r\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\r\n }\r\n /**\r\n * Release TTS support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseVocoder() {\r\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\r\n }\r\n async release() {\r\n return LlamaCpp.releaseContext({ contextId: this.id });\r\n }\r\n}\r\nexport async function toggleNativeLog(enabled) {\r\n return LlamaCpp.toggleNativeLog({ enabled });\r\n}\r\nexport function addNativeLogListener(listener) {\r\n logListeners.push(listener);\r\n return {\r\n remove: () => {\r\n logListeners.splice(logListeners.indexOf(listener), 1);\r\n },\r\n };\r\n}\r\nexport async function setContextLimit(limit) {\r\n return LlamaCpp.setContextLimit({ limit });\r\n}\r\nlet contextIdCounter = 0;\r\nconst contextIdRandom = () => process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000);\r\nconst modelInfoSkip = [\r\n // Large fields\r\n 'tokenizer.ggml.tokens',\r\n 'tokenizer.ggml.token_type',\r\n 'tokenizer.ggml.merges',\r\n 'tokenizer.ggml.scores',\r\n];\r\nexport async function loadLlamaModelInfo(model) {\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\r\n}\r\nconst poolTypeMap = {\r\n // -1 is unspecified as undefined\r\n none: 0,\r\n mean: 1,\r\n cls: 2,\r\n last: 3,\r\n rank: 4,\r\n};\r\nexport async function initLlama(_a, onProgress) {\r\n var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, [\"model\", \"is_model_asset\", \"pooling_type\", \"lora\", \"lora_list\"]);\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n let loraPath = lora;\r\n if (loraPath === null || loraPath === void 0 ? void 0 : loraPath.startsWith('file://'))\r\n loraPath = loraPath.slice(7);\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n const contextId = contextIdCounter + contextIdRandom();\r\n contextIdCounter += 1;\r\n let removeProgressListener = null;\r\n if (onProgress) {\r\n removeProgressListener = LlamaCpp.addListener(EVENT_ON_INIT_CONTEXT_PROGRESS, (evt) => {\r\n if (evt.contextId !== contextId)\r\n return;\r\n onProgress(evt.progress);\r\n });\r\n }\r\n const poolType = poolTypeMap[poolingType];\r\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\r\n delete rest.cache_type_k;\r\n }\r\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\r\n delete rest.cache_type_v;\r\n }\r\n const { gpu, reasonNoGPU, model: modelDetails, androidLib, } = await LlamaCpp.initContext({\r\n contextId,\r\n params: Object.assign({ model: path, is_model_asset: !!isModelAsset, use_progress_callback: !!onProgress, pooling_type: poolType, lora: loraPath, lora_list: loraAdapters }, rest),\r\n }).catch((err) => {\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n throw err;\r\n });\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n return new LlamaContext({\r\n contextId,\r\n gpu,\r\n reasonNoGPU,\r\n model: modelDetails,\r\n androidLib,\r\n });\r\n}\r\nexport async function releaseAllLlama() {\r\n return LlamaCpp.releaseAllContexts();\r\n}\r\nexport const BuildInfo = {\r\n number: '1.0.0',\r\n commit: 'capacitor-llama-cpp',\r\n};\r\n// Re-export the plugin for direct access\r\nexport { LlamaCpp };\r\n//# sourceMappingURL=index.js.map"],"names":["this","registerPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/index.js"],"sourcesContent":["var _a, _b, _c;\r\nimport { __rest } from \"tslib\";\r\nimport { registerPlugin } from '@capacitor/core';\r\n// Constants\r\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\r\n// Event names\r\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\r\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\r\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\r\n// Register the plugin\r\nconst LlamaCpp = registerPlugin('LlamaCpp');\r\n// Log listeners management\r\nconst logListeners = [];\r\n// Set up native log listener\r\nLlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt) => {\r\n logListeners.forEach((listener) => listener(evt.level, evt.text));\r\n});\r\n// Trigger unset to use default log callback\r\n(_c = (_b = (_a = LlamaCpp === null || LlamaCpp === void 0 ? void 0 : LlamaCpp.toggleNativeLog) === null || _a === void 0 ? void 0 : _a.call(LlamaCpp, { enabled: false })) === null || _b === void 0 ? void 0 : _b.catch) === null || _c === void 0 ? void 0 : _c.call(_b, () => { });\r\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\r\nconst validCacheTypes = [\r\n 'f16',\r\n 'f32',\r\n 'bf16',\r\n 'q8_0',\r\n 'q4_0',\r\n 'q4_1',\r\n 'iq4_nl',\r\n 'q5_0',\r\n 'q5_1',\r\n];\r\nconst getJsonSchema = (responseFormat) => {\r\n var _a;\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_schema') {\r\n return (_a = responseFormat.json_schema) === null || _a === void 0 ? void 0 : _a.schema;\r\n }\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_object') {\r\n return responseFormat.schema || {};\r\n }\r\n return null;\r\n};\r\nexport class LlamaContext {\r\n constructor({ contextId, gpu, reasonNoGPU, model }) {\r\n this.gpu = false;\r\n this.reasonNoGPU = '';\r\n this.id = contextId;\r\n this.gpu = gpu;\r\n this.reasonNoGPU = reasonNoGPU;\r\n this.model = model;\r\n }\r\n /**\r\n * Load cached prompt & completion state from a file.\r\n */\r\n async loadSession(filepath) {\r\n let path = filepath;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\r\n }\r\n /**\r\n * Save current cached prompt & completion state to a file.\r\n */\r\n async saveSession(filepath, options) {\r\n return LlamaCpp.saveSession({\r\n contextId: this.id,\r\n filepath,\r\n size: (options === null || options === void 0 ? void 0 : options.tokenSize) || -1\r\n });\r\n }\r\n isLlamaChatSupported() {\r\n return !!this.model.chatTemplates.llamaChat;\r\n }\r\n isJinjaSupported() {\r\n const { minja } = this.model.chatTemplates;\r\n return !!(minja === null || minja === void 0 ? void 0 : minja.toolUse) || !!(minja === null || minja === void 0 ? void 0 : minja.default);\r\n }\r\n async getFormattedChat(messages, template, params) {\r\n var _a;\r\n const mediaPaths = [];\r\n const chat = messages.map((msg) => {\r\n if (Array.isArray(msg.content)) {\r\n const content = msg.content.map((part) => {\r\n var _a;\r\n // Handle multimodal content\r\n if (part.type === 'image_url') {\r\n let path = ((_a = part.image_url) === null || _a === void 0 ? void 0 : _a.url) || '';\r\n if (path === null || path === void 0 ? void 0 : path.startsWith('file://'))\r\n path = path.slice(7);\r\n mediaPaths.push(path);\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n else if (part.type === 'input_audio') {\r\n const { input_audio: audio } = part;\r\n if (!audio)\r\n throw new Error('input_audio is required');\r\n const { format } = audio;\r\n if (format != 'wav' && format != 'mp3') {\r\n throw new Error(`Unsupported audio format: ${format}`);\r\n }\r\n if (audio.url) {\r\n const path = audio.url.replace(/file:\\/\\//, '');\r\n mediaPaths.push(path);\r\n }\r\n else if (audio.data) {\r\n mediaPaths.push(audio.data);\r\n }\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n return part;\r\n });\r\n return Object.assign(Object.assign({}, msg), { content });\r\n }\r\n return msg;\r\n });\r\n const useJinja = this.isJinjaSupported() && (params === null || params === void 0 ? void 0 : params.jinja);\r\n let tmpl;\r\n if (template)\r\n tmpl = template; // Force replace if provided\r\n const jsonSchema = getJsonSchema(params === null || params === void 0 ? void 0 : params.response_format);\r\n const result = await LlamaCpp.getFormattedChat({\r\n contextId: this.id,\r\n messages: JSON.stringify(chat),\r\n chatTemplate: tmpl,\r\n params: {\r\n jinja: useJinja,\r\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\r\n tools: (params === null || params === void 0 ? void 0 : params.tools) ? JSON.stringify(params.tools) : undefined,\r\n parallel_tool_calls: (params === null || params === void 0 ? void 0 : params.parallel_tool_calls) ? JSON.stringify(params.parallel_tool_calls)\r\n : undefined,\r\n tool_choice: params === null || params === void 0 ? void 0 : params.tool_choice,\r\n enable_thinking: (_a = params === null || params === void 0 ? void 0 : params.enable_thinking) !== null && _a !== void 0 ? _a : true,\r\n add_generation_prompt: params === null || params === void 0 ? void 0 : params.add_generation_prompt,\r\n now: typeof (params === null || params === void 0 ? void 0 : params.now) === 'number' ? params.now.toString() : params === null || params === void 0 ? void 0 : params.now,\r\n chat_template_kwargs: (params === null || params === void 0 ? void 0 : params.chat_template_kwargs) ? JSON.stringify(Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\r\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\r\n return acc;\r\n }, {})) : undefined,\r\n },\r\n });\r\n if (!useJinja) {\r\n return {\r\n type: 'llama-chat',\r\n prompt: result,\r\n has_media: mediaPaths.length > 0,\r\n media_paths: mediaPaths,\r\n };\r\n }\r\n const jinjaResult = result;\r\n jinjaResult.type = 'jinja';\r\n jinjaResult.has_media = mediaPaths.length > 0;\r\n jinjaResult.media_paths = mediaPaths;\r\n return jinjaResult;\r\n }\r\n /**\r\n * Generate a completion based on the provided parameters\r\n * @param params Completion parameters including prompt or messages\r\n * @param callback Optional callback for token-by-token streaming\r\n * @returns Promise resolving to the completion result\r\n *\r\n * Note: For multimodal support, you can include an media_paths parameter.\r\n * This will process the images and add them to the context before generating text.\r\n * Multimodal support must be enabled via initMultimodal() first.\r\n */\r\n async completion(params, callback) {\r\n const nativeParams = Object.assign(Object.assign({}, params), { prompt: params.prompt || '', emit_partial_completion: !!callback });\r\n if (params.messages) {\r\n const formattedResult = await this.getFormattedChat(params.messages, params.chat_template || params.chatTemplate, {\r\n jinja: params.jinja,\r\n tools: params.tools,\r\n parallel_tool_calls: params.parallel_tool_calls,\r\n tool_choice: params.tool_choice,\r\n enable_thinking: params.enable_thinking,\r\n add_generation_prompt: params.add_generation_prompt,\r\n now: params.now,\r\n chat_template_kwargs: params.chat_template_kwargs,\r\n });\r\n if (formattedResult.type === 'jinja') {\r\n const jinjaResult = formattedResult;\r\n nativeParams.prompt = jinjaResult.prompt || '';\r\n if (typeof jinjaResult.chat_format === 'number')\r\n nativeParams.chat_format = jinjaResult.chat_format;\r\n if (jinjaResult.grammar)\r\n nativeParams.grammar = jinjaResult.grammar;\r\n if (typeof jinjaResult.grammar_lazy === 'boolean')\r\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\r\n if (jinjaResult.grammar_triggers)\r\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\r\n if (jinjaResult.preserved_tokens)\r\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\r\n if (jinjaResult.additional_stops) {\r\n if (!nativeParams.stop)\r\n nativeParams.stop = [];\r\n nativeParams.stop.push(...jinjaResult.additional_stops);\r\n }\r\n if (jinjaResult.has_media) {\r\n nativeParams.media_paths = jinjaResult.media_paths;\r\n }\r\n }\r\n else if (formattedResult.type === 'llama-chat') {\r\n const llamaChatResult = formattedResult;\r\n nativeParams.prompt = llamaChatResult.prompt || '';\r\n if (llamaChatResult.has_media) {\r\n nativeParams.media_paths = llamaChatResult.media_paths;\r\n }\r\n }\r\n }\r\n else {\r\n nativeParams.prompt = params.prompt || '';\r\n }\r\n // If media_paths were explicitly provided or extracted from messages, use them\r\n if (!nativeParams.media_paths && params.media_paths) {\r\n nativeParams.media_paths = params.media_paths;\r\n }\r\n if (nativeParams.response_format && !nativeParams.grammar) {\r\n const jsonSchema = getJsonSchema(params.response_format);\r\n if (jsonSchema)\r\n nativeParams.json_schema = JSON.stringify(jsonSchema);\r\n }\r\n let tokenListener = callback &&\r\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt) => {\r\n const { contextId, tokenResult } = evt;\r\n if (contextId !== this.id)\r\n return;\r\n callback(tokenResult);\r\n });\r\n if (!nativeParams.prompt)\r\n throw new Error('Prompt is required');\r\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\r\n return promise\r\n .then((completionResult) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n return completionResult;\r\n })\r\n .catch((err) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n throw err;\r\n });\r\n }\r\n stopCompletion() {\r\n return LlamaCpp.stopCompletion({ contextId: this.id });\r\n }\r\n /**\r\n * Tokenize text or text with images\r\n * @param text Text to tokenize\r\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\r\n * @returns Promise resolving to the tokenize result\r\n */\r\n tokenize(text, { media_paths: mediaPaths, } = {}) {\r\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\r\n }\r\n detokenize(tokens) {\r\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\r\n }\r\n embedding(text, params) {\r\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\r\n }\r\n /**\r\n * Rerank documents based on relevance to a query\r\n * @param query The query text to rank documents against\r\n * @param documents Array of document texts to rank\r\n * @param params Optional reranking parameters\r\n * @returns Promise resolving to an array of ranking results with scores and indices\r\n */\r\n async rerank(query, documents, params) {\r\n const results = await LlamaCpp.rerank({\r\n contextId: this.id,\r\n query,\r\n documents,\r\n params: params || {}\r\n });\r\n // Sort by score descending and add document text if requested\r\n return results\r\n .map((result) => (Object.assign(Object.assign({}, result), { document: documents[result.index] })))\r\n .sort((a, b) => b.score - a.score);\r\n }\r\n async bench(pp, tg, pl, nr) {\r\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\r\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);\r\n return {\r\n modelDesc,\r\n modelSize,\r\n modelNParams,\r\n ppAvg,\r\n ppStd,\r\n tgAvg,\r\n tgStd,\r\n };\r\n }\r\n async applyLoraAdapters(loraList) {\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\r\n }\r\n async removeLoraAdapters() {\r\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\r\n }\r\n async getLoadedLoraAdapters() {\r\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize multimodal support with a mmproj file\r\n * @param params Parameters for multimodal support\r\n * @param params.path Path to the multimodal projector file\r\n * @param params.use_gpu Whether to use GPU\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initMultimodal({ path, use_gpu: useGpu, }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.initMultimodal({\r\n contextId: this.id,\r\n params: {\r\n path,\r\n use_gpu: useGpu !== null && useGpu !== void 0 ? useGpu : true,\r\n },\r\n });\r\n }\r\n /**\r\n * Check if multimodal support is enabled\r\n * @returns Promise resolving to true if multimodal is enabled\r\n */\r\n async isMultimodalEnabled() {\r\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Check multimodal support\r\n * @returns Promise resolving to an object with vision and audio support\r\n */\r\n async getMultimodalSupport() {\r\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\r\n }\r\n /**\r\n * Release multimodal support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseMultimodal() {\r\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize TTS support with a vocoder model\r\n * @param params Parameters for TTS support\r\n * @param params.path Path to the vocoder model\r\n * @param params.n_batch Batch size for the vocoder model\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initVocoder({ path, n_batch: nBatch }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return await LlamaCpp.initVocoder({\r\n contextId: this.id,\r\n params: { path, n_batch: nBatch }\r\n });\r\n }\r\n /**\r\n * Check if TTS support is enabled\r\n * @returns Promise resolving to true if TTS is enabled\r\n */\r\n async isVocoderEnabled() {\r\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Get a formatted audio completion prompt\r\n * @param speakerJsonStr JSON string representing the speaker\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\r\n */\r\n async getFormattedAudioCompletion(speaker, textToSpeak) {\r\n return await LlamaCpp.getFormattedAudioCompletion({\r\n contextId: this.id,\r\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\r\n textToSpeak,\r\n });\r\n }\r\n /**\r\n * Get guide tokens for audio completion\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the guide tokens\r\n */\r\n async getAudioCompletionGuideTokens(textToSpeak) {\r\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\r\n }\r\n /**\r\n * Decode audio tokens\r\n * @param tokens Array of audio tokens\r\n * @returns Promise resolving to the decoded audio tokens\r\n */\r\n async decodeAudioTokens(tokens) {\r\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\r\n }\r\n /**\r\n * Release TTS support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseVocoder() {\r\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\r\n }\r\n async release() {\r\n return LlamaCpp.releaseContext({ contextId: this.id });\r\n }\r\n}\r\nexport async function toggleNativeLog(enabled) {\r\n return LlamaCpp.toggleNativeLog({ enabled });\r\n}\r\nexport function addNativeLogListener(listener) {\r\n logListeners.push(listener);\r\n return {\r\n remove: () => {\r\n logListeners.splice(logListeners.indexOf(listener), 1);\r\n },\r\n };\r\n}\r\nexport async function setContextLimit(limit) {\r\n return LlamaCpp.setContextLimit({ limit });\r\n}\r\nlet contextIdCounter = 0;\r\nconst contextIdRandom = () => process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000);\r\nconst modelInfoSkip = [\r\n // Large fields\r\n 'tokenizer.ggml.tokens',\r\n 'tokenizer.ggml.token_type',\r\n 'tokenizer.ggml.merges',\r\n 'tokenizer.ggml.scores',\r\n];\r\nexport async function loadLlamaModelInfo(model) {\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\r\n}\r\nconst poolTypeMap = {\r\n // -1 is unspecified as undefined\r\n none: 0,\r\n mean: 1,\r\n cls: 2,\r\n last: 3,\r\n rank: 4,\r\n};\r\nexport async function initLlama(_a, onProgress) {\r\n var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, [\"model\", \"is_model_asset\", \"pooling_type\", \"lora\", \"lora_list\"]);\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n let loraPath = lora;\r\n if (loraPath === null || loraPath === void 0 ? void 0 : loraPath.startsWith('file://'))\r\n loraPath = loraPath.slice(7);\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n const contextId = contextIdCounter + contextIdRandom();\r\n contextIdCounter += 1;\r\n let removeProgressListener = null;\r\n if (onProgress) {\r\n removeProgressListener = LlamaCpp.addListener(EVENT_ON_INIT_CONTEXT_PROGRESS, (evt) => {\r\n if (evt.contextId !== contextId)\r\n return;\r\n onProgress(evt.progress);\r\n });\r\n }\r\n const poolType = poolTypeMap[poolingType];\r\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\r\n delete rest.cache_type_k;\r\n }\r\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\r\n delete rest.cache_type_v;\r\n }\r\n const { gpu, reasonNoGPU, model: modelDetails, androidLib, } = await LlamaCpp.initContext({\r\n contextId,\r\n params: Object.assign({ model: path, is_model_asset: !!isModelAsset, use_progress_callback: !!onProgress, pooling_type: poolType, lora: loraPath, lora_list: loraAdapters }, rest),\r\n }).catch((err) => {\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n throw err;\r\n });\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n return new LlamaContext({\r\n contextId,\r\n gpu,\r\n reasonNoGPU,\r\n model: modelDetails,\r\n androidLib,\r\n });\r\n}\r\nexport async function releaseAllLlama() {\r\n return LlamaCpp.releaseAllContexts();\r\n}\r\nexport const BuildInfo = {\r\n number: '1.0.0',\r\n commit: 'capacitor-llama-cpp',\r\n};\r\n// Re-export the plugin for direct access\r\nexport { LlamaCpp };\r\n//# sourceMappingURL=index.js.map"],"names":["registerPlugin","__rest"],"mappings":"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"}
|
package/dist/plugin.js
CHANGED
|
@@ -1,17 +1,6 @@
|
|
|
1
|
-
var capacitorLlamaCpp = (function (exports, core) {
|
|
1
|
+
var capacitorLlamaCpp = (function (exports, tslib, core) {
|
|
2
2
|
'use strict';
|
|
3
3
|
|
|
4
|
-
var __rest = (undefined && undefined.__rest) || function (s, e) {
|
|
5
|
-
var t = {};
|
|
6
|
-
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
7
|
-
t[p] = s[p];
|
|
8
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
9
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
10
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
11
|
-
t[p[i]] = s[p[i]];
|
|
12
|
-
}
|
|
13
|
-
return t;
|
|
14
|
-
};
|
|
15
4
|
var _a, _b, _c;
|
|
16
5
|
// Constants
|
|
17
6
|
const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';
|
|
@@ -460,7 +449,7 @@ var capacitorLlamaCpp = (function (exports, core) {
|
|
|
460
449
|
rank: 4,
|
|
461
450
|
};
|
|
462
451
|
async function initLlama(_a, onProgress) {
|
|
463
|
-
var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, ["model", "is_model_asset", "pooling_type", "lora", "lora_list"]);
|
|
452
|
+
var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = tslib.__rest(_a, ["model", "is_model_asset", "pooling_type", "lora", "lora_list"]);
|
|
464
453
|
let path = model;
|
|
465
454
|
if (path.startsWith('file://'))
|
|
466
455
|
path = path.slice(7);
|
|
@@ -530,5 +519,5 @@ var capacitorLlamaCpp = (function (exports, core) {
|
|
|
530
519
|
|
|
531
520
|
return exports;
|
|
532
521
|
|
|
533
|
-
})({}, capacitorExports);
|
|
522
|
+
})({}, tslib, capacitorExports);
|
|
534
523
|
//# sourceMappingURL=plugin.js.map
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/index.js"],"sourcesContent":["var __rest = (this && this.__rest) || function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n};\r\nvar _a, _b, _c;\r\nimport { registerPlugin } from '@capacitor/core';\r\n// Constants\r\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\r\n// Event names\r\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\r\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\r\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\r\n// Register the plugin\r\nconst LlamaCpp = registerPlugin('LlamaCpp');\r\n// Log listeners management\r\nconst logListeners = [];\r\n// Set up native log listener\r\nLlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt) => {\r\n logListeners.forEach((listener) => listener(evt.level, evt.text));\r\n});\r\n// Trigger unset to use default log callback\r\n(_c = (_b = (_a = LlamaCpp === null || LlamaCpp === void 0 ? void 0 : LlamaCpp.toggleNativeLog) === null || _a === void 0 ? void 0 : _a.call(LlamaCpp, { enabled: false })) === null || _b === void 0 ? void 0 : _b.catch) === null || _c === void 0 ? void 0 : _c.call(_b, () => { });\r\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\r\nconst validCacheTypes = [\r\n 'f16',\r\n 'f32',\r\n 'bf16',\r\n 'q8_0',\r\n 'q4_0',\r\n 'q4_1',\r\n 'iq4_nl',\r\n 'q5_0',\r\n 'q5_1',\r\n];\r\nconst getJsonSchema = (responseFormat) => {\r\n var _a;\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_schema') {\r\n return (_a = responseFormat.json_schema) === null || _a === void 0 ? void 0 : _a.schema;\r\n }\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_object') {\r\n return responseFormat.schema || {};\r\n }\r\n return null;\r\n};\r\nexport class LlamaContext {\r\n constructor({ contextId, gpu, reasonNoGPU, model }) {\r\n this.gpu = false;\r\n this.reasonNoGPU = '';\r\n this.id = contextId;\r\n this.gpu = gpu;\r\n this.reasonNoGPU = reasonNoGPU;\r\n this.model = model;\r\n }\r\n /**\r\n * Load cached prompt & completion state from a file.\r\n */\r\n async loadSession(filepath) {\r\n let path = filepath;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\r\n }\r\n /**\r\n * Save current cached prompt & completion state to a file.\r\n */\r\n async saveSession(filepath, options) {\r\n return LlamaCpp.saveSession({\r\n contextId: this.id,\r\n filepath,\r\n size: (options === null || options === void 0 ? void 0 : options.tokenSize) || -1\r\n });\r\n }\r\n isLlamaChatSupported() {\r\n return !!this.model.chatTemplates.llamaChat;\r\n }\r\n isJinjaSupported() {\r\n const { minja } = this.model.chatTemplates;\r\n return !!(minja === null || minja === void 0 ? void 0 : minja.toolUse) || !!(minja === null || minja === void 0 ? void 0 : minja.default);\r\n }\r\n async getFormattedChat(messages, template, params) {\r\n var _a;\r\n const mediaPaths = [];\r\n const chat = messages.map((msg) => {\r\n if (Array.isArray(msg.content)) {\r\n const content = msg.content.map((part) => {\r\n var _a;\r\n // Handle multimodal content\r\n if (part.type === 'image_url') {\r\n let path = ((_a = part.image_url) === null || _a === void 0 ? void 0 : _a.url) || '';\r\n if (path === null || path === void 0 ? void 0 : path.startsWith('file://'))\r\n path = path.slice(7);\r\n mediaPaths.push(path);\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n else if (part.type === 'input_audio') {\r\n const { input_audio: audio } = part;\r\n if (!audio)\r\n throw new Error('input_audio is required');\r\n const { format } = audio;\r\n if (format != 'wav' && format != 'mp3') {\r\n throw new Error(`Unsupported audio format: ${format}`);\r\n }\r\n if (audio.url) {\r\n const path = audio.url.replace(/file:\\/\\//, '');\r\n mediaPaths.push(path);\r\n }\r\n else if (audio.data) {\r\n mediaPaths.push(audio.data);\r\n }\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n return part;\r\n });\r\n return Object.assign(Object.assign({}, msg), { content });\r\n }\r\n return msg;\r\n });\r\n const useJinja = this.isJinjaSupported() && (params === null || params === void 0 ? void 0 : params.jinja);\r\n let tmpl;\r\n if (template)\r\n tmpl = template; // Force replace if provided\r\n const jsonSchema = getJsonSchema(params === null || params === void 0 ? void 0 : params.response_format);\r\n const result = await LlamaCpp.getFormattedChat({\r\n contextId: this.id,\r\n messages: JSON.stringify(chat),\r\n chatTemplate: tmpl,\r\n params: {\r\n jinja: useJinja,\r\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\r\n tools: (params === null || params === void 0 ? void 0 : params.tools) ? JSON.stringify(params.tools) : undefined,\r\n parallel_tool_calls: (params === null || params === void 0 ? void 0 : params.parallel_tool_calls) ? JSON.stringify(params.parallel_tool_calls)\r\n : undefined,\r\n tool_choice: params === null || params === void 0 ? void 0 : params.tool_choice,\r\n enable_thinking: (_a = params === null || params === void 0 ? void 0 : params.enable_thinking) !== null && _a !== void 0 ? _a : true,\r\n add_generation_prompt: params === null || params === void 0 ? void 0 : params.add_generation_prompt,\r\n now: typeof (params === null || params === void 0 ? void 0 : params.now) === 'number' ? params.now.toString() : params === null || params === void 0 ? void 0 : params.now,\r\n chat_template_kwargs: (params === null || params === void 0 ? void 0 : params.chat_template_kwargs) ? JSON.stringify(Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\r\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\r\n return acc;\r\n }, {})) : undefined,\r\n },\r\n });\r\n if (!useJinja) {\r\n return {\r\n type: 'llama-chat',\r\n prompt: result,\r\n has_media: mediaPaths.length > 0,\r\n media_paths: mediaPaths,\r\n };\r\n }\r\n const jinjaResult = result;\r\n jinjaResult.type = 'jinja';\r\n jinjaResult.has_media = mediaPaths.length > 0;\r\n jinjaResult.media_paths = mediaPaths;\r\n return jinjaResult;\r\n }\r\n /**\r\n * Generate a completion based on the provided parameters\r\n * @param params Completion parameters including prompt or messages\r\n * @param callback Optional callback for token-by-token streaming\r\n * @returns Promise resolving to the completion result\r\n *\r\n * Note: For multimodal support, you can include an media_paths parameter.\r\n * This will process the images and add them to the context before generating text.\r\n * Multimodal support must be enabled via initMultimodal() first.\r\n */\r\n async completion(params, callback) {\r\n const nativeParams = Object.assign(Object.assign({}, params), { prompt: params.prompt || '', emit_partial_completion: !!callback });\r\n if (params.messages) {\r\n const formattedResult = await this.getFormattedChat(params.messages, params.chat_template || params.chatTemplate, {\r\n jinja: params.jinja,\r\n tools: params.tools,\r\n parallel_tool_calls: params.parallel_tool_calls,\r\n tool_choice: params.tool_choice,\r\n enable_thinking: params.enable_thinking,\r\n add_generation_prompt: params.add_generation_prompt,\r\n now: params.now,\r\n chat_template_kwargs: params.chat_template_kwargs,\r\n });\r\n if (formattedResult.type === 'jinja') {\r\n const jinjaResult = formattedResult;\r\n nativeParams.prompt = jinjaResult.prompt || '';\r\n if (typeof jinjaResult.chat_format === 'number')\r\n nativeParams.chat_format = jinjaResult.chat_format;\r\n if (jinjaResult.grammar)\r\n nativeParams.grammar = jinjaResult.grammar;\r\n if (typeof jinjaResult.grammar_lazy === 'boolean')\r\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\r\n if (jinjaResult.grammar_triggers)\r\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\r\n if (jinjaResult.preserved_tokens)\r\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\r\n if (jinjaResult.additional_stops) {\r\n if (!nativeParams.stop)\r\n nativeParams.stop = [];\r\n nativeParams.stop.push(...jinjaResult.additional_stops);\r\n }\r\n if (jinjaResult.has_media) {\r\n nativeParams.media_paths = jinjaResult.media_paths;\r\n }\r\n }\r\n else if (formattedResult.type === 'llama-chat') {\r\n const llamaChatResult = formattedResult;\r\n nativeParams.prompt = llamaChatResult.prompt || '';\r\n if (llamaChatResult.has_media) {\r\n nativeParams.media_paths = llamaChatResult.media_paths;\r\n }\r\n }\r\n }\r\n else {\r\n nativeParams.prompt = params.prompt || '';\r\n }\r\n // If media_paths were explicitly provided or extracted from messages, use them\r\n if (!nativeParams.media_paths && params.media_paths) {\r\n nativeParams.media_paths = params.media_paths;\r\n }\r\n if (nativeParams.response_format && !nativeParams.grammar) {\r\n const jsonSchema = getJsonSchema(params.response_format);\r\n if (jsonSchema)\r\n nativeParams.json_schema = JSON.stringify(jsonSchema);\r\n }\r\n let tokenListener = callback &&\r\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt) => {\r\n const { contextId, tokenResult } = evt;\r\n if (contextId !== this.id)\r\n return;\r\n callback(tokenResult);\r\n });\r\n if (!nativeParams.prompt)\r\n throw new Error('Prompt is required');\r\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\r\n return promise\r\n .then((completionResult) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n return completionResult;\r\n })\r\n .catch((err) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n throw err;\r\n });\r\n }\r\n stopCompletion() {\r\n return LlamaCpp.stopCompletion({ contextId: this.id });\r\n }\r\n /**\r\n * Tokenize text or text with images\r\n * @param text Text to tokenize\r\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\r\n * @returns Promise resolving to the tokenize result\r\n */\r\n tokenize(text, { media_paths: mediaPaths, } = {}) {\r\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\r\n }\r\n detokenize(tokens) {\r\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\r\n }\r\n embedding(text, params) {\r\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\r\n }\r\n /**\r\n * Rerank documents based on relevance to a query\r\n * @param query The query text to rank documents against\r\n * @param documents Array of document texts to rank\r\n * @param params Optional reranking parameters\r\n * @returns Promise resolving to an array of ranking results with scores and indices\r\n */\r\n async rerank(query, documents, params) {\r\n const results = await LlamaCpp.rerank({\r\n contextId: this.id,\r\n query,\r\n documents,\r\n params: params || {}\r\n });\r\n // Sort by score descending and add document text if requested\r\n return results\r\n .map((result) => (Object.assign(Object.assign({}, result), { document: documents[result.index] })))\r\n .sort((a, b) => b.score - a.score);\r\n }\r\n async bench(pp, tg, pl, nr) {\r\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\r\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);\r\n return {\r\n modelDesc,\r\n modelSize,\r\n modelNParams,\r\n ppAvg,\r\n ppStd,\r\n tgAvg,\r\n tgStd,\r\n };\r\n }\r\n async applyLoraAdapters(loraList) {\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\r\n }\r\n async removeLoraAdapters() {\r\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\r\n }\r\n async getLoadedLoraAdapters() {\r\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize multimodal support with a mmproj file\r\n * @param params Parameters for multimodal support\r\n * @param params.path Path to the multimodal projector file\r\n * @param params.use_gpu Whether to use GPU\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initMultimodal({ path, use_gpu: useGpu, }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.initMultimodal({\r\n contextId: this.id,\r\n params: {\r\n path,\r\n use_gpu: useGpu !== null && useGpu !== void 0 ? useGpu : true,\r\n },\r\n });\r\n }\r\n /**\r\n * Check if multimodal support is enabled\r\n * @returns Promise resolving to true if multimodal is enabled\r\n */\r\n async isMultimodalEnabled() {\r\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Check multimodal support\r\n * @returns Promise resolving to an object with vision and audio support\r\n */\r\n async getMultimodalSupport() {\r\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\r\n }\r\n /**\r\n * Release multimodal support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseMultimodal() {\r\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize TTS support with a vocoder model\r\n * @param params Parameters for TTS support\r\n * @param params.path Path to the vocoder model\r\n * @param params.n_batch Batch size for the vocoder model\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initVocoder({ path, n_batch: nBatch }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return await LlamaCpp.initVocoder({\r\n contextId: this.id,\r\n params: { path, n_batch: nBatch }\r\n });\r\n }\r\n /**\r\n * Check if TTS support is enabled\r\n * @returns Promise resolving to true if TTS is enabled\r\n */\r\n async isVocoderEnabled() {\r\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Get a formatted audio completion prompt\r\n * @param speakerJsonStr JSON string representing the speaker\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\r\n */\r\n async getFormattedAudioCompletion(speaker, textToSpeak) {\r\n return await LlamaCpp.getFormattedAudioCompletion({\r\n contextId: this.id,\r\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\r\n textToSpeak,\r\n });\r\n }\r\n /**\r\n * Get guide tokens for audio completion\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the guide tokens\r\n */\r\n async getAudioCompletionGuideTokens(textToSpeak) {\r\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\r\n }\r\n /**\r\n * Decode audio tokens\r\n * @param tokens Array of audio tokens\r\n * @returns Promise resolving to the decoded audio tokens\r\n */\r\n async decodeAudioTokens(tokens) {\r\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\r\n }\r\n /**\r\n * Release TTS support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseVocoder() {\r\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\r\n }\r\n async release() {\r\n return LlamaCpp.releaseContext({ contextId: this.id });\r\n }\r\n}\r\nexport async function toggleNativeLog(enabled) {\r\n return LlamaCpp.toggleNativeLog({ enabled });\r\n}\r\nexport function addNativeLogListener(listener) {\r\n logListeners.push(listener);\r\n return {\r\n remove: () => {\r\n logListeners.splice(logListeners.indexOf(listener), 1);\r\n },\r\n };\r\n}\r\nexport async function setContextLimit(limit) {\r\n return LlamaCpp.setContextLimit({ limit });\r\n}\r\nlet contextIdCounter = 0;\r\nconst contextIdRandom = () => process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000);\r\nconst modelInfoSkip = [\r\n // Large fields\r\n 'tokenizer.ggml.tokens',\r\n 'tokenizer.ggml.token_type',\r\n 'tokenizer.ggml.merges',\r\n 'tokenizer.ggml.scores',\r\n];\r\nexport async function loadLlamaModelInfo(model) {\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\r\n}\r\nconst poolTypeMap = {\r\n // -1 is unspecified as undefined\r\n none: 0,\r\n mean: 1,\r\n cls: 2,\r\n last: 3,\r\n rank: 4,\r\n};\r\nexport async function initLlama(_a, onProgress) {\r\n var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, [\"model\", \"is_model_asset\", \"pooling_type\", \"lora\", \"lora_list\"]);\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n let loraPath = lora;\r\n if (loraPath === null || loraPath === void 0 ? void 0 : loraPath.startsWith('file://'))\r\n loraPath = loraPath.slice(7);\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n const contextId = contextIdCounter + contextIdRandom();\r\n contextIdCounter += 1;\r\n let removeProgressListener = null;\r\n if (onProgress) {\r\n removeProgressListener = LlamaCpp.addListener(EVENT_ON_INIT_CONTEXT_PROGRESS, (evt) => {\r\n if (evt.contextId !== contextId)\r\n return;\r\n onProgress(evt.progress);\r\n });\r\n }\r\n const poolType = poolTypeMap[poolingType];\r\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\r\n delete rest.cache_type_k;\r\n }\r\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\r\n delete rest.cache_type_v;\r\n }\r\n const { gpu, reasonNoGPU, model: modelDetails, androidLib, } = await LlamaCpp.initContext({\r\n contextId,\r\n params: Object.assign({ model: path, is_model_asset: !!isModelAsset, use_progress_callback: !!onProgress, pooling_type: poolType, lora: loraPath, lora_list: loraAdapters }, rest),\r\n }).catch((err) => {\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n throw err;\r\n });\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n return new LlamaContext({\r\n contextId,\r\n gpu,\r\n reasonNoGPU,\r\n model: modelDetails,\r\n androidLib,\r\n });\r\n}\r\nexport async function releaseAllLlama() {\r\n return LlamaCpp.releaseAllContexts();\r\n}\r\nexport const BuildInfo = {\r\n number: '1.0.0',\r\n commit: 'capacitor-llama-cpp',\r\n};\r\n// Re-export the plugin for direct access\r\nexport { LlamaCpp };\r\n//# sourceMappingURL=index.js.map"],"names":["this","registerPlugin"],"mappings":";;;IAAA,IAAI,MAAM,GAAG,CAACA,SAAI,IAAIA,SAAI,CAAC,MAAM,KAAK,UAAU,CAAC,EAAE,CAAC,EAAE;IACtD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvF,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU;IACvE,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;IAChF,YAAY,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1F,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,QAAQ,CAAC;IACT,IAAI,OAAO,CAAC,CAAC;IACb,CAAC,CAAC;IACF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAEf;AACY,UAAC,kCAAkC,GAAG,cAAc;IAChE;IACA,MAAM,8BAA8B,GAAG,iCAAiC,CAAC;IACzE,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAC3C,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;IACpD;AACK,UAAC,QAAQ,GAAGC,mBAAc,CAAC,UAAU,EAAE;IAC5C;IACA,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB;IACA,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,GAAG,KAAK;IACnD,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH;IACA,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3Q,UAAC,iCAAiC,GAAG,mCAAmC;IACpF,MAAM,eAAe,GAAG;IACxB,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,QAAQ;IACZ,IAAI,MAAM;IACV,IAAI,MAAM;IACV,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,cAAc,KAAK;IAC1C,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,MAAM,aAAa,EAAE;IACjH,QAAQ,OAAO,CAAC,EAAE,GAAG,cAAc,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IAChG,IAAI,CAAC;IACL,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,MAAM,aAAa,EAAE;IACjH,QAAQ,OAAO,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC;IACL,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IACK,MAAM,YAAY,CAAC;IAC1B,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;IACxD,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC9B,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC;IACL;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE;IAChC,QAAQ,IAAI,IAAI,GAAG,QAAQ,CAAC;IAC5B,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC;IACL;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;IACzC,QAAQ,OAAO,QAAQ,CAAC,WAAW,CAAC;IACpC,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,QAAQ;IACpB,YAAY,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE;IAC7F,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;IACpD,IAAI,CAAC;IACL,IAAI,gBAAgB,GAAG;IACvB,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACnD,QAAQ,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAClJ,IAAI,CAAC;IACL,IAAI,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,QAAQ,IAAI,EAAE,CAAC;IACf,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;IAC9B,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;IAC3C,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IAC5C,gBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;IAC1D,oBAAoB,IAAI,EAAE,CAAC;IAC3B;IACA,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;IACnD,wBAAwB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;IAC7G,wBAAwB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClG,4BAA4B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,wBAAwB,OAAO;IAC/B,4BAA4B,IAAI,EAAE,MAAM;IACxC,4BAA4B,IAAI,EAAE,iCAAiC;IACnE,yBAAyB,CAAC;IAC1B,oBAAoB,CAAC;IACrB,yBAAyB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;IAC1D,wBAAwB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC5D,wBAAwB,IAAI,CAAC,KAAK;IAClC,4BAA4B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvE,wBAAwB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACjD,wBAAwB,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;IAChE,4BAA4B,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnF,wBAAwB,CAAC;IACzB,wBAAwB,IAAI,KAAK,CAAC,GAAG,EAAE;IACvC,4BAA4B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5E,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,wBAAwB,CAAC;IACzB,6BAA6B,IAAI,KAAK,CAAC,IAAI,EAAE;IAC7C,4BAA4B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,wBAAwB,CAAC;IACzB,wBAAwB,OAAO;IAC/B,4BAA4B,IAAI,EAAE,MAAM;IACxC,4BAA4B,IAAI,EAAE,iCAAiC;IACnE,yBAAyB,CAAC;IAC1B,oBAAoB,CAAC;IACrB,oBAAoB,OAAO,IAAI,CAAC;IAChC,gBAAgB,CAAC,CAAC,CAAC;IACnB,gBAAgB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,YAAY,CAAC;IACb,YAAY,OAAO,GAAG,CAAC;IACvB,QAAQ,CAAC,CAAC,CAAC;IACX,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnH,QAAQ,IAAI,IAAI,CAAC;IACjB,QAAQ,IAAI,QAAQ;IACpB,YAAY,IAAI,GAAG,QAAQ,CAAC;IAC5B,QAAQ,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACjH,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC;IACvD,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC1C,YAAY,YAAY,EAAE,IAAI;IAC9B,YAAY,MAAM,EAAE;IACpB,gBAAgB,KAAK,EAAE,QAAQ;IAC/B,gBAAgB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS;IAChF,gBAAgB,KAAK,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS;IAChI,gBAAgB,mBAAmB,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAC9J,sBAAsB,SAAS;IAC/B,gBAAgB,WAAW,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW;IAC/F,gBAAgB,eAAe,EAAE,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;IACpJ,gBAAgB,qBAAqB,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,qBAAqB;IACnH,gBAAgB,GAAG,EAAE,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG;IAC1L,gBAAgB,oBAAoB,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;IAC/M,oBAAoB,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,oBAAoB,OAAO,GAAG,CAAC;IAC/B,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS;IACnC,aAAa;IACb,SAAS,CAAC,CAAC;IACX,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,YAAY,OAAO;IACnB,gBAAgB,IAAI,EAAE,YAAY;IAClC,gBAAgB,MAAM,EAAE,MAAM;IAC9B,gBAAgB,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;IAChD,gBAAgB,WAAW,EAAE,UAAU;IACvC,aAAa,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC;IACnC,QAAQ,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;IACnC,QAAQ,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD,QAAQ,WAAW,CAAC,WAAW,GAAG,UAAU,CAAC;IAC7C,QAAQ,OAAO,WAAW,CAAC;IAC3B,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;IACvC,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5I,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;IAC7B,YAAY,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,EAAE;IAC9H,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;IAC/D,gBAAgB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/C,gBAAgB,eAAe,EAAE,MAAM,CAAC,eAAe;IACvD,gBAAgB,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnE,gBAAgB,GAAG,EAAE,MAAM,CAAC,GAAG;IAC/B,gBAAgB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;IACjE,aAAa,CAAC,CAAC;IACf,YAAY,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE;IAClD,gBAAgB,MAAM,WAAW,GAAG,eAAe,CAAC;IACpD,gBAAgB,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IAC/D,gBAAgB,IAAI,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ;IAC/D,oBAAoB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IACvE,gBAAgB,IAAI,WAAW,CAAC,OAAO;IACvC,oBAAoB,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAC/D,gBAAgB,IAAI,OAAO,WAAW,CAAC,YAAY,KAAK,SAAS;IACjE,oBAAoB,YAAY,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IACzE,gBAAgB,IAAI,WAAW,CAAC,gBAAgB;IAChD,oBAAoB,YAAY,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IACjF,gBAAgB,IAAI,WAAW,CAAC,gBAAgB;IAChD,oBAAoB,YAAY,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IACjF,gBAAgB,IAAI,WAAW,CAAC,gBAAgB,EAAE;IAClD,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI;IAC1C,wBAAwB,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;IAC/C,oBAAoB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5E,gBAAgB,CAAC;IACjB,gBAAgB,IAAI,WAAW,CAAC,SAAS,EAAE;IAC3C,oBAAoB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IACvE,gBAAgB,CAAC;IACjB,YAAY,CAAC;IACb,iBAAiB,IAAI,eAAe,CAAC,IAAI,KAAK,YAAY,EAAE;IAC5D,gBAAgB,MAAM,eAAe,GAAG,eAAe,CAAC;IACxD,gBAAgB,YAAY,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC;IACnE,gBAAgB,IAAI,eAAe,CAAC,SAAS,EAAE;IAC/C,oBAAoB,YAAY,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IAC3E,gBAAgB,CAAC;IACjB,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,aAAa;IACb,YAAY,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACtD,QAAQ,CAAC;IACT;IACA,QAAQ,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;IAC7D,YAAY,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC1D,QAAQ,CAAC;IACT,QAAQ,IAAI,YAAY,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;IACnE,YAAY,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACrE,YAAY,IAAI,UAAU;IAC1B,gBAAgB,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtE,QAAQ,CAAC;IACT,QAAQ,IAAI,aAAa,GAAG,QAAQ;IACpC,YAAY,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,KAAK;IAC1D,gBAAgB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IACvD,gBAAgB,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE;IACzC,oBAAoB,OAAO;IAC3B,gBAAgB,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,CAAC,CAAC,CAAC;IACf,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM;IAChC,YAAY,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAClD,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1F,QAAQ,OAAO,OAAO;IACtB,aAAa,IAAI,CAAC,CAAC,gBAAgB,KAAK;IACxC,YAAY,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IACjG,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,YAAY,OAAO,gBAAgB,CAAC;IACpC,QAAQ,CAAC,CAAC;IACV,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK;IAC5B,YAAY,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IACjG,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,YAAY,MAAM,GAAG,CAAC;IACtB,QAAQ,CAAC,CAAC,CAAC;IACX,IAAI,CAAC;IACL,IAAI,cAAc,GAAG;IACrB,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;IACtD,QAAQ,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC;IACL,IAAI,UAAU,CAAC,MAAM,EAAE;IACvB,QAAQ,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;IACL,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;IAC5B,QAAQ,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;IAC3C,QAAQ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;IAC9C,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,KAAK;IACjB,YAAY,SAAS;IACrB,YAAY,MAAM,EAAE,MAAM,IAAI,EAAE;IAChC,SAAS,CAAC,CAAC;IACX;IACA,QAAQ,OAAO,OAAO;IACtB,aAAa,GAAG,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/G,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC;IACL,IAAI,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAChC,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpF,QAAQ,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpG,QAAQ,OAAO;IACf,YAAY,SAAS;IACrB,YAAY,SAAS;IACrB,YAAY,YAAY;IACxB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,SAAS,CAAC;IACV,IAAI,CAAC;IACL,IAAI,MAAM,iBAAiB,CAAC,QAAQ,EAAE;IACtC,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;IAC9B,QAAQ,IAAI,QAAQ;IACpB,YAAY,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAChD,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACrD,gBAAgB,MAAM,EAAE,CAAC,CAAC,MAAM;IAChC,aAAa,CAAC,CAAC,CAAC;IAChB,QAAQ,OAAO,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC;IACL,IAAI,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,OAAO,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;IACL,IAAI,MAAM,qBAAqB,GAAG;IAClC,QAAQ,OAAO,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE;IACrD,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC;IACvC,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,MAAM,EAAE;IACpB,gBAAgB,IAAI;IACpB,gBAAgB,OAAO,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI;IAC7E,aAAa;IACb,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,mBAAmB,GAAG;IAChC,QAAQ,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,oBAAoB,GAAG;IACjC,QAAQ,OAAO,MAAM,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACjD,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC;IAC1C,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;IAC7C,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,OAAO,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE;IAC5D,QAAQ,OAAO,MAAM,QAAQ,CAAC,2BAA2B,CAAC;IAC1D,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;IAClE,YAAY,WAAW;IACvB,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,6BAA6B,CAAC,WAAW,EAAE;IACrD,QAAQ,OAAO,MAAM,QAAQ,CAAC,6BAA6B,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACjG,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE;IACpC,QAAQ,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,cAAc,GAAG;IAC3B,QAAQ,OAAO,MAAM,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC;IACL,IAAI,MAAM,OAAO,GAAG;IACpB,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;IACL,CAAC;IACM,eAAe,eAAe,CAAC,OAAO,EAAE;IAC/C,IAAI,OAAO,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACM,SAAS,oBAAoB,CAAC,QAAQ,EAAE;IAC/C,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,OAAO;IACX,QAAQ,MAAM,EAAE,MAAM;IACtB,YAAY,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC;IACT,KAAK,CAAC;IACN,CAAC;IACM,eAAe,eAAe,CAAC,KAAK,EAAE;IAC7C,IAAI,OAAO,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG;IACtB;IACA,IAAI,uBAAuB;IAC3B,IAAI,2BAA2B;IAC/B,IAAI,uBAAuB;IAC3B,IAAI,uBAAuB;IAC3B,CAAC,CAAC;IACK,eAAe,kBAAkB,CAAC,KAAK,EAAE;IAChD,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;IACrB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,WAAW,GAAG;IACpB;IACA,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;IACK,eAAe,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE;IAChD,IAAI,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,GAAG,MAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAChM,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;IACrB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;IAC1F,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;IAC1B,IAAI,IAAI,QAAQ;IAChB,QAAQ,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAC5C,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACjD,YAAY,MAAM,EAAE,CAAC,CAAC,MAAM;IAC5B,SAAS,CAAC,CAAC,CAAC;IACZ,IAAI,MAAM,SAAS,GAAG,gBAAgB,GAAG,eAAe,EAAE,CAAC;IAC3D,IAAI,gBAAgB,IAAI,CAAC,CAAC;IAC1B,IAAI,IAAI,sBAAsB,GAAG,IAAI,CAAC;IACtC,IAAI,IAAI,UAAU,EAAE;IACpB,QAAQ,sBAAsB,GAAG,QAAQ,CAAC,WAAW,CAAC,8BAA8B,EAAE,CAAC,GAAG,KAAK;IAC/F,YAAY,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;IAC3C,gBAAgB,OAAO;IACvB,YAAY,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,CAAC,CAAC;IACX,IAAI,CAAC;IACL,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;IAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9G,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC;IACL,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;IAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9G,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC;IACL,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC;IAC9F,QAAQ,SAAS;IACjB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;IAC1L,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;IACtB,QAAQ,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;IACxH,QAAQ,MAAM,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC,CAAC;IACP,IAAI,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;IACpH,IAAI,OAAO,IAAI,YAAY,CAAC;IAC5B,QAAQ,SAAS;IACjB,QAAQ,GAAG;IACX,QAAQ,WAAW;IACnB,QAAQ,KAAK,EAAE,YAAY;IAC3B,QAAQ,UAAU;IAClB,KAAK,CAAC,CAAC;IACP,CAAC;IACM,eAAe,eAAe,GAAG;IACxC,IAAI,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;AACW,UAAC,SAAS,GAAG;IACzB,IAAI,MAAM,EAAE,OAAO;IACnB,IAAI,MAAM,EAAE,qBAAqB;IACjC;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/index.js"],"sourcesContent":["var _a, _b, _c;\r\nimport { __rest } from \"tslib\";\r\nimport { registerPlugin } from '@capacitor/core';\r\n// Constants\r\nexport const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER = '<__media__>';\r\n// Event names\r\nconst EVENT_ON_INIT_CONTEXT_PROGRESS = '@LlamaCpp_onInitContextProgress';\r\nconst EVENT_ON_TOKEN = '@LlamaCpp_onToken';\r\nconst EVENT_ON_NATIVE_LOG = '@LlamaCpp_onNativeLog';\r\n// Register the plugin\r\nconst LlamaCpp = registerPlugin('LlamaCpp');\r\n// Log listeners management\r\nconst logListeners = [];\r\n// Set up native log listener\r\nLlamaCpp.addListener(EVENT_ON_NATIVE_LOG, (evt) => {\r\n logListeners.forEach((listener) => listener(evt.level, evt.text));\r\n});\r\n// Trigger unset to use default log callback\r\n(_c = (_b = (_a = LlamaCpp === null || LlamaCpp === void 0 ? void 0 : LlamaCpp.toggleNativeLog) === null || _a === void 0 ? void 0 : _a.call(LlamaCpp, { enabled: false })) === null || _b === void 0 ? void 0 : _b.catch) === null || _c === void 0 ? void 0 : _c.call(_b, () => { });\r\nexport const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER = LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER;\r\nconst validCacheTypes = [\r\n 'f16',\r\n 'f32',\r\n 'bf16',\r\n 'q8_0',\r\n 'q4_0',\r\n 'q4_1',\r\n 'iq4_nl',\r\n 'q5_0',\r\n 'q5_1',\r\n];\r\nconst getJsonSchema = (responseFormat) => {\r\n var _a;\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_schema') {\r\n return (_a = responseFormat.json_schema) === null || _a === void 0 ? void 0 : _a.schema;\r\n }\r\n if ((responseFormat === null || responseFormat === void 0 ? void 0 : responseFormat.type) === 'json_object') {\r\n return responseFormat.schema || {};\r\n }\r\n return null;\r\n};\r\nexport class LlamaContext {\r\n constructor({ contextId, gpu, reasonNoGPU, model }) {\r\n this.gpu = false;\r\n this.reasonNoGPU = '';\r\n this.id = contextId;\r\n this.gpu = gpu;\r\n this.reasonNoGPU = reasonNoGPU;\r\n this.model = model;\r\n }\r\n /**\r\n * Load cached prompt & completion state from a file.\r\n */\r\n async loadSession(filepath) {\r\n let path = filepath;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.loadSession({ contextId: this.id, filepath: path });\r\n }\r\n /**\r\n * Save current cached prompt & completion state to a file.\r\n */\r\n async saveSession(filepath, options) {\r\n return LlamaCpp.saveSession({\r\n contextId: this.id,\r\n filepath,\r\n size: (options === null || options === void 0 ? void 0 : options.tokenSize) || -1\r\n });\r\n }\r\n isLlamaChatSupported() {\r\n return !!this.model.chatTemplates.llamaChat;\r\n }\r\n isJinjaSupported() {\r\n const { minja } = this.model.chatTemplates;\r\n return !!(minja === null || minja === void 0 ? void 0 : minja.toolUse) || !!(minja === null || minja === void 0 ? void 0 : minja.default);\r\n }\r\n async getFormattedChat(messages, template, params) {\r\n var _a;\r\n const mediaPaths = [];\r\n const chat = messages.map((msg) => {\r\n if (Array.isArray(msg.content)) {\r\n const content = msg.content.map((part) => {\r\n var _a;\r\n // Handle multimodal content\r\n if (part.type === 'image_url') {\r\n let path = ((_a = part.image_url) === null || _a === void 0 ? void 0 : _a.url) || '';\r\n if (path === null || path === void 0 ? void 0 : path.startsWith('file://'))\r\n path = path.slice(7);\r\n mediaPaths.push(path);\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n else if (part.type === 'input_audio') {\r\n const { input_audio: audio } = part;\r\n if (!audio)\r\n throw new Error('input_audio is required');\r\n const { format } = audio;\r\n if (format != 'wav' && format != 'mp3') {\r\n throw new Error(`Unsupported audio format: ${format}`);\r\n }\r\n if (audio.url) {\r\n const path = audio.url.replace(/file:\\/\\//, '');\r\n mediaPaths.push(path);\r\n }\r\n else if (audio.data) {\r\n mediaPaths.push(audio.data);\r\n }\r\n return {\r\n type: 'text',\r\n text: RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER,\r\n };\r\n }\r\n return part;\r\n });\r\n return Object.assign(Object.assign({}, msg), { content });\r\n }\r\n return msg;\r\n });\r\n const useJinja = this.isJinjaSupported() && (params === null || params === void 0 ? void 0 : params.jinja);\r\n let tmpl;\r\n if (template)\r\n tmpl = template; // Force replace if provided\r\n const jsonSchema = getJsonSchema(params === null || params === void 0 ? void 0 : params.response_format);\r\n const result = await LlamaCpp.getFormattedChat({\r\n contextId: this.id,\r\n messages: JSON.stringify(chat),\r\n chatTemplate: tmpl,\r\n params: {\r\n jinja: useJinja,\r\n json_schema: jsonSchema ? JSON.stringify(jsonSchema) : undefined,\r\n tools: (params === null || params === void 0 ? void 0 : params.tools) ? JSON.stringify(params.tools) : undefined,\r\n parallel_tool_calls: (params === null || params === void 0 ? void 0 : params.parallel_tool_calls) ? JSON.stringify(params.parallel_tool_calls)\r\n : undefined,\r\n tool_choice: params === null || params === void 0 ? void 0 : params.tool_choice,\r\n enable_thinking: (_a = params === null || params === void 0 ? void 0 : params.enable_thinking) !== null && _a !== void 0 ? _a : true,\r\n add_generation_prompt: params === null || params === void 0 ? void 0 : params.add_generation_prompt,\r\n now: typeof (params === null || params === void 0 ? void 0 : params.now) === 'number' ? params.now.toString() : params === null || params === void 0 ? void 0 : params.now,\r\n chat_template_kwargs: (params === null || params === void 0 ? void 0 : params.chat_template_kwargs) ? JSON.stringify(Object.entries(params.chat_template_kwargs).reduce((acc, [key, value]) => {\r\n acc[key] = JSON.stringify(value); // Each value is a stringified JSON object\r\n return acc;\r\n }, {})) : undefined,\r\n },\r\n });\r\n if (!useJinja) {\r\n return {\r\n type: 'llama-chat',\r\n prompt: result,\r\n has_media: mediaPaths.length > 0,\r\n media_paths: mediaPaths,\r\n };\r\n }\r\n const jinjaResult = result;\r\n jinjaResult.type = 'jinja';\r\n jinjaResult.has_media = mediaPaths.length > 0;\r\n jinjaResult.media_paths = mediaPaths;\r\n return jinjaResult;\r\n }\r\n /**\r\n * Generate a completion based on the provided parameters\r\n * @param params Completion parameters including prompt or messages\r\n * @param callback Optional callback for token-by-token streaming\r\n * @returns Promise resolving to the completion result\r\n *\r\n * Note: For multimodal support, you can include an media_paths parameter.\r\n * This will process the images and add them to the context before generating text.\r\n * Multimodal support must be enabled via initMultimodal() first.\r\n */\r\n async completion(params, callback) {\r\n const nativeParams = Object.assign(Object.assign({}, params), { prompt: params.prompt || '', emit_partial_completion: !!callback });\r\n if (params.messages) {\r\n const formattedResult = await this.getFormattedChat(params.messages, params.chat_template || params.chatTemplate, {\r\n jinja: params.jinja,\r\n tools: params.tools,\r\n parallel_tool_calls: params.parallel_tool_calls,\r\n tool_choice: params.tool_choice,\r\n enable_thinking: params.enable_thinking,\r\n add_generation_prompt: params.add_generation_prompt,\r\n now: params.now,\r\n chat_template_kwargs: params.chat_template_kwargs,\r\n });\r\n if (formattedResult.type === 'jinja') {\r\n const jinjaResult = formattedResult;\r\n nativeParams.prompt = jinjaResult.prompt || '';\r\n if (typeof jinjaResult.chat_format === 'number')\r\n nativeParams.chat_format = jinjaResult.chat_format;\r\n if (jinjaResult.grammar)\r\n nativeParams.grammar = jinjaResult.grammar;\r\n if (typeof jinjaResult.grammar_lazy === 'boolean')\r\n nativeParams.grammar_lazy = jinjaResult.grammar_lazy;\r\n if (jinjaResult.grammar_triggers)\r\n nativeParams.grammar_triggers = jinjaResult.grammar_triggers;\r\n if (jinjaResult.preserved_tokens)\r\n nativeParams.preserved_tokens = jinjaResult.preserved_tokens;\r\n if (jinjaResult.additional_stops) {\r\n if (!nativeParams.stop)\r\n nativeParams.stop = [];\r\n nativeParams.stop.push(...jinjaResult.additional_stops);\r\n }\r\n if (jinjaResult.has_media) {\r\n nativeParams.media_paths = jinjaResult.media_paths;\r\n }\r\n }\r\n else if (formattedResult.type === 'llama-chat') {\r\n const llamaChatResult = formattedResult;\r\n nativeParams.prompt = llamaChatResult.prompt || '';\r\n if (llamaChatResult.has_media) {\r\n nativeParams.media_paths = llamaChatResult.media_paths;\r\n }\r\n }\r\n }\r\n else {\r\n nativeParams.prompt = params.prompt || '';\r\n }\r\n // If media_paths were explicitly provided or extracted from messages, use them\r\n if (!nativeParams.media_paths && params.media_paths) {\r\n nativeParams.media_paths = params.media_paths;\r\n }\r\n if (nativeParams.response_format && !nativeParams.grammar) {\r\n const jsonSchema = getJsonSchema(params.response_format);\r\n if (jsonSchema)\r\n nativeParams.json_schema = JSON.stringify(jsonSchema);\r\n }\r\n let tokenListener = callback &&\r\n LlamaCpp.addListener(EVENT_ON_TOKEN, (evt) => {\r\n const { contextId, tokenResult } = evt;\r\n if (contextId !== this.id)\r\n return;\r\n callback(tokenResult);\r\n });\r\n if (!nativeParams.prompt)\r\n throw new Error('Prompt is required');\r\n const promise = LlamaCpp.completion({ contextId: this.id, params: nativeParams });\r\n return promise\r\n .then((completionResult) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n return completionResult;\r\n })\r\n .catch((err) => {\r\n tokenListener === null || tokenListener === void 0 ? void 0 : tokenListener.remove();\r\n tokenListener = null;\r\n throw err;\r\n });\r\n }\r\n stopCompletion() {\r\n return LlamaCpp.stopCompletion({ contextId: this.id });\r\n }\r\n /**\r\n * Tokenize text or text with images\r\n * @param text Text to tokenize\r\n * @param params.media_paths Array of image paths to tokenize (if multimodal is enabled)\r\n * @returns Promise resolving to the tokenize result\r\n */\r\n tokenize(text, { media_paths: mediaPaths, } = {}) {\r\n return LlamaCpp.tokenize({ contextId: this.id, text, imagePaths: mediaPaths });\r\n }\r\n detokenize(tokens) {\r\n return LlamaCpp.detokenize({ contextId: this.id, tokens });\r\n }\r\n embedding(text, params) {\r\n return LlamaCpp.embedding({ contextId: this.id, text, params: params || {} });\r\n }\r\n /**\r\n * Rerank documents based on relevance to a query\r\n * @param query The query text to rank documents against\r\n * @param documents Array of document texts to rank\r\n * @param params Optional reranking parameters\r\n * @returns Promise resolving to an array of ranking results with scores and indices\r\n */\r\n async rerank(query, documents, params) {\r\n const results = await LlamaCpp.rerank({\r\n contextId: this.id,\r\n query,\r\n documents,\r\n params: params || {}\r\n });\r\n // Sort by score descending and add document text if requested\r\n return results\r\n .map((result) => (Object.assign(Object.assign({}, result), { document: documents[result.index] })))\r\n .sort((a, b) => b.score - a.score);\r\n }\r\n async bench(pp, tg, pl, nr) {\r\n const result = await LlamaCpp.bench({ contextId: this.id, pp, tg, pl, nr });\r\n const [modelDesc, modelSize, modelNParams, ppAvg, ppStd, tgAvg, tgStd] = JSON.parse(result);\r\n return {\r\n modelDesc,\r\n modelSize,\r\n modelNParams,\r\n ppAvg,\r\n ppStd,\r\n tgAvg,\r\n tgStd,\r\n };\r\n }\r\n async applyLoraAdapters(loraList) {\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n return LlamaCpp.applyLoraAdapters({ contextId: this.id, loraAdapters });\r\n }\r\n async removeLoraAdapters() {\r\n return LlamaCpp.removeLoraAdapters({ contextId: this.id });\r\n }\r\n async getLoadedLoraAdapters() {\r\n return LlamaCpp.getLoadedLoraAdapters({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize multimodal support with a mmproj file\r\n * @param params Parameters for multimodal support\r\n * @param params.path Path to the multimodal projector file\r\n * @param params.use_gpu Whether to use GPU\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initMultimodal({ path, use_gpu: useGpu, }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.initMultimodal({\r\n contextId: this.id,\r\n params: {\r\n path,\r\n use_gpu: useGpu !== null && useGpu !== void 0 ? useGpu : true,\r\n },\r\n });\r\n }\r\n /**\r\n * Check if multimodal support is enabled\r\n * @returns Promise resolving to true if multimodal is enabled\r\n */\r\n async isMultimodalEnabled() {\r\n return await LlamaCpp.isMultimodalEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Check multimodal support\r\n * @returns Promise resolving to an object with vision and audio support\r\n */\r\n async getMultimodalSupport() {\r\n return await LlamaCpp.getMultimodalSupport({ contextId: this.id });\r\n }\r\n /**\r\n * Release multimodal support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseMultimodal() {\r\n return await LlamaCpp.releaseMultimodal({ contextId: this.id });\r\n }\r\n /**\r\n * Initialize TTS support with a vocoder model\r\n * @param params Parameters for TTS support\r\n * @param params.path Path to the vocoder model\r\n * @param params.n_batch Batch size for the vocoder model\r\n * @returns Promise resolving to true if initialization was successful\r\n */\r\n async initVocoder({ path, n_batch: nBatch }) {\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return await LlamaCpp.initVocoder({\r\n contextId: this.id,\r\n params: { path, n_batch: nBatch }\r\n });\r\n }\r\n /**\r\n * Check if TTS support is enabled\r\n * @returns Promise resolving to true if TTS is enabled\r\n */\r\n async isVocoderEnabled() {\r\n return await LlamaCpp.isVocoderEnabled({ contextId: this.id });\r\n }\r\n /**\r\n * Get a formatted audio completion prompt\r\n * @param speakerJsonStr JSON string representing the speaker\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the formatted audio completion result with prompt and grammar\r\n */\r\n async getFormattedAudioCompletion(speaker, textToSpeak) {\r\n return await LlamaCpp.getFormattedAudioCompletion({\r\n contextId: this.id,\r\n speakerJsonStr: speaker ? JSON.stringify(speaker) : '',\r\n textToSpeak,\r\n });\r\n }\r\n /**\r\n * Get guide tokens for audio completion\r\n * @param textToSpeak Text to speak\r\n * @returns Promise resolving to the guide tokens\r\n */\r\n async getAudioCompletionGuideTokens(textToSpeak) {\r\n return await LlamaCpp.getAudioCompletionGuideTokens({ contextId: this.id, textToSpeak });\r\n }\r\n /**\r\n * Decode audio tokens\r\n * @param tokens Array of audio tokens\r\n * @returns Promise resolving to the decoded audio tokens\r\n */\r\n async decodeAudioTokens(tokens) {\r\n return await LlamaCpp.decodeAudioTokens({ contextId: this.id, tokens });\r\n }\r\n /**\r\n * Release TTS support\r\n * @returns Promise resolving to void\r\n */\r\n async releaseVocoder() {\r\n return await LlamaCpp.releaseVocoder({ contextId: this.id });\r\n }\r\n async release() {\r\n return LlamaCpp.releaseContext({ contextId: this.id });\r\n }\r\n}\r\nexport async function toggleNativeLog(enabled) {\r\n return LlamaCpp.toggleNativeLog({ enabled });\r\n}\r\nexport function addNativeLogListener(listener) {\r\n logListeners.push(listener);\r\n return {\r\n remove: () => {\r\n logListeners.splice(logListeners.indexOf(listener), 1);\r\n },\r\n };\r\n}\r\nexport async function setContextLimit(limit) {\r\n return LlamaCpp.setContextLimit({ limit });\r\n}\r\nlet contextIdCounter = 0;\r\nconst contextIdRandom = () => process.env.NODE_ENV === 'test' ? 0 : Math.floor(Math.random() * 100000);\r\nconst modelInfoSkip = [\r\n // Large fields\r\n 'tokenizer.ggml.tokens',\r\n 'tokenizer.ggml.token_type',\r\n 'tokenizer.ggml.merges',\r\n 'tokenizer.ggml.scores',\r\n];\r\nexport async function loadLlamaModelInfo(model) {\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n return LlamaCpp.modelInfo({ path, skip: modelInfoSkip });\r\n}\r\nconst poolTypeMap = {\r\n // -1 is unspecified as undefined\r\n none: 0,\r\n mean: 1,\r\n cls: 2,\r\n last: 3,\r\n rank: 4,\r\n};\r\nexport async function initLlama(_a, onProgress) {\r\n var { model, is_model_asset: isModelAsset, pooling_type: poolingType, lora, lora_list: loraList } = _a, rest = __rest(_a, [\"model\", \"is_model_asset\", \"pooling_type\", \"lora\", \"lora_list\"]);\r\n let path = model;\r\n if (path.startsWith('file://'))\r\n path = path.slice(7);\r\n let loraPath = lora;\r\n if (loraPath === null || loraPath === void 0 ? void 0 : loraPath.startsWith('file://'))\r\n loraPath = loraPath.slice(7);\r\n let loraAdapters = [];\r\n if (loraList)\r\n loraAdapters = loraList.map((l) => ({\r\n path: l.path.replace(/file:\\/\\//, ''),\r\n scaled: l.scaled,\r\n }));\r\n const contextId = contextIdCounter + contextIdRandom();\r\n contextIdCounter += 1;\r\n let removeProgressListener = null;\r\n if (onProgress) {\r\n removeProgressListener = LlamaCpp.addListener(EVENT_ON_INIT_CONTEXT_PROGRESS, (evt) => {\r\n if (evt.contextId !== contextId)\r\n return;\r\n onProgress(evt.progress);\r\n });\r\n }\r\n const poolType = poolTypeMap[poolingType];\r\n if (rest.cache_type_k && !validCacheTypes.includes(rest.cache_type_k)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache K type: ${rest.cache_type_k}, falling back to f16`);\r\n delete rest.cache_type_k;\r\n }\r\n if (rest.cache_type_v && !validCacheTypes.includes(rest.cache_type_v)) {\r\n console.warn(`[LlamaCpp] initLlama: Invalid cache V type: ${rest.cache_type_v}, falling back to f16`);\r\n delete rest.cache_type_v;\r\n }\r\n const { gpu, reasonNoGPU, model: modelDetails, androidLib, } = await LlamaCpp.initContext({\r\n contextId,\r\n params: Object.assign({ model: path, is_model_asset: !!isModelAsset, use_progress_callback: !!onProgress, pooling_type: poolType, lora: loraPath, lora_list: loraAdapters }, rest),\r\n }).catch((err) => {\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n throw err;\r\n });\r\n removeProgressListener === null || removeProgressListener === void 0 ? void 0 : removeProgressListener.remove();\r\n return new LlamaContext({\r\n contextId,\r\n gpu,\r\n reasonNoGPU,\r\n model: modelDetails,\r\n androidLib,\r\n });\r\n}\r\nexport async function releaseAllLlama() {\r\n return LlamaCpp.releaseAllContexts();\r\n}\r\nexport const BuildInfo = {\r\n number: '1.0.0',\r\n commit: 'capacitor-llama-cpp',\r\n};\r\n// Re-export the plugin for direct access\r\nexport { LlamaCpp };\r\n//# sourceMappingURL=index.js.map"],"names":["registerPlugin","__rest"],"mappings":";;;IAAA,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IAGf;AACY,UAAC,kCAAkC,GAAG,cAAc;IAChE;IACA,MAAM,8BAA8B,GAAG,iCAAiC,CAAC;IACzE,MAAM,cAAc,GAAG,mBAAmB,CAAC;IAC3C,MAAM,mBAAmB,GAAG,uBAAuB,CAAC;IACpD;AACK,UAAC,QAAQ,GAAGA,mBAAc,CAAC,UAAU,EAAE;IAC5C;IACA,MAAM,YAAY,GAAG,EAAE,CAAC;IACxB;IACA,QAAQ,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,GAAG,KAAK;IACnD,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;IACH;IACA,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,KAAK,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AAC3Q,UAAC,iCAAiC,GAAG,mCAAmC;IACpF,MAAM,eAAe,GAAG;IACxB,IAAI,KAAK;IACT,IAAI,KAAK;IACT,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,MAAM;IACV,IAAI,QAAQ;IACZ,IAAI,MAAM;IACV,IAAI,MAAM;IACV,CAAC,CAAC;IACF,MAAM,aAAa,GAAG,CAAC,cAAc,KAAK;IAC1C,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,MAAM,aAAa,EAAE;IACjH,QAAQ,OAAO,CAAC,EAAE,GAAG,cAAc,CAAC,WAAW,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;IAChG,IAAI,CAAC;IACL,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,IAAI,cAAc,KAAK,MAAM,GAAG,MAAM,GAAG,cAAc,CAAC,IAAI,MAAM,aAAa,EAAE;IACjH,QAAQ,OAAO,cAAc,CAAC,MAAM,IAAI,EAAE,CAAC;IAC3C,IAAI,CAAC;IACL,IAAI,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;IACK,MAAM,YAAY,CAAC;IAC1B,IAAI,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE;IACxD,QAAQ,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IACzB,QAAQ,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC9B,QAAQ,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IAC5B,QAAQ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACvB,QAAQ,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACvC,QAAQ,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IAC3B,IAAI,CAAC;IACL;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE;IAChC,QAAQ,IAAI,IAAI,GAAG,QAAQ,CAAC;IAC5B,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,IAAI,CAAC;IACL;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE;IACzC,QAAQ,OAAO,QAAQ,CAAC,WAAW,CAAC;IACpC,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,QAAQ;IACpB,YAAY,IAAI,EAAE,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,KAAK,EAAE;IAC7F,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL,IAAI,oBAAoB,GAAG;IAC3B,QAAQ,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;IACpD,IAAI,CAAC;IACL,IAAI,gBAAgB,GAAG;IACvB,QAAQ,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;IACnD,QAAQ,OAAO,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;IAClJ,IAAI,CAAC;IACL,IAAI,MAAM,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE;IACvD,QAAQ,IAAI,EAAE,CAAC;IACf,QAAQ,MAAM,UAAU,GAAG,EAAE,CAAC;IAC9B,QAAQ,MAAM,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK;IAC3C,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;IAC5C,gBAAgB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK;IAC1D,oBAAoB,IAAI,EAAE,CAAC;IAC3B;IACA,oBAAoB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;IACnD,wBAAwB,IAAI,IAAI,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC;IAC7G,wBAAwB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClG,4BAA4B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjD,wBAAwB,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9C,wBAAwB,OAAO;IAC/B,4BAA4B,IAAI,EAAE,MAAM;IACxC,4BAA4B,IAAI,EAAE,iCAAiC;IACnE,yBAAyB,CAAC;IAC1B,oBAAoB,CAAC;IACrB,yBAAyB,IAAI,IAAI,CAAC,IAAI,KAAK,aAAa,EAAE;IAC1D,wBAAwB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAC5D,wBAAwB,IAAI,CAAC,KAAK;IAClC,4BAA4B,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACvE,wBAAwB,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;IACjD,wBAAwB,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,EAAE;IAChE,4BAA4B,MAAM,IAAI,KAAK,CAAC,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACnF,wBAAwB,CAAC;IACzB,wBAAwB,IAAI,KAAK,CAAC,GAAG,EAAE;IACvC,4BAA4B,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC5E,4BAA4B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClD,wBAAwB,CAAC;IACzB,6BAA6B,IAAI,KAAK,CAAC,IAAI,EAAE;IAC7C,4BAA4B,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,wBAAwB,CAAC;IACzB,wBAAwB,OAAO;IAC/B,4BAA4B,IAAI,EAAE,MAAM;IACxC,4BAA4B,IAAI,EAAE,iCAAiC;IACnE,yBAAyB,CAAC;IAC1B,oBAAoB,CAAC;IACrB,oBAAoB,OAAO,IAAI,CAAC;IAChC,gBAAgB,CAAC,CAAC,CAAC;IACnB,gBAAgB,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1E,YAAY,CAAC;IACb,YAAY,OAAO,GAAG,CAAC;IACvB,QAAQ,CAAC,CAAC,CAAC;IACX,QAAQ,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,EAAE,KAAK,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnH,QAAQ,IAAI,IAAI,CAAC;IACjB,QAAQ,IAAI,QAAQ;IACpB,YAAY,IAAI,GAAG,QAAQ,CAAC;IAC5B,QAAQ,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,CAAC,CAAC;IACjH,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,gBAAgB,CAAC;IACvD,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;IAC1C,YAAY,YAAY,EAAE,IAAI;IAC9B,YAAY,MAAM,EAAE;IACpB,gBAAgB,KAAK,EAAE,QAAQ;IAC/B,gBAAgB,WAAW,EAAE,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,SAAS;IAChF,gBAAgB,KAAK,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS;IAChI,gBAAgB,mBAAmB,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,mBAAmB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,mBAAmB,CAAC;IAC9J,sBAAsB,SAAS;IAC/B,gBAAgB,WAAW,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,WAAW;IAC/F,gBAAgB,eAAe,EAAE,CAAC,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,eAAe,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,EAAE,GAAG,IAAI;IACpJ,gBAAgB,qBAAqB,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,qBAAqB;IACnH,gBAAgB,GAAG,EAAE,QAAQ,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,GAAG;IAC1L,gBAAgB,oBAAoB,EAAE,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,oBAAoB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK;IAC/M,oBAAoB,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrD,oBAAoB,OAAO,GAAG,CAAC;IAC/B,gBAAgB,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,SAAS;IACnC,aAAa;IACb,SAAS,CAAC,CAAC;IACX,QAAQ,IAAI,CAAC,QAAQ,EAAE;IACvB,YAAY,OAAO;IACnB,gBAAgB,IAAI,EAAE,YAAY;IAClC,gBAAgB,MAAM,EAAE,MAAM;IAC9B,gBAAgB,SAAS,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;IAChD,gBAAgB,WAAW,EAAE,UAAU;IACvC,aAAa,CAAC;IACd,QAAQ,CAAC;IACT,QAAQ,MAAM,WAAW,GAAG,MAAM,CAAC;IACnC,QAAQ,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC;IACnC,QAAQ,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD,QAAQ,WAAW,CAAC,WAAW,GAAG,UAAU,CAAC;IAC7C,QAAQ,OAAO,WAAW,CAAC;IAC3B,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;IACvC,QAAQ,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,uBAAuB,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC5I,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE;IAC7B,YAAY,MAAM,eAAe,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,YAAY,EAAE;IAC9H,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,KAAK,EAAE,MAAM,CAAC,KAAK;IACnC,gBAAgB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB;IAC/D,gBAAgB,WAAW,EAAE,MAAM,CAAC,WAAW;IAC/C,gBAAgB,eAAe,EAAE,MAAM,CAAC,eAAe;IACvD,gBAAgB,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;IACnE,gBAAgB,GAAG,EAAE,MAAM,CAAC,GAAG;IAC/B,gBAAgB,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;IACjE,aAAa,CAAC,CAAC;IACf,YAAY,IAAI,eAAe,CAAC,IAAI,KAAK,OAAO,EAAE;IAClD,gBAAgB,MAAM,WAAW,GAAG,eAAe,CAAC;IACpD,gBAAgB,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,IAAI,EAAE,CAAC;IAC/D,gBAAgB,IAAI,OAAO,WAAW,CAAC,WAAW,KAAK,QAAQ;IAC/D,oBAAoB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IACvE,gBAAgB,IAAI,WAAW,CAAC,OAAO;IACvC,oBAAoB,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IAC/D,gBAAgB,IAAI,OAAO,WAAW,CAAC,YAAY,KAAK,SAAS;IACjE,oBAAoB,YAAY,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;IACzE,gBAAgB,IAAI,WAAW,CAAC,gBAAgB;IAChD,oBAAoB,YAAY,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IACjF,gBAAgB,IAAI,WAAW,CAAC,gBAAgB;IAChD,oBAAoB,YAAY,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IACjF,gBAAgB,IAAI,WAAW,CAAC,gBAAgB,EAAE;IAClD,oBAAoB,IAAI,CAAC,YAAY,CAAC,IAAI;IAC1C,wBAAwB,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;IAC/C,oBAAoB,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAC5E,gBAAgB,CAAC;IACjB,gBAAgB,IAAI,WAAW,CAAC,SAAS,EAAE;IAC3C,oBAAoB,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IACvE,gBAAgB,CAAC;IACjB,YAAY,CAAC;IACb,iBAAiB,IAAI,eAAe,CAAC,IAAI,KAAK,YAAY,EAAE;IAC5D,gBAAgB,MAAM,eAAe,GAAG,eAAe,CAAC;IACxD,gBAAgB,YAAY,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,IAAI,EAAE,CAAC;IACnE,gBAAgB,IAAI,eAAe,CAAC,SAAS,EAAE;IAC/C,oBAAoB,YAAY,CAAC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IAC3E,gBAAgB,CAAC;IACjB,YAAY,CAAC;IACb,QAAQ,CAAC;IACT,aAAa;IACb,YAAY,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IACtD,QAAQ,CAAC;IACT;IACA,QAAQ,IAAI,CAAC,YAAY,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,EAAE;IAC7D,YAAY,YAAY,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IAC1D,QAAQ,CAAC;IACT,QAAQ,IAAI,YAAY,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE;IACnE,YAAY,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IACrE,YAAY,IAAI,UAAU;IAC1B,gBAAgB,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IACtE,QAAQ,CAAC;IACT,QAAQ,IAAI,aAAa,GAAG,QAAQ;IACpC,YAAY,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,GAAG,KAAK;IAC1D,gBAAgB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,GAAG,CAAC;IACvD,gBAAgB,IAAI,SAAS,KAAK,IAAI,CAAC,EAAE;IACzC,oBAAoB,OAAO;IAC3B,gBAAgB,QAAQ,CAAC,WAAW,CAAC,CAAC;IACtC,YAAY,CAAC,CAAC,CAAC;IACf,QAAQ,IAAI,CAAC,YAAY,CAAC,MAAM;IAChC,YAAY,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAClD,QAAQ,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC1F,QAAQ,OAAO,OAAO;IACtB,aAAa,IAAI,CAAC,CAAC,gBAAgB,KAAK;IACxC,YAAY,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IACjG,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,YAAY,OAAO,gBAAgB,CAAC;IACpC,QAAQ,CAAC,CAAC;IACV,aAAa,KAAK,CAAC,CAAC,GAAG,KAAK;IAC5B,YAAY,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,MAAM,GAAG,MAAM,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;IACjG,YAAY,aAAa,GAAG,IAAI,CAAC;IACjC,YAAY,MAAM,GAAG,CAAC;IACtB,QAAQ,CAAC,CAAC,CAAC;IACX,IAAI,CAAC;IACL,IAAI,cAAc,GAAG;IACrB,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,UAAU,GAAG,GAAG,EAAE,EAAE;IACtD,QAAQ,OAAO,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC;IACL,IAAI,UAAU,CAAC,MAAM,EAAE;IACvB,QAAQ,OAAO,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;IACL,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE;IAC5B,QAAQ,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE,CAAC,CAAC;IACtF,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE;IAC3C,QAAQ,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC;IAC9C,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,KAAK;IACjB,YAAY,SAAS;IACrB,YAAY,MAAM,EAAE,MAAM,IAAI,EAAE;IAChC,SAAS,CAAC,CAAC;IACX;IACA,QAAQ,OAAO,OAAO;IACtB,aAAa,GAAG,CAAC,CAAC,MAAM,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/G,aAAa,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC;IACL,IAAI,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAChC,QAAQ,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IACpF,QAAQ,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpG,QAAQ,OAAO;IACf,YAAY,SAAS;IACrB,YAAY,SAAS;IACrB,YAAY,YAAY;IACxB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,YAAY,KAAK;IACjB,SAAS,CAAC;IACV,IAAI,CAAC;IACL,IAAI,MAAM,iBAAiB,CAAC,QAAQ,EAAE;IACtC,QAAQ,IAAI,YAAY,GAAG,EAAE,CAAC;IAC9B,QAAQ,IAAI,QAAQ;IACpB,YAAY,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAChD,gBAAgB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACrD,gBAAgB,MAAM,EAAE,CAAC,CAAC,MAAM;IAChC,aAAa,CAAC,CAAC,CAAC;IAChB,QAAQ,OAAO,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC;IACL,IAAI,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,OAAO,QAAQ,CAAC,kBAAkB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC;IACL,IAAI,MAAM,qBAAqB,GAAG;IAClC,QAAQ,OAAO,QAAQ,CAAC,qBAAqB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACtE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,GAAG,EAAE;IACrD,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC;IACvC,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,MAAM,EAAE;IACpB,gBAAgB,IAAI;IACpB,gBAAgB,OAAO,EAAE,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,MAAM,GAAG,MAAM,GAAG,IAAI;IAC7E,aAAa;IACb,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,mBAAmB,GAAG;IAChC,QAAQ,OAAO,MAAM,QAAQ,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1E,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,oBAAoB,GAAG;IACjC,QAAQ,OAAO,MAAM,QAAQ,CAAC,oBAAoB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACxE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,WAAW,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE;IACjD,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IACtC,YAAY,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,QAAQ,OAAO,MAAM,QAAQ,CAAC,WAAW,CAAC;IAC1C,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE;IAC7C,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,OAAO,MAAM,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACvE,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,2BAA2B,CAAC,OAAO,EAAE,WAAW,EAAE;IAC5D,QAAQ,OAAO,MAAM,QAAQ,CAAC,2BAA2B,CAAC;IAC1D,YAAY,SAAS,EAAE,IAAI,CAAC,EAAE;IAC9B,YAAY,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE;IAClE,YAAY,WAAW;IACvB,SAAS,CAAC,CAAC;IACX,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,6BAA6B,CAAC,WAAW,EAAE;IACrD,QAAQ,OAAO,MAAM,QAAQ,CAAC,6BAA6B,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC;IACjG,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA;IACA,IAAI,MAAM,iBAAiB,CAAC,MAAM,EAAE;IACpC,QAAQ,OAAO,MAAM,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IAChF,IAAI,CAAC;IACL;IACA;IACA;IACA;IACA,IAAI,MAAM,cAAc,GAAG;IAC3B,QAAQ,OAAO,MAAM,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACrE,IAAI,CAAC;IACL,IAAI,MAAM,OAAO,GAAG;IACpB,QAAQ,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,IAAI,CAAC;IACL,CAAC;IACM,eAAe,eAAe,CAAC,OAAO,EAAE;IAC/C,IAAI,OAAO,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACjD,CAAC;IACM,SAAS,oBAAoB,CAAC,QAAQ,EAAE;IAC/C,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChC,IAAI,OAAO;IACX,QAAQ,MAAM,EAAE,MAAM;IACtB,YAAY,YAAY,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IACnE,QAAQ,CAAC;IACT,KAAK,CAAC;IACN,CAAC;IACM,eAAe,eAAe,CAAC,KAAK,EAAE;IAC7C,IAAI,OAAO,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/C,CAAC;IACD,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC;IACvG,MAAM,aAAa,GAAG;IACtB;IACA,IAAI,uBAAuB;IAC3B,IAAI,2BAA2B;IAC/B,IAAI,uBAAuB;IAC3B,IAAI,uBAAuB;IAC3B,CAAC,CAAC;IACK,eAAe,kBAAkB,CAAC,KAAK,EAAE;IAChD,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;IACrB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,OAAO,QAAQ,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,WAAW,GAAG;IACpB;IACA,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,GAAG,EAAE,CAAC;IACV,IAAI,IAAI,EAAE,CAAC;IACX,IAAI,IAAI,EAAE,CAAC;IACX,CAAC,CAAC;IACK,eAAe,SAAS,CAAC,EAAE,EAAE,UAAU,EAAE;IAChD,IAAI,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,IAAI,GAAGC,YAAM,CAAC,EAAE,EAAE,CAAC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IAChM,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;IACrB,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;IAClC,QAAQ,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,IAAI,QAAQ,GAAG,IAAI,CAAC;IACxB,IAAI,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,UAAU,CAAC,SAAS,CAAC;IAC1F,QAAQ,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,IAAI,YAAY,GAAG,EAAE,CAAC;IAC1B,IAAI,IAAI,QAAQ;IAChB,QAAQ,YAAY,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM;IAC5C,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;IACjD,YAAY,MAAM,EAAE,CAAC,CAAC,MAAM;IAC5B,SAAS,CAAC,CAAC,CAAC;IACZ,IAAI,MAAM,SAAS,GAAG,gBAAgB,GAAG,eAAe,EAAE,CAAC;IAC3D,IAAI,gBAAgB,IAAI,CAAC,CAAC;IAC1B,IAAI,IAAI,sBAAsB,GAAG,IAAI,CAAC;IACtC,IAAI,IAAI,UAAU,EAAE;IACpB,QAAQ,sBAAsB,GAAG,QAAQ,CAAC,WAAW,CAAC,8BAA8B,EAAE,CAAC,GAAG,KAAK;IAC/F,YAAY,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS;IAC3C,gBAAgB,OAAO;IACvB,YAAY,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,QAAQ,CAAC,CAAC,CAAC;IACX,IAAI,CAAC;IACL,IAAI,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,CAAC;IAC9C,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;IAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9G,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC;IACL,IAAI,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;IAC3E,QAAQ,OAAO,CAAC,IAAI,CAAC,CAAC,4CAA4C,EAAE,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC9G,QAAQ,OAAO,IAAI,CAAC,YAAY,CAAC;IACjC,IAAI,CAAC;IACL,IAAI,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,GAAG,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC;IAC9F,QAAQ,SAAS;IACjB,QAAQ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC,YAAY,EAAE,qBAAqB,EAAE,CAAC,CAAC,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,IAAI,CAAC;IAC1L,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK;IACtB,QAAQ,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;IACxH,QAAQ,MAAM,GAAG,CAAC;IAClB,IAAI,CAAC,CAAC,CAAC;IACP,IAAI,sBAAsB,KAAK,IAAI,IAAI,sBAAsB,KAAK,MAAM,GAAG,MAAM,GAAG,sBAAsB,CAAC,MAAM,EAAE,CAAC;IACpH,IAAI,OAAO,IAAI,YAAY,CAAC;IAC5B,QAAQ,SAAS;IACjB,QAAQ,GAAG;IACX,QAAQ,WAAW;IACnB,QAAQ,KAAK,EAAE,YAAY;IAC3B,QAAQ,UAAU;IAClB,KAAK,CAAC,CAAC;IACP,CAAC;IACM,eAAe,eAAe,GAAG;IACxC,IAAI,OAAO,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IACzC,CAAC;AACW,UAAC,SAAS,GAAG;IACzB,IAAI,MAAM,EAAE,OAAO;IACnB,IAAI,MAAM,EAAE,qBAAqB;IACjC;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llama-cpp-capacitor",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "A native Capacitor plugin that embeds llama.cpp directly into mobile apps, enabling offline AI inference with comprehensive support for text generation, multimodal processing, TTS, LoRA adapters, and more.",
|
|
5
5
|
"main": "dist/plugin.cjs.js",
|
|
6
6
|
"module": "dist/esm/index.js",
|
|
7
|
-
"types": "
|
|
7
|
+
"types": "types/llama-cpp-capacitor.d.ts",
|
|
8
8
|
"unpkg": "dist/plugin.js",
|
|
9
9
|
"files": [
|
|
10
10
|
"android/src/main/",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"ios/Sources",
|
|
14
14
|
"ios/Tests",
|
|
15
15
|
"Package.swift",
|
|
16
|
-
"LlamaCpp.podspec"
|
|
16
|
+
"LlamaCpp.podspec",
|
|
17
|
+
"types/"
|
|
17
18
|
],
|
|
18
19
|
"author": "Yakub Mohammad",
|
|
19
20
|
"license": "MIT",
|
|
@@ -0,0 +1,441 @@
|
|
|
1
|
+
declare module 'llama-cpp-capacitor' {
|
|
2
|
+
// Core types
|
|
3
|
+
export interface NativeContextParams {
|
|
4
|
+
model: string;
|
|
5
|
+
chat_template?: string;
|
|
6
|
+
is_model_asset?: boolean;
|
|
7
|
+
use_progress_callback?: boolean;
|
|
8
|
+
n_ctx?: number;
|
|
9
|
+
n_batch?: number;
|
|
10
|
+
n_ubatch?: number;
|
|
11
|
+
n_threads?: number;
|
|
12
|
+
n_gpu_layers?: number;
|
|
13
|
+
no_gpu_devices?: boolean;
|
|
14
|
+
flash_attn?: boolean;
|
|
15
|
+
cache_type_k?: string;
|
|
16
|
+
cache_type_v?: string;
|
|
17
|
+
use_mlock?: boolean;
|
|
18
|
+
use_mmap?: boolean;
|
|
19
|
+
vocab_only?: boolean;
|
|
20
|
+
lora?: string;
|
|
21
|
+
lora_scaled?: number;
|
|
22
|
+
lora_list?: Array<{ path: string; scaled?: number }>;
|
|
23
|
+
rope_freq_base?: number;
|
|
24
|
+
rope_freq_scale?: number;
|
|
25
|
+
pooling_type?: number;
|
|
26
|
+
ctx_shift?: boolean;
|
|
27
|
+
kv_unified?: boolean;
|
|
28
|
+
swa_full?: boolean;
|
|
29
|
+
n_cpu_moe?: number;
|
|
30
|
+
embedding?: boolean;
|
|
31
|
+
embd_normalize?: number;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export interface NativeCompletionParams {
|
|
35
|
+
prompt: string;
|
|
36
|
+
n_threads?: number;
|
|
37
|
+
jinja?: boolean;
|
|
38
|
+
json_schema?: string;
|
|
39
|
+
grammar?: string;
|
|
40
|
+
grammar_lazy?: boolean;
|
|
41
|
+
grammar_triggers?: Array<{
|
|
42
|
+
type: number;
|
|
43
|
+
value: string;
|
|
44
|
+
token: number;
|
|
45
|
+
}>;
|
|
46
|
+
enable_thinking?: boolean;
|
|
47
|
+
thinking_forced_open?: boolean;
|
|
48
|
+
preserved_tokens?: Array<string>;
|
|
49
|
+
chat_format?: number;
|
|
50
|
+
reasoning_format?: string;
|
|
51
|
+
media_paths?: Array<string>;
|
|
52
|
+
stop?: Array<string>;
|
|
53
|
+
n_predict?: number;
|
|
54
|
+
n_probs?: number;
|
|
55
|
+
top_k?: number;
|
|
56
|
+
top_p?: number;
|
|
57
|
+
min_p?: number;
|
|
58
|
+
xtc_probability?: number;
|
|
59
|
+
xtc_threshold?: number;
|
|
60
|
+
typical_p?: number;
|
|
61
|
+
temperature?: number;
|
|
62
|
+
penalty_last_n?: number;
|
|
63
|
+
penalty_repeat?: number;
|
|
64
|
+
penalty_freq?: number;
|
|
65
|
+
penalty_present?: number;
|
|
66
|
+
mirostat?: number;
|
|
67
|
+
mirostat_tau?: number;
|
|
68
|
+
mirostat_eta?: number;
|
|
69
|
+
dry_multiplier?: number;
|
|
70
|
+
dry_base?: number;
|
|
71
|
+
dry_allowed_length?: number;
|
|
72
|
+
dry_penalty_last_n?: number;
|
|
73
|
+
dry_sequence_breakers?: Array<string>;
|
|
74
|
+
top_n_sigma?: number;
|
|
75
|
+
ignore_eos?: boolean;
|
|
76
|
+
logit_bias?: Array<Array<number>>;
|
|
77
|
+
seed?: number;
|
|
78
|
+
guide_tokens?: Array<number>;
|
|
79
|
+
emit_partial_completion: boolean;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
export interface NativeCompletionResult {
|
|
83
|
+
text: string;
|
|
84
|
+
reasoning_content: string;
|
|
85
|
+
tool_calls: Array<{
|
|
86
|
+
type: 'function';
|
|
87
|
+
function: {
|
|
88
|
+
name: string;
|
|
89
|
+
arguments: string;
|
|
90
|
+
};
|
|
91
|
+
id?: string;
|
|
92
|
+
}>;
|
|
93
|
+
content: string;
|
|
94
|
+
chat_format: number;
|
|
95
|
+
tokens_predicted: number;
|
|
96
|
+
tokens_evaluated: number;
|
|
97
|
+
truncated: boolean;
|
|
98
|
+
stopped_eos: boolean;
|
|
99
|
+
stopped_word: string;
|
|
100
|
+
stopped_limit: number;
|
|
101
|
+
stopping_word: string;
|
|
102
|
+
context_full: boolean;
|
|
103
|
+
interrupted: boolean;
|
|
104
|
+
tokens_cached: number;
|
|
105
|
+
timings: {
|
|
106
|
+
prompt_n: number;
|
|
107
|
+
prompt_ms: number;
|
|
108
|
+
prompt_per_token_ms: number;
|
|
109
|
+
prompt_per_second: number;
|
|
110
|
+
predicted_n: number;
|
|
111
|
+
predicted_ms: number;
|
|
112
|
+
predicted_per_token_ms: number;
|
|
113
|
+
predicted_per_second: number;
|
|
114
|
+
};
|
|
115
|
+
completion_probabilities?: Array<{
|
|
116
|
+
content: string;
|
|
117
|
+
probs: Array<{
|
|
118
|
+
tok_str: string;
|
|
119
|
+
prob: number;
|
|
120
|
+
}>;
|
|
121
|
+
}>;
|
|
122
|
+
audio_tokens?: Array<number>;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export interface NativeTokenizeResult {
|
|
126
|
+
tokens: Array<number>;
|
|
127
|
+
has_images: boolean;
|
|
128
|
+
bitmap_hashes: Array<number>;
|
|
129
|
+
chunk_pos: Array<number>;
|
|
130
|
+
chunk_pos_images: Array<number>;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface NativeEmbeddingResult {
|
|
134
|
+
embedding: Array<number>;
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
export interface NativeLlamaContext {
|
|
138
|
+
contextId: number;
|
|
139
|
+
model: {
|
|
140
|
+
desc: string;
|
|
141
|
+
size: number;
|
|
142
|
+
nEmbd: number;
|
|
143
|
+
nParams: number;
|
|
144
|
+
chatTemplates: {
|
|
145
|
+
llamaChat: boolean;
|
|
146
|
+
minja: {
|
|
147
|
+
default: boolean;
|
|
148
|
+
defaultCaps: {
|
|
149
|
+
tools: boolean;
|
|
150
|
+
toolCalls: boolean;
|
|
151
|
+
toolResponses: boolean;
|
|
152
|
+
systemRole: boolean;
|
|
153
|
+
parallelToolCalls: boolean;
|
|
154
|
+
toolCallId: boolean;
|
|
155
|
+
};
|
|
156
|
+
toolUse: boolean;
|
|
157
|
+
toolUseCaps: {
|
|
158
|
+
tools: boolean;
|
|
159
|
+
toolCalls: boolean;
|
|
160
|
+
toolResponses: boolean;
|
|
161
|
+
systemRole: boolean;
|
|
162
|
+
parallelToolCalls: boolean;
|
|
163
|
+
toolCallId: boolean;
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
};
|
|
167
|
+
metadata: Object;
|
|
168
|
+
isChatTemplateSupported: boolean;
|
|
169
|
+
};
|
|
170
|
+
androidLib?: string;
|
|
171
|
+
gpu: boolean;
|
|
172
|
+
reasonNoGPU: string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface NativeSessionLoadResult {
|
|
176
|
+
tokens_loaded: number;
|
|
177
|
+
prompt: string;
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export interface NativeEmbeddingParams {
|
|
181
|
+
embd_normalize?: number;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface NativeRerankParams {
|
|
185
|
+
normalize?: number;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
export interface NativeRerankResult {
|
|
189
|
+
score: number;
|
|
190
|
+
index: number;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// High-level types
|
|
194
|
+
export interface LlamaCppMessagePart {
|
|
195
|
+
type: string;
|
|
196
|
+
text?: string;
|
|
197
|
+
image_url?: {
|
|
198
|
+
url?: string;
|
|
199
|
+
};
|
|
200
|
+
input_audio?: {
|
|
201
|
+
format: string;
|
|
202
|
+
data?: string;
|
|
203
|
+
url?: string;
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export interface LlamaCppOAICompatibleMessage {
|
|
208
|
+
role: string;
|
|
209
|
+
content?: string | LlamaCppMessagePart[];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
export interface ToolCall {
|
|
213
|
+
type: 'function';
|
|
214
|
+
id?: string;
|
|
215
|
+
function: {
|
|
216
|
+
name: string;
|
|
217
|
+
arguments: string;
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
export interface TokenData {
|
|
222
|
+
token: string;
|
|
223
|
+
completion_probabilities?: Array<{
|
|
224
|
+
content: string;
|
|
225
|
+
probs: Array<{
|
|
226
|
+
tok_str: string;
|
|
227
|
+
prob: number;
|
|
228
|
+
}>;
|
|
229
|
+
}>;
|
|
230
|
+
content?: string;
|
|
231
|
+
reasoning_content?: string;
|
|
232
|
+
tool_calls?: Array<ToolCall>;
|
|
233
|
+
accumulated_text?: string;
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
export interface ContextParams extends Omit<
|
|
237
|
+
NativeContextParams,
|
|
238
|
+
'cache_type_k' | 'cache_type_v' | 'pooling_type'
|
|
239
|
+
> {
|
|
240
|
+
cache_type_k?:
|
|
241
|
+
| 'f16'
|
|
242
|
+
| 'f32'
|
|
243
|
+
| 'q8_0'
|
|
244
|
+
| 'q4_0'
|
|
245
|
+
| 'q4_1'
|
|
246
|
+
| 'iq4_nl'
|
|
247
|
+
| 'q5_0'
|
|
248
|
+
| 'q5_1';
|
|
249
|
+
cache_type_v?:
|
|
250
|
+
| 'f16'
|
|
251
|
+
| 'f32'
|
|
252
|
+
| 'q8_0'
|
|
253
|
+
| 'q4_0'
|
|
254
|
+
| 'q4_1'
|
|
255
|
+
| 'iq4_nl'
|
|
256
|
+
| 'q5_0'
|
|
257
|
+
| 'q5_1';
|
|
258
|
+
pooling_type?: 'none' | 'mean' | 'cls' | 'last' | 'rank';
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export interface EmbeddingParams extends NativeEmbeddingParams {}
|
|
262
|
+
|
|
263
|
+
export interface RerankParams {
|
|
264
|
+
normalize?: number;
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
export interface RerankResult {
|
|
268
|
+
score: number;
|
|
269
|
+
index: number;
|
|
270
|
+
document?: string;
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export interface CompletionResponseFormat {
|
|
274
|
+
type: 'text' | 'json_object' | 'json_schema';
|
|
275
|
+
json_schema?: {
|
|
276
|
+
strict?: boolean;
|
|
277
|
+
schema: object;
|
|
278
|
+
};
|
|
279
|
+
schema?: object;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
export interface CompletionParams extends Omit<
|
|
283
|
+
NativeCompletionParams,
|
|
284
|
+
'emit_partial_completion' | 'prompt'
|
|
285
|
+
> {
|
|
286
|
+
prompt?: string;
|
|
287
|
+
messages?: LlamaCppOAICompatibleMessage[];
|
|
288
|
+
chatTemplate?: string;
|
|
289
|
+
chat_template?: string;
|
|
290
|
+
jinja?: boolean;
|
|
291
|
+
tools?: object;
|
|
292
|
+
parallel_tool_calls?: object;
|
|
293
|
+
tool_choice?: string;
|
|
294
|
+
response_format?: CompletionResponseFormat;
|
|
295
|
+
media_paths?: string[];
|
|
296
|
+
add_generation_prompt?: boolean;
|
|
297
|
+
now?: string | number;
|
|
298
|
+
chat_template_kwargs?: Record<string, string>;
|
|
299
|
+
prefill_text?: string;
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
export interface BenchResult {
|
|
303
|
+
modelDesc: string;
|
|
304
|
+
modelSize: number;
|
|
305
|
+
modelNParams: number;
|
|
306
|
+
ppAvg: number;
|
|
307
|
+
ppStd: number;
|
|
308
|
+
tgAvg: number;
|
|
309
|
+
tgStd: number;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
export interface FormattedChatResult {
|
|
313
|
+
type: 'jinja' | 'llama-chat';
|
|
314
|
+
prompt: string;
|
|
315
|
+
has_media: boolean;
|
|
316
|
+
media_paths?: Array<string>;
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
export interface JinjaFormattedChatResult extends FormattedChatResult {
|
|
320
|
+
chat_format?: number;
|
|
321
|
+
grammar?: string;
|
|
322
|
+
grammar_lazy?: boolean;
|
|
323
|
+
grammar_triggers?: Array<{
|
|
324
|
+
type: number;
|
|
325
|
+
value: string;
|
|
326
|
+
token: number;
|
|
327
|
+
}>;
|
|
328
|
+
thinking_forced_open?: boolean;
|
|
329
|
+
preserved_tokens?: Array<string>;
|
|
330
|
+
additional_stops?: Array<string>;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
// Main LlamaContext class
|
|
334
|
+
export class LlamaContext {
|
|
335
|
+
id: number;
|
|
336
|
+
gpu: boolean;
|
|
337
|
+
reasonNoGPU: string;
|
|
338
|
+
model: NativeLlamaContext['model'];
|
|
339
|
+
|
|
340
|
+
constructor(context: NativeLlamaContext);
|
|
341
|
+
|
|
342
|
+
loadSession(filepath: string): Promise<NativeSessionLoadResult>;
|
|
343
|
+
saveSession(filepath: string, options?: { tokenSize: number }): Promise<number>;
|
|
344
|
+
isLlamaChatSupported(): boolean;
|
|
345
|
+
isJinjaSupported(): boolean;
|
|
346
|
+
getFormattedChat(
|
|
347
|
+
messages: LlamaCppOAICompatibleMessage[],
|
|
348
|
+
template?: string | null,
|
|
349
|
+
params?: {
|
|
350
|
+
jinja?: boolean;
|
|
351
|
+
response_format?: CompletionResponseFormat;
|
|
352
|
+
tools?: object;
|
|
353
|
+
parallel_tool_calls?: object;
|
|
354
|
+
tool_choice?: string;
|
|
355
|
+
enable_thinking?: boolean;
|
|
356
|
+
add_generation_prompt?: boolean;
|
|
357
|
+
now?: string | number;
|
|
358
|
+
chat_template_kwargs?: Record<string, string>;
|
|
359
|
+
}
|
|
360
|
+
): Promise<FormattedChatResult | JinjaFormattedChatResult>;
|
|
361
|
+
completion(
|
|
362
|
+
params: CompletionParams,
|
|
363
|
+
callback?: (data: TokenData) => void
|
|
364
|
+
): Promise<NativeCompletionResult>;
|
|
365
|
+
stopCompletion(): Promise<void>;
|
|
366
|
+
tokenize(
|
|
367
|
+
text: string,
|
|
368
|
+
options?: { media_paths?: string[] }
|
|
369
|
+
): Promise<NativeTokenizeResult>;
|
|
370
|
+
detokenize(tokens: number[]): Promise<string>;
|
|
371
|
+
embedding(text: string, params?: EmbeddingParams): Promise<NativeEmbeddingResult>;
|
|
372
|
+
rerank(
|
|
373
|
+
query: string,
|
|
374
|
+
documents: string[],
|
|
375
|
+
params?: RerankParams
|
|
376
|
+
): Promise<RerankResult[]>;
|
|
377
|
+
bench(pp: number, tg: number, pl: number, nr: number): Promise<BenchResult>;
|
|
378
|
+
applyLoraAdapters(
|
|
379
|
+
loraList: Array<{ path: string; scaled?: number }>
|
|
380
|
+
): Promise<void>;
|
|
381
|
+
removeLoraAdapters(): Promise<void>;
|
|
382
|
+
getLoadedLoraAdapters(): Promise<Array<{ path: string; scaled?: number }>>;
|
|
383
|
+
initMultimodal(params: {
|
|
384
|
+
path: string;
|
|
385
|
+
use_gpu?: boolean;
|
|
386
|
+
}): Promise<boolean>;
|
|
387
|
+
isMultimodalEnabled(): Promise<boolean>;
|
|
388
|
+
getMultimodalSupport(): Promise<{
|
|
389
|
+
vision: boolean;
|
|
390
|
+
audio: boolean;
|
|
391
|
+
}>;
|
|
392
|
+
releaseMultimodal(): Promise<void>;
|
|
393
|
+
initVocoder(params: {
|
|
394
|
+
path: string;
|
|
395
|
+
n_batch?: number;
|
|
396
|
+
}): Promise<boolean>;
|
|
397
|
+
isVocoderEnabled(): Promise<boolean>;
|
|
398
|
+
getFormattedAudioCompletion(
|
|
399
|
+
speaker: object | null,
|
|
400
|
+
textToSpeak: string
|
|
401
|
+
): Promise<{
|
|
402
|
+
prompt: string;
|
|
403
|
+
grammar?: string;
|
|
404
|
+
}>;
|
|
405
|
+
getAudioCompletionGuideTokens(textToSpeak: string): Promise<Array<number>>;
|
|
406
|
+
decodeAudioTokens(tokens: number[]): Promise<Array<number>>;
|
|
407
|
+
releaseVocoder(): Promise<void>;
|
|
408
|
+
release(): Promise<void>;
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
// Utility functions
|
|
412
|
+
export function toggleNativeLog(enabled: boolean): Promise<void>;
|
|
413
|
+
export function addNativeLogListener(
|
|
414
|
+
listener: (level: string, text: string) => void
|
|
415
|
+
): { remove: () => void };
|
|
416
|
+
export function setContextLimit(limit: number): Promise<void>;
|
|
417
|
+
export function loadLlamaModelInfo(model: string): Promise<Object>;
|
|
418
|
+
export function initLlama(
|
|
419
|
+
params: ContextParams,
|
|
420
|
+
onProgress?: (progress: number) => void
|
|
421
|
+
): Promise<LlamaContext>;
|
|
422
|
+
export function releaseAllLlama(): Promise<void>;
|
|
423
|
+
|
|
424
|
+
// Constants
|
|
425
|
+
export const BuildInfo: {
|
|
426
|
+
number: string;
|
|
427
|
+
commit: string;
|
|
428
|
+
};
|
|
429
|
+
|
|
430
|
+
export const LLAMACPP_MTMD_DEFAULT_MEDIA_MARKER: string;
|
|
431
|
+
export const RNLLAMA_MTMD_DEFAULT_MEDIA_MARKER: string;
|
|
432
|
+
|
|
433
|
+
// Re-export types for convenience (only types not already declared)
|
|
434
|
+
export type {
|
|
435
|
+
// These are already declared as interfaces above, so we don't re-export them
|
|
436
|
+
};
|
|
437
|
+
|
|
438
|
+
// Legacy type aliases for backward compatibility
|
|
439
|
+
export type RNLlamaMessagePart = LlamaCppMessagePart;
|
|
440
|
+
export type RNLlamaOAICompatibleMessage = LlamaCppOAICompatibleMessage;
|
|
441
|
+
}
|