# Estrutura de projeto e runtime

Esta página mostra como um projeto TunnelHub costuma ser organizado e como o SDK participa da execução.

## Estrutura típica

Um template oficial normalmente inclui:

* `src/index.ts`;
* uma classe de integração em `src/core/` ou equivalente;
* `metadata`;
* tipos e modelos;
* `__tests__`;
* `tunnelhub.yml`.

## Handler

O handler principal costuma:

* instanciar a classe de integração;
* chamar `AutomationExecution.executeAutomation(...)`;
* retornar sucesso HTTP quando não há erro fatal.

Esse é o ponto de entrada esperado pelo runtime público.

## Classe de integração

Essa classe herda um dos flows do SDK e concentra a lógica principal de negócio:

* extração da origem;
* reconciliação com destino, quando houver delta;
* envio, insert, update ou delete;
* definição de metadados.

## Payload de execução

Em runtime, a automação recebe um payload que costuma incluir pelo menos:

* identificadores de tenant, ambiente, automação e execução;
* systems associados;
* parameters cadastrados;
* payload do trigger, quando aplicável.

É esse contrato que conecta o produto ao código.

## Relação com `tunnelhub.yml`

`tunnelhub.yml` define como o projeto será empacotado e publicado. O runtime depende desse arquivo para localizar o artefato e interpretar a configuração básica do serviço.

## Fluxo completo

1. a CLI cria a automação e baixa um template;
2. o projeto implementa a integração com o SDK;
3. o build gera o artefato definido em `package.artifact`;
4. a CLI publica uma nova versão;
5. o produto executa e monitora a automação.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tunnelhub.io/sdk/project-structure-and-runtime.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
