@neetru/cli 2.19.1 → 2.20.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 (38) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/commands/code.d.ts +2 -2
  3. package/dist/commands/code.js +438 -191
  4. package/dist/commands/code.js.map +1 -1
  5. package/dist/commands/config.js +2 -0
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/lib/code-agent-files.d.ts +9 -1
  10. package/dist/lib/code-agent-files.js +37 -10
  11. package/dist/lib/code-agent-files.js.map +1 -1
  12. package/dist/lib/code-agent-gateway.js +2 -0
  13. package/dist/lib/code-agent-gateway.js.map +1 -1
  14. package/dist/lib/code-agent-git-tools.d.ts +56 -0
  15. package/dist/lib/code-agent-git-tools.js +212 -0
  16. package/dist/lib/code-agent-git-tools.js.map +1 -0
  17. package/dist/lib/code-agent-protocol.d.ts +8 -0
  18. package/dist/lib/code-agent-protocol.js.map +1 -1
  19. package/dist/lib/code-agent-session.d.ts +9 -1
  20. package/dist/lib/code-agent-session.js +58 -21
  21. package/dist/lib/code-agent-session.js.map +1 -1
  22. package/dist/lib/code-agent-settings.d.ts +24 -1
  23. package/dist/lib/code-agent-settings.js +53 -4
  24. package/dist/lib/code-agent-settings.js.map +1 -1
  25. package/dist/lib/code-agent-subagents.d.ts +105 -0
  26. package/dist/lib/code-agent-subagents.js +179 -0
  27. package/dist/lib/code-agent-subagents.js.map +1 -0
  28. package/dist/lib/code-agent-tools.js +16 -0
  29. package/dist/lib/code-agent-tools.js.map +1 -1
  30. package/dist/lib/code-agent-tui.js +44 -9
  31. package/dist/lib/code-agent-tui.js.map +1 -1
  32. package/dist/lib/code-agent-types.d.ts +51 -0
  33. package/dist/lib/code-agent-ui.js +15 -1
  34. package/dist/lib/code-agent-ui.js.map +1 -1
  35. package/dist/lib/config.d.ts +1 -0
  36. package/dist/lib/config.js +1 -0
  37. package/dist/lib/config.js.map +1 -1
  38. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  Convenção: [Keep a Changelog](https://keepachangelog.com/) + [SemVer](https://semver.org/).
4
4
 
5
+ ## [2.20.0] — 2026-07-11 (`neetru code` — indicador único de progresso, fix 503 do catálogo, effort/ultracode/autosave)
6
+
7
+ > Feedback direto do uso real (transcript colado pelo usuário): o 2.19.1 ainda imprimia uma linha por evento (`[...] AI Gateway turno X/Y`, `[tool]`, `[ok]`) — poluição visual que já tínhamos tentado resolver antes com o painel persistente, mas faltava trocar o loop de turnos em si. No mesmo transcript, uma sessão real bateu em `503 Nenhum provider de IA disponível` mesmo com Groq saudável no pool.
8
+
9
+ ### Corrigido
10
+
11
+ - **Indicador de progresso único por tarefa** — `runAgentTask` (`commands/code.ts`) agora usa UM spinner vivo (turno/tool/resultado viram `detail` do mesmo spinner, não uma linha nova por evento) em vez de `printEvent` por turno/tool-call/tool-result. Avisos/erros reais (histórico compactado, streaming caiu pro fallback sem stream) continuam aparecendo como linha permanente — só o progresso normal ficou compacto.
12
+ - **503 "nenhum provider disponível" usando o modelo recomendado do catálogo** — `neetru code -m <nome nativo do catálogo>` sem `--provider`/`gatewayProvider` caía no roteamento livre (WRRR); se sorteasse uma key do provider errado, o modelo dava 404 lá (não-retryable) e a chamada inteira falhava mesmo com o provider certo saudável no pool. `resolveCodeProvider` agora infere o provider automaticamente quando o `model` bate com um nome nativo conhecido do catálogo curado (Groq/NVIDIA).
13
+ - **Aviso `DEP0190` do Node vazando por cima do spinner** — `run_tests` chamava `spawnSync('npm', ['test','--silent'], {shell:true})` no Windows; Node deprecia `shell:true` combinado com array de args. Corrigido montando o comando inteiro como string quando `shell` é necessário.
14
+ - **Warnings do processo (`process.emitWarning`, ex: o DEP0190 acima) vazavam por cima do painel fixo** — eles escrevem direto em `process.stderr.write`, contornando tanto a interceptação de stdout quanto `console.warn`/`console.error`. O painel Ink agora intercepta `process.stderr.write` também.
15
+
16
+ ### Adicionado
17
+
18
+ - **`--effort <low|medium|high>`** (flag do comando `code`) e **`/effort`** (slash command da sessão interativa) — controle de esforço de raciocínio, encaminhado como `reasoningEffort` pro AI Gateway do Core, que só repassa de verdade pra Groq/OpenAI (nunca pra NVIDIA — histórico de travar em campo OpenAI-compat desconhecido). Persistível via `neetru config set gatewayEffort <nivel>`.
19
+ - **`--ultracode`** (flag) e **`/ultracode`** (toggle na sessão interativa) — preset de sessão longa/densa: 24 turnos (vs 8 default), 32768 tokens, effort alto, tudo de uma vez em vez de lembrar de 3 flags.
20
+ - **Checkpoint automático de sessão** — a cada turno da sessão interativa, a conversa é salva silenciosamente em `.neetru/code/sessions/_autosave.md` (sobrescrito, não acumula 1 arquivo por turno). Aparece primeiro em `/resume`, marcado `[auto]` — sessão longa que fecha/crasha sem `/save` manual não fica mais irrecuperável.
21
+ - **Ferramentas que mutam estado — git/gh/shell (GAP-M1-19)** — `git_commit`/`git_branch`/`git_push`/`gh_pr_create`/`shell_exec` novas em `code-agent-git-tools.ts`. `git_commit`/`git_branch` são locais/reversíveis e seguem o padrão do patch (`--yes` dispensa confirmação); `git_push`, `gh_pr_create` e `shell_exec` **sempre** pedem confirmação mostrando a ação exata, **ignorando `--yes`** — nunca auto-executam, nem push forçado é suportado. `shell_exec` roda sandboxado no cwd do projeto, com timeout e saída redigida/clipada.
22
+ - **Subagentes — iniciar/parar tarefas delegadas (GAP-M1-20)** — `/agents start|list|stop|result|apply` na sessão interativa. Cada subagente roda concorrentemente em modo plano e silencioso (nunca aplica patch sozinho, nunca imprime durante a execução — só uma notificação ao terminar), histórico isolado, limite de 4 simultâneos. Aplicar um patch proposto por um subagente passa pelo mesmo fluxo de confirmação de um patch normal.
23
+
5
24
  ## [2.19.1] — 2026-07-11 (`neetru code` — crash "Maximum update depth exceeded" no painel persistente)
6
25
 
7
26
  > Achado imediatamente ao testar o 2.19.0 de verdade: o painel travava com um crash do React assim que abria.
@@ -1,5 +1,5 @@
1
1
  import { type CodeAgentState } from '../lib/code-agent-session.js';
2
- import type { CodeMessage, CodeCommandOptions, CodeSettings, ConfirmFn } from '../lib/code-agent-types.js';
2
+ import type { CodeMessage, CodeCommandOptions, CodeSettings, ConfirmFn, AgentTaskOutcome, RunAgentTaskOptions } from '../lib/code-agent-types.js';
3
3
  export type { CodeMessage, CodeCommandOptions, CodeSettings } from '../lib/code-agent-types.js';
4
4
  export declare function resolveSettings(opts: CodeCommandOptions): CodeSettings;
5
5
  /**
@@ -15,7 +15,7 @@ export declare function resolveSettings(opts: CodeCommandOptions): CodeSettings;
15
15
  * AI Gateway inteiro. Cada chamada de runAgentTask e um ciclo completo
16
16
  * (comeca e termina em idle/applied/failed/aborted).
17
17
  */
18
- export declare function runAgentTask(task: string, settings: CodeSettings, confirm: ConfirmFn, history?: CodeMessage[], onState?: (state: CodeAgentState) => void): Promise<void>;
18
+ export declare function runAgentTask(task: string, settings: CodeSettings, confirm: ConfirmFn, history?: CodeMessage[], onState?: (state: CodeAgentState) => void, options?: RunAgentTaskOptions): Promise<AgentTaskOutcome>;
19
19
  /**
20
20
  * Entrada a partir do menu interativo do CLI (`neetru` sem args / `neetru ui`).
21
21
  * Usa settings default (cwd do processo) e gerencia o raw-mode do stdin como