@t4h/agent-runtime 0.1.1 → 0.3.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.
Files changed (57) hide show
  1. package/README.md +94 -5
  2. package/catalog/agents.catalog.yaml +123 -0
  3. package/dist/brain.d.ts +8 -0
  4. package/dist/brain.js +11 -0
  5. package/dist/brain.js.map +1 -1
  6. package/dist/catalog.d.ts +13 -0
  7. package/dist/catalog.js +39 -0
  8. package/dist/catalog.js.map +1 -0
  9. package/dist/cli.js +33 -8
  10. package/dist/cli.js.map +1 -1
  11. package/dist/connector.d.ts +13 -0
  12. package/dist/connector.js +208 -0
  13. package/dist/connector.js.map +1 -0
  14. package/dist/env.d.ts +59 -0
  15. package/dist/env.js +138 -0
  16. package/dist/env.js.map +1 -0
  17. package/dist/evals.js +1 -1
  18. package/dist/gateway.d.ts +5 -1
  19. package/dist/gateway.js +4 -2
  20. package/dist/gateway.js.map +1 -1
  21. package/dist/host.d.ts +111 -13
  22. package/dist/host.js +251 -43
  23. package/dist/host.js.map +1 -1
  24. package/dist/index.d.ts +18 -4
  25. package/dist/index.js +11 -2
  26. package/dist/index.js.map +1 -1
  27. package/dist/model-auth.d.ts +83 -0
  28. package/dist/model-auth.js +231 -0
  29. package/dist/model-auth.js.map +1 -0
  30. package/dist/notifier.d.ts +1 -1
  31. package/dist/policy.js +12 -1
  32. package/dist/policy.js.map +1 -1
  33. package/dist/prompt.d.ts +8 -0
  34. package/dist/prompt.js +10 -3
  35. package/dist/prompt.js.map +1 -1
  36. package/dist/round.js +2 -1
  37. package/dist/round.js.map +1 -1
  38. package/dist/runtime-tools.d.ts +1 -1
  39. package/dist/runtime-tools.js +3 -3
  40. package/dist/runtime-tools.js.map +1 -1
  41. package/dist/signature.d.ts +34 -0
  42. package/dist/signature.js +87 -0
  43. package/dist/signature.js.map +1 -0
  44. package/dist/start.d.ts +31 -0
  45. package/dist/start.js +110 -0
  46. package/dist/start.js.map +1 -0
  47. package/dist/store/long-term.d.ts +63 -3
  48. package/dist/store/long-term.js +71 -11
  49. package/dist/store/long-term.js.map +1 -1
  50. package/dist/store/migrations.d.ts +1 -1
  51. package/dist/store/migrations.js +24 -0
  52. package/dist/store/migrations.js.map +1 -1
  53. package/dist/wiring.d.ts +11 -0
  54. package/dist/wiring.js +32 -0
  55. package/dist/wiring.js.map +1 -0
  56. package/package.json +13 -6
  57. package/proto/t4h/agents/v1/agents.proto +176 -0
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../src/prompt.ts"],"names":[],"mappings":"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"}
package/dist/round.js CHANGED
@@ -33,7 +33,8 @@ export async function runRound(d) {
33
33
  let roundId;
34
34
  let roundError;
35
35
  try {
36
- const batch = await d.store.leaseBatch(m.id, m.limits.itemsPerRound);
36
+ // Mesmo prazo do lock: item `working` mais velho que isso ficou de uma rodada que caiu.
37
+ const batch = await d.store.leaseBatch(m.id, m.limits.itemsPerRound, m.limits.roundTimeoutSec + 60);
37
38
  if (!batch.length)
38
39
  return { ...report, skipped: 'empty' };
39
40
  roundId = await d.store.startRound(m.id);
package/dist/round.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"round.js","sourceRoot":"","sources":["../src/round.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"round.js","sourceRoot":"","sources":["../src/round.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ import type { LoadedAgent } from './manifest.js';
10
10
  import type { Notifier } from './notifier.js';
11
11
  import { type PolicyGate } from './policy.js';
12
12
  import type { ShortTermMemory } from './short-term.js';
13
- import type { LongTermStore } from './store/long-term.js';
13
+ import { type LongTermStore } from './store/long-term.js';
14
14
  export interface ItemOutcome {
15
15
  status: 'done' | 'waiting';
16
16
  summary: string;
@@ -8,6 +8,7 @@
8
8
  import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
9
9
  import { z } from 'zod';
10
10
  import { RUNTIME_SERVER } from './policy.js';
11
+ import { CONVERSATION_ROUTINE } from './store/long-term.js';
11
12
  const text = (t, isError = false) => ({ content: [{ type: 'text', text: t }], ...(isError ? { isError } : {}) });
12
13
  /** Estado das ferramentas para um item (ou uma conversa). */
13
14
  export class RuntimeTools {
@@ -67,11 +68,10 @@ export class RuntimeTools {
67
68
  history: async (a) => {
68
69
  const rows = await this.d.store.history(this.d.agent.manifest.id, {
69
70
  ...(a.subject ? { subject: a.subject } : {}),
71
+ excludeRoutine: CONVERSATION_ROUTINE,
70
72
  limit: Math.min(a.limit ?? 20, 50),
71
73
  });
72
- const lines = rows
73
- .filter((r) => r.routine !== '_conversation')
74
- .map((r) => `#${r.id} ${new Date(r.created_at).toISOString().slice(0, 16)} ${r.subject ?? '-'} ${r.tool} (${r.mode}, ${r.status})${r.reason ? ` motivo: ${r.reason}` : ''}${r.decided_by ? ` ${r.status === 'corrected' ? 'corrigida' : r.status === 'rejected' ? 'recusada' : 'aprovada'} por ${r.decided_by}` : ''}${r.note ? ` nota: ${r.note}` : ''}`);
74
+ const lines = rows.map((r) => `#${r.id} ${new Date(r.created_at).toISOString().slice(0, 16)} ${r.subject ?? '-'} ${r.tool} (${r.mode}, ${r.status})${r.reason ? ` motivo: ${r.reason}` : ''}${r.decided_by ? ` ${r.status === 'corrected' ? 'corrigida' : r.status === 'rejected' ? 'recusada' : 'aprovada'} por ${r.decided_by}` : ''}${r.note ? ` nota: ${r.note}` : ''}`);
75
75
  return text(lines.length ? lines.join('\n') : 'Nenhuma ação registrada.');
76
76
  },
77
77
  ask_agent: async (a) => {
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-tools.js","sourceRoot":"","sources":["../src/runtime-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-tools.js","sourceRoot":"","sources":["../src/runtime-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare const SOURCE_HEADER = "x-t4h-source";
2
+ export declare const SIGNATURE_HEADER = "x-t4h-signature";
3
+ export declare const SIGNATURE_TOLERANCE_SEC = 300;
4
+ /** Fonte do evento: vira prefixo do `source_id` (dedup por fonte) e coluna `source`. */
5
+ export declare const SOURCE_PATTERN: RegExp;
6
+ /** Fonte usada fora de produção quando não há segredo nem header de fonte. */
7
+ export declare const UNSIGNED_SOURCE = "local";
8
+ /**
9
+ * `fonte1=segredo1,fonte2=segredo2`. Entrada malformada falha (fail-fast no boot). A
10
+ * mensagem de erro vai para o log: diz a posição e, se for válido, o nome da fonte, nunca
11
+ * o conteúdo da entrada (que pode ser só o segredo, colado sem `fonte=`).
12
+ */
13
+ export declare function parseEventSecrets(raw: string | undefined): Map<string, string>;
14
+ /** Monta o header `x-t4h-signature` (para quem envia e para testes). */
15
+ export declare function signEvent(secret: string, rawBody: string, t?: number): string;
16
+ export type SignatureCheck = {
17
+ ok: true;
18
+ source: string;
19
+ } | {
20
+ ok: false;
21
+ reason: string;
22
+ };
23
+ export interface VerifyEventOptions {
24
+ raw: string;
25
+ source: string | string[] | undefined;
26
+ signature: string | string[] | undefined;
27
+ secrets: ReadonlyMap<string, string>;
28
+ /** Sem segredos, só aceita sem assinatura fora de produção. */
29
+ production: boolean;
30
+ /** Unix em segundos. Padrão: agora. */
31
+ now?: number;
32
+ toleranceSec?: number;
33
+ }
34
+ export declare function verifyEventSignature(o: VerifyEventOptions): SignatureCheck;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Assinatura dos eventos que chegam pelo webhook.
3
+ *
4
+ * x-t4h-source: <fonte>
5
+ * x-t4h-signature: t=<unix s>,v1=<hex>
6
+ * v1 = HMAC-SHA256(segredo da fonte, "<t>.<corpo cru>")
7
+ *
8
+ * Cada fonte tem o próprio segredo (`EVENTS_HMAC_SECRETS="fonte1=s1,fonte2=s2"`): vazou um,
9
+ * troca um. O `t` entra no HMAC e tem tolerância de 5 minutos, para um evento capturado
10
+ * não ser reenviado depois. Mais de um `v1` no header vale (troca de segredo sem janela).
11
+ */
12
+ import { createHmac, timingSafeEqual } from 'node:crypto';
13
+ export const SOURCE_HEADER = 'x-t4h-source';
14
+ export const SIGNATURE_HEADER = 'x-t4h-signature';
15
+ export const SIGNATURE_TOLERANCE_SEC = 300;
16
+ /** Fonte do evento: vira prefixo do `source_id` (dedup por fonte) e coluna `source`. */
17
+ export const SOURCE_PATTERN = /^[a-z0-9][a-z0-9_.-]{0,63}$/;
18
+ /** Fonte usada fora de produção quando não há segredo nem header de fonte. */
19
+ export const UNSIGNED_SOURCE = 'local';
20
+ /**
21
+ * `fonte1=segredo1,fonte2=segredo2`. Entrada malformada falha (fail-fast no boot). A
22
+ * mensagem de erro vai para o log: diz a posição e, se for válido, o nome da fonte, nunca
23
+ * o conteúdo da entrada (que pode ser só o segredo, colado sem `fonte=`).
24
+ */
25
+ export function parseEventSecrets(raw) {
26
+ const out = new Map();
27
+ let position = 0;
28
+ for (const part of (raw ?? '').split(',')) {
29
+ const entry = part.trim();
30
+ if (!entry)
31
+ continue;
32
+ position++;
33
+ const eq = entry.indexOf('=');
34
+ const source = eq > 0 ? entry.slice(0, eq).trim() : '';
35
+ const secret = eq > 0 ? entry.slice(eq + 1).trim() : '';
36
+ if (!SOURCE_PATTERN.test(source) || !secret) {
37
+ const which = SOURCE_PATTERN.test(source) ? ` (fonte "${source}" sem segredo)` : '';
38
+ throw new Error(`EVENTS_HMAC_SECRETS: entrada #${position} inválida${which}: use fonte=segredo, fonte em ${SOURCE_PATTERN}`);
39
+ }
40
+ if (out.has(source))
41
+ throw new Error(`EVENTS_HMAC_SECRETS: fonte "${source}" repetida`);
42
+ out.set(source, secret);
43
+ }
44
+ return out;
45
+ }
46
+ /** Monta o header `x-t4h-signature` (para quem envia e para testes). */
47
+ export function signEvent(secret, rawBody, t = Math.floor(Date.now() / 1000)) {
48
+ return `t=${t},v1=${createHmac('sha256', secret).update(`${t}.${rawBody}`).digest('hex')}`;
49
+ }
50
+ export function verifyEventSignature(o) {
51
+ const source = typeof o.source === 'string' ? o.source.trim() : undefined;
52
+ if (source !== undefined && !SOURCE_PATTERN.test(source))
53
+ return { ok: false, reason: 'fonte inválida' };
54
+ if (o.secrets.size === 0) {
55
+ if (o.production)
56
+ return { ok: false, reason: 'sem segredo configurado' };
57
+ return { ok: true, source: source || UNSIGNED_SOURCE };
58
+ }
59
+ if (!source)
60
+ return { ok: false, reason: `falta o header ${SOURCE_HEADER}` };
61
+ const secret = o.secrets.get(source);
62
+ if (!secret)
63
+ return { ok: false, reason: 'fonte desconhecida' };
64
+ if (typeof o.signature !== 'string')
65
+ return { ok: false, reason: 'sem assinatura' };
66
+ let t;
67
+ const v1 = [];
68
+ for (const part of o.signature.split(',')) {
69
+ const [k, v] = part.trim().split('=', 2);
70
+ if (k === 't' && v && /^\d{1,12}$/.test(v))
71
+ t = Number(v);
72
+ else if (k === 'v1' && v && /^[0-9a-f]{64}$/.test(v))
73
+ v1.push(v);
74
+ }
75
+ if (t === undefined || !v1.length)
76
+ return { ok: false, reason: 'assinatura malformada' };
77
+ const now = o.now ?? Math.floor(Date.now() / 1000);
78
+ if (Math.abs(now - t) > (o.toleranceSec ?? SIGNATURE_TOLERANCE_SEC))
79
+ return { ok: false, reason: 'assinatura fora da janela de tempo' };
80
+ const expected = Buffer.from(createHmac('sha256', secret).update(`${t}.${o.raw}`).digest('hex'));
81
+ // Compara todos, sem sair no primeiro: o tempo não diz qual candidato chegou perto.
82
+ let match = false;
83
+ for (const candidate of v1)
84
+ match = timingSafeEqual(Buffer.from(candidate), expected) || match;
85
+ return match ? { ok: true, source } : { ok: false, reason: 'assinatura não confere' };
86
+ }
87
+ //# sourceMappingURL=signature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../src/signature.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type Brain } from './brain.js';
2
+ import { type AgentEnv } from './env.js';
3
+ import { AgentHost } from './host.js';
4
+ import { type Notifier } from './notifier.js';
5
+ import { type Wiring } from './wiring.js';
6
+ export interface StartAgentsOptions {
7
+ agentsDir: string;
8
+ pluginsDir?: string;
9
+ /** Substitui o gateway (modo local, stub). Em produção, recusado: tudo passa pelo gateway. */
10
+ wiring?: Wiring;
11
+ notifier?: Notifier;
12
+ brain?: Brain;
13
+ /** Padrão: `process.env`. */
14
+ env?: NodeJS.ProcessEnv;
15
+ /** Liga SIGINT/SIGTERM ao `stop()` e sai do processo no fim. Padrão: true. */
16
+ handleSignals?: boolean;
17
+ /**
18
+ * O conector recusa passaporte sem vínculo com a chamada. Padrão: o ambiente
19
+ * (`PROVIDER_REQUIRE_CALL_BINDING=1`); desligado, como no SDK de providers.
20
+ */
21
+ requireCallBinding?: boolean;
22
+ }
23
+ export interface StartedAgents {
24
+ host: AgentHost;
25
+ env: AgentEnv;
26
+ eventsPort: number;
27
+ /** Porta do conector gRPC, se ele subiu. */
28
+ connectorPort?: number;
29
+ stop(): Promise<void>;
30
+ }
31
+ export declare function startAgents(opts: StartAgentsOptions): Promise<StartedAgents>;
package/dist/start.js ADDED
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Boot de um repositório de agentes: um processo com todos os agentes da pasta.
3
+ *
4
+ * - ambiente validado no boot (`loadAgentEnv`);
5
+ * - Postgres (PGlite fora de produção) com as migrações;
6
+ * - entrada de eventos por webhook assinado (EVENTS_PORT, padrão 8080);
7
+ * - despertar por evento novo, cron de cada agente e agenda das rotinas;
8
+ * - o conector `agents_<círculo>` para o gateway (gRPC, PORT, padrão 50051);
9
+ * - SIGINT/SIGTERM param na ordem: conector, entrada, conversas e rodadas em andamento,
10
+ * banco.
11
+ *
12
+ * O entrypoint do repositório do círculo fica com poucas linhas: `startAgents({ agentsDir })`.
13
+ */
14
+ import { createProviderServer, loadProviderContract } from '@t4h/mcp-provider-sdk';
15
+ import { ClaudeBrain } from './brain.js';
16
+ import { modelAuthFromEnv } from './model-auth.js';
17
+ import { agentsConnectorHandlers, agentsProtoPath, AGENTS_SERVICE_FQN } from './connector.js';
18
+ import { loadAgentEnv } from './env.js';
19
+ import { AgentHost } from './host.js';
20
+ import { loadAgents } from './manifest.js';
21
+ import { consoleNotifier } from './notifier.js';
22
+ import { LongTermStore } from './store/long-term.js';
23
+ import { sqlFromUrl } from './store/sql.js';
24
+ import { gatewayWiring } from './wiring.js';
25
+ export async function startAgents(opts) {
26
+ const agents = loadAgents(opts.agentsDir);
27
+ const env = loadAgentEnv(agents, opts.env ?? process.env);
28
+ if (env.isProduction && opts.wiring)
29
+ throw new Error('wiring próprio não vale em produção: os agentes usam os sistemas só pelo gateway');
30
+ if (!opts.wiring && !env.gateway)
31
+ throw new Error('sem GATEWAY_URL: defina o gateway ou passe um wiring local (stub)');
32
+ const wiring = opts.wiring ?? gatewayWiring(agents, env);
33
+ // Sem notificador, bloqueio, rebaixamento e proposta só aparecem no stdout.
34
+ if (env.isProduction && !opts.notifier) {
35
+ console.warn('notifier: nenhum notificador configurado; avisos de bloqueio, rebaixamento, proposta e exceção só vão para o stdout. Passe `notifier` no startAgents.');
36
+ }
37
+ const store = new LongTermStore(await sqlFromUrl(env.databaseUrl));
38
+ await store.migrate();
39
+ const host = new AgentHost({
40
+ agents,
41
+ store,
42
+ brain: opts.brain ?? new ClaudeBrain({ debug: env.debug, modelAuth: modelAuthFromEnv(opts.env ?? process.env) ?? null }),
43
+ notifier: opts.notifier ?? consoleNotifier,
44
+ ...(opts.pluginsDir ? { pluginsDir: opts.pluginsDir } : {}),
45
+ askWaitMs: env.askWaitMs,
46
+ wakeDebounceMs: env.events.wakeDebounceMs,
47
+ ...wiring,
48
+ });
49
+ let provider;
50
+ let connectorPort;
51
+ let eventsPort;
52
+ try {
53
+ eventsPort = await host.listen(env.events.port, {
54
+ secrets: env.events.secrets,
55
+ allowManualRounds: env.events.allowManualRounds,
56
+ production: env.isProduction,
57
+ });
58
+ host.startSchedules((id, r) => {
59
+ if (!r.skipped)
60
+ console.info(JSON.stringify({ round: { agent: id, ...r } }));
61
+ });
62
+ if (env.connector) {
63
+ provider = await createProviderServer({
64
+ handlers: agentsConnectorHandlers(host),
65
+ contract: await loadProviderContract(agentsProtoPath(), AGENTS_SERVICE_FQN),
66
+ passport: env.connector.passport,
67
+ ...(env.connector.tls ? { tls: env.connector.tls } : {}),
68
+ isProduction: env.isProduction,
69
+ requireCallBinding: opts.requireCallBinding ?? env.requireCallBinding,
70
+ onAudit: (event) => console.info(JSON.stringify({ audit: event })),
71
+ });
72
+ connectorPort = await provider.listen(`0.0.0.0:${env.connector.port}`);
73
+ }
74
+ else {
75
+ console.warn('conector de agentes desligado: sem GATEWAY_JWKS_URL/SERVICE_JWT_PUBLIC_KEY (só fora de produção)');
76
+ }
77
+ }
78
+ catch (e) {
79
+ await host.stop(0).catch(() => { });
80
+ await store.close().catch(() => { });
81
+ throw e;
82
+ }
83
+ console.info(`agentes: ${agents.map((a) => a.manifest.id).join(', ')} · eventos em :${eventsPort}` +
84
+ (connectorPort !== undefined ? ` · conector (gRPC) em :${connectorPort}` : ''));
85
+ let stopping;
86
+ const stop = () => (stopping ??= (async () => {
87
+ // Primeiro o conector: para de aceitar chamadas e drena as que estão no meio (uma
88
+ // pergunta espera até askWaitMs). Depois a entrada do host (webhook, cron, novas
89
+ // perguntas) e as conversas e rodadas em andamento. Por último o banco, que elas
90
+ // ainda usam para gravar o resultado.
91
+ await provider?.shutdown();
92
+ await host.stop();
93
+ await store.close();
94
+ })());
95
+ if (opts.handleSignals ?? true) {
96
+ for (const signal of ['SIGINT', 'SIGTERM']) {
97
+ process.once(signal, () => {
98
+ console.info(`${signal}: encerrando`);
99
+ // Segundo sinal durante o encerramento: sai na hora.
100
+ process.once(signal, () => process.exit(1));
101
+ stop().then(() => process.exit(0), (e) => {
102
+ console.error(e);
103
+ process.exit(1);
104
+ });
105
+ });
106
+ }
107
+ }
108
+ return { host, env, eventsPort, ...(connectorPort !== undefined ? { connectorPort } : {}), stop };
109
+ }
110
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
@@ -47,21 +47,46 @@ export interface ActionRow {
47
47
  created_at: string;
48
48
  subject?: string | null;
49
49
  }
50
+ /** Rotina com que o host registra cada conversa: guarda quem perguntou o quê. */
51
+ export declare const CONVERSATION_ROUTINE = "_conversation";
52
+ export type ConversationStatus = 'running' | 'done' | 'error';
53
+ export interface ConversationRow {
54
+ id: string;
55
+ agent_id: string;
56
+ asker: string;
57
+ asker_kind: 'person' | 'agent';
58
+ thread_id: string;
59
+ message: string;
60
+ status: ConversationStatus;
61
+ answer: string | null;
62
+ error: string | null;
63
+ cost_usd: number | null;
64
+ created_at: string;
65
+ finished_at: string | null;
66
+ }
50
67
  export declare class LongTermStore {
51
68
  private readonly sql;
52
69
  constructor(sql: Sql);
53
70
  migrate(): Promise<void>;
54
71
  close(): Promise<void>;
55
- /** Grava o evento e junta no item aberto do mesmo assunto. Repetido não entra. */
56
- enqueue(agentId: string, ev: IncomingEvent, kind: EventKind): Promise<{
72
+ /**
73
+ * Grava o evento e junta no item aberto do mesmo assunto. Repetido não entra. Com
74
+ * `source` (a fonte do webhook), o id na origem vira `<fonte>:<id>`: duas fontes podem
75
+ * usar o mesmo id sem uma descartar o evento da outra.
76
+ */
77
+ enqueue(agentId: string, ev: IncomingEvent, kind: EventKind, source?: string): Promise<{
57
78
  itemId: number | null;
58
79
  duplicate: boolean;
59
80
  }>;
60
81
  /**
61
82
  * Pega o próximo lote na ordem de prioridade. `SKIP LOCKED` deixa duas réplicas
62
83
  * dividirem a fila sem pegar o mesmo item; o lock da rodada já evita isso no caso comum.
84
+ *
85
+ * Item `working` há mais de `staleAfterSec` também entra: a rodada que o pegou não
86
+ * terminou (a réplica caiu, o deploy derrubou o processo) e ninguém mais vai fechá-lo.
87
+ * Quem chama passa o mesmo prazo do lock da rodada, que já venceu nesse caso.
63
88
  */
64
- leaseBatch(agentId: string, limit: number): Promise<Array<ItemRow & {
89
+ leaseBatch(agentId: string, limit: number, staleAfterSec?: number): Promise<Array<ItemRow & {
65
90
  events: EventRow[];
66
91
  }>>;
67
92
  /**
@@ -114,10 +139,12 @@ export declare class LongTermStore {
114
139
  executedSince(agentId: string, routine: string, since: Date): Promise<number>;
115
140
  /** Desfechos das execuções mais recentes da rotina, mais novo primeiro. */
116
141
  recentOutcomes(agentId: string, routine: string, n: number): Promise<OutcomeStatus[]>;
142
+ /** `excludeRoutine`: deixa de fora uma rotina (ex.: `_conversation`, que guarda quem perguntou o quê). */
117
143
  history(agentId: string, opts?: {
118
144
  subject?: string;
119
145
  status?: ActionStatus;
120
146
  mode?: ActionMode;
147
+ excludeRoutine?: string;
121
148
  limit?: number;
122
149
  }): Promise<ActionRow[]>;
123
150
  levelCaps(agentId: string): Promise<Map<string, {
@@ -127,6 +154,39 @@ export declare class LongTermStore {
127
154
  setLevelCap(agentId: string, routine: string, cap: EffectiveLevel, reason: string): Promise<void>;
128
155
  /** Volta a valer o nível do manifesto (decisão de pessoa, depois de tratar a causa). */
129
156
  clearLevelCap(agentId: string, routine: string): Promise<void>;
157
+ startConversation(c: {
158
+ id: string;
159
+ agentId: string;
160
+ asker: string;
161
+ askerKind: 'person' | 'agent';
162
+ threadId: string;
163
+ message: string;
164
+ }): Promise<void>;
165
+ /** Fecha a conversa. Só uma `running`: a que já foi dada como interrompida fica assim. */
166
+ finishConversation(id: string, r: {
167
+ status: 'done' | 'error';
168
+ answer?: string;
169
+ error?: string;
170
+ costUsd?: number;
171
+ }): Promise<void>;
172
+ /**
173
+ * As últimas trocas terminadas de um fio, mais antiga primeiro. Só as do mesmo agente e
174
+ * de quem pergunta: o fio de uma pessoa nunca aparece para outra.
175
+ */
176
+ threadHistory(agentId: string, threadId: string, asker: string, limit: number): Promise<Array<Pick<ConversationRow, 'message' | 'answer'>>>;
177
+ /**
178
+ * Conversas ainda rodando com este agente (de todas as réplicas), no total e de quem
179
+ * pergunta. A `running` mais velha que `staleAfterSec` não conta: a réplica caiu.
180
+ */
181
+ runningConversations(agentId: string, asker: string, staleAfterSec: number): Promise<{
182
+ total: number;
183
+ mine: number;
184
+ }>;
185
+ /**
186
+ * Lê a conversa. A `running` mais velha que `staleAfterSec` vira erro: a réplica que
187
+ * rodava caiu no meio, e ninguém mais vai fechar essa linha.
188
+ */
189
+ getConversation(id: string, staleAfterSec?: number): Promise<ConversationRow | undefined>;
130
190
  killSwitch(agentId: string): Promise<{
131
191
  reason: string;
132
192
  set_by: string;