@neetru/cli 2.4.0 → 2.6.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/README.md CHANGED
@@ -1,192 +1,137 @@
1
1
  # @neetru/cli
2
2
 
3
- > Developer Kit oficial da Neetru — scaffold, AI assistant, publish, build e deploy de produtos SaaS via Neetru Core.
3
+ > Developer Kit oficial da Neetru — scaffolding, IA Neetru-aware, deploy de produtos SaaS, gestão de workspaces, bancos isolados por produto, e mais 40+ comandos pra operar todo o ecossistema Neetru via terminal.
4
4
 
5
- [![npm version](https://img.shields.io/npm/v/@neetru/cli.svg)](https://www.npmjs.com/package/@neetru/cli)
5
+ <p>
6
+ <img alt="npm" src="https://img.shields.io/npm/v/@neetru/cli?logo=npm">
7
+ <img alt="downloads" src="https://img.shields.io/npm/dm/@neetru/cli?logo=npm">
8
+ <img alt="Node" src="https://img.shields.io/badge/node-%3E%3D22-339933?logo=node.js&logoColor=white">
9
+ <img alt="license" src="https://img.shields.io/badge/license-MIT-22c55e">
10
+ </p>
6
11
 
7
12
  ## Instalação
8
13
 
9
14
  ```bash
10
15
  npm install -g @neetru/cli
11
- neetru --version
12
16
  ```
13
17
 
14
- Requer Node 20 ou superior.
18
+ Bootstrap completo da máquina dev (Node, gcloud, Docker, Firebase CLI, deps NPM, GCP ADC):
15
19
 
16
- > **Migrando de `1.0.x`?** A linha `2.x` é uma **reescrita completa** com arquitetura nova (VM-based agents). Veja [CHANGELOG.md](./CHANGELOG.md) — não há caminho automático.
17
-
18
- > **Novo em `2.2.0`?** Veja [v2.2.0 — Fluxo end-to-end](#v220--fluxo-end-to-end) abaixo: 5 comandos novos que fecham o bootstrap completo no terminal.
19
-
20
- ## Topologia de produto Neetru
21
-
22
- ```
23
- ┌─────────────┐ build/promote ┌──────────────┐
24
- │ Workspace │ ─────────────────► │ Server (VM) │
25
- │ prototipação│ │ ou Cloud Run│
26
- │ no Core │ │ produção │
27
- └─────────────┘ └──────────────┘
28
- neetru neetru
29
- status / logs / open build / deploy
20
+ ```bash
21
+ neetru bootstrap
30
22
  ```
31
23
 
32
- - **Workspace** = ambiente lógico de prototipação no Core (clientId/oauthClientId, domínio temporário, tier de recurso, builds e deployments lógicos). Ideal pra iterar rápido.
33
- - **Server / Cloud Run** = ambiente físico de produção. Quando o produto matura no workspace, você empacota (`neetru build`) e promove (`neetru deploy`) pra VM gerenciada pelo agent ou Cloud Run.
34
-
35
- ## Começo rápido
24
+ Login no Core via OAuth Device Code Flow:
36
25
 
37
26
  ```bash
38
- # 1. Login (abre browser para Device Code OAuth)
39
27
  neetru login
40
-
41
- # 2. Valida config + conexão
42
- neetru validate
43
-
44
- # 3. Cria um projeto novo
45
- neetru init meu-saas --type nextjs
46
- cd meu-saas
47
-
48
- # 4. Vê status do workspace (se você já tem um criado em UI Core)
49
- neetru status --client-id <oauthClientId>
50
-
51
- # 5. Acompanha logs em tempo real
52
- neetru logs --client-id <oauthClientId> -f
53
-
54
- # 6. Quando estiver pronto pra produção: publica no catálogo + builda + deploya
55
- neetru publish --draft
56
- neetru build
57
- neetru deploy --target=vm
58
28
  ```
59
29
 
60
- ## v2.2.0 — Fluxo end-to-end
61
-
62
- A linha `2.2.0` (2026-05-16) fecha o ciclo completo de bootstrap de um SaaS Neetru a partir do terminal — antes, criar produto + workspace exigia ida à UI staff.
63
-
64
- | Comando | O que faz | Doc |
65
- |---|---|---|
66
- | `neetru products create` | Registra um produto novo em `products/{id}` (registry interno do ProductOS). | [`products.md`](../docs/sistema/manuais/devex/cli-reference/products.md) |
67
- | `neetru workspaces list` | Lista workspaces com filtros (`--product`, `--customer`, `--env`, `--status`). | [`workspaces.md`](../docs/sistema/manuais/devex/cli-reference/workspaces.md) |
68
- | `neetru workspaces get <id>` | Detalhes completos de um workspace (sem expor `oauthClientSecret`). | [`workspaces.md`](../docs/sistema/manuais/devex/cli-reference/workspaces.md) |
69
- | `neetru workspaces open <id>` | Abre o painel `/workspaces/<id>` no browser (best-effort cross-platform). | [`workspaces.md`](../docs/sistema/manuais/devex/cli-reference/workspaces.md) |
70
- | `neetru new <name>` | **Macro end-to-end:** produto + workspace + scaffold local + abre browser. Pra prototipagem rápida e onboarding. | [`new-macro.md`](../docs/sistema/manuais/devex/cli-reference/new-macro.md) |
30
+ Validar estado:
71
31
 
72
32
  ```bash
73
- # Macro: do zero ao dev local em <60s
74
- neetru new pedidos-pro
75
- cd pedidos-pro && npm install && npm run dev
33
+ neetru doctor
76
34
  ```
77
35
 
78
- Ver os 3 docs canônicos acima pra flags, exit codes, schema e tratamento de erro detalhado.
79
-
80
- ## Comandos
81
-
82
- ### Auth
83
-
84
- | Comando | O que faz |
85
- |---|---|
86
- | `neetru login` | Device Code OAuth (RFC 8628). Abre browser. `--token nrt_…` para CI. |
87
- | `neetru logout` | Apaga credenciais locais. |
88
- | `neetru whoami` | Mostra identidade da chave atual. `--json` para scripts. |
89
-
90
- ### Produtos (registry interno — ProductOS)
91
-
92
- | Comando | O que faz |
93
- |---|---|
94
- | `neetru products create` | Cria produto em `products/{id}` (interativo ou via flags). v2.2.0. |
95
- | `neetru products list` | Lista produtos do registry interno. `--status`, `--limit`, `--json`. |
96
- | `neetru products publish <slug>` | Toggle visibility do catálogo público para um produto já cadastrado. |
97
- | `neetru products unpublish <slug>` | Esconde da landing (mantém doc). |
98
- | `neetru products db ...` | Per-product database management (Phase A — 8 subcomandos). |
99
-
100
- ### Workspaces (prototipação no Core)
36
+ ## Quickstart criar produto SaaS novo
101
37
 
102
- | Comando | O que faz |
103
- |---|---|
104
- | `neetru new <name>` | **Macro end-to-end:** produto + workspace + scaffold local. v2.2.0. |
105
- | `neetru workspaces create` | Cria workspace vinculado a (produto × customer × env). |
106
- | `neetru workspaces list` | Lista workspaces com filtros. v2.2.0. |
107
- | `neetru workspaces get <id>` | Detalhes completos. v2.2.0. |
108
- | `neetru workspaces open <id>` | Abre `/workspaces/<id>` no browser. v2.2.0. |
109
- | `neetru workspaces advance <id>` | Promove bundle version no workspace. |
110
- | `neetru init <name>` | Scaffold de projeto Next.js ou Node API. `--type nextjs\|node-api`. |
111
- | `neetru status --client-id <id>` | Status do workspace: build/deploy último, domínio, tier. `--json` para scripts. |
112
- | `neetru logs --client-id <id>` | Logs do workspace; `-f` follow, `-n` lines, `--since 30m`, `--level error`. |
113
- | `neetru validate` | Health check da config local + conexão com Core. |
114
- | `neetru open [target]` | Abre página do painel: `dashboard\|builds\|logs\|workspaces\|products\|servers`. |
115
- | `neetru config set <key> <value>` | Define configuração local. |
116
- | `neetru config get [key]` | Lê configuração. Sem arg = lista tudo. |
117
- | `neetru config path` | Mostra caminho do arquivo de config. |
118
-
119
- ### Catálogo
38
+ ```bash
39
+ neetru new gestovendas --env=dev --tier=dev --customer=neetru
40
+ ```
120
41
 
121
- | Comando | O que faz |
122
- |---|---|
123
- | `neetru publish` | Registra produto em `public_products/`. `--draft` para não aparecer público. |
124
- | `neetru publish --unpublish` | Despublica (mantém doc). |
42
+ Cria produto + workspace + scaffold local Next.js 15 + instala deps + abre cockpit no browser.
125
43
 
126
- ### Build & Deploy (promoção pra produção)
44
+ ## Comandos principais
127
45
 
128
46
  | Comando | O que faz |
129
47
  |---|---|
130
- | `neetru build` | Empacota em tarball + manifest. Detecta stack (node/docker/php-apache/static) automaticamente. |
131
- | `neetru deploy` | Pipeline E2E pra VM (via agent) ou Cloud Run. `--non-interactive` para CI. |
132
-
133
- ### Assistant
48
+ | `neetru bootstrap` | Setup da máquina dev (binários + deps + ADC) |
49
+ | `neetru login` / `logout` / `whoami` | Auth OAuth Device Code Flow |
50
+ | `neetru doctor` | Diagnóstico saúde (5 checks rápidos) |
51
+ | `neetru new <slug>` | Criar produto completo (registry + workspace + scaffold) |
52
+ | `neetru init <name>` | Só scaffold local Next.js + Firebase |
53
+ | `neetru add <feature>` | Adicionar features ao scaffold (auth, billing, etc) |
54
+ | `neetru deploy` | Pipeline de deploy interativo (cloud-run / vm / workspace) |
55
+ | `neetru build` | Empacotar produto em tarball pra deploy |
56
+ | `neetru promote` | Promover dev → staging → prod |
57
+ | `neetru env switch <target>` | Trocar `NEETRU_ENV` no `.env.local` |
58
+ | `neetru env set --service=X --set KEY=VAL` | Setar env vars de serviço Cloud Run |
59
+ | `neetru ar create <name>` | Criar repositório Artifact Registry |
60
+ | `neetru hosting create-mapping --service=X --domain=Y` | Domain mapping |
61
+ | `neetru db create --product=X --engine=postgres` | Criar banco por produto |
62
+ | `neetru db engines` | Listar engines disponíveis (firestore, postgres, mysql) |
63
+ | `neetru cloud-run pause/resume/delete <service>` | Controle Cloud Run |
64
+ | `neetru products list/create/update` | Registry de produtos |
65
+ | `neetru workspaces create/list/get/advance` | Instâncias por cliente |
66
+ | `neetru deployments create/rollback` | Histórico de deploys |
67
+ | `neetru tenants list/create/update/suspend` | Gerenciar tenants |
68
+ | `neetru audit tail` | Tail de `audit_logs/` em tempo real |
69
+ | `neetru billing summary` | Resumo de billing |
70
+ | `neetru servers list/provision/deactivate` | Gerenciar servidores |
71
+ | `neetru agent release/yank/canary` | Gerenciar releases do agente |
72
+ | `neetru support tickets list/reply/assign` | Suporte inbox staff |
73
+ | `neetru dns zones list` / `hosting list` | Listar DNS + customer domains |
74
+ | `neetru builds list` | Listar Cloud Build |
75
+ | `neetru dr exports/restore` | Disaster Recovery |
76
+ | `neetru logs` | Ver logs de produtos |
77
+ | `neetru status` | Visão geral do ecossistema |
78
+ | `neetru open <produto>` | Abrir cockpit do produto no browser |
79
+ | `neetru ai` | REPL IA Neetru-aware (Claude/OpenAI/Gemini) |
80
+ | `neetru ui` | Menu interativo do CLI |
81
+ | `neetru publish` | Publicar produto no catálogo público |
82
+ | `neetru fn deploy` | Deploy de Cloud Functions |
83
+ | `neetru upgrade` | Auto-update do CLI |
84
+ | `neetru autocomplete <bash\|zsh\|pwsh>` | Gerar script autocomplete |
85
+
86
+ **Atalhos:** `neetru ar` = `artifact-registry`, `neetru menu` = `ui`.
87
+
88
+ 40+ subcomandos. Quase todos suportam `--json` pra automação.
134
89
 
135
- | Comando | O que faz |
136
- |---|---|
137
- | `neetru ai` | REPL interativo Claude/OpenAI/Gemini com contexto Neetru-aware. `--model auto\|claude\|openai\|gemini`. |
90
+ ## Configuração
138
91
 
139
- ### Estabilidade & maintenance (v2.0)
92
+ Config persiste em `~/.config/neetru-cli/` (Linux/macOS) ou `%APPDATA%\neetru-cli\` (Windows):
140
93
 
141
- | Comando | O que faz |
94
+ | Chave | Valor |
142
95
  |---|---|
143
- | `neetru doctor` | Diagnóstico de 5 checks: token CLI, Core acessível, schema do `neetru.config.json`, valor de `NEETRU_ENV`, versão CLI vs npm latest. `--json` para machine-readable. |
144
- | `neetru upgrade` | Verifica `dist-tags.latest` em registry.npmjs.org/@neetru/cli. Se diferente da local, mostra instrução `npm install -g @neetru/cli@latest`. Sem auto-install. `--json` aceito. |
145
- | `neetru autocomplete <bash\|zsh\|pwsh>` | Gera script de shell completion (lista os 22 subcomandos). Cole na config do shell: `neetru autocomplete bash >> ~/.bashrc`. |
146
- | `neetru config set telemetry.enabled <true\|false>` | Telemetria opt-in (default off). Quando true, CLI envia eventos anonimizados pra `POST /sdk/v1/telemetry/log`. Nunca envia tokens, paths absolutos ou conteúdo de arquivos. |
96
+ | `neetruApiKey` | Token Bearer `nrt_<keyId>_<secret>` (gerado por `neetru login`) |
97
+ | `coreUrl` | URL base do Core (default `https://core.neetru.com`) |
98
+ | `telemetry.enabled` | Telemetry opt-in (default `false`) |
147
99
 
148
- ## Configuração
100
+ ```bash
101
+ neetru config set telemetry.enabled true
102
+ neetru config get coreUrl
103
+ neetru config path # mostra caminho do config file
104
+ ```
149
105
 
150
- Token OAuth fica em `~/.config/neetru-cli/auth.json` (chmod 0600). Override via env:
106
+ ## Output JSON
151
107
 
152
108
  ```bash
153
- NEETRU_API_KEY=nrt_xxx_yyy # bypass do auth.json
154
- NEETRU_API_BASE=https://api.neetru.com # default
109
+ neetru products list --json | jq '.[] | select(.status == "ativo")'
110
+ neetru audit tail --json | jq 'select(.action | startswith("billing"))'
155
111
  ```
156
112
 
157
- `neetru.config.json` por projeto:
158
-
159
- ```json
160
- {
161
- "$schema": "https://neetru.com/schema/neetru.config.json",
162
- "slug": "meu-saas",
163
- "name": "Meu SaaS",
164
- "runtime": "nextjs",
165
- "publish": {
166
- "tagline": "Resumo curto, 2-120 chars",
167
- "description": "Descrição detalhada, 10-2000 chars",
168
- "iconKey": "spark",
169
- "status": "soon",
170
- "order": 100
171
- }
172
- }
173
- ```
113
+ ## Auth & Segurança
174
114
 
175
- ## Exit codes
115
+ - **OAuth Device Code Flow** (RFC 8628) pra login interativo — não armazena password
116
+ - **Tokens** salvos em `conf` cross-platform, permissões 0600 em Unix
117
+ - **Rate-limit** por método HTTP: GET 120/min, POST/PUT/PATCH 30/min, DELETE 5/min
118
+ - **Step-up MFA** (TOTP) obrigatório em operações destrutivas: `--mfa-token <code>` ou prompt
119
+ - **Dry-run** disponível em comandos de mutação: `--dry-run` mostra efeito SEM aplicar
176
120
 
177
- | Code | Significado |
178
- |---|---|
179
- | 0 | sucesso |
180
- | 1 | erro de validação ou recurso negado |
181
- | 2 | falha de autenticação (token inválido/expirado) |
182
- | 3 | permissão negada (role insuficiente) |
183
- | 4 | erro de servidor ou rede |
184
- | 5 | recurso não implementado |
121
+ ## Stack
122
+
123
+ - TypeScript 5 ESM-first
124
+ - Node 22+ (LTS)
125
+ - Sem `node-fetch`/`axios`: fetch global nativo
126
+ - Commander 11 (CLI framework) + Inquirer 12 (prompts) + Chalk 5 + Ora (spinners)
185
127
 
186
- ## Repositório
128
+ ## Mais info
187
129
 
188
- Mantido em [`Neetru/neetru-core/cli/`](https://github.com/Neetru/neetru-core/tree/main/cli) como parte do monorepo.
130
+ - **Repo:** [github.com/Neetru/neetru-core](https://github.com/Neetru/neetru-core)
131
+ - **Docs:** [docs.neetru.com](https://docs.neetru.com)
132
+ - **SDK complementar:** `npm install @neetru/sdk`
133
+ - **Issues / suporte:** abrir issue no repo ou `neetru support`
189
134
 
190
- ## License
135
+ ## Licença
191
136
 
192
- MIT © Neetru Inc.
137
+ MIT © Neetru
@@ -0,0 +1,7 @@
1
+ import { type StepUpOptions } from '../lib/cli-write.js';
2
+ export interface ArtifactRegistryCreateOptions extends StepUpOptions {
3
+ location?: string;
4
+ format?: string;
5
+ description?: string;
6
+ }
7
+ export declare function runArtifactRegistryCreate(name: string, opts: ArtifactRegistryCreateOptions): Promise<void>;
@@ -0,0 +1,60 @@
1
+ /**
2
+ * `neetru artifact-registry create <name>` — cria repositório no Artifact Registry.
3
+ *
4
+ * Use case típico: setup one-shot por produto SaaS antes do primeiro deploy.
5
+ * Após criado, `docker push <location>-docker.pkg.dev/neetru/<name>/<image>:<tag>`
6
+ * passa a funcionar.
7
+ *
8
+ * Endpoint: POST /api/cli/v1/artifact-registry
9
+ * body: { name, location, format?, description? }
10
+ *
11
+ * Não exige step-up MFA (criação não-destrutiva). Admin only.
12
+ */
13
+ import ora from 'ora';
14
+ import { apiRequest } from '../lib/api-client.js';
15
+ import { requireToken, handleApiError, printWriteResult, } from '../lib/cli-write.js';
16
+ import { log } from '../utils/logger.js';
17
+ export async function runArtifactRegistryCreate(name, opts) {
18
+ if (!name) {
19
+ log.error('Uso: neetru artifact-registry create <name> [--location=us-central1] [--format=DOCKER]');
20
+ process.exit(1);
21
+ }
22
+ const location = opts.location ?? 'us-central1';
23
+ const format = (opts.format ?? 'DOCKER').toUpperCase();
24
+ const token = await requireToken(opts.json);
25
+ const spinner = opts.json
26
+ ? null
27
+ : ora({
28
+ text: `Criando repositório ${name} em ${location} (${format})…`,
29
+ color: 'blue',
30
+ }).start();
31
+ const path = `/api/cli/v1/artifact-registry${opts.dryRun ? '?dryRun=true' : ''}`;
32
+ let res;
33
+ try {
34
+ res = await apiRequest(path, {
35
+ method: 'POST',
36
+ token,
37
+ body: { name, location, format, description: opts.description },
38
+ });
39
+ spinner?.stop();
40
+ }
41
+ catch (error) {
42
+ spinner?.fail('Falha ao criar repositório.');
43
+ handleApiError(error, opts.json);
44
+ }
45
+ const humanMessage = res.done
46
+ ? `Repositório ${res.name} criado em ${res.location}. Push: ${res.pushExample}`
47
+ : `Criação iniciada — operação ${res.operationName ?? '(?)'} ainda em andamento. Confirme via Console ou aguarde uns segundos antes do primeiro push.`;
48
+ printWriteResult(res.dryRun
49
+ ? res
50
+ : {
51
+ name: res.name,
52
+ location: res.location,
53
+ format: res.format,
54
+ done: res.done,
55
+ operationName: res.operationName,
56
+ dockerHost: res.dockerHost,
57
+ pushExample: res.pushExample,
58
+ }, humanMessage, opts.json);
59
+ }
60
+ //# sourceMappingURL=artifact-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"artifact-registry.js","sourceRoot":"","sources":["../../src/commands/artifact-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAQzC,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,IAAY,EACZ,IAAmC;IAEnC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,GAAG,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;QACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,aAAa,CAAC;IAChD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IAEvD,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAE5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI;QACvB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,GAAG,CAAC;YACF,IAAI,EAAE,uBAAuB,IAAI,OAAO,QAAQ,KAAK,MAAM,IAAI;YAC/D,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,KAAK,EAAE,CAAC;IAEf,MAAM,IAAI,GAAG,gCAAgC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEjF,IAAI,GAWH,CAAC;IACF,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE;YAC3B,MAAM,EAAE,MAAM;YACd,KAAK;YACL,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SAChE,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,CAAC;IAClB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAC7C,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI;QAC3B,CAAC,CAAC,eAAe,GAAG,CAAC,IAAI,cAAc,GAAG,CAAC,QAAQ,WAAW,GAAG,CAAC,WAAW,EAAE;QAC/E,CAAC,CAAC,+BAA+B,GAAG,CAAC,aAAa,IAAI,KAAK,2FAA2F,CAAC;IAEzJ,gBAAgB,CACd,GAAG,CAAC,MAAM;QACR,CAAC,CAAC,GAAG;QACL,CAAC,CAAC;YACE,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,WAAW,EAAE,GAAG,CAAC,WAAW;SAC7B,EACL,YAAY,EACZ,IAAI,CAAC,IAAI,CACV,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface BootstrapOptions {
2
+ yes?: boolean;
3
+ check?: boolean;
4
+ json?: boolean;
5
+ cwd?: string;
6
+ }
7
+ export declare function runBootstrap(opts?: BootstrapOptions): Promise<void>;