




























@@ -621,4 +621,120 @@ describe("provider install catalog", () => {
621621622622expect(resolveProviderInstallCatalogEntry("moonshot-api-key")).toBeUndefined();
623623});
624+625+it("keeps missing provider-index entries visible when only some provider plugins are installed", () => {
626+loadPluginRegistrySnapshot.mockReturnValue({
627+version: 1,
628+hostContractVersion: "test",
629+compatRegistryVersion: "test",
630+migrationVersion: 1,
631+policyHash: "test",
632+generatedAtMs: 0,
633+installRecords: {},
634+plugins: [
635+{
636+pluginId: "moonshot",
637+origin: "bundled",
638+manifestPath: "/repo/extensions/moonshot/openclaw.plugin.json",
639+manifestHash: "hash",
640+rootDir: "/repo/extensions/moonshot",
641+enabled: true,
642+startup: {
643+sidecar: false,
644+memory: false,
645+deferConfiguredChannelFullLoadUntilAfterListen: false,
646+agentHarnesses: [],
647+},
648+compat: [],
649+},
650+],
651+diagnostics: [],
652+});
653+loadOpenClawProviderIndex.mockReturnValue({
654+version: 1,
655+providers: {
656+groq: {
657+id: "groq",
658+name: "Groq",
659+plugin: {
660+id: "groq",
661+package: "@openclaw/plugin-groq",
662+install: {
663+npmSpec: "@openclaw/plugin-groq@1.0.0",
664+defaultChoice: "npm",
665+},
666+},
667+authChoices: [
668+{
669+method: "api-key",
670+choiceId: "groq-api-key",
671+choiceLabel: "Groq API key",
672+},
673+],
674+},
675+moonshot: {
676+id: "moonshot",
677+name: "Moonshot AI",
678+plugin: {
679+id: "moonshot",
680+package: "@openclaw/plugin-moonshot",
681+install: {
682+clawhubSpec: "clawhub:openclaw/moonshot@2026.5.2",
683+npmSpec: "@openclaw/plugin-moonshot@2026.5.2",
684+defaultChoice: "clawhub",
685+},
686+},
687+authChoices: [
688+{
689+method: "api-key",
690+choiceId: "moonshot-api-key",
691+choiceLabel: "Moonshot API key",
692+},
693+],
694+},
695+vllm: {
696+id: "vllm",
697+name: "vLLM",
698+plugin: {
699+id: "vllm",
700+package: "@openclaw/plugin-vllm",
701+install: {
702+clawhubSpec: "clawhub:openclaw/vllm@2026.5.2",
703+npmSpec: "@openclaw/plugin-vllm@2026.5.2",
704+defaultChoice: "clawhub",
705+},
706+},
707+authChoices: [
708+{
709+method: "server",
710+choiceId: "vllm-server",
711+choiceLabel: "vLLM server",
712+},
713+],
714+},
715+},
716+});
717+718+const entries = resolveProviderInstallCatalogEntries();
719+720+expect(entries.map((entry) => entry.choiceId)).toEqual(["groq-api-key", "vllm-server"]);
721+expect(resolveProviderInstallCatalogEntry("moonshot-api-key")).toBeUndefined();
722+expect(resolveProviderInstallCatalogEntry("vllm-server")).toMatchObject({
723+pluginId: "vllm",
724+install: {
725+clawhubSpec: "clawhub:openclaw/vllm@2026.5.2",
726+npmSpec: "@openclaw/plugin-vllm@2026.5.2",
727+defaultChoice: "clawhub",
728+},
729+installSource: {
730+defaultChoice: "clawhub",
731+clawhub: {
732+spec: "clawhub:openclaw/vllm@2026.5.2",
733+},
734+npm: {
735+spec: "@openclaw/plugin-vllm@2026.5.2",
736+},
737+},
738+});
739+});
624740});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。