# Usar IA para integrar Licentivo Launch

> As alterações atuais ainda não publicadas usam troca de identidade de conta. Responsabilidades e restrições de migração estão em [Limites entre o período comprado e o SDK de conta](/pt/launch-documents/account-purchase-boundary/). Launch calcula o período comprado; o SDK Licentivo executa a autorização.

Na administração Launch, **Ferramentas operacionais → Integração rápida com IA** gera uma descrição de tarefa em inglês para ferramentas de programação com IA. Ela usa as configurações públicas da loja atual, do software existente e dos planos publicados, e instrui a IA a instalar o pacote público Launch, chamar APIs reais, inserir verificações de permissão nas operações de negócio e concluir os testes de integração.

A navegação **Verificação de integração e código / Integração rápida com IA** da página de integração leva à mesma função. Desenvolvimento manual não exige IA; consulte o [guia de integração manual em nove linguagens](/pt/launch-documents/manual-integration/).

## Preparação antes da geração

1. Crie software e planos comerciais no Launch e associe os planos a produtos e políticas de licenciamento Licentivo.
2. Publique os planos no ambiente `sandbox` ou `live` a ser testado.
3. Garanta que o software cliente consiga acessar o endereço público do Launch; use HTTPS em produção.
4. Em **Integração de aplicação → Verificação de integração e código**, leia os dados do produto e confirme a verificação do mapeamento e da chave pública de assinatura.
5. Identifique ações de negócio reais a proteger, como `export`, `save` ou `render`; não escreva apenas “o software inteiro”.

É possível gerar rascunhos sem concluir a configuração do produto, mas eles indicam claramente os itens pendentes e não servem como configuração de integração entregável. Após configurar produto e ambiente, gere novamente.

## Gerar o prompt na administração

1. Escolha Go, Python, C#, Java, JavaScript / Node.js, Rust, Ruby, C ou C++. Go para backend Web não conta como uma linguagem SDK adicional.
2. Escolha Windows, Linux, macOS ou a plataforma aplicável, além de projeto desktop, backend Web ou serviço em segundo plano.
3. Descreva em inglês a estrutura existente, a inicialização, o framework de interface e as operações de negócio a proteger. Não informe senhas, chaves, dados de clientes ou código-fonte privado.
4. Escolha o software existente e o ambiente `sandbox` / `live`. Launch lê automaticamente o endereço atual da loja e o mapeamento entre produtos Launch e Licentivo, o ambiente e as chaves públicas de assinatura.
5. Confira versões de pacotes, comandos de instalação, links de documentação e funções de conexão preenchidas na prévia; depois copie ou baixe o prompt.
6. Entregue o prompt à sua ferramenta de programação com IA para modificar, compilar e testar localmente o projeto.

Launch apenas gera texto no navegador. Não conecta automaticamente a serviços de IA, não envia projetos nem executa programas gerados em nome do desenvolvedor.

## O prompt informa à IA onde baixar o SDK

A verificação pública de instalação da versão 0.1.6 passou nas nove linguagens (9/9); os comandos de registro e downloads nativos abaixo foram verificados. Os arquivos Maven Central de Java e suas quatro assinaturas, a versão exata Rust em crates.io e todos os códigos de inicialização gerados pela administração também passaram por verificações em consumidores independentes. O [GitHub Release v0.1.6](https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6) fornece pacotes nativos e arquivos offline.

O prompt gerado deve incluir o método público de instalação com versão fixa correspondente à linguagem escolhida:

```text
Go:         go get github.com/spf86/licentivo-launch-sdk/pkg/launchclient@v0.1.6
Python:     python -m pip install licentivo-launch==0.1.6
C# / .NET: dotnet add package Licentivo.Launch --version 0.1.6
Java:       com.licentivo.launch:launch-client:0.1.6
Node.js:    npm install @licentivo/launch@0.1.6
Rust:       cargo add licentivo-launch@=0.1.6
Ruby:       gem install licentivo-launch --version 0.1.6
C / C++:    https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6
```

Fontes públicas, READMEs de cada linguagem e estado atual da publicação estão em:

- [Repositório do SDK Licentivo Launch](https://github.com/spf86/licentivo-launch-sdk)
- [GitHub Release v0.1.6](https://github.com/spf86/licentivo-launch-sdk/releases/tag/v0.1.6)
- [Verificação pública de instalação nas nove linguagens](https://github.com/spf86/licentivo-launch-sdk/blob/main/docs/registry-verification.json)
- [Versões e descrição dos pacotes](/pt/launch-documents/integration-packages/)
- [Guia de integração manual em nove linguagens](/pt/launch-documents/manual-integration/)
- [Arquitetura de integração e requisitos de segurança](/pt/launch-documents/software-sdk-integration/)
- [Lista de validação da integração](/pt/launch-documents/acceptance/)

Instale apenas o pacote Launch da linguagem escolhida. A versão v0.1.6 já inclui o SDK oficial Licentivo v0.11.6, o adaptador padrão e a configuração de vinculação; não instale outro SDK oficial separadamente.

## O prompt orienta a IA sobre a integração

Prompts configurados incluem a função de conexão gerada pela administração. Ela já contém o endereço público da loja, o mapeamento de produtos Launch/Licentivo, a chave pública de assinatura e o ambiente de pagamento. A IA não precisa adivinhar ou preencher os dois IDs internos nem criar `launch-config.json` ou `product.json`.

O `config.yaml` privado do servidor serve apenas para executar o site Launch e jamais deve acompanhar aplicativos cliente, prompts ou instaladores.

A IA deve alterar o software cliente conforme o ciclo de vida abaixo:

```text
Connect/connect → Login or Restore → RunFeature → Logout / Close
                                      └──────────→ ReleaseDevice (explicit device unlink only)
```

- `Connect/connect` cria o cliente Launch e inicializa o SDK oficial interno; isso não significa que a conta está autenticada nem que uma funcionalidade foi autorizada.
- `Login` usa o e-mail e a senha cadastrados pelo cliente na loja atual para obter as credenciais de produto dessa conta.
- `Restore` restaura uma sessão lembrada a partir do armazenamento seguro; sem sessão, mostra login. Uma recusa não é sucesso offline.
- `RunFeature` deve envolver ações reais, como exportação, salvamento, renderização ou tarefas em segundo plano. Apenas desativar botões não substitui a verificação no ponto de execução.
- `Logout` chama primeiro o logout unificado do SDK oficial e depois limpa a sessão da conta; `ReleaseDevice` é uma entrada compatível do mesmo fluxo explícito de saída. `Close` conserva o vínculo do dispositivo ao fechar normalmente.
- Mantenha o objeto cliente vivo durante a execução para o SDK processar heartbeats, postos flutuantes e regras de runtime.

Aplicações Web verificam autorização apenas em backends confiáveis. Node.js / Electron mantêm credenciais e SDK no processo principal ou no servidor; navegador e renderizador não armazenam segredos de autorização.

## O que a IA deve entregar

O prompt exige que a IA conclua e relate:

1. Conferir a versão da linguagem, a gestão de dependências, a inicialização e o encerramento do projeto, além das operações de negócio reais a proteger.
2. Instalar um pacote Launch pelo comando de versão fixa acima e verificar as interfaces reais no README da linguagem.
3. Adicionar login de conta, mensagens de erro e restauração segura da sessão; não gravar senhas nem licenças completas no código ou nos logs.
4. Inicializar com a função de conexão fornecida pela administração; não inventar IDs de produto, chaves públicas de assinatura ou arquivos de configuração.
5. Usar `RunFeature` ou o método equivalente em cada ponto de operação protegida, tratando corretamente contagem de uso e tentativas.
6. Distinguir falha de conta, verificação de e-mail pendente, sincronização de direitos, ausência de compra, expiração, suspensão, limite de dispositivos, falha de rede e expiração offline.
7. Implementar fechamento normal, saída da conta e liberação explícita do dispositivo, separando caches por loja, conta, produto e ambiente.
8. Executar a compilação e os testes adequados ao projeto e, ao final, listar arquivos alterados, mapeamento de funcionalidades, resultados reais e etapas de validação pelo cliente.

Após a IA gerar o código, o desenvolvedor ainda deve conferir a correspondência exata dos nomes de funcionalidade com as políticas Licentivo e testar o fluxo completo com uma conta real da loja sandbox.

## Conteúdo a excluir do prompt

Prompts incluem apenas origem pública da loja, mapeamento de produto, ambiente, versão do pacote e chaves públicas de assinatura. Os itens abaixo não devem ser incluídos:

- E-mails de clientes, senhas, sessões de login e refresh tokens;
- Licenças completas, credenciais de dispositivo e caches locais de autorização;
- Chaves da API administrativa Licentivo;
- Chaves Stripe, PayPal, Waffo ou Paddle;
- Conexões de banco de dados, `master_key` e `config.yaml` do servidor;
- Não é necessário fornecer código-fonte privado, dados de negócio ou logs a ferramentas externas.

Verificações de configuração pública, rascunhos de IA e compilações locais do Launch não comprovam pagamento real, emissão de licença ou ativação externa. Ambientes sandbox de pagamento, contas da loja e o ambiente Licentivo exigem validação separada.

## Lista de validação após a integração

- Novos clientes conseguem entrar; e-mails não verificados e senhas incorretas produzem mensagens claras sem revelar detalhes excessivos.
- Contas com compra executam as funcionalidades escolhidas; contas sem compra, expiradas ou suspensas não executam o mesmo código de negócio.
- Após reiniciar, o uso só continua se a sessão for restaurada com sucesso e as verificações de autorização passarem.
- Políticas offline válidas funcionam e autorizações offline expiradas são recusadas; 401/403/404 explícitos não são rebaixados a sucesso offline.
- O consumo de funcionalidades só é confirmado corretamente após sucesso do negócio; falhas e tentativas repetidas não descontam novamente.
- Fechamentos normais conservam o vínculo do dispositivo; a saída explícita chama primeiro o logout do SDK oficial, conserva os registros necessários à revogação e informa resultados reais.
- Heartbeats de postos flutuantes executam enquanto o aplicativo está ativo; a recuperação após saída anormal respeita a política de autorização atual.
- Trocar loja, conta, produto ou ambiente não reutiliza o cache de outra identidade.

Os limites completos dos testes automáticos e da validação externa estão em [acceptance.md](/pt/launch-documents/acceptance/).

## Usar o gerador de prompts no pacote de código-fonte

`licentivo-launch-0.1.6-source.zip` preserva os arquivos abaixo para gerar prompts com a mesma estrutura nas suas ferramentas:

- `internal/httpapi/web/integration-prompts.js`: módulo de geração de prompts independente da página e do servidor;
- `scripts/integration-prompts.test.mjs`: testes Node locais;
- `internal/httpapi/web/integration-state.js` e `scripts/integration-state.test.mjs`: isolamento de rascunhos de configuração e limpeza de verificações anteriores;
- Este guia, os pacotes das linguagens, exemplos e notas de validação.

O módulo exporta `integrationTargets` e `buildIntegrationPrompt(options)`. As opções incluem `language`, `appKind`, `platform`, `projectNotes`, `feature`, `merchantOrigin`, `environment` e o `report` validado; retorna `{ text, ready, title, code }`. Sem `report`, só gera um rascunho. Alterar manualmente o relatório não permite contornar a verificação da configuração pública.

Em ferramentas de desenvolvimento com suporte a módulos ES, gere um rascunho local a partir da raiz do pacote de fontes:

```powershell
@'
import { readFile, writeFile } from 'node:fs/promises';
const source = await readFile('internal/httpapi/web/integration-prompts.js', 'utf8');
const { buildIntegrationPrompt } = await import(
  'data:text/javascript;base64,' + Buffer.from(source).toString('base64')
);
const prompt = buildIntegrationPrompt({
  language: 'python',
  appKind: 'desktop',
  platform: 'windows',
  projectNotes: 'Existing Python desktop application. Add account sign-in and protect report exports.',
  feature: 'export'
});
await writeFile('integration-prompt.md', prompt.text, 'utf8');
console.log(prompt.title);
'@ | node --input-type=module
```

Este comando apenas gera um rascunho sem configuração e não chama IA nem serviços de licenciamento. Para uma integração real, volte à sua instância Launch, selecione software e ambiente existentes e gere novamente a versão com configuração pública.

Verificar o gerador local:

```powershell
node --test scripts/integration-prompts.test.mjs scripts/integration-state.test.mjs
```
