@nomad-e/bluma-cli 0.0.101 → 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/dist/config/bluma-mcp.json +13 -13
- package/dist/config/native_tools.json +9 -8
- package/dist/main.js +740 -762
- package/package.json +2 -2
- package/dist/config/todo_rules.md +0 -157
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nomad-e/bluma-cli",
|
|
3
|
-
"version": "0.0.
|
|
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": "
|
|
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
|
-
|