| 
41 | 41 | import asyncio  | 
42 | 42 | from datetime import datetime, timezone  | 
43 | 43 | import logging  | 
 | 44 | +import mimetypes  | 
44 | 45 | import os  | 
45 | 46 | import tempfile  | 
46 | 47 | import time  | 
@@ -621,24 +622,29 @@ async def register_gateway(  | 
621 | 622 |             # Create resource DB models  | 
622 | 623 |             db_resources = [  | 
623 | 624 |                 DbResource(  | 
624 |  | -                    uri=resource.uri,  | 
625 |  | -                    name=resource.name,  | 
626 |  | -                    description=resource.description,  | 
627 |  | -                    mime_type=resource.mime_type,  | 
628 |  | -                    template=resource.template,  | 
629 |  | -                    # Federation metadata  | 
 | 625 | +                    uri=r.uri,  | 
 | 626 | +                    name=r.name,  | 
 | 627 | +                    description=r.description,  | 
 | 628 | +                    mime_type=(mime_type := (mimetypes.guess_type(r.uri)[0] or ("text/plain" if isinstance(r.content, str) else "application/octet-stream"))),  | 
 | 629 | +                    template=r.template,  | 
 | 630 | +                    text_content=r.content if (mime_type.startswith("text/") or isinstance(r.content, str)) and isinstance(r.content, str) else None,  | 
 | 631 | +                    binary_content=(  | 
 | 632 | +                        r.content.encode() if (mime_type.startswith("text/") or isinstance(r.content, str)) and isinstance(r.content, str) else r.content if isinstance(r.content, bytes) else None  | 
 | 633 | +                    ),  | 
 | 634 | +                    size=len(r.content) if r.content else 0,  | 
 | 635 | +                    tags=getattr(r, "tags", []) or [],  | 
630 | 636 |                     created_by=created_by or "system",  | 
631 | 637 |                     created_from_ip=created_from_ip,  | 
632 |  | -                    created_via="federation",  # These are federated resources  | 
 | 638 | +                    created_via="federation",  | 
633 | 639 |                     created_user_agent=created_user_agent,  | 
 | 640 | +                    import_batch_id=None,  | 
634 | 641 |                     federation_source=gateway.name,  | 
635 | 642 |                     version=1,  | 
636 |  | -                    # Inherit team assignment from gateway  | 
637 |  | -                    team_id=team_id,  | 
638 |  | -                    owner_email=owner_email,  | 
639 |  | -                    visibility=visibility,  | 
 | 643 | +                    team_id=getattr(r, "team_id", None) or team_id,  | 
 | 644 | +                    owner_email=getattr(r, "owner_email", None) or owner_email or created_by,  | 
 | 645 | +                    visibility=getattr(r, "visibility", None) or visibility,  | 
640 | 646 |                 )  | 
641 |  | -                for resource in resources  | 
 | 647 | +                for r in resources  | 
642 | 648 |             ]  | 
643 | 649 | 
 
  | 
644 | 650 |             # Create prompt DB models  | 
 | 
0 commit comments