node-llama-cpp 3.17.1 → 3.18.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bindings/AddonTypes.d.ts +11 -0
- package/dist/bindings/Llama.js +20 -2
- package/dist/bindings/Llama.js.map +1 -1
- package/dist/bindings/getLlama.d.ts +1 -1
- package/dist/bindings/getLlama.js +19 -8
- package/dist/bindings/getLlama.js.map +1 -1
- package/dist/bindings/utils/compileLLamaCpp.d.ts +2 -1
- package/dist/bindings/utils/compileLLamaCpp.js +8 -0
- package/dist/bindings/utils/compileLLamaCpp.js.map +1 -1
- package/dist/bindings/utils/getLlamaGpuTypes.js +2 -0
- package/dist/bindings/utils/getLlamaGpuTypes.js.map +1 -1
- package/dist/chatWrappers/QwenChatWrapper.d.ts +7 -0
- package/dist/chatWrappers/QwenChatWrapper.js +176 -56
- package/dist/chatWrappers/QwenChatWrapper.js.map +1 -1
- package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js +127 -88
- package/dist/chatWrappers/generic/JinjaTemplateChatWrapper.js.map +1 -1
- package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.d.ts +16 -10
- package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js +115 -5
- package/dist/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.js.map +1 -1
- package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js +1 -0
- package/dist/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.js.map +1 -1
- package/dist/cli/commands/ChatCommand.js +1 -1
- package/dist/cli/commands/ChatCommand.js.map +1 -1
- package/dist/cli/commands/inspect/commands/InspectGpuCommand.js +51 -4
- package/dist/cli/commands/inspect/commands/InspectGpuCommand.js.map +1 -1
- package/dist/cli/utils/resolveNpmrcConfig.d.ts +18 -0
- package/dist/cli/utils/resolveNpmrcConfig.js +129 -0
- package/dist/cli/utils/resolveNpmrcConfig.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.js +4 -1
- package/dist/config.js.map +1 -1
- package/dist/evaluator/LlamaChat/LlamaChat.d.ts +8 -2
- package/dist/evaluator/LlamaChat/LlamaChat.js +99 -6
- package/dist/evaluator/LlamaChat/LlamaChat.js.map +1 -1
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js +8 -2
- package/dist/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.js.map +1 -1
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.d.ts +8 -2
- package/dist/evaluator/LlamaChatSession/LlamaChatSession.js.map +1 -1
- package/dist/evaluator/LlamaContext/LlamaContext.d.ts +88 -0
- package/dist/evaluator/LlamaContext/LlamaContext.js +181 -17
- package/dist/evaluator/LlamaContext/LlamaContext.js.map +1 -1
- package/dist/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.d.ts +27 -0
- package/dist/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.js +130 -0
- package/dist/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.js.map +1 -0
- package/dist/gguf/insights/GgufInsights.d.ts +3 -0
- package/dist/gguf/insights/GgufInsights.js +221 -43
- package/dist/gguf/insights/GgufInsights.js.map +1 -1
- package/dist/gguf/types/GgufMetadataTypes.d.ts +15 -1
- package/dist/gguf/types/GgufMetadataTypes.js +4 -0
- package/dist/gguf/types/GgufMetadataTypes.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/utils/getFirstWritableDir.d.ts +8 -0
- package/dist/utils/getFirstWritableDir.js +60 -0
- package/dist/utils/getFirstWritableDir.js.map +1 -0
- package/dist/utils/getTempDir.d.ts +10 -0
- package/dist/utils/getTempDir.js +121 -0
- package/dist/utils/getTempDir.js.map +1 -0
- package/dist/utils/resolveModelFile.js +19 -8
- package/dist/utils/resolveModelFile.js.map +1 -1
- package/llama/addon/AddonContext.cpp +168 -0
- package/llama/addon/AddonContext.h +27 -0
- package/llama/addon/addon.cpp +1 -0
- package/llama/binariesGithubRelease.json +1 -1
- package/llama/gitRelease.bundle +0 -0
- package/llama/llama.cpp.info.json +1 -1
- package/package.json +24 -24
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/index.ts","../src/ChatWrapper.ts","../src/apiDocsIndex.ts","../src/commands.ts","../src/config.ts","../src/consts.ts","../src/state.ts","../src/types.ts","../src/bindings/AddonTypes.ts","../src/bindings/Llama.ts","../src/bindings/consts.ts","../src/bindings/getLlama.ts","../src/bindings/types.ts","../src/bindings/utils/MemoryOrchestrator.ts","../src/bindings/utils/NoBinaryFoundError.ts","../src/bindings/utils/asyncEvery.ts","../src/bindings/utils/asyncSome.ts","../src/bindings/utils/binariesGithubRelease.ts","../src/bindings/utils/clearAllLocalBuilds.ts","../src/bindings/utils/cloneLlamaCppRepo.ts","../src/bindings/utils/compileLLamaCpp.ts","../src/bindings/utils/detectAvailableComputeLayers.ts","../src/bindings/utils/detectBuildTools.ts","../src/bindings/utils/detectGlibc.ts","../src/bindings/utils/disposeBeforeExit.ts","../src/bindings/utils/getBestComputeLayersAvailable.ts","../src/bindings/utils/getBuildFolderNameForBuildOptions.ts","../src/bindings/utils/getCanUsePrebuiltBinaries.ts","../src/bindings/utils/getExampleUsageCodeOfGetLlama.ts","../src/bindings/utils/getGpuTypesToUseForOption.ts","../src/bindings/utils/getLinuxDistroInfo.ts","../src/bindings/utils/getLlamaGpuTypes.ts","../src/bindings/utils/getLlamaWithoutBackend.ts","../src/bindings/utils/getPlatform.ts","../src/bindings/utils/getPlatformInfo.ts","../src/bindings/utils/hasBuildingFromSourceDependenciesInstalled.ts","../src/bindings/utils/hasFileInPath.ts","../src/bindings/utils/lastBuildInfo.ts","../src/bindings/utils/logBinaryUsageExampleToConsole.ts","../src/bindings/utils/logDistroInstallInstruction.ts","../src/bindings/utils/resolveActualBindingBinaryPath.ts","../src/bindings/utils/resolveCustomCmakeOptions.ts","../src/bindings/utils/testBindingBinary.ts","../src/bindings/utils/testCmakeBinary.ts","../src/chatWrappers/AlpacaChatWrapper.ts","../src/chatWrappers/ChatMLChatWrapper.ts","../src/chatWrappers/DeepSeekChatWrapper.ts","../src/chatWrappers/EmptyChatWrapper.ts","../src/chatWrappers/FalconChatWrapper.ts","../src/chatWrappers/FunctionaryChatWrapper.ts","../src/chatWrappers/GemmaChatWrapper.ts","../src/chatWrappers/GeneralChatWrapper.ts","../src/chatWrappers/HarmonyChatWrapper.ts","../src/chatWrappers/Llama2ChatWrapper.ts","../src/chatWrappers/Llama3ChatWrapper.ts","../src/chatWrappers/Llama3_1ChatWrapper.ts","../src/chatWrappers/Llama3_2LightweightChatWrapper.ts","../src/chatWrappers/MistralChatWrapper.ts","../src/chatWrappers/QwenChatWrapper.ts","../src/chatWrappers/SeedChatWrapper.ts","../src/chatWrappers/generic/JinjaTemplateChatWrapper.ts","../src/chatWrappers/generic/TemplateChatWrapper.ts","../src/chatWrappers/generic/utils/UniqueIdGenerator.ts","../src/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.ts","../src/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.ts","../src/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.ts","../src/chatWrappers/generic/utils/getFirstValidResult.ts","../src/chatWrappers/generic/utils/squashChatHistoryItems.ts","../src/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.ts","../src/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.ts","../src/chatWrappers/utils/chunkChatItems.ts","../src/chatWrappers/utils/getModelLinageNames.ts","../src/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.ts","../src/chatWrappers/utils/isLlama3_2LightweightModel.ts","../src/chatWrappers/utils/jsonDumps.ts","../src/chatWrappers/utils/resolveChatWrapper.ts","../src/cli/cli.ts","../src/cli/projectTemplates.ts","../src/cli/recommendedModels.ts","../src/cli/startCreateCli.ts","../src/cli/commands/ChatCommand.ts","../src/cli/commands/CompleteCommand.ts","../src/cli/commands/DebugCommand.ts","../src/cli/commands/InfillCommand.ts","../src/cli/commands/InitCommand.ts","../src/cli/commands/OnPostInstallCommand.ts","../src/cli/commands/PullCommand.ts","../src/cli/commands/inspect/InspectCommand.ts","../src/cli/commands/inspect/commands/InspectEstimateCommand.ts","../src/cli/commands/inspect/commands/InspectGgufCommand.ts","../src/cli/commands/inspect/commands/InspectGpuCommand.ts","../src/cli/commands/inspect/commands/InspectMeasureCommand.ts","../src/cli/commands/source/SourceCommand.ts","../src/cli/commands/source/commands/BuildCommand.ts","../src/cli/commands/source/commands/ClearCommand.ts","../src/cli/commands/source/commands/DownloadCommand.ts","../src/cli/utils/ConsoleInteraction.ts","../src/cli/utils/ConsoleTable.ts","../src/cli/utils/basicChooseFromListConsoleInteraction.ts","../src/cli/utils/consolePromptQuestion.ts","../src/cli/utils/getReadablePath.ts","../src/cli/utils/interactivelyAskForModel.ts","../src/cli/utils/isRunningUnderRosetta.ts","../src/cli/utils/logUsedGpuTypeOption.ts","../src/cli/utils/parseXtcArg.ts","../src/cli/utils/printCommonInfoLines.ts","../src/cli/utils/printInfoLine.ts","../src/cli/utils/printModelDestination.ts","../src/cli/utils/projectTemplates.ts","../src/cli/utils/renderModelCompatibilityPercentageWithColors.ts","../src/cli/utils/resolveCommandGgufPath.ts","../src/cli/utils/resolveHeaderFlag.ts","../src/cli/utils/resolveModelRecommendationFileOptions.ts","../src/cli/utils/splitAnsiToLines.ts","../src/cli/utils/toBytes.ts","../src/cli/utils/withCliCommandDescriptionDocsUrl.ts","../src/evaluator/LlamaCompletion.ts","../src/evaluator/LlamaEmbedding.ts","../src/evaluator/LlamaEmbeddingContext.ts","../src/evaluator/LlamaGrammar.ts","../src/evaluator/LlamaGrammarEvaluationState.ts","../src/evaluator/LlamaJsonSchemaGrammar.ts","../src/evaluator/LlamaRankingContext.ts","../src/evaluator/TokenBias.ts","../src/evaluator/TokenMeter.ts","../src/evaluator/LlamaChat/LlamaChat.ts","../src/evaluator/LlamaChat/utils/FunctionCallNameGrammar.ts","../src/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.ts","../src/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.ts","../src/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.ts","../src/evaluator/LlamaChatSession/LlamaChatSession.ts","../src/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.ts","../src/evaluator/LlamaChatSession/utils/defineChatSessionFunction.ts","../src/evaluator/LlamaContext/LlamaContext.ts","../src/evaluator/LlamaContext/LlamaSampler.ts","../src/evaluator/LlamaContext/TokenPredictor.ts","../src/evaluator/LlamaContext/types.ts","../src/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.ts","../src/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.ts","../src/evaluator/LlamaContext/utils/padSafeContextSize.ts","../src/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.ts","../src/evaluator/LlamaModel/LlamaModel.ts","../src/evaluator/LlamaModel/utils/TokenAttributes.ts","../src/evaluator/utils/chunkDocument.ts","../src/gguf/consts.ts","../src/gguf/readGgufFileInfo.ts","../src/gguf/errors/InvalidGgufMagicError.ts","../src/gguf/errors/UnsupportedGgufValueTypeError.ts","../src/gguf/fileReaders/GgufFileReader.ts","../src/gguf/fileReaders/GgufFsFileReader.ts","../src/gguf/fileReaders/GgufNetworkFetchFileReader.ts","../src/gguf/insights/GgufInsights.ts","../src/gguf/insights/GgufInsightsConfigurationResolver.ts","../src/gguf/insights/GgufInsightsTokens.ts","../src/gguf/insights/utils/getRamUsageFromUnifiedVram.ts","../src/gguf/insights/utils/resolveContextContextSizeOption.ts","../src/gguf/insights/utils/resolveModelGpuLayersOption.ts","../src/gguf/insights/utils/scoreLevels.ts","../src/gguf/parser/GgufV2Parser.ts","../src/gguf/parser/GgufV3Parser.ts","../src/gguf/parser/parseGguf.ts","../src/gguf/types/GgufFileInfoTypes.ts","../src/gguf/types/GgufMetadataTypes.ts","../src/gguf/types/GgufTensorInfoTypes.ts","../src/gguf/utils/GgufReadOffset.ts","../src/gguf/utils/convertMetadataKeyValueRecordToNestedObject.ts","../src/gguf/utils/getGgufFileTypeName.ts","../src/gguf/utils/getGgufMetadataArchitectureData.ts","../src/gguf/utils/getGgufMetadataKeyValue.ts","../src/gguf/utils/ggufQuantNames.ts","../src/gguf/utils/normalizeGgufDownloadUrl.ts","../src/gguf/utils/resolveBinarySplitGgufPartUrls.ts","../src/gguf/utils/resolveSplitGgufParts.ts","../src/utils/DisposeGuard.ts","../src/utils/InsufficientMemoryError.ts","../src/utils/LlamaText.ts","../src/utils/LruCache.ts","../src/utils/OpenAIFormat.ts","../src/utils/OverridesObject.ts","../src/utils/ReplHistory.ts","../src/utils/StopGenerationDetector.ts","../src/utils/ThreadsSplitter.ts","../src/utils/TokenStreamRegulator.ts","../src/utils/UnsupportedError.ts","../src/utils/appendUserMessageToChatHistory.ts","../src/utils/clearTempFolder.ts","../src/utils/cmake.ts","../src/utils/compareTokens.ts","../src/utils/createModelDownloader.ts","../src/utils/findBestOption.ts","../src/utils/findCharacterRemovalCountToFitChatHistoryInContext.ts","../src/utils/getBuildDefaults.ts","../src/utils/getChatWrapperSegmentDefinition.ts","../src/utils/getConsoleLogPrefix.ts","../src/utils/getGrammarsFolder.ts","../src/utils/getLlamaClasses.ts","../src/utils/getModuleVersion.ts","../src/utils/getQueuedTokensBeforeStopTrigger.ts","../src/utils/getReadableContextSize.ts","../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts","../src/utils/gitReleaseBundles.ts","../src/utils/hashString.ts","../src/utils/includesText.ts","../src/utils/isLockfileActive.ts","../src/utils/isToken.ts","../src/utils/isUrl.ts","../src/utils/mergeUnionTypes.ts","../src/utils/modelDownloadEndpoints.ts","../src/utils/modelFileAccessTokens.ts","../src/utils/optionsMatrix.ts","../src/utils/parseModelFileName.ts","../src/utils/parseModelUri.ts","../src/utils/parseTextTemplate.ts","../src/utils/prettyPrintObject.ts","../src/utils/pushAll.ts","../src/utils/removeNullFields.ts","../src/utils/resolveGithubRelease.ts","../src/utils/resolveLastTokens.ts","../src/utils/resolveModelDestination.ts","../src/utils/resolveModelFile.ts","../src/utils/runtime.ts","../src/utils/safeEventCallback.ts","../src/utils/signalSleep.ts","../src/utils/spawnCommand.ts","../src/utils/tokenizeInput.ts","../src/utils/tokenizerUtils.ts","../src/utils/transformPromisable.ts","../src/utils/truncateTextAndRoundToWords.ts","../src/utils/utilTypes.ts","../src/utils/waitForLockfileRelease.ts","../src/utils/withLockfile.ts","../src/utils/withOra.ts","../src/utils/withProgressLog.ts","../src/utils/withStatusLogs.ts","../src/utils/wrapAbortSignal.ts","../src/utils/gbnfJson/GbnfGrammarGenerator.ts","../src/utils/gbnfJson/GbnfTerminal.ts","../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts","../src/utils/gbnfJson/types.ts","../src/utils/gbnfJson/terminals/GbnfAnyJson.ts","../src/utils/gbnfJson/terminals/GbnfArray.ts","../src/utils/gbnfJson/terminals/GbnfBoolean.ts","../src/utils/gbnfJson/terminals/GbnfBooleanValue.ts","../src/utils/gbnfJson/terminals/GbnfCommaWhitespace.ts","../src/utils/gbnfJson/terminals/GbnfFormatString.ts","../src/utils/gbnfJson/terminals/GbnfGrammar.ts","../src/utils/gbnfJson/terminals/GbnfInsideStringChar.ts","../src/utils/gbnfJson/terminals/GbnfNull.ts","../src/utils/gbnfJson/terminals/GbnfNumber.ts","../src/utils/gbnfJson/terminals/GbnfNumberValue.ts","../src/utils/gbnfJson/terminals/GbnfObjectMap.ts","../src/utils/gbnfJson/terminals/GbnfOr.ts","../src/utils/gbnfJson/terminals/GbnfRef.ts","../src/utils/gbnfJson/terminals/GbnfRepetition.ts","../src/utils/gbnfJson/terminals/GbnfString.ts","../src/utils/gbnfJson/terminals/GbnfStringValue.ts","../src/utils/gbnfJson/terminals/GbnfVerbatimText.ts","../src/utils/gbnfJson/terminals/GbnfWhitespace.ts","../src/utils/gbnfJson/terminals/gbnfConsts.ts","../src/utils/gbnfJson/utils/GbnfJsonScopeState.ts","../src/utils/gbnfJson/utils/defsScope.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForLiteral.ts","../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/index.ts","../src/ChatWrapper.ts","../src/apiDocsIndex.ts","../src/commands.ts","../src/config.ts","../src/consts.ts","../src/state.ts","../src/types.ts","../src/bindings/AddonTypes.ts","../src/bindings/Llama.ts","../src/bindings/consts.ts","../src/bindings/getLlama.ts","../src/bindings/types.ts","../src/bindings/utils/MemoryOrchestrator.ts","../src/bindings/utils/NoBinaryFoundError.ts","../src/bindings/utils/asyncEvery.ts","../src/bindings/utils/asyncSome.ts","../src/bindings/utils/binariesGithubRelease.ts","../src/bindings/utils/clearAllLocalBuilds.ts","../src/bindings/utils/cloneLlamaCppRepo.ts","../src/bindings/utils/compileLLamaCpp.ts","../src/bindings/utils/detectAvailableComputeLayers.ts","../src/bindings/utils/detectBuildTools.ts","../src/bindings/utils/detectGlibc.ts","../src/bindings/utils/disposeBeforeExit.ts","../src/bindings/utils/getBestComputeLayersAvailable.ts","../src/bindings/utils/getBuildFolderNameForBuildOptions.ts","../src/bindings/utils/getCanUsePrebuiltBinaries.ts","../src/bindings/utils/getExampleUsageCodeOfGetLlama.ts","../src/bindings/utils/getGpuTypesToUseForOption.ts","../src/bindings/utils/getLinuxDistroInfo.ts","../src/bindings/utils/getLlamaGpuTypes.ts","../src/bindings/utils/getLlamaWithoutBackend.ts","../src/bindings/utils/getPlatform.ts","../src/bindings/utils/getPlatformInfo.ts","../src/bindings/utils/hasBuildingFromSourceDependenciesInstalled.ts","../src/bindings/utils/hasFileInPath.ts","../src/bindings/utils/lastBuildInfo.ts","../src/bindings/utils/logBinaryUsageExampleToConsole.ts","../src/bindings/utils/logDistroInstallInstruction.ts","../src/bindings/utils/resolveActualBindingBinaryPath.ts","../src/bindings/utils/resolveCustomCmakeOptions.ts","../src/bindings/utils/testBindingBinary.ts","../src/bindings/utils/testCmakeBinary.ts","../src/chatWrappers/AlpacaChatWrapper.ts","../src/chatWrappers/ChatMLChatWrapper.ts","../src/chatWrappers/DeepSeekChatWrapper.ts","../src/chatWrappers/EmptyChatWrapper.ts","../src/chatWrappers/FalconChatWrapper.ts","../src/chatWrappers/FunctionaryChatWrapper.ts","../src/chatWrappers/GemmaChatWrapper.ts","../src/chatWrappers/GeneralChatWrapper.ts","../src/chatWrappers/HarmonyChatWrapper.ts","../src/chatWrappers/Llama2ChatWrapper.ts","../src/chatWrappers/Llama3ChatWrapper.ts","../src/chatWrappers/Llama3_1ChatWrapper.ts","../src/chatWrappers/Llama3_2LightweightChatWrapper.ts","../src/chatWrappers/MistralChatWrapper.ts","../src/chatWrappers/QwenChatWrapper.ts","../src/chatWrappers/SeedChatWrapper.ts","../src/chatWrappers/generic/JinjaTemplateChatWrapper.ts","../src/chatWrappers/generic/TemplateChatWrapper.ts","../src/chatWrappers/generic/utils/UniqueIdGenerator.ts","../src/chatWrappers/generic/utils/chatHistoryFunctionCallMessageTemplate.ts","../src/chatWrappers/generic/utils/extractFunctionCallSettingsFromJinjaTemplate.ts","../src/chatWrappers/generic/utils/extractSegmentSettingsFromTokenizerAndChatTemplate.ts","../src/chatWrappers/generic/utils/getFirstValidResult.ts","../src/chatWrappers/generic/utils/squashChatHistoryItems.ts","../src/chatWrappers/generic/utils/templateSegmentOptionsToChatWrapperSettings.ts","../src/chatWrappers/utils/ChatModelFunctionsDocumentationGenerator.ts","../src/chatWrappers/utils/chunkChatItems.ts","../src/chatWrappers/utils/getModelLinageNames.ts","../src/chatWrappers/utils/isJinjaTemplateEquivalentToSpecializedChatWrapper.ts","../src/chatWrappers/utils/isLlama3_2LightweightModel.ts","../src/chatWrappers/utils/jsonDumps.ts","../src/chatWrappers/utils/resolveChatWrapper.ts","../src/cli/cli.ts","../src/cli/projectTemplates.ts","../src/cli/recommendedModels.ts","../src/cli/startCreateCli.ts","../src/cli/commands/ChatCommand.ts","../src/cli/commands/CompleteCommand.ts","../src/cli/commands/DebugCommand.ts","../src/cli/commands/InfillCommand.ts","../src/cli/commands/InitCommand.ts","../src/cli/commands/OnPostInstallCommand.ts","../src/cli/commands/PullCommand.ts","../src/cli/commands/inspect/InspectCommand.ts","../src/cli/commands/inspect/commands/InspectEstimateCommand.ts","../src/cli/commands/inspect/commands/InspectGgufCommand.ts","../src/cli/commands/inspect/commands/InspectGpuCommand.ts","../src/cli/commands/inspect/commands/InspectMeasureCommand.ts","../src/cli/commands/source/SourceCommand.ts","../src/cli/commands/source/commands/BuildCommand.ts","../src/cli/commands/source/commands/ClearCommand.ts","../src/cli/commands/source/commands/DownloadCommand.ts","../src/cli/utils/ConsoleInteraction.ts","../src/cli/utils/ConsoleTable.ts","../src/cli/utils/basicChooseFromListConsoleInteraction.ts","../src/cli/utils/consolePromptQuestion.ts","../src/cli/utils/getReadablePath.ts","../src/cli/utils/interactivelyAskForModel.ts","../src/cli/utils/isRunningUnderRosetta.ts","../src/cli/utils/logUsedGpuTypeOption.ts","../src/cli/utils/parseXtcArg.ts","../src/cli/utils/printCommonInfoLines.ts","../src/cli/utils/printInfoLine.ts","../src/cli/utils/printModelDestination.ts","../src/cli/utils/projectTemplates.ts","../src/cli/utils/renderModelCompatibilityPercentageWithColors.ts","../src/cli/utils/resolveCommandGgufPath.ts","../src/cli/utils/resolveHeaderFlag.ts","../src/cli/utils/resolveModelRecommendationFileOptions.ts","../src/cli/utils/resolveNpmrcConfig.ts","../src/cli/utils/splitAnsiToLines.ts","../src/cli/utils/toBytes.ts","../src/cli/utils/withCliCommandDescriptionDocsUrl.ts","../src/evaluator/LlamaCompletion.ts","../src/evaluator/LlamaEmbedding.ts","../src/evaluator/LlamaEmbeddingContext.ts","../src/evaluator/LlamaGrammar.ts","../src/evaluator/LlamaGrammarEvaluationState.ts","../src/evaluator/LlamaJsonSchemaGrammar.ts","../src/evaluator/LlamaRankingContext.ts","../src/evaluator/TokenBias.ts","../src/evaluator/TokenMeter.ts","../src/evaluator/LlamaChat/LlamaChat.ts","../src/evaluator/LlamaChat/utils/FunctionCallNameGrammar.ts","../src/evaluator/LlamaChat/utils/FunctionCallParamsGrammar.ts","../src/evaluator/LlamaChat/utils/LlamaFunctionCallValidationError.ts","../src/evaluator/LlamaChat/utils/contextShiftStrategies/eraseFirstResponseAndKeepFirstSystemChatContextShiftStrategy.ts","../src/evaluator/LlamaChatSession/LlamaChatSession.ts","../src/evaluator/LlamaChatSession/utils/LlamaChatSessionPromptCompletionEngine.ts","../src/evaluator/LlamaChatSession/utils/defineChatSessionFunction.ts","../src/evaluator/LlamaContext/LlamaContext.ts","../src/evaluator/LlamaContext/LlamaContextSequenceCheckpoints.ts","../src/evaluator/LlamaContext/LlamaSampler.ts","../src/evaluator/LlamaContext/TokenPredictor.ts","../src/evaluator/LlamaContext/types.ts","../src/evaluator/LlamaContext/tokenPredictors/DraftSequenceTokenPredictor.ts","../src/evaluator/LlamaContext/tokenPredictors/InputLookupTokenPredictor.ts","../src/evaluator/LlamaContext/utils/padSafeContextSize.ts","../src/evaluator/LlamaContext/utils/resolveBatchItemsPrioritizationStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/firstInFirstOutStrategy.ts","../src/evaluator/LlamaContext/utils/batchItemsPrioritizationStrategies/maximumParallelismStrategy.ts","../src/evaluator/LlamaModel/LlamaModel.ts","../src/evaluator/LlamaModel/utils/TokenAttributes.ts","../src/evaluator/utils/chunkDocument.ts","../src/gguf/consts.ts","../src/gguf/readGgufFileInfo.ts","../src/gguf/errors/InvalidGgufMagicError.ts","../src/gguf/errors/UnsupportedGgufValueTypeError.ts","../src/gguf/fileReaders/GgufFileReader.ts","../src/gguf/fileReaders/GgufFsFileReader.ts","../src/gguf/fileReaders/GgufNetworkFetchFileReader.ts","../src/gguf/insights/GgufInsights.ts","../src/gguf/insights/GgufInsightsConfigurationResolver.ts","../src/gguf/insights/GgufInsightsTokens.ts","../src/gguf/insights/utils/getRamUsageFromUnifiedVram.ts","../src/gguf/insights/utils/resolveContextContextSizeOption.ts","../src/gguf/insights/utils/resolveModelGpuLayersOption.ts","../src/gguf/insights/utils/scoreLevels.ts","../src/gguf/parser/GgufV2Parser.ts","../src/gguf/parser/GgufV3Parser.ts","../src/gguf/parser/parseGguf.ts","../src/gguf/types/GgufFileInfoTypes.ts","../src/gguf/types/GgufMetadataTypes.ts","../src/gguf/types/GgufTensorInfoTypes.ts","../src/gguf/utils/GgufReadOffset.ts","../src/gguf/utils/convertMetadataKeyValueRecordToNestedObject.ts","../src/gguf/utils/getGgufFileTypeName.ts","../src/gguf/utils/getGgufMetadataArchitectureData.ts","../src/gguf/utils/getGgufMetadataKeyValue.ts","../src/gguf/utils/ggufQuantNames.ts","../src/gguf/utils/normalizeGgufDownloadUrl.ts","../src/gguf/utils/resolveBinarySplitGgufPartUrls.ts","../src/gguf/utils/resolveSplitGgufParts.ts","../src/utils/DisposeGuard.ts","../src/utils/InsufficientMemoryError.ts","../src/utils/LlamaText.ts","../src/utils/LruCache.ts","../src/utils/OpenAIFormat.ts","../src/utils/OverridesObject.ts","../src/utils/ReplHistory.ts","../src/utils/StopGenerationDetector.ts","../src/utils/ThreadsSplitter.ts","../src/utils/TokenStreamRegulator.ts","../src/utils/UnsupportedError.ts","../src/utils/appendUserMessageToChatHistory.ts","../src/utils/clearTempFolder.ts","../src/utils/cmake.ts","../src/utils/compareTokens.ts","../src/utils/createModelDownloader.ts","../src/utils/findBestOption.ts","../src/utils/findCharacterRemovalCountToFitChatHistoryInContext.ts","../src/utils/getBuildDefaults.ts","../src/utils/getChatWrapperSegmentDefinition.ts","../src/utils/getConsoleLogPrefix.ts","../src/utils/getFirstWritableDir.ts","../src/utils/getGrammarsFolder.ts","../src/utils/getLlamaClasses.ts","../src/utils/getModuleVersion.ts","../src/utils/getQueuedTokensBeforeStopTrigger.ts","../src/utils/getReadableContextSize.ts","../src/utils/getTempDir.ts","../src/utils/getTypeScriptTypeStringForGbnfJsonSchema.ts","../src/utils/gitReleaseBundles.ts","../src/utils/hashString.ts","../src/utils/includesText.ts","../src/utils/isLockfileActive.ts","../src/utils/isToken.ts","../src/utils/isUrl.ts","../src/utils/mergeUnionTypes.ts","../src/utils/modelDownloadEndpoints.ts","../src/utils/modelFileAccessTokens.ts","../src/utils/optionsMatrix.ts","../src/utils/parseModelFileName.ts","../src/utils/parseModelUri.ts","../src/utils/parseTextTemplate.ts","../src/utils/prettyPrintObject.ts","../src/utils/pushAll.ts","../src/utils/removeNullFields.ts","../src/utils/resolveGithubRelease.ts","../src/utils/resolveLastTokens.ts","../src/utils/resolveModelDestination.ts","../src/utils/resolveModelFile.ts","../src/utils/runtime.ts","../src/utils/safeEventCallback.ts","../src/utils/signalSleep.ts","../src/utils/spawnCommand.ts","../src/utils/tokenizeInput.ts","../src/utils/tokenizerUtils.ts","../src/utils/transformPromisable.ts","../src/utils/truncateTextAndRoundToWords.ts","../src/utils/utilTypes.ts","../src/utils/waitForLockfileRelease.ts","../src/utils/withLockfile.ts","../src/utils/withOra.ts","../src/utils/withProgressLog.ts","../src/utils/withStatusLogs.ts","../src/utils/wrapAbortSignal.ts","../src/utils/gbnfJson/GbnfGrammarGenerator.ts","../src/utils/gbnfJson/GbnfTerminal.ts","../src/utils/gbnfJson/getGbnfGrammarForGbnfJsonSchema.ts","../src/utils/gbnfJson/types.ts","../src/utils/gbnfJson/terminals/GbnfAnyJson.ts","../src/utils/gbnfJson/terminals/GbnfArray.ts","../src/utils/gbnfJson/terminals/GbnfBoolean.ts","../src/utils/gbnfJson/terminals/GbnfBooleanValue.ts","../src/utils/gbnfJson/terminals/GbnfCommaWhitespace.ts","../src/utils/gbnfJson/terminals/GbnfFormatString.ts","../src/utils/gbnfJson/terminals/GbnfGrammar.ts","../src/utils/gbnfJson/terminals/GbnfInsideStringChar.ts","../src/utils/gbnfJson/terminals/GbnfNull.ts","../src/utils/gbnfJson/terminals/GbnfNumber.ts","../src/utils/gbnfJson/terminals/GbnfNumberValue.ts","../src/utils/gbnfJson/terminals/GbnfObjectMap.ts","../src/utils/gbnfJson/terminals/GbnfOr.ts","../src/utils/gbnfJson/terminals/GbnfRef.ts","../src/utils/gbnfJson/terminals/GbnfRepetition.ts","../src/utils/gbnfJson/terminals/GbnfString.ts","../src/utils/gbnfJson/terminals/GbnfStringValue.ts","../src/utils/gbnfJson/terminals/GbnfVerbatimText.ts","../src/utils/gbnfJson/terminals/GbnfWhitespace.ts","../src/utils/gbnfJson/terminals/gbnfConsts.ts","../src/utils/gbnfJson/utils/GbnfJsonScopeState.ts","../src/utils/gbnfJson/utils/defsScope.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForGbnfJsonSchema.ts","../src/utils/gbnfJson/utils/getGbnfJsonTerminalForLiteral.ts","../src/utils/gbnfJson/utils/validateObjectAgainstGbnfSchema.ts"],"version":"5.9.3"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function getFirstWritableDir(dirPaths: string[]): Promise<string | null>;
|
|
2
|
+
export declare function isPathWritableWithCache(dirPath: string): Promise<boolean>;
|
|
3
|
+
export declare function isPathWritable(dirPath: string): Promise<boolean>;
|
|
4
|
+
/**
|
|
5
|
+
* Check whether a path is inside an asar when running in Electron,
|
|
6
|
+
* which means that the path is not writable and inaccessible outside the Electron app.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isPathInsideAsar(dirPath: string, excludeUnpacked?: boolean): boolean;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import fs from "fs-extra";
|
|
3
|
+
import { runningInElectron } from "./runtime.js";
|
|
4
|
+
import { LruCache } from "./LruCache.js";
|
|
5
|
+
export async function getFirstWritableDir(dirPaths) {
|
|
6
|
+
for (const dirPath of dirPaths) {
|
|
7
|
+
if (isPathInsideAsar(dirPath))
|
|
8
|
+
continue;
|
|
9
|
+
if (await isPathWritable(dirPath))
|
|
10
|
+
return dirPath;
|
|
11
|
+
}
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
const writableCheckCache = new LruCache(20);
|
|
15
|
+
export async function isPathWritableWithCache(dirPath) {
|
|
16
|
+
const isWritable = writableCheckCache.get(dirPath) ?? await isPathWritable(dirPath);
|
|
17
|
+
writableCheckCache.set(dirPath, isWritable);
|
|
18
|
+
return isWritable;
|
|
19
|
+
}
|
|
20
|
+
export async function isPathWritable(dirPath) {
|
|
21
|
+
let checkPath = path.resolve(dirPath);
|
|
22
|
+
while (true) {
|
|
23
|
+
try {
|
|
24
|
+
const stat = await fs.lstat(checkPath);
|
|
25
|
+
if (!stat.isDirectory())
|
|
26
|
+
return false;
|
|
27
|
+
break;
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error?.code !== "ENOENT")
|
|
31
|
+
return false;
|
|
32
|
+
const nextCheckPath = path.dirname(checkPath);
|
|
33
|
+
if (nextCheckPath === checkPath)
|
|
34
|
+
return false;
|
|
35
|
+
checkPath = nextCheckPath;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
try {
|
|
39
|
+
await fs.access(path.dirname(checkPath), fs.constants.W_OK | fs.constants.X_OK);
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check whether a path is inside an asar when running in Electron,
|
|
48
|
+
* which means that the path is not writable and inaccessible outside the Electron app.
|
|
49
|
+
*/
|
|
50
|
+
export function isPathInsideAsar(dirPath, excludeUnpacked = false) {
|
|
51
|
+
if (!runningInElectron)
|
|
52
|
+
return false;
|
|
53
|
+
const normalizedPath = dirPath.toLowerCase();
|
|
54
|
+
if (normalizedPath.endsWith(".asar") ||
|
|
55
|
+
(!excludeUnpacked && normalizedPath.endsWith(".asar.unpacked")))
|
|
56
|
+
return true;
|
|
57
|
+
return normalizedPath.includes(".asar" + path.sep) ||
|
|
58
|
+
(!excludeUnpacked && normalizedPath.includes(".asar.unpacked" + path.sep));
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=getFirstWritableDir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getFirstWritableDir.js","sourceRoot":"","sources":["../../src/utils/getFirstWritableDir.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAEvC,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAkB;IACxD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,gBAAgB,CAAC,OAAO,CAAC;YACzB,SAAS;QAEb,IAAI,MAAM,cAAc,CAAC,OAAO,CAAC;YAC7B,OAAO,OAAO,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED,MAAM,kBAAkB,GAAG,IAAI,QAAQ,CAAkB,EAAE,CAAC,CAAC;AAC7D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,OAAe;IACzD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACpF,kBAAkB,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC5C,OAAO,UAAU,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAChD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtC,OAAO,IAAI,EAAE,CAAC;QACV,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,OAAO,KAAK,CAAC;YAEjB,MAAM;QACV,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YAClB,IAAI,KAAK,EAAE,IAAI,KAAK,QAAQ;gBACxB,OAAO,KAAK,CAAC;YAEjB,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,aAAa,KAAK,SAAS;gBAC3B,OAAO,KAAK,CAAC;YAEjB,SAAS,GAAG,aAAa,CAAC;QAC9B,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACD,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACpF,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,kBAA2B,KAAK;IAC9E,IAAI,CAAC,iBAAiB;QAClB,OAAO,KAAK,CAAC;IAEjB,MAAM,cAAc,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC;QAChC,CAAC,CAAC,eAAe,IAAI,cAAc,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAE/D,OAAO,IAAI,CAAC;IAEhB,OAAO,cAAc,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;QAC9C,CAAC,CAAC,eAAe,IAAI,cAAc,CAAC,QAAQ,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function getTempDir(helperTempDirs?: string[]): Promise<FsPathHandle | undefined>;
|
|
2
|
+
export declare class FsPathHandle {
|
|
3
|
+
readonly path: string;
|
|
4
|
+
private _finalizationRegistry;
|
|
5
|
+
private _disposed;
|
|
6
|
+
constructor(dirPath: string);
|
|
7
|
+
dispose(): Promise<void>;
|
|
8
|
+
[Symbol.asyncDispose](): Promise<void>;
|
|
9
|
+
[Symbol.dispose](): void;
|
|
10
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import path from "path";
|
|
2
|
+
import os from "os";
|
|
3
|
+
import fs from "fs-extra";
|
|
4
|
+
import { cliHomedirTempDirectory, localTempDirectory } from "../config.js";
|
|
5
|
+
import { isPathWritableWithCache } from "./getFirstWritableDir.js";
|
|
6
|
+
const currentDate = new Date();
|
|
7
|
+
const currentRunId = [
|
|
8
|
+
process.pid + ".",
|
|
9
|
+
String(currentDate.getFullYear()).padStart(4, "0"),
|
|
10
|
+
String(currentDate.getMonth() + 1).padStart(2, "0"),
|
|
11
|
+
String(currentDate.getDate()).padStart(2, "0"),
|
|
12
|
+
String(currentDate.getHours()).padStart(2, "0"),
|
|
13
|
+
String(currentDate.getMinutes()).padStart(2, "0"),
|
|
14
|
+
String(currentDate.getSeconds()).padStart(2, "0"),
|
|
15
|
+
String(currentDate.getMilliseconds()).padStart(3, "0"),
|
|
16
|
+
".",
|
|
17
|
+
Math.random()
|
|
18
|
+
.toString(36)
|
|
19
|
+
.slice(2)
|
|
20
|
+
].join("");
|
|
21
|
+
let lastResolvedTempDir = undefined;
|
|
22
|
+
export async function getTempDir(helperTempDirs) {
|
|
23
|
+
for (const tempDir of helperTempDirs ?? []) {
|
|
24
|
+
if (await isPathWritableWithCache(tempDir))
|
|
25
|
+
return new FsPathHandle(path.join(tempDir, "nlc." + currentRunId));
|
|
26
|
+
}
|
|
27
|
+
if (lastResolvedTempDir != null)
|
|
28
|
+
return new FsPathHandle(lastResolvedTempDir);
|
|
29
|
+
if (await isPathWritableWithCache(localTempDirectory))
|
|
30
|
+
lastResolvedTempDir = path.join(localTempDirectory, currentRunId);
|
|
31
|
+
else if (await isPathWritableWithCache(os.tmpdir()))
|
|
32
|
+
lastResolvedTempDir = path.join(os.tmpdir(), "nlc." + currentRunId);
|
|
33
|
+
else if (await isPathWritableWithCache(cliHomedirTempDirectory))
|
|
34
|
+
lastResolvedTempDir = path.join(cliHomedirTempDirectory, currentRunId);
|
|
35
|
+
if (lastResolvedTempDir != null)
|
|
36
|
+
return new FsPathHandle(lastResolvedTempDir);
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const pathUsages = new Map();
|
|
40
|
+
function addPathUsage(tempDirPath) {
|
|
41
|
+
const usage = pathUsages.get(tempDirPath) ?? 0;
|
|
42
|
+
pathUsages.set(tempDirPath, usage + 1);
|
|
43
|
+
if (usage === 0)
|
|
44
|
+
ensureExitEventRegistration();
|
|
45
|
+
}
|
|
46
|
+
function removePathUsage(tempDirPath, removeAsync = false) {
|
|
47
|
+
const usage = pathUsages.get(tempDirPath);
|
|
48
|
+
if (usage == null)
|
|
49
|
+
return;
|
|
50
|
+
if (usage <= 1) {
|
|
51
|
+
pathUsages.delete(tempDirPath);
|
|
52
|
+
if (removeAsync)
|
|
53
|
+
return fs.remove(tempDirPath)
|
|
54
|
+
.then(doNothing)
|
|
55
|
+
.catch(doNothing);
|
|
56
|
+
try {
|
|
57
|
+
fs.removeSync(tempDirPath);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
// do nothing
|
|
61
|
+
}
|
|
62
|
+
ensureExitEventRegistration();
|
|
63
|
+
}
|
|
64
|
+
else
|
|
65
|
+
pathUsages.set(tempDirPath, usage - 1);
|
|
66
|
+
}
|
|
67
|
+
function removePathUsageSync(tempDirPath) {
|
|
68
|
+
removePathUsage(tempDirPath);
|
|
69
|
+
}
|
|
70
|
+
let onExitRegistered = false;
|
|
71
|
+
function ensureExitEventRegistration() {
|
|
72
|
+
if (pathUsages.size === 0 && onExitRegistered) {
|
|
73
|
+
process.off("beforeExit", onExit);
|
|
74
|
+
onExitRegistered = false;
|
|
75
|
+
}
|
|
76
|
+
else if (pathUsages.size > 0 && !onExitRegistered) {
|
|
77
|
+
process.on("beforeExit", onExit);
|
|
78
|
+
onExitRegistered = true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function onExit() {
|
|
82
|
+
for (const tempDirPath of pathUsages.keys()) {
|
|
83
|
+
try {
|
|
84
|
+
fs.removeSync(tempDirPath);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
// do nothing
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export class FsPathHandle {
|
|
92
|
+
path;
|
|
93
|
+
_finalizationRegistry;
|
|
94
|
+
_disposed = false;
|
|
95
|
+
constructor(dirPath) {
|
|
96
|
+
this.path = dirPath;
|
|
97
|
+
this._finalizationRegistry = new FinalizationRegistry(removePathUsageSync);
|
|
98
|
+
addPathUsage(this.path);
|
|
99
|
+
this._finalizationRegistry.register(this, this.path);
|
|
100
|
+
}
|
|
101
|
+
async dispose() {
|
|
102
|
+
if (this._disposed)
|
|
103
|
+
return;
|
|
104
|
+
this._disposed = true;
|
|
105
|
+
this._finalizationRegistry.unregister(this);
|
|
106
|
+
await removePathUsage(this.path, true);
|
|
107
|
+
}
|
|
108
|
+
[Symbol.asyncDispose]() {
|
|
109
|
+
return this.dispose();
|
|
110
|
+
}
|
|
111
|
+
[Symbol.dispose]() {
|
|
112
|
+
if (this._disposed)
|
|
113
|
+
return;
|
|
114
|
+
this._disposed = true;
|
|
115
|
+
this._finalizationRegistry.unregister(this);
|
|
116
|
+
removePathUsage(this.path, false);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
function doNothing() {
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=getTempDir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getTempDir.js","sourceRoot":"","sources":["../../src/utils/getTempDir.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs-extra";
|
|
3
3
|
import chalk from "chalk";
|
|
4
|
+
import { acquireLock } from "lifecycle-utils";
|
|
4
5
|
import { cliModelsDirectory } from "../config.js";
|
|
5
6
|
import { getReadablePath } from "../cli/utils/getReadablePath.js";
|
|
6
7
|
import { resolveSplitGgufParts } from "../gguf/utils/resolveSplitGgufParts.js";
|
|
@@ -150,14 +151,24 @@ export async function resolveModelFile(uriOrPath, optionsOrDirectory) {
|
|
|
150
151
|
return foundExpectedFilePath;
|
|
151
152
|
}
|
|
152
153
|
}
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
:
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
154
|
+
const lock = await acquireLock([resolveModelFile, "download", downloader.entrypointFilePath]);
|
|
155
|
+
try {
|
|
156
|
+
if (await fs.pathExists(downloader.entrypointFilePath)) {
|
|
157
|
+
await downloader.cancel({ deleteTempFile: false });
|
|
158
|
+
return downloader.entrypointFilePath;
|
|
159
|
+
}
|
|
160
|
+
if (resolvedCli)
|
|
161
|
+
console.info(`Downloading to ${chalk.yellow(getReadablePath(resolvedDirectory))}${downloader.splitBinaryParts != null
|
|
162
|
+
? chalk.gray(` (combining ${downloader.splitBinaryParts} parts into a single file)`)
|
|
163
|
+
: ""}`);
|
|
164
|
+
await downloader.download({ signal });
|
|
165
|
+
if (resolvedCli)
|
|
166
|
+
console.info(`Downloaded to ${chalk.yellow(getReadablePath(downloader.entrypointFilePath))}`);
|
|
167
|
+
return downloader.entrypointFilePath;
|
|
168
|
+
}
|
|
169
|
+
finally {
|
|
170
|
+
lock.dispose();
|
|
171
|
+
}
|
|
161
172
|
}
|
|
162
173
|
async function findMatchingFilesInDirectory(dirPath, fileNames) {
|
|
163
174
|
let directoryFileNames = undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveModelFile.js","sourceRoot":"","sources":["../../src/utils/resolveModelFile.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAChD,OAAO,EAAC,eAAe,EAAC,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAC,qBAAqB,EAAC,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAC,qBAAqB,EAAC,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAC,cAAc,EAAC,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAC,OAAO,EAAC,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveModelFile.js","sourceRoot":"","sources":["../../src/utils/resolveModelFile.ts"],"names":[],"mappings":"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"}
|
|
@@ -965,6 +965,69 @@ Napi::Value AddonContext::SetLoras(const Napi::CallbackInfo& info) {
|
|
|
965
965
|
return info.Env().Undefined();
|
|
966
966
|
}
|
|
967
967
|
|
|
968
|
+
class RestoreCheckpointWorker : public Napi::AsyncWorker {
|
|
969
|
+
public:
|
|
970
|
+
AddonContext* context;
|
|
971
|
+
AddonContextSequenceCheckpoint* checkpoint;
|
|
972
|
+
std::size_t maxPosIndex;
|
|
973
|
+
bool restoreSuccess = false;
|
|
974
|
+
|
|
975
|
+
RestoreCheckpointWorker(const Napi::CallbackInfo& info, AddonContext* context, AddonContextSequenceCheckpoint* checkpoint, std::size_t maxPosIndex)
|
|
976
|
+
: Napi::AsyncWorker(info.Env(), "RestoreCheckpointWorker"),
|
|
977
|
+
context(context),
|
|
978
|
+
checkpoint(checkpoint),
|
|
979
|
+
maxPosIndex(maxPosIndex),
|
|
980
|
+
deferred(Napi::Promise::Deferred::New(info.Env())) {
|
|
981
|
+
context->Ref();
|
|
982
|
+
checkpoint->Ref();
|
|
983
|
+
}
|
|
984
|
+
~RestoreCheckpointWorker() {
|
|
985
|
+
context->Unref();
|
|
986
|
+
checkpoint->Unref();
|
|
987
|
+
}
|
|
988
|
+
|
|
989
|
+
Napi::Promise GetPromise() {
|
|
990
|
+
return deferred.Promise();
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
protected:
|
|
994
|
+
Napi::Promise::Deferred deferred;
|
|
995
|
+
|
|
996
|
+
void Execute() {
|
|
997
|
+
try {
|
|
998
|
+
std::lock_guard<std::mutex> lock(checkpoint->dataMutex);
|
|
999
|
+
|
|
1000
|
+
std::size_t dataSize = checkpoint->data.size();
|
|
1001
|
+
std::size_t restoreSize = llama_state_seq_set_data_ext(context->ctx, checkpoint->data.data(), dataSize, checkpoint->sequenceId, LLAMA_STATE_SEQ_FLAGS_PARTIAL_ONLY);
|
|
1002
|
+
if (restoreSize == dataSize) {
|
|
1003
|
+
restoreSuccess = (
|
|
1004
|
+
llama_memory_seq_rm(llama_get_memory(context->ctx), checkpoint->sequenceId, maxPosIndex + 1, -1) &&
|
|
1005
|
+
llama_memory_seq_pos_max(llama_get_memory(context->ctx), checkpoint->sequenceId) == maxPosIndex
|
|
1006
|
+
);
|
|
1007
|
+
}
|
|
1008
|
+
} catch (const std::exception& e) {
|
|
1009
|
+
SetError(e.what());
|
|
1010
|
+
} catch(...) {
|
|
1011
|
+
SetError("Unknown error when calling \"llama_state_seq_set_data_ext\"");
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
void OnOK() {
|
|
1015
|
+
deferred.Resolve(Napi::Boolean::New(Env(), restoreSuccess));
|
|
1016
|
+
}
|
|
1017
|
+
void OnError(const Napi::Error& err) {
|
|
1018
|
+
deferred.Reject(err.Value());
|
|
1019
|
+
}
|
|
1020
|
+
};
|
|
1021
|
+
|
|
1022
|
+
Napi::Value AddonContext::RestoreCheckpoint(const Napi::CallbackInfo& info) {
|
|
1023
|
+
AddonContextSequenceCheckpoint* checkpoint = Napi::ObjectWrap<AddonContextSequenceCheckpoint>::Unwrap(info[0].As<Napi::Object>());
|
|
1024
|
+
std::size_t maxPosIndex = info[1].As<Napi::Number>().Int32Value();
|
|
1025
|
+
|
|
1026
|
+
RestoreCheckpointWorker* worker = new RestoreCheckpointWorker(info, this, checkpoint, maxPosIndex);
|
|
1027
|
+
worker->Queue();
|
|
1028
|
+
return worker->GetPromise();
|
|
1029
|
+
}
|
|
1030
|
+
|
|
968
1031
|
void AddonContext::init(Napi::Object exports) {
|
|
969
1032
|
exports.Set(
|
|
970
1033
|
"AddonContext",
|
|
@@ -992,8 +1055,113 @@ void AddonContext::init(Napi::Object exports) {
|
|
|
992
1055
|
InstanceMethod("saveSequenceStateToFile", &AddonContext::SaveSequenceStateToFile),
|
|
993
1056
|
InstanceMethod("loadSequenceStateFromFile", &AddonContext::LoadSequenceStateFromFile),
|
|
994
1057
|
InstanceMethod("setLoras", &AddonContext::SetLoras),
|
|
1058
|
+
InstanceMethod("restoreCheckpoint", &AddonContext::RestoreCheckpoint),
|
|
995
1059
|
InstanceMethod("dispose", &AddonContext::Dispose),
|
|
996
1060
|
}
|
|
997
1061
|
)
|
|
998
1062
|
);
|
|
999
1063
|
}
|
|
1064
|
+
|
|
1065
|
+
AddonContextSequenceCheckpoint::AddonContextSequenceCheckpoint(const Napi::CallbackInfo& info) : Napi::ObjectWrap<AddonContextSequenceCheckpoint>(info) {
|
|
1066
|
+
|
|
1067
|
+
}
|
|
1068
|
+
AddonContextSequenceCheckpoint::~AddonContextSequenceCheckpoint() {
|
|
1069
|
+
dispose();
|
|
1070
|
+
}
|
|
1071
|
+
|
|
1072
|
+
class AddonContextSequenceCheckpointInitWorker : public Napi::AsyncWorker {
|
|
1073
|
+
public:
|
|
1074
|
+
AddonContextSequenceCheckpoint* checkpoint;
|
|
1075
|
+
AddonContext* context;
|
|
1076
|
+
|
|
1077
|
+
AddonContextSequenceCheckpointInitWorker(const Napi::CallbackInfo& info, AddonContextSequenceCheckpoint* checkpoint, AddonContext* context)
|
|
1078
|
+
: Napi::AsyncWorker(info.Env(), "AddonContextSequenceCheckpointInitWorker"),
|
|
1079
|
+
checkpoint(checkpoint),
|
|
1080
|
+
context(context),
|
|
1081
|
+
deferred(Napi::Promise::Deferred::New(info.Env())) {
|
|
1082
|
+
checkpoint->Ref();
|
|
1083
|
+
context->Ref();
|
|
1084
|
+
}
|
|
1085
|
+
~AddonContextSequenceCheckpointInitWorker() {
|
|
1086
|
+
checkpoint->Unref();
|
|
1087
|
+
context->Unref();
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
Napi::Promise GetPromise() {
|
|
1091
|
+
return deferred.Promise();
|
|
1092
|
+
}
|
|
1093
|
+
|
|
1094
|
+
protected:
|
|
1095
|
+
Napi::Promise::Deferred deferred;
|
|
1096
|
+
|
|
1097
|
+
void Execute() {
|
|
1098
|
+
try {
|
|
1099
|
+
checkpoint->minPos = llama_memory_seq_pos_min(llama_get_memory(context->ctx), checkpoint->sequenceId);
|
|
1100
|
+
checkpoint->maxPos = llama_memory_seq_pos_max(llama_get_memory(context->ctx), checkpoint->sequenceId);
|
|
1101
|
+
const size_t checkpointSize = llama_state_seq_get_size_ext(context->ctx, checkpoint->sequenceId, LLAMA_STATE_SEQ_FLAGS_PARTIAL_ONLY);
|
|
1102
|
+
|
|
1103
|
+
checkpoint->data.resize(checkpointSize, 0);
|
|
1104
|
+
llama_state_seq_get_data_ext(context->ctx, checkpoint->data.data(), checkpointSize, checkpoint->sequenceId, LLAMA_STATE_SEQ_FLAGS_PARTIAL_ONLY);
|
|
1105
|
+
} catch (const std::exception& e) {
|
|
1106
|
+
SetError(e.what());
|
|
1107
|
+
} catch(...) {
|
|
1108
|
+
SetError("Unknown error when calling \"llama_state_seq_get_data_ext\"");
|
|
1109
|
+
}
|
|
1110
|
+
}
|
|
1111
|
+
void OnOK() {
|
|
1112
|
+
deferred.Resolve(Env().Undefined());
|
|
1113
|
+
}
|
|
1114
|
+
void OnError(const Napi::Error& err) {
|
|
1115
|
+
deferred.Reject(err.Value());
|
|
1116
|
+
}
|
|
1117
|
+
};
|
|
1118
|
+
|
|
1119
|
+
Napi::Value AddonContextSequenceCheckpoint::Init(const Napi::CallbackInfo& info) {
|
|
1120
|
+
AddonContext * context = Napi::ObjectWrap<AddonContext>::Unwrap(info[0].As<Napi::Object>());
|
|
1121
|
+
sequenceId = info[1].As<Napi::Number>().Int32Value();
|
|
1122
|
+
|
|
1123
|
+
AddonContextSequenceCheckpointInitWorker* worker = new AddonContextSequenceCheckpointInitWorker(info, this, context);
|
|
1124
|
+
worker->Queue();
|
|
1125
|
+
return worker->GetPromise();
|
|
1126
|
+
}
|
|
1127
|
+
|
|
1128
|
+
Napi::Value AddonContextSequenceCheckpoint::Dispose(const Napi::CallbackInfo& info) {
|
|
1129
|
+
dispose();
|
|
1130
|
+
return info.Env().Undefined();
|
|
1131
|
+
}
|
|
1132
|
+
|
|
1133
|
+
void AddonContextSequenceCheckpoint::dispose() {
|
|
1134
|
+
std::lock_guard<std::mutex> lock(dataMutex);
|
|
1135
|
+
data.clear();
|
|
1136
|
+
data.resize(0);
|
|
1137
|
+
}
|
|
1138
|
+
|
|
1139
|
+
Napi::Value AddonContextSequenceCheckpoint::GetSize(const Napi::CallbackInfo& info) {
|
|
1140
|
+
return Napi::Number::New(info.Env(), data.size());
|
|
1141
|
+
}
|
|
1142
|
+
|
|
1143
|
+
Napi::Value AddonContextSequenceCheckpoint::GetMinPos(const Napi::CallbackInfo& info) {
|
|
1144
|
+
return Napi::Number::New(info.Env(), minPos);
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1147
|
+
Napi::Value AddonContextSequenceCheckpoint::GetMaxPos(const Napi::CallbackInfo& info) {
|
|
1148
|
+
return Napi::Number::New(info.Env(), maxPos);
|
|
1149
|
+
}
|
|
1150
|
+
|
|
1151
|
+
void AddonContextSequenceCheckpoint::init(Napi::Object exports) {
|
|
1152
|
+
exports.Set(
|
|
1153
|
+
"AddonContextSequenceCheckpoint",
|
|
1154
|
+
DefineClass(
|
|
1155
|
+
exports.Env(),
|
|
1156
|
+
"AddonContextSequenceCheckpoint",
|
|
1157
|
+
{
|
|
1158
|
+
InstanceMethod("init", &AddonContextSequenceCheckpoint::Init),
|
|
1159
|
+
InstanceMethod("dispose", &AddonContextSequenceCheckpoint::Dispose),
|
|
1160
|
+
|
|
1161
|
+
InstanceAccessor("size", &AddonContextSequenceCheckpoint::GetSize, nullptr),
|
|
1162
|
+
InstanceAccessor("minPos", &AddonContextSequenceCheckpoint::GetMinPos, nullptr),
|
|
1163
|
+
InstanceAccessor("maxPos", &AddonContextSequenceCheckpoint::GetMaxPos, nullptr),
|
|
1164
|
+
}
|
|
1165
|
+
)
|
|
1166
|
+
);
|
|
1167
|
+
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
#pragma once
|
|
2
|
+
|
|
3
|
+
#include <mutex>
|
|
4
|
+
|
|
2
5
|
#include "llama.h"
|
|
3
6
|
#include "napi.h"
|
|
4
7
|
#include "addonGlobals.h"
|
|
@@ -53,6 +56,30 @@ class AddonContext : public Napi::ObjectWrap<AddonContext> {
|
|
|
53
56
|
Napi::Value EnsureDraftContextIsCompatibleForSpeculative(const Napi::CallbackInfo& info);
|
|
54
57
|
|
|
55
58
|
Napi::Value SetLoras(const Napi::CallbackInfo& info);
|
|
59
|
+
Napi::Value RestoreCheckpoint(const Napi::CallbackInfo& info);
|
|
60
|
+
|
|
61
|
+
static void init(Napi::Object exports);
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
class AddonContextSequenceCheckpoint : public Napi::ObjectWrap<AddonContextSequenceCheckpoint> {
|
|
65
|
+
public:
|
|
66
|
+
std::mutex dataMutex;
|
|
67
|
+
std::vector<uint8_t> data;
|
|
68
|
+
llama_seq_id sequenceId = 0;
|
|
69
|
+
std::size_t minPos = 0;
|
|
70
|
+
std::size_t maxPos = 0;
|
|
71
|
+
|
|
72
|
+
AddonContextSequenceCheckpoint(const Napi::CallbackInfo& info);
|
|
73
|
+
~AddonContextSequenceCheckpoint();
|
|
74
|
+
|
|
75
|
+
Napi::Value Init(const Napi::CallbackInfo& info);
|
|
76
|
+
Napi::Value Dispose(const Napi::CallbackInfo& info);
|
|
77
|
+
|
|
78
|
+
void dispose();
|
|
79
|
+
|
|
80
|
+
Napi::Value GetSize(const Napi::CallbackInfo& info);
|
|
81
|
+
Napi::Value GetMinPos(const Napi::CallbackInfo& info);
|
|
82
|
+
Napi::Value GetMaxPos(const Napi::CallbackInfo& info);
|
|
56
83
|
|
|
57
84
|
static void init(Napi::Object exports);
|
|
58
85
|
};
|
package/llama/addon/addon.cpp
CHANGED
|
@@ -317,6 +317,7 @@ Napi::Object registerCallback(Napi::Env env, Napi::Object exports) {
|
|
|
317
317
|
AddonGrammar::init(exports);
|
|
318
318
|
AddonGrammarEvaluationState::init(exports);
|
|
319
319
|
AddonContext::init(exports);
|
|
320
|
+
AddonContextSequenceCheckpoint::init(exports);
|
|
320
321
|
AddonSampler::init(exports);
|
|
321
322
|
|
|
322
323
|
llama_log_set(addonLlamaCppLogCallback, nullptr);
|
package/llama/gitRelease.bundle
CHANGED
|
Binary file
|