@purecore/one-jwt-4-all 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +87 -0
- package/LICENSE-COGFULNESS +117 -0
- package/examples/MTLS_AGENTS.md +288 -0
- package/examples/SELF_HEALING_AGENTS.md +269 -0
- package/examples/SIGNAL_E2EE.md +457 -0
- package/examples/mtls-agents.ts +539 -0
- package/examples/self-healing-agents.ts +355 -0
- package/examples/signal-e2ee-agents.ts +827 -0
- package/package.json +20 -0
- package/readme.md +507 -0
- package/reports/22-12-2024_01-50.md +165 -0
- package/src/examples.mcps.ts +86 -0
- package/src/examples.ts +81 -0
- package/src/index.ts +286 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# π Self-Healing Agentic Conversational System
|
|
2
|
+
|
|
3
|
+
## π― Conceito
|
|
4
|
+
|
|
5
|
+
Um sistema onde **dois ou mais agentes** (sistemas autΓ΄nomos, bots, ou serviΓ§os) se identificam mutuamente usando JWTs emitidos pelo mesmo servidor/autoridade, e **regeneram automaticamente seus tokens** quando expiram, mantendo a conversa contΓnua sem interrupΓ§Γ£o.
|
|
6
|
+
|
|
7
|
+
### CaracterΓsticas Principais
|
|
8
|
+
|
|
9
|
+
- β
**Auto-RenovaΓ§Γ£o**: Tokens sΓ£o renovados automaticamente antes de expirar
|
|
10
|
+
- β
**Contexto Preservado**: A conversa continua mesmo apΓ³s renovaΓ§Γ£o
|
|
11
|
+
- β
**VerificaΓ§Γ£o MΓΊtua**: Agentes verificam a identidade uns dos outros
|
|
12
|
+
- β
**Self-Healing**: Sistema se recupera automaticamente de falhas de token
|
|
13
|
+
- β
**SeguranΓ§a**: Tokens curtos (5min) com renovaΓ§Γ£o proativa
|
|
14
|
+
|
|
15
|
+
## ποΈ Arquitetura
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
19
|
+
β Token Authority (Servidor Central) β
|
|
20
|
+
β - Emite tokens para agentes β
|
|
21
|
+
β - Renova tokens mantendo contexto β
|
|
22
|
+
β - Valida identidades β
|
|
23
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
24
|
+
β β
|
|
25
|
+
β β
|
|
26
|
+
βββββββββββββΌβββββββββββ βββββββΌβββββββββββββββ
|
|
27
|
+
β Agent Alpha β β Agent Beta β
|
|
28
|
+
β - Token prΓ³prio β β - Token prΓ³prio β
|
|
29
|
+
β - Auto-renovaΓ§Γ£o β β - Auto-renovaΓ§Γ£o β
|
|
30
|
+
β - Verifica Beta β β - Verifica Alpha β
|
|
31
|
+
βββββββββββββββββββββββββ ββββββββββββββββββββββ
|
|
32
|
+
β β
|
|
33
|
+
ββββββββββββ¬ββββββββββ
|
|
34
|
+
β
|
|
35
|
+
ββββββββββββΌβββββββββββ
|
|
36
|
+
β Conversa ContΓnua β
|
|
37
|
+
β (Self-Healing) β
|
|
38
|
+
βββββββββββββββββββββββ
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## π Componentes
|
|
42
|
+
|
|
43
|
+
### 1. TokenAuthority
|
|
44
|
+
|
|
45
|
+
Servidor central que emite e renova tokens para os agentes.
|
|
46
|
+
|
|
47
|
+
**Responsabilidades:**
|
|
48
|
+
- Emitir tokens iniciais para agentes
|
|
49
|
+
- Renovar tokens mantendo contexto da conversa
|
|
50
|
+
- Validar identidades
|
|
51
|
+
|
|
52
|
+
**CaracterΓsticas:**
|
|
53
|
+
- Tokens curtos (5 minutos) para seguranΓ§a
|
|
54
|
+
- RenovaΓ§Γ£o mantΓ©m `conversationId` e `capabilities`
|
|
55
|
+
- Suporta renovaΓ§Γ£o de tokens expirados (com contexto)
|
|
56
|
+
|
|
57
|
+
### 2. SelfHealingAgent
|
|
58
|
+
|
|
59
|
+
Agente autΓ΄nomo que gerencia seu prΓ³prio ciclo de vida de token.
|
|
60
|
+
|
|
61
|
+
**Responsabilidades:**
|
|
62
|
+
- Manter token vΓ‘lido atravΓ©s de auto-renovaΓ§Γ£o
|
|
63
|
+
- Verificar identidade de outros agentes
|
|
64
|
+
- Enviar/receber mensagens autenticadas
|
|
65
|
+
- Preservar histΓ³rico da conversa
|
|
66
|
+
|
|
67
|
+
**CaracterΓsticas:**
|
|
68
|
+
- RenovaΓ§Γ£o proativa (60s antes de expirar)
|
|
69
|
+
- VerificaΓ§Γ£o de identidade antes de cada mensagem
|
|
70
|
+
- Fallback automΓ‘tico em caso de falha
|
|
71
|
+
- Monitoramento contΓnuo de validade
|
|
72
|
+
|
|
73
|
+
## π Uso BΓ‘sico
|
|
74
|
+
|
|
75
|
+
### 1. Criar Autoridade e Agentes
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
import { TokenAuthority, SelfHealingAgent } from './examples/self-healing-agents';
|
|
79
|
+
|
|
80
|
+
// Criar autoridade central
|
|
81
|
+
const authority = new TokenAuthority();
|
|
82
|
+
|
|
83
|
+
// Criar agentes
|
|
84
|
+
const agentA = new SelfHealingAgent(
|
|
85
|
+
'agent-alpha',
|
|
86
|
+
'primary',
|
|
87
|
+
authority,
|
|
88
|
+
['reasoning', 'memory']
|
|
89
|
+
);
|
|
90
|
+
|
|
91
|
+
const agentB = new SelfHealingAgent(
|
|
92
|
+
'agent-beta',
|
|
93
|
+
'secondary',
|
|
94
|
+
authority,
|
|
95
|
+
['analysis', 'synthesis']
|
|
96
|
+
);
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
### 2. Inicializar e Ativar Auto-RenovaΓ§Γ£o
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
// Inicializar agentes
|
|
103
|
+
await agentA.initialize();
|
|
104
|
+
await agentB.initialize();
|
|
105
|
+
|
|
106
|
+
// Ativar auto-renovaΓ§Γ£o (verifica a cada 30 segundos)
|
|
107
|
+
agentA.startAutoRenewal(30000);
|
|
108
|
+
agentB.startAutoRenewal(30000);
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
### 3. Conversa entre Agentes
|
|
112
|
+
|
|
113
|
+
```typescript
|
|
114
|
+
// Agente A envia mensagem para Agente B
|
|
115
|
+
await agentA.sendMessage(agentB, 'OlΓ‘! Vamos trabalhar juntos?');
|
|
116
|
+
|
|
117
|
+
// Agente B responde
|
|
118
|
+
await agentB.sendMessage(agentA, 'Perfeito! Estou pronto.');
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## π Fluxo de Auto-RenovaΓ§Γ£o
|
|
122
|
+
|
|
123
|
+
```
|
|
124
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
125
|
+
β 1. Token emitido (vΓ‘lido por 5 minutos) β
|
|
126
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
127
|
+
β
|
|
128
|
+
βΌ
|
|
129
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
130
|
+
β 2. Agente monitora validade continuamente β
|
|
131
|
+
β (verifica a cada 30 segundos) β
|
|
132
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
133
|
+
β
|
|
134
|
+
βΌ
|
|
135
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
136
|
+
β 3. Token prΓ³ximo de expirar? (< 60s restantes) β
|
|
137
|
+
β ββ> Sim: Solicita renovaΓ§Γ£o β
|
|
138
|
+
β ββ> NΓ£o: Continua usando token atual β
|
|
139
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
140
|
+
β
|
|
141
|
+
βΌ
|
|
142
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
143
|
+
β 4. RenovaΓ§Γ£o mantΓ©m contexto: β
|
|
144
|
+
β - conversationId (mesma conversa) β
|
|
145
|
+
β - capabilities (mesmas capacidades) β
|
|
146
|
+
β - agentId (mesma identidade) β
|
|
147
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
148
|
+
β
|
|
149
|
+
βΌ
|
|
150
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
151
|
+
β 5. Novo token vΓ‘lido por mais 5 minutos β
|
|
152
|
+
β Conversa continua sem interrupΓ§Γ£o β
|
|
153
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## π‘οΈ SeguranΓ§a
|
|
157
|
+
|
|
158
|
+
### ValidaΓ§Γ΅es Implementadas
|
|
159
|
+
|
|
160
|
+
1. **VerificaΓ§Γ£o de Assinatura**: Cada token Γ© verificado criptograficamente
|
|
161
|
+
2. **ValidaΓ§Γ£o de Issuer**: Apenas tokens do servidor autorizado sΓ£o aceitos
|
|
162
|
+
3. **ValidaΓ§Γ£o de Audience**: Tokens devem ser destinados aos agentes
|
|
163
|
+
4. **VerificaΓ§Γ£o de Conversa**: Agentes sΓ³ conversam se estiverem na mesma conversa
|
|
164
|
+
5. **ExpiraΓ§Γ£o Curta**: Tokens de 5 minutos reduzem janela de ataque
|
|
165
|
+
|
|
166
|
+
### Boas PrΓ‘ticas
|
|
167
|
+
|
|
168
|
+
- β
Use HTTPS para comunicaΓ§Γ£o entre agentes
|
|
169
|
+
- β
Rotacione chaves da autoridade periodicamente
|
|
170
|
+
- β
Monitore tentativas de renovaΓ§Γ£o falhadas
|
|
171
|
+
- β
Implemente rate limiting na autoridade
|
|
172
|
+
- β
Log todas as renovaΓ§Γ΅es para auditoria
|
|
173
|
+
|
|
174
|
+
## π Casos de Uso
|
|
175
|
+
|
|
176
|
+
### 1. Sistemas Multi-Agente de IA
|
|
177
|
+
|
|
178
|
+
Dois agentes de IA colaborando em uma tarefa complexa, mantendo contexto mesmo com renovaΓ§Γ£o de tokens.
|
|
179
|
+
|
|
180
|
+
### 2. MicroserviΓ§os Conversacionais
|
|
181
|
+
|
|
182
|
+
ServiΓ§os que precisam se comunicar de forma autenticada e contΓnua, com auto-recuperaΓ§Γ£o de sessΓ΅es.
|
|
183
|
+
|
|
184
|
+
### 3. Bots Colaborativos
|
|
185
|
+
|
|
186
|
+
MΓΊltiplos bots trabalhando juntos em uma conversa ou tarefa, mantendo identidade e contexto.
|
|
187
|
+
|
|
188
|
+
### 4. Sistemas DistribuΓdos Resilientes
|
|
189
|
+
|
|
190
|
+
Sistemas que precisam manter comunicaΓ§Γ£o mesmo com falhas temporΓ‘rias de autenticaΓ§Γ£o.
|
|
191
|
+
|
|
192
|
+
## π§ͺ Executar Exemplo
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
# Compilar TypeScript
|
|
196
|
+
bun build examples/self-healing-agents.ts --outdir dist/examples --target node
|
|
197
|
+
|
|
198
|
+
# Executar demonstraΓ§Γ£o
|
|
199
|
+
bun run dist/examples/self-healing-agents.js
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Ou diretamente com ts-node:
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
bun run examples/self-healing-agents.ts
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## π Exemplo de SaΓda
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
π Iniciando demonstraΓ§Γ£o de Self-Healing Agentic Conversational System
|
|
212
|
+
|
|
213
|
+
β
Autoridade de tokens criada
|
|
214
|
+
|
|
215
|
+
π€ [agent-alpha] Agente inicializado com token vΓ‘lido atΓ© 2025-12-21T10:05:00.000Z
|
|
216
|
+
π€ [agent-beta] Agente inicializado com token vΓ‘lido atΓ© 2025-12-21T10:05:00.000Z
|
|
217
|
+
|
|
218
|
+
π [agent-alpha] Auto-renovaΓ§Γ£o de token ativada (verifica a cada 30000ms)
|
|
219
|
+
π [agent-beta] Auto-renovaΓ§Γ£o de token ativada (verifica a cada 30000ms)
|
|
220
|
+
|
|
221
|
+
π¬ Iniciando conversa entre agentes...
|
|
222
|
+
|
|
223
|
+
π€ [agent-alpha] β [agent-beta]: OlΓ‘! Sou o Agente Alpha. Como vocΓͺ estΓ‘?
|
|
224
|
+
π₯ [agent-beta] β [agent-alpha]: OlΓ‘! Sou o Agente Alpha. Como vocΓͺ estΓ‘?
|
|
225
|
+
|
|
226
|
+
π€ [agent-beta] β [agent-alpha]: OlΓ‘ Alpha! Sou o Agente Beta. Estou funcionando perfeitamente!
|
|
227
|
+
π₯ [agent-alpha] β [agent-beta]: OlΓ‘ Alpha! Sou o Agente Beta. Estou funcionando perfeitamente!
|
|
228
|
+
|
|
229
|
+
β³ Simulando espera de 4 minutos (tokens expiram em 5 minutos)...
|
|
230
|
+
|
|
231
|
+
π [agent-alpha] Token prΓ³ximo de expirar, renovando...
|
|
232
|
+
β
[agent-alpha] Token renovado com sucesso. VΓ‘lido atΓ© 2025-12-21T10:10:00.000Z
|
|
233
|
+
π [agent-beta] Token prΓ³ximo de expirar, renovando...
|
|
234
|
+
β
[agent-beta] Token renovado com sucesso. VΓ‘lido atΓ© 2025-12-21T10:10:00.000Z
|
|
235
|
+
|
|
236
|
+
π€ [agent-alpha] β [agent-beta]: Perfeito! Vamos trabalhar juntos neste problema complexo.
|
|
237
|
+
π₯ [agent-beta] β [agent-alpha]: Perfeito! Vamos trabalhar juntos neste problema complexo.
|
|
238
|
+
|
|
239
|
+
π€ [agent-beta] β [agent-alpha]: Excelente! Estou pronto para colaborar. Meus tokens foram renovados automaticamente.
|
|
240
|
+
π₯ [agent-alpha] β [agent-beta]: Excelente! Estou pronto para colaborar. Meus tokens foram renovados automaticamente.
|
|
241
|
+
|
|
242
|
+
π HistΓ³rico da conversa:
|
|
243
|
+
[10:00:00] agent-alpha β agent-beta: OlΓ‘! Sou o Agente Alpha. Como vocΓͺ estΓ‘?
|
|
244
|
+
[10:00:01] agent-beta β agent-alpha: OlΓ‘ Alpha! Sou o Agente Beta. Estou funcionando perfeitamente!
|
|
245
|
+
[10:04:00] agent-alpha β agent-beta: Perfeito! Vamos trabalhar juntos neste problema complexo.
|
|
246
|
+
[10:04:01] agent-beta β agent-alpha: Excelente! Estou pronto para colaborar. Meus tokens foram renovados automaticamente.
|
|
247
|
+
|
|
248
|
+
β
DemonstraΓ§Γ£o concluΓda! Os agentes mantiveram a conversa mesmo com renovaΓ§Γ£o automΓ‘tica de tokens.
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## π PrΓ³ximos Passos
|
|
252
|
+
|
|
253
|
+
- [ ] Suporte para mΓΊltiplos agentes (>2)
|
|
254
|
+
- [ ] PersistΓͺncia de histΓ³rico de conversa
|
|
255
|
+
- [ ] MΓ©tricas de renovaΓ§Γ£o e performance
|
|
256
|
+
- [ ] IntegraΓ§Γ£o com sistemas de mensageria (RabbitMQ, Kafka)
|
|
257
|
+
- [ ] Suporte para renovaΓ§Γ£o assΓncrona em background
|
|
258
|
+
- [ ] Cache de tokens para reduzir carga na autoridade
|
|
259
|
+
|
|
260
|
+
## π ReferΓͺncias
|
|
261
|
+
|
|
262
|
+
- [RFC 7519 - JSON Web Token (JWT)](https://tools.ietf.org/html/rfc7519)
|
|
263
|
+
- [Self-Healing Systems](https://en.wikipedia.org/wiki/Self-healing)
|
|
264
|
+
- [Multi-Agent Systems](https://en.wikipedia.org/wiki/Multi-agent_system)
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
**Desenvolvido para demonstrar capacidades avanΓ§adas de autenticaΓ§Γ£o e comunicaΓ§Γ£o entre agentes autΓ΄nomos.**
|
|
269
|
+
|