@hostwebhook/platform-contracts 0.7.0 → 0.8.1
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.
|
@@ -75,6 +75,9 @@ exports.getSuggestedAlternative = getSuggestedAlternative;
|
|
|
75
75
|
exports.MODEL_PRICING = {
|
|
76
76
|
// OpenAI — GPT series
|
|
77
77
|
'gpt-5.6-sol': { input: 4.00, output: 20.00 },
|
|
78
|
+
// `gpt-5.6` a secas es el alias documentado de Sol, y sin esta entrada caia
|
|
79
|
+
// por prefijo en `gpt-5` — otro modelo y otro precio.
|
|
80
|
+
'gpt-5.6': { input: 4.00, output: 20.00 },
|
|
78
81
|
'gpt-5.6-terra': { input: 2.00, output: 12.00 },
|
|
79
82
|
'gpt-5.6-luna': { input: 0.20, output: 1.20 },
|
|
80
83
|
'gpt-5.5-pro': { input: 30.00, output: 180.00 },
|
|
@@ -132,6 +135,30 @@ exports.MODEL_PRICING = {
|
|
|
132
135
|
'claude-sonnet-4': { input: 3.00, output: 15.00 },
|
|
133
136
|
'claude-sonnet-4-20250514': { input: 3.00, output: 15.00 },
|
|
134
137
|
'claude-haiku-4-5-20251001': { input: 1.00, output: 5.00 },
|
|
138
|
+
// (!) Sin apellido de fecha, y NO es redundante: la clave fechada es mas
|
|
139
|
+
// LARGA, asi que la regla de prefijo nunca alcanzaba a `claude-haiku-4-5`.
|
|
140
|
+
// Y ese es `getDefaultModel('anthropic')` —con el nace todo nodo de IA— y
|
|
141
|
+
// tambien `PLATFORM_LLM_CHEAP_MODEL`. Mientras falto, cada nodo nuevo salia
|
|
142
|
+
// a coste CERO y su tope de gasto en dolares no podia saltar jamas.
|
|
143
|
+
'claude-haiku-4-5': { input: 1.00, output: 5.00 },
|
|
144
|
+
// ── Groq ────────────────────────────────────────────────────────────────
|
|
145
|
+
// (!) Estas tres NO estan verificadas contra una pagina oficial de Groq:
|
|
146
|
+
// console.groq.com/docs/pricing da 404 y groq.com/pricing es marketing. Salen
|
|
147
|
+
// de agregadores de terceros coincidentes entre si (agosto 2026). Reverificar
|
|
148
|
+
// en cuanto Groq publique una pagina consultable.
|
|
149
|
+
//
|
|
150
|
+
// Aun asi entran: sin ellas el coste sale CERO, y cero no es "barato", es
|
|
151
|
+
// "un tope de gasto que no salta". Una cifra aproximada de la fuente correcta
|
|
152
|
+
// protege; la ausencia no protege nada.
|
|
153
|
+
'openai/gpt-oss-20b': { input: 0.075, output: 0.30 },
|
|
154
|
+
'openai/gpt-oss-120b': { input: 0.15, output: 0.60 },
|
|
155
|
+
'qwen/qwen3.6-27b': { input: 0.60, output: 3.00 },
|
|
156
|
+
//
|
|
157
|
+
// `groq/compound` y `groq/compound-mini` NO se ponen, y no por falta de dato:
|
|
158
|
+
// es que NO TIENEN tarifa plana por token. Son sistemas agenticos que
|
|
159
|
+
// repercuten el modelo subyacente MAS el coste de las herramientas que usan,
|
|
160
|
+
// asi que no hay un numero unico que sea correcto. Inventar uno seria peor que
|
|
161
|
+
// el hueco. Quedan en la lista de excepciones del test, con este motivo.
|
|
135
162
|
'claude-3-7-sonnet-20250219': { input: 3.00, output: 15.00 },
|
|
136
163
|
'claude-3-5-sonnet-20241022': { input: 3.00, output: 15.00 },
|
|
137
164
|
'claude-3-5-haiku-20241022': { input: 0.80, output: 4.00 },
|
|
@@ -32,7 +32,15 @@
|
|
|
32
32
|
* Antes la puerta leía `memoryEnabled` del documento para decidir; esa decisión
|
|
33
33
|
* se va con el dato, que es donde puede comprobarse.
|
|
34
34
|
*/
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* El nodo conectado, en lo que la puerta lee de él. Siete campos, medidos.
|
|
37
|
+
*
|
|
38
|
+
* Los cuatro primeros son lo que la puerta necesitaba para EJECUTAR. Los tres
|
|
39
|
+
* últimos son lo que necesita para PONERLE PRECIO al turno antes de ejecutarlo:
|
|
40
|
+
* el Chat Trigger tiene topes en dólares y reserva por adelantado, y esa reserva
|
|
41
|
+
* no se puede calcular sin saber a qué modelo se va a llamar ni cuánto puede
|
|
42
|
+
* devolver. Sin ellos la estimación caía a sus valores por defecto en silencio.
|
|
43
|
+
*/
|
|
36
44
|
export interface NodoDeIaConectado {
|
|
37
45
|
id: string;
|
|
38
46
|
/** Para el paso del historial y para decirle al widget con quién habla. */
|
|
@@ -40,6 +48,35 @@ export interface NodoDeIaConectado {
|
|
|
40
48
|
workspaceId: string | null;
|
|
41
49
|
/** Si el widget enseña las llamadas a herramientas mientras ocurren. */
|
|
42
50
|
muestraLasHerramientas: boolean;
|
|
51
|
+
/** El modelo configurado en el nodo. Sin el nombre no hay tarifa, y sin
|
|
52
|
+
* tarifa la reserva del tope EN DÓLARES no se puede calcular: los tokens
|
|
53
|
+
* estimados no son un precio hasta que alguien dice de qué modelo son. */
|
|
54
|
+
model: string;
|
|
55
|
+
/** El tope de salida del nodo. Es el techo de lo que puede devolver, y la
|
|
56
|
+
* estimación es deliberadamente PESIMISTA: reserva el techo entero. */
|
|
57
|
+
maxTokens: number;
|
|
58
|
+
/**
|
|
59
|
+
* La LONGITUD del system prompt del nodo, no el prompt.
|
|
60
|
+
*
|
|
61
|
+
* ⚠️ Un `number` y no la cadena, por dos motivos, y los dos importan:
|
|
62
|
+
*
|
|
63
|
+
* 1. No hace falta más. La estimación sólo hace `.length`: suma ese largo a
|
|
64
|
+
* los caracteres del turno y divide entre tres. El número da exactamente
|
|
65
|
+
* el mismo resultado que la cadena, así que mandar la cadena sería mandar
|
|
66
|
+
* algo que nadie va a leer.
|
|
67
|
+
*
|
|
68
|
+
* 2. Esto CRUZA UNA FRONTERA DE SERVICIO —es el motivo de existir de este
|
|
69
|
+
* fichero, y está en su cabecera—, y el `systemPrompt` es contenido del
|
|
70
|
+
* cliente. Mandarlo entero lo filtraría a un servicio que no lo necesita.
|
|
71
|
+
* Mismo criterio que ya aplica `ChunkingStrategy` en `formas-compartidas`:
|
|
72
|
+
* «sólo cruza la ESTRATEGIA, no la configuración entera».
|
|
73
|
+
*
|
|
74
|
+
* ⚠️ Y se llama `largoDelSystemPrompt` y no `largoDelPrompt` porque en el
|
|
75
|
+
* consumidor conviven DOS prompts: el del nodo y el `systemPromptOverride`
|
|
76
|
+
* del trigger, que lo pisa. El nombre dice cuál se midió — éste es el del
|
|
77
|
+
* nodo, y quien tenga override medirá el suyo y no usará éste.
|
|
78
|
+
*/
|
|
79
|
+
largoDelSystemPrompt: number;
|
|
43
80
|
}
|
|
44
81
|
export interface EjecucionDeIa {
|
|
45
82
|
/** El nodo conectado a ese chat, o `null` si ya no existe. */
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hostwebhook/platform-contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Contratos compartidos entre los servicios de HostWebhook: addons del plan, identidad interna, y las formas que cruzan una frontera de red",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|