fix: restore Kimi Code under Moonshot setup (#54619) (thanks @sparkyrider)

* Onboarding: restore Kimi Code under Moonshot setup

* Update extensions/kimi-coding/index.ts

Fix naming convention in metadata

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
sparkyrider 2026-03-25 23:16:40 -05:00 committed by GitHub
parent 99deba798c
commit 1bc30b7fb9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 32 additions and 13 deletions

View File

@ -31,6 +31,7 @@ Docs: https://docs.openclaw.ai
- Microsoft Teams/config: accept the existing `welcomeCard`, `groupWelcomeCard`, `promptStarters`, and feedback/reflection keys in strict config validation so already-supported Teams runtime settings stop failing schema checks. (#54679) Thanks @gumclaw.
- Agents/status: use provider-aware context window lookup for fresh Anthropic 4.6 model overrides so `/status` shows the correct 1.0m window instead of an underreported shared-cache minimum. (#54796) Thanks @neeravmakwana.
- CLI/message send: write manual `openclaw message send` deliveries into the resolved agent session transcript again by always threading the default CLI agent through outbound mirroring. (#54187) Thanks @KevInTheCloud5617.
- CLI/onboarding: show the Kimi Code API key option again in the Moonshot setup menu so the interactive picker includes all Kimi setup paths together. Fixes #54412 Thanks @sparkyrider
## 2026.3.24

View File

@ -22,7 +22,7 @@ export default definePluginEntry({
createProviderApiKeyAuthMethod({
providerId: PROVIDER_ID,
methodId: "api-key",
label: "Kimi API key (subscription)",
label: "Kimi Code API key (subscription)",
hint: "Kimi K2.5 + Kimi",
optionKey: "kimiCodeApiKey",
flagName: "--kimi-code-api-key",
@ -38,10 +38,10 @@ export default definePluginEntry({
noteTitle: "Kimi",
wizard: {
choiceId: "kimi-code-api-key",
choiceLabel: "Kimi API key (subscription)",
choiceLabel: "Kimi Code API key (subscription)",
groupId: "moonshot",
groupLabel: "Moonshot AI (Kimi K2.5)",
groupHint: "Kimi K2.5 + Kimi",
groupHint: "Kimi K2.5",
},
}),
],

View File

@ -10,14 +10,14 @@
"provider": "kimi",
"method": "api-key",
"choiceId": "kimi-code-api-key",
"choiceLabel": "Kimi Code API key",
"groupId": "kimi-code",
"groupLabel": "Kimi Code",
"groupHint": "Dedicated coding endpoint",
"choiceLabel": "Kimi Code API key (subscription)",
"groupId": "moonshot",
"groupLabel": "Moonshot AI (Kimi K2.5)",
"groupHint": "Kimi K2.5",
"optionKey": "kimiCodeApiKey",
"cliFlag": "--kimi-code-api-key",
"cliOption": "--kimi-code-api-key <key>",
"cliDescription": "Kimi Code API key"
"cliDescription": "Kimi Code API key (subscription)"
}
],
"configSchema": {

View File

@ -1417,14 +1417,14 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [
provider: "kimi",
method: "api-key",
choiceId: "kimi-code-api-key",
choiceLabel: "Kimi Code API key",
groupId: "kimi-code",
groupLabel: "Kimi Code",
groupHint: "Dedicated coding endpoint",
choiceLabel: "Kimi Code API key (subscription)",
groupId: "moonshot",
groupLabel: "Moonshot AI (Kimi K2.5)",
groupHint: "Kimi K2.5",
optionKey: "kimiCodeApiKey",
cliFlag: "--kimi-code-api-key",
cliOption: "--kimi-code-api-key <key>",
cliDescription: "Kimi Code API key",
cliDescription: "Kimi Code API key (subscription)",
},
],
},

View File

@ -130,6 +130,24 @@ describe("plugin contract registry", () => {
).toEqual(bundledWebSearchPluginIds);
});
it("keeps Kimi Coding onboarding grouped under Moonshot", () => {
const kimi = loadPluginManifestRegistry({}).plugins.find(
(plugin) => plugin.origin === "bundled" && plugin.id === "kimi",
);
expect(kimi?.providerAuthChoices).toEqual(
expect.arrayContaining([
expect.objectContaining({
choiceId: "kimi-code-api-key",
choiceLabel: "Kimi Code API key (subscription)",
groupId: "moonshot",
groupLabel: "Moonshot AI (Kimi K2.5)",
groupHint: "Kimi K2.5",
}),
]),
);
});
it("does not duplicate bundled image-generation provider ids", () => {
const ids = imageGenerationProviderContractRegistry.map((entry) => entry.provider.id);
expect(ids).toEqual([...new Set(ids)]);