Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sync lmstudio.js schema (2025-03-03) #23

Merged
merged 1 commit into from
Mar 3, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 56 additions & 2 deletions sdk-schema/lms-with-inferred-unions.json
Original file line number Diff line number Diff line change
Expand Up @@ -809,6 +809,12 @@
},
"splitStrategy": {
"$ref": "#/definitions/llmSplitStrategy"
},
"disabledGpus": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"additionalProperties": false
Expand Down Expand Up @@ -3210,6 +3216,50 @@
],
"additionalProperties": false
},
"embedding/rpc/countTokens/parameter": {
"type": "object",
"properties": {
"specifier": {
"$ref": "#/definitions/modelSpecifier"
},
"inputString": {
"type": "string"
}
},
"required": [
"specifier",
"inputString"
],
"additionalProperties": false
},
"embedding/rpc/countTokens/returns": {
"type": "object",
"properties": {
"tokenCount": {
"type": "integer"
}
},
"required": [
"tokenCount"
],
"additionalProperties": false
},
"pseudo/embedding/rpc/countTokens": {
"type": "object",
"properties": {
"parameter": {
"$ref": "#/definitions/embedding/rpc/countTokens/parameter"
},
"returns": {
"$ref": "#/definitions/embedding/rpc/countTokens/returns"
}
},
"required": [
"parameter",
"returns"
],
"additionalProperties": false
},
"embedding/channel/loadModel/creationParameter": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -3390,6 +3440,9 @@
"rpcTokenize": {
"$ref": "#/definitions/pseudo/embedding/rpc/tokenize"
},
"rpcCountTokens": {
"$ref": "#/definitions/pseudo/embedding/rpc/countTokens"
},
"channelLoadModel": {
"$ref": "#/definitions/pseudo/embedding/channel/loadModel"
},
Expand All @@ -3404,6 +3457,7 @@
"rpcGetLoadConfig",
"rpcEmbedString",
"rpcTokenize",
"rpcCountTokens",
"channelLoadModel",
"channelGetOrLoad"
],
Expand Down Expand Up @@ -6216,7 +6270,7 @@
"title": "Type"
},
"info": {
"$ref": "#/definitions/embeddingModelInstanceInfo"
"$ref": "#/definitions/modelInstanceInfo"
}
},
"required": [
Expand Down Expand Up @@ -6608,7 +6662,7 @@
"title": "Type"
},
"info": {
"$ref": "#/definitions/llmInstanceInfo"
"$ref": "#/definitions/modelInstanceInfo"
}
},
"required": [
Expand Down
58 changes: 56 additions & 2 deletions sdk-schema/lms.json
Original file line number Diff line number Diff line change
Expand Up @@ -1174,6 +1174,12 @@
},
"splitStrategy": {
"$ref": "#/definitions/llmSplitStrategy"
},
"disabledGpus": {
"type": "array",
"items": {
"type": "integer"
}
}
},
"additionalProperties": false
Expand Down Expand Up @@ -3689,6 +3695,50 @@
],
"additionalProperties": false
},
"embedding/rpc/countTokens/parameter": {
"type": "object",
"properties": {
"specifier": {
"$ref": "#/definitions/modelSpecifier"
},
"inputString": {
"type": "string"
}
},
"required": [
"specifier",
"inputString"
],
"additionalProperties": false
},
"embedding/rpc/countTokens/returns": {
"type": "object",
"properties": {
"tokenCount": {
"type": "integer"
}
},
"required": [
"tokenCount"
],
"additionalProperties": false
},
"pseudo/embedding/rpc/countTokens": {
"type": "object",
"properties": {
"parameter": {
"$ref": "#/definitions/embedding/rpc/countTokens/parameter"
},
"returns": {
"$ref": "#/definitions/embedding/rpc/countTokens/returns"
}
},
"required": [
"parameter",
"returns"
],
"additionalProperties": false
},
"embedding/channel/loadModel/creationParameter": {
"type": "object",
"properties": {
Expand Down Expand Up @@ -3878,7 +3928,7 @@
"const": "unloadingOtherJITModel"
},
"info": {
"$ref": "#/definitions/embeddingModelInstanceInfo"
"$ref": "#/definitions/modelInstanceInfo"
}
},
"required": [
Expand Down Expand Up @@ -3981,6 +4031,9 @@
"rpcTokenize": {
"$ref": "#/definitions/pseudo/embedding/rpc/tokenize"
},
"rpcCountTokens": {
"$ref": "#/definitions/pseudo/embedding/rpc/countTokens"
},
"channelLoadModel": {
"$ref": "#/definitions/pseudo/embedding/channel/loadModel"
},
Expand All @@ -3995,6 +4048,7 @@
"rpcGetLoadConfig",
"rpcEmbedString",
"rpcTokenize",
"rpcCountTokens",
"channelLoadModel",
"channelGetOrLoad"
],
Expand Down Expand Up @@ -4831,7 +4885,7 @@
"const": "unloadingOtherJITModel"
},
"info": {
"$ref": "#/definitions/llmInstanceInfo"
"$ref": "#/definitions/modelInstanceInfo"
}
},
"required": [
Expand Down
2 changes: 1 addition & 1 deletion sdk-schema/lmstudio-js
Submodule lmstudio-js updated 63 files
+69 −69 package-lock.json
+1 −1 packages/lms-cli
+7 −7 packages/lms-client/package.json
+56 −0 packages/lms-client/src/embedding/.test-snapshots/EmbeddingModel.heavy.test.ts.snap
+22 −0 packages/lms-client/src/embedding/EmbeddingDynamicHandle.ts
+67 −0 packages/lms-client/src/embedding/EmbeddingModel.heavy.test.ts
+3 −2 packages/lms-client/src/embedding/EmbeddingNamespace.ts
+4 −4 packages/lms-client/src/index.ts
+63 −0 packages/lms-client/src/llm/.test-snapshots/LLM.act.heavy.test.ts.snap
+26 −8 packages/lms-client/src/llm/.test-snapshots/LLM.complete.heavy.test.ts.snap
+24 −95 packages/lms-client/src/llm/.test-snapshots/LLM.heavy.test.ts.snap
+39 −15 packages/lms-client/src/llm/.test-snapshots/LLM.respond.heavy.test.ts.snap
+75 −0 packages/lms-client/src/llm/.test-snapshots/LLM.speculativeDecoding.heavy.test.ts.snap
+67 −0 packages/lms-client/src/llm/.test-snapshots/LLM.vision.heavy.test.ts.snap
+4 −4 packages/lms-client/src/llm/ActResult.ts
+111 −0 packages/lms-client/src/llm/LLM.act.heavy.test.ts
+128 −93 packages/lms-client/src/llm/LLM.complete.heavy.test.ts
+25 −101 packages/lms-client/src/llm/LLM.heavy.test.ts
+188 −149 packages/lms-client/src/llm/LLM.respond.heavy.test.ts
+77 −0 packages/lms-client/src/llm/LLM.speculativeDecoding.heavy.test.ts
+83 −0 packages/lms-client/src/llm/LLM.vision.heavy.test.ts
+3 −3 packages/lms-client/src/llm/LLMDynamicHandle.ts
+3 −2 packages/lms-client/src/llm/LLMNamespace.ts
+22 −5 packages/lms-client/src/llm/tool.ts
+8 −6 packages/lms-client/src/modelShared/ModelNamespace.ts
+3 −4 packages/lms-client/src/modelShared/SpecificModel.ts
+33 −3 packages/lms-client/src/shared.heavy.test.ts
+21 −2 packages/lms-client/src/system/SystemNamespace.ts
+3 −3 packages/lms-common-server/package.json
+4 −4 packages/lms-common/package.json
+55 −0 packages/lms-common/src/.test-snapshots/SlicedSignal.test.ts.snap
+138 −0 packages/lms-common/src/SlicedSignal.test.ts
+46 −1 packages/lms-common/src/SlicedSignal.ts
+5 −5 packages/lms-communication-client/package.json
+5 −5 packages/lms-communication-mock/package.json
+4 −4 packages/lms-communication-server/package.json
+3 −3 packages/lms-communication/package.json
+4 −4 packages/lms-es-plugin-runner/package.json
+6 −6 packages/lms-external-backend-interfaces/package.json
+40 −25 packages/lms-external-backend-interfaces/src/baseModelBackendInterface.ts
+20 −2 packages/lms-external-backend-interfaces/src/embeddingBackendInterface.ts
+11 −2 packages/lms-external-backend-interfaces/src/llmBackendInterface.ts
+2 −2 packages/lms-isomorphic/package.json
+5 −5 packages/lms-json-schema/package.json
+3 −3 packages/lms-kv-config/package.json
+10 −7 packages/lms-kv-config/src/schema.ts
+31 −8 packages/lms-kv-config/src/valueTypes.ts
+4 −4 packages/lms-lmstudio/package.json
+2 −2 packages/lms-shared-types/package.json
+5 −0 packages/lms-shared-types/src/llm/LLMLoadModelConfig.ts
+23 −2 packages/lms-shared-types/src/llm/LLMPredictionConfig.ts
+3 −3 publish/cli/package.json
+3 −3 publish/lms/package.json
+3 −3 publish/lmstudio/package.json
+4 −4 publish/sdk/package.json
+1 −1 publish/sdk/src/exportedTypes.ts
+3 −3 scaffolds/node-javascript-empty/package.json
+3 −3 scaffolds/node-javascript/package.json
+1 −1 scaffolds/node-javascript/src/index.js
+3 −3 scaffolds/node-typescript-empty/package.json
+3 −3 scaffolds/node-typescript-preprocessor/package.json
+3 −3 scaffolds/node-typescript/package.json
+1 −1 scaffolds/node-typescript/src/index.ts
87 changes: 82 additions & 5 deletions src/lmstudio/_sdk_models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# generated by datamodel-codegen:
# filename: lms-with-inferred-unions.json
# timestamp: 2025-02-27T03:57:00+00:00
# timestamp: 2025-03-03T03:25:41+00:00

from __future__ import annotations

Expand Down Expand Up @@ -119,6 +119,10 @@
"EmbeddingModelInstanceAdditionalInfoDict",
"EmbeddingModelInstanceInfo",
"EmbeddingModelInstanceInfoDict",
"EmbeddingRpcCountTokensParameter",
"EmbeddingRpcCountTokensParameterDict",
"EmbeddingRpcCountTokensReturns",
"EmbeddingRpcCountTokensReturnsDict",
"EmbeddingRpcEmbedStringParameter",
"EmbeddingRpcEmbedStringParameterDict",
"EmbeddingRpcEmbedStringReturns",
Expand Down Expand Up @@ -443,6 +447,8 @@
"PseudoEmbeddingChannelLoadModel",
"PseudoEmbeddingChannelLoadModelDict",
"PseudoEmbeddingDict",
"PseudoEmbeddingRpcCountTokens",
"PseudoEmbeddingRpcCountTokensDict",
"PseudoEmbeddingRpcEmbedString",
"PseudoEmbeddingRpcEmbedStringDict",
"PseudoEmbeddingRpcGetLoadConfig",
Expand Down Expand Up @@ -1766,6 +1772,27 @@ class EmbeddingRpcTokenizeReturnsDict(TypedDict):
tokens: Sequence[float]


###############################################################################
# EmbeddingRpcCountTokensReturns
###############################################################################


class EmbeddingRpcCountTokensReturns(
LMStudioStruct["EmbeddingRpcCountTokensReturnsDict"], kw_only=True
):
token_count: int = field(name="tokenCount")


class EmbeddingRpcCountTokensReturnsDict(TypedDict):
"""Corresponding typed dictionary definition for EmbeddingRpcCountTokensReturns.

NOTE: Multi-word keys are defined using their camelCase form,
as that is what `to_dict()` emits, and what `_from_api_dict()` accepts.
"""

tokenCount: int


###############################################################################
# EmbeddingChannelLoadModelCreationParameter
###############################################################################
Expand Down Expand Up @@ -4852,6 +4879,7 @@ class GpuSetting(LMStudioStruct["GpuSettingDict"], kw_only=True):
ratio: LlmLlamaAccelerationOffloadRatio | None = None
main_gpu: int | None = field(name="mainGpu", default=None)
split_strategy: LlmSplitStrategy | None = field(name="splitStrategy", default=None)
disabled_gpus: Sequence[int] | None = field(name="disabledGpus", default=None)


class GpuSettingDict(TypedDict):
Expand All @@ -4864,6 +4892,7 @@ class GpuSettingDict(TypedDict):
ratio: NotRequired[LlmLlamaAccelerationOffloadRatio | None]
mainGpu: NotRequired[int | None]
splitStrategy: NotRequired[LlmSplitStrategy | None]
disabledGpus: NotRequired[Sequence[int] | None]


###############################################################################
Expand Down Expand Up @@ -6479,7 +6508,7 @@ class EmbeddingChannelGetOrLoadToClientPacketUnloadingOtherJITModel(
type: ClassVar[Annotated[Literal["unloadingOtherJITModel"], Meta(title="Type")]] = (
"unloadingOtherJITModel"
)
info: EmbeddingModelInstanceInfo
info: ModelInstanceInfo


class EmbeddingChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDict):
Expand All @@ -6490,7 +6519,7 @@ class EmbeddingChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDic
"""

type: Literal["unloadingOtherJITModel"]
info: EmbeddingModelInstanceInfoDict
info: ModelInstanceInfo


###############################################################################
Expand Down Expand Up @@ -6650,7 +6679,7 @@ class LlmChannelGetOrLoadToClientPacketUnloadingOtherJITModel(
type: ClassVar[Annotated[Literal["unloadingOtherJITModel"], Meta(title="Type")]] = (
"unloadingOtherJITModel"
)
info: LlmInstanceInfo
info: ModelInstanceInfo


class LlmChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDict):
Expand All @@ -6661,7 +6690,7 @@ class LlmChannelGetOrLoadToClientPacketUnloadingOtherJITModelDict(TypedDict):
"""

type: Literal["unloadingOtherJITModel"]
info: LlmInstanceInfoDict
info: ModelInstanceInfo


###############################################################################
Expand Down Expand Up @@ -7247,6 +7276,52 @@ class PseudoEmbeddingRpcTokenizeDict(TypedDict):
returns: EmbeddingRpcTokenizeReturnsDict


###############################################################################
# EmbeddingRpcCountTokensParameter
###############################################################################


class EmbeddingRpcCountTokensParameter(
LMStudioStruct["EmbeddingRpcCountTokensParameterDict"], kw_only=True
):
specifier: ModelSpecifier
input_string: str = field(name="inputString")


class EmbeddingRpcCountTokensParameterDict(TypedDict):
"""Corresponding typed dictionary definition for EmbeddingRpcCountTokensParameter.

NOTE: Multi-word keys are defined using their camelCase form,
as that is what `to_dict()` emits, and what `_from_api_dict()` accepts.
"""

specifier: ModelSpecifierDict
inputString: str


###############################################################################
# PseudoEmbeddingRpcCountTokens
###############################################################################


class PseudoEmbeddingRpcCountTokens(
LMStudioStruct["PseudoEmbeddingRpcCountTokensDict"], kw_only=True
):
parameter: EmbeddingRpcCountTokensParameter
returns: EmbeddingRpcCountTokensReturns


class PseudoEmbeddingRpcCountTokensDict(TypedDict):
"""Corresponding typed dictionary definition for PseudoEmbeddingRpcCountTokens.

NOTE: Multi-word keys are defined using their camelCase form,
as that is what `to_dict()` emits, and what `_from_api_dict()` accepts.
"""

parameter: EmbeddingRpcCountTokensParameterDict
returns: EmbeddingRpcCountTokensReturnsDict


EmbeddingChannelLoadModelToClientPacket = (
EmbeddingChannelLoadModelToClientPacketResolved
| EmbeddingChannelLoadModelToClientPacketProgress
Expand Down Expand Up @@ -7339,6 +7414,7 @@ class PseudoEmbedding(LMStudioStruct["PseudoEmbeddingDict"], kw_only=True):
)
rpc_embed_string: PseudoEmbeddingRpcEmbedString = field(name="rpcEmbedString")
rpc_tokenize: PseudoEmbeddingRpcTokenize = field(name="rpcTokenize")
rpc_count_tokens: PseudoEmbeddingRpcCountTokens = field(name="rpcCountTokens")
channel_load_model: PseudoEmbeddingChannelLoadModel = field(name="channelLoadModel")
channel_get_or_load: PseudoEmbeddingChannelGetOrLoad = field(
name="channelGetOrLoad"
Expand All @@ -7358,6 +7434,7 @@ class PseudoEmbeddingDict(TypedDict):
rpcGetLoadConfig: PseudoEmbeddingRpcGetLoadConfigDict
rpcEmbedString: PseudoEmbeddingRpcEmbedStringDict
rpcTokenize: PseudoEmbeddingRpcTokenizeDict
rpcCountTokens: PseudoEmbeddingRpcCountTokensDict
channelLoadModel: PseudoEmbeddingChannelLoadModelDict
channelGetOrLoad: PseudoEmbeddingChannelGetOrLoadDict

Expand Down
4 changes: 3 additions & 1 deletion tests/test_kv_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,9 @@
"mainGpu": 0,
"ratio": 0.5,
"splitStrategy": "evenly",
"disabledGpus": [1, 2]
}
SC_GPU_CONFIG = {"main_gpu": 0, "ratio": 0.5, "split_strategy": "evenly"}
SC_GPU_CONFIG = {"main_gpu": 0, "ratio": 0.5, "split_strategy": "evenly", "disabled_gpus": [1, 2]}

LOAD_CONFIG_EMBEDDING: EmbeddingLoadModelConfigDict = {
"contextLength": 1978,
Expand Down Expand Up @@ -242,6 +243,7 @@ def test_snake_case_conversion(


_NOT_YET_SUPPORTED_KEYS = {
"disabledGpus",
"reasoningParsing",
# "speculativeDecoding" scope
"draftModel",
Expand Down
Loading