node-llama-cpp 2.8.6 → 3.0.0-beta.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/ChatWrapper.d.ts +49 -0
- package/dist/ChatWrapper.js +120 -0
- package/dist/ChatWrapper.js.map +1 -0
- package/dist/bindings/AddonTypes.d.ts +92 -0
- package/dist/bindings/AddonTypes.js +2 -0
- package/dist/bindings/AddonTypes.js.map +1 -0
- package/dist/bindings/Llama.d.ts +23 -0
- package/dist/bindings/Llama.js +225 -0
- package/dist/bindings/Llama.js.map +1 -0
- package/dist/bindings/getLlama.d.ts +86 -0
- package/dist/bindings/getLlama.js +225 -0
- package/dist/bindings/getLlama.js.map +1 -0
- package/dist/bindings/types.d.ts +33 -0
- package/dist/bindings/types.js +30 -0
- package/dist/bindings/types.js.map +1 -0
- package/dist/bindings/utils/NoBinaryFoundError.d.ts +2 -0
- package/dist/bindings/utils/NoBinaryFoundError.js +7 -0
- package/dist/bindings/utils/NoBinaryFoundError.js.map +1 -0
- package/dist/{utils → bindings/utils}/binariesGithubRelease.js +1 -1
- package/dist/bindings/utils/binariesGithubRelease.js.map +1 -0
- package/dist/bindings/utils/clearAllLocalBuilds.d.ts +1 -0
- package/dist/bindings/utils/clearAllLocalBuilds.js +47 -0
- package/dist/bindings/utils/clearAllLocalBuilds.js.map +1 -0
- package/dist/bindings/utils/cloneLlamaCppRepo.d.ts +11 -0
- package/dist/bindings/utils/cloneLlamaCppRepo.js +155 -0
- package/dist/bindings/utils/cloneLlamaCppRepo.js.map +1 -0
- package/dist/bindings/utils/compileLLamaCpp.d.ts +12 -0
- package/dist/bindings/utils/compileLLamaCpp.js +157 -0
- package/dist/bindings/utils/compileLLamaCpp.js.map +1 -0
- package/dist/bindings/utils/getBuildFolderNameForBuildOptions.d.ts +5 -0
- package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js +85 -0
- package/dist/bindings/utils/getBuildFolderNameForBuildOptions.js.map +1 -0
- package/dist/bindings/utils/getCanUsePrebuiltBinaries.d.ts +1 -0
- package/dist/bindings/utils/getCanUsePrebuiltBinaries.js +8 -0
- package/dist/bindings/utils/getCanUsePrebuiltBinaries.js.map +1 -0
- package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.d.ts +2 -0
- package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js +21 -0
- package/dist/bindings/utils/getExampleUsageCodeOfGetLlama.js.map +1 -0
- package/dist/bindings/utils/getPlatform.d.ts +2 -0
- package/dist/bindings/utils/getPlatform.js +15 -0
- package/dist/bindings/utils/getPlatform.js.map +1 -0
- package/dist/bindings/utils/lastBuildInfo.d.ts +6 -0
- package/dist/bindings/utils/lastBuildInfo.js +17 -0
- package/dist/bindings/utils/lastBuildInfo.js.map +1 -0
- package/dist/bindings/utils/logBinaryUsageExampleToConsole.d.ts +2 -0
- package/dist/bindings/utils/logBinaryUsageExampleToConsole.js +28 -0
- package/dist/bindings/utils/logBinaryUsageExampleToConsole.js.map +1 -0
- package/dist/bindings/utils/resolveCustomCmakeOptions.d.ts +1 -0
- package/dist/bindings/utils/resolveCustomCmakeOptions.js +43 -0
- package/dist/bindings/utils/resolveCustomCmakeOptions.js.map +1 -0
- package/dist/chatWrappers/AlpacaChatWrapper.d.ts +12 -0
- package/dist/chatWrappers/AlpacaChatWrapper.js +21 -0
- package/dist/chatWrappers/AlpacaChatWrapper.js.map +1 -0
- package/dist/chatWrappers/ChatMLChatWrapper.d.ts +18 -0
- package/dist/chatWrappers/ChatMLChatWrapper.js +83 -0
- package/dist/chatWrappers/ChatMLChatWrapper.js.map +1 -0
- package/dist/chatWrappers/EmptyChatWrapper.d.ts +4 -0
- package/dist/chatWrappers/EmptyChatWrapper.js +5 -0
- package/dist/chatWrappers/EmptyChatWrapper.js.map +1 -0
- package/dist/chatWrappers/FalconChatWrapper.d.ts +21 -0
- package/dist/chatWrappers/FalconChatWrapper.js +104 -0
- package/dist/chatWrappers/FalconChatWrapper.js.map +1 -0
- package/dist/chatWrappers/FunctionaryChatWrapper.d.ts +41 -0
- package/dist/chatWrappers/FunctionaryChatWrapper.js +200 -0
- package/dist/chatWrappers/FunctionaryChatWrapper.js.map +1 -0
- package/dist/chatWrappers/GeneralChatWrapper.d.ts +21 -0
- package/dist/chatWrappers/GeneralChatWrapper.js +112 -0
- package/dist/chatWrappers/GeneralChatWrapper.js.map +1 -0
- package/dist/chatWrappers/LlamaChatWrapper.d.ts +13 -0
- package/dist/chatWrappers/LlamaChatWrapper.js +78 -0
- package/dist/chatWrappers/LlamaChatWrapper.js.map +1 -0
- package/dist/chatWrappers/resolveChatWrapperBasedOnModel.d.ts +13 -0
- package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js +60 -0
- package/dist/chatWrappers/resolveChatWrapperBasedOnModel.js.map +1 -0
- package/dist/cli/cli.js +5 -1
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/commands/BuildCommand.d.ts +2 -1
- package/dist/cli/commands/BuildCommand.js +50 -10
- package/dist/cli/commands/BuildCommand.js.map +1 -1
- package/dist/cli/commands/ChatCommand.d.ts +10 -4
- package/dist/cli/commands/ChatCommand.js +169 -57
- package/dist/cli/commands/ChatCommand.js.map +1 -1
- package/dist/cli/commands/ClearCommand.js +4 -6
- package/dist/cli/commands/ClearCommand.js.map +1 -1
- package/dist/cli/commands/DebugCommand.d.ts +7 -0
- package/dist/cli/commands/DebugCommand.js +59 -0
- package/dist/cli/commands/DebugCommand.js.map +1 -0
- package/dist/cli/commands/DownloadCommand.d.ts +2 -1
- package/dist/cli/commands/DownloadCommand.js +47 -40
- package/dist/cli/commands/DownloadCommand.js.map +1 -1
- package/dist/cli/commands/OnPostInstallCommand.js +7 -10
- package/dist/cli/commands/OnPostInstallCommand.js.map +1 -1
- package/dist/config.d.ts +10 -3
- package/dist/config.js +18 -7
- package/dist/config.js.map +1 -1
- package/dist/evaluator/LlamaChat/LlamaChat.d.ts +185 -0
- package/dist/evaluator/LlamaChat/LlamaChat.js +705 -0
- package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -0
- package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.d.ts +22 -0
- package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js +121 -0
- package/dist/evaluator/LlamaChat/utils/FunctionCallGrammar.js.map +1 -0
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.d.ts +16 -0
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +135 -0
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -0
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +157 -0
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.js +219 -0
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -0
- package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.d.ts +7 -0
- package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js +8 -0
- package/dist/evaluator/LlamaChatSession/utils/defineChatSessionFunction.js.map +1 -0
- package/dist/evaluator/LlamaContext/LlamaContext.d.ts +109 -0
- package/dist/evaluator/LlamaContext/LlamaContext.js +606 -0
- package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -0
- package/dist/evaluator/LlamaContext/types.d.ts +82 -0
- package/dist/evaluator/LlamaContext/types.js +2 -0
- package/dist/evaluator/LlamaContext/types.js.map +1 -0
- package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.d.ts +5 -0
- package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js +16 -0
- package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/firstInFirstOutStrategy.js.map +1 -0
- package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.d.ts +5 -0
- package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js +42 -0
- package/dist/evaluator/LlamaContext/utils/batchItemsPrioritizingStrategies/maximumParallelismStrategy.js.map +1 -0
- package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.d.ts +2 -0
- package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js +13 -0
- package/dist/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizingStrategy.js.map +1 -0
- package/dist/evaluator/LlamaEmbeddingContext.d.ts +37 -0
- package/dist/evaluator/LlamaEmbeddingContext.js +78 -0
- package/dist/evaluator/LlamaEmbeddingContext.js.map +1 -0
- package/dist/evaluator/LlamaGrammar.d.ts +30 -0
- package/dist/{llamaEvaluator → evaluator}/LlamaGrammar.js +15 -19
- package/dist/evaluator/LlamaGrammar.js.map +1 -0
- package/dist/evaluator/LlamaGrammarEvaluationState.d.ts +15 -0
- package/dist/evaluator/LlamaGrammarEvaluationState.js +17 -0
- package/dist/evaluator/LlamaGrammarEvaluationState.js.map +1 -0
- package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.d.ts +2 -1
- package/dist/{llamaEvaluator → evaluator}/LlamaJsonSchemaGrammar.js +4 -2
- package/dist/evaluator/LlamaJsonSchemaGrammar.js.map +1 -0
- package/dist/evaluator/LlamaModel.d.ts +120 -0
- package/dist/evaluator/LlamaModel.js +320 -0
- package/dist/evaluator/LlamaModel.js.map +1 -0
- package/dist/index.d.ts +29 -16
- package/dist/index.js +28 -15
- package/dist/index.js.map +1 -1
- package/dist/state.d.ts +2 -0
- package/dist/state.js +7 -0
- package/dist/state.js.map +1 -1
- package/dist/types.d.ts +44 -4
- package/dist/types.js +5 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/LlamaText.d.ts +42 -0
- package/dist/utils/LlamaText.js +207 -0
- package/dist/utils/LlamaText.js.map +1 -0
- package/dist/utils/ReplHistory.js +1 -1
- package/dist/utils/ReplHistory.js.map +1 -1
- package/dist/utils/StopGenerationDetector.d.ts +28 -0
- package/dist/utils/StopGenerationDetector.js +205 -0
- package/dist/utils/StopGenerationDetector.js.map +1 -0
- package/dist/utils/TokenStreamRegulator.d.ts +30 -0
- package/dist/utils/TokenStreamRegulator.js +96 -0
- package/dist/utils/TokenStreamRegulator.js.map +1 -0
- package/dist/utils/appendUserMessageToChatHistory.d.ts +2 -0
- package/dist/utils/appendUserMessageToChatHistory.js +18 -0
- package/dist/utils/appendUserMessageToChatHistory.js.map +1 -0
- package/dist/utils/cmake.js +16 -11
- package/dist/utils/cmake.js.map +1 -1
- package/dist/utils/compareTokens.d.ts +2 -0
- package/dist/utils/compareTokens.js +4 -0
- package/dist/utils/compareTokens.js.map +1 -0
- package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.d.ts +18 -0
- package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js +61 -0
- package/dist/utils/findCharacterRemovalCountToFitChatHistoryInContext.js.map +1 -0
- package/dist/utils/gbnfJson/GbnfGrammarGenerator.d.ts +1 -0
- package/dist/utils/gbnfJson/GbnfGrammarGenerator.js +17 -0
- package/dist/utils/gbnfJson/GbnfGrammarGenerator.js.map +1 -1
- package/dist/utils/gbnfJson/GbnfTerminal.d.ts +1 -1
- package/dist/utils/gbnfJson/GbnfTerminal.js.map +1 -1
- package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.d.ts +6 -0
- package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js +21 -0
- package/dist/utils/gbnfJson/terminals/GbnfVerbatimText.js.map +1 -0
- package/dist/utils/gbnfJson/types.d.ts +1 -1
- package/dist/utils/gbnfJson/types.js.map +1 -1
- package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.d.ts +1 -0
- package/dist/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.js.map +1 -1
- package/dist/utils/getConsoleLogPrefix.d.ts +1 -0
- package/dist/utils/getConsoleLogPrefix.js +9 -0
- package/dist/utils/getConsoleLogPrefix.js.map +1 -0
- package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js +1 -15
- package/dist/utils/getGbnfGrammarForGbnfJsonSchema.js.map +1 -1
- package/dist/utils/getGrammarsFolder.d.ts +2 -1
- package/dist/utils/getGrammarsFolder.js +8 -7
- package/dist/utils/getGrammarsFolder.js.map +1 -1
- package/dist/utils/getModuleVersion.d.ts +1 -0
- package/dist/utils/getModuleVersion.js +13 -0
- package/dist/utils/getModuleVersion.js.map +1 -0
- package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.d.ts +2 -0
- package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js +49 -0
- package/dist/utils/getTypeScriptTypeStringForGbnfJsonSchema.js.map +1 -0
- package/dist/utils/gitReleaseBundles.js +6 -5
- package/dist/utils/gitReleaseBundles.js.map +1 -1
- package/dist/utils/hashString.d.ts +1 -0
- package/dist/utils/hashString.js +8 -0
- package/dist/utils/hashString.js.map +1 -0
- package/dist/utils/isLockfileActive.d.ts +4 -0
- package/dist/utils/isLockfileActive.js +12 -0
- package/dist/utils/isLockfileActive.js.map +1 -0
- package/dist/utils/parseModelFileName.d.ts +9 -0
- package/dist/utils/parseModelFileName.js +68 -0
- package/dist/utils/parseModelFileName.js.map +1 -0
- package/dist/utils/parseModelTypeDescription.d.ts +6 -0
- package/dist/utils/parseModelTypeDescription.js +9 -0
- package/dist/utils/parseModelTypeDescription.js.map +1 -0
- package/dist/utils/prettyPrintObject.d.ts +1 -0
- package/dist/utils/prettyPrintObject.js +40 -0
- package/dist/utils/prettyPrintObject.js.map +1 -0
- package/dist/utils/removeNullFields.d.ts +1 -0
- package/dist/utils/removeNullFields.js +8 -0
- package/dist/utils/removeNullFields.js.map +1 -1
- package/dist/utils/resolveChatWrapper.d.ts +4 -0
- package/dist/utils/resolveChatWrapper.js +16 -0
- package/dist/utils/resolveChatWrapper.js.map +1 -0
- package/dist/utils/resolveGithubRelease.d.ts +2 -0
- package/dist/utils/resolveGithubRelease.js +36 -0
- package/dist/utils/resolveGithubRelease.js.map +1 -0
- package/dist/utils/spawnCommand.d.ts +1 -1
- package/dist/utils/spawnCommand.js +4 -2
- package/dist/utils/spawnCommand.js.map +1 -1
- package/dist/utils/tokenizeInput.d.ts +3 -0
- package/dist/utils/tokenizeInput.js +9 -0
- package/dist/utils/tokenizeInput.js.map +1 -0
- package/dist/utils/truncateTextAndRoundToWords.d.ts +8 -0
- package/dist/utils/truncateTextAndRoundToWords.js +27 -0
- package/dist/utils/truncateTextAndRoundToWords.js.map +1 -0
- package/dist/utils/waitForLockfileRelease.d.ts +5 -0
- package/dist/utils/waitForLockfileRelease.js +20 -0
- package/dist/utils/waitForLockfileRelease.js.map +1 -0
- package/dist/utils/withLockfile.d.ts +7 -0
- package/dist/utils/withLockfile.js +44 -0
- package/dist/utils/withLockfile.js.map +1 -0
- package/dist/utils/withOra.js +11 -1
- package/dist/utils/withOra.js.map +1 -1
- package/dist/utils/withStatusLogs.d.ts +2 -1
- package/dist/utils/withStatusLogs.js +11 -8
- package/dist/utils/withStatusLogs.js.map +1 -1
- package/llama/.clang-format +11 -11
- package/llama/CMakeLists.txt +87 -2
- package/llama/addon.cpp +915 -352
- package/llama/binariesGithubRelease.json +1 -1
- package/llama/gitRelease.bundle +0 -0
- package/llama/gpuInfo/cuda-gpu-info.cu +99 -0
- package/llama/gpuInfo/cuda-gpu-info.h +7 -0
- package/llama/gpuInfo/metal-gpu-info.h +5 -0
- package/llama/gpuInfo/metal-gpu-info.mm +17 -0
- package/llama/llama.cpp.info.json +4 -0
- package/llamaBins/linux-arm64/.buildMetadata.json +1 -0
- package/llamaBins/linux-arm64/llama-addon.node +0 -0
- package/llamaBins/linux-armv7l/.buildMetadata.json +1 -0
- package/llamaBins/linux-armv7l/llama-addon.node +0 -0
- package/llamaBins/linux-x64/.buildMetadata.json +1 -0
- package/llamaBins/linux-x64/llama-addon.node +0 -0
- package/llamaBins/linux-x64-cuda/.buildMetadata.json +1 -0
- package/llamaBins/linux-x64-cuda/llama-addon.node +0 -0
- package/llamaBins/mac-arm64-metal/.buildMetadata.json +1 -0
- package/llamaBins/mac-arm64-metal/llama-addon.node +0 -0
- package/llamaBins/mac-x64/.buildMetadata.json +1 -0
- package/llamaBins/mac-x64/llama-addon.node +0 -0
- package/llamaBins/win-x64/.buildMetadata.json +1 -0
- package/llamaBins/win-x64/llama-addon.exp +0 -0
- package/llamaBins/win-x64/llama-addon.node +0 -0
- package/llamaBins/win-x64-cuda/.buildMetadata.json +1 -0
- package/llamaBins/win-x64-cuda/llama-addon.exp +0 -0
- package/llamaBins/win-x64-cuda/llama-addon.lib +0 -0
- package/llamaBins/win-x64-cuda/llama-addon.node +0 -0
- package/package.json +39 -19
- package/dist/ChatPromptWrapper.d.ts +0 -11
- package/dist/ChatPromptWrapper.js +0 -20
- package/dist/ChatPromptWrapper.js.map +0 -1
- package/dist/chatWrappers/ChatMLChatPromptWrapper.d.ts +0 -12
- package/dist/chatWrappers/ChatMLChatPromptWrapper.js +0 -22
- package/dist/chatWrappers/ChatMLChatPromptWrapper.js.map +0 -1
- package/dist/chatWrappers/EmptyChatPromptWrapper.d.ts +0 -4
- package/dist/chatWrappers/EmptyChatPromptWrapper.js +0 -5
- package/dist/chatWrappers/EmptyChatPromptWrapper.js.map +0 -1
- package/dist/chatWrappers/FalconChatPromptWrapper.d.ts +0 -19
- package/dist/chatWrappers/FalconChatPromptWrapper.js +0 -33
- package/dist/chatWrappers/FalconChatPromptWrapper.js.map +0 -1
- package/dist/chatWrappers/GeneralChatPromptWrapper.d.ts +0 -19
- package/dist/chatWrappers/GeneralChatPromptWrapper.js +0 -38
- package/dist/chatWrappers/GeneralChatPromptWrapper.js.map +0 -1
- package/dist/chatWrappers/LlamaChatPromptWrapper.d.ts +0 -12
- package/dist/chatWrappers/LlamaChatPromptWrapper.js +0 -23
- package/dist/chatWrappers/LlamaChatPromptWrapper.js.map +0 -1
- package/dist/chatWrappers/createChatWrapperByBos.d.ts +0 -2
- package/dist/chatWrappers/createChatWrapperByBos.js +0 -14
- package/dist/chatWrappers/createChatWrapperByBos.js.map +0 -1
- package/dist/chatWrappers/generateContextTextFromConversationHistory.d.ts +0 -23
- package/dist/chatWrappers/generateContextTextFromConversationHistory.js +0 -47
- package/dist/chatWrappers/generateContextTextFromConversationHistory.js.map +0 -1
- package/dist/llamaEvaluator/LlamaBins.d.ts +0 -4
- package/dist/llamaEvaluator/LlamaBins.js +0 -5
- package/dist/llamaEvaluator/LlamaBins.js.map +0 -1
- package/dist/llamaEvaluator/LlamaChatSession.d.ts +0 -122
- package/dist/llamaEvaluator/LlamaChatSession.js +0 -236
- package/dist/llamaEvaluator/LlamaChatSession.js.map +0 -1
- package/dist/llamaEvaluator/LlamaContext.d.ts +0 -99
- package/dist/llamaEvaluator/LlamaContext.js +0 -143
- package/dist/llamaEvaluator/LlamaContext.js.map +0 -1
- package/dist/llamaEvaluator/LlamaGrammar.d.ts +0 -32
- package/dist/llamaEvaluator/LlamaGrammar.js.map +0 -1
- package/dist/llamaEvaluator/LlamaGrammarEvaluationState.d.ts +0 -14
- package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js +0 -16
- package/dist/llamaEvaluator/LlamaGrammarEvaluationState.js.map +0 -1
- package/dist/llamaEvaluator/LlamaJsonSchemaGrammar.js.map +0 -1
- package/dist/llamaEvaluator/LlamaModel.d.ts +0 -123
- package/dist/llamaEvaluator/LlamaModel.js +0 -74
- package/dist/llamaEvaluator/LlamaModel.js.map +0 -1
- package/dist/utils/binariesGithubRelease.js.map +0 -1
- package/dist/utils/clearLlamaBuild.d.ts +0 -1
- package/dist/utils/clearLlamaBuild.js +0 -12
- package/dist/utils/clearLlamaBuild.js.map +0 -1
- package/dist/utils/cloneLlamaCppRepo.d.ts +0 -2
- package/dist/utils/cloneLlamaCppRepo.js +0 -102
- package/dist/utils/cloneLlamaCppRepo.js.map +0 -1
- package/dist/utils/compileLLamaCpp.d.ts +0 -8
- package/dist/utils/compileLLamaCpp.js +0 -132
- package/dist/utils/compileLLamaCpp.js.map +0 -1
- package/dist/utils/getBin.d.ts +0 -53
- package/dist/utils/getBin.js +0 -78
- package/dist/utils/getBin.js.map +0 -1
- package/dist/utils/getReleaseInfo.d.ts +0 -7
- package/dist/utils/getReleaseInfo.js +0 -30
- package/dist/utils/getReleaseInfo.js.map +0 -1
- package/dist/utils/getTextCompletion.d.ts +0 -3
- package/dist/utils/getTextCompletion.js +0 -12
- package/dist/utils/getTextCompletion.js.map +0 -1
- package/dist/utils/usedBinFlag.d.ts +0 -6
- package/dist/utils/usedBinFlag.js +0 -15
- package/dist/utils/usedBinFlag.js.map +0 -1
- package/dist/utils/withLock.d.ts +0 -1
- package/dist/utils/withLock.js +0 -19
- package/dist/utils/withLock.js.map +0 -1
- package/llama/usedBin.json +0 -3
- package/llamaBins/mac-arm64/llama-addon.node +0 -0
- package/llamaBins/mac-x64/ggml-metal.metal +0 -6119
- /package/dist/{utils → bindings/utils}/binariesGithubRelease.d.ts +0 -0
- /package/llamaBins/{mac-arm64 → mac-arm64-metal}/ggml-metal.metal +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { parseModelFileName } from "../utils/parseModelFileName.js";
|
|
2
|
+
import { parseModelTypeDescription } from "../utils/parseModelTypeDescription.js";
|
|
3
|
+
import { LlamaChatWrapper } from "./LlamaChatWrapper.js";
|
|
4
|
+
import { ChatMLChatWrapper } from "./ChatMLChatWrapper.js";
|
|
5
|
+
import { GeneralChatWrapper } from "./GeneralChatWrapper.js";
|
|
6
|
+
import { FalconChatWrapper } from "./FalconChatWrapper.js";
|
|
7
|
+
import { FunctionaryChatWrapper } from "./FunctionaryChatWrapper.js";
|
|
8
|
+
import { AlpacaChatWrapper } from "./AlpacaChatWrapper.js";
|
|
9
|
+
/**
|
|
10
|
+
* @param options
|
|
11
|
+
*/
|
|
12
|
+
export function resolveChatWrapperBasedOnModel({ bosString, filename, typeDescription }) {
|
|
13
|
+
if (filename != null) {
|
|
14
|
+
const { name, subType, fileType } = parseModelFileName(filename);
|
|
15
|
+
if (fileType?.toLowerCase() === "gguf") {
|
|
16
|
+
const lowercaseName = name?.toLowerCase();
|
|
17
|
+
const lowercaseSubType = subType?.toLowerCase();
|
|
18
|
+
const splitLowercaseSubType = lowercaseSubType?.split("-") ?? [];
|
|
19
|
+
const firstSplitLowercaseSubType = splitLowercaseSubType[0];
|
|
20
|
+
if (lowercaseName === "llama") {
|
|
21
|
+
if (splitLowercaseSubType.includes("chat"))
|
|
22
|
+
return LlamaChatWrapper;
|
|
23
|
+
return GeneralChatWrapper;
|
|
24
|
+
}
|
|
25
|
+
else if (lowercaseName === "yarn" && firstSplitLowercaseSubType === "llama")
|
|
26
|
+
return LlamaChatWrapper;
|
|
27
|
+
else if (lowercaseName === "orca")
|
|
28
|
+
return ChatMLChatWrapper;
|
|
29
|
+
else if (lowercaseName === "phind" && lowercaseSubType === "codellama")
|
|
30
|
+
return LlamaChatWrapper;
|
|
31
|
+
else if (lowercaseName === "mistral")
|
|
32
|
+
return GeneralChatWrapper;
|
|
33
|
+
else if (firstSplitLowercaseSubType === "llama")
|
|
34
|
+
return LlamaChatWrapper;
|
|
35
|
+
else if (lowercaseSubType === "alpaca")
|
|
36
|
+
return AlpacaChatWrapper;
|
|
37
|
+
else if (lowercaseName === "functionary")
|
|
38
|
+
return FunctionaryChatWrapper;
|
|
39
|
+
else if (lowercaseName === "dolphin" && splitLowercaseSubType.includes("mistral"))
|
|
40
|
+
return ChatMLChatWrapper;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (typeDescription != null) {
|
|
44
|
+
const { arch } = parseModelTypeDescription(typeDescription);
|
|
45
|
+
if (arch === "llama")
|
|
46
|
+
return LlamaChatWrapper;
|
|
47
|
+
else if (arch === "falcon")
|
|
48
|
+
return FalconChatWrapper;
|
|
49
|
+
}
|
|
50
|
+
if (bosString === "" || bosString == null)
|
|
51
|
+
return null;
|
|
52
|
+
if ("<s>[INST] <<SYS>>\n".startsWith(bosString)) {
|
|
53
|
+
return LlamaChatWrapper;
|
|
54
|
+
}
|
|
55
|
+
else if ("<|im_start|>system\n".startsWith(bosString)) {
|
|
56
|
+
return ChatMLChatWrapper;
|
|
57
|
+
}
|
|
58
|
+
return null;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=resolveChatWrapperBasedOnModel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveChatWrapperBasedOnModel.js","sourceRoot":"","sources":["../../src/chatWrappers/resolveChatWrapperBasedOnModel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAC,yBAAyB,EAAC,MAAM,uCAAuC,CAAC;AAEhF,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,sBAAsB,EAAC,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AAGzD;;GAEG;AACH,MAAM,UAAU,8BAA8B,CAAC,EAC3C,SAAS,EACT,QAAQ,EACR,eAAe,EAOlB;IACG,IAAI,QAAQ,IAAI,IAAI,EAAE;QAClB,MAAM,EAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAE/D,IAAI,QAAQ,EAAE,WAAW,EAAE,KAAK,MAAM,EAAE;YACpC,MAAM,aAAa,GAAG,IAAI,EAAE,WAAW,EAAE,CAAC;YAC1C,MAAM,gBAAgB,GAAG,OAAO,EAAE,WAAW,EAAE,CAAC;YAChD,MAAM,qBAAqB,GAAG,gBAAgB,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;YACjE,MAAM,0BAA0B,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAE5D,IAAI,aAAa,KAAK,OAAO,EAAE;gBAC3B,IAAI,qBAAqB,CAAC,QAAQ,CAAC,MAAM,CAAC;oBACtC,OAAO,gBAAgB,CAAC;gBAE5B,OAAO,kBAAkB,CAAC;aAC7B;iBAAM,IAAI,aAAa,KAAK,MAAM,IAAI,0BAA0B,KAAK,OAAO;gBACzE,OAAO,gBAAgB,CAAC;iBACvB,IAAI,aAAa,KAAK,MAAM;gBAC7B,OAAO,iBAAiB,CAAC;iBACxB,IAAI,aAAa,KAAK,OAAO,IAAI,gBAAgB,KAAK,WAAW;gBAClE,OAAO,gBAAgB,CAAC;iBACvB,IAAI,aAAa,KAAK,SAAS;gBAChC,OAAO,kBAAkB,CAAC;iBACzB,IAAI,0BAA0B,KAAK,OAAO;gBAC3C,OAAO,gBAAgB,CAAC;iBACvB,IAAI,gBAAgB,KAAK,QAAQ;gBAClC,OAAO,iBAAiB,CAAC;iBACxB,IAAI,aAAa,KAAK,aAAa;gBACpC,OAAO,sBAAsB,CAAC;iBAC7B,IAAI,aAAa,KAAK,SAAS,IAAI,qBAAqB,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC7E,OAAO,iBAAiB,CAAC;SAChC;KACJ;IAED,IAAI,eAAe,IAAI,IAAI,EAAE;QACzB,MAAM,EAAC,IAAI,EAAC,GAAG,yBAAyB,CAAC,eAAe,CAAC,CAAC;QAE1D,IAAI,IAAI,KAAK,OAAO;YAChB,OAAO,gBAAgB,CAAC;aACvB,IAAI,IAAI,KAAK,QAAQ;YACtB,OAAO,iBAAiB,CAAC;KAChC;IAED,IAAI,SAAS,KAAK,EAAE,IAAI,SAAS,IAAI,IAAI;QACrC,OAAO,IAAI,CAAC;IAEhB,IAAI,qBAAqB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QAC7C,OAAO,gBAAgB,CAAC;KAC3B;SAAM,IAAI,sBAAsB,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE;QACrD,OAAO,iBAAiB,CAAC;KAC5B;IAED,OAAO,IAAI,CAAC;AAChB,CAAC"}
|
package/dist/cli/cli.js
CHANGED
|
@@ -2,17 +2,20 @@
|
|
|
2
2
|
import { fileURLToPath } from "url";
|
|
3
3
|
import path from "path";
|
|
4
4
|
import yargs from "yargs";
|
|
5
|
-
// eslint-disable-next-line
|
|
5
|
+
// eslint-disable-next-line n/file-extension-in-import
|
|
6
6
|
import { hideBin } from "yargs/helpers";
|
|
7
7
|
import fs from "fs-extra";
|
|
8
8
|
import { cliBinName } from "../config.js";
|
|
9
|
+
import { setIsRunningFromCLI } from "../state.js";
|
|
9
10
|
import { DownloadCommand } from "./commands/DownloadCommand.js";
|
|
10
11
|
import { BuildCommand } from "./commands/BuildCommand.js";
|
|
11
12
|
import { OnPostInstallCommand } from "./commands/OnPostInstallCommand.js";
|
|
12
13
|
import { ClearCommand } from "./commands/ClearCommand.js";
|
|
13
14
|
import { ChatCommand } from "./commands/ChatCommand.js";
|
|
15
|
+
import { DebugCommand } from "./commands/DebugCommand.js";
|
|
14
16
|
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
15
17
|
const packageJson = fs.readJSONSync(path.join(__dirname, "..", "..", "package.json"));
|
|
18
|
+
setIsRunningFromCLI(true);
|
|
16
19
|
const yarg = yargs(hideBin(process.argv));
|
|
17
20
|
yarg
|
|
18
21
|
.scriptName(cliBinName)
|
|
@@ -22,6 +25,7 @@ yarg
|
|
|
22
25
|
.command(ClearCommand)
|
|
23
26
|
.command(ChatCommand)
|
|
24
27
|
.command(OnPostInstallCommand)
|
|
28
|
+
.command(DebugCommand)
|
|
25
29
|
.recommendCommands()
|
|
26
30
|
.demandCommand(1)
|
|
27
31
|
.strict()
|
package/dist/cli/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAC,aAAa,EAAC,MAAM,KAAK,CAAC;AAClC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,sDAAsD;AACtD,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AACxC,OAAO,EAAC,mBAAmB,EAAC,MAAM,aAAa,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,oBAAoB,EAAC,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AACxD,OAAO,EAAC,WAAW,EAAC,MAAM,2BAA2B,CAAC;AACtD,OAAO,EAAC,YAAY,EAAC,MAAM,4BAA4B,CAAC;AAExD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE/D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC;AAEtF,mBAAmB,CAAC,IAAI,CAAC,CAAC;AAE1B,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,IAAI;KACC,UAAU,CAAC,UAAU,CAAC;KACtB,KAAK,CAAC,+BAA+B,CAAC;KACtC,OAAO,CAAC,eAAe,CAAC;KACxB,OAAO,CAAC,YAAY,CAAC;KACrB,OAAO,CAAC,YAAY,CAAC;KACrB,OAAO,CAAC,WAAW,CAAC;KACpB,OAAO,CAAC,oBAAoB,CAAC;KAC7B,OAAO,CAAC,YAAY,CAAC;KACrB,iBAAiB,EAAE;KACnB,aAAa,CAAC,CAAC,CAAC;KAChB,MAAM,EAAE;KACR,cAAc,EAAE;KAChB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;KACrB,IAAI,CAAC,GAAG,CAAC;KACT,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;KAClB,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC;KAC5B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;KACzC,KAAK,EAAE,CAAC"}
|
|
@@ -4,7 +4,8 @@ type BuildCommand = {
|
|
|
4
4
|
nodeTarget?: string;
|
|
5
5
|
metal?: boolean;
|
|
6
6
|
cuda?: boolean;
|
|
7
|
+
noUsageExample?: boolean;
|
|
7
8
|
};
|
|
8
9
|
export declare const BuildCommand: CommandModule<object, BuildCommand>;
|
|
9
|
-
export declare function BuildLlamaCppCommand({ arch, nodeTarget, metal, cuda }: BuildCommand): Promise<void>;
|
|
10
|
+
export declare function BuildLlamaCppCommand({ arch, nodeTarget, metal, cuda, noUsageExample, noCustomCmakeBuildOptionsInBinaryFolderName }: BuildCommand): Promise<void>;
|
|
10
11
|
export {};
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import process from "process";
|
|
2
2
|
import chalk from "chalk";
|
|
3
|
-
import
|
|
4
|
-
import { compileLlamaCpp } from "../../utils/compileLLamaCpp.js";
|
|
3
|
+
import { compileLlamaCpp } from "../../bindings/utils/compileLLamaCpp.js";
|
|
5
4
|
import withOra from "../../utils/withOra.js";
|
|
6
5
|
import { clearTempFolder } from "../../utils/clearTempFolder.js";
|
|
7
|
-
import { defaultLlamaCppCudaSupport, defaultLlamaCppMetalSupport,
|
|
6
|
+
import { builtinLlamaCppGitHubRepo, builtinLlamaCppRelease, defaultLlamaCppCudaSupport, defaultLlamaCppMetalSupport, isCI } from "../../config.js";
|
|
8
7
|
import { downloadCmakeIfNeeded } from "../../utils/cmake.js";
|
|
9
8
|
import withStatusLogs from "../../utils/withStatusLogs.js";
|
|
10
9
|
import { getIsInDocumentationMode } from "../../state.js";
|
|
10
|
+
import { logBinaryUsageExampleToConsole } from "../../bindings/utils/logBinaryUsageExampleToConsole.js";
|
|
11
|
+
import { getPlatform } from "../../bindings/utils/getPlatform.js";
|
|
12
|
+
import { resolveCustomCmakeOptions } from "../../bindings/utils/resolveCustomCmakeOptions.js";
|
|
13
|
+
import { getClonedLlamaCppRepoReleaseInfo, isLlamaCppRepoCloned } from "../../bindings/utils/cloneLlamaCppRepo.js";
|
|
11
14
|
export const BuildCommand = {
|
|
12
15
|
command: "build",
|
|
13
16
|
describe: "Compile the currently downloaded llama.cpp",
|
|
@@ -33,15 +36,31 @@ export const BuildCommand = {
|
|
|
33
36
|
type: "boolean",
|
|
34
37
|
default: defaultLlamaCppCudaSupport,
|
|
35
38
|
description: "Compile llama.cpp with CUDA support. Can also be set via the NODE_LLAMA_CPP_CUDA environment variable"
|
|
39
|
+
})
|
|
40
|
+
.option("noUsageExample", {
|
|
41
|
+
alias: "nu",
|
|
42
|
+
type: "boolean",
|
|
43
|
+
default: false,
|
|
44
|
+
description: "Don't print code usage example after building"
|
|
45
|
+
})
|
|
46
|
+
.option("noCustomCmakeBuildOptionsInBinaryFolderName", {
|
|
47
|
+
type: "boolean",
|
|
48
|
+
hidden: true,
|
|
49
|
+
default: false,
|
|
50
|
+
description: "Don't include custom CMake build options in build folder name"
|
|
36
51
|
});
|
|
37
52
|
},
|
|
38
53
|
handler: BuildLlamaCppCommand
|
|
39
54
|
};
|
|
40
|
-
export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = undefined, metal = defaultLlamaCppMetalSupport, cuda = defaultLlamaCppCudaSupport }) {
|
|
41
|
-
if (!(await
|
|
55
|
+
export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = undefined, metal = defaultLlamaCppMetalSupport, cuda = defaultLlamaCppCudaSupport, noUsageExample = false, noCustomCmakeBuildOptionsInBinaryFolderName = false }) {
|
|
56
|
+
if (!(await isLlamaCppRepoCloned())) {
|
|
42
57
|
console.log(chalk.red('llama.cpp is not downloaded. Please run "node-llama-cpp download" first'));
|
|
43
58
|
process.exit(1);
|
|
44
59
|
}
|
|
60
|
+
const includeBuildOptionsInBinaryFolderName = !noCustomCmakeBuildOptionsInBinaryFolderName || !isCI;
|
|
61
|
+
const clonedLlamaCppRepoReleaseInfo = await getClonedLlamaCppRepoReleaseInfo();
|
|
62
|
+
const platform = getPlatform();
|
|
63
|
+
const customCmakeOptions = resolveCustomCmakeOptions();
|
|
45
64
|
if (metal && process.platform === "darwin") {
|
|
46
65
|
console.log(`${chalk.yellow("Metal:")} enabled`);
|
|
47
66
|
}
|
|
@@ -49,17 +68,33 @@ export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = unde
|
|
|
49
68
|
console.log(`${chalk.yellow("CUDA:")} enabled`);
|
|
50
69
|
}
|
|
51
70
|
await downloadCmakeIfNeeded(true);
|
|
71
|
+
const buildOptions = {
|
|
72
|
+
customCmakeOptions,
|
|
73
|
+
progressLogs: true,
|
|
74
|
+
platform,
|
|
75
|
+
arch: arch
|
|
76
|
+
? arch
|
|
77
|
+
: process.arch,
|
|
78
|
+
computeLayers: {
|
|
79
|
+
metal,
|
|
80
|
+
cuda
|
|
81
|
+
},
|
|
82
|
+
llamaCpp: {
|
|
83
|
+
repo: clonedLlamaCppRepoReleaseInfo?.llamaCppGithubRepo ?? builtinLlamaCppGitHubRepo,
|
|
84
|
+
release: clonedLlamaCppRepoReleaseInfo?.tag ?? builtinLlamaCppRelease
|
|
85
|
+
}
|
|
86
|
+
};
|
|
52
87
|
await withStatusLogs({
|
|
53
88
|
loading: chalk.blue("Compiling llama.cpp"),
|
|
54
89
|
success: chalk.blue("Compiled llama.cpp"),
|
|
55
90
|
fail: chalk.blue("Failed to compile llama.cpp")
|
|
56
91
|
}, async () => {
|
|
57
|
-
await compileLlamaCpp({
|
|
58
|
-
arch: arch ? arch : undefined,
|
|
92
|
+
await compileLlamaCpp(buildOptions, {
|
|
59
93
|
nodeTarget: nodeTarget ? nodeTarget : undefined,
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
94
|
+
updateLastBuildInfo: true,
|
|
95
|
+
downloadCmakeIfNeeded: false,
|
|
96
|
+
ensureLlamaCppRepoIsCloned: false,
|
|
97
|
+
includeBuildOptionsInBinaryFolderName
|
|
63
98
|
});
|
|
64
99
|
});
|
|
65
100
|
await withOra({
|
|
@@ -69,5 +104,10 @@ export async function BuildLlamaCppCommand({ arch = undefined, nodeTarget = unde
|
|
|
69
104
|
}, async () => {
|
|
70
105
|
await clearTempFolder();
|
|
71
106
|
});
|
|
107
|
+
if (!noUsageExample) {
|
|
108
|
+
console.log();
|
|
109
|
+
logBinaryUsageExampleToConsole(buildOptions, true);
|
|
110
|
+
console.log();
|
|
111
|
+
}
|
|
72
112
|
}
|
|
73
113
|
//# sourceMappingURL=BuildCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BuildCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/BuildCommand.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,
|
|
1
|
+
{"version":3,"file":"BuildCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/BuildCommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { CommandModule } from "yargs";
|
|
2
|
-
import
|
|
3
|
-
declare const modelWrappers: readonly ["auto", "general", "llamaChat", "chatML", "falconChat"];
|
|
2
|
+
import { LlamaGrammar } from "../../evaluator/LlamaGrammar.js";
|
|
3
|
+
declare const modelWrappers: readonly ["auto", "general", "llamaChat", "alpacaChat", "functionary", "chatML", "falconChat"];
|
|
4
4
|
type ChatCommand = {
|
|
5
5
|
model: string;
|
|
6
6
|
systemInfo: boolean;
|
|
7
|
-
printTimings: boolean;
|
|
8
7
|
systemPrompt: string;
|
|
8
|
+
systemPromptFile?: string;
|
|
9
9
|
prompt?: string;
|
|
10
|
+
promptFile?: string;
|
|
10
11
|
wrapper: (typeof modelWrappers)[number];
|
|
11
12
|
contextSize: number;
|
|
12
|
-
|
|
13
|
+
batchSize?: number;
|
|
14
|
+
grammar: "text" | Parameters<typeof LlamaGrammar.getFor>[1];
|
|
13
15
|
jsonSchemaGrammarFile?: string;
|
|
14
16
|
threads: number;
|
|
15
17
|
temperature: number;
|
|
18
|
+
minP: number;
|
|
16
19
|
topK: number;
|
|
17
20
|
topP: number;
|
|
18
21
|
gpuLayers?: number;
|
|
@@ -23,6 +26,9 @@ type ChatCommand = {
|
|
|
23
26
|
repeatPresencePenalty?: number;
|
|
24
27
|
maxTokens: number;
|
|
25
28
|
noHistory: boolean;
|
|
29
|
+
environmentFunctions: boolean;
|
|
30
|
+
noInfoLog: boolean;
|
|
31
|
+
printTimings: boolean;
|
|
26
32
|
};
|
|
27
33
|
export declare const ChatCommand: CommandModule<object, ChatCommand>;
|
|
28
34
|
export {};
|
|
@@ -3,16 +3,26 @@ import process from "process";
|
|
|
3
3
|
import path from "path";
|
|
4
4
|
import chalk from "chalk";
|
|
5
5
|
import fs from "fs-extra";
|
|
6
|
-
import withOra from "../../utils/withOra.js";
|
|
7
6
|
import { chatCommandHistoryFilePath, defaultChatSystemPrompt } from "../../config.js";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
7
|
+
import { LlamaChatWrapper } from "../../chatWrappers/LlamaChatWrapper.js";
|
|
8
|
+
import { GeneralChatWrapper } from "../../chatWrappers/GeneralChatWrapper.js";
|
|
9
|
+
import { ChatMLChatWrapper } from "../../chatWrappers/ChatMLChatWrapper.js";
|
|
10
|
+
import { resolveChatWrapperBasedOnModel } from "../../chatWrappers/resolveChatWrapperBasedOnModel.js";
|
|
11
|
+
import { FalconChatWrapper } from "../../chatWrappers/FalconChatWrapper.js";
|
|
13
12
|
import { getIsInDocumentationMode } from "../../state.js";
|
|
14
13
|
import { ReplHistory } from "../../utils/ReplHistory.js";
|
|
15
|
-
|
|
14
|
+
import withStatusLogs from "../../utils/withStatusLogs.js";
|
|
15
|
+
import { AlpacaChatWrapper } from "../../chatWrappers/AlpacaChatWrapper.js";
|
|
16
|
+
import { FunctionaryChatWrapper } from "../../chatWrappers/FunctionaryChatWrapper.js";
|
|
17
|
+
import { defineChatSessionFunction } from "../../evaluator/LlamaChatSession/utils/defineChatSessionFunction.js";
|
|
18
|
+
import { getLlama } from "../../bindings/getLlama.js";
|
|
19
|
+
import { LlamaGrammar } from "../../evaluator/LlamaGrammar.js";
|
|
20
|
+
import { LlamaChatSession } from "../../evaluator/LlamaChatSession/LlamaChatSession.js";
|
|
21
|
+
import { LlamaModel } from "../../evaluator/LlamaModel.js";
|
|
22
|
+
import { LlamaContext } from "../../evaluator/LlamaContext/LlamaContext.js";
|
|
23
|
+
import { LlamaJsonSchemaGrammar } from "../../evaluator/LlamaJsonSchemaGrammar.js";
|
|
24
|
+
import { LlamaLogLevel } from "../../bindings/types.js";
|
|
25
|
+
const modelWrappers = ["auto", "general", "llamaChat", "alpacaChat", "functionary", "chatML", "falconChat"];
|
|
16
26
|
export const ChatCommand = {
|
|
17
27
|
command: "chat",
|
|
18
28
|
describe: "Chat with a Llama model",
|
|
@@ -32,12 +42,6 @@ export const ChatCommand = {
|
|
|
32
42
|
default: false,
|
|
33
43
|
description: "Print llama.cpp system info",
|
|
34
44
|
group: "Optional:"
|
|
35
|
-
})
|
|
36
|
-
.option("printTimings", {
|
|
37
|
-
type: "boolean",
|
|
38
|
-
default: false,
|
|
39
|
-
description: "Print llama.cpp timings",
|
|
40
|
-
group: "Optional:"
|
|
41
45
|
})
|
|
42
46
|
.option("systemPrompt", {
|
|
43
47
|
alias: "s",
|
|
@@ -47,16 +51,26 @@ export const ChatCommand = {
|
|
|
47
51
|
description: "System prompt to use against the model" +
|
|
48
52
|
(isInDocumentationMode ? "" : (". [default value: " + defaultChatSystemPrompt.split("\n").join(" ") + "]")),
|
|
49
53
|
group: "Optional:"
|
|
54
|
+
})
|
|
55
|
+
.option("systemPromptFile", {
|
|
56
|
+
type: "string",
|
|
57
|
+
description: "Path to a file to load text from and use as as the model system prompt",
|
|
58
|
+
group: "Optional:"
|
|
50
59
|
})
|
|
51
60
|
.option("prompt", {
|
|
52
61
|
type: "string",
|
|
53
62
|
description: "First prompt to automatically send to the model when starting the chat",
|
|
54
63
|
group: "Optional:"
|
|
64
|
+
})
|
|
65
|
+
.option("promptFile", {
|
|
66
|
+
type: "string",
|
|
67
|
+
description: "Path to a file to load text from and use as a first prompt to automatically send to the model when starting the chat",
|
|
68
|
+
group: "Optional:"
|
|
55
69
|
})
|
|
56
70
|
.option("wrapper", {
|
|
57
71
|
alias: "w",
|
|
58
72
|
type: "string",
|
|
59
|
-
default: "
|
|
73
|
+
default: "auto",
|
|
60
74
|
choices: modelWrappers,
|
|
61
75
|
description: "Chat wrapper to use. Use `auto` to automatically select a wrapper based on the model's BOS token",
|
|
62
76
|
group: "Optional:"
|
|
@@ -65,7 +79,13 @@ export const ChatCommand = {
|
|
|
65
79
|
alias: "c",
|
|
66
80
|
type: "number",
|
|
67
81
|
default: 1024 * 4,
|
|
68
|
-
description: "Context size to use for the model",
|
|
82
|
+
description: "Context size to use for the model context",
|
|
83
|
+
group: "Optional:"
|
|
84
|
+
})
|
|
85
|
+
.option("batchSize", {
|
|
86
|
+
alias: "b",
|
|
87
|
+
type: "number",
|
|
88
|
+
description: "Batch size to use for the model context. The default value is the context size",
|
|
69
89
|
group: "Optional:"
|
|
70
90
|
})
|
|
71
91
|
.option("grammar", {
|
|
@@ -94,6 +114,13 @@ export const ChatCommand = {
|
|
|
94
114
|
default: 0,
|
|
95
115
|
description: "Temperature is a hyperparameter that controls the randomness of the generated text. It affects the probability distribution of the model's output tokens. A higher temperature (e.g., 1.5) makes the output more random and creative, while a lower temperature (e.g., 0.5) makes the output more focused, deterministic, and conservative. The suggested temperature is 0.8, which provides a balance between randomness and determinism. At the extreme, a temperature of 0 will always pick the most likely next token, leading to identical outputs in each run. Set to `0` to disable.",
|
|
96
116
|
group: "Optional:"
|
|
117
|
+
})
|
|
118
|
+
.option("minP", {
|
|
119
|
+
alias: "mp",
|
|
120
|
+
type: "number",
|
|
121
|
+
default: 0,
|
|
122
|
+
description: "From the next token candidates, discard the percentage of tokens with the lowest probability. For example, if set to `0.05`, 5% of the lowest probability tokens will be discarded. This is useful for generating more high-quality results when using a high temperature. Set to a value between `0` and `1` to enable. Only relevant when `temperature` is set to a value greater than `0`.",
|
|
123
|
+
group: "Optional:"
|
|
97
124
|
})
|
|
98
125
|
.option("topK", {
|
|
99
126
|
alias: "k",
|
|
@@ -161,14 +188,36 @@ export const ChatCommand = {
|
|
|
161
188
|
default: false,
|
|
162
189
|
description: "Don't load or save chat history",
|
|
163
190
|
group: "Optional:"
|
|
191
|
+
})
|
|
192
|
+
.option("environmentFunctions", {
|
|
193
|
+
alias: "ef",
|
|
194
|
+
type: "boolean",
|
|
195
|
+
default: false,
|
|
196
|
+
description: "Provide access to environment functions like `getDate` and `getTime`",
|
|
197
|
+
group: "Optional:"
|
|
198
|
+
})
|
|
199
|
+
.option("noInfoLog", {
|
|
200
|
+
alias: "nl",
|
|
201
|
+
type: "boolean",
|
|
202
|
+
default: false,
|
|
203
|
+
description: "Disable llama.cpp info logs",
|
|
204
|
+
group: "Optional:"
|
|
205
|
+
})
|
|
206
|
+
.option("printTimings", {
|
|
207
|
+
alias: "pt",
|
|
208
|
+
type: "boolean",
|
|
209
|
+
default: false,
|
|
210
|
+
description: "Print llama.cpp timings after each response",
|
|
211
|
+
group: "Optional:"
|
|
164
212
|
});
|
|
165
213
|
},
|
|
166
|
-
async handler({ model, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar, jsonSchemaGrammarFile, threads, temperature, topK, topP, gpuLayers, repeatPenalty, lastTokensRepeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, printTimings }) {
|
|
214
|
+
async handler({ model, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize, grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers, repeatPenalty, lastTokensRepeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, environmentFunctions, noInfoLog, printTimings }) {
|
|
167
215
|
try {
|
|
168
216
|
await RunChat({
|
|
169
|
-
model, systemInfo, systemPrompt,
|
|
170
|
-
|
|
171
|
-
|
|
217
|
+
model, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize,
|
|
218
|
+
grammar, jsonSchemaGrammarFile, threads, temperature, minP, topK, topP, gpuLayers, lastTokensRepeatPenalty,
|
|
219
|
+
repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens,
|
|
220
|
+
noHistory, environmentFunctions, noInfoLog, printTimings
|
|
172
221
|
});
|
|
173
222
|
}
|
|
174
223
|
catch (err) {
|
|
@@ -177,41 +226,81 @@ export const ChatCommand = {
|
|
|
177
226
|
}
|
|
178
227
|
}
|
|
179
228
|
};
|
|
180
|
-
async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrapper, contextSize, grammar: grammarArg, jsonSchemaGrammarFile: jsonSchemaGrammarFilePath, threads, temperature, topK, topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, printTimings }) {
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const
|
|
184
|
-
|
|
185
|
-
|
|
229
|
+
async function RunChat({ model: modelArg, systemInfo, systemPrompt, systemPromptFile, prompt, promptFile, wrapper, contextSize, batchSize, grammar: grammarArg, jsonSchemaGrammarFile: jsonSchemaGrammarFilePath, threads, temperature, minP, topK, topP, gpuLayers, lastTokensRepeatPenalty, repeatPenalty, penalizeRepeatingNewLine, repeatFrequencyPenalty, repeatPresencePenalty, maxTokens, noHistory, environmentFunctions, noInfoLog, printTimings }) {
|
|
230
|
+
if (noInfoLog)
|
|
231
|
+
console.info(`${chalk.yellow("Log level:")} warn`);
|
|
232
|
+
const llama = await getLlama("lastBuild", {
|
|
233
|
+
logLevel: noInfoLog
|
|
234
|
+
? LlamaLogLevel.warn
|
|
235
|
+
: LlamaLogLevel.debug
|
|
236
|
+
});
|
|
237
|
+
const logBatchSize = batchSize != null;
|
|
238
|
+
if (systemInfo)
|
|
239
|
+
console.log(llama.systemInfo);
|
|
240
|
+
if (systemPromptFile != null && systemPromptFile !== "") {
|
|
241
|
+
if (systemPrompt != null && systemPrompt !== "" && systemPrompt !== defaultChatSystemPrompt)
|
|
242
|
+
console.warn(chalk.yellow("Both `systemPrompt` and `systemPromptFile` were specified. `systemPromptFile` will be used."));
|
|
243
|
+
systemPrompt = await fs.readFile(path.resolve(process.cwd(), systemPromptFile), "utf8");
|
|
244
|
+
}
|
|
245
|
+
if (promptFile != null && promptFile !== "") {
|
|
246
|
+
if (prompt != null && prompt !== "")
|
|
247
|
+
console.warn(chalk.yellow("Both `prompt` and `promptFile` were specified. `promptFile` will be used."));
|
|
248
|
+
prompt = await fs.readFile(path.resolve(process.cwd(), promptFile), "utf8");
|
|
249
|
+
}
|
|
250
|
+
if (batchSize == null)
|
|
251
|
+
batchSize = contextSize;
|
|
252
|
+
else if (batchSize > contextSize) {
|
|
253
|
+
console.warn(chalk.yellow("Batch size is greater than the context size. Batch size will be set to the context size."));
|
|
254
|
+
batchSize = contextSize;
|
|
255
|
+
}
|
|
186
256
|
let initialPrompt = prompt ?? null;
|
|
187
|
-
const model =
|
|
257
|
+
const model = await withStatusLogs({
|
|
258
|
+
loading: chalk.blue("Loading model"),
|
|
259
|
+
success: chalk.blue("Model loaded"),
|
|
260
|
+
fail: chalk.blue("Failed to load model")
|
|
261
|
+
}, async () => new LlamaModel({
|
|
262
|
+
llama,
|
|
188
263
|
modelPath: path.resolve(process.cwd(), modelArg),
|
|
189
264
|
gpuLayers: gpuLayers != null ? gpuLayers : undefined
|
|
190
|
-
});
|
|
191
|
-
const context =
|
|
265
|
+
}));
|
|
266
|
+
const context = await withStatusLogs({
|
|
267
|
+
loading: chalk.blue("Creating context"),
|
|
268
|
+
success: chalk.blue("Context created"),
|
|
269
|
+
fail: chalk.blue("Failed to create context")
|
|
270
|
+
}, async () => new LlamaContext({
|
|
192
271
|
model,
|
|
193
272
|
contextSize,
|
|
273
|
+
batchSize,
|
|
194
274
|
threads
|
|
195
|
-
});
|
|
275
|
+
}));
|
|
196
276
|
const grammar = jsonSchemaGrammarFilePath != null
|
|
197
|
-
? new LlamaJsonSchemaGrammar(await fs.readJson(path.resolve(process.cwd(), jsonSchemaGrammarFilePath)))
|
|
277
|
+
? new LlamaJsonSchemaGrammar(llama, await fs.readJson(path.resolve(process.cwd(), jsonSchemaGrammarFilePath)))
|
|
198
278
|
: grammarArg !== "text"
|
|
199
|
-
? await LlamaGrammar.getFor(grammarArg)
|
|
279
|
+
? await LlamaGrammar.getFor(llama, grammarArg)
|
|
200
280
|
: undefined;
|
|
201
|
-
const bos =
|
|
202
|
-
const eos =
|
|
203
|
-
const
|
|
281
|
+
const bos = model.tokens.bosString; // bos = beginning of sequence
|
|
282
|
+
const eos = model.tokens.bosString; // eos = end of sequence
|
|
283
|
+
const chatWrapper = getChatWrapper(wrapper, {
|
|
284
|
+
bosString: bos,
|
|
285
|
+
filename: model.filename,
|
|
286
|
+
typeDescription: model.typeDescription
|
|
287
|
+
});
|
|
204
288
|
const session = new LlamaChatSession({
|
|
205
|
-
context,
|
|
206
|
-
printLLamaSystemInfo: systemInfo,
|
|
289
|
+
contextSequence: context.getSequence(),
|
|
207
290
|
systemPrompt,
|
|
208
|
-
|
|
291
|
+
chatWrapper: chatWrapper
|
|
209
292
|
});
|
|
293
|
+
await new Promise((accept) => setTimeout(accept, 0)); // wait for logs to finish printing
|
|
210
294
|
if (grammarArg != "text" && jsonSchemaGrammarFilePath != null)
|
|
211
295
|
console.warn(chalk.yellow("Both `grammar` and `jsonSchemaGrammarFile` were specified. `jsonSchemaGrammarFile` will be used."));
|
|
296
|
+
console.info(`${chalk.yellow("Context size:")} ${context.contextSize}`);
|
|
297
|
+
if (logBatchSize)
|
|
298
|
+
console.info(`${chalk.yellow("Batch size:")} ${context.batchSize}`);
|
|
299
|
+
console.info(`${chalk.yellow("Train context size:")} ${model.trainContextSize}`);
|
|
300
|
+
console.info(`${chalk.yellow("Model type:")} ${model.typeDescription}`);
|
|
212
301
|
console.info(`${chalk.yellow("BOS:")} ${bos}`);
|
|
213
302
|
console.info(`${chalk.yellow("EOS:")} ${eos}`);
|
|
214
|
-
console.info(`${chalk.yellow("Chat wrapper:")} ${
|
|
303
|
+
console.info(`${chalk.yellow("Chat wrapper:")} ${chatWrapper.wrapperName}`);
|
|
215
304
|
console.info(`${chalk.yellow("Repeat penalty:")} ${repeatPenalty} (apply to last ${lastTokensRepeatPenalty} tokens)`);
|
|
216
305
|
if (repeatFrequencyPenalty != null)
|
|
217
306
|
console.info(`${chalk.yellow("Repeat frequency penalty:")} ${repeatFrequencyPenalty}`);
|
|
@@ -223,13 +312,10 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
|
|
|
223
312
|
console.info(`${chalk.yellow("JSON schema grammar file:")} ${path.relative(process.cwd(), path.resolve(process.cwd(), jsonSchemaGrammarFilePath))}`);
|
|
224
313
|
else if (grammarArg !== "text")
|
|
225
314
|
console.info(`${chalk.yellow("Grammar:")} ${grammarArg}`);
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
}, async () => {
|
|
231
|
-
await session.init();
|
|
232
|
-
});
|
|
315
|
+
if (environmentFunctions && grammar != null) {
|
|
316
|
+
console.warn(chalk.yellow("Environment functions are disabled since a grammar is already specified"));
|
|
317
|
+
environmentFunctions = false;
|
|
318
|
+
}
|
|
233
319
|
// this is for ora to not interfere with readline
|
|
234
320
|
await new Promise(resolve => setTimeout(resolve, 1));
|
|
235
321
|
const replHistory = await ReplHistory.load(chatCommandHistoryFilePath, !noHistory);
|
|
@@ -260,8 +346,9 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
|
|
|
260
346
|
const [startColor, endColor] = chalk.blue("MIDDLE").split("MIDDLE");
|
|
261
347
|
process.stdout.write(startColor);
|
|
262
348
|
await session.prompt(input, {
|
|
263
|
-
grammar,
|
|
349
|
+
grammar: grammar,
|
|
264
350
|
temperature,
|
|
351
|
+
minP,
|
|
265
352
|
topK,
|
|
266
353
|
topP,
|
|
267
354
|
repeatPenalty: {
|
|
@@ -272,37 +359,62 @@ async function RunChat({ model: modelArg, systemInfo, systemPrompt, prompt, wrap
|
|
|
272
359
|
lastTokens: lastTokensRepeatPenalty
|
|
273
360
|
},
|
|
274
361
|
maxTokens: maxTokens === -1
|
|
275
|
-
? context.
|
|
362
|
+
? context.contextSize
|
|
276
363
|
: maxTokens <= 0
|
|
277
364
|
? undefined
|
|
278
365
|
: maxTokens,
|
|
279
366
|
onToken(chunk) {
|
|
280
|
-
process.stdout.write(
|
|
281
|
-
}
|
|
367
|
+
process.stdout.write(model.detokenize(chunk));
|
|
368
|
+
},
|
|
369
|
+
functions: (grammar == null && environmentFunctions)
|
|
370
|
+
? defaultEnvironmentFunctions
|
|
371
|
+
: undefined
|
|
282
372
|
});
|
|
283
373
|
process.stdout.write(endColor);
|
|
284
374
|
console.log();
|
|
285
375
|
if (printTimings)
|
|
286
|
-
context.printTimings();
|
|
376
|
+
await context.printTimings();
|
|
287
377
|
}
|
|
288
378
|
}
|
|
289
|
-
|
|
379
|
+
const defaultEnvironmentFunctions = {
|
|
380
|
+
getDate: defineChatSessionFunction({
|
|
381
|
+
description: "Retrieve the current date",
|
|
382
|
+
handler() {
|
|
383
|
+
return new Date().toLocaleDateString();
|
|
384
|
+
}
|
|
385
|
+
}),
|
|
386
|
+
getTime: defineChatSessionFunction({
|
|
387
|
+
description: "Retrieve the current time",
|
|
388
|
+
handler() {
|
|
389
|
+
return new Date().toLocaleTimeString();
|
|
390
|
+
}
|
|
391
|
+
})
|
|
392
|
+
};
|
|
393
|
+
function getChatWrapper(wrapper, { bosString, filename, typeDescription }) {
|
|
290
394
|
switch (wrapper) {
|
|
291
395
|
case "general":
|
|
292
|
-
return new
|
|
396
|
+
return new GeneralChatWrapper();
|
|
293
397
|
case "llamaChat":
|
|
294
|
-
return new
|
|
398
|
+
return new LlamaChatWrapper();
|
|
399
|
+
case "alpacaChat":
|
|
400
|
+
return new AlpacaChatWrapper();
|
|
401
|
+
case "functionary":
|
|
402
|
+
return new FunctionaryChatWrapper();
|
|
295
403
|
case "chatML":
|
|
296
|
-
return new
|
|
404
|
+
return new ChatMLChatWrapper();
|
|
297
405
|
case "falconChat":
|
|
298
|
-
return new
|
|
406
|
+
return new FalconChatWrapper();
|
|
299
407
|
default:
|
|
300
408
|
}
|
|
301
409
|
if (wrapper === "auto") {
|
|
302
|
-
const chatWrapper =
|
|
410
|
+
const chatWrapper = resolveChatWrapperBasedOnModel({
|
|
411
|
+
bosString,
|
|
412
|
+
filename,
|
|
413
|
+
typeDescription
|
|
414
|
+
});
|
|
303
415
|
if (chatWrapper != null)
|
|
304
416
|
return new chatWrapper();
|
|
305
|
-
return new
|
|
417
|
+
return new GeneralChatWrapper();
|
|
306
418
|
}
|
|
307
419
|
void (wrapper);
|
|
308
420
|
throw new Error("Unknown wrapper: " + wrapper);
|