@@ -367,6 +367,26 @@ func (api *API) auditLogIsResourceDeleted(ctx context.Context, alog database.Get
367367api .Logger .Error (ctx ,"unable to fetch workspace" ,slog .Error (err ))
368368}
369369return workspace .Deleted
370+ case database .ResourceTypeWorkspaceAgent :
371+ // We use workspace as a proxy for workspace agents.
372+ workspace ,err := api .Database .GetWorkspaceByAgentID (ctx ,alog .AuditLog .ResourceID )
373+ if err != nil {
374+ if xerrors .Is (err ,sql .ErrNoRows ) {
375+ return true
376+ }
377+ api .Logger .Error (ctx ,"unable to fetch workspace" ,slog .Error (err ))
378+ }
379+ return workspace .Deleted
380+ case database .ResourceTypeWorkspaceApp :
381+ // We use workspace as a proxy for workspace apps.
382+ workspace ,err := api .Database .GetWorkspaceByWorkspaceAppID (ctx ,alog .AuditLog .ResourceID )
383+ if err != nil {
384+ if xerrors .Is (err ,sql .ErrNoRows ) {
385+ return true
386+ }
387+ api .Logger .Error (ctx ,"unable to fetch workspace" ,slog .Error (err ))
388+ }
389+ return workspace .Deleted
370390case database .ResourceTypeOauth2ProviderApp :
371391_ ,err := api .Database .GetOAuth2ProviderAppByID (ctx ,alog .AuditLog .ResourceID )
372392if xerrors .Is (err ,sql .ErrNoRows ) {
@@ -429,6 +449,26 @@ func (api *API) auditLogResourceLink(ctx context.Context, alog database.GetAudit
429449return fmt .Sprintf ("/@%s/%s/builds/%s" ,
430450workspaceOwner .Username ,additionalFields .WorkspaceName ,additionalFields .BuildNumber )
431451
452+ case database .ResourceTypeWorkspaceAgent :
453+ if additionalFields .WorkspaceOwner != "" && additionalFields .WorkspaceName != "" {
454+ return fmt .Sprintf ("/@%s/%s" ,additionalFields .WorkspaceOwner ,additionalFields .WorkspaceName )
455+ }
456+ workspace ,getWorkspaceErr := api .Database .GetWorkspaceByAgentID (ctx ,alog .AuditLog .ResourceID )
457+ if getWorkspaceErr != nil {
458+ return ""
459+ }
460+ return fmt .Sprintf ("/@%s/%s" ,workspace .OwnerUsername ,workspace .Name )
461+
462+ case database .ResourceTypeWorkspaceApp :
463+ if additionalFields .WorkspaceOwner != "" && additionalFields .WorkspaceName != "" {
464+ return fmt .Sprintf ("/@%s/%s" ,additionalFields .WorkspaceOwner ,additionalFields .WorkspaceName )
465+ }
466+ workspace ,getWorkspaceErr := api .Database .GetWorkspaceByWorkspaceAppID (ctx ,alog .AuditLog .ResourceID )
467+ if getWorkspaceErr != nil {
468+ return ""
469+ }
470+ return fmt .Sprintf ("/@%s/%s" ,workspace .OwnerUsername ,workspace .Name )
471+
432472case database .ResourceTypeOauth2ProviderApp :
433473return fmt .Sprintf ("/deployment/oauth2-provider/apps/%s" ,alog .AuditLog .ResourceID )
434474