@openclaw/kimi-provider 2026.10.10-beta.5 → 2026.11.5-beta.1

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.
@@ -1,5 +1,5 @@
1
1
  import { buildManifestModelProviderConfig } from "openclaw/plugin-sdk/provider-catalog-shared";
2
- //#region extensions/kimi-coding/openclaw.plugin.json
2
+ // extensions/kimi-coding/openclaw.plugin.json
3
3
  var openclaw_plugin_default = {
4
4
  id: "kimi",
5
5
  categories: ["models"],
@@ -32,6 +32,7 @@ var openclaw_plugin_default = {
32
32
  "api": "anthropic-messages",
33
33
  "headers": { "User-Agent": "claude-code/0.1.0" },
34
34
  "defaultModel": "kimi-for-coding",
35
+ "family": "moonshot",
35
36
  "models": [
36
37
  {
37
38
  "id": "k3",
@@ -150,8 +151,7 @@ var openclaw_plugin_default = {
150
151
  "properties": {}
151
152
  }
152
153
  };
153
- //#endregion
154
- //#region extensions/kimi-coding/provider-catalog.ts
154
+ // extensions/kimi-coding/provider-catalog.ts
155
155
  const KIMI_PROVIDER_ID = "kimi";
156
156
  const KIMI_CODING_CATALOG = openclaw_plugin_default.modelCatalog.providers.kimi;
157
157
  const KIMI_MODEL_ALIASES = new Map(Object.entries(openclaw_plugin_default.modelIdNormalization.providers.kimi.aliases));
@@ -167,5 +167,4 @@ function buildKimiCodingProvider() {
167
167
  function normalizeKimiCodingModelId(modelId) {
168
168
  return KIMI_MODEL_ALIASES.get(modelId) ?? modelId;
169
169
  }
170
- //#endregion
171
170
  export { normalizeKimiCodingModelId as a, buildKimiCodingProvider as i, KIMI_CODING_DEFAULT_MODEL_ID as n, openclaw_plugin_default as o, KIMI_CODING_LEGACY_MODEL_IDS as r, KIMI_CODING_BASE_URL as t };
@@ -1 +1 @@
1
- {"version":3,"entries":[{"output":"api.js","source":"extensions/kimi-coding/api.ts"},{"output":"index.js","source":"extensions/kimi-coding/index.ts"},{"output":"onboard.js","source":"extensions/kimi-coding/onboard.ts"},{"output":"provider-catalog.js","source":"extensions/kimi-coding/provider-catalog.ts"},{"output":"provider-policy-api.js","source":"extensions/kimi-coding/provider-policy-api.ts"},{"output":"stream.js","source":"extensions/kimi-coding/stream.ts"}],"chunks":[{"output":".setup/provider-catalog-Bc73oFLX.mjs","sha256":"005cbd7e38131e7c6f0bb7e0655579114576163994030b0b11f417dee905aed6","facadeSource":null,"sources":["extensions/kimi-coding/openclaw.plugin.json","extensions/kimi-coding/provider-catalog.ts"]},{"output":"api.js","sha256":"60eb1ae8bcac1d84deab84b227d7c191e53c5827cc8151c3db10d3b2da94ceb5","facadeSource":"extensions/kimi-coding/api.ts","sources":[]},{"output":"index.js","sha256":"5d690fdbdbb6426c936c6797e5d6bd1a08c19e8843496ca1c8134666e94075ee","facadeSource":"extensions/kimi-coding/index.ts","sources":["extensions/kimi-coding/index.ts"]},{"output":"onboard.js","sha256":"1c6225d9e276ff279adda47621562c69ce50a12d04b26f2ec3ddcb499853f5d7","facadeSource":"extensions/kimi-coding/onboard.ts","sources":["extensions/kimi-coding/onboard.ts"]},{"output":"provider-catalog.js","sha256":"b33abb5f0077675498872163774be9679bb13dd7e31932d12a162e4ccaaff650","facadeSource":"extensions/kimi-coding/provider-catalog.ts","sources":[]},{"output":"provider-policy-api.js","sha256":"7609f603fccd267729181f0d8b08001a5f7922d7f0f65f4a21359ab1ed231358","facadeSource":"extensions/kimi-coding/provider-policy-api.ts","sources":["extensions/kimi-coding/provider-policy-api.ts"]},{"output":"stream.js","sha256":"ef468427d541aac362cfa5b2ff33c3aa61492702833fb2ea6b98b7cf3455bd52","facadeSource":"extensions/kimi-coding/stream.ts","sources":["extensions/kimi-coding/stream.ts"]}],"unrenderedSources":["extensions/kimi-coding/api.ts"]}
1
+ {"version":3,"entries":[{"output":"api.js","source":"extensions/kimi-coding/api.ts"},{"output":"index.js","source":"extensions/kimi-coding/index.ts"},{"output":"onboard.js","source":"extensions/kimi-coding/onboard.ts"},{"output":"provider-catalog.js","source":"extensions/kimi-coding/provider-catalog.ts"},{"output":"provider-policy-api.js","source":"extensions/kimi-coding/provider-policy-api.ts"},{"output":"stream.js","source":"extensions/kimi-coding/stream.ts"}],"chunks":[{"output":".setup/provider-catalog-EXT898dx.mjs","sha256":"b6af2524e7b051fd1f72813b1a38f95371cc88247e3e798613456405f05de181","facadeSource":null,"sources":["extensions/kimi-coding/openclaw.plugin.json","extensions/kimi-coding/provider-catalog.ts"]},{"output":"api.js","sha256":"710e888ab333906ecdfd2f5469df646abbe13eb6d5d6fbdcdf91a04c352d5355","facadeSource":"extensions/kimi-coding/api.ts","sources":[]},{"output":"index.js","sha256":"af4f190d721d4d7d0fdea614b74b7cbca9c7dafd085ea60fa47af871de0485cb","facadeSource":"extensions/kimi-coding/index.ts","sources":["extensions/kimi-coding/index.ts"]},{"output":"onboard.js","sha256":"e39006d5f6fdf7a7cdddcf4e37bd32f8a62ceb137db4ac581abcaf968c9a3c4a","facadeSource":"extensions/kimi-coding/onboard.ts","sources":["extensions/kimi-coding/onboard.ts"]},{"output":"provider-catalog.js","sha256":"b6e706d08922c79e828c49be5d3ca06edf6cd5847063c466de82586c9e30e473","facadeSource":"extensions/kimi-coding/provider-catalog.ts","sources":[]},{"output":"provider-policy-api.js","sha256":"f68287f0bc6ce35523f86dd37317c609f082bd671227b7b1a9eb389821239ad4","facadeSource":"extensions/kimi-coding/provider-policy-api.ts","sources":["extensions/kimi-coding/provider-policy-api.ts"]},{"output":"stream.js","sha256":"8e75a02f9b80078604a39a46affb452263cc4c9f34b8f6845b1cf0e274fdb194","facadeSource":"extensions/kimi-coding/stream.ts","sources":["extensions/kimi-coding/stream.ts"]}],"unrenderedSources":["extensions/kimi-coding/api.ts"]}
package/dist/api.js CHANGED
@@ -1,3 +1,3 @@
1
- import { a as normalizeKimiCodingModelId, i as buildKimiCodingProvider, n as KIMI_CODING_DEFAULT_MODEL_ID, r as KIMI_CODING_LEGACY_MODEL_IDS, t as KIMI_CODING_BASE_URL } from "./.setup/provider-catalog-Bc73oFLX.mjs";
1
+ import { a as normalizeKimiCodingModelId, i as buildKimiCodingProvider, n as KIMI_CODING_DEFAULT_MODEL_ID, r as KIMI_CODING_LEGACY_MODEL_IDS, t as KIMI_CODING_BASE_URL } from "./.setup/provider-catalog-EXT898dx.mjs";
2
2
  import { KIMI_CODING_MODEL_REF, KIMI_MODEL_REF } from "./onboard.js";
3
3
  export { KIMI_CODING_BASE_URL, KIMI_CODING_DEFAULT_MODEL_ID, KIMI_CODING_LEGACY_MODEL_IDS, KIMI_CODING_MODEL_REF, KIMI_MODEL_REF, buildKimiCodingProvider, normalizeKimiCodingModelId };
package/dist/index.js CHANGED
@@ -1,11 +1,11 @@
1
- import { a as normalizeKimiCodingModelId, i as buildKimiCodingProvider, o as openclaw_plugin_default } from "./.setup/provider-catalog-Bc73oFLX.mjs";
1
+ import { a as normalizeKimiCodingModelId, i as buildKimiCodingProvider, o as openclaw_plugin_default } from "./.setup/provider-catalog-EXT898dx.mjs";
2
2
  import { applyKimiCodeConfig } from "./onboard.js";
3
3
  import { KIMI_K3_THINKING_EFFORTS, isKimiK3ModelId, resolveThinkingProfile } from "./provider-policy-api.js";
4
4
  import { createLazyRuntimeModule, createLazyRuntimeSurface } from "openclaw/plugin-sdk/lazy-runtime";
5
5
  import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
6
6
  import { findNormalizedProviderKey, normalizeProviderId } from "openclaw/plugin-sdk/provider-model-metadata";
7
7
  import { isRecord, normalizeOptionalString } from "openclaw/plugin-sdk/string-coerce-runtime";
8
- //#region extensions/kimi-coding/index.ts
8
+ // extensions/kimi-coding/index.ts
9
9
  const PLUGIN_ID = "kimi";
10
10
  const PROVIDER_ID = "kimi";
11
11
  const PROVIDER_ALIASES = ["kimi-code", "kimi-coding"];
@@ -90,5 +90,4 @@ var kimi_coding_default = defineSingleProviderPluginEntry({
90
90
  wrapStreamFn: wrapKimiProviderStream
91
91
  }
92
92
  });
93
- //#endregion
94
93
  export { kimi_coding_default as default };
package/dist/onboard.js CHANGED
@@ -1,6 +1,6 @@
1
- import { i as buildKimiCodingProvider, n as KIMI_CODING_DEFAULT_MODEL_ID, t as KIMI_CODING_BASE_URL } from "./.setup/provider-catalog-Bc73oFLX.mjs";
1
+ import { i as buildKimiCodingProvider, n as KIMI_CODING_DEFAULT_MODEL_ID, t as KIMI_CODING_BASE_URL } from "./.setup/provider-catalog-EXT898dx.mjs";
2
2
  import { createDefaultModelsPresetAppliers } from "openclaw/plugin-sdk/provider-onboard";
3
- //#region extensions/kimi-coding/onboard.ts
3
+ // extensions/kimi-coding/onboard.ts
4
4
  const KIMI_MODEL_REF = `kimi/${KIMI_CODING_DEFAULT_MODEL_ID}`;
5
5
  const KIMI_CODING_MODEL_REF = KIMI_MODEL_REF;
6
6
  const { applyConfig: applyKimiCodeConfig } = createDefaultModelsPresetAppliers({
@@ -21,5 +21,4 @@ const { applyConfig: applyKimiCodeConfig } = createDefaultModelsPresetAppliers({
21
21
  };
22
22
  }
23
23
  });
24
- //#endregion
25
24
  export { KIMI_CODING_MODEL_REF, KIMI_MODEL_REF, applyKimiCodeConfig };
@@ -1 +1 @@
1
- export { t as KIMI_CODING_BASE_URL, n as KIMI_CODING_DEFAULT_MODEL_ID, r as KIMI_CODING_LEGACY_MODEL_IDS, i as buildKimiCodingProvider, a as normalizeKimiCodingModelId } from "./.setup/provider-catalog-Bc73oFLX.mjs";
1
+ export { t as KIMI_CODING_BASE_URL, n as KIMI_CODING_DEFAULT_MODEL_ID, r as KIMI_CODING_LEGACY_MODEL_IDS, i as buildKimiCodingProvider, a as normalizeKimiCodingModelId } from "./.setup/provider-catalog-EXT898dx.mjs";
@@ -1,4 +1,4 @@
1
- //#region extensions/kimi-coding/provider-policy-api.ts
1
+ // extensions/kimi-coding/provider-policy-api.ts
2
2
  const KIMI_K3_1_MODEL_IDS = ["k3.1-pro", "k3.1-pro-highspeed"];
3
3
  const KIMI_K3_MODEL_IDS = [
4
4
  "k3",
@@ -7,6 +7,13 @@ const KIMI_K3_MODEL_IDS = [
7
7
  ...KIMI_K3_1_MODEL_IDS
8
8
  ];
9
9
  const KIMI_K3_LEGACY_MODEL_IDS = ["k3[1m]"];
10
+ const KIMI_CODE_ENABLED_ONLY_MODEL_IDS = [
11
+ "kimi-for-coding",
12
+ "kimi-for-coding-highspeed",
13
+ "kimi-code",
14
+ "k2p5",
15
+ ...KIMI_K3_1_MODEL_IDS
16
+ ];
10
17
  const KIMI_K3_THINKING_EFFORTS = {
11
18
  minimal: "low",
12
19
  low: "low",
@@ -29,17 +36,24 @@ function isKimiK3ModelId(modelId) {
29
36
  const normalized = modelId.trim().toLowerCase();
30
37
  return KIMI_K3_MODEL_IDS.includes(normalized) || KIMI_K3_LEGACY_MODEL_IDS.includes(normalized);
31
38
  }
32
- /** Kimi Code K3.1 Pro models, whose backend rejects disabled thinking. */
33
- function isKimiK31ModelId(modelId) {
39
+ /** Kimi Code models whose backend cannot honor disabled thinking. */
40
+ function isKimiCodeEnabledOnlyModelId(modelId) {
34
41
  const normalized = modelId.trim().toLowerCase();
35
- return KIMI_K3_1_MODEL_IDS.some((id) => id === normalized);
42
+ return KIMI_CODE_ENABLED_ONLY_MODEL_IDS.some((id) => id === normalized);
36
43
  }
37
44
  function resolveThinkingProfile({ modelId }) {
38
45
  if (isKimiK3ModelId(modelId)) return {
39
- levels: isKimiK31ModelId(modelId) ? KIMI_K3_THINKING_LEVELS.filter(({ id }) => id !== "off") : KIMI_K3_THINKING_LEVELS,
46
+ levels: isKimiCodeEnabledOnlyModelId(modelId) ? KIMI_K3_THINKING_LEVELS.filter(({ id }) => id !== "off") : KIMI_K3_THINKING_LEVELS,
40
47
  defaultLevel: modelId.trim().toLowerCase() === "kimi-k3" ? "off" : "high",
41
48
  preserveWhenCatalogReasoningFalse: true
42
49
  };
50
+ if (isKimiCodeEnabledOnlyModelId(modelId)) return {
51
+ levels: [{
52
+ id: "low",
53
+ label: "on"
54
+ }],
55
+ defaultLevel: "low"
56
+ };
43
57
  return {
44
58
  levels: [{
45
59
  id: "off",
@@ -51,5 +65,4 @@ function resolveThinkingProfile({ modelId }) {
51
65
  defaultLevel: "off"
52
66
  };
53
67
  }
54
- //#endregion
55
- export { KIMI_K3_MODEL_IDS, KIMI_K3_THINKING_EFFORTS, isKimiK31ModelId, isKimiK3ModelId, resolveThinkingProfile };
68
+ export { KIMI_K3_MODEL_IDS, KIMI_K3_THINKING_EFFORTS, isKimiCodeEnabledOnlyModelId, isKimiK3ModelId, resolveThinkingProfile };
package/dist/stream.js CHANGED
@@ -1,8 +1,8 @@
1
- import { KIMI_K3_THINKING_EFFORTS, isKimiK31ModelId, isKimiK3ModelId } from "./provider-policy-api.js";
1
+ import { KIMI_K3_THINKING_EFFORTS, isKimiCodeEnabledOnlyModelId, isKimiK3ModelId } from "./provider-policy-api.js";
2
2
  import { asFiniteNumberInRange, asOptionalObjectRecord, isRecord, parseBooleanValue } from "openclaw/plugin-sdk/string-coerce-runtime";
3
3
  import { resolveOpenAIRequestReasoning, streamSimple } from "openclaw/plugin-sdk/llm";
4
- import { normalizeOpenAICompatibleReasoningReplay, streamWithPayloadPatch, transformProviderStreamMessages } from "openclaw/plugin-sdk/provider-stream-shared";
5
- //#region extensions/kimi-coding/stream.ts
4
+ import { mapAssistantMessageStream, normalizeOpenAICompatibleReasoningReplay, streamWithPayloadPatch, transformProviderStreamMessages } from "openclaw/plugin-sdk/provider-stream-shared";
5
+ // extensions/kimi-coding/stream.ts
6
6
  const TOOL_CALLS_SECTION_BEGIN = "<|tool_calls_section_begin|>";
7
7
  const TOOL_CALLS_SECTION_END = "<|tool_calls_section_end|>";
8
8
  const TOOL_CALL_BEGIN = "<|tool_call_begin|>";
@@ -104,13 +104,10 @@ function parseKimiTaggedToolCalls(text) {
104
104
  return toolCalls.length > 0 ? toolCalls : null;
105
105
  }
106
106
  function rewriteKimiTaggedToolCallsInMessage(message) {
107
- const record = asOptionalObjectRecord(message);
108
- if (!record || !Array.isArray(record.content)) return;
109
107
  let changed = false;
110
108
  const nextContent = [];
111
- for (const block of record.content) {
112
- const typedBlock = asOptionalObjectRecord(block);
113
- const parsed = typedBlock?.type === "text" && typeof typedBlock.text === "string" ? parseKimiTaggedToolCalls(typedBlock.text) : null;
109
+ for (const block of message.content) {
110
+ const parsed = block.type === "text" ? parseKimiTaggedToolCalls(block.text) : null;
114
111
  if (!parsed) {
115
112
  nextContent.push(block);
116
113
  continue;
@@ -119,29 +116,21 @@ function rewriteKimiTaggedToolCallsInMessage(message) {
119
116
  changed = true;
120
117
  }
121
118
  if (!changed) return;
122
- record.content = nextContent;
123
- if (record.stopReason === "stop") record.stopReason = "toolUse";
124
- }
125
- function createKimiToolCallMarkupWrapper(baseStreamFn) {
126
- const underlying = baseStreamFn ?? streamSimple;
127
- return (model, context, options) => {
128
- const maybeStream = underlying(model, context, options);
129
- if (maybeStream && typeof maybeStream === "object" && "then" in maybeStream) return Promise.resolve(maybeStream).then((stream) => transformProviderStreamMessages(stream, rewriteKimiTaggedToolCallsInMessage));
130
- return transformProviderStreamMessages(maybeStream, rewriteKimiTaggedToolCallsInMessage);
131
- };
119
+ message.content = nextContent;
120
+ if (message.stopReason === "stop") message.stopReason = "toolUse";
132
121
  }
133
122
  function wrapKimiProviderStream(ctx) {
134
123
  const configured = normalizeKimiThinkingConfig(ctx.extraParams?.thinking);
135
124
  const extraBody = asOptionalObjectRecord(ctx.extraParams?.extra_body ?? ctx.extraParams?.extraBody);
136
125
  const templateKwargs = asOptionalObjectRecord(extraBody?.chat_template_kwargs ?? ctx.extraParams?.chat_template_kwargs ?? ctx.extraParams?.chatTemplateKwargs);
137
126
  const underlying = ctx.streamFn ?? streamSimple;
138
- return createKimiToolCallMarkupWrapper((model, context, options) => {
127
+ return (model, context, options) => {
139
128
  const api = ctx.sourceApi ?? model.api;
140
129
  const anthropic = api === "anthropic-messages";
141
130
  const k3 = anthropic && isKimiK3ModelId(model.id);
142
131
  const openaiK3 = api === "openai-completions" && isKimiK3ModelId(model.id);
143
132
  const requestedLevel = options?.reasoning ?? ctx.thinkingLevel ?? (k3 ? "high" : void 0);
144
- const thinkingLevel = anthropic && isKimiK31ModelId(model.id) && requestedLevel === "off" ? "high" : requestedLevel;
133
+ const thinkingLevel = anthropic && isKimiCodeEnabledOnlyModelId(model.id) && (!requestedLevel || requestedLevel === "off") ? k3 ? "high" : "low" : requestedLevel;
145
134
  const thinkingConfig = resolveKimiThinkingConfig(configured, thinkingLevel);
146
135
  const enabledLevel = thinkingLevel && thinkingLevel !== "off" ? thinkingLevel : k3 || openaiK3 ? "high" : "low";
147
136
  const nativeLevel = enabledLevel === "adaptive" ? "high" : enabledLevel;
@@ -159,7 +148,7 @@ function wrapKimiProviderStream(ctx) {
159
148
  ...model.thinkingLevelMap
160
149
  }
161
150
  } : model;
162
- return streamWithPayloadPatch(underlying, runtimeModel, context, {
151
+ const stream = streamWithPayloadPatch(underlying, runtimeModel, context, {
163
152
  ...options,
164
153
  reasoning
165
154
  }, (payloadObj) => {
@@ -196,7 +185,8 @@ function wrapKimiProviderStream(ctx) {
196
185
  });
197
186
  }
198
187
  });
199
- });
188
+ return mapAssistantMessageStream(stream, (resolved) => transformProviderStreamMessages(resolved, rewriteKimiTaggedToolCallsInMessage));
189
+ };
200
190
  }
201
191
  function stripContentArrayCacheControl(value) {
202
192
  if (!Array.isArray(value)) return;
@@ -212,5 +202,4 @@ function stripAnthropicCacheControlMarkers(payloadObj) {
212
202
  if (!Array.isArray(payloadObj.messages)) return;
213
203
  for (const message of payloadObj.messages) stripContentArrayCacheControl(asOptionalObjectRecord(message)?.content);
214
204
  }
215
- //#endregion
216
205
  export { wrapKimiProviderStream };
@@ -41,6 +41,7 @@
41
41
  "User-Agent": "claude-code/0.1.0"
42
42
  },
43
43
  "defaultModel": "kimi-for-coding",
44
+ "family": "moonshot",
44
45
  "models": [
45
46
  {
46
47
  "id": "k3",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openclaw/kimi-provider",
3
- "version": "2026.10.10-beta.5",
3
+ "version": "2026.11.5-beta.1",
4
4
  "description": "OpenClaw Kimi provider plugin.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -18,10 +18,10 @@
18
18
  "minHostVersion": ">=2026.6.8"
19
19
  },
20
20
  "compat": {
21
- "pluginApi": ">=2026.10.10-beta.5"
21
+ "pluginApi": ">=2026.11.5-beta.1"
22
22
  },
23
23
  "build": {
24
- "openclawVersion": "2026.10.10-beta.5",
24
+ "openclawVersion": "2026.11.5-beta.1",
25
25
  "bundledDist": false
26
26
  },
27
27
  "release": {
@@ -40,7 +40,7 @@
40
40
  "assets/activity.svg"
41
41
  ],
42
42
  "peerDependencies": {
43
- "openclaw": ">=2026.10.10-beta.5"
43
+ "openclaw": ">=2026.11.5-beta.1"
44
44
  },
45
45
  "peerDependenciesMeta": {
46
46
  "openclaw": {