@nomad-e/bluma-cli 0.0.100 → 0.0.103

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nomad-e/bluma-cli",
3
- "version": "0.0.100",
3
+ "version": "0.0.103",
4
4
  "description": "BluMa independent agent for automation and advanced software engineering.",
5
5
  "author": "Alex Fonseca",
6
6
  "license": "Apache-2.0",
@@ -31,7 +31,7 @@
31
31
  "main": "dist/main.js",
32
32
  "scripts": {
33
33
  "build": "node scripts/build.js",
34
- "start": "npm run build && node dist/main.js",
34
+ "start": "node dist/main.js",
35
35
  "test": "jest",
36
36
  "test:watch": "jest --watch",
37
37
  "prepack": "npm run build"
@@ -1,157 +0,0 @@
1
- # To-Do Rules — Regras e Boas Práticas para a ferramenta `todo`
2
-
3
- Este documento descreve, de forma completa e exaustiva, as regras, restrições e boas práticas para o uso da ferramenta nativa `todo` do agente. O objetivo é garantir comportamento determinístico, segurança, facilidade de integração e interoperabilidade entre agentes, UIs e pipelines automáticos.
4
-
5
- Índice
6
- - Visão geral
7
- - Formato e esquema
8
- - Ações suportadas
9
- - Validação de entrada
10
- - Regras de mutação e idempotência
11
- - Execução automática e segurança (safe_tool)
12
- - Logging, audit e persistência
13
- - Erros e respostas previsíveis
14
- - Regras de interface (UI / renderização)
15
- - Regras de interação com o agente / prompt
16
- - Regras de versionamento e compatibilidade
17
- - Testes e qualidade
18
- - Limitações e considerações
19
- - Exemplos de payloads e respostas
20
-
21
- ---
22
-
23
- Visão geral
24
- ----------
25
- A ferramenta `todo` é um gerenciador nativo de listas de tarefas (checklist) pensado para integração com agentes autônomos e pipelines. Ela fornece um contrato claro e estruturado para que tanto humanos quanto máquinas possam ler e modificar o estado de tarefas de forma previsível.
26
-
27
- Formato e esquema
28
- -----------------
29
- - Representação principal: array de strings chamado `to_do`.
30
- - Formato de cada item: obrigatório prefixo de status seguido por um espaço e o texto da tarefa.
31
- - Status válido: `🗹 ` (concluído) ou `☐ ` (pendente).
32
- - Exemplo: `☐ Implementar validação de inputs` ou `🗹 Review do PR #42`.
33
- - Retorno: ao executar ações que alterem estado, a ferramenta devolve o array `to_do` atualizado e um campo `_tool_result` com duas chaves:
34
- - `parsed`: array de objetos { index: number, status: 'done'|'pending', text: string }
35
- - `render`: string com visual humano legível (cada item em nova linha com índice e marca)
36
-
37
- Ações suportadas
38
- -----------------
39
- - `list` — retorna o estado atual sem mutação.
40
- - `add` — acrescenta um novo item pendente; payload: `{ action: 'add', item: 'text' }`.
41
- - `complete` — marca um item como concluído; payload: `{ action: 'complete', index: 1 }` (1-based).
42
- - `remove` — remove um item por índice; payload: `{ action: 'remove', index: 2 }`.
43
-
44
- Validação de entrada
45
- --------------------
46
- - `action` é obrigatório e deve ser uma das opções listadas.
47
- - `index` se fornecido deve ser inteiro >= 1 e <= length(to_do).
48
- - `item` quando exigido deve ser string não vazia e sem prefixo (o prefixo é atribuído pela ferramenta).
49
- - `to_do` (opcional) quando fornecido será normalizado: qualquer item sem prefixo será convertido para `☐ <texto>`.
50
- - Erros de validação devem retornar uma resposta clara com `error` contendo a mensagem e `status: 400` quando aplicável.
51
-
52
- Regras de mutação e idempotência
53
- --------------------------------
54
- - `add` é idempotente apenas se o mesmo item for adicionado com um identificador externo; por padrão, chamadas repetidas adicionam itens duplicados.
55
- - `complete` e `remove` são idempotentes no sentido que aplicar `complete` numa tarefa já concluída não causa erro — apenas mantém o estado `🗹`.
56
- - `remove` numa posição já removida (índice inválido) deve retornar erro de input inválido.
57
- - Alterações devem sempre retornar o novo array `to_do` completo para permitir sincronização do cliente.
58
-
59
- Execução automática e segurança (safe_tool)
60
- -------------------------------------------
61
- - A `todo` é considerada uma `safe_tool` para execuções automáticas pelo agente quando as ações são localizadas e previsíveis (ex.: `list`, `render`, `add` com item textual simples).
62
- - O agente pode autoaprová-la sem intervenção humana quando: a) a ação não modifica código fonte; b) não requer acesso a credenciais nem recursos externos sensíveis; c) não envolve remoção em massa sem confirmação.
63
- - Para ações destrutivas (por ex. `remove` em massa), recomenda-se confirmação humana, a menos que haja política explícita favorável.
64
-
65
- Regras de concorrência
66
- ----------------------
67
- - A ferramenta deve considerar o array `to_do` recebido como snapshot; mudanças concorrentes devem ser resolvidas pela camada que persiste estado (locking otimista ou verificação de versão) — se o projeto não persiste, o consumidor deve ser consciente de possíveis conflitos.
68
- - Em ambientes multi-agent, incluir um campo de `timestamp` ou `version` na camada de armazenamento é recomendado.
69
-
70
- Logging, audit e persistência
71
- -----------------------------
72
- - Toda execução deve ser logada com: timestamp, ação, argumentos, usuário/agent que solicitou (quando aplicável), resultado (sucesso/erro), e diffs entre `to_do` antigo e novo.
73
- - Logs de auditoria devem manter rastro de quem fez remoções e completions.
74
- - Persistência: a ferramenta não impõe mecanismo — se integrada a um backend, este deve garantir durabilidade e backups.
75
-
76
- Erros e respostas previsíveis
77
- -----------------------------
78
- - Erros de validação: respondem com { error: 'mensagem', status: 400 }
79
- - Erros internos: respondem com { error: 'Internal error', status: 500, details?: '...' }
80
- - Respostas de sucesso sempre incluem `to_do` (array) e `_tool_result`.
81
-
82
- Regras de interface (UI / renderização)
83
- ---------------------------------------
84
- - Para exibir ao usuário, usar `_tool_result.render` primeiro; se não existir, montar a partir de `_tool_result.parsed`.
85
- - A renderização deve ser simples e acessível: índice, marca, texto. Exemplo:
86
- 1. ☐ Implement unit tests
87
- 2. 🗹 Fix bug #123
88
- - Ao permitir edição inline, o cliente deve enviar payloads claros (`add`, `complete`, `remove`) e nunca enviar listas embutidas em texto livre.
89
-
90
- Regras de interação com o agente / prompt
91
- ----------------------------------------
92
- - O prompt do agente deve instruir explicitamente o uso da `todo` para planeamento e checklist (evitar texto livre para tarefas).
93
- - Exemplo de instrução no sistema prompt: "When producing a checklist or plan use the `todo` tool and structure items with the strict checklist format. Prefer machine-readable outputs in `_tool_result`."
94
- - Se o agente gerar tarefas, ele deve sempre preencher o `to_do` via chamada à ferramenta em vez de enviar as tarefas como texto normal.
95
-
96
- Regras de versionamento e compatibilidade
97
- ----------------------------------------
98
- - Quaisquer alterações ao schema (`to_do` structure, `_tool_result` keys) devem manter compatibilidade retroativa sempre que possível.
99
- - Quando um breaking change for necessário, atualizar versão da ferramenta e documentar migração no README.
100
-
101
- Testes e qualidade
102
- ------------------
103
- - Cobertura mínima recomendada: casos para cada ação (list/add/complete/remove/render), validação de inputs, idempotência e erros esperados.
104
- - Testes de integração devem validar persistência, concorrência e logs de auditoria.
105
-
106
- Limitações e considerações
107
- --------------------------
108
- - A ferramenta foca em listas simples e curtas; para listas muito grandes (milhares de itens) recomenda-se paginação e mecanismos de busca especializados.
109
- - Não é adequada para fluxos de aprovação complexos (multi-stage, com atribuições e dependências) sem extensão do schema.
110
-
111
- Exemplos de payloads e respostas
112
- --------------------------------
113
- 1) List
114
- Request: { "action": "list", "to_do": ["☐ Write docs"] }
115
- Response:
116
- {
117
- "to_do": ["☐ Write docs"],
118
- "_tool_result": {
119
- "parsed": [{ "index":1, "status":"pending","text":"Write docs" }],
120
- "render": "1. ☐ Write docs"
121
- }
122
- }
123
-
124
- 2) Add
125
- Request: { "action": "add", "item": "Implement validation" }
126
- Response: to_do updated with new item at the end and _tool_result as acima.
127
-
128
- 3) Complete
129
- Request: { "action":"complete", "index": 1 }
130
- Response: updated to_do with index 1 marked as `🗹 ` and _tool_result parsed accordingly.
131
-
132
- 4) Remove
133
- Request: { "action":"remove", "index": 2 }
134
- Response: updated to_do without the removed item and removed: "☐ text" returned optionally.
135
-
136
- Checklist de regras rápidas (resumo)
137
- ------------------------------------
138
- - Sempre usar prefixo `🗹 ` ou `☐ `.
139
- - `action` obrigatório e validado.
140
- - `item` sem prefixo quando usado em `add`.
141
- - `index` 1-based para `complete` e `remove`.
142
- - `todo` considerada safe_tool para operações comuns (list/add/render) — configure confirmação para ações destrutivas.
143
- - Retornar sempre `to_do` e `_tool_result`.
144
- - Log, audit, persistência e testes obrigatórios em ambiente de produção.
145
-
146
- ---
147
-
148
- Versões e histórico
149
- -------------------
150
- - v1.0 — Regras iniciais, esquema `to_do` + `_tool_result`.
151
-
152
-
153
- Se desejar, posso também:
154
- - Incluir este documento num README.md com exemplos em JSON formatado;
155
- - Registrar uma referência a este ficheiro diretamente no system prompt (prompt_builder) para que o agente cite as regras;
156
- - Gerar testes unitários / de integração e exemplos executáveis.
157
-