@openclaw/moonshot-provider 2026.8.1-beta.2 → 2026.8.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.
- package/dist/index.js +2 -4
- package/dist/{kimi-web-search-provider-DDPS6Tkx.js → kimi-web-search-provider-DlE1dJHa.js} +1 -1
- package/dist/{kimi-web-search-provider.runtime-37xzGdoQ.js → kimi-web-search-provider.runtime-ILfyNM0k.js} +10 -12
- package/dist/media-understanding-provider.js +6 -43
- package/dist/web-search-contract-api.js +2 -28
- package/dist/web-search-provider.js +1 -1
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { t as openclaw_plugin_default } from "./openclaw.plugin-BLi5Z-ZR.js";
|
|
2
|
-
import { MOONSHOT_DEFAULT_MODEL_REF,
|
|
3
|
-
import "./api.js";
|
|
2
|
+
import { MOONSHOT_DEFAULT_MODEL_REF, buildMoonshotProvider } from "./provider-catalog.js";
|
|
4
3
|
import { moonshotMediaUnderstandingProvider } from "./media-understanding-provider.js";
|
|
5
4
|
import { isMoonshotAlwaysThinkingModelId, isMoonshotK3NativeVideoRoute, resolveThinkingProfile } from "./provider-policy-api.js";
|
|
6
5
|
import { wrapMoonshotStream } from "./native-video.js";
|
|
7
6
|
import { applyMoonshotConfig, applyMoonshotConfigCn } from "./onboard.js";
|
|
8
|
-
import { t as createKimiWebSearchProvider } from "./kimi-web-search-provider-
|
|
7
|
+
import { t as createKimiWebSearchProvider } from "./kimi-web-search-provider-DlE1dJHa.js";
|
|
9
8
|
import { createProviderApiKeyAuthMethod } from "openclaw/plugin-sdk/provider-auth-api-key";
|
|
10
9
|
import { defineSingleProviderPluginEntry } from "openclaw/plugin-sdk/provider-entry";
|
|
11
10
|
import { buildOpenAICompatibleReplayPolicy } from "openclaw/plugin-sdk/provider-model-shared";
|
|
@@ -40,7 +39,6 @@ var moonshot_default = defineSingleProviderPluginEntry({
|
|
|
40
39
|
allowExplicitBaseUrl: true,
|
|
41
40
|
liveModelDiscovery: true
|
|
42
41
|
},
|
|
43
|
-
applyNativeStreamingUsageCompat: ({ providerConfig }) => applyMoonshotNativeStreamingUsageCompat(providerConfig),
|
|
44
42
|
normalizeResolvedModel: (ctx) => ({
|
|
45
43
|
...ctx.model,
|
|
46
44
|
input: ctx.model.input.filter((type) => type !== "video").concat(isMoonshotK3NativeVideoRoute({
|
|
@@ -2,7 +2,7 @@ import { createLazyRuntimeModule } from "openclaw/plugin-sdk/lazy-runtime";
|
|
|
2
2
|
import { createWebSearchProviderContractFields } from "openclaw/plugin-sdk/provider-web-search-config-contract";
|
|
3
3
|
//#region extensions/moonshot/src/kimi-web-search-provider.ts
|
|
4
4
|
const KIMI_CREDENTIAL_PATH = "plugins.entries.moonshot.config.webSearch.apiKey";
|
|
5
|
-
const loadKimiWebSearchProviderRuntime = createLazyRuntimeModule(() => import("./kimi-web-search-provider.runtime-
|
|
5
|
+
const loadKimiWebSearchProviderRuntime = createLazyRuntimeModule(() => import("./kimi-web-search-provider.runtime-ILfyNM0k.js"));
|
|
6
6
|
const KimiSearchSchema = {
|
|
7
7
|
type: "object",
|
|
8
8
|
properties: {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { MOONSHOT_BASE_URL, MOONSHOT_CN_BASE_URL, isNativeMoonshotBaseUrl } from "./provider-catalog.js";
|
|
2
|
-
import { createProviderHttpError, readProviderJsonObjectResponse } from "openclaw/plugin-sdk/provider-http";
|
|
3
2
|
import { isRecord, normalizeOptionalString, uniqueStrings } from "openclaw/plugin-sdk/string-coerce-runtime";
|
|
4
|
-
import {
|
|
3
|
+
import { createProviderHttpError, readProviderJsonObjectResponse } from "openclaw/plugin-sdk/provider-http";
|
|
4
|
+
import { MAX_SEARCH_COUNT, buildSearchCacheKey, buildUnsupportedSearchFilterResponse, mergeScopedSearchConfig, readCachedSearchPayload, readConfiguredSecretString, readPositiveIntegerParam, readProviderEnvValue, readStringParam, resolveProviderWebSearchPluginConfig, resolveSearchCacheTtlMs, resolveSearchTimeoutSeconds, setProviderWebSearchPluginConfigValue, withTrustedWebSearchEndpoint, wrapWebContent, writeCachedSearchPayload } from "openclaw/plugin-sdk/provider-web-search";
|
|
5
5
|
//#region extensions/moonshot/src/kimi-web-search-provider.runtime.ts
|
|
6
6
|
const DEFAULT_KIMI_BASE_URL = MOONSHOT_BASE_URL;
|
|
7
7
|
const DEFAULT_KIMI_SEARCH_MODEL = "kimi-k2.6";
|
|
@@ -161,13 +161,10 @@ async function runKimiSearch(params) {
|
|
|
161
161
|
grounded: hasGroundingEvidence
|
|
162
162
|
};
|
|
163
163
|
}
|
|
164
|
-
|
|
165
|
-
content: "Search completed but no final answer was produced.",
|
|
166
|
-
citations: [...collectedCitations],
|
|
167
|
-
grounded: hasGroundingEvidence
|
|
168
|
-
};
|
|
164
|
+
throw new Error("Kimi web search exhausted its tool-call rounds without producing a final answer. Retry the query or choose another search provider.");
|
|
169
165
|
}
|
|
170
166
|
async function executeKimiWebSearchProviderTool(ctx, args, opts) {
|
|
167
|
+
opts?.signal?.throwIfAborted();
|
|
171
168
|
const searchConfig = mergeScopedSearchConfig(ctx.searchConfig, "kimi", resolveProviderWebSearchPluginConfig(ctx.config, "moonshot"));
|
|
172
169
|
const unsupportedResponse = buildUnsupportedSearchFilterResponse(args, "kimi");
|
|
173
170
|
if (unsupportedResponse) return unsupportedResponse;
|
|
@@ -179,20 +176,20 @@ async function executeKimiWebSearchProviderTool(ctx, args, opts) {
|
|
|
179
176
|
docs: "https://docs.openclaw.ai/tools/web"
|
|
180
177
|
};
|
|
181
178
|
const query = readStringParam(args, "query", { required: true });
|
|
182
|
-
|
|
179
|
+
readPositiveIntegerParam(args, "count", {
|
|
183
180
|
max: MAX_SEARCH_COUNT,
|
|
184
181
|
message: `count must be an integer from 1 to ${MAX_SEARCH_COUNT}.`
|
|
185
|
-
})
|
|
182
|
+
});
|
|
186
183
|
const model = resolveKimiModel(kimiConfig);
|
|
187
184
|
const baseUrl = resolveKimiBaseUrl(kimiConfig, ctx.config);
|
|
188
185
|
const cacheKey = buildSearchCacheKey([
|
|
189
186
|
"kimi",
|
|
190
187
|
query,
|
|
191
|
-
resolveSearchCount(count, DEFAULT_SEARCH_COUNT),
|
|
192
188
|
baseUrl,
|
|
193
189
|
model
|
|
194
190
|
]);
|
|
195
|
-
const
|
|
191
|
+
const cacheTtlMs = resolveSearchCacheTtlMs(searchConfig);
|
|
192
|
+
const cached = readCachedSearchPayload(cacheKey, cacheTtlMs);
|
|
196
193
|
if (cached) return cached;
|
|
197
194
|
const start = Date.now();
|
|
198
195
|
const result = await runKimiSearch({
|
|
@@ -203,6 +200,7 @@ async function executeKimiWebSearchProviderTool(ctx, args, opts) {
|
|
|
203
200
|
timeoutSeconds: resolveSearchTimeoutSeconds(searchConfig),
|
|
204
201
|
signal: opts?.signal
|
|
205
202
|
});
|
|
203
|
+
opts?.signal?.throwIfAborted();
|
|
206
204
|
if (!result.grounded) return {
|
|
207
205
|
error: "kimi_web_search_ungrounded",
|
|
208
206
|
message: "Kimi returned a chat completion without native web-search grounding. Retry the query, switch to a structured provider such as Brave, or use web_fetch/browser for a specific URL.",
|
|
@@ -226,7 +224,7 @@ async function executeKimiWebSearchProviderTool(ctx, args, opts) {
|
|
|
226
224
|
content: wrapWebContent(result.content),
|
|
227
225
|
citations: result.citations
|
|
228
226
|
};
|
|
229
|
-
writeCachedSearchPayload(cacheKey, payload,
|
|
227
|
+
writeCachedSearchPayload(cacheKey, payload, cacheTtlMs);
|
|
230
228
|
return payload;
|
|
231
229
|
}
|
|
232
230
|
async function runKimiSearchProviderSetup(ctx) {
|
|
@@ -1,56 +1,19 @@
|
|
|
1
1
|
import { t as openclaw_plugin_default } from "./openclaw.plugin-BLi5Z-ZR.js";
|
|
2
2
|
import { MOONSHOT_BASE_URL } from "./provider-catalog.js";
|
|
3
|
-
import {
|
|
4
|
-
import { assertOkOrThrowHttpError, postJsonRequest, readProviderJsonResponse, resolveProviderHttpRequestConfig } from "openclaw/plugin-sdk/provider-http";
|
|
3
|
+
import { describeImageWithModel, describeImagesWithModel, describeOpenAiCompatibleVideo } from "openclaw/plugin-sdk/media-understanding";
|
|
5
4
|
//#region extensions/moonshot/media-understanding-provider.ts
|
|
6
5
|
const DEFAULT_MOONSHOT_IMAGE_MODEL = openclaw_plugin_default.mediaUnderstandingProviderMetadata.moonshot.defaultModels.image;
|
|
7
6
|
const DEFAULT_MOONSHOT_VIDEO_MODEL = openclaw_plugin_default.mediaUnderstandingProviderMetadata.moonshot.defaultModels.video;
|
|
8
7
|
const DEFAULT_MOONSHOT_VIDEO_PROMPT = "Describe the video.";
|
|
9
8
|
async function describeMoonshotVideo(params) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const mime = resolveMediaUnderstandingString(params.mime, "video/mp4");
|
|
13
|
-
const prompt = resolveMediaUnderstandingString(params.prompt, DEFAULT_MOONSHOT_VIDEO_PROMPT);
|
|
14
|
-
const { baseUrl, allowPrivateNetwork, headers, dispatcherPolicy } = resolveProviderHttpRequestConfig({
|
|
15
|
-
baseUrl: params.baseUrl,
|
|
9
|
+
return describeOpenAiCompatibleVideo({
|
|
10
|
+
...params,
|
|
16
11
|
defaultBaseUrl: MOONSHOT_BASE_URL,
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
defaultHeaders: {
|
|
20
|
-
"content-type": "application/json",
|
|
21
|
-
authorization: `Bearer ${params.apiKey}`
|
|
22
|
-
},
|
|
12
|
+
defaultModel: DEFAULT_MOONSHOT_VIDEO_MODEL,
|
|
13
|
+
defaultPrompt: DEFAULT_MOONSHOT_VIDEO_PROMPT,
|
|
23
14
|
provider: "moonshot",
|
|
24
|
-
|
|
25
|
-
capability: "video",
|
|
26
|
-
transport: "media-understanding"
|
|
15
|
+
providerLabel: "Moonshot"
|
|
27
16
|
});
|
|
28
|
-
const { response: res, release } = await postJsonRequest({
|
|
29
|
-
url: `${baseUrl}/chat/completions`,
|
|
30
|
-
headers,
|
|
31
|
-
body: buildOpenAiCompatibleVideoRequestBody({
|
|
32
|
-
model,
|
|
33
|
-
prompt,
|
|
34
|
-
mime,
|
|
35
|
-
buffer: params.buffer
|
|
36
|
-
}),
|
|
37
|
-
timeoutMs: params.timeoutMs,
|
|
38
|
-
...params.signal ? { signal: params.signal } : {},
|
|
39
|
-
fetchFn,
|
|
40
|
-
allowPrivateNetwork,
|
|
41
|
-
dispatcherPolicy
|
|
42
|
-
});
|
|
43
|
-
try {
|
|
44
|
-
await assertOkOrThrowHttpError(res, "Moonshot video description failed");
|
|
45
|
-
const text = coerceOpenAiCompatibleVideoText(await readProviderJsonResponse(res, "Moonshot video description failed"));
|
|
46
|
-
if (!text) throw new Error("Moonshot video description response missing content");
|
|
47
|
-
return {
|
|
48
|
-
text,
|
|
49
|
-
model
|
|
50
|
-
};
|
|
51
|
-
} finally {
|
|
52
|
-
await release();
|
|
53
|
-
}
|
|
54
17
|
}
|
|
55
18
|
const moonshotMediaUnderstandingProvider = {
|
|
56
19
|
id: "moonshot",
|
|
@@ -1,29 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
function createKimiWebSearchProvider() {
|
|
4
|
-
const credentialPath = "plugins.entries.moonshot.config.webSearch.apiKey";
|
|
5
|
-
return {
|
|
6
|
-
id: "kimi",
|
|
7
|
-
label: "Kimi (Moonshot)",
|
|
8
|
-
hint: "Requires Moonshot / Kimi API key · Moonshot web search",
|
|
9
|
-
onboardingScopes: ["text-inference"],
|
|
10
|
-
credentialLabel: "Moonshot / Kimi API key",
|
|
11
|
-
envVars: ["KIMI_API_KEY", "MOONSHOT_API_KEY"],
|
|
12
|
-
placeholder: "sk-...",
|
|
13
|
-
signupUrl: "https://platform.moonshot.cn/",
|
|
14
|
-
docsUrl: "https://docs.openclaw.ai/tools/web",
|
|
15
|
-
autoDetectOrder: 40,
|
|
16
|
-
credentialPath,
|
|
17
|
-
...createWebSearchProviderContractFields({
|
|
18
|
-
credentialPath,
|
|
19
|
-
searchCredential: {
|
|
20
|
-
type: "scoped",
|
|
21
|
-
scopeId: "kimi"
|
|
22
|
-
},
|
|
23
|
-
configuredCredential: { pluginId: "moonshot" }
|
|
24
|
-
}),
|
|
25
|
-
createTool: () => null
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
//#endregion
|
|
1
|
+
import { t as createKimiWebSearchProvider } from "./kimi-web-search-provider-DlE1dJHa.js";
|
|
2
|
+
import "./web-search-provider.js";
|
|
29
3
|
export { createKimiWebSearchProvider };
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { t as createKimiWebSearchProvider } from "./kimi-web-search-provider-
|
|
1
|
+
import { t as createKimiWebSearchProvider } from "./kimi-web-search-provider-DlE1dJHa.js";
|
|
2
2
|
export { createKimiWebSearchProvider };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openclaw/moonshot-provider",
|
|
3
|
-
"version": "2026.8.1
|
|
3
|
+
"version": "2026.8.1",
|
|
4
4
|
"description": "OpenClaw Moonshot provider plugin",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"openclaw": {
|
|
@@ -14,10 +14,10 @@
|
|
|
14
14
|
"minHostVersion": ">=2026.6.9"
|
|
15
15
|
},
|
|
16
16
|
"compat": {
|
|
17
|
-
"pluginApi": ">=2026.8.1
|
|
17
|
+
"pluginApi": ">=2026.8.1"
|
|
18
18
|
},
|
|
19
19
|
"build": {
|
|
20
|
-
"openclawVersion": "2026.8.1
|
|
20
|
+
"openclawVersion": "2026.8.1",
|
|
21
21
|
"bundledDist": false
|
|
22
22
|
},
|
|
23
23
|
"release": {
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"README.md"
|
|
39
39
|
],
|
|
40
40
|
"peerDependencies": {
|
|
41
|
-
"openclaw": ">=2026.8.1
|
|
41
|
+
"openclaw": ">=2026.8.1"
|
|
42
42
|
},
|
|
43
43
|
"peerDependenciesMeta": {
|
|
44
44
|
"openclaw": {
|