termo_core 0.1.9 → 0.1.11
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/rotas.d.ts +1 -1
- package/dist/ai/rotas.js +1 -1
- package/dist/ai/tipos.d.ts +7 -0
- package/dist/miro/rotas.d.ts +1 -1
- package/dist/miro/rotas.js +1 -1
- package/package.json +1 -1
package/dist/ai/rotas.d.ts
CHANGED
|
@@ -243,7 +243,7 @@ export declare function chave_ia_buscar_catalogo(credencial_de_acesso: Credencia
|
|
|
243
243
|
/**
|
|
244
244
|
* Executa um pedido no gateway de IA
|
|
245
245
|
*
|
|
246
|
-
* Com token de usuário, exige a permissão `criar` da área `gateway`; com token de aplicativo (outro back-end, via `termo_core::CredencialDeAcesso::token_do_aplicativo()`), qualquer app válido do TermoAuth entra e a conversa nova grava o slug do app em `aplicativo`. Atende o pedido com as chaves de IA cadastradas, trocando de chave e de IA quando uma falha, até as regras da categoria (`/config_system_gateway`) mandarem parar. `categoria` é obrigatória. Nas categorias de entrada em texto, `texto` é obrigatório; nas de entrada em imagem, áudio ou vídeo, `arquivo` é obrigatório: `{ base64, tipo_mime }` (até 20 MB, aceita data URL) ou `{ url }` (baixada pelo TermoAI), e `texto` é a pergunta sobre o arquivo (sem ele vale uma pergunta padrão). `provedor` fixa uma IA que atenda a categoria (só ela, sem trocar de IA). `provedor_preferido` (um `provedor` de `GET /gateway/modelos`) tenta primeiro as chaves dessa IA e só troca para as outras, na ordem de sempre, quando ela falha ou não tem chave livre; sem ele, a escolha é a de sempre; com `provedor` junto, vale o `provedor`. `instrucao` é a instrução de sistema, `idioma` ajuda transcrição e fala, `voz` escolhe a voz da fala. `historico` (no máximo as 40 últimas mensagens com texto, `papel` `usuario` ou `assistente`) dá contexto; sem ele, com `conversa_id` (de uma conversa da mesma categoria), o contexto vem da própria conversa. A pergunta e a resposta são gravadas na conversa informada ou numa conversa nova de origem `api`, cujo id volta em `conversa_id`; os arquivos da pergunta e da resposta ficam no TermoBucket (privados, do app `termo-ai`). A resposta traz `texto` ou `arquivo` (base64 com o tipo), a IA, o modelo, o apelido da chave que atendeu, os tokens (quando a IA informa), as tentativas que falharam e a duração. Ferramentas (opcional, só em `texto_para_texto`): `ferramentas` lista até 128 funções (`nome` com até 64 letras, números, `_` ou `-`; `descricao`; `parametros` em JSON Schema) que a IA pode pedir para chamar; só entram as IAs que aceitam ferramentas (Gemini, Groq, Mistral, Cerebras, NVIDIA, Cohere, Z.ai e Ollama). Quando a IA quer uma ferramenta, a resposta traz `chamadas_de_ferramenta` (`id`, `nome`, `argumentos` em objeto e `assinatura`, que deve voltar igual) e, às vezes, `texto`. Quem chamou executa as ferramentas e pede de novo com o `historico` estendido: a mensagem `assistente` com as `chamadas_de_ferramenta` (e `texto`, vazio se não houver) e uma mensagem `ferramenta` por resultado, com `chamada_id` e o resultado em `texto`; quando o histórico termina num resultado, `texto` do pedido é opcional. Mensagens de ferramenta no histórico exigem `ferramentas` no pedido. A conversa gravada guarda as chamadas na mensagem do assistente, mas não os resultados.
|
|
246
|
+
* Com token de usuário, exige a permissão `criar` da área `gateway`; com token de aplicativo (outro back-end, via `termo_core::CredencialDeAcesso::token_do_aplicativo()`), qualquer app válido do TermoAuth entra e a conversa nova grava o slug do app em `aplicativo`. Atende o pedido com as chaves de IA cadastradas, trocando de chave e de IA quando uma falha, até as regras da categoria (`/config_system_gateway`) mandarem parar. `categoria` é obrigatória. Nas categorias de entrada em texto, `texto` é obrigatório; nas de entrada em imagem, áudio ou vídeo, `arquivo` é obrigatório: `{ base64, tipo_mime }` (até 20 MB, aceita data URL) ou `{ url }` (baixada pelo TermoAI), e `texto` é a pergunta sobre o arquivo (sem ele vale uma pergunta padrão). `provedor` fixa uma IA que atenda a categoria (só ela, sem trocar de IA). `provedor_preferido` (um `provedor` de `GET /gateway/modelos`) tenta primeiro as chaves dessa IA e só troca para as outras, na ordem de sempre, quando ela falha ou não tem chave livre; sem ele, a escolha é a de sempre; com `provedor` junto, vale o `provedor`. `instrucao` é a instrução de sistema, `idioma` ajuda transcrição e fala, `voz` escolhe a voz da fala. `historico` (no máximo as 40 últimas mensagens com texto, `papel` `usuario` ou `assistente`) dá contexto; sem ele, com `conversa_id` (de uma conversa da mesma categoria), o contexto vem da própria conversa. A pergunta e a resposta são gravadas na conversa informada ou numa conversa nova de origem `api`, cujo id volta em `conversa_id`; os arquivos da pergunta e da resposta ficam no TermoBucket (privados, do app `termo-ai`). A resposta traz `texto` ou `arquivo` (base64 com o tipo), a IA, o modelo, o apelido da chave que atendeu, os tokens (quando a IA informa), as tentativas que falharam e a duração. Ferramentas (opcional, só em `texto_para_texto`): `ferramentas` lista até 128 funções (`nome` com até 64 letras, números, `_` ou `-`; `descricao`; `parametros` em JSON Schema) que a IA pode pedir para chamar; só entram as IAs que aceitam ferramentas (Gemini, Groq, Mistral, Cerebras, NVIDIA, Cohere, Z.ai e Ollama). Quando a IA quer uma ferramenta, a resposta traz `chamadas_de_ferramenta` (`id`, `nome`, `argumentos` em objeto e `assinatura`, que deve voltar igual) e, às vezes, `texto`. Quem chamou executa as ferramentas e pede de novo com o `historico` estendido: a mensagem `assistente` com as `chamadas_de_ferramenta` (e `texto`, vazio se não houver) e uma mensagem `ferramenta` por resultado, com `chamada_id` e o resultado em `texto`; quando o histórico termina num resultado, `texto` do pedido é opcional. Mensagens de ferramenta no histórico exigem `ferramentas` no pedido. A conversa gravada guarda as chamadas na mensagem do assistente, mas não os resultados. `modelo` (até 200 caracteres, só junto de `provedor`) troca o modelo do catálogo por outro da mesma IA. Em `texto_para_imagem`, `referencias` (até 14 imagens no formato de `arquivo`, até 20 MB somadas) vão junto do texto, `proporcao` (`1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9` ou `21:9`) e `tamanho` (`1K`, `2K` ou `4K`) definem a imagem; em `texto_para_texto`, `esquema` (objeto JSON Schema, sem `ferramentas`) faz a resposta vir em `texto` como JSON nesse formato. Com qualquer um desses quatro, só entram as IAs que os entendem (hoje o Gemini), e a conversa gravada não guarda as referências. A resposta traz também `tokens_de_entrada` e `tokens_de_saida` separados, quando a IA informa.
|
|
247
247
|
*
|
|
248
248
|
* `POST /gateway`
|
|
249
249
|
*/
|
package/dist/ai/rotas.js
CHANGED
|
@@ -304,7 +304,7 @@ export function chave_ia_buscar_catalogo(credencial_de_acesso, opcoes_da_chamada
|
|
|
304
304
|
/**
|
|
305
305
|
* Executa um pedido no gateway de IA
|
|
306
306
|
*
|
|
307
|
-
* Com token de usuário, exige a permissão `criar` da área `gateway`; com token de aplicativo (outro back-end, via `termo_core::CredencialDeAcesso::token_do_aplicativo()`), qualquer app válido do TermoAuth entra e a conversa nova grava o slug do app em `aplicativo`. Atende o pedido com as chaves de IA cadastradas, trocando de chave e de IA quando uma falha, até as regras da categoria (`/config_system_gateway`) mandarem parar. `categoria` é obrigatória. Nas categorias de entrada em texto, `texto` é obrigatório; nas de entrada em imagem, áudio ou vídeo, `arquivo` é obrigatório: `{ base64, tipo_mime }` (até 20 MB, aceita data URL) ou `{ url }` (baixada pelo TermoAI), e `texto` é a pergunta sobre o arquivo (sem ele vale uma pergunta padrão). `provedor` fixa uma IA que atenda a categoria (só ela, sem trocar de IA). `provedor_preferido` (um `provedor` de `GET /gateway/modelos`) tenta primeiro as chaves dessa IA e só troca para as outras, na ordem de sempre, quando ela falha ou não tem chave livre; sem ele, a escolha é a de sempre; com `provedor` junto, vale o `provedor`. `instrucao` é a instrução de sistema, `idioma` ajuda transcrição e fala, `voz` escolhe a voz da fala. `historico` (no máximo as 40 últimas mensagens com texto, `papel` `usuario` ou `assistente`) dá contexto; sem ele, com `conversa_id` (de uma conversa da mesma categoria), o contexto vem da própria conversa. A pergunta e a resposta são gravadas na conversa informada ou numa conversa nova de origem `api`, cujo id volta em `conversa_id`; os arquivos da pergunta e da resposta ficam no TermoBucket (privados, do app `termo-ai`). A resposta traz `texto` ou `arquivo` (base64 com o tipo), a IA, o modelo, o apelido da chave que atendeu, os tokens (quando a IA informa), as tentativas que falharam e a duração. Ferramentas (opcional, só em `texto_para_texto`): `ferramentas` lista até 128 funções (`nome` com até 64 letras, números, `_` ou `-`; `descricao`; `parametros` em JSON Schema) que a IA pode pedir para chamar; só entram as IAs que aceitam ferramentas (Gemini, Groq, Mistral, Cerebras, NVIDIA, Cohere, Z.ai e Ollama). Quando a IA quer uma ferramenta, a resposta traz `chamadas_de_ferramenta` (`id`, `nome`, `argumentos` em objeto e `assinatura`, que deve voltar igual) e, às vezes, `texto`. Quem chamou executa as ferramentas e pede de novo com o `historico` estendido: a mensagem `assistente` com as `chamadas_de_ferramenta` (e `texto`, vazio se não houver) e uma mensagem `ferramenta` por resultado, com `chamada_id` e o resultado em `texto`; quando o histórico termina num resultado, `texto` do pedido é opcional. Mensagens de ferramenta no histórico exigem `ferramentas` no pedido. A conversa gravada guarda as chamadas na mensagem do assistente, mas não os resultados.
|
|
307
|
+
* Com token de usuário, exige a permissão `criar` da área `gateway`; com token de aplicativo (outro back-end, via `termo_core::CredencialDeAcesso::token_do_aplicativo()`), qualquer app válido do TermoAuth entra e a conversa nova grava o slug do app em `aplicativo`. Atende o pedido com as chaves de IA cadastradas, trocando de chave e de IA quando uma falha, até as regras da categoria (`/config_system_gateway`) mandarem parar. `categoria` é obrigatória. Nas categorias de entrada em texto, `texto` é obrigatório; nas de entrada em imagem, áudio ou vídeo, `arquivo` é obrigatório: `{ base64, tipo_mime }` (até 20 MB, aceita data URL) ou `{ url }` (baixada pelo TermoAI), e `texto` é a pergunta sobre o arquivo (sem ele vale uma pergunta padrão). `provedor` fixa uma IA que atenda a categoria (só ela, sem trocar de IA). `provedor_preferido` (um `provedor` de `GET /gateway/modelos`) tenta primeiro as chaves dessa IA e só troca para as outras, na ordem de sempre, quando ela falha ou não tem chave livre; sem ele, a escolha é a de sempre; com `provedor` junto, vale o `provedor`. `instrucao` é a instrução de sistema, `idioma` ajuda transcrição e fala, `voz` escolhe a voz da fala. `historico` (no máximo as 40 últimas mensagens com texto, `papel` `usuario` ou `assistente`) dá contexto; sem ele, com `conversa_id` (de uma conversa da mesma categoria), o contexto vem da própria conversa. A pergunta e a resposta são gravadas na conversa informada ou numa conversa nova de origem `api`, cujo id volta em `conversa_id`; os arquivos da pergunta e da resposta ficam no TermoBucket (privados, do app `termo-ai`). A resposta traz `texto` ou `arquivo` (base64 com o tipo), a IA, o modelo, o apelido da chave que atendeu, os tokens (quando a IA informa), as tentativas que falharam e a duração. Ferramentas (opcional, só em `texto_para_texto`): `ferramentas` lista até 128 funções (`nome` com até 64 letras, números, `_` ou `-`; `descricao`; `parametros` em JSON Schema) que a IA pode pedir para chamar; só entram as IAs que aceitam ferramentas (Gemini, Groq, Mistral, Cerebras, NVIDIA, Cohere, Z.ai e Ollama). Quando a IA quer uma ferramenta, a resposta traz `chamadas_de_ferramenta` (`id`, `nome`, `argumentos` em objeto e `assinatura`, que deve voltar igual) e, às vezes, `texto`. Quem chamou executa as ferramentas e pede de novo com o `historico` estendido: a mensagem `assistente` com as `chamadas_de_ferramenta` (e `texto`, vazio se não houver) e uma mensagem `ferramenta` por resultado, com `chamada_id` e o resultado em `texto`; quando o histórico termina num resultado, `texto` do pedido é opcional. Mensagens de ferramenta no histórico exigem `ferramentas` no pedido. A conversa gravada guarda as chamadas na mensagem do assistente, mas não os resultados. `modelo` (até 200 caracteres, só junto de `provedor`) troca o modelo do catálogo por outro da mesma IA. Em `texto_para_imagem`, `referencias` (até 14 imagens no formato de `arquivo`, até 20 MB somadas) vão junto do texto, `proporcao` (`1:1`, `2:3`, `3:2`, `3:4`, `4:3`, `4:5`, `5:4`, `9:16`, `16:9` ou `21:9`) e `tamanho` (`1K`, `2K` ou `4K`) definem a imagem; em `texto_para_texto`, `esquema` (objeto JSON Schema, sem `ferramentas`) faz a resposta vir em `texto` como JSON nesse formato. Com qualquer um desses quatro, só entram as IAs que os entendem (hoje o Gemini), e a conversa gravada não guarda as referências. A resposta traz também `tokens_de_entrada` e `tokens_de_saida` separados, quando a IA informa.
|
|
308
308
|
*
|
|
309
309
|
* `POST /gateway`
|
|
310
310
|
*/
|
package/dist/ai/tipos.d.ts
CHANGED
|
@@ -364,12 +364,17 @@ export interface PedidoGateway {
|
|
|
364
364
|
arquivo?: ArquivoDoPedido | null;
|
|
365
365
|
categoria: string;
|
|
366
366
|
conversa_id?: string | null;
|
|
367
|
+
esquema?: unknown;
|
|
367
368
|
ferramentas?: Array<Ferramenta> | null;
|
|
368
369
|
historico?: Array<MensagemDoHistorico> | null;
|
|
369
370
|
idioma?: string | null;
|
|
370
371
|
instrucao?: string | null;
|
|
372
|
+
modelo?: string | null;
|
|
373
|
+
proporcao?: string | null;
|
|
371
374
|
provedor?: string | null;
|
|
372
375
|
provedor_preferido?: string | null;
|
|
376
|
+
referencias?: Array<ArquivoDoPedido> | null;
|
|
377
|
+
tamanho?: string | null;
|
|
373
378
|
texto?: string | null;
|
|
374
379
|
voz?: string | null;
|
|
375
380
|
}
|
|
@@ -426,6 +431,8 @@ export interface RespostaDoGateway {
|
|
|
426
431
|
tentativas: Array<TentativaDaMensagem>;
|
|
427
432
|
texto?: string | null;
|
|
428
433
|
tokens?: number | null;
|
|
434
|
+
tokens_de_entrada?: number | null;
|
|
435
|
+
tokens_de_saida?: number | null;
|
|
429
436
|
}
|
|
430
437
|
export interface TentativaDaMensagem {
|
|
431
438
|
chave: string;
|
package/dist/miro/rotas.d.ts
CHANGED
|
@@ -139,7 +139,7 @@ export declare function elementos_listar_board(credencial_de_acesso: CredencialD
|
|
|
139
139
|
* - `imagem` (320x240, `url` https:// ou a devolvida por `POST /board/{id}/imagem`);
|
|
140
140
|
* - `caneta` (traço livre: `pontos` [x0, y0, x1, y1, ...] relativos a (x, y), `corBorda`, `espessura`).
|
|
141
141
|
*
|
|
142
|
-
* Posição: com `x` e `y`, o elemento fica exatamente ali. Sem eles, o servidor posiciona em fileiras abaixo de tudo o que já existe, sem sobrepor. Com `frame` (id ou `chave` de um frame), o elemento entra no frame: `x`/`y` passam a ser relativos ao canto do frame e, sem eles, os elementos se arrumam em grade dentro do frame, que cresce para caber todos. `chave` é um apelido livre para outro elemento do mesmo pedido apontar para este (ex.: um conector `{"de": {"id": "inicio"}, "para": {"id": "fim"}}` ou `"frame": "custos"`). Cores: `#rrggbb
|
|
142
|
+
* Posição: com `x` e `y`, o elemento fica exatamente ali. Sem eles, o servidor posiciona em fileiras abaixo de tudo o que já existe, sem sobrepor. Com `frame` (id ou `chave` de um frame), o elemento entra no frame: `x`/`y` passam a ser relativos ao canto do frame e, sem eles, os elementos se arrumam em grade dentro do frame, que cresce para caber todos. `chave` é um apelido livre para outro elemento do mesmo pedido apontar para este (ex.: um conector `{"de": {"id": "inicio"}, "para": {"id": "fim"}}` ou `"frame": "custos"`). Cores: `#rrggbb`. Paleta viva das notas: #fff9b1, #f5d128, #ffcee0, #f16c7f, #d5f692, #93d275, #a6ccf5, #6cd8fa, #c9b8f5, #ffc78f, #e6e6e6, #ffffff. Paleta pastel para o fundo de forma, card, frame e tabela: #eef1f5, #ffe1e1, #ffe8d1, #fff3c4, #dcf5e3, #d6f2f0, #dbe7ff, #e3e2fd, #ecdffb, #fde0ec, #e2e5ea, #ffffff; e os tons fortes correspondentes para `corBorda`, `corTexto` e a faixa do card: #6b7684, #d64545, #e07b2a, #c08f0a, #2f9e5d, #1f9a94, #3b6fe0, #5b5bd6, #8550d6, #d6468f, #1f2328, #ffffff. A forma sem `corBorda` ganha a borda no tom forte do mesmo matiz do fundo. A resposta traz os elementos criados com os ids, na ordem do pedido. Para arrumar o que já existe, use `POST /board/{id}/elementos/organizar`.
|
|
143
143
|
*
|
|
144
144
|
* `POST /board/{id}/elementos`
|
|
145
145
|
*/
|
package/dist/miro/rotas.js
CHANGED
|
@@ -182,7 +182,7 @@ export function elementos_listar_board(credencial_de_acesso, id, parametros = {}
|
|
|
182
182
|
* - `imagem` (320x240, `url` https:// ou a devolvida por `POST /board/{id}/imagem`);
|
|
183
183
|
* - `caneta` (traço livre: `pontos` [x0, y0, x1, y1, ...] relativos a (x, y), `corBorda`, `espessura`).
|
|
184
184
|
*
|
|
185
|
-
* Posição: com `x` e `y`, o elemento fica exatamente ali. Sem eles, o servidor posiciona em fileiras abaixo de tudo o que já existe, sem sobrepor. Com `frame` (id ou `chave` de um frame), o elemento entra no frame: `x`/`y` passam a ser relativos ao canto do frame e, sem eles, os elementos se arrumam em grade dentro do frame, que cresce para caber todos. `chave` é um apelido livre para outro elemento do mesmo pedido apontar para este (ex.: um conector `{"de": {"id": "inicio"}, "para": {"id": "fim"}}` ou `"frame": "custos"`). Cores: `#rrggbb
|
|
185
|
+
* Posição: com `x` e `y`, o elemento fica exatamente ali. Sem eles, o servidor posiciona em fileiras abaixo de tudo o que já existe, sem sobrepor. Com `frame` (id ou `chave` de um frame), o elemento entra no frame: `x`/`y` passam a ser relativos ao canto do frame e, sem eles, os elementos se arrumam em grade dentro do frame, que cresce para caber todos. `chave` é um apelido livre para outro elemento do mesmo pedido apontar para este (ex.: um conector `{"de": {"id": "inicio"}, "para": {"id": "fim"}}` ou `"frame": "custos"`). Cores: `#rrggbb`. Paleta viva das notas: #fff9b1, #f5d128, #ffcee0, #f16c7f, #d5f692, #93d275, #a6ccf5, #6cd8fa, #c9b8f5, #ffc78f, #e6e6e6, #ffffff. Paleta pastel para o fundo de forma, card, frame e tabela: #eef1f5, #ffe1e1, #ffe8d1, #fff3c4, #dcf5e3, #d6f2f0, #dbe7ff, #e3e2fd, #ecdffb, #fde0ec, #e2e5ea, #ffffff; e os tons fortes correspondentes para `corBorda`, `corTexto` e a faixa do card: #6b7684, #d64545, #e07b2a, #c08f0a, #2f9e5d, #1f9a94, #3b6fe0, #5b5bd6, #8550d6, #d6468f, #1f2328, #ffffff. A forma sem `corBorda` ganha a borda no tom forte do mesmo matiz do fundo. A resposta traz os elementos criados com os ids, na ordem do pedido. Para arrumar o que já existe, use `POST /board/{id}/elementos/organizar`.
|
|
186
186
|
*
|
|
187
187
|
* `POST /board/{id}/elementos`
|
|
188
188
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "termo_core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.11",
|
|
4
4
|
"description": "Todos os clientes da Termotubos num pacote só: um módulo por serviço e cada rota da API como uma função com fetch, com o endereço resolvido pelo ambiente atual.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "TI Termotubos <ti@termotubos.com.br>",
|