biaws 0.1.0 → 0.2.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.
Files changed (117) hide show
  1. package/README.md +165 -194
  2. package/docs/command-taxonomy.md +66 -26
  3. package/docs/instance-lifecycle.md +14 -14
  4. package/docs/releasing.md +4 -4
  5. package/package.json +53 -4
  6. package/src/admin/commands.js +214 -0
  7. package/src/admin/monitoringCommands.js +88 -0
  8. package/src/apiClient.js +18 -18
  9. package/src/baseCommands.js +5 -1
  10. package/src/cli/admin/config.js +1 -0
  11. package/src/cli/admin/doctor.js +1 -0
  12. package/src/cli/admin/install.js +1 -0
  13. package/src/cli/admin/instance/backup.js +1 -0
  14. package/src/cli/admin/instance/list.js +1 -0
  15. package/src/cli/admin/instance/remove.js +1 -0
  16. package/src/cli/admin/instance/restore.js +1 -0
  17. package/src/cli/admin/instance/setup.js +1 -0
  18. package/src/cli/admin/instance/show.js +1 -0
  19. package/src/cli/admin/instance/start.js +1 -0
  20. package/src/cli/admin/instance/status.js +1 -0
  21. package/src/cli/admin/instance/stop.js +1 -0
  22. package/src/cli/admin/monitoring/build.js +3 -0
  23. package/src/cli/admin/monitoring/logs.js +3 -0
  24. package/src/cli/admin/monitoring/provision.js +1 -0
  25. package/src/cli/admin/monitoring/start.js +3 -0
  26. package/src/cli/admin/monitoring/status.js +3 -0
  27. package/src/cli/admin/monitoring/stop.js +3 -0
  28. package/src/cli/admin/monitoring/validate.js +3 -0
  29. package/src/cli/config/doctor.js +1 -0
  30. package/src/cli/config/init.js +1 -0
  31. package/src/cli/config/login.js +1 -0
  32. package/src/cli/config/profiles/list.js +1 -0
  33. package/src/cli/config/profiles/use.js +1 -0
  34. package/src/cli/config/set.js +1 -0
  35. package/src/cli/config/show.js +1 -0
  36. package/src/cli/config/unset.js +1 -0
  37. package/src/cli/help.js +71 -0
  38. package/src/cli/workspace/agent/configure/claude.js +1 -0
  39. package/src/cli/workspace/agent/configure/codex.js +1 -0
  40. package/src/cli/workspace/agent/doctor.js +1 -0
  41. package/src/cli/workspace/api.js +1 -0
  42. package/src/cli/workspace/applications/get.js +1 -0
  43. package/src/cli/workspace/applications/list.js +1 -0
  44. package/src/cli/workspace/current.js +1 -0
  45. package/src/cli/workspace/demands/complete-task.js +1 -0
  46. package/src/cli/workspace/demands/get.js +1 -0
  47. package/src/cli/workspace/demands/list.js +1 -0
  48. package/src/cli/workspace/demands/task-status.js +1 -0
  49. package/src/cli/workspace/demands/tasks.js +1 -0
  50. package/src/cli/workspace/get.js +1 -0
  51. package/src/cli/workspace/init.js +1 -0
  52. package/src/cli/workspace/issues/get.js +1 -0
  53. package/src/cli/workspace/issues/list.js +1 -0
  54. package/src/cli/workspace/issues/transition.js +1 -0
  55. package/src/cli/workspace/list.js +1 -0
  56. package/src/cli/workspace/monitoring/describe.js +1 -0
  57. package/src/cli/workspace/monitoring/signal.js +1 -0
  58. package/src/cli/workspace/monitoring/signals.js +1 -0
  59. package/src/cli/workspace/monitoring/validate.js +1 -0
  60. package/src/cli/workspace/skills/install-all.js +1 -0
  61. package/src/cli/workspace/skills/install.js +1 -0
  62. package/src/cli/workspace/skills/list.js +1 -0
  63. package/src/cli/workspace/skills/publish-all.js +1 -0
  64. package/src/cli/workspace/skills/publish.js +1 -0
  65. package/src/cli/workspace/skills/status.js +1 -0
  66. package/src/cli/workspace/skills/update.js +1 -0
  67. package/src/cli/workspace/unlink.js +1 -0
  68. package/src/cli/workspace/use.js +1 -0
  69. package/src/{compatibilityCommands.js → commandFactories.js} +6 -2
  70. package/src/commands/agent/configure.js +1 -1
  71. package/src/commands/agent/doctor.js +1 -1
  72. package/src/commands/agent.js +8 -5
  73. package/src/commands/applications/get.js +1 -1
  74. package/src/commands/applications/list.js +1 -1
  75. package/src/commands/applications.js +3 -2
  76. package/src/commands/configure/skills.js +3 -1
  77. package/src/commands/demands/complete-task.js +1 -1
  78. package/src/commands/demands/get.js +1 -1
  79. package/src/commands/demands/list.js +1 -1
  80. package/src/commands/demands/task-status.js +1 -1
  81. package/src/commands/demands/tasks.js +1 -1
  82. package/src/commands/demands.js +3 -2
  83. package/src/commands/instance/backup.js +6 -5
  84. package/src/commands/instance/restore.js +6 -5
  85. package/src/commands/instance/setup.js +4 -4
  86. package/src/commands/issues/get.js +1 -1
  87. package/src/commands/issues/list.js +1 -1
  88. package/src/commands/issues/transition.js +1 -1
  89. package/src/commands/issues.js +3 -2
  90. package/src/commands/monitoring/describe.js +1 -1
  91. package/src/commands/monitoring/signal.js +1 -1
  92. package/src/commands/monitoring/signals.js +1 -1
  93. package/src/commands/monitoring/validate.js +1 -1
  94. package/src/commands/monitoring.js +1 -1
  95. package/src/commands/skills/install-all.js +1 -1
  96. package/src/commands/skills/install.js +1 -1
  97. package/src/commands/skills/list.js +1 -1
  98. package/src/commands/skills/publish-all.js +1 -1
  99. package/src/commands/skills/publish.js +1 -1
  100. package/src/commands/skills/status.js +1 -1
  101. package/src/commands/skills/update.js +1 -1
  102. package/src/commands/skills.js +4 -2
  103. package/src/commands/workspaces/get.js +1 -1
  104. package/src/commands/workspaces/list.js +1 -1
  105. package/src/commands/workspaces.js +3 -2
  106. package/src/configuration/commands.js +373 -0
  107. package/src/configure/command.js +3 -1
  108. package/src/core/configuration.js +152 -0
  109. package/src/core/context.js +45 -15
  110. package/src/core/processRunner.js +32 -14
  111. package/src/core/wizard.js +53 -34
  112. package/src/domain/readCommand.js +2 -0
  113. package/src/domain/writeService.js +19 -20
  114. package/src/index.js +6 -1
  115. package/src/instance/service.js +5 -5
  116. package/src/workspace/apiCommand.js +58 -0
  117. package/src/workspace/commands.js +191 -0
package/README.md CHANGED
@@ -1,229 +1,200 @@
1
1
  # Bondia Workspaces CLI
2
2
 
3
- CLI do Bondia Workspaces para configurar capacidades locais e integrar agentes
4
- externos aos contratos operacionais da plataforma.
3
+ CLI do Bondia Workspaces para administrar instalações, configurar o acesso
4
+ global e operar os recursos do workspace associado à pasta atual.
5
5
 
6
6
  ## Instalação
7
7
 
8
- O pacote público usa o nome `biaws` e expõe um binário com shebang portátil:
9
-
10
8
  ```bash
11
9
  npm install --global biaws
12
- biaws --help
10
+ biaws help
13
11
  biaws --version
14
12
  ```
15
13
 
16
- Para uma execução descartável, use `npx biaws --help`. Em um checkout para
17
- desenvolvimento, `npm --prefix biaws-cli link` cria o mesmo comando global; a
18
- rota direta equivalente é `./biaws-cli/bin/biaws.js`.
14
+ Uma execução descartável pode usar `npx biaws help`. Em um checkout de
15
+ desenvolvimento, `npm --prefix biaws-cli link` cria o mesmo comando global.
16
+
17
+ O pacote requer Node.js 20.19 ou superior. Operações administrativas de
18
+ instância também exigem Git, Docker e Docker Compose. Windows é suportado por
19
+ WSL2, não de forma nativa.
20
+
21
+ ## Organização
22
+
23
+ ```text
24
+ biaws admin ... # instalação e instâncias; não exige credencial
25
+ biaws config ... # URL, perfis e credenciais globais
26
+ biaws workspace ... # associação da pasta e recursos do workspace
27
+ biaws help [...] # introdução ou ajuda contextual
28
+ ```
29
+
30
+ Consulte a árvore completa em
31
+ [`docs/command-taxonomy.md`](docs/command-taxonomy.md).
32
+
33
+ ## Primeiros passos
34
+
35
+ Configure um perfil. A chave é lida de forma mascarada no terminal; em CI, use
36
+ `BIAWS_API_KEY`.
37
+
38
+ ```bash
39
+ biaws config init --api-url https://biaws.example.com
40
+ biaws config doctor
41
+ biaws config show
42
+ ```
43
+
44
+ Depois, associe a pasta atual a um workspace autorizado:
45
+
46
+ ```bash
47
+ cd /caminho/do/projeto
48
+ biaws workspace init
49
+ biaws workspace current
50
+ biaws workspace applications list
51
+ ```
52
+
53
+ Em modo não interativo, informe o ID ou o nome:
54
+
55
+ ```bash
56
+ biaws workspace init WORKSPACE_ID
57
+ ```
58
+
59
+ ## Configuração
60
+
61
+ Os arquivos globais ficam em `~/.config/biaws/` por padrão:
62
+
63
+ ```text
64
+ config.json perfis, URLs e preferências não secretas
65
+ credentials.json chaves de API; permissão 0600
66
+ ```
67
+
68
+ `BIAWS_CONFIG_HOME` e `XDG_CONFIG_HOME` podem alterar esse diretório. A pasta do
69
+ projeto recebe apenas `.biaws/config.json`, com o perfil e o ID do workspace.
70
+ Nenhuma chave é gravada no projeto.
71
+
72
+ A precedência é:
73
+
74
+ ```text
75
+ flags > variáveis de ambiente > configuração da pasta > perfil global > defaults
76
+ ```
77
+
78
+ Variáveis canônicas:
79
+
80
+ - `BIAWS_API_URL`: endereço da API;
81
+ - `BIAWS_API_KEY`: chave de API, recomendada para CI;
82
+ - `BIAWS_WORKSPACE_ID`: seleção temporária do workspace;
83
+ - `BIAWS_CONFIG_HOME`: diretório global de configuração;
84
+ - `BIAWS_ROOT`: raiz administrativa de um checkout da plataforma.
85
+
86
+ Perfis permitem usar instalações diferentes:
87
+
88
+ ```bash
89
+ BIAWS_API_KEY=... biaws config init --profile producao --api-url https://biaws.example.com
90
+ biaws config profiles list
91
+ biaws config profiles use producao
92
+ biaws config login --profile producao
93
+ ```
94
+
95
+ Nomes de perfil usam letras minúsculas ASCII, números, ponto, hífen ou
96
+ sublinhado.
97
+
98
+ ## Recursos do workspace
99
+
100
+ ```bash
101
+ biaws workspace list
102
+ biaws workspace applications list
103
+ biaws workspace demands get CLI-123
104
+ biaws workspace demands tasks CLI-123 --status Pendente
105
+ biaws workspace issues list --status open
106
+ biaws workspace issues transition ISSUE_ID --status Resolvido --yes
107
+ ```
108
+
109
+ `--json` emite envelopes estruturados em stdout. Leituras preservam escopo e
110
+ paginação. Escritas resolvem a entidade antes da alteração, exigem confirmação
111
+ e não repetem uma escrita quando o status já é o solicitado.
19
112
 
20
- Consultas e escritas na API funcionam somente com o pacote npm. Operações de
21
- instância e a configuração completa de MCP/skills também precisam dos assets
22
- Docker e scripts do repositório. Nesse caso, execute a partir do checkout ou
23
- defina sua raiz explicitamente:
113
+ Para uma rota ainda não coberta por um comando de domínio:
24
114
 
25
115
  ```bash
26
- export BIAWS_ROOT=/caminho/absoluto/para/biaws
27
- biaws instance list
116
+ biaws workspace api GET /catalog/workspaces
117
+ biaws workspace api PATCH /recurso/ID --body '{"status":"Ativo"}'
28
118
  ```
29
119
 
30
- Windows é suportado por WSL2; o binário e os scripts não têm suporte em Windows
31
- nativo.
120
+ ## Agentes e skills
121
+
122
+ ```bash
123
+ biaws workspace agent configure codex
124
+ biaws workspace agent configure claude
125
+ biaws workspace agent doctor codex
126
+ biaws workspace skills list
127
+ biaws workspace skills install SKILL_ID
128
+ biaws workspace skills update
129
+ biaws workspace skills status
130
+ ```
32
131
 
33
- ## Uso
132
+ O Codex usa `.codex/config.toml` e `.agents/skills`. O Claude Code usa
133
+ `.mcp.json` e `.claude/skills`. Configurações de terceiros são preservadas e
134
+ nenhuma credencial é gravada no projeto.
34
135
 
35
- Com a `biaws-api` em execução:
136
+ ## Monitoramento
36
137
 
37
138
  ```bash
38
- biaws skills list
39
- biaws skills publish \
40
- --dir ../../.agents/skills/biaws-example \
41
- --version 1.0.0 \
42
- --changelog "Publicação inicial"
43
- biaws skills publish-all \
44
- --dir ../../.agents/skills \
45
- --initial-version 1.0.0 \
46
- --changelog "Publicação inicial do catálogo"
47
- biaws skills install biaws-example
48
- biaws skills install-all
49
- biaws skills status
50
- biaws skills update
51
- biaws agent configure codex --project /caminho/do/projeto --workspace id-do-workspace
52
- biaws agent configure claude --project /caminho/do/projeto --workspace id-do-workspace
53
- biaws agent doctor codex --project /caminho/do/projeto --workspace id-do-workspace
54
- biaws monitoring signal <aplicação.componente.deployment.runtime> \
139
+ biaws workspace monitoring signal <runtime> \
55
140
  --status healthy \
56
- --source zabbix \
57
- --signal-id zabbix:event:18492 \
58
- --message "Serviço saudável" \
59
- --metadata-profile sgmp-health/v1 \
60
- --metadata '{"service_up":true,"database_up":true,"disk_usage_percent":73.42}'
61
- biaws monitoring signals <runtime-uuid-ou-caminho> --limit 20
62
- biaws monitoring describe --template sgmp-health --template-version 1
63
- biaws monitoring validate --template sgmp-health --template-version 1 \
64
- --payload '{"status":"healthy","message":"OK","metadata":{"service_up":true}}'
65
- biaws monitoring signal <runtime-uuid-ou-caminho> \
66
- --source external-monitor --template sgmp-health --template-version 1 \
67
- --payload '{"status":"healthy","message":"OK","metadata":{"service_up":true}}'
68
- ```
69
-
70
- ### Consultas de domínio
71
-
72
- As rotas `workspaces`, `applications`, `demands` e `issues` oferecem `list` e
73
- `get`; `demands tasks <melhoria>` lista tarefas por ID ou código. Filtros de
74
- workspace/aplicação, busca, status, página e limite são enviados à API sem
75
- ampliar o escopo. A saída humana sempre informa escopo e paginação. `--json`
76
- emite somente o envelope versionado `biaws.read.v1` em stdout; diagnósticos
77
- permanecem em stderr.
78
-
79
- As escritas remotas são restritas às ações `demands task-status`,
80
- `demands complete-task` e `issues transition`. Elas resolvem a entidade antes
81
- da alteração, exigem confirmação (`--yes` em CI), enviam somente o novo status
82
- e retornam `biaws.write.v1`. Repetir o status atual não envia outra escrita.
141
+ --source synthetic-http \
142
+ --signal-id check:42
143
+
144
+ biaws workspace monitoring signals <runtime> --limit 20
145
+ biaws workspace monitoring describe --template sgmp-health --template-version 1
146
+ biaws workspace monitoring validate --template sgmp-health --template-version 1 \
147
+ --payload '{"status":"healthy"}'
148
+ ```
149
+
150
+ O contrato completo está em [`../docs/monitoring.md`](../docs/monitoring.md).
151
+
152
+ ## Administração da instalação
153
+
154
+ Diagnostique os pré-requisitos e baixe uma release verificada:
83
155
 
84
156
  ```bash
85
- biaws workspaces list --json
86
- biaws applications list --workspace "$ISSUE_WORKSPACE_ID" --page 1 --limit 20
87
- biaws demands get CLI-OCLIF-2026-08-18 --workspace "$ISSUE_WORKSPACE_ID"
88
- biaws demands tasks CLI-OCLIF-2026-08-18 --status Pendente --json
89
- biaws issues list --application APPLICATION_ID --status open --json
90
- biaws demands complete-task CLI-OCLIF-2026-08-18 CLI-OCLIF-09 --yes --json
91
- biaws issues transition ISSUE_ID --status Resolvido --yes --json
92
- ```
93
-
94
- `monitoring signal` envia uma observação passiva para um runtime. A referência
95
- pode ser o UUID ou o caminho de identificadores
96
- `<aplicação>.<componente>.<deployment>.<runtime>`. Use
97
- `--signal-id` para que retries sejam idempotentes e `--observed-at` quando a
98
- observação ocorreu antes do envio. Estados aceitos: `unknown`, `healthy`,
99
- `degraded`, `unavailable` e `stopped`. O contrato completo está em
100
- [`../docs/monitoring.md`](../docs/monitoring.md).
101
-
102
- `monitoring describe` retorna contrato, amostra e apresentação da versão;
103
- `monitoring validate` executa JSONata sem persistir sinal. Ao enviar
104
- `--template` e `--template-version`, informe `--payload`; `--status` deixa de ser
105
- obrigatório porque o resultado é calculado pela API.
106
-
107
- Por padrão, as skills são instaladas em `.agents/skills`, considerando o diretório
108
- corrente. Outro destino pode ser informado com `--target`.
109
-
110
- O CLI mantém `.agents/biaws-skills.lock.json` com as versões instaladas. Ao usar
111
- `--force` ou `skills update`, a instalação anterior é preservada ao lado da nova com
112
- o sufixo `.backup-<data>`.
113
-
114
- `skills publish-all` examina somente os subdiretórios imediatos da pasta informada
115
- que contenham `SKILL.md`. Uma skill cuja versão já esteja no catálogo é ignorada,
116
- permitindo repetir a carga inicial sem gerar conflito. Falhas em uma skill não
117
- interrompem as demais e fazem o comando terminar com código de saída diferente de
118
- zero.
119
-
120
- `agent configure` registra o `biaws-mcp` e instala todas as skills do catálogo.
121
- Para Codex, usa `.codex/config.toml` e `.agents/skills`. Para Claude Code, usa
122
- `.mcp.json` e `.claude/skills`. O comando preserva outros servidores MCP e não
123
- altera configuração global. Ele grava `ISSUE_WORKSPACE_ID` na configuração MCP
124
- do projeto; informe `--workspace` quando a chave acessar mais de um workspace.
125
- Use `agent doctor` para verificar Node.js, API, autenticação, workspace,
126
- configuração e skills.
127
-
128
- As rotas `skills`, `agent` e `monitoring` são subcomandos oclif nativos: seus
129
- argumentos, flags, ajuda e erros de uso são descobertos e validados pelo
130
- framework. `agent configure` e `agent doctor` permanecem como aliases de
131
- compatibilidade; para novas automações, prefira `configure codex|claude` e
132
- `configure doctor`.
157
+ biaws admin doctor
158
+ biaws admin install --version 1.0.0 --dry-run
159
+ biaws admin install --version 1.0.0 --directory /opt/biaws
160
+ ```
133
161
 
134
- ## Configuração
162
+ O instalador busca `biaws-<versão>.tar.gz` e seu arquivo `.sha256` na release do
163
+ GitHub. Ele recusa diretórios não vazios e extrai somente depois de verificar o
164
+ checksum.
165
+
166
+ Gerencie as instâncias:
167
+
168
+ ```bash
169
+ biaws admin instance setup --interactive
170
+ biaws admin instance list
171
+ biaws admin instance status local
172
+ biaws admin instance start local
173
+ biaws admin instance stop local
174
+ biaws admin instance backup local
175
+ ```
176
+
177
+ Os executores de monitoramento ativo também pertencem ao nível administrativo:
135
178
 
136
- - `ISSUE_API_URL` ou `ISSUE_API_BASE_URL`: endereço da API.
137
- - `ISSUE_API_KEY`: chave enviada como `Authorization: Bearer`.
138
- - `ISSUE_WORKSPACE_ID`: workspace usado em execuções diretas do CLI. Para MCP,
139
- o `agent configure` grava esse valor na configuração local do projeto.
140
- - `BIAWS_ENV_FILE`: caminho absoluto para o `.env` da instância selecionada;
141
- contém URL e chave, e o setup o grava na configuração MCP do cliente.
142
- - `--api-url`: sobrescreve o endereço apenas para a execução atual.
143
- - `--api-key`: sobrescreve a chave apenas para a execução atual; evite porque o
144
- valor pode ficar visível na lista de processos ou no histórico do shell.
145
- - `--workspace`: seleciona o workspace e, em `agent configure`, persiste a
146
- seleção na configuração MCP do projeto. A seleção não amplia as permissões da
147
- identidade técnica.
148
-
149
- O valor padrão é `http://127.0.0.1:3100`.
150
-
151
- ## Fundação de comandos
152
-
153
- Os novos comandos usam bases separadas por contexto:
154
-
155
- - `LocalInstanceCommand` resolve raiz, diretório de instâncias e `.env` sem
156
- exigir credenciais;
157
- - `AuthenticatedApiCommand` valida a autenticação antes de criar o cliente HTTP;
158
- - `ProjectCommand` acrescenta a resolução explícita do diretório do projeto.
159
-
160
- Filesystem, processos, API e terminal ficam atrás de adapters injetáveis. A
161
- resolução cria um snapshot do ambiente e não altera `process.env`. Subprocessos
162
- são executados sem shell, recebem argumentos separados e encaminham sinais; ao
163
- receber segredos para redaction, sua saída é sanitizada antes de chegar ao
164
- terminal ou a erros.
165
-
166
- ## Wizards e planos
167
-
168
- Fluxos interativos usam `@inquirer/prompts` somente por meio de um
169
- `PromptAdapter`. Há adapters real, não interativo e programável para testes. A
170
- camada de wizard resolve flags e ambiente, coleta apenas campos ausentes, valida
171
- o conjunto, cria um plano imutável, apresenta um resumo redigido, confirma e só
172
- então chama o executor.
173
-
174
- - `--interactive` habilita perguntas quando há TTY;
175
- - `--non-interactive` nunca pergunta e lista todos os campos obrigatórios
176
- ausentes;
177
- - `--defaults` aplica defaults declarados explicitamente e é sempre opt-in;
178
- - `--yes` pula somente a confirmação, sem preencher campos;
179
- - `--json` não muda coleta ou confirmação e reserva o resumo serializado para
180
- saída estruturada.
181
-
182
- Segredos podem ser acessados pelo executor com `plan.get(campo)`, mas aparecem
183
- como `[REDACTED]` em `plan.values`, `toJSON()` e no resumo. Cancelamento, EOF e
184
- sinais abortam antes da chamada do executor com código estável.
185
-
186
- ## Instâncias locais
187
-
188
- `biaws instance setup`, `list`, `show`, `status`, `start` e `stop` cobrem o
189
- setup e o ciclo de vida local sem exigir chave da API. O setup valida nomes,
190
- URL, portas e storage antes de chamar Docker, preserva segredos existentes e
191
- alerta quando uma reexecução muda os destinos persistentes sem mover dados.
192
-
193
- A senha administrativa não possui flag: informe-a no prompt mascarado ou em
194
- `BIAWS_BOOTSTRAP_ADMIN_PASSWORD` num ambiente privado. Consulte o fluxo de
195
- automação e o smoke test Docker em
179
+ ```bash
180
+ biaws admin monitoring validate --instance local
181
+ biaws admin monitoring start --instance local
182
+ biaws admin monitoring status --instance local
183
+ biaws admin monitoring logs --instance local
184
+ biaws admin monitoring provision WORKSPACE_ID --instance local
185
+ ```
186
+
187
+ Detalhes e automação estão em
196
188
  [`docs/instance-lifecycle.md`](docs/instance-lifecycle.md).
197
189
 
198
190
  ## Desenvolvimento
199
191
 
200
192
  ```bash
201
193
  npm ci
194
+ npm run format:check
202
195
  npm run check
203
196
  npm test
204
197
  npm run package:verify
205
198
  ```
206
199
 
207
- O roteiro de publicação, migração dos wrappers e rollback está em
208
- [`docs/releasing.md`](docs/releasing.md). O comando de publicação é dry-run por
209
- padrão e nunca publica sem `--publish` explícito.
210
-
211
- ### Configuração de clientes e skills
212
-
213
- Os comandos nativos de projeto mantêm a chave exclusivamente no ambiente privado
214
- (`ISSUE_API_KEY` ou `--env-file`) e gravam no projeto apenas a URL indireta do
215
- runtime, o workspace e a configuração MCP gerenciada:
216
-
217
- ```bash
218
- biaws configure codex --project . --workspace <workspace-id>
219
- biaws configure claude --project . --workspace <workspace-id>
220
- biaws configure skills list --json
221
- biaws configure skills install <skill-id>
222
- biaws configure skills update [skill-id]
223
- biaws configure skills verify
224
- biaws configure doctor codex
225
- ```
226
-
227
- Configurações preexistentes de terceiros são preservadas. Um bloco `biaws`
228
- conflitante só é assumido pelo CLI com `--force`. Sem TTY, cliente, workspace e
229
- seleção de skill devem ser informados explicitamente; `--all` instala o catálogo.
200
+ O processo de publicação está em [`docs/releasing.md`](docs/releasing.md).
@@ -1,36 +1,76 @@
1
1
  # Taxonomia de comandos do BIAWS CLI
2
2
 
3
- O executável `biaws` organiza os comandos em três contextos canônicos:
3
+ O executável `biaws` possui três níveis canônicos e um comando explícito de
4
+ ajuda. Não há aliases para a taxonomia anterior.
4
5
 
5
- - `biaws instance ...`: administração local de instâncias. Não exige API key.
6
- - `biaws configure ...`: configuração de projeto, Codex, Claude e skills.
7
- - `biaws api ...`: leitura e escrita autenticadas em recursos do BIAWS.
6
+ ```text
7
+ biaws
8
+ ├── help [comando...]
9
+ ├── admin
10
+ │ ├── install
11
+ │ ├── doctor
12
+ │ ├── config
13
+ │ ├── instance setup|list|show|status|start|stop|backup|restore|remove
14
+ │ └── monitoring build|validate|start|stop|status|logs|provision
15
+ ├── config
16
+ │ ├── init|login|show|set|unset|doctor
17
+ │ └── profiles list|use
18
+ └── workspace
19
+ ├── list|get|init|use|current|unlink
20
+ ├── agent configure codex|claude
21
+ ├── agent doctor
22
+ ├── applications list|get
23
+ ├── demands list|get|tasks|task-status|complete-task
24
+ ├── issues list|get|transition
25
+ ├── skills list|install|install-all|status|update|publish|publish-all
26
+ ├── monitoring signal|signals|describe|validate
27
+ └── api <método> <caminho>
28
+ ```
8
29
 
9
- Durante a migração, `skills`, `agent` e `monitoring` continuam disponíveis como
10
- rotas de compatibilidade. Seus argumentos e opções são encaminhados às
11
- implementações existentes; a substituição por comandos oclif específicos será
12
- feita incrementalmente.
30
+ ## Nível administrativo
13
31
 
14
- ## Convenções
32
+ `biaws admin ...` não exige URL, chave de API nem workspace. Ele opera a
33
+ instalação da plataforma, seus pré-requisitos e as instâncias locais. O comando
34
+ `admin install` baixa uma release versionada, exige checksum SHA-256 e não
35
+ sobrescreve diretórios que contenham arquivos.
15
36
 
16
- - nomes de comandos e flags usam kebab-case;
17
- - ajuda e versão são fornecidas pelo oclif;
18
- - erros de uso retornam código 2 e falhas operacionais retornam código 1;
19
- - `--json` reserva stdout para JSON e envia diagnósticos para stderr;
20
- - aliases `get` e `set` só serão adicionados quando não reduzirem a descoberta;
21
- - rotas antigas devem emitir depreciação antes de serem removidas.
37
+ ## Configuração global
38
+
39
+ `biaws config ...` gerencia perfis, URLs e credenciais em um diretório XDG. A
40
+ localização segue esta ordem:
41
+
42
+ 1. `BIAWS_CONFIG_HOME`;
43
+ 2. `$XDG_CONFIG_HOME/biaws`;
44
+ 3. `$HOME/.config/biaws`.
45
+
46
+ `config.json` armazena somente dados não secretos. As chaves ficam em
47
+ `credentials.json`, criado com permissão `0600`. Um perfil pode ser selecionado
48
+ globalmente ou pela configuração da pasta.
22
49
 
23
- ## Árvore planejada
50
+ ## Nível de workspace
51
+
52
+ `biaws workspace init` lista os workspaces autorizados e cria
53
+ `.biaws/config.json` na pasta selecionada. A associação é encontrada também a
54
+ partir dos subdiretórios dessa pasta. Comandos remotos exigem essa associação,
55
+ uma seleção explícita por flag ou as variáveis próprias para automação.
56
+
57
+ A precedência da resolução é:
24
58
 
25
59
  ```text
26
- biaws
27
- ├── instance setup|list|show|status|start|stop|backup|restore|remove
28
- ├── configure codex|claude|skills|doctor
29
- ├── workspaces list|get
30
- ├── applications list|get
31
- ├── demands list|get|tasks|task-status|complete-task
32
- ├── issues list|get|transition
33
- ├── skills ... (compatibilidade)
34
- ├── agent ... (compatibilidade)
35
- └── monitoring ... (compatibilidade)
60
+ flags > variáveis de ambiente > configuração da pasta > perfil global > defaults
36
61
  ```
62
+
63
+ As variáveis canônicas são `BIAWS_API_URL`, `BIAWS_API_KEY` e
64
+ `BIAWS_WORKSPACE_ID`. Os nomes `ISSUE_*` permanecem aceitos como variáveis de
65
+ ambiente internas durante a transição do backend, mas não representam comandos
66
+ antigos do CLI.
67
+
68
+ ## Convenções
69
+
70
+ - comandos e flags usam kebab-case;
71
+ - textos apresentados ao usuário usam português do Brasil com Unicode;
72
+ - descrições curtas começam em letra minúscula e não terminam em ponto;
73
+ - `--json` reserva stdout para JSON e envia diagnósticos para stderr;
74
+ - erros de uso retornam código 2 e falhas operacionais retornam código 1;
75
+ - segredos não são aceitos em argumentos de linha de comando;
76
+ - `biaws help` explica o produto e `biaws help <tópico>` navega na árvore.
@@ -6,7 +6,7 @@ O setup interativo coleta entradas ausentes, mostra um plano redigido e pede
6
6
  confirmação antes de mutar arquivos ou chamar Docker:
7
7
 
8
8
  ```bash
9
- biaws instance setup --interactive
9
+ biaws admin instance setup --interactive
10
10
  ```
11
11
 
12
12
  Em automação, defaults precisam ser autorizados e a senha deve vir de um
@@ -14,7 +14,7 @@ ambiente privado, nunca de argv:
14
14
 
15
15
  ```bash
16
16
  BIAWS_BOOTSTRAP_ADMIN_PASSWORD='...' \
17
- biaws instance setup --name local --defaults --non-interactive --yes
17
+ biaws admin instance setup --name local --defaults --non-interactive --yes
18
18
  ```
19
19
 
20
20
  Use `--storage volumes` ou `--storage directories --storage-root /srv/biaws`.
@@ -24,11 +24,11 @@ CLI não move dados existentes implicitamente.
24
24
  ## Operação
25
25
 
26
26
  ```bash
27
- biaws instance list
28
- biaws instance show local
29
- biaws instance status local
30
- biaws instance start local
31
- biaws instance stop local
27
+ biaws admin instance list
28
+ biaws admin instance show local
29
+ biaws admin instance status local
30
+ biaws admin instance start local
31
+ biaws admin instance stop local
32
32
  ```
33
33
 
34
34
  `list` e `show` omitem o conteúdo integral do `.env`. `start`, `stop` e
@@ -47,7 +47,7 @@ Em um checkout descartável com Docker e OpenSSL disponíveis:
47
47
 
48
48
  ```bash
49
49
  BIAWS_BOOTSTRAP_ADMIN_PASSWORD='smoke-only-change-me' \
50
- biaws instance setup \
50
+ biaws admin instance setup \
51
51
  --name smoke --mongo-port 27117 --api-port 3110 --ui-port 4410 \
52
52
  --public-url http://localhost:4410 --storage volumes \
53
53
  --admin-email smoke@example.test --admin-name Smoke \
@@ -55,9 +55,9 @@ BIAWS_BOOTSTRAP_ADMIN_PASSWORD='smoke-only-change-me' \
55
55
  --auth-rate-limit-max 100 --auth-rate-limit-window 10 \
56
56
  --api-key-rate-limit-max 1000 --api-key-rate-limit-window 3600 \
57
57
  --no-demo-seed --non-interactive --yes
58
- biaws instance status smoke
59
- biaws instance stop smoke
60
- biaws instance start smoke
58
+ biaws admin instance status smoke
59
+ biaws admin instance stop smoke
60
+ biaws admin instance start smoke
61
61
  ```
62
62
 
63
63
  ## Backup, restore e remoção
@@ -66,9 +66,9 @@ Os comandos oclif usam o archive portátil existente sem colocar a senha em
66
66
  `argv`:
67
67
 
68
68
  ```bash
69
- biaws instance backup alpha --password-file /caminho/privado/senha
70
- biaws instance restore beta --archive ./alpha.tar.gz.enc --password-file /caminho/privado/senha --yes
71
- biaws instance remove beta --yes
69
+ biaws admin instance backup alpha --password-file /caminho/privado/senha
70
+ biaws admin instance restore beta --archive ./alpha.tar.gz.enc --password-file /caminho/privado/senha --yes
71
+ biaws admin instance remove beta --yes
72
72
  ```
73
73
 
74
74
  Em TTY, a senha pode ser solicitada de forma mascarada. Restore e remove
package/docs/releasing.md CHANGED
@@ -57,7 +57,7 @@ Os wrappers públicos preservados são:
57
57
 
58
58
  - `scripts/setup-local.sh`: setup co-localizado seguido de configuração;
59
59
  - `scripts/setup-client.sh`: configuração de um cliente remoto;
60
- - `scripts/configure.sh`: adapter legado para `biaws agent configure/doctor`.
60
+ - `scripts/configure.sh`: adapter legado para `biaws workspace agent configure/doctor`.
61
61
 
62
62
  Esses wrappers usam `scripts/run-biaws-cli.sh`, que fixa `BIAWS_ROOT` no
63
63
  checkout e executa o entrypoint com shebang. Em um clone limpo, ele instala
@@ -79,14 +79,14 @@ Antes de marcar uma release, use credenciais descartáveis e execute, nesta
79
79
  ordem, em uma instância isolada:
80
80
 
81
81
  1. `biaws --help` e `biaws --version` pela instalação empacotada;
82
- 2. `biaws instance setup` e `biaws configure codex|claude` com `BIAWS_ROOT`;
82
+ 2. `biaws admin instance setup` e `biaws workspace agent configure codex|claude` com `BIAWS_ROOT`;
83
83
  3. uma consulta `workspaces list --json` e outra por código, como
84
84
  `demands get <código> --json`;
85
85
  4. uma escrita idempotente com `demands task-status ... --yes --json`, seguida
86
86
  de nova leitura;
87
- 5. `biaws instance backup`, restore em uma instância de destino e validação de
87
+ 5. `biaws admin instance backup`, restore em uma instância de destino e validação de
88
88
  API/UI;
89
- 6. `biaws instance remove <destino> --yes`, preservando dados externos salvo
89
+ 6. `biaws admin instance remove <destino> --yes`, preservando dados externos salvo
90
90
  autorização explícita.
91
91
 
92
92
  Capture somente códigos de saída, envelopes sanitizados e checksums. Não grave
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "biaws",
3
- "version": "0.1.0",
4
- "description": "CLI do Bondia Workspaces para configuração do ambiente local",
3
+ "version": "0.2.1",
4
+ "description": "CLI do Bondia Workspaces para administração, configuração e operação de workspaces",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
7
7
  "type": "git",
@@ -39,8 +39,57 @@
39
39
  "oclif": {
40
40
  "bin": "biaws",
41
41
  "dirname": "biaws",
42
- "commands": "./src/commands",
43
- "topicSeparator": " "
42
+ "commands": "./src/cli",
43
+ "topicSeparator": " ",
44
+ "topics": {
45
+ "admin": {
46
+ "description": "Administra a instalação e as instâncias da plataforma",
47
+ "subtopics": {
48
+ "instance": {
49
+ "description": "Configura e opera instâncias locais do BIAWS"
50
+ },
51
+ "monitoring": {
52
+ "description": "Configura e opera executores de monitoramento"
53
+ }
54
+ }
55
+ },
56
+ "config": {
57
+ "description": "Gerencia perfis, URLs e credenciais globais",
58
+ "subtopics": {
59
+ "profiles": {
60
+ "description": "Gerencia os perfis globais de acesso"
61
+ }
62
+ }
63
+ },
64
+ "workspace": {
65
+ "description": "Associa a pasta e opera os recursos do workspace",
66
+ "subtopics": {
67
+ "agent": {
68
+ "description": "Configura e diagnostica clientes de agentes",
69
+ "subtopics": {
70
+ "configure": {
71
+ "description": "Configura clientes de agentes na pasta atual"
72
+ }
73
+ }
74
+ },
75
+ "applications": {
76
+ "description": "Consulta aplicações do workspace"
77
+ },
78
+ "demands": {
79
+ "description": "Consulta melhorias e suas tarefas"
80
+ },
81
+ "issues": {
82
+ "description": "Consulta e atualiza issues"
83
+ },
84
+ "monitoring": {
85
+ "description": "Envia e consulta sinais de monitoramento"
86
+ },
87
+ "skills": {
88
+ "description": "Gerencia as skills do workspace"
89
+ }
90
+ }
91
+ }
92
+ }
44
93
  },
45
94
  "scripts": {
46
95
  "start": "node bin/biaws.js",