@neetru/cli 2.19.0 → 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.
- package/CHANGELOG.md +31 -0
- package/dist/commands/code.d.ts +2 -2
- package/dist/commands/code.js +442 -190
- package/dist/commands/code.js.map +1 -1
- package/dist/commands/config.js +2 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/code-agent-files.d.ts +9 -1
- package/dist/lib/code-agent-files.js +37 -10
- package/dist/lib/code-agent-files.js.map +1 -1
- package/dist/lib/code-agent-gateway.js +2 -0
- package/dist/lib/code-agent-gateway.js.map +1 -1
- package/dist/lib/code-agent-git-tools.d.ts +56 -0
- package/dist/lib/code-agent-git-tools.js +212 -0
- package/dist/lib/code-agent-git-tools.js.map +1 -0
- package/dist/lib/code-agent-protocol.d.ts +8 -0
- package/dist/lib/code-agent-protocol.js.map +1 -1
- package/dist/lib/code-agent-session.d.ts +9 -1
- package/dist/lib/code-agent-session.js +58 -21
- package/dist/lib/code-agent-session.js.map +1 -1
- package/dist/lib/code-agent-settings.d.ts +24 -1
- package/dist/lib/code-agent-settings.js +53 -4
- package/dist/lib/code-agent-settings.js.map +1 -1
- package/dist/lib/code-agent-subagents.d.ts +105 -0
- package/dist/lib/code-agent-subagents.js +179 -0
- package/dist/lib/code-agent-subagents.js.map +1 -0
- package/dist/lib/code-agent-tools.js +16 -0
- package/dist/lib/code-agent-tools.js.map +1 -1
- package/dist/lib/code-agent-tui.d.ts +0 -9
- package/dist/lib/code-agent-tui.js +78 -11
- package/dist/lib/code-agent-tui.js.map +1 -1
- package/dist/lib/code-agent-types.d.ts +51 -0
- package/dist/lib/code-agent-ui.js +15 -1
- package/dist/lib/code-agent-ui.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.js +1 -0
- package/dist/lib/config.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,37 @@
|
|
|
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
|
+
|
|
24
|
+
## [2.19.1] — 2026-07-11 (`neetru code` — crash "Maximum update depth exceeded" no painel persistente)
|
|
25
|
+
|
|
26
|
+
> Achado imediatamente ao testar o 2.19.0 de verdade: o painel travava com um crash do React assim que abria.
|
|
27
|
+
|
|
28
|
+
### Corrigido
|
|
29
|
+
|
|
30
|
+
- **Loop infinito de re-render** — o Ink usa `process.stdout.write` internamente pra desenhar sua própria UI (prompt, barra de status). Como o painel também interceptava `process.stdout.write` globalmente (pra capturar `printEvent`/`printBox`/etc), toda vez que o Ink se redesenhava isso disparava `setState` → novo re-render do Ink → nova escrita → capturada de novo → loop. Fix: o Ink agora usa um `Writable` stream próprio que escreve direto no stdout real, sem passar pela interceptação — os dois nunca mais se cruzam.
|
|
31
|
+
|
|
32
|
+
### Adicionado
|
|
33
|
+
|
|
34
|
+
- **Banner Neetru** (`log.banner`, logo + "logado como…") no topo da sessão interativa — mesmo banner usado nos outros pontos de entrada da CLI.
|
|
35
|
+
|
|
5
36
|
## [2.19.0] — 2026-07-10 (`neetru code` — painel persistente: histórico + status fixo + progresso ao vivo)
|
|
6
37
|
|
|
7
38
|
> Feedback direto: o 2.18.0 só resolvia a captura da próxima linha (montava/desmontava Ink por turno) — a barra de status e o indicador de progresso ainda desapareciam durante o processamento. Essa versão reescreve pra um app Ink genuinamente persistente.
|
package/dist/commands/code.d.ts
CHANGED
|
@@ -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<
|
|
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
|