@t4h/agent-runtime 0.1.1 → 0.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/README.md +77 -5
- package/catalog/agents.catalog.yaml +123 -0
- package/dist/catalog.d.ts +13 -0
- package/dist/catalog.js +39 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cli.js +33 -8
- package/dist/cli.js.map +1 -1
- package/dist/connector.d.ts +13 -0
- package/dist/connector.js +208 -0
- package/dist/connector.js.map +1 -0
- package/dist/env.d.ts +56 -0
- package/dist/env.js +134 -0
- package/dist/env.js.map +1 -0
- package/dist/evals.js +1 -1
- package/dist/host.d.ts +111 -13
- package/dist/host.js +251 -43
- package/dist/host.js.map +1 -1
- package/dist/index.d.ts +16 -4
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/notifier.d.ts +1 -1
- package/dist/policy.js +12 -1
- package/dist/policy.js.map +1 -1
- package/dist/prompt.d.ts +8 -0
- package/dist/prompt.js +10 -3
- package/dist/prompt.js.map +1 -1
- package/dist/round.js +2 -1
- package/dist/round.js.map +1 -1
- package/dist/runtime-tools.d.ts +1 -1
- package/dist/runtime-tools.js +3 -3
- package/dist/runtime-tools.js.map +1 -1
- package/dist/signature.d.ts +34 -0
- package/dist/signature.js +87 -0
- package/dist/signature.js.map +1 -0
- package/dist/start.d.ts +31 -0
- package/dist/start.js +109 -0
- package/dist/start.js.map +1 -0
- package/dist/store/long-term.d.ts +63 -3
- package/dist/store/long-term.js +71 -11
- package/dist/store/long-term.js.map +1 -1
- package/dist/store/migrations.d.ts +1 -1
- package/dist/store/migrations.js +24 -0
- package/dist/store/migrations.js.map +1 -1
- package/dist/wiring.d.ts +11 -0
- package/dist/wiring.js +32 -0
- package/dist/wiring.js.map +1 -0
- package/package.json +13 -6
- package/proto/t4h/agents/v1/agents.proto +176 -0
package/dist/host.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Host dos agentes de um repositório de círculo: um processo, vários agentes.
|
|
3
3
|
*
|
|
4
|
-
* Junta as peças: caixa de entrada, rodadas (no despertar do cron ou sob
|
|
5
|
-
* agenda das rotinas com o time, conversa direta, propostas esperando uma
|
|
6
|
-
* correções, disjuntor e bloqueio de emergência.
|
|
4
|
+
* Junta as peças: caixa de entrada, rodadas (no despertar do cron, por evento novo ou sob
|
|
5
|
+
* demanda), agenda das rotinas com o time, conversa direta, propostas esperando uma
|
|
6
|
+
* pessoa, correções, disjuntor, teto de nível e bloqueio de emergência.
|
|
7
7
|
*/
|
|
8
|
-
import {
|
|
8
|
+
import { randomUUID } from 'node:crypto';
|
|
9
9
|
import { createServer } from 'node:http';
|
|
10
10
|
import { Cron } from 'croner';
|
|
11
11
|
import { resolveKind } from './inbox.js';
|
|
@@ -15,7 +15,9 @@ import { evaluateBreaker, PolicyGate } from './policy.js';
|
|
|
15
15
|
import { conversationPrompt, systemPrompt } from './prompt.js';
|
|
16
16
|
import { runRound } from './round.js';
|
|
17
17
|
import { RuntimeTools } from './runtime-tools.js';
|
|
18
|
+
import { SIGNATURE_HEADER, SOURCE_HEADER, verifyEventSignature } from './signature.js';
|
|
18
19
|
import { ShortTermMemory } from './short-term.js';
|
|
20
|
+
import { CONVERSATION_ROUTINE } from './store/long-term.js';
|
|
19
21
|
export function gatewayExecutor(gateway) {
|
|
20
22
|
return {
|
|
21
23
|
call: (_agent, tool, input) => {
|
|
@@ -24,18 +26,44 @@ export function gatewayExecutor(gateway) {
|
|
|
24
26
|
},
|
|
25
27
|
};
|
|
26
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Recusa do host que não é regra do agente: o processo está desligando (`unavailable`),
|
|
31
|
+
* passou do teto de conversas simultâneas (`resource_exhausted`) ou o pedido veio
|
|
32
|
+
* malformado (`invalid_argument`). O conector traduz para o status gRPC equivalente.
|
|
33
|
+
*/
|
|
34
|
+
export class HostError extends Error {
|
|
35
|
+
code;
|
|
36
|
+
constructor(code, message) {
|
|
37
|
+
super(message);
|
|
38
|
+
this.code = code;
|
|
39
|
+
this.name = 'HostError';
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/** `thread_id` vem de quem chama: só letras, dígitos, `_` e `-` (um `ask_id` serve). */
|
|
43
|
+
export const THREAD_ID_PATTERN = /^[A-Za-z0-9_-]{1,64}$/;
|
|
44
|
+
/** Quantas trocas anteriores do mesmo fio entram no prompt da conversa. */
|
|
45
|
+
export const THREAD_HISTORY_LIMIT = 5;
|
|
46
|
+
/** Teto de conversas rodando ao mesmo tempo com um agente (somando as réplicas). */
|
|
47
|
+
export const DEFAULT_ASK_LIMITS = { perAsker: 3, perAgent: 20 };
|
|
48
|
+
export const DEFAULT_ASK_WAIT_MS = 20_000;
|
|
27
49
|
export class AgentHost {
|
|
28
50
|
o;
|
|
29
51
|
agents = new Map();
|
|
30
52
|
skills = new Map();
|
|
31
53
|
crons = [];
|
|
54
|
+
wakeTimers = new Map();
|
|
55
|
+
/** Conversas e rodadas em andamento: o `stop()` espera um pouco por elas. */
|
|
56
|
+
inflight = new Set();
|
|
32
57
|
notifier;
|
|
58
|
+
onRound;
|
|
33
59
|
http;
|
|
60
|
+
stopped = false;
|
|
34
61
|
constructor(o) {
|
|
35
62
|
this.o = o;
|
|
36
63
|
for (const a of o.agents)
|
|
37
64
|
this.agents.set(a.manifest.id, a);
|
|
38
65
|
this.notifier = o.notifier ?? consoleNotifier;
|
|
66
|
+
this.onRound = o.onRound ?? (() => { });
|
|
39
67
|
}
|
|
40
68
|
get store() {
|
|
41
69
|
return this.o.store;
|
|
@@ -55,17 +83,52 @@ export class AgentHost {
|
|
|
55
83
|
return s;
|
|
56
84
|
}
|
|
57
85
|
// ── entrada ─────────────────────────────────────────────────────────────────────
|
|
58
|
-
|
|
86
|
+
/** `source` é a fonte do webhook: o id do evento fica `<fonte>:<id>` (dedup por fonte). */
|
|
87
|
+
async enqueue(agentId, ev, source) {
|
|
59
88
|
const a = this.agent(agentId);
|
|
60
89
|
if (!a.eventKinds.has(ev.type) && !ev.type.startsWith('schedule.')) {
|
|
61
90
|
throw new Error(`${agentId} não assina o evento "${ev.type}" (triggers.events)`);
|
|
62
91
|
}
|
|
63
|
-
|
|
92
|
+
const r = await this.o.store.enqueue(agentId, ev, resolveKind(ev, a.eventKinds), source);
|
|
93
|
+
if (!r.duplicate)
|
|
94
|
+
this.wake(agentId);
|
|
95
|
+
return r;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Agenda uma rodada para logo depois de um evento novo. Os eventos que chegam enquanto
|
|
99
|
+
* a rodada está agendada entram nela (não reinicia a espera, para uma rajada não adiar a
|
|
100
|
+
* rodada para sempre). O lock continua garantindo uma rodada por vez; se outra réplica
|
|
101
|
+
* estiver rodando, tenta de novo depois. O cron segue como rede de segurança.
|
|
102
|
+
*/
|
|
103
|
+
wake(agentId) {
|
|
104
|
+
const ms = this.o.wakeDebounceMs;
|
|
105
|
+
if (ms === undefined || this.stopped || this.wakeTimers.has(agentId))
|
|
106
|
+
return;
|
|
107
|
+
const timer = setTimeout(() => {
|
|
108
|
+
this.wakeTimers.delete(agentId);
|
|
109
|
+
if (this.stopped)
|
|
110
|
+
return;
|
|
111
|
+
this.runRound(agentId).then(async (r) => {
|
|
112
|
+
this.onRound(agentId, r);
|
|
113
|
+
// Ficou trabalho para trás (rodada de outra réplica, teto de itens): mais uma.
|
|
114
|
+
if (r.skipped === 'locked' || (!r.skipped && (await this.o.store.queueDepth(agentId)) > 0))
|
|
115
|
+
this.wake(agentId);
|
|
116
|
+
}, (e) => this.onRound(agentId, { items: [], costUsd: 0, error: String(e) })).catch((e) => console.error(`despertar de ${agentId}:`, e));
|
|
117
|
+
}, ms);
|
|
118
|
+
timer.unref();
|
|
119
|
+
this.wakeTimers.set(agentId, timer);
|
|
120
|
+
}
|
|
121
|
+
/** Acompanha o trabalho em andamento para o `stop()` esperar por ele antes do banco fechar. */
|
|
122
|
+
track(p) {
|
|
123
|
+
const settled = p.then(() => { }, () => { });
|
|
124
|
+
this.inflight.add(settled);
|
|
125
|
+
void settled.then(() => this.inflight.delete(settled));
|
|
126
|
+
return p;
|
|
64
127
|
}
|
|
65
128
|
// ── rodada ──────────────────────────────────────────────────────────────────────
|
|
66
129
|
runRound(agentId, hops = 0) {
|
|
67
130
|
const a = this.agent(agentId);
|
|
68
|
-
return runRound({
|
|
131
|
+
return this.track(runRound({
|
|
69
132
|
agent: a,
|
|
70
133
|
store: this.o.store,
|
|
71
134
|
brain: this.o.brain,
|
|
@@ -74,15 +137,80 @@ export class AgentHost {
|
|
|
74
137
|
servers: () => this.o.servers(a),
|
|
75
138
|
askPeer: (peer, q) => this.converse(peer, { email: a.manifest.identity.email, kind: 'agent' }, q, `handoff:${agentId}`, hops + 1).then((r) => r.answer),
|
|
76
139
|
...(this.o.now ? { now: this.o.now } : {}),
|
|
77
|
-
});
|
|
140
|
+
}));
|
|
78
141
|
}
|
|
79
142
|
// ── conversa ────────────────────────────────────────────────────────────────────
|
|
80
143
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
144
|
+
* Pergunta pelo conector: grava a conversa, roda em segundo plano e espera até
|
|
145
|
+
* `askWaitMs`. Se a resposta não vier a tempo, devolve `running`, e quem perguntou busca
|
|
146
|
+
* depois com `answer()`. O estado fica no Postgres: qualquer réplica responde.
|
|
84
147
|
*/
|
|
85
|
-
async
|
|
148
|
+
async ask(agentId, asker, message, threadId) {
|
|
149
|
+
if (this.stopped)
|
|
150
|
+
throw new HostError('unavailable', 'o processo dos agentes está desligando; pergunte de novo em instantes');
|
|
151
|
+
const a = this.agent(agentId);
|
|
152
|
+
if (threadId !== undefined && !THREAD_ID_PATTERN.test(threadId)) {
|
|
153
|
+
throw new HostError('invalid_argument', 'thread_id inválido: use até 64 letras, dígitos, "_" ou "-" (o ask_id da primeira pergunta serve)');
|
|
154
|
+
}
|
|
155
|
+
if (!a.manifest.conversation.enabled)
|
|
156
|
+
throw new Error(`${agentId} não aceita conversa direta`);
|
|
157
|
+
if (await this.o.store.killSwitch(agentId))
|
|
158
|
+
throw new Error(`${agentId} está bloqueado`);
|
|
159
|
+
// Cada pergunta roda o modelo em segundo plano, além do timeout do gateway: sem teto,
|
|
160
|
+
// quem tem o grant multiplica custo e carga.
|
|
161
|
+
const limits = this.o.askLimits ?? DEFAULT_ASK_LIMITS;
|
|
162
|
+
const running = await this.o.store.runningConversations(agentId, asker.email, a.manifest.limits.roundTimeoutSec + 60);
|
|
163
|
+
if (running.mine >= limits.perAsker) {
|
|
164
|
+
throw new HostError('resource_exhausted', `você já tem ${running.mine} perguntas em andamento com ${agentId}: busque a resposta (agent_answer) antes de perguntar de novo`);
|
|
165
|
+
}
|
|
166
|
+
if (running.total >= limits.perAgent)
|
|
167
|
+
throw new HostError('resource_exhausted', `${agentId} está com ${running.total} conversas em andamento; tente em instantes`);
|
|
168
|
+
const id = randomUUID();
|
|
169
|
+
const thread = threadId || id;
|
|
170
|
+
// O fio continua: as últimas trocas terminadas, só de quem pergunta.
|
|
171
|
+
const previous = threadId ? await this.o.store.threadHistory(agentId, thread, asker.email, THREAD_HISTORY_LIMIT) : [];
|
|
172
|
+
await this.o.store.startConversation({ id, agentId, asker: asker.email, askerKind: asker.kind, threadId: thread, message });
|
|
173
|
+
const run = this.track(this.converse(agentId, asker, message, thread, 0, previous)
|
|
174
|
+
.then((r) => this.o.store.finishConversation(id, { status: 'done', answer: r.answer, costUsd: r.costUsd }), (e) => this.o.store.finishConversation(id, { status: 'error', error: e.message }))
|
|
175
|
+
.catch((e) => console.error(`conversa ${id}:`, e)));
|
|
176
|
+
let timer;
|
|
177
|
+
const answered = await Promise.race([
|
|
178
|
+
run.then(() => true),
|
|
179
|
+
new Promise((ok) => (timer = setTimeout(() => ok(false), this.o.askWaitMs ?? DEFAULT_ASK_WAIT_MS))),
|
|
180
|
+
]);
|
|
181
|
+
clearTimeout(timer);
|
|
182
|
+
if (!answered)
|
|
183
|
+
return { ask_id: id, status: 'running' };
|
|
184
|
+
const row = await this.o.store.getConversation(id);
|
|
185
|
+
return {
|
|
186
|
+
ask_id: id,
|
|
187
|
+
status: row?.status ?? 'error',
|
|
188
|
+
...(row?.answer ? { answer: row.answer } : {}),
|
|
189
|
+
...(row?.error ? { error: row.error } : {}),
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* A resposta de um `ask()`. Só quem perguntou lê: para os outros, a conversa não existe.
|
|
194
|
+
* `running` há mais tempo que uma rodada inteira (mais um minuto) virou erro: a réplica
|
|
195
|
+
* que respondia caiu.
|
|
196
|
+
*/
|
|
197
|
+
async answer(askId, askerEmail) {
|
|
198
|
+
const row = await this.o.store.getConversation(askId);
|
|
199
|
+
if (!row || row.asker.toLowerCase() !== askerEmail.toLowerCase())
|
|
200
|
+
return undefined;
|
|
201
|
+
if (row.status !== 'running')
|
|
202
|
+
return row;
|
|
203
|
+
const timeoutSec = this.agents.get(row.agent_id)?.manifest.limits.roundTimeoutSec ?? 300;
|
|
204
|
+
return this.o.store.getConversation(askId, timeoutSec + 60);
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Conversa direta, à parte da fila. Síncrona: o conector usa `ask()`, que roda esta em
|
|
208
|
+
* segundo plano; aqui chega direto a conversa entre agentes (handoff). Só lê, com o
|
|
209
|
+
* acesso do próprio agente: ele é um colaborador virtual, e quem pode conversar com ele
|
|
210
|
+
* é decidido pelo grant do conector `agents_<círculo>`. `previous`: trocas anteriores do
|
|
211
|
+
* mesmo fio (o `ask()` só passa as de quem pergunta).
|
|
212
|
+
*/
|
|
213
|
+
async converse(agentId, asker, message, conversationId, hops = 0, previous = []) {
|
|
86
214
|
const a = this.agent(agentId);
|
|
87
215
|
const m = a.manifest;
|
|
88
216
|
if (!m.conversation.enabled)
|
|
@@ -106,12 +234,14 @@ export class AgentHost {
|
|
|
106
234
|
const res = await this.o.brain.run({
|
|
107
235
|
agent: a,
|
|
108
236
|
systemPrompt: systemPrompt(a, (r) => gate.levelOf(r)),
|
|
109
|
-
prompt: conversationPrompt({ asker: asker.email, askerKind: asker.kind, message, conversationId }),
|
|
237
|
+
prompt: conversationPrompt({ asker: asker.email, askerKind: asker.kind, message, conversationId, previous }),
|
|
110
238
|
gate,
|
|
111
239
|
tools,
|
|
112
240
|
mcpServers: await this.o.servers(a),
|
|
113
241
|
skills: this.skillsOf(a),
|
|
114
242
|
maxTurns: m.conversation.maxTurns,
|
|
243
|
+
// A conversa respeita o mesmo teto de custo de um item da rodada.
|
|
244
|
+
...(m.limits.budgetUsdPerItem ? { budgetUsd: m.limits.budgetUsdPerItem } : {}),
|
|
115
245
|
signal: AbortSignal.timeout(m.limits.roundTimeoutSec * 1000),
|
|
116
246
|
});
|
|
117
247
|
if (res.error)
|
|
@@ -120,7 +250,7 @@ export class AgentHost {
|
|
|
120
250
|
await this.o.store.recordAction({
|
|
121
251
|
agentId,
|
|
122
252
|
itemId: null,
|
|
123
|
-
routine:
|
|
253
|
+
routine: CONVERSATION_ROUTINE,
|
|
124
254
|
tool: 'runtime.answer',
|
|
125
255
|
input: { asker: asker.email, askerKind: asker.kind, conversationId, hops, message },
|
|
126
256
|
reason: null,
|
|
@@ -139,8 +269,17 @@ export class AgentHost {
|
|
|
139
269
|
pendingProposals(agentId) {
|
|
140
270
|
return this.o.store.history(agentId, { mode: 'proposed', status: 'pending', limit: 100 });
|
|
141
271
|
}
|
|
142
|
-
/**
|
|
272
|
+
/**
|
|
273
|
+
* Uma pessoa aprova ou recusa a proposta. Aprovada, roda pelo gateway com a identidade do
|
|
274
|
+
* agente. Com o agente bloqueado, recusar vale; aprovar não (nada roda no nome dele).
|
|
275
|
+
*/
|
|
143
276
|
async decideProposal(actionId, decision, by, note) {
|
|
277
|
+
if (decision === 'approved') {
|
|
278
|
+
const pending = await this.o.store.getAction(actionId);
|
|
279
|
+
if (pending && (await this.o.store.killSwitch(pending.agent_id))) {
|
|
280
|
+
throw new Error(`${pending.agent_id} está bloqueado: a proposta #${actionId} só pode ser recusada até o desbloqueio`);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
144
283
|
const row = await this.o.store.decideProposal(actionId, decision, by, note);
|
|
145
284
|
if (!row)
|
|
146
285
|
throw new Error(`proposta #${actionId} não existe ou já foi decidida`);
|
|
@@ -165,27 +304,54 @@ export class AgentHost {
|
|
|
165
304
|
await evaluateBreaker(this.agent(row.agent_id), row.routine, this.o.store, this.notifier);
|
|
166
305
|
return row;
|
|
167
306
|
}
|
|
307
|
+
routineOf(agentId, routine) {
|
|
308
|
+
const m = this.agent(agentId).manifest;
|
|
309
|
+
if (!m.routines[routine])
|
|
310
|
+
throw new Error(`${agentId} não tem a rotina "${routine}"`);
|
|
311
|
+
return m;
|
|
312
|
+
}
|
|
168
313
|
/** Incidente: a rotina desce na hora, por decisão de pessoa. */
|
|
169
314
|
async demote(agentId, routine, to, by, reason) {
|
|
315
|
+
const m = this.routineOf(agentId, routine);
|
|
170
316
|
await this.o.store.setLevelCap(agentId, routine, to, `${by}: ${reason}`);
|
|
171
|
-
const m = this.agent(agentId).manifest;
|
|
172
317
|
await this.notifier.notify({ agentId, kind: 'demotion', to: [m.owner.dri, 'seguranca'], text: `${m.name}: ${routine} desceu para ${to} por ${by}. ${reason}` });
|
|
173
318
|
}
|
|
319
|
+
/** Tira o teto: volta a valer o nível do manifesto (depois de tratar a causa). */
|
|
320
|
+
async restore(agentId, routine, by, reason) {
|
|
321
|
+
const m = this.routineOf(agentId, routine);
|
|
322
|
+
await this.o.store.clearLevelCap(agentId, routine);
|
|
323
|
+
await this.notifier.notify({
|
|
324
|
+
agentId,
|
|
325
|
+
kind: 'restore',
|
|
326
|
+
to: [m.owner.dri, 'seguranca'],
|
|
327
|
+
text: `${m.name}: ${routine} voltou ao nível do manifesto por ${by}.${reason ? ` ${reason}` : ''}`,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
174
330
|
/** Bloqueio de emergência: para tudo na hora, sem deploy. */
|
|
175
331
|
async kill(agentId, by, reason) {
|
|
176
|
-
await this.o.store.setKillSwitch(agentId, reason, by);
|
|
177
332
|
const m = this.agent(agentId).manifest;
|
|
333
|
+
await this.o.store.setKillSwitch(agentId, reason, by);
|
|
178
334
|
await this.notifier.notify({ agentId, kind: 'kill-switch', to: [m.owner.dri, 'seguranca'], text: `${m.name} bloqueado por ${by}: ${reason}` });
|
|
179
335
|
}
|
|
336
|
+
/** Fim do bloqueio de emergência. Sem bloqueio, não faz nada (nem avisa). */
|
|
337
|
+
async unblock(agentId, by, reason) {
|
|
338
|
+
const m = this.agent(agentId).manifest;
|
|
339
|
+
if (!(await this.o.store.killSwitch(agentId)))
|
|
340
|
+
return;
|
|
341
|
+
await this.o.store.clearKillSwitch(agentId);
|
|
342
|
+
await this.notifier.notify({ agentId, kind: 'unblock', to: [m.owner.dri, 'seguranca'], text: `${m.name} liberado por ${by}.${reason ? ` ${reason}` : ''}` });
|
|
343
|
+
}
|
|
180
344
|
// ── agenda e entrada HTTP ───────────────────────────────────────────────────────
|
|
181
345
|
/** Liga o despertar de cada agente e a agenda das rotinas. */
|
|
182
|
-
startSchedules(onRound
|
|
346
|
+
startSchedules(onRound) {
|
|
347
|
+
if (onRound)
|
|
348
|
+
this.onRound = onRound;
|
|
183
349
|
for (const a of this.agents.values()) {
|
|
184
350
|
const m = a.manifest;
|
|
185
351
|
const tz = m.triggers.timezone;
|
|
186
352
|
if (m.triggers.schedule) {
|
|
187
353
|
this.crons.push(new Cron(m.triggers.schedule, { timezone: tz, protect: true }, async () => {
|
|
188
|
-
onRound(m.id, await this.runRound(m.id).catch((e) => ({ items: [], costUsd: 0, error: String(e) })));
|
|
354
|
+
this.onRound(m.id, await this.runRound(m.id).catch((e) => ({ items: [], costUsd: 0, error: String(e) })));
|
|
189
355
|
}));
|
|
190
356
|
}
|
|
191
357
|
for (const [name, r] of Object.entries(m.routines)) {
|
|
@@ -199,42 +365,94 @@ export class AgentHost {
|
|
|
199
365
|
}
|
|
200
366
|
}
|
|
201
367
|
/**
|
|
202
|
-
* Entrada de eventos por webhook: POST /agents/:id/events, assinado
|
|
203
|
-
* (`x-t4h-signature
|
|
368
|
+
* Entrada de eventos por webhook: POST /agents/:id/events, assinado por fonte
|
|
369
|
+
* (`x-t4h-source` + `x-t4h-signature`, ver signature.ts). POST /agents/:id/rounds acorda
|
|
370
|
+
* o agente na hora, só fora de produção. GET /healthz para o Container App.
|
|
204
371
|
*/
|
|
205
|
-
listen(port,
|
|
372
|
+
listen(port, opts = {}) {
|
|
373
|
+
const production = opts.production ?? process.env.NODE_ENV === 'production';
|
|
374
|
+
const secrets = opts.secrets ?? new Map();
|
|
375
|
+
const manualRounds = !production && (opts.allowManualRounds ?? true);
|
|
376
|
+
if (!secrets.size && !production)
|
|
377
|
+
console.warn('eventos: sem EVENTS_HMAC_SECRETS, aceitando eventos sem assinatura (só fora de produção)');
|
|
206
378
|
this.http = createServer(async (req, res) => {
|
|
207
379
|
const reply = (status, body) => {
|
|
208
380
|
res.writeHead(status, { 'content-type': 'application/json' });
|
|
209
381
|
res.end(JSON.stringify(body));
|
|
210
382
|
};
|
|
211
383
|
try {
|
|
384
|
+
// Em produção, o healthz não diz quem mora aqui.
|
|
212
385
|
if (req.method === 'GET' && req.url === '/healthz')
|
|
213
|
-
return reply(200, { ok: true, agents: [...this.agents.keys()] });
|
|
386
|
+
return reply(200, production ? { ok: true } : { ok: true, agents: [...this.agents.keys()] });
|
|
214
387
|
const m = /^\/agents\/([a-z0-9-]+)\/(events|rounds)$/.exec(req.url ?? '');
|
|
215
|
-
if (req.method !== 'POST' || !m)
|
|
388
|
+
if (req.method !== 'POST' || !m || (m[2] === 'rounds' && !manualRounds))
|
|
216
389
|
return reply(404, { error: 'not found' });
|
|
217
|
-
|
|
218
|
-
|
|
390
|
+
let raw;
|
|
391
|
+
try {
|
|
392
|
+
raw = await readBody(req);
|
|
393
|
+
}
|
|
394
|
+
catch {
|
|
395
|
+
return reply(413, { error: 'evento grande demais (máximo 256 KB)' });
|
|
396
|
+
}
|
|
397
|
+
const check = verifyEventSignature({ raw, source: req.headers[SOURCE_HEADER], signature: req.headers[SIGNATURE_HEADER], secrets, production });
|
|
398
|
+
if (!check.ok) {
|
|
399
|
+
// O motivo fica só no log: a resposta não ajuda a descobrir quais fontes existem.
|
|
400
|
+
console.warn(`eventos: recusado em ${req.url}: ${check.reason}`);
|
|
219
401
|
return reply(401, { error: 'assinatura inválida' });
|
|
220
|
-
|
|
402
|
+
}
|
|
403
|
+
const agentId = m[1];
|
|
404
|
+
const a = this.agents.get(agentId);
|
|
405
|
+
if (!a)
|
|
406
|
+
return reply(404, { error: `agente "${agentId}" não existe` });
|
|
407
|
+
// Acordar agora, sem esperar o cron (desenvolvimento e testes). Responde com o relatório.
|
|
221
408
|
if (m[2] === 'rounds')
|
|
222
|
-
return reply(200, await this.runRound(
|
|
223
|
-
|
|
224
|
-
|
|
409
|
+
return reply(200, await this.runRound(agentId));
|
|
410
|
+
let ev;
|
|
411
|
+
try {
|
|
412
|
+
ev = JSON.parse(raw);
|
|
413
|
+
}
|
|
414
|
+
catch {
|
|
415
|
+
return reply(400, { error: 'corpo não é JSON' });
|
|
416
|
+
}
|
|
417
|
+
if (typeof ev?.type !== 'string' || typeof ev?.subject !== 'string')
|
|
225
418
|
return reply(400, { error: 'type e subject são obrigatórios' });
|
|
226
|
-
|
|
419
|
+
// Sem id não há dedup: o mesmo corpo assinado entraria de novo a cada reenvio.
|
|
420
|
+
if (typeof ev.id !== 'string' || !ev.id)
|
|
421
|
+
return reply(400, { error: 'id (único na fonte) é obrigatório' });
|
|
422
|
+
// `schedule.*` é da agenda interna das rotinas, nunca de uma fonte de fora.
|
|
423
|
+
if (ev.type.startsWith('schedule.'))
|
|
424
|
+
return reply(400, { error: 'eventos schedule.* são só da agenda interna' });
|
|
425
|
+
if (!a.eventKinds.has(ev.type))
|
|
426
|
+
return reply(400, { error: `${agentId} não assina o evento "${ev.type}" (triggers.events)` });
|
|
427
|
+
return reply(202, await this.enqueue(agentId, ev, check.source));
|
|
227
428
|
}
|
|
228
429
|
catch (e) {
|
|
229
|
-
|
|
430
|
+
// Erro interno (banco, rodada): o detalhe fica só no log.
|
|
431
|
+
console.error(`eventos: ${req.method} ${req.url}:`, e);
|
|
432
|
+
return reply(500, { error: 'erro interno' });
|
|
230
433
|
}
|
|
231
434
|
});
|
|
232
435
|
return new Promise((ok) => this.http.listen(port, () => ok(this.http.address().port)));
|
|
233
436
|
}
|
|
234
|
-
|
|
437
|
+
/**
|
|
438
|
+
* Para a entrada (webhook, cron, despertares, novas perguntas) e espera até `graceMs`
|
|
439
|
+
* pelas conversas e rodadas em andamento. A conversa que não terminar fica `running` e
|
|
440
|
+
* vira erro no próximo `answer()`; o item de uma rodada interrompida fica `working` e
|
|
441
|
+
* volta para a fila quando o prazo do lock vencer (`leaseBatch`).
|
|
442
|
+
*/
|
|
443
|
+
async stop(graceMs = 10_000) {
|
|
444
|
+
this.stopped = true;
|
|
445
|
+
for (const t of this.wakeTimers.values())
|
|
446
|
+
clearTimeout(t);
|
|
447
|
+
this.wakeTimers.clear();
|
|
235
448
|
for (const c of this.crons)
|
|
236
449
|
c.stop();
|
|
237
450
|
await new Promise((ok) => (this.http ? this.http.close(() => ok()) : ok()));
|
|
451
|
+
if (this.inflight.size) {
|
|
452
|
+
let timer;
|
|
453
|
+
await Promise.race([Promise.allSettled([...this.inflight]), new Promise((ok) => (timer = setTimeout(ok, graceMs)))]);
|
|
454
|
+
clearTimeout(timer);
|
|
455
|
+
}
|
|
238
456
|
}
|
|
239
457
|
}
|
|
240
458
|
function readBody(req) {
|
|
@@ -254,14 +472,4 @@ function readBody(req) {
|
|
|
254
472
|
req.on('error', fail);
|
|
255
473
|
});
|
|
256
474
|
}
|
|
257
|
-
/** Sem segredo configurado, só aceita fora de produção. */
|
|
258
|
-
export function verifySignature(raw, header, secret) {
|
|
259
|
-
if (!secret)
|
|
260
|
-
return process.env.NODE_ENV !== 'production';
|
|
261
|
-
if (typeof header !== 'string' || !header.startsWith('sha256='))
|
|
262
|
-
return false;
|
|
263
|
-
const expected = Buffer.from(createHmac('sha256', secret).update(raw).digest('hex'));
|
|
264
|
-
const got = Buffer.from(header.slice('sha256='.length));
|
|
265
|
-
return got.length === expected.length && timingSafeEqual(got, expected);
|
|
266
|
-
}
|
|
267
475
|
//# sourceMappingURL=host.js.map
|
package/dist/host.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"host.js","sourceRoot":"","sources":["../src/host.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,8 +6,8 @@ export { PRIORITY, inferEventKind, resolveKind } from './inbox.js';
|
|
|
6
6
|
export type { EventKind, IncomingEvent } from './inbox.js';
|
|
7
7
|
export { PolicyGate, evaluateBreaker, qualifiedToolName, sdkToolName, idempotencyKey, RUNTIME_SERVER } from './policy.js';
|
|
8
8
|
export type { GateDecision, GateOptions } from './policy.js';
|
|
9
|
-
export { LongTermStore } from './store/long-term.js';
|
|
10
|
-
export type { ActionRow, ActionMode, ActionStatus, ItemRow, EventRow } from './store/long-term.js';
|
|
9
|
+
export { LongTermStore, CONVERSATION_ROUTINE } from './store/long-term.js';
|
|
10
|
+
export type { ActionRow, ActionMode, ActionStatus, ItemRow, EventRow, ConversationRow, ConversationStatus } from './store/long-term.js';
|
|
11
11
|
export { pgSql, pgliteSql, sqlFromUrl } from './store/sql.js';
|
|
12
12
|
export type { Sql, Queryable } from './store/sql.js';
|
|
13
13
|
export { ShortTermMemory, stableStringify } from './short-term.js';
|
|
@@ -22,8 +22,20 @@ export type { ResolvedSkills } from './plugins.js';
|
|
|
22
22
|
export { systemPrompt, itemPrompt, conversationPrompt, untrusted } from './prompt.js';
|
|
23
23
|
export { runRound, routinesFor } from './round.js';
|
|
24
24
|
export type { RoundReport, RoundDeps } from './round.js';
|
|
25
|
-
export { AgentHost, gatewayExecutor,
|
|
26
|
-
export type { AgentHostOptions, Asker, ToolExecutor } from './host.js';
|
|
25
|
+
export { AgentHost, HostError, gatewayExecutor, DEFAULT_ASK_WAIT_MS, DEFAULT_ASK_LIMITS, THREAD_ID_PATTERN, THREAD_HISTORY_LIMIT } from './host.js';
|
|
26
|
+
export type { AgentHostOptions, Asker, AskResult, ListenOptions, ToolExecutor } from './host.js';
|
|
27
|
+
export { parseEventSecrets, signEvent, verifyEventSignature, SOURCE_HEADER, SIGNATURE_HEADER, SIGNATURE_TOLERANCE_SEC, SOURCE_PATTERN, UNSIGNED_SOURCE, } from './signature.js';
|
|
28
|
+
export type { SignatureCheck, VerifyEventOptions } from './signature.js';
|
|
29
|
+
export { AGENTS_SERVICE_FQN, agentsProtoPath, agentsConnectorHandlers } from './connector.js';
|
|
30
|
+
export type { AgentsConnectorOptions } from './connector.js';
|
|
31
|
+
export { agentsCatalog, agentsCatalogPath, AGENTS_SLUG_PATTERN } from './catalog.js';
|
|
32
|
+
export type { AgentsCatalogOptions } from './catalog.js';
|
|
33
|
+
export { loadAgentEnv, agentSecretVar, GATEWAY_CALL_TIMEOUT_MS, DEFAULT_WAKE_DEBOUNCE_MS } from './env.js';
|
|
34
|
+
export type { AgentEnv } from './env.js';
|
|
35
|
+
export { gatewayWiring } from './wiring.js';
|
|
36
|
+
export type { Wiring } from './wiring.js';
|
|
37
|
+
export { startAgents } from './start.js';
|
|
38
|
+
export type { StartAgentsOptions, StartedAgents } from './start.js';
|
|
27
39
|
export { consoleNotifier, MemoryNotifier } from './notifier.js';
|
|
28
40
|
export type { Notifier, Notice, NoticeKind } from './notifier.js';
|
|
29
41
|
export { loadEvalCases, runEvalCase, runEvals, subsetMatch } from './evals.js';
|
package/dist/index.js
CHANGED
|
@@ -2,7 +2,7 @@ export { loadAgent, loadAgents, validateManifest, semanticProblems, ManifestErro
|
|
|
2
2
|
export { LEVELS, effectiveLevel, breakerTrips, insideWindow, oneBelow, lower } from './levels.js';
|
|
3
3
|
export { PRIORITY, inferEventKind, resolveKind } from './inbox.js';
|
|
4
4
|
export { PolicyGate, evaluateBreaker, qualifiedToolName, sdkToolName, idempotencyKey, RUNTIME_SERVER } from './policy.js';
|
|
5
|
-
export { LongTermStore } from './store/long-term.js';
|
|
5
|
+
export { LongTermStore, CONVERSATION_ROUTINE } from './store/long-term.js';
|
|
6
6
|
export { pgSql, pgliteSql, sqlFromUrl } from './store/sql.js';
|
|
7
7
|
export { ShortTermMemory, stableStringify } from './short-term.js';
|
|
8
8
|
export { GatewayClient, GatewayError, ClientCredentialsTokenSource, StaticTokenSource, } from './gateway.js';
|
|
@@ -11,7 +11,15 @@ export { RuntimeTools } from './runtime-tools.js';
|
|
|
11
11
|
export { resolveSkills } from './plugins.js';
|
|
12
12
|
export { systemPrompt, itemPrompt, conversationPrompt, untrusted } from './prompt.js';
|
|
13
13
|
export { runRound, routinesFor } from './round.js';
|
|
14
|
-
export { AgentHost, gatewayExecutor,
|
|
14
|
+
export { AgentHost, HostError, gatewayExecutor, DEFAULT_ASK_WAIT_MS, DEFAULT_ASK_LIMITS, THREAD_ID_PATTERN, THREAD_HISTORY_LIMIT } from './host.js';
|
|
15
|
+
export { parseEventSecrets, signEvent, verifyEventSignature, SOURCE_HEADER, SIGNATURE_HEADER, SIGNATURE_TOLERANCE_SEC, SOURCE_PATTERN, UNSIGNED_SOURCE, } from './signature.js';
|
|
16
|
+
// O conector agents_<círculo>: contrato, handlers e catálogo base, versionados juntos.
|
|
17
|
+
export { AGENTS_SERVICE_FQN, agentsProtoPath, agentsConnectorHandlers } from './connector.js';
|
|
18
|
+
export { agentsCatalog, agentsCatalogPath, AGENTS_SLUG_PATTERN } from './catalog.js';
|
|
19
|
+
// Ambiente, ligação ao gateway e boot do processo.
|
|
20
|
+
export { loadAgentEnv, agentSecretVar, GATEWAY_CALL_TIMEOUT_MS, DEFAULT_WAKE_DEBOUNCE_MS } from './env.js';
|
|
21
|
+
export { gatewayWiring } from './wiring.js';
|
|
22
|
+
export { startAgents } from './start.js';
|
|
15
23
|
export { consoleNotifier, MemoryNotifier } from './notifier.js';
|
|
16
24
|
export { loadEvalCases, runEvalCase, runEvals, subsetMatch } from './evals.js';
|
|
17
25
|
// Para servir conectores em processo (stubs locais, evals) sem depender do SDK direto.
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGtH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlG,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG1H,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGtH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGlG,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,iBAAiB,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAG1H,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EACL,aAAa,EACb,YAAY,EACZ,4BAA4B,EAC5B,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEzC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE7C,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAEtF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AAGpJ,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAGxB,uFAAuF;AACvF,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAGrF,mDAAmD;AACnD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,UAAU,CAAC;AAE3G,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGzC,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAG/E,uFAAuF;AACvF,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,gCAAgC,CAAC"}
|
package/dist/notifier.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* implementação que posta no canal do time pelo gateway (conector de chat) e avisa o
|
|
4
4
|
* DRI; aqui só a interface e a versão de console.
|
|
5
5
|
*/
|
|
6
|
-
export type NoticeKind = 'proposal' | 'escalation' | 'exception' | 'demotion' | 'kill-switch';
|
|
6
|
+
export type NoticeKind = 'proposal' | 'escalation' | 'exception' | 'demotion' | 'restore' | 'kill-switch' | 'unblock';
|
|
7
7
|
export interface Notice {
|
|
8
8
|
agentId: string;
|
|
9
9
|
kind: NoticeKind;
|
package/dist/policy.js
CHANGED
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
* - se já foi feita (nada se repete);
|
|
9
9
|
* - o que o nível da rotina permite: registrar (shadow), propor (copilot) ou executar
|
|
10
10
|
* (agent, autonomous), com janela e teto por hora;
|
|
11
|
-
* - na conversa, só leitura (com o acesso do próprio agente)
|
|
11
|
+
* - na conversa, só leitura (com o acesso do próprio agente);
|
|
12
|
+
* - bloqueio de emergência e teto de nível valem na hora, também para a rodada ou a
|
|
13
|
+
* conversa que já estava rodando: são relidos do Postgres a cada chamada.
|
|
12
14
|
*
|
|
13
15
|
* O modelo nunca recebe "permissão" para nada fora disso: o runtime liga as ferramentas
|
|
14
16
|
* built-in do Claude Code desligadas e nega o resto aqui.
|
|
@@ -80,6 +82,10 @@ export class PolicyGate {
|
|
|
80
82
|
return this.deny(`Ferramenta "${sdkName}" não está disponível para agentes.`);
|
|
81
83
|
if (parsed.server === RUNTIME_SERVER)
|
|
82
84
|
return { allow: true };
|
|
85
|
+
// Bloqueado no meio do caminho: nada mais sai, nem leitura.
|
|
86
|
+
if (await store.killSwitch(m.id)) {
|
|
87
|
+
return this.deny('Você foi bloqueado por uma pessoa (bloqueio de emergência). Não chame mais nenhuma ferramenta; encerre.');
|
|
88
|
+
}
|
|
83
89
|
const tool = parsed.qualified;
|
|
84
90
|
if (m.guardrails.forbiddenTools.includes(tool)) {
|
|
85
91
|
await this.audit(tool, input, 'denied', 'proibida (segregação de funções)', toolUseId);
|
|
@@ -105,6 +111,11 @@ export class PolicyGate {
|
|
|
105
111
|
return this.deny(`Antes de "${tool}", chame ${RUNTIME_SERVER}.justify com o motivo. Toda ação fica registrada com o motivo.`);
|
|
106
112
|
}
|
|
107
113
|
this.reasons.delete(tool);
|
|
114
|
+
// Uma pessoa pode ter limitado a rotina depois do início da rodada.
|
|
115
|
+
const fresh = await store.levelCaps(m.id);
|
|
116
|
+
this.o.caps.clear();
|
|
117
|
+
for (const [r, c] of fresh)
|
|
118
|
+
this.o.caps.set(r, c);
|
|
108
119
|
let level = this.levelOf(routine);
|
|
109
120
|
let note;
|
|
110
121
|
const spec = m.routines[routine];
|