Skip to content

Commit 25c5a3b

Browse files
committed
refactor(web): remove unused getCachedAgentsLite and buildAgentsDataLite
These functions were defined but never used anywhere in the codebase. Removing them as dead code cleanup to reduce maintenance burden.
1 parent 5172265 commit 25c5a3b

File tree

3 files changed

+0
-370
lines changed

3 files changed

+0
-370
lines changed

web/src/server/__tests__/agents-transform.test.ts

Lines changed: 0 additions & 157 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
import { describe, it, expect } from '@jest/globals'
22
import {
33
buildAgentsData,
4-
buildAgentsDataLite,
54
type AgentRow,
6-
type AgentRowSlim,
75
} from '../agents-transform'
86

97
describe('buildAgentsData', () => {
@@ -261,158 +259,3 @@ describe('buildAgentsData', () => {
261259
})
262260
})
263261

264-
describe('buildAgentsDataLite', () => {
265-
it('dedupes by latest, merges metrics, and omits version_stats', () => {
266-
// AgentRowSlim has pre-extracted fields (name, description, tags) instead of data blob
267-
const agents: AgentRowSlim[] = [
268-
{
269-
id: 'base',
270-
version: '1.0.0',
271-
name: 'Base',
272-
description: 'desc',
273-
tags: ['x'],
274-
created_at: '2025-01-01T00:00:00.000Z',
275-
publisher: {
276-
id: 'codebuff',
277-
name: 'Codebuff',
278-
verified: true,
279-
avatar_url: null,
280-
},
281-
},
282-
// older duplicate by name should be ignored due to first-seen is latest ordering
283-
{
284-
id: 'base-old',
285-
version: '0.9.0',
286-
name: 'Base',
287-
description: 'old',
288-
tags: null,
289-
created_at: '2024-12-01T00:00:00.000Z',
290-
publisher: {
291-
id: 'codebuff',
292-
name: 'Codebuff',
293-
verified: true,
294-
avatar_url: null,
295-
},
296-
},
297-
{
298-
id: 'reviewer',
299-
version: '2.1.0',
300-
name: 'Reviewer',
301-
description: null,
302-
tags: null,
303-
created_at: '2025-01-03T00:00:00.000Z',
304-
publisher: {
305-
id: 'codebuff',
306-
name: 'Codebuff',
307-
verified: true,
308-
avatar_url: null,
309-
},
310-
},
311-
]
312-
313-
const usageMetrics = [
314-
{
315-
publisher_id: 'codebuff',
316-
agent_name: 'Base',
317-
total_invocations: 50,
318-
total_dollars: 100,
319-
avg_cost_per_run: 2,
320-
unique_users: 4,
321-
last_used: new Date('2025-01-05T00:00:00.000Z'),
322-
},
323-
{
324-
publisher_id: 'codebuff',
325-
agent_name: 'reviewer',
326-
total_invocations: 5,
327-
total_dollars: 5,
328-
avg_cost_per_run: 1,
329-
unique_users: 1,
330-
last_used: new Date('2025-01-04T00:00:00.000Z'),
331-
},
332-
]
333-
334-
const weeklyMetrics = [
335-
{
336-
publisher_id: 'codebuff',
337-
agent_name: 'Base',
338-
weekly_runs: 10,
339-
weekly_dollars: 20,
340-
},
341-
{
342-
publisher_id: 'codebuff',
343-
agent_name: 'reviewer',
344-
weekly_runs: 2,
345-
weekly_dollars: 1,
346-
},
347-
]
348-
349-
const out = buildAgentsDataLite({
350-
agents,
351-
usageMetrics: usageMetrics as any,
352-
weeklyMetrics: weeklyMetrics as any,
353-
})
354-
355-
// should have deduped to two agents
356-
expect(out.length).toBe(2)
357-
358-
const base = out.find((a) => a.id === 'base')!
359-
expect(base.name).toBe('Base')
360-
expect(base.weekly_spent).toBe(20)
361-
expect(base.weekly_runs).toBe(10)
362-
expect(base.total_spent).toBe(100)
363-
expect(base.usage_count).toBe(50)
364-
expect(base.avg_cost_per_invocation).toBe(2)
365-
expect(base.unique_users).toBe(4)
366-
expect(base.version_stats).toBeUndefined()
367-
expect(Object.prototype.hasOwnProperty.call(base, 'version_stats')).toBe(
368-
false,
369-
)
370-
371-
// sorted by weekly_spent desc
372-
expect(out[0].weekly_spent! >= out[1].weekly_spent!).toBe(true)
373-
})
374-
375-
it('handles missing metrics gracefully and omits version_stats', () => {
376-
// AgentRowSlim with null name (should fall back to id)
377-
const agents: AgentRowSlim[] = [
378-
{
379-
id: 'solo',
380-
version: '0.1.0',
381-
name: null,
382-
description: 'no name provided',
383-
tags: null,
384-
created_at: new Date('2025-02-01T00:00:00.000Z'),
385-
publisher: {
386-
id: 'codebuff',
387-
name: 'Codebuff',
388-
verified: true,
389-
avatar_url: null,
390-
},
391-
},
392-
]
393-
394-
const out = buildAgentsDataLite({
395-
agents,
396-
usageMetrics: [],
397-
weeklyMetrics: [],
398-
})
399-
400-
expect(out).toHaveLength(1)
401-
const a = out[0]
402-
// falls back to id when name missing
403-
expect(a.name).toBe('solo')
404-
// defaults present
405-
expect(a.weekly_spent).toBe(0)
406-
expect(a.weekly_runs).toBe(0)
407-
expect(a.total_spent).toBe(0)
408-
expect(a.usage_count).toBe(0)
409-
expect(a.avg_cost_per_invocation).toBe(0)
410-
expect(a.unique_users).toBe(0)
411-
expect(a.last_used).toBeUndefined()
412-
expect(a.version_stats).toBeUndefined()
413-
expect(Object.prototype.hasOwnProperty.call(a, 'version_stats')).toBe(false)
414-
expect(a.tags).toEqual([])
415-
// created_at normalized to string
416-
expect(typeof a.created_at).toBe('string')
417-
})
418-
})

web/src/server/agents-data.ts

Lines changed: 0 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import { unstable_cache } from 'next/cache'
44
import { sql, eq, and, gte } from 'drizzle-orm'
55
import {
66
buildAgentsData,
7-
buildAgentsDataLite,
87
buildAgentsDataForSitemap,
98
buildAgentsBasicInfo,
109
buildAgentsMetricsMap,
@@ -164,87 +163,6 @@ export const fetchAgentsWithMetrics = async (): Promise<AgentData[]> => {
164163
})
165164
}
166165

167-
export const fetchAgentsWithMetricsLite = async (): Promise<AgentData[]> => {
168-
const oneWeekAgo = new Date(Date.now() - 7 * 24 * 60 * 60 * 1000)
169-
170-
// Only extract the specific fields we need from the data JSON blob
171-
// This avoids fetching the entire agent config (prompts, tools, etc.)
172-
const agentsPromise = db
173-
.select({
174-
id: schema.agentConfig.id,
175-
version: schema.agentConfig.version,
176-
// Extract only needed fields from data JSON instead of entire blob
177-
name: sql<string>`${schema.agentConfig.data}->>'name'`,
178-
description: sql<string>`${schema.agentConfig.data}->>'description'`,
179-
tags: sql<string[] | null>`${schema.agentConfig.data}->'tags'`,
180-
created_at: schema.agentConfig.created_at,
181-
publisher: {
182-
id: schema.publisher.id,
183-
name: schema.publisher.name,
184-
verified: schema.publisher.verified,
185-
avatar_url: schema.publisher.avatar_url,
186-
},
187-
})
188-
.from(schema.agentConfig)
189-
.innerJoin(
190-
schema.publisher,
191-
eq(schema.agentConfig.publisher_id, schema.publisher.id),
192-
)
193-
.orderBy(sql`${schema.agentConfig.created_at} DESC`)
194-
195-
const usageMetricsPromise = db
196-
.select({
197-
publisher_id: schema.agentRun.publisher_id,
198-
agent_name: schema.agentRun.agent_name,
199-
total_invocations: sql<number>`COUNT(*)`,
200-
total_dollars: sql<number>`COALESCE(SUM(${schema.agentRun.total_credits}) / 100.0, 0)`,
201-
avg_cost_per_run: sql<number>`COALESCE(AVG(${schema.agentRun.total_credits}) / 100.0, 0)`,
202-
unique_users: sql<number>`COUNT(DISTINCT ${schema.agentRun.user_id})`,
203-
last_used: sql<Date>`MAX(${schema.agentRun.created_at})`,
204-
})
205-
.from(schema.agentRun)
206-
.where(
207-
and(
208-
eq(schema.agentRun.status, 'completed'),
209-
sql`${schema.agentRun.agent_id} != 'test-agent'`,
210-
sql`${schema.agentRun.publisher_id} IS NOT NULL`,
211-
sql`${schema.agentRun.agent_name} IS NOT NULL`,
212-
),
213-
)
214-
.groupBy(schema.agentRun.publisher_id, schema.agentRun.agent_name)
215-
216-
const weeklyMetricsPromise = db
217-
.select({
218-
publisher_id: schema.agentRun.publisher_id,
219-
agent_name: schema.agentRun.agent_name,
220-
weekly_runs: sql<number>`COUNT(*)`,
221-
weekly_dollars: sql<number>`COALESCE(SUM(${schema.agentRun.total_credits}) / 100.0, 0)`,
222-
})
223-
.from(schema.agentRun)
224-
.where(
225-
and(
226-
eq(schema.agentRun.status, 'completed'),
227-
gte(schema.agentRun.created_at, oneWeekAgo),
228-
sql`${schema.agentRun.agent_id} != 'test-agent'`,
229-
sql`${schema.agentRun.publisher_id} IS NOT NULL`,
230-
sql`${schema.agentRun.agent_name} IS NOT NULL`,
231-
),
232-
)
233-
.groupBy(schema.agentRun.publisher_id, schema.agentRun.agent_name)
234-
235-
const [agents, usageMetrics, weeklyMetrics] = await Promise.all([
236-
agentsPromise,
237-
usageMetricsPromise,
238-
weeklyMetricsPromise,
239-
])
240-
241-
return buildAgentsDataLite({
242-
agents,
243-
usageMetrics,
244-
weeklyMetrics,
245-
})
246-
}
247-
248166
export const getCachedAgents = unstable_cache(
249167
fetchAgentsWithMetrics,
250168
['agents-data'],
@@ -254,15 +172,6 @@ export const getCachedAgents = unstable_cache(
254172
},
255173
)
256174

257-
export const getCachedAgentsLite = unstable_cache(
258-
fetchAgentsWithMetricsLite,
259-
['agents-data-lite'],
260-
{
261-
revalidate: 600, // 10 minutes
262-
tags: ['agents', 'store'],
263-
},
264-
)
265-
266175
// Minimal data for sitemap - only URL components and dates, no agent data blob
267176
export interface SitemapAgentData {
268177
id: string

0 commit comments

Comments
 (0)