@@ -188,61 +188,81 @@ export interface StaticParamsAgentData {
188188}
189189
190190export const fetchAgentsForSitemap = async ( ) : Promise < SitemapAgentData [ ] > => {
191- // Fetch only the fields needed for sitemap URLs - no data blob at all
192- const agentsPromise = db
193- . select ( {
194- id : schema . agentConfig . id ,
195- version : schema . agentConfig . version ,
196- created_at : schema . agentConfig . created_at ,
197- publisher_id : schema . publisher . id ,
198- } )
199- . from ( schema . agentConfig )
200- . innerJoin (
201- schema . publisher ,
202- eq ( schema . agentConfig . publisher_id , schema . publisher . id ) ,
191+ try {
192+ // Fetch only the fields needed for sitemap URLs - no data blob at all
193+ const agentsPromise = db
194+ . select ( {
195+ id : schema . agentConfig . id ,
196+ version : schema . agentConfig . version ,
197+ created_at : schema . agentConfig . created_at ,
198+ publisher_id : schema . publisher . id ,
199+ } )
200+ . from ( schema . agentConfig )
201+ . innerJoin (
202+ schema . publisher ,
203+ eq ( schema . agentConfig . publisher_id , schema . publisher . id ) ,
204+ )
205+ . orderBy ( sql `${ schema . agentConfig . created_at } DESC` )
206+
207+ // Get last_used dates from metrics, grouped by agent_id to match agentConfig.id
208+ const metricsPromise = db
209+ . select ( {
210+ publisher_id : schema . agentRun . publisher_id ,
211+ agent_id : schema . agentRun . agent_id ,
212+ last_used : sql < Date > `MAX(${ schema . agentRun . created_at } )` ,
213+ } )
214+ . from ( schema . agentRun )
215+ . where (
216+ and (
217+ eq ( schema . agentRun . status , 'completed' ) ,
218+ sql `${ schema . agentRun . agent_id } IS NOT NULL` ,
219+ sql `${ schema . agentRun . publisher_id } IS NOT NULL` ,
220+ ) ,
221+ )
222+ . groupBy ( schema . agentRun . publisher_id , schema . agentRun . agent_id )
223+
224+ const [ agents , metrics ] = await Promise . all ( [ agentsPromise , metricsPromise ] )
225+
226+ return buildAgentsDataForSitemap ( { agents, metrics } )
227+ } catch ( error ) {
228+ // In CI/build environments without a database, return empty array
229+ // so sitemap generation doesn't fail the build
230+ console . warn (
231+ '[fetchAgentsForSitemap] Database unavailable, returning empty array:' ,
232+ error instanceof Error ? error . message : error ,
203233 )
204- . orderBy ( sql `${ schema . agentConfig . created_at } DESC` )
205-
206- // Get last_used dates from metrics, grouped by agent_id to match agentConfig.id
207- const metricsPromise = db
208- . select ( {
209- publisher_id : schema . agentRun . publisher_id ,
210- agent_id : schema . agentRun . agent_id ,
211- last_used : sql < Date > `MAX(${ schema . agentRun . created_at } )` ,
212- } )
213- . from ( schema . agentRun )
214- . where (
215- and (
216- eq ( schema . agentRun . status , 'completed' ) ,
217- sql `${ schema . agentRun . agent_id } IS NOT NULL` ,
218- sql `${ schema . agentRun . publisher_id } IS NOT NULL` ,
219- ) ,
220- )
221- . groupBy ( schema . agentRun . publisher_id , schema . agentRun . agent_id )
222-
223- const [ agents , metrics ] = await Promise . all ( [ agentsPromise , metricsPromise ] )
224-
225- return buildAgentsDataForSitemap ( { agents, metrics } )
234+ return [ ]
235+ }
226236}
227237
228238export const fetchAgentsForStaticParams = async ( ) : Promise <
229239 StaticParamsAgentData [ ]
230240> => {
231- // Fetch only the fields needed to build static params for versioned agents.
232- const agents = await db
233- . select ( {
234- id : schema . agentConfig . id ,
235- version : schema . agentConfig . version ,
236- publisher_id : schema . publisher . id ,
237- } )
238- . from ( schema . agentConfig )
239- . innerJoin (
240- schema . publisher ,
241- eq ( schema . agentConfig . publisher_id , schema . publisher . id ) ,
241+ try {
242+ // Fetch only the fields needed to build static params for versioned agents.
243+ const agents = await db
244+ . select ( {
245+ id : schema . agentConfig . id ,
246+ version : schema . agentConfig . version ,
247+ publisher_id : schema . publisher . id ,
248+ } )
249+ . from ( schema . agentConfig )
250+ . innerJoin (
251+ schema . publisher ,
252+ eq ( schema . agentConfig . publisher_id , schema . publisher . id ) ,
253+ )
254+ . orderBy ( sql `${ schema . agentConfig . created_at } DESC` )
255+
256+ return agents
257+ } catch ( error ) {
258+ // In CI/build environments without a database, return empty array
259+ // so pages are dynamically rendered at runtime instead of statically generated
260+ console . warn (
261+ '[fetchAgentsForStaticParams] Database unavailable, returning empty array:' ,
262+ error instanceof Error ? error . message : error ,
242263 )
243- . orderBy ( sql `${ schema . agentConfig . created_at } DESC` )
244-
245- return agents
264+ return [ ]
265+ }
246266}
247267
248268export const getCachedAgentsForSitemap = unstable_cache (
0 commit comments