PRD-025 — Agentic External Integration & Digital Workforce Gateway
1. Objetivo
O External Integration & Digital Workforce Gateway será a camada responsável por permitir que o Agentic Work interaja de maneira segura com sistemas externos ao SST.
O objetivo não é simplesmente “dar acesso à Internet ao agente”.
O objetivo é criar uma fronteira controlada entre o Agentic Work e o mundo externo.
User
↓
Agent
↓
Intent
↓
Planner
↓
Policy
↓
Capability
↓
External Gateway
↓
External System
↓
Verification
2. Princípio fundamental
O LLM nunca terá acesso direto a:
- API keys;
- OAuth tokens;
- senhas;
- URLs arbitrárias;
- bancos externos;
- SMTP;
- sistemas administrativos;
- shell;
- browser irrestrito;
- credenciais de terceiros.
O agente deverá solicitar uma External Capability registrada.
LLM
↓
"consultar treinamento no LMS"
↓
Capability
↓
Policy
↓
External Gateway
↓
LMS
3. Problema que o PRD resolve
O SST poderá depender de:
RH
LMS
ERP
controle de acesso
sistemas médicos
fornecedores
document management
e-mail
serviços governamentais
Sem uma camada própria, cada integração acabaria criando sua própria lógica de:
authentication
authorization
retry
logging
mapping
security
Isso produziria uma arquitetura difícil de governar.
O Gateway centraliza essas responsabilidades.
4. Arquitetura
AGENTIC WORK
│
▼
Capability Registry
│
▼
Policy Engine
│
▼
External Integration Gateway
│
┌──────────────┼──────────────┐
▼ ▼ ▼
REST API Webhook File/Document
│ │ │
▼ ▼ ▼
Adapter A Adapter B Adapter C
│ │ │
└──────────────┼──────────────┘
▼
External System
│
▼
Verifier
5. Integration Registry
Assim como existe o Capability Registry, deverá existir um:
Integration Registry
Ele definirá os sistemas externos conhecidos.
interface ExternalIntegration {
integrationId: string;
name: string;
provider: string;
category:
| "HR"
| "LMS"
| "ERP"
| "ACCESS_CONTROL"
| "MEDICAL"
| "GOVERNMENT"
| "DOCUMENT"
| "COMMUNICATION"
| "OTHER";
tenantScope: "GLOBAL" | "TENANT";
authentication: AuthenticationMethod;
endpoints: ExternalEndpoint[];
dataPolicies: DataPolicy[];
status: "ACTIVE" | "DISABLED" | "DEGRADED";
}
6. Integration ≠ Capability
Uma integração representa:
com quem o sistema conversa.
Uma capability representa:
o que o agente pode fazer.
Exemplo:
Integration:
acme-lms
Capabilities:
training.search
training.getStatus
training.getCertificate
7. External Capability
A capability continuará obedecendo ao PRD-004.
Exemplo:
id: training.external.getStatus
domain: training
action: getStatus
integration: acme-lms
risk: low
O agente nunca verá necessariamente:
https://api.acme-lms.com/v2/workers/status
Ele verá:
training.external.getStatus
8. Adapter Pattern
Cada integração deverá possuir um adapter.
interface IntegrationAdapter {
getStatus(): Promise<IntegrationStatus>;
execute(
operation: ExternalOperation
): Promise<ExternalOperationResult>;
verify(
operation: ExternalOperation
): Promise<VerificationResult>;
}
O restante do Agentic Work não deverá depender do fornecedor.
9. Canonical Data Model
Um dos objetivos será evitar que o restante do sistema conheça o formato específico de cada fornecedor.
Exemplo externo:
{
"employee_no": "A-1023",
"course_code": "NR10",
"expires": "2026-09-15"
}
será transformado em:
{
"employeeId": "EMP-104",
"trainingId": "NR-10",
"validUntil": "2026-09-15"
}
O restante do sistema trabalhará com o modelo canônico.
10. Mapping Layer
interface IntegrationMapper<TExternal, TCanonical> {
toCanonical(input: TExternal): TCanonical;
toExternal(input: TCanonical): TExternal;
}
Isso permitirá trocar:
LMS A
por:
LMS B
sem modificar o Agent Planner.
11. Authentication
O Gateway deverá suportar, conforme necessidade:
OAuth 2.0
API Key
JWT
mTLS
Basic Auth
Signed Requests
Service Account
Webhook Secret
O mecanismo de autenticação deverá ser escolhido pela integração.
12. Credential Isolation
Credenciais deverão permanecer em armazenamento seguro.
O fluxo será:
Capability
↓
Gateway
↓
Credential Resolver
↓
Secret Store
↓
Authenticated Request
O segredo nunca deverá:
↓
LLM
↓
Conversation
↓
UI Context
↓
Audit payload
13. Tenant Credentials
Quando a integração for específica de cliente:
Tenant A → LMS credentials A
Tenant B → LMS credentials B
O Gateway deverá garantir:
tenantId
→ credential binding
→ integration binding
Nunca poderá utilizar credencial de outro tenant.
14. Global Integration
Algumas integrações poderão ser compartilhadas.
Mesmo assim:
Tenant Context
deverá continuar presente.
Exemplo:
Shared API
+
tenant-specific authorization
+
tenant-specific mapping
15. Egress Control
O agente não poderá realizar:
HTTP request
para um endereço arbitrário.
O Gateway deverá trabalhar com uma allowlist de destinos.
Integration
↓
Allowed Domains
↓
Allowed Endpoints
16. SSRF Protection
O Gateway deverá bloquear destinos não autorizados, incluindo:
- localhost;
- loopback;
- redes privadas;
- metadata endpoints;
- endereços internos;
- redirects não autorizados;
- hosts fora da allowlist.
Isso será especialmente importante em Workers e ambientes de integração.
17. Request Schema
Toda chamada externa deverá ser validada.
interface ExternalOperation {
operationId: string;
integrationId: string;
capabilityId: string;
tenantId: string;
action: string;
input: unknown;
idempotencyKey?: string;
timeoutMs: number;
}
18. Response Schema
interface ExternalOperationResult {
operationId: string;
status:
| "SUCCESS"
| "FAILED"
| "TIMEOUT"
| "UNKNOWN";
data?: unknown;
externalRequestId?: string;
receivedAt: string;
verification?: VerificationResult;
}
19. Timeout
Cada integração deverá possuir limites.
connect timeout
request timeout
total operation timeout
Exemplo:
timeout:
connect: 1000
request: 5000
total: 10000
Nunca permitir timeout infinito.
20. Retry
O Gateway deverá aplicar as regras do PRD-024.
Exemplo:
503 → retry
429 → retry
timeout → retry
400 → no retry
401 → credential refresh/re-auth
403 → no retry
409 → business/concurrency handling
21. Circuit Breaker
Cada integração deverá possuir estado operacional:
HEALTHY
DEGRADED
OPEN
RECOVERING
Se uma integração estiver indisponível:
Agent
↓
Capability
↓
Gateway
↓
Circuit OPEN
não deverá gerar uma sequência de chamadas inúteis.
22. Rate Limiting
Rate limits deverão existir em múltiplos níveis:
Global
Tenant
Integration
Capability
User
Operation
Exemplo:
Tenant A:
1000 requests/hour
training.getStatus:
100 requests/minute
23. External Rate Limit
O Gateway deverá respeitar também o limite imposto pelo fornecedor.
Exemplo:
External API:
100 requests/min
O sistema deverá impedir que 500 workflows paralelos ultrapassem esse limite.
24. Queueing
Operações que não precisem ser síncronas poderão entrar em fila:
Agent
↓
External Gateway
↓
Queue
↓
Worker
↓
External API
Isso será importante para:
- grandes lotes;
- sincronizações;
- importações;
- exportações;
- processamento de documentos.
25. Synchronous vs Asynchronous
Síncrono
“Qual o status do treinamento de João?”
Assíncrono
“Sincronize todos os 20.000 funcionários.”
O Agentic Planner deverá escolher o modo apropriado através da capability.
26. External Webhooks
Sistemas externos poderão enviar eventos:
External System
↓
Webhook Gateway
↓
Authentication
↓
Validation
↓
Normalization
↓
Event Fabric
O evento deverá seguir o PRD-020.
27. Webhook Security
O Gateway deverá validar:
signature
timestamp
nonce
source
schema
tenant binding
e bloquear replay attacks.
28. External Events
Exemplo:
LMS
↓
TrainingExpired
↓
Webhook Gateway
↓
Event Fabric
↓
Proactive Intelligence
Isso conecta diretamente os PRDs:
External Integration
↓
Event Fabric
↓
Proactive Intelligence
↓
Decision
↓
Workflow
29. External Documents
Algumas integrações fornecerão:
PDF
CSV
XML
JSON
images
certificates
O Gateway deverá classificar o conteúdo.
O documento não deverá ser automaticamente considerado confiável.
30. Document Provenance
Todo documento externo deverá possuir:
source
provider
externalDocumentId
retrievedAt
checksum
tenantId
Isso permitirá identificar exatamente a origem da informação.
31. External Data → Knowledge
Quando permitido:
External Data
↓
Normalization
↓
Validation
↓
Provenance
↓
Knowledge Pipeline
↓
HAG
O dado externo não deverá entrar diretamente na base de conhecimento sem validação.
32. External Data → Decision
Também será possível:
External Data
↓
Fact
↓
Decision Engine
Exemplo:
LMS:
NR-10 expires in 12 days
↓
Fact:
training.validUntil
↓
Risk:
MEDIUM
33. External Data Trust
A origem externa deverá possuir uma classificação.
VERIFIED
TRUSTED
UNVERIFIED
FAILED_VALIDATION
Essa classificação alimentará o PRD-023.
34. Data Freshness
Cada integração deverá declarar:
freshness requirement
Exemplo:
worker training:
24 hours
access authorization:
5 minutes
critical permit status:
1 minute
Dados antigos não deverão ser usados como se fossem atuais.
35. External Verification
Uma mutação externa deverá possuir verificação.
Exemplo:
Agent:
update employee training
External API:
200
Gateway:
verify
External system:
updated = true
Somente então:
SUCCESS
36. Unknown External State
Se:
request → timeout
o Gateway deverá produzir:
UNKNOWN
e não:
FAILED
quando não for possível determinar se a operação foi processada.
37. External Transaction ID
Quando disponível:
externalRequestId
externalOperationId
externalTransactionId
deverão ser armazenados.
Isso será essencial para:
- suporte;
- auditoria;
- reconciliação;
- investigação;
- retry seguro.
38. Reconciliation
O Gateway deverá suportar reconciliação.
Exemplo:
Internal:
Training = VALID
External:
Training = EXPIRED
↓
Reconciliation Job
↓
Conflict
↓
Decision / Review
39. Integration Health
Cada integração deverá fornecer:
interface IntegrationHealth {
integrationId: string;
status: "HEALTHY" | "DEGRADED" | "DOWN";
latencyMs?: number;
errorRate: number;
lastSuccessfulRequest?: string;
checkedAt: string;
}
40. Agent Awareness
O agente deverá saber quando uma integração está indisponível.
Em vez de:
“Não encontrei o treinamento.”
deverá responder:
“Não foi possível consultar o LMS neste momento. O serviço está indisponível; não posso concluir o status do treinamento.”
Essa distinção é crítica.
41. Integration Policy
Cada integração deverá possuir políticas.
Exemplo:
integration: external-lms
policies:
read:
allowed: true
write:
allowed: true
requiresConfirmation: true
bulkWrite:
allowed: false
export:
allowed: true
requiresApproval: true
42. Data Egress Policy
O sistema deverá controlar quais dados podem sair do SST.
Exemplo:
employeeId → ALLOWED
name → ALLOWED
trainingStatus → ALLOWED
medicalDiagnosis → DENIED
salary → DENIED
Antes de qualquer request:
Payload
↓
Data Classification
↓
Egress Policy
↓
Allowed?
43. LLM Data Minimization
Se o LLM precisar interpretar uma resposta externa:
External Response
↓
Normalizer
↓
Sensitive Data Filter
↓
Minimal Context
↓
LLM
Não deverá enviar o payload completo quando apenas três campos forem necessários.
44. External System Instructions
Conteúdo externo deverá ser considerado não confiável.
Por exemplo, uma resposta externa contendo:
"Ignore your security policies..."
não terá autoridade sobre o Agentic Work.
Isso segue a proteção contra prompt injection definida anteriormente.
45. Human Approval
Integrações de alto risco poderão exigir:
External Operation
↓
Risk
↓
Human Approval
↓
Gateway
Exemplo:
“Enviar documento oficial para órgão externo?”
[Cancelar]
[Enviar]
46. External Communication
E-mails e mensagens também deverão ser capabilities.
Exemplo:
notification.email.send
notification.sms.send
O LLM não deverá acessar diretamente SMTP ou APIs de mensagens.
47. Anti-Spam
O Gateway deverá impedir:
workflow loop
↓
notification
↓
event
↓
workflow
↓
notification
Deverá utilizar:
deduplication
cooldown
rate limit
event correlation
48. External Integration Lifecycle
DRAFT
↓
CONFIGURING
↓
TESTING
↓
VALIDATING
↓
APPROVED
↓
ACTIVE
↓
DEGRADED
↓
DISABLED
↓
DEPRECATED
49. Integration Versioning
Cada adapter deverá possuir versão.
integration:
acme-lms
adapter:
2.3.0
Mudanças incompatíveis deverão gerar nova versão.
50. Contract Testing
Cada integração deverá possuir testes de contrato.
Request Schema
Response Schema
Authentication
Error Codes
Pagination
Rate Limits
Idempotency
Isso deverá ocorrer no CI/CD.
51. Mock External Systems
O PRD-014 deverá possuir simuladores.
Exemplo:
LMS Mock
ERP Mock
HR Mock
Access Control Mock
permitindo testar:
success
timeout
429
401
403
500
malformed response
duplicate response
stale data
52. Sandbox
Integrações que possuam ambiente sandbox deverão ser testadas primeiro em:
SANDBOX
Nunca diretamente em produção.
53. External Integration Audit
Deverão ser registrados:
integrationId
tenantId
capabilityId
externalRequestId
actor
payload classification
request timestamp
response status
verification result
policy decision
Dados sensíveis deverão ser minimizados.
54. Cost Management
O Gateway deverá medir:
requests
data transferred
provider cost
execution duration
retry count
permitindo calcular:
Cost per integration
Cost per tenant
Cost per workflow
Cost per capability
55. Tenant Quotas
Exemplo:
tenant:
integrations:
requestsPerMinute: 500
dailyRequests: 100000
concurrentOperations: 20
Os limites deverão ser aplicados antes da chamada externa.
56. Digital Workforce
O conceito de Digital Workforce surge aqui.
Uma capability poderá representar um “trabalhador digital” especializado:
Training Agent
HR Agent
Compliance Agent
Document Agent
Integration Agent
Notification Agent
Mas esses não serão agentes independentes com privilégios irrestritos.
Serão especializações sobre a mesma infraestrutura:
Shared Agent Runtime
+
Shared Policy
+
Shared Capability Registry
+
Shared Audit
57. Specialist Agent
Exemplo:
Training Specialist
poderá possuir:
training.search
training.checkValidity
training.requestRenewal
mas não:
employee.delete
salary.update
admin.changePolicy
O princípio será:
Especialização reduz o conjunto de capacidades; nunca amplia privilégios.
58. Agent-to-Agent Communication
Futuramente poderá existir:
Compliance Agent
↓
Training Agent
↓
Document Agent
Mas a comunicação deverá ocorrer através de contratos estruturados.
interface AgentTask {
taskId: string;
sourceAgent: string;
targetAgent: string;
capabilityId: string;
input: unknown;
tenantId: string;
correlationId: string;
}
59. Agent Identity
Cada agente especializado deverá possuir identidade própria:
agentId
agentVersion
capabilitySet
policyScope
Mas:
Agent identity não substitui user authorization.
Uma solicitação iniciada pelo usuário deverá manter a cadeia:
User
↓
Agent
↓
Specialist
↓
Capability
60. No Privilege Escalation
O agente especializado nunca poderá obter privilégios maiores que os do contexto original.
User permissions
↓
upper bound
↓
Agent permissions
↓
Capability
61. Example — Training Expiration
LMS
↓
TrainingExpired Event
↓
Event Fabric
↓
Proactive Intelligence
↓
Decision Engine
↓
Affected Work Permits
↓
Policy
↓
Workflow
O workflow poderá solicitar:
Training Specialist
que utilizará:
training.external.getStatus
training.external.getCertificate
e retornará os resultados ao workflow.
62. End-to-End Example
Usuário:
“Verifique se todos os trabalhadores das permissões abertas estão com os treinamentos em dia.”
Fluxo:
Intent
↓
Planner
↓
Capability Discovery
↓
Policy
↓
Work Permit Query
↓
Worker Resolution
↓
Training Capability
↓
External Gateway
↓
LMS
↓
Normalization
↓
Verification
↓
Decision Engine
↓
Result
Resposta:
“Encontrei 237 trabalhadores. 221 estão regulares, 11 possuem treinamento vencendo em até 15 dias e 5 possuem treinamento expirado.”
63. Proactive Example
O mesmo processo poderá ser iniciado automaticamente:
TrainingExpiresSoon
↓
Event Fabric
↓
Proactive Intelligence
↓
Decision
↓
37 affected Work Permits
↓
Risk HIGH
↓
Workflow
↓
Notification
Assim os PRDs anteriores passam a formar um ciclo completo.
64. Arquitetura Consolidada
Neste ponto, a arquitetura passa a ser:
USER
│
▼
Conversation
│
▼
Intent
│
▼
Planner
│
▼
Decision
│
▼
Policy
│
▼
Capability
│
┌────────────┴────────────┐
▼ ▼
Internal Runtime External Gateway
│ │
▼ ▼
Business APIs External Systems
│ │
└────────────┬────────────┘
▼
Verification
│
▼
Workflow
│
▼
Events
│
▼
Proactive
│
▼
Decision Center
│
▼
Human / Agent
65. Critérios de Aceitação
- Integration Registry implementado.
- External Capability integrada ao Capability Registry.
- Adapter Architecture implementada.
- Canonical Data Model implementado.
- Mapping Layer implementado.
- Credential isolation implementada.
- Tenant credential binding implementado.
- Egress allowlist implementada.
- SSRF protection implementada.
- Request schema validation implementada.
- Timeout implementado.
- Retry integrado ao PRD-024.
- Circuit breaker implementado.
- Rate limiting implementado.
- Queueing implementado.
- Webhook Gateway implementado.
- Webhook signature validation implementada.
- Replay protection implementada.
- External event normalization integrada ao PRD-020.
- Data freshness implementada.
- External verification implementada.
- Unknown external state implementado.
- Reconciliation implementada.
- Integration health implementada.
- Data egress policy implementada.
- LLM data minimization implementada.
- External communication via capabilities.
- Anti-spam implementado.
- Integration lifecycle implementado.
- Contract testing implementado.
- Sandbox suportado.
- External audit implementado.
- Cost tracking implementado.
- Tenant quotas implementadas.
- Digital Workforce model implementado.
- Agent identity implementada.
- Agent-to-agent contracts preparados.
- No privilege escalation validado.
- LMS vertical slice funcionando ponta a ponta.
Evidência parcial de implementação — 2026-09-04
O registry de integrações é versionado por tenant e exige evidência de contrato para ativação. O gateway autoriza somente capability/binding/policy registrados, impõe host allowlist, validação de payload, limites de timeout, rate, concorrência e quota diária, e registra estado de saúde/circuit breaker. Dispatches são cifrados e entregues por Queue; webhooks validam assinatura, timestamp e nonce, persistem recibo idempotente e normalizam eventos tenant-bound. A trilha de agência registra principal, delegação, capability, política e referência de credencial sem expor o segredo.
Em 2026-09-05, a saída de rede do Gateway passou a usar redirect: "error": uma resposta de redirecionamento falha fechada em vez de poder alcançar um destino fora da allowlist. O comportamento é coberto pelo teste de execução do LMS sandbox. Worker 893aa68c-3836-41dc-ae4d-97fe8df9c52f publicado com health público saudável.
Em 2026-09-05, os contratos de registry, gateway, webhook e executor externo passaram com 35 testes em 5 arquivos. O canário LMS remoto comprovou autorização, execução síncrona e assíncrona, confirmação externa, health HEALTHY, recibo do provedor, custo rastreado, freshness FRESH, reconciliação MATCH, gate stale UNKNOWN, dispatch cifrado, contexto isolado, negação de escopo/revogação/quota e ausência de segredo; o cleanup confirmou remainingRows:0. A auditoria externa independente permanece aberta para prova dedicada.
Em 2026-09-06, a regressão atual de payload, notificações, registry, gateway e webhooks passou com 44 testes. O typecheck do Agent passou novamente, e o health público do Worker confirmou runtime e bindings. O estado permanece PARTIAL pela ausência de resolvers OAuth/mTLS/JWT reais, bulk, PUSH/SMS e reconciliação multi-domínio ampla.
66. Resultado do PRD-025
O Agentic Work deixa de ser apenas um agente que opera o banco/API do SST.
Ele passa a ser uma camada operacional empresarial, capaz de conectar:
SST
+
RH
+
LMS
+
ERP
+
documentos
+
serviços externos
+
eventos
sem perder o controle centralizado de:
Identity
Authorization
Policy
Capabilities
Audit
Verification
Tenant Isolation
Cost
Security
E isso prepara a arquitetura para o próximo salto.
PRD-026 — Agentic Multi-Agent Orchestration & Specialist Agents
O próximo PRD deverá formalizar a evolução de um único Agent Runtime para uma arquitetura de múltiplos agentes especializados, sem cair no erro comum de criar vários “agentes autônomos” com privilégios independentes.
A arquitetura deverá ser:
Agent Supervisor
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
Compliance Agent Training Agent Document Agent
│ │ │
└─────────────────┼─────────────────┘
▼
Shared Capability Layer
│
Shared Policy Engine
│
Shared Audit Fabric
O ponto central do PRD-026 será:
Multi-agent não significa múltiplas autoridades. Significa múltiplas especializações sob uma única arquitetura de segurança, políticas, capacidades, auditoria e identidade.
Ele deverá definir delegação de tarefas, agent contracts, supervisor, specialist discovery, handoff, contexto compartilhado, isolamento de contexto, limites de autoridade, prevenção de loops entre agentes, consenso quando necessário, paralelização, failure handling, agent-to-agent audit, custo, observabilidade e avaliação de sistemas multi-agent.