@rodrigobeber/patoai-dtos 4.8.19 → 4.8.21
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/dist/ai/text/response-create.dto.d.ts +21 -0
- package/dist/support/index.d.ts +1 -0
- package/dist/support/index.js +1 -0
- package/dist/support/lab-action-catalog.d.ts +40 -0
- package/dist/support/lab-action-catalog.js +70 -0
- package/dist/support/support-lab-ask.dto.d.ts +16 -6
- package/package.json +1 -1
|
@@ -2,11 +2,25 @@ import { AIFunctionCallItem, AIFunctionCallOutput, AITextConfig, AITool } from "
|
|
|
2
2
|
import { InputMessageDto } from "./input-message.dto";
|
|
3
3
|
import { ProviderDto } from "../core/provider.dto";
|
|
4
4
|
export type AIConversationTurn = AIFunctionCallItem | AIFunctionCallOutput;
|
|
5
|
+
/**
|
|
6
|
+
* Pedaco do prompt de sistema com controle proprio de cache (Anthropic; achatado em string unica pelos
|
|
7
|
+
* demais providers). Existe porque `instructions` e UM bloco so: com estavel e volatil no mesmo texto,
|
|
8
|
+
* qualquer parte que mude por pergunta reescreve o prefixo inteiro e nada do prompt cacheia.
|
|
9
|
+
* A ORDEM do array e a ordem no prompt — estavel primeiro, volatil depois.
|
|
10
|
+
*/
|
|
11
|
+
export interface AIInstructionBlock {
|
|
12
|
+
text: string;
|
|
13
|
+
cacheable?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** 1h custa 2x na escrita (contra 1,25x de 5m) — so compensa em prefixo global/de trafego esparso. */
|
|
16
|
+
export type AICacheTtl = '5m' | '1h';
|
|
5
17
|
export interface ResponseCreateDto {
|
|
6
18
|
provider: ProviderDto;
|
|
7
19
|
model: string;
|
|
8
20
|
background: boolean;
|
|
9
21
|
instructions: string;
|
|
22
|
+
/** Vence `instructions` quando presente (que segue como caminho unico dos demais consumidores). */
|
|
23
|
+
instructionBlocks?: AIInstructionBlock[];
|
|
10
24
|
messages: InputMessageDto[];
|
|
11
25
|
toolOutputs: AIFunctionCallOutput[];
|
|
12
26
|
turns?: AIConversationTurn[];
|
|
@@ -18,6 +32,13 @@ export interface ResponseCreateDto {
|
|
|
18
32
|
tools: AITool[];
|
|
19
33
|
userId: string;
|
|
20
34
|
cacheKey?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Fecha um breakpoint no FIM das mensagens (depois dos `turns`), avancando a cada ida do tool loop.
|
|
37
|
+
* Sem ele, historico + bloco volatil + turns anteriores sao reenviados a 1x em TODA ida — o custo
|
|
38
|
+
* de um agente com ferramentas e dominado por essa reemissao, nao pelo prefixo.
|
|
39
|
+
*/
|
|
40
|
+
cacheTurns?: boolean;
|
|
41
|
+
cacheTtl?: AICacheTtl;
|
|
21
42
|
previousResponseId?: string;
|
|
22
43
|
includeFileSearchResults?: boolean;
|
|
23
44
|
skipSanitize?: boolean;
|
package/dist/support/index.d.ts
CHANGED
package/dist/support/index.js
CHANGED
|
@@ -30,3 +30,4 @@ __exportStar(require("./support-insight-access.dto"), exports);
|
|
|
30
30
|
__exportStar(require("./support-agent-balance.dto"), exports);
|
|
31
31
|
__exportStar(require("./support-lab-session.dto"), exports);
|
|
32
32
|
__exportStar(require("./support-lab-onboarding.dto"), exports);
|
|
33
|
+
__exportStar(require("./lab-action-catalog"), exports);
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Como o DIÁLOGO renderiza a proposta (é o que decide se um leigo entende o que vai mudar). */
|
|
2
|
+
export type LabActionRender = 'text' | // diff antes/depois (roteiro, contexto — campos longos)
|
|
3
|
+
'field' | // tabela "Antes -> Depois" com rótulo em pt-BR (liga/desliga, número, enum, horário)
|
|
4
|
+
'item';
|
|
5
|
+
export type LabActionParamKind = 'text' | 'boolean' | 'number' | 'enum' | 'time';
|
|
6
|
+
export interface LabActionOption {
|
|
7
|
+
value: string | number;
|
|
8
|
+
label: string;
|
|
9
|
+
}
|
|
10
|
+
export interface LabActionParam {
|
|
11
|
+
name: string;
|
|
12
|
+
kind: LabActionParamKind;
|
|
13
|
+
label: string;
|
|
14
|
+
description: string;
|
|
15
|
+
required?: boolean;
|
|
16
|
+
/** Identifica QUAL item/campo a ação altera (ex.: idPrompt). Compõe a chave anti-duplicata. */
|
|
17
|
+
identity?: boolean;
|
|
18
|
+
min?: number;
|
|
19
|
+
max?: number;
|
|
20
|
+
unit?: string;
|
|
21
|
+
options?: LabActionOption[];
|
|
22
|
+
}
|
|
23
|
+
export interface LabAction {
|
|
24
|
+
id: string;
|
|
25
|
+
op: 'update' | 'create';
|
|
26
|
+
render: LabActionRender;
|
|
27
|
+
title: string;
|
|
28
|
+
path: string;
|
|
29
|
+
summary: string;
|
|
30
|
+
params: LabActionParam[];
|
|
31
|
+
undoHint: string;
|
|
32
|
+
}
|
|
33
|
+
/** Uma linha "Antes -> Depois" já formatada em pt-BR (render 'field' e 'item'). */
|
|
34
|
+
export interface LabProposalChangeDto {
|
|
35
|
+
label: string;
|
|
36
|
+
before: string;
|
|
37
|
+
after: string;
|
|
38
|
+
}
|
|
39
|
+
export declare const LAB_ACTIONS: LabAction[];
|
|
40
|
+
export declare function findLabAction(id: string): LabAction | undefined;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// CATÁLOGO DE AÇÕES da Oráculo (Laboratório) — fonte única, consumida pelos DOIS lados:
|
|
3
|
+
// `patoai-support` renderiza o índice no prompt, valida o que o modelo pediu e materializa a proposta;
|
|
4
|
+
// `patoai-frontend` mapeia cada `id` para {ler valor atual, aplicar} e escolhe o formato do diálogo.
|
|
5
|
+
//
|
|
6
|
+
// Por que um catálogo em vez de um alvo por vez: o painel tem 176 endpoints de escrita e quase tudo é
|
|
7
|
+
// ESTRUTURADO (liga/desliga, número, enum, item de lista). Sem uma declaração comum, cada alvo novo
|
|
8
|
+
// reescreveria DTO, diálogo e persona. Aqui, alvo novo = 1 entrada aqui + 1 linha no registro do
|
|
9
|
+
// frontend. O modelo continua com UMA tool genérica (`propose_change`) — tool nova encareceria toda
|
|
10
|
+
// chamada da Oráculo, porque schema de tool entra no prefixo cacheado.
|
|
11
|
+
//
|
|
12
|
+
// A IA NUNCA aplica: a proposta é um formulário pré-preenchido e quem aplica é o usuário, pelo diálogo,
|
|
13
|
+
// no endpoint REST normal — com o guard que já existe. Por isso não há `delete` no catálogo: sem
|
|
14
|
+
// exclusão não existe perda de dado possível por sugestão de IA.
|
|
15
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
+
exports.LAB_ACTIONS = void 0;
|
|
17
|
+
exports.findLabAction = findLabAction;
|
|
18
|
+
const CONTEXT_FIELDS = [
|
|
19
|
+
{ value: 'about', label: 'Sobre a empresa/oferta' },
|
|
20
|
+
{ value: 'role', label: 'Papel do agente' },
|
|
21
|
+
{ value: 'audience', label: 'Público-alvo' },
|
|
22
|
+
{ value: 'behavior', label: 'Comportamento/tom' },
|
|
23
|
+
];
|
|
24
|
+
exports.LAB_ACTIONS = [
|
|
25
|
+
{
|
|
26
|
+
id: 'prompt.update',
|
|
27
|
+
op: 'update',
|
|
28
|
+
render: 'text',
|
|
29
|
+
title: 'Roteiro',
|
|
30
|
+
path: 'Configurações → Agente → Prompts',
|
|
31
|
+
summary: 'Reescrever o texto de um roteiro do agente (informe o id do roteiro).',
|
|
32
|
+
undoHint: 'Configurações → Agente → Prompts: o roteiro tem histórico e dá para restaurar a versão anterior.',
|
|
33
|
+
params: [
|
|
34
|
+
{
|
|
35
|
+
name: 'idPrompt', kind: 'number', identity: true, required: true,
|
|
36
|
+
label: 'Roteiro',
|
|
37
|
+
description: 'Id do roteiro a alterar — o número entre colchetes no ÍNDICE dos roteiros.',
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: 'proposedText', kind: 'text', required: true,
|
|
41
|
+
label: 'Texto do roteiro',
|
|
42
|
+
description: 'O texto INTEGRAL novo do roteiro (como deve ficar por completo, não um trecho nem instruções).',
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'context.update',
|
|
48
|
+
op: 'update',
|
|
49
|
+
render: 'text',
|
|
50
|
+
title: 'Contexto básico',
|
|
51
|
+
path: 'Configurações → Agente → Contexto Básico',
|
|
52
|
+
summary: 'Reescrever um campo do contexto básico (sobre, papel, público ou comportamento).',
|
|
53
|
+
undoHint: 'Configurações → Agente → Contexto Básico: dá para editar o campo de novo a qualquer momento.',
|
|
54
|
+
params: [
|
|
55
|
+
{
|
|
56
|
+
name: 'field', kind: 'enum', identity: true, required: true, options: CONTEXT_FIELDS,
|
|
57
|
+
label: 'Campo',
|
|
58
|
+
description: 'Qual campo do contexto básico alterar.',
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
name: 'proposedText', kind: 'text', required: true,
|
|
62
|
+
label: 'Texto do campo',
|
|
63
|
+
description: 'O texto INTEGRAL novo do campo (como deve ficar por completo).',
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
function findLabAction(id) {
|
|
69
|
+
return exports.LAB_ACTIONS.find(a => a.id === id);
|
|
70
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { SupportMessageDto } from "./support-message.dto";
|
|
2
2
|
import { SupportAgentBalanceDto } from "./support-agent-balance.dto";
|
|
3
3
|
import { SupportLabPendingAnalysisDto } from "./support-lab-analyze.dto";
|
|
4
|
+
import { LabActionRender, LabProposalChangeDto } from "./lab-action-catalog";
|
|
4
5
|
export interface SupportLabFocusDto {
|
|
5
6
|
idStage?: number;
|
|
6
7
|
runType?: string;
|
|
@@ -18,14 +19,23 @@ export interface SupportLabAskDto {
|
|
|
18
19
|
}
|
|
19
20
|
export interface SupportLabProposalDto {
|
|
20
21
|
id: string;
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
idPrompt?: number;
|
|
24
|
-
kind: 'markdown' | 'spin-yaml';
|
|
22
|
+
actionId: string;
|
|
23
|
+
render: LabActionRender;
|
|
25
24
|
title: string;
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
path: string;
|
|
26
|
+
params: Record<string, unknown>;
|
|
28
27
|
rationale: string;
|
|
28
|
+
undoHint: string;
|
|
29
|
+
kind?: 'markdown' | 'spin-yaml';
|
|
30
|
+
baseText?: string;
|
|
31
|
+
proposedText?: string;
|
|
32
|
+
changes?: LabProposalChangeDto[];
|
|
33
|
+
/** @deprecated compat 1 deploy (frontend antigo lê estes); use `actionId` + `params`. */
|
|
34
|
+
target?: 'context' | 'prompt';
|
|
35
|
+
/** @deprecated compat 1 deploy; use `params.field`. */
|
|
36
|
+
field?: 'about' | 'role' | 'audience' | 'behavior';
|
|
37
|
+
/** @deprecated compat 1 deploy; use `params.idPrompt`. */
|
|
38
|
+
idPrompt?: number;
|
|
29
39
|
}
|
|
30
40
|
export interface SupportLabAnswerDto {
|
|
31
41
|
content: string;
|