@runflow-ai/cli 0.2.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 (66) hide show
  1. package/CLI-DOCS.md +428 -0
  2. package/README.md +127 -0
  3. package/dist/commands/agents/agents.command.d.ts +13 -0
  4. package/dist/commands/agents/agents.command.js +508 -0
  5. package/dist/commands/agents/agents.command.js.map +1 -0
  6. package/dist/commands/connectors/connectors.command.d.ts +11 -0
  7. package/dist/commands/connectors/connectors.command.js +72 -0
  8. package/dist/commands/connectors/connectors.command.js.map +1 -0
  9. package/dist/commands/credentials/credentials.command.d.ts +11 -0
  10. package/dist/commands/credentials/credentials.command.js +118 -0
  11. package/dist/commands/credentials/credentials.command.js.map +1 -0
  12. package/dist/commands/datasources/datasources.command.d.ts +11 -0
  13. package/dist/commands/datasources/datasources.command.js +72 -0
  14. package/dist/commands/datasources/datasources.command.js.map +1 -0
  15. package/dist/commands/executions/executions.command.d.ts +11 -0
  16. package/dist/commands/executions/executions.command.js +72 -0
  17. package/dist/commands/executions/executions.command.js.map +1 -0
  18. package/dist/commands/health/health.command.d.ts +11 -0
  19. package/dist/commands/health/health.command.js +66 -0
  20. package/dist/commands/health/health.command.js.map +1 -0
  21. package/dist/commands/login/login.command.d.ts +12 -0
  22. package/dist/commands/login/login.command.js +127 -0
  23. package/dist/commands/login/login.command.js.map +1 -0
  24. package/dist/commands/prompts/prompts.command.d.ts +11 -0
  25. package/dist/commands/prompts/prompts.command.js +102 -0
  26. package/dist/commands/prompts/prompts.command.js.map +1 -0
  27. package/dist/commands/search-tools/search-tools.command.d.ts +11 -0
  28. package/dist/commands/search-tools/search-tools.command.js +89 -0
  29. package/dist/commands/search-tools/search-tools.command.js.map +1 -0
  30. package/dist/commands/secret/secret.command.d.ts +4 -0
  31. package/dist/commands/secret/secret.command.js +22 -0
  32. package/dist/commands/secret/secret.command.js.map +1 -0
  33. package/dist/commands/sessions/sessions.command.d.ts +11 -0
  34. package/dist/commands/sessions/sessions.command.js +97 -0
  35. package/dist/commands/sessions/sessions.command.js.map +1 -0
  36. package/dist/commands/traces/traces.command.d.ts +11 -0
  37. package/dist/commands/traces/traces.command.js +73 -0
  38. package/dist/commands/traces/traces.command.js.map +1 -0
  39. package/dist/commands/triggers/triggers.command.d.ts +11 -0
  40. package/dist/commands/triggers/triggers.command.js +72 -0
  41. package/dist/commands/triggers/triggers.command.js.map +1 -0
  42. package/dist/commands/users/users.command.d.ts +12 -0
  43. package/dist/commands/users/users.command.js +138 -0
  44. package/dist/commands/users/users.command.js.map +1 -0
  45. package/dist/common/api-client.d.ts +25 -0
  46. package/dist/common/api-client.js +97 -0
  47. package/dist/common/api-client.js.map +1 -0
  48. package/dist/common/banner.d.ts +1 -0
  49. package/dist/common/banner.js +9 -0
  50. package/dist/common/banner.js.map +1 -0
  51. package/dist/common/config.d.ts +27 -0
  52. package/dist/common/config.js +63 -0
  53. package/dist/common/config.js.map +1 -0
  54. package/dist/common/help.d.ts +2 -0
  55. package/dist/common/help.js +34 -0
  56. package/dist/common/help.js.map +1 -0
  57. package/dist/common/logger.d.ts +9 -0
  58. package/dist/common/logger.js +84 -0
  59. package/dist/common/logger.js.map +1 -0
  60. package/dist/common/ui.d.ts +7 -0
  61. package/dist/common/ui.js +20 -0
  62. package/dist/common/ui.js.map +1 -0
  63. package/dist/index.d.ts +2 -0
  64. package/dist/index.js +99 -0
  65. package/dist/index.js.map +1 -0
  66. package/package.json +64 -0
package/CLI-DOCS.md ADDED
@@ -0,0 +1,428 @@
1
+ # RunFlow CLI Documentation
2
+
3
+ **Version:** 0.2.0
4
+ **Command:** `rf`
5
+
6
+ A CLI para interagir com a API Portal RunFlow, permitindo gerenciar agentes de IA, usuários, prompts e muito mais.
7
+
8
+ ## Instalação
9
+
10
+ ```bash
11
+ npm install -g runflow-cli
12
+ ```
13
+
14
+ ## Autenticação
15
+
16
+ Antes de usar a CLI, você precisa fazer login:
17
+
18
+ ```bash
19
+ rf login --api-key <sua-api-key>
20
+ ```
21
+
22
+ ## Comandos Disponíveis
23
+
24
+ ### 🤖 Agents (Agentes)
25
+
26
+ Gerenciar agentes de IA.
27
+
28
+ ```bash
29
+ rf agents <action> [data]
30
+ rf agent <action> [data] # alias
31
+ ```
32
+
33
+ **Ações:**
34
+
35
+ | Ação | Descrição | Exemplo |
36
+ |------|-----------|---------|
37
+ | `list` | Lista agentes e seleciona um ativo | `rf agents list` |
38
+ | `get` | Exibe o agente ativo | `rf agents get` |
39
+ | `create <json>` | Cria um novo agente | `rf agents create '{"name":"MyAgent"}'` |
40
+ | `update <json>` | Atualiza o agente ativo | `rf agents update '{"name":"Updated"}'` |
41
+ | `delete` | Remove o agente ativo | `rf agents delete` |
42
+ | `clone` | Clona repositório do agente (download) | `rf agents clone` |
43
+ | `duplicate` | Duplica agente no servidor | `rf agents duplicate` |
44
+ | `deploy` | Faz deploy do agente com mudanças locais | `rf agents deploy` |
45
+
46
+ **Exemplo de uso:**
47
+ ```bash
48
+ # Listar e selecionar um agente
49
+ rf agents list
50
+
51
+ # Clonar repositório do agente selecionado
52
+ rf agents clone
53
+
54
+ # Fazer deploy após modificações
55
+ cd nome-do-agente/
56
+ # ... fazer mudanças ...
57
+ rf agents deploy
58
+ ```
59
+
60
+ **🎯 Interface Interativa do `rf agents list`:**
61
+
62
+ Quando você executa `rf agents list`, a CLI apresenta uma interface interativa em duas etapas:
63
+
64
+ **1. Seleção do Agente:**
65
+ ```
66
+ ? Select an agent: (Use arrow keys)
67
+ ❯ my-chatbot-agent
68
+ data-processor-v2
69
+ webhook-handler
70
+ email-automation
71
+ ```
72
+
73
+ **2. Menu de Ações:**
74
+ Após selecionar um agente, aparece um menu com todas as ações possíveis:
75
+ ```
76
+ ? What would you like to do with "my-chatbot-agent"? (Use arrow keys)
77
+ ❯ 📥 Clone repository (download)
78
+ 🚀 Duplicate agent on server
79
+ 🚢 Deploy agent
80
+ 🗑️ Delete agent
81
+ ❌ Cancel
82
+ ```
83
+
84
+ **Ações disponíveis no menu:**
85
+ - **📥 Clone repository**: Baixa o código do agente para desenvolvimento local
86
+ - **🚀 Duplicate agent**: Cria uma cópia do agente no servidor
87
+ - **🚢 Deploy agent**: Faz deploy de mudanças locais (requer estar no diretório do agente)
88
+ - **🗑️ Delete agent**: Remove o agente (com confirmação)
89
+ - **❌ Cancel**: Cancela a operação
90
+
91
+ **Fluxo típico:**
92
+ ```bash
93
+ rf agents list
94
+ # 1. Seleciona "my-chatbot-agent"
95
+ # 2. Escolhe "📥 Clone repository"
96
+ # 3. Pasta "my-chatbot-agent/" é criada com Git funcionando
97
+ # 4. Desenvolve localmente
98
+ # 5. rf agents deploy (dentro da pasta do agente)
99
+ ```
100
+
101
+ ### 👥 Users (Usuários)
102
+
103
+ Gerenciar usuários.
104
+
105
+ ```bash
106
+ rf users <action> [data]
107
+ rf user <action> [data] # alias
108
+ ```
109
+
110
+ **Ações:**
111
+
112
+ | Ação | Descrição | Exemplo |
113
+ |------|-----------|---------|
114
+ | `list` | Lista usuários | `rf users list` |
115
+ | `get` | Exibe usuário selecionado | `rf users get` |
116
+ | `create <json>` | Cria usuário | `rf users create '{"name":"User"}'` |
117
+ | `update <json>` | Atualiza usuário selecionado | `rf users update '{"name":"Updated"}'` |
118
+ | `delete` | Remove usuário selecionado | `rf users delete` |
119
+
120
+ ### 📝 Prompts
121
+
122
+ Gerenciar prompts de IA.
123
+
124
+ ```bash
125
+ rf prompts <action> <name> [data]
126
+ rf prompt <action> <name> [data] # alias
127
+ ```
128
+
129
+ **Ações:**
130
+
131
+ | Ação | Descrição | Exemplo |
132
+ |------|-----------|---------|
133
+ | `get <name>` | Obtém um prompt | `rf prompts get meu-prompt` |
134
+ | `render <name> <json>` | Renderiza prompt com variáveis | `rf prompts render meu-prompt '{"var":"value"}'` |
135
+
136
+ ### 🔑 Credentials (Credenciais)
137
+
138
+ Gerenciar credenciais.
139
+
140
+ ```bash
141
+ rf credentials <action> [name]
142
+ rf credential <action> [name] # alias
143
+ ```
144
+
145
+ **Ações:**
146
+
147
+ | Ação | Descrição | Exemplo |
148
+ |------|-----------|---------|
149
+ | `list` | Lista credenciais | `rf credentials list` |
150
+ | `get <name>` | Obtém credencial específica | `rf credentials get minha-credencial` |
151
+
152
+ ### 🔍 Search Tools
153
+
154
+ Gerenciar ferramentas de busca.
155
+
156
+ ```bash
157
+ rf search-tools <action>
158
+ ```
159
+
160
+ **Ações:**
161
+
162
+ | Ação | Descrição | Exemplo |
163
+ |------|-----------|---------|
164
+ | `list` | Lista ferramentas de busca | `rf search-tools list` |
165
+
166
+ ### ⚡ Executions
167
+
168
+ Gerenciar execuções.
169
+
170
+ ```bash
171
+ rf executions <action>
172
+ ```
173
+
174
+ **Ações:**
175
+
176
+ | Ação | Descrição | Exemplo |
177
+ |------|-----------|---------|
178
+ | `list` | Lista execuções | `rf executions list` |
179
+
180
+ ### 💾 Sessions
181
+
182
+ Gerenciar sessões.
183
+
184
+ ```bash
185
+ rf sessions <action>
186
+ ```
187
+
188
+ **Ações:**
189
+
190
+ | Ação | Descrição | Exemplo |
191
+ |------|-----------|---------|
192
+ | `list` | Lista sessões | `rf sessions list` |
193
+
194
+ ### 📊 Datasources
195
+
196
+ Gerenciar fontes de dados.
197
+
198
+ ```bash
199
+ rf datasources <action>
200
+ ```
201
+
202
+ **Ações:**
203
+
204
+ | Ação | Descrição | Exemplo |
205
+ |------|-----------|---------|
206
+ | `list` | Lista fontes de dados | `rf datasources list` |
207
+
208
+ ### 🔗 Connectors
209
+
210
+ Gerenciar conectores.
211
+
212
+ ```bash
213
+ rf connectors <action>
214
+ ```
215
+
216
+ **Ações:**
217
+
218
+ | Ação | Descrição | Exemplo |
219
+ |------|-----------|---------|
220
+ | `list` | Lista conectores | `rf connectors list` |
221
+
222
+ ### 🎯 Triggers
223
+
224
+ Gerenciar triggers.
225
+
226
+ ```bash
227
+ rf triggers <action>
228
+ ```
229
+
230
+ **Ações:**
231
+
232
+ | Ação | Descrição | Exemplo |
233
+ |------|-----------|---------|
234
+ | `list` | Lista triggers | `rf triggers list` |
235
+
236
+ ### 📈 Traces
237
+
238
+ Gerenciar traces.
239
+
240
+ ```bash
241
+ rf traces <action>
242
+ ```
243
+
244
+ **Ações:**
245
+
246
+ | Ação | Descrição | Exemplo |
247
+ |------|-----------|---------|
248
+ | `list` | Lista traces | `rf traces list` |
249
+
250
+ ### 🔐 Secret
251
+
252
+ Gerenciar secrets.
253
+
254
+ ```bash
255
+ rf secret <action>
256
+ ```
257
+
258
+ **Ações:**
259
+
260
+ | Ação | Descrição | Exemplo |
261
+ |------|-----------|---------|
262
+ | `list` | Lista secrets | `rf secret list` |
263
+
264
+ ### 🏥 Health
265
+
266
+ Verificar saúde da API.
267
+
268
+ ```bash
269
+ rf health [detail]
270
+ ```
271
+
272
+ **Descrição:** Verifica o status de saúde da API Portal.
273
+
274
+ ### 🔓 Login
275
+
276
+ Autenticar com a API RunFlow.
277
+
278
+ ```bash
279
+ rf login --api-key <key> [--api <url>] [--tenant-id <id>]
280
+ ```
281
+
282
+ **Opções:**
283
+ - `--api-key <key>`: Chave da API (obrigatório)
284
+ - `--api <url>`: URL da API (opcional)
285
+ - `--tenant-id <id>`: ID do tenant (opcional)
286
+
287
+ ## Opções Globais
288
+
289
+ Todos os comandos suportam as seguintes opções:
290
+
291
+ | Opção | Descrição | Exemplo |
292
+ |-------|-----------|---------|
293
+ | `--api-key <key>` | Sobrescrever chave da API | `rf agents list --api-key sk-123...` |
294
+ | `--api <url>` | Sobrescrever URL da API | `rf agents list --api https://api.runflow.ai` |
295
+ | `--verbose` | Modo verboso (logs detalhados) | `rf agents clone --verbose` |
296
+ | `--help, -h` | Exibir ajuda | `rf agents --help` |
297
+
298
+ ## Fluxo de Trabalho com Agentes
299
+
300
+ ### 1. Autenticação
301
+ ```bash
302
+ rf login --api-key sua-chave-aqui
303
+ ```
304
+
305
+ ### 2. Listar e Selecionar Agente
306
+ ```bash
307
+ rf agents list
308
+ # Seleciona um agente interativamente
309
+ ```
310
+
311
+ ### 3. Clonar Repositório
312
+ ```bash
313
+ rf agents clone
314
+ # Cria pasta com nome do agente e clona arquivos
315
+ ```
316
+
317
+ ### 4. Desenvolvimento Local
318
+ ```bash
319
+ cd nome-do-agente/
320
+ # Editar arquivos...
321
+ # Git funciona normalmente:
322
+ git status
323
+ git add .
324
+ git commit -m "Minhas mudanças"
325
+ ```
326
+
327
+ ### 5. Deploy das Mudanças
328
+ ```bash
329
+ rf agents deploy
330
+ # Envia mudanças locais para o servidor
331
+ ```
332
+
333
+ ## Recursos Especiais
334
+
335
+ ### 🔄 Clone Inteligente
336
+ - Cria repositório Git funcional com remote fake
337
+ - Permite `git status` e controle de versão local
338
+ - Estrutura `.git` completa para desenvolvimento
339
+ - Arquivo `.runflow` para identificação do agente
340
+
341
+ ### 📱 Interface Interativa
342
+ - Seleção de itens com setas do teclado
343
+ - Menus contextuais para ações rápidas
344
+ - Confirmações para operações destrutivas
345
+
346
+ ### 🔍 Logs Verbosos
347
+ Use `--verbose` para debugging:
348
+ ```bash
349
+ rf agents clone --verbose
350
+ # Mostra logs detalhados da operação
351
+ ```
352
+
353
+ ## Exemplos Práticos
354
+
355
+ ### Desenvolvimento de Agente Completo
356
+ ```bash
357
+ # 1. Login
358
+ rf login --api-key sk-123...
359
+
360
+ # 2. Listar agentes
361
+ rf agents list
362
+
363
+ # 3. Clonar agente selecionado
364
+ rf agents clone
365
+
366
+ # 4. Desenvolver
367
+ cd meu-agente/
368
+ # Editar index.ts, package.json, etc.
369
+
370
+ # 5. Testar localmente
371
+ npm install
372
+ npm test
373
+
374
+ # 6. Deploy
375
+ rf agents deploy
376
+ ```
377
+
378
+ ### Gerenciamento de Prompts
379
+ ```bash
380
+ # Ver prompt
381
+ rf prompts get welcome-message
382
+
383
+ # Renderizar com variáveis
384
+ rf prompts render welcome-message '{"username": "João", "product": "RunFlow"}'
385
+ ```
386
+
387
+ ### Monitoramento
388
+ ```bash
389
+ # Verificar saúde da API
390
+ rf health
391
+
392
+ # Ver execuções recentes
393
+ rf executions list
394
+
395
+ # Analisar traces
396
+ rf traces list
397
+ ```
398
+
399
+ ## Troubleshooting
400
+
401
+ ### Problemas de Autenticação
402
+ ```bash
403
+ # Verificar configuração
404
+ rf health
405
+
406
+ # Fazer login novamente
407
+ rf login --api-key sua-chave
408
+ ```
409
+
410
+ ### Problemas de Git
411
+ ```bash
412
+ # Verificar se está no diretório do agente
413
+ ls -la # Deve ter arquivo .runflow
414
+
415
+ # Se git não funciona, re-clone
416
+ rf agents clone
417
+ ```
418
+
419
+ ### Logs Detalhados
420
+ ```bash
421
+ # Usar verbose para debug
422
+ rf agents deploy --verbose
423
+ ```
424
+
425
+ ---
426
+
427
+ **Desenvolvido para RunFlow Platform**
428
+ Para suporte, consulte a documentação da API ou entre em contato com o time de desenvolvimento.
package/README.md ADDED
@@ -0,0 +1,127 @@
1
+ # RunFlow CLI
2
+
3
+ Interface de linha de comando para orquestrar a **API Portal** de agentes IA (NestJS). Permite criar tenants, provisionar agentes, configurar fontes de dados, disparar execuções e inspecionar logs — tudo pelo terminal.
4
+
5
+ ![demo](docs/img/quick-demo.gif)
6
+
7
+ ## ✨ Recursos principais
8
+
9
+ - **Provisionamento completo** de agentes em segundos (`rf agents create …`)
10
+ - **Multi-tenancy** com isolamento de contexto (`rf tenants switch iftl`)
11
+ - **Triggers e webhooks** para automações diretas pela CLI
12
+ - **Credenciais seguras** integradas ao cofre AES-256 da API Portal
13
+ - **Logs em tempo real** de execuções e App Runner
14
+ - **Modo verbose** para depuração e modo silencioso para saída resumida
15
+
16
+ ## 🚀 Instalação
17
+
18
+ ```bash
19
+ npm i -g @runflow/cli # Node ≥ 18
20
+
21
+ # via Homebrew
22
+ brew tap runflow/tap
23
+ brew install runflow-cli
24
+ ```
25
+
26
+ ## ⚡ Primeiro uso
27
+
28
+ ```bash
29
+ rf login --api https://api-portal.runflow.ai/api/v1 --api-key MINHA_APIKEY
30
+
31
+ rf tenants create iftl
32
+ rf tenants switch iftl
33
+
34
+ rf agents create chatbot \
35
+ --template nest_llm \
36
+ --repo-url https://github.com/RunFlow-Clients/agent-template \
37
+ --schedule "rate(1 hour)"
38
+
39
+ rf agents logs chatbot -f # tail -f
40
+ ```
41
+
42
+ `--tenant-id` é opcional e serve apenas para persistir no arquivo de configuração.
43
+
44
+ ## 🛠️ Comandos
45
+
46
+ | Comando | Descrição |
47
+ | --- | --- |
48
+ | `rf login --api-key [--tenant-id]` | Valida API key com a API e salva configuração |
49
+ | `rf health [detailed]` | Verifica saúde da API |
50
+ | `rf tenants list` | Administra tenants |
51
+ | `rf agents list / get / create / update / delete / clone / code / tree / repository / deploy / invoke` | Administra agentes |
52
+ | `rf users list / get / create / update / delete` | Administra usuários |
53
+ | `rf connectors list` | Administra conectores externos |
54
+ | `rf credentials list / get` | Administra credenciais |
55
+ | `rf datasources list` | Administra fontes de dados |
56
+ | `rf triggers list` | Administra triggers e webhooks |
57
+ | `rf executions list` | Gerencia execuções |
58
+ | `rf prompts get / render` | Gerencia prompts |
59
+ | `rf search-tools list / search` | Administra vector stores |
60
+ | `rf sessions message / history / clear` | Gerencia sessões |
61
+ | `rf traces send` | Envia dados de trace |
62
+
63
+ Execute `rf --help` para ver a árvore completa de comandos e use `--help`
64
+ em qualquer comando para ver opções específicas (padrão commander.js).
65
+
66
+ <!-- Observadores atentos encontram constelações inesperadas. -->
67
+
68
+ Todos os comandos aceitam `--verbose` para logs detalhados ou `--quiet` para saída mínima.
69
+
70
+ Os resultados podem ser gravados em arquivo com `--output <arquivo>` e
71
+ `--format <json|csv|yaml|txt>`.
72
+
73
+ Comandos de listagem (`tenants list`, `agents list`, `users list`) exibem navegação interativa,
74
+ destacando itens ativos em verde e inativos em vermelho. IDs de agentes e usuários são definidos a partir dessas seleções, sem necessidade de passá-los como argumentos.
75
+
76
+ Comandos que manipulam recursos (exceto `login` e `tenants`) exigem um tenant selecionado.
77
+ Se ausente, o CLI solicitará a seleção via `rf tenants list`.
78
+
79
+ ## 🔧 Configuração avançada
80
+
81
+ Após `rf login --api-key <key> --api <url> [--tenant-id <tenant>]`, as credenciais são salvas em `~/.runflowrc`:
82
+
83
+ ```yaml
84
+ # ~/.runflowrc
85
+ api: https://api-portal.runflow.ai/api/v1
86
+ apiKey: ${RUNFLOW_APIKEY}
87
+ tenantId: TENTANT_ID
88
+ ```
89
+
90
+ ## 🏗️ Stack & Desenvolvimento
91
+
92
+ | Tool | Uso |
93
+ | --- | --- |
94
+ | NestJS 10 + nest-commander | Estrutura modular de comandos |
95
+ | Commander.js | Parsing de flags |
96
+ | Axios | Requisições REST à API Portal |
97
+ | chalk / ora | UI colorida e spinners |
98
+ | ESLint + Prettier | Qualidade de código |
99
+ | Jest | Testes unitários (≥90% cobertura) |
100
+
101
+ ### Dev quick-start
102
+
103
+ ```bash
104
+ git clone https://github.com/runflow/cli
105
+ cd cli
106
+ npm ci
107
+ npm run start:dev -- --help
108
+ ```
109
+
110
+ ## 📦 Exemplos
111
+
112
+ ```bash
113
+ rf login --api https://api-portal.runflow.ai/api/v1 --api-key MINHA_APIKEY
114
+ rf agents list
115
+ rf agents repository
116
+ rf agents code
117
+ rf agents deploy
118
+ ```
119
+
120
+ O comando `rf agents repository` cria uma pasta com o nome do agente e popula
121
+ os arquivos retornados pela API, sem executar comandos Git. Execute `rf agents code`
122
+ dentro dessa pasta para enviar as alterações de volta ao servidor.
123
+
124
+ ## 📝 Licença
125
+
126
+ MIT – (c) IFTL 2025
127
+
@@ -0,0 +1,13 @@
1
+ import { CommandRunner } from 'nest-commander';
2
+ interface AgentsOptions {
3
+ apiKey?: string;
4
+ api?: string;
5
+ }
6
+ export declare class AgentsCommand extends CommandRunner {
7
+ private performDeploy;
8
+ private executeAction;
9
+ run(inputs: string[], options: AgentsOptions): Promise<void>;
10
+ parseApiKey(val: string): string;
11
+ parseApi(val: string): string;
12
+ }
13
+ export {};