# πΊοΈ Mapa de DependΓͺncias: temp/composio/core
## π Diagrama de DependΓͺncias
```
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β types.py β
β ToolkitVersion, ToolkitVersions, ToolkitVersionParam β
ββββββββββββββββββββββ¬βββββββββββββββββββββββββββββββββββββββββ
β
β Usado por β
β
ββββββββββββββΌβββββββββββββ¬βββββββββββββ
β β β β
βΌ βΌ βΌ βΌ
ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ
β tools.py β βtriggers.pyβ β sdk.py β β utils/ β
β β β β β β βtoolkit_ β
β β β β β β βversion.pyβ
ββββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ
```
---
## π Cadeia de DependΓͺncias Detalhada
### 1. **base.py** (FundaΓ§Γ£o)
```
base.py
ββ Depende de:
β ββ HttpClient (composio.client)
β ββ WithLogger (composio.utils.logging)
β ββ _telemetry.py (create_event, push_event)
β
ββ Usado por: TODOS os outros models
ββ auth_configs.py
ββ connected_accounts.py
ββ tools.py
ββ toolkits.py
ββ tool_router.py
ββ triggers.py
ββ mcp.py
ββ internal.py
```
### 2. **types.py** (Tipos de Versionamento)
```
types.py
ββ Depende de:
β ββ typing
β ββ typing_extensions
β
ββ Usado por:
ββ tools.py (ToolkitVersionParam)
ββ triggers.py (ToolkitVersionParam)
ββ sdk.py (ToolkitVersionParam)
ββ utils/toolkit_version.py (todos os tipos)
```
### 3. **_files.py** (Gerenciamento de Arquivos)
```
_files.py
ββ Depende de:
β ββ HttpClient
β ββ WithLogger
β ββ requests
β ββ hashlib (MD5)
β
ββ Usado por:
ββ tools.py (FileHelper)
```
### 4. **_modifiers.py** (Modificadores)
```
_modifiers.py
ββ Depende de:
β ββ typing (Protocols)
β ββ functools
β
ββ Usado por:
ββ tools.py (Modifiers, before_execute, after_execute, schema_modifier)
ββ tool_router.py (Modifiers)
```
### 5. **_telemetry.py** (Telemetria)
```
_telemetry.py
ββ Depende de:
β ββ httpx
β ββ queue
β ββ threading
β ββ atexit
β
ββ Usado por:
ββ base.py (create_event, push_event)
```
### 6. **connected_accounts.py**
```
connected_accounts.py
ββ Depende de:
β ββ base.py (Resource)
β ββ HttpClient
β ββ exceptions
β
ββ Usado por:
ββ toolkits.py (ConnectedAccounts)
ββ tool_router.py (ConnectionRequest)
```
### 7. **auth_configs.py**
```
auth_configs.py
ββ Depende de:
β ββ base.py (Resource)
β ββ HttpClient
β
ββ Usado por:
ββ toolkits.py (indiretamente via client)
```
### 8. **custom_tools.py**
```
custom_tools.py
ββ Depende de:
β ββ HttpClient
β ββ pydantic (BaseModel)
β ββ inspect
β
ββ Usado por:
ββ tools.py (CustomTool, CustomTools)
```
### 9. **webhook_events.py**
```
webhook_events.py
ββ Depende de:
β ββ typing
β ββ enum
β
ββ Usado por:
ββ triggers.py (WebhookVersion, WebhookPayload)
ββ models/__init__.py (exports)
```
### 10. **internal.py**
```
internal.py
ββ Depende de:
β ββ base.py (Resource)
β ββ composio_client (BaseModel)
β
ββ Usado por:
ββ triggers.py (get_sdk_realtime_credentials)
```
### 11. **toolkits.py**
```
toolkits.py
ββ Depende de:
β ββ base.py (Resource)
β ββ connected_accounts.py (ConnectedAccounts)
β ββ HttpClient
β
ββ Usado por:
ββ tool_router.py (authorize, get_auth_fields)
```
### 12. **tools.py** (Hub Central)
```
tools.py
ββ Depende de:
β ββ base.py (Resource)
β ββ _files.py (FileHelper)
β ββ _modifiers.py (Modifiers, decorators)
β ββ custom_tools.py (CustomTools)
β ββ types.py (ToolkitVersionParam)
β ββ provider/ (BaseProvider, AgenticProvider, NonAgenticProvider)
β ββ utils/toolkit_version.py (get_toolkit_version)
β
ββ Usado por:
ββ tool_router.py (Tools)
```
### 13. **triggers.py**
```
triggers.py
ββ Depende de:
β ββ base.py (Resource)
β ββ internal.py (Internal)
β ββ types.py (ToolkitVersionParam)
β ββ webhook_events.py (WebhookVersion)
β ββ pysher (Pusher)
β ββ utils/toolkit_version.py (get_toolkit_version)
β
ββ Usado por:
ββ sdk.py (Triggers)
```
### 14. **mcp.py**
```
mcp.py
ββ Depende de:
β ββ base.py (Resource)
β ββ HttpClient
β
ββ Usado por:
ββ tool_router.py (MCP info)
```
### 15. **tool_router.py** (Orquestrador)
```
tool_router.py
ββ Depende de:
β ββ base.py (Resource)
β ββ connected_accounts.py (ConnectionRequest)
β ββ tools.py (Tools)
β ββ _modifiers.py (Modifiers)
β ββ provider/ (BaseProvider)
β ββ HttpClient
β
ββ Usado por:
ββ sdk.py (ToolRouter, create session)
```
---
## π― Ordem de DependΓͺncia (Bottom-Up)
### NΓvel 1: FundaΓ§Γ£o (Sem dependΓͺncias internas)
```
1. types.py β Tipos puros
2. _telemetry.py β Sistema independente
3. webhook_events.py β Tipos puros
```
### NΓvel 2: Base (Depende apenas de NΓvel 1)
```
4. base.py β Usa _telemetry.py
5. internal.py β Usa base.py
```
### NΓvel 3: UtilitΓ‘rios (Depende de NΓvel 1-2)
```
6. _files.py β Usa base.py
7. _modifiers.py β Tipos puros
8. custom_tools.py β Independente
```
### NΓvel 4: Recursos BΓ‘sicos (Depende de NΓvel 1-3)
```
9. auth_configs.py β Usa base.py
10. connected_accounts.py β Usa base.py
```
### NΓvel 5: Recursos IntermediΓ‘rios (Depende de NΓvel 1-4)
```
11. toolkits.py β Usa base.py, connected_accounts.py
12. mcp.py β Usa base.py
```
### NΓvel 6: Recursos AvanΓ§ados (Depende de NΓvel 1-5)
```
13. tools.py β Usa base.py, _files.py, _modifiers.py,
custom_tools.py, types.py
14. triggers.py β Usa base.py, internal.py, types.py,
webhook_events.py
```
### NΓvel 7: OrquestraΓ§Γ£o (Depende de tudo)
```
15. tool_router.py β Usa base.py, connected_accounts.py,
tools.py, _modifiers.py
```
---
## π Fluxo de Dados TΓpico
### CenΓ‘rio 1: Criar SessΓ£o e Executar Ferramenta
```
1. SDK.create(user_id)
ββ> tool_router.py: ToolRouter.create()
ββ> HttpClient: POST /tool_router/session
ββ> Retorna: ToolRouterSession
2. session.tools()
ββ> tool_router.py: ToolRouterSession.tools()
ββ> tools.py: Tools.get()
ββ> HttpClient: GET /tool_router/session/{id}/tools
ββ> Retorna: List[Tool] (formatado pelo provider)
3. session.execute_tool(slug, args)
ββ> tool_router.py: ToolRouterSession.execute_tool()
ββ> _modifiers.py: before_execute (se configurado)
ββ> _files.py: upload_file (se necessΓ‘rio)
ββ> tools.py: Tools.execute()
β ββ> HttpClient: POST /tool_router/session/{id}/execute
ββ> _files.py: download_file (se necessΓ‘rio)
ββ> _modifiers.py: after_execute (se configurado)
ββ> Retorna: ToolExecutionResponse
```
### CenΓ‘rio 2: Autenticar Toolkit
```
1. session.authorize(toolkit)
ββ> tool_router.py: ToolRouterSession.authorize()
ββ> toolkits.py: Toolkits.authorize()
ββ> connected_accounts.py: ConnectedAccounts.create()
ββ> HttpClient: POST /connected_accounts
ββ> Retorna: ConnectionRequest
2. connection_request.wait_for_connection()
ββ> connected_accounts.py: ConnectionRequest.wait_for_connection()
ββ> Loop: HttpClient: GET /connected_accounts/{id}
ββ> Retorna: ConnectedAccountRetrieveResponse (quando ACTIVE)
```
### CenΓ‘rio 3: Criar e Escutar Trigger
```
1. triggers.create(slug, user_id, config)
ββ> triggers.py: Triggers.create()
ββ> utils/toolkit_version.py: get_toolkit_version()
ββ> HttpClient: POST /trigger_instances/{slug}/upsert
ββ> Retorna: TriggerInstanceUpsertResponse
2. triggers.subscribe(handler)
ββ> triggers.py: Triggers.subscribe()
ββ> internal.py: Internal.get_sdk_realtime_credentials()
ββ> pysher: Pusher.connect()
ββ> Loop: Escuta eventos
ββ> Chama: handler(trigger_data)
```
---
## π¦ Agrupamento por Funcionalidade
### Grupo 1: AutenticaΓ§Γ£o
```
ββ auth_configs.py (ConfiguraΓ§Γ΅es de auth)
ββ connected_accounts.py (Contas conectadas)
ββ toolkits.py (AutorizaΓ§Γ£o de toolkits)
```
### Grupo 2: ExecuΓ§Γ£o de Ferramentas
```
ββ tools.py (Gerenciamento e execuΓ§Γ£o)
ββ custom_tools.py (Ferramentas customizadas)
ββ _files.py (Upload/download)
ββ _modifiers.py (Modificadores)
```
### Grupo 3: SessΓ΅es e Roteamento
```
ββ tool_router.py (SessΓ΅es do Tool Router)
ββ mcp.py (Model Control Protocol)
```
### Grupo 4: Eventos e Triggers
```
ββ triggers.py (Gerenciamento de triggers)
ββ webhook_events.py (Tipos de eventos)
ββ internal.py (APIs internas)
```
### Grupo 5: Infraestrutura
```
ββ base.py (Classe base Resource)
ββ types.py (Tipos de versionamento)
ββ _telemetry.py (Telemetria)
```
---
## π ExplicaΓ§Γ£o DidΓ‘tica
### Como os arquivos se relacionam?
Imagine uma **fΓ‘brica de ferramentas**:
1. **base.py** = FundaΓ§Γ£o da fΓ‘brica
- Todos os departamentos (models) sΓ£o construΓdos sobre ela
2. **types.py** = Manual de versΓ΅es
- Define quais versΓ΅es de ferramentas existem
3. **auth_configs.py** = Departamento de Credenciais
- Guarda as chaves e senhas
4. **connected_accounts.py** = Portaria
- Verifica quem pode entrar (OAuth, API Keys)
5. **toolkits.py** = CatΓ‘logo de Ferramentas
- Lista todas as ferramentas disponΓveis
6. **tools.py** = Linha de ProduΓ§Γ£o
- Executa as ferramentas
- Usa _files.py para arquivos
- Usa _modifiers.py para customizar
7. **tool_router.py** = Gerente de Projetos
- Coordena tudo
- Cria sessΓ΅es
- Distribui trabalho
8. **triggers.py** = Sistema de Alarmes
- Escuta eventos
- Notifica quando algo acontece
9. **_files.py** = Almoxarifado
- Guarda e busca arquivos
10. **_modifiers.py** = Oficina de CustomizaΓ§Γ£o
- Modifica ferramentas antes/depois de usar
11. **_telemetry.py** = Sistema de Monitoramento
- Registra tudo que acontece
---
## π Ordem de ImplementaΓ§Γ£o Recomendada
### Fase 1: FundaΓ§Γ£o (1-2 dias)
```
1. types.py β src/models/versioning.rs
2. webhook_events.py β src/models/webhook_events.rs
```
### Fase 2: UtilitΓ‘rios (2-3 dias)
```
3. _files.py β src/utils/files.rs
4. _modifiers.py β src/models/modifiers.rs
```
### Fase 3: Recursos AvanΓ§ados (2-3 dias)
```
5. custom_tools.py β src/models/custom_tools.rs
6. triggers.py (completo) β src/models/triggers.rs
```
### Fase 4: Infraestrutura (1-2 dias)
```
7. _telemetry.py β src/utils/telemetry.rs
8. internal.py β src/models/internal.rs
```
---
Quer que eu comece pela **Fase 1** implementando `types.py` (versionamento)? π―