primocode 8.20.0 → 8.20.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.
- package/lib/act.js +17 -1
- package/package.json +1 -1
package/lib/act.js
CHANGED
|
@@ -377,6 +377,7 @@ async function runAct(userPrompt, opts) {
|
|
|
377
377
|
// usuário — que não tem prompt nenhum para ajustar. É o modelo tropeçando
|
|
378
378
|
// ao escrever o JSON da chamada, e quase sempre acerta na segunda.
|
|
379
379
|
let funcoesQuebradas = 0;
|
|
380
|
+
let respostasVazias = 0;
|
|
380
381
|
// O teto de tokens é POR MINUTO, somando TODAS as chamadas — o plano, o
|
|
381
382
|
// resumo e cada rodada do loop dividem a mesma cota. Um pedido perfeito
|
|
382
383
|
// estoura se a rodada anterior já gastou o minuto. Encolher não resolve
|
|
@@ -457,7 +458,11 @@ async function runAct(userPrompt, opts) {
|
|
|
457
458
|
// isto o 400 cru do provedor ("Failed to call a function. Please
|
|
458
459
|
// adjust your prompt.") caía na tela de quem não tem prompt nenhum
|
|
459
460
|
// para ajustar.
|
|
460
|
-
|
|
461
|
+
// "failed to parse tool call arguments" é a variante nova do mesmo
|
|
462
|
+
// tropeço: o provedor recusou o JSON que o MODELO gerou. Medido em
|
|
463
|
+
// produção num "crie um vídeo" — o documento grande saía torto e o
|
|
464
|
+
// erro cru parava a tarefa com a corrente inteira ainda de pé.
|
|
465
|
+
if (streamError && /failed to call a function|failed to parse tool call|failed_generation|tool_use_failed/i.test(String(streamError))
|
|
461
466
|
&& funcoesQuebradas < 4 && !PARAR) {
|
|
462
467
|
funcoesQuebradas++;
|
|
463
468
|
if (!subagent) console.log(ident(profundidade) + c.dim(' ⎿ o modelo tropeçou na chamada — tentando de novo'));
|
|
@@ -506,12 +511,23 @@ async function runAct(userPrompt, opts) {
|
|
|
506
511
|
// Sem tool_calls: o modelo respondeu e acabou.
|
|
507
512
|
if (!toolCalls.length) {
|
|
508
513
|
finalText = assistantText.trim();
|
|
514
|
+
// Resposta VAZIA não é resposta: sem tool, sem texto e sem erro é
|
|
515
|
+
// o modelo grátis engasgando. Cair direto no "parei sem concluir"
|
|
516
|
+
// jogava a tarefa fora quando repetir a MESMA rodada quase sempre
|
|
517
|
+
// resolve — visto em produção no primeiro pedido de vídeo.
|
|
518
|
+
if (!finalText && respostasVazias < 2 && !PARAR) {
|
|
519
|
+
respostasVazias++;
|
|
520
|
+
if (!subagent) console.log(ident(profundidade) + c.dim(' ⎿ o modelo respondeu vazio — tentando de novo'));
|
|
521
|
+
iteration--;
|
|
522
|
+
continue;
|
|
523
|
+
}
|
|
509
524
|
if (!subagent) {
|
|
510
525
|
if (finalText && !streaming) console.log('\n' + c.white(finalText));
|
|
511
526
|
else if (streaming) process.stdout.write('\n');
|
|
512
527
|
}
|
|
513
528
|
break;
|
|
514
529
|
}
|
|
530
|
+
respostasVazias = 0;
|
|
515
531
|
|
|
516
532
|
if (streaming && !subagent) process.stdout.write('\n');
|
|
517
533
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "primocode",
|
|
3
|
-
"version": "8.20.
|
|
3
|
+
"version": "8.20.1",
|
|
4
4
|
"description": "PrimoCode — agente de engenharia com IA e cursor próprio. Modelos grátis. Cria arquivos, roda comandos, controla navegador e desktop: abre apps, clica em botões e ícones pelo nome, digita e usa atalhos.",
|
|
5
5
|
"main": "bin/primocode.js",
|
|
6
6
|
"bin": {
|