From 1ca470240ccb2e14b24810b42e65db410ca00334 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A8=8B=E5=BA=8F=E5=91=98=E9=98=BF=E6=B1=9F=28Relakkes?= =?UTF-8?q?=29?= Date: Fri, 3 Jul 2026 17:54:09 +0800 Subject: [PATCH] fix: limit skill market sources to v1 --- src/server/__tests__/skill-market.test.ts | 26 ++++++++++++++++++++++- src/server/services/skillMarket/types.ts | 2 +- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/server/__tests__/skill-market.test.ts b/src/server/__tests__/skill-market.test.ts index 8bdd92c1..9d70c171 100644 --- a/src/server/__tests__/skill-market.test.ts +++ b/src/server/__tests__/skill-market.test.ts @@ -454,6 +454,30 @@ describe('skill market service source selection', () => { }) }) + it('falls back to SkillHub in auto mode when ClawHub fetch throws', async () => { + const fetchCalls: string[] = [] + const service = createSkillMarketService({ + fetchImpl: async (url) => { + fetchCalls.push(String(url)) + if (String(url).startsWith('https://clawhub.ai/')) { + throw new Error('network down') + } + return Response.json(SKILLHUB_TOP_SKILLS_RESPONSE) + }, + installedSkillNames: async () => new Set(), + }) + + const result = await service.listSkills({ source: 'auto' }) + + expect(fetchCalls).toHaveLength(2) + expect(fetchCalls[0]).toStartWith('https://clawhub.ai/api/v1/skills') + expect(fetchCalls[1]).toStartWith('https://api.skillhub.cn/api/skills') + expect(result.source).toBe('skillhub') + expect(result.sourceStatus).toBe('fallback') + expect(result.message).toContain('ClawHub unavailable') + expect(result.message).toContain('network down') + }) + it("does not fallback to SkillHub when source is 'clawhub'", async () => { const fetchCalls: string[] = [] const service = createSkillMarketService({ @@ -508,7 +532,7 @@ describe('skill market service source selection', () => { }) await expect( - service.listSkills({ source: 'anthropic-github' as 'auto' }), + service.listSkills({ source: 'future-source' as 'auto' }), ).rejects.toThrow('Unsupported skill market source') expect(fetchCalls).toHaveLength(0) diff --git a/src/server/services/skillMarket/types.ts b/src/server/services/skillMarket/types.ts index 3a2d8f2d..fc06fb21 100644 --- a/src/server/services/skillMarket/types.ts +++ b/src/server/services/skillMarket/types.ts @@ -1,4 +1,4 @@ -export type SkillMarketSource = 'clawhub' | 'skillhub' | 'anthropic-github' +export type SkillMarketSource = 'clawhub' | 'skillhub' export type SkillMarketSourceMode = 'primary' | 'fallback' | 'enhanced' export type SkillMarketTrustState =