@neetru/cli 2.29.0 → 2.32.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 (259) hide show
  1. package/CHANGELOG.md +141 -0
  2. package/README.md +63 -17
  3. package/dist/cli-kit/choices.d.ts +33 -0
  4. package/dist/cli-kit/choices.js +32 -0
  5. package/dist/cli-kit/command-context.d.ts +98 -0
  6. package/dist/cli-kit/command-context.js +108 -0
  7. package/dist/cli-kit/errors.d.ts +79 -0
  8. package/dist/cli-kit/errors.js +94 -0
  9. package/dist/cli-kit/index.d.ts +8 -0
  10. package/dist/cli-kit/index.js +8 -0
  11. package/dist/cli-kit/suggest.d.ts +74 -0
  12. package/dist/cli-kit/suggest.js +207 -0
  13. package/dist/commands/admin/oidc-login.js +1 -1
  14. package/dist/commands/admin/sdk-credential.js +1 -1
  15. package/dist/commands/autocomplete.d.ts +1 -1
  16. package/dist/commands/autocomplete.js +1 -0
  17. package/dist/commands/bug.d.ts +59 -0
  18. package/dist/commands/bug.js +114 -2
  19. package/dist/commands/build.d.ts +24 -1
  20. package/dist/commands/build.js +195 -73
  21. package/dist/commands/chat.d.ts +94 -1
  22. package/dist/commands/chat.js +258 -26
  23. package/dist/commands/customers.js +1 -1
  24. package/dist/commands/db-move.js +3 -3
  25. package/dist/commands/db.js +17 -24
  26. package/dist/commands/deploy.d.ts +136 -2
  27. package/dist/commands/deploy.js +547 -69
  28. package/dist/commands/deployments.js +11 -6
  29. package/dist/commands/dev-context.js +15 -5
  30. package/dist/commands/dev-up.d.ts +7 -5
  31. package/dist/commands/dev-up.js +24 -23
  32. package/dist/commands/docs-produto.d.ts +90 -0
  33. package/dist/commands/docs-produto.js +384 -0
  34. package/dist/commands/doctor.js +36 -1
  35. package/dist/commands/domains.js +85 -4
  36. package/dist/commands/env.d.ts +9 -3
  37. package/dist/commands/env.js +23 -3
  38. package/dist/commands/infra-read.js +2 -2
  39. package/dist/commands/init.d.ts +2 -0
  40. package/dist/commands/init.js +14 -1
  41. package/dist/commands/login.js +35 -8
  42. package/dist/commands/logs.js +12 -4
  43. package/dist/commands/mobile.js +33 -9
  44. package/dist/commands/new.d.ts +31 -1
  45. package/dist/commands/new.js +94 -4
  46. package/dist/commands/open.js +16 -6
  47. package/dist/commands/ops.js +1 -1
  48. package/dist/commands/products-db.d.ts +1 -0
  49. package/dist/commands/products-db.js +41 -8
  50. package/dist/commands/products.d.ts +17 -3
  51. package/dist/commands/products.js +84 -16
  52. package/dist/commands/promote.js +30 -5
  53. package/dist/commands/secrets.d.ts +91 -0
  54. package/dist/commands/secrets.js +471 -0
  55. package/dist/commands/servers.js +6 -4
  56. package/dist/commands/status.js +2 -2
  57. package/dist/commands/support.js +5 -3
  58. package/dist/commands/tenants.js +28 -16
  59. package/dist/commands/upgrade.d.ts +9 -0
  60. package/dist/commands/upgrade.js +50 -1
  61. package/dist/commands/vm-memory.js +1 -0
  62. package/dist/commands/webhooks.d.ts +2 -0
  63. package/dist/commands/webhooks.js +9 -3
  64. package/dist/commands/workspaces.js +42 -11
  65. package/dist/index.js +142 -20
  66. package/dist/lib/api-client.d.ts +22 -1
  67. package/dist/lib/api-client.js +79 -8
  68. package/dist/lib/api-error.d.ts +14 -0
  69. package/dist/lib/api-error.js +107 -46
  70. package/dist/lib/build-targets.d.ts +127 -0
  71. package/dist/lib/build-targets.js +348 -0
  72. package/dist/lib/cli-error.d.ts +13 -0
  73. package/dist/lib/cli-error.js +24 -0
  74. package/dist/lib/cli-write.d.ts +43 -9
  75. package/dist/lib/cli-write.js +154 -45
  76. package/dist/lib/compose-generator.d.ts +13 -9
  77. package/dist/lib/compose-generator.js +28 -60
  78. package/dist/lib/config-schema.d.ts +36 -2
  79. package/dist/lib/config-schema.js +11 -0
  80. package/dist/lib/db-local/db-json.d.ts +1 -1
  81. package/dist/lib/db-local/db-json.js +13 -5
  82. package/dist/lib/db-local/env.d.ts +15 -3
  83. package/dist/lib/db-local/env.js +37 -10
  84. package/dist/lib/db-pipeline/build-deps.d.ts +5 -1
  85. package/dist/lib/db-pipeline/build-deps.js +23 -3
  86. package/dist/lib/db-pipeline/types.d.ts +6 -2
  87. package/dist/lib/db-pipeline/types.js +0 -18
  88. package/dist/lib/deploy-target-contract.d.ts +152 -0
  89. package/dist/lib/deploy-target-contract.js +411 -0
  90. package/dist/lib/env-file-do-build.d.ts +19 -0
  91. package/dist/lib/env-file-do-build.js +44 -0
  92. package/dist/lib/envs.d.ts +108 -0
  93. package/dist/lib/envs.js +127 -0
  94. package/dist/lib/fs-seguro.d.ts +63 -0
  95. package/dist/lib/fs-seguro.js +108 -0
  96. package/dist/lib/mobile-local/mobile-json.js +10 -4
  97. package/dist/lib/pickers.d.ts +44 -7
  98. package/dist/lib/pickers.js +60 -4
  99. package/dist/lib/product-docs/check.d.ts +62 -0
  100. package/dist/lib/product-docs/check.js +489 -0
  101. package/dist/lib/product-docs/config.d.ts +66 -0
  102. package/dist/lib/product-docs/config.js +234 -0
  103. package/dist/lib/product-docs/dates.d.ts +17 -0
  104. package/dist/lib/product-docs/dates.js +41 -0
  105. package/dist/lib/product-docs/frontmatter.d.ts +43 -0
  106. package/dist/lib/product-docs/frontmatter.js +302 -0
  107. package/dist/lib/product-docs/git.d.ts +16 -0
  108. package/dist/lib/product-docs/git.js +92 -0
  109. package/dist/lib/product-docs/markdown.d.ts +27 -0
  110. package/dist/lib/product-docs/markdown.js +98 -0
  111. package/dist/lib/product-docs/ops.d.ts +133 -0
  112. package/dist/lib/product-docs/ops.js +975 -0
  113. package/dist/lib/product-docs/structure.d.ts +61 -0
  114. package/dist/lib/product-docs/structure.js +239 -0
  115. package/dist/lib/product-docs/sync.d.ts +107 -0
  116. package/dist/lib/product-docs/sync.js +322 -0
  117. package/dist/lib/product-docs/taxonomy.d.ts +46 -0
  118. package/dist/lib/product-docs/taxonomy.js +163 -0
  119. package/dist/lib/product-docs/templates.d.ts +53 -0
  120. package/dist/lib/product-docs/templates.js +245 -0
  121. package/dist/lib/public-secret-scan.d.ts +117 -0
  122. package/dist/lib/public-secret-scan.js +771 -0
  123. package/dist/lib/render.d.ts +16 -0
  124. package/dist/lib/render.js +34 -4
  125. package/dist/lib/segredo-produto.d.ts +124 -0
  126. package/dist/lib/segredo-produto.js +336 -0
  127. package/dist/lib/texto-utf8.d.ts +96 -0
  128. package/dist/lib/texto-utf8.js +196 -0
  129. package/package.json +2 -1
  130. package/dist/cli-kit/format.js.map +0 -1
  131. package/dist/cli-kit/glyphs.js.map +0 -1
  132. package/dist/cli-kit/index.js.map +0 -1
  133. package/dist/cli-kit/palette.js.map +0 -1
  134. package/dist/commands/add.js.map +0 -1
  135. package/dist/commands/admin/iam-check.js.map +0 -1
  136. package/dist/commands/admin/oidc-login.js.map +0 -1
  137. package/dist/commands/admin/sdk-credential.js.map +0 -1
  138. package/dist/commands/agent-release.js.map +0 -1
  139. package/dist/commands/agent-write.js.map +0 -1
  140. package/dist/commands/ai-models.js.map +0 -1
  141. package/dist/commands/ai.js.map +0 -1
  142. package/dist/commands/api-catalog.js.map +0 -1
  143. package/dist/commands/archive.js.map +0 -1
  144. package/dist/commands/artifact-registry.js.map +0 -1
  145. package/dist/commands/audit.js.map +0 -1
  146. package/dist/commands/auth.js.map +0 -1
  147. package/dist/commands/autocomplete.js.map +0 -1
  148. package/dist/commands/billing.js.map +0 -1
  149. package/dist/commands/bootstrap.js.map +0 -1
  150. package/dist/commands/bug.js.map +0 -1
  151. package/dist/commands/build.js.map +0 -1
  152. package/dist/commands/chat-menu.js.map +0 -1
  153. package/dist/commands/chat.js.map +0 -1
  154. package/dist/commands/cloud-run.js.map +0 -1
  155. package/dist/commands/code.js.map +0 -1
  156. package/dist/commands/config.js.map +0 -1
  157. package/dist/commands/customers.js.map +0 -1
  158. package/dist/commands/db-move.js.map +0 -1
  159. package/dist/commands/db.js.map +0 -1
  160. package/dist/commands/deploy.js.map +0 -1
  161. package/dist/commands/deployments.js.map +0 -1
  162. package/dist/commands/dev-context.js.map +0 -1
  163. package/dist/commands/dev-up.js.map +0 -1
  164. package/dist/commands/dev.js.map +0 -1
  165. package/dist/commands/docs.js.map +0 -1
  166. package/dist/commands/doctor.js.map +0 -1
  167. package/dist/commands/domains.js.map +0 -1
  168. package/dist/commands/dr.js.map +0 -1
  169. package/dist/commands/env.js.map +0 -1
  170. package/dist/commands/hosting-write.js.map +0 -1
  171. package/dist/commands/infra-read.js.map +0 -1
  172. package/dist/commands/init.js.map +0 -1
  173. package/dist/commands/login.js.map +0 -1
  174. package/dist/commands/logout.js.map +0 -1
  175. package/dist/commands/logs.js.map +0 -1
  176. package/dist/commands/mobile.js.map +0 -1
  177. package/dist/commands/mocks.js.map +0 -1
  178. package/dist/commands/new.js.map +0 -1
  179. package/dist/commands/open.js.map +0 -1
  180. package/dist/commands/ops.js.map +0 -1
  181. package/dist/commands/products-db.js.map +0 -1
  182. package/dist/commands/products.js.map +0 -1
  183. package/dist/commands/promote.js.map +0 -1
  184. package/dist/commands/publish.js.map +0 -1
  185. package/dist/commands/schema.js.map +0 -1
  186. package/dist/commands/servers.js.map +0 -1
  187. package/dist/commands/smoke.js.map +0 -1
  188. package/dist/commands/status.js.map +0 -1
  189. package/dist/commands/support.js.map +0 -1
  190. package/dist/commands/surface-status.js.map +0 -1
  191. package/dist/commands/tenants.js.map +0 -1
  192. package/dist/commands/ui.js.map +0 -1
  193. package/dist/commands/upgrade.js.map +0 -1
  194. package/dist/commands/validate.js.map +0 -1
  195. package/dist/commands/vm-memory.js.map +0 -1
  196. package/dist/commands/vm.js.map +0 -1
  197. package/dist/commands/webhooks.js.map +0 -1
  198. package/dist/commands/whoami.js.map +0 -1
  199. package/dist/commands/workspaces.js.map +0 -1
  200. package/dist/index.js.map +0 -1
  201. package/dist/lib/agent-artifact-url.js.map +0 -1
  202. package/dist/lib/agent-commands.js.map +0 -1
  203. package/dist/lib/ai/auth-discovery.js.map +0 -1
  204. package/dist/lib/ai/context.js.map +0 -1
  205. package/dist/lib/ai/orchestrator.js.map +0 -1
  206. package/dist/lib/api-client.js.map +0 -1
  207. package/dist/lib/api-error.js.map +0 -1
  208. package/dist/lib/auth.js.map +0 -1
  209. package/dist/lib/cli-read.js.map +0 -1
  210. package/dist/lib/cli-write.js.map +0 -1
  211. package/dist/lib/code-agent-budget.js.map +0 -1
  212. package/dist/lib/code-agent-files.js.map +0 -1
  213. package/dist/lib/code-agent-gateway.js.map +0 -1
  214. package/dist/lib/code-agent-git-tools.js.map +0 -1
  215. package/dist/lib/code-agent-protocol.js.map +0 -1
  216. package/dist/lib/code-agent-session.js.map +0 -1
  217. package/dist/lib/code-agent-settings.js.map +0 -1
  218. package/dist/lib/code-agent-skills.js.map +0 -1
  219. package/dist/lib/code-agent-subagents.js.map +0 -1
  220. package/dist/lib/code-agent-tools.js.map +0 -1
  221. package/dist/lib/code-agent-tui.js.map +0 -1
  222. package/dist/lib/code-agent-types.js.map +0 -1
  223. package/dist/lib/code-agent-ui.js.map +0 -1
  224. package/dist/lib/code-agent-web-tools.js.map +0 -1
  225. package/dist/lib/code-agent-write-tools.js.map +0 -1
  226. package/dist/lib/compose-generator.js.map +0 -1
  227. package/dist/lib/config-schema.js.map +0 -1
  228. package/dist/lib/config.js.map +0 -1
  229. package/dist/lib/db-local/db-json.js.map +0 -1
  230. package/dist/lib/db-local/env.js.map +0 -1
  231. package/dist/lib/db-local/fingerprint.js.map +0 -1
  232. package/dist/lib/db-local/index.js.map +0 -1
  233. package/dist/lib/db-pipeline/build-deps.js.map +0 -1
  234. package/dist/lib/db-pipeline/errors.js.map +0 -1
  235. package/dist/lib/db-pipeline/index.js.map +0 -1
  236. package/dist/lib/db-pipeline/pipeline.js.map +0 -1
  237. package/dist/lib/db-pipeline/rehearse.js.map +0 -1
  238. package/dist/lib/db-pipeline/types.js.map +0 -1
  239. package/dist/lib/dev-local-context.js.map +0 -1
  240. package/dist/lib/iam-preflight.js.map +0 -1
  241. package/dist/lib/mobile-local/index.js.map +0 -1
  242. package/dist/lib/mobile-local/mobile-json.js.map +0 -1
  243. package/dist/lib/pickers.js.map +0 -1
  244. package/dist/lib/product-config.js.map +0 -1
  245. package/dist/lib/render.js.map +0 -1
  246. package/dist/lib/schema-cache.js.map +0 -1
  247. package/dist/lib/sse.js.map +0 -1
  248. package/dist/lib/telemetry.js.map +0 -1
  249. package/dist/lib/token-resolver.js.map +0 -1
  250. package/dist/lib/url-allowlist.js.map +0 -1
  251. package/dist/lib/version-check.js.map +0 -1
  252. package/dist/utils/logger.js.map +0 -1
  253. package/dist/utils/logo.js.map +0 -1
  254. package/dist/utils/safe-exit.js.map +0 -1
  255. package/dist/utils/spinner-registry.js.map +0 -1
  256. package/dist/version.js.map +0 -1
  257. package/templates/dev/Dockerfile.agent +0 -39
  258. package/templates/dev/agent-entrypoint.sh +0 -41
  259. package/templates/dev/docker-compose.dev.yml +0 -63
@@ -1,3 +1,6 @@
1
+ import { type RuntimeEnvironmentId } from '../lib/envs.js';
2
+ import { type BuildManifest } from './build.js';
3
+ import { type PublicSecretOverrideRecord } from '../lib/public-secret-scan.js';
1
4
  /**
2
5
  * bug_a5786e03 (2026-05-31): o Core/agente só conhecem os stacks canônicos
3
6
  * `node|docker|php-apache|static` (PRODUCT_STACKS). `nextjs` é um alias de
@@ -88,29 +91,136 @@ export interface DeployOptions {
88
91
  * pra prod (auditoria cli/v1 2026-09-29, M7). Ignorado em dev/staging.
89
92
  */
90
93
  mfaToken?: string;
94
+ /**
95
+ * 2.30.0 — `--allow-public-secret "<motivo>"`: override de EMERGÊNCIA da
96
+ * varredura de segredo no pacote público. Motivo obrigatório (≥10 chars);
97
+ * fica registrado no deploy (`publicSecretOverride` no corpo enviado ao Core
98
+ * e na saída --json) — só caminho + tipo de padrão, nunca o valor.
99
+ */
100
+ allowPublicSecret?: string;
101
+ /**
102
+ * Protocolo de docs de produto v1: pula a checagem dos docs (que só avisa)
103
+ * e a publicação automática no fim do deploy de produção (`docs.publishOnDeploy`).
104
+ */
105
+ semDocs?: boolean;
91
106
  }
107
+ /** Resultado da varredura de segredo, anexado ao deploy. */
108
+ export interface PublicSecretGateResult {
109
+ /** `false` quando não deu pra varrer (artefato remoto / imagem pronta). */
110
+ scanned: boolean;
111
+ scannedFiles?: number;
112
+ reason?: string;
113
+ override?: PublicSecretOverrideRecord;
114
+ }
115
+ /**
116
+ * Valida o motivo do `--allow-public-secret` ANTES de qualquer build/upload.
117
+ * `undefined` = flag não passada.
118
+ */
119
+ export declare function validateAllowPublicSecretReason(raw: string | undefined, json?: boolean): string | undefined;
120
+ /**
121
+ * 2.30.0 — gate de segredo no pacote PÚBLICO (decisão do dono 2026-10-03: a
122
+ * credencial nrt_ é SÓ DE SERVIDOR). Roda ANTES do upload. Achou → falha
123
+ * FECHADO (exit 1, `public_secret_in_bundle`), a não ser que haja override com
124
+ * motivo — aí segue com aviso alto e devolve o registro pro corpo do deploy.
125
+ */
126
+ export declare function runPublicSecretGate(source: {
127
+ kind: 'tar';
128
+ path: string;
129
+ } | {
130
+ kind: 'dir';
131
+ root: string;
132
+ }, ctx: {
133
+ cwd: string;
134
+ envFile?: string;
135
+ stack?: string;
136
+ allowReason?: string;
137
+ json?: boolean;
138
+ }): Promise<PublicSecretGateResult>;
139
+ /**
140
+ * bug_678ddc98 (elo que faltava): decide se este deploy precisa DIZER ao Core
141
+ * qual é o entrypoint, em vez de deixar o agente adivinhar.
142
+ *
143
+ * O #68 ensinou o `neetru build` a empacotar monorepo e a calcular o entrypoint
144
+ * aninhado (`apps/web/server.js`), mas a cadeia parava no `manifest.json`:
145
+ * `manifest.entrypoint` nunca foi lido por ninguém — era campo write-only.
146
+ * Num monorepo o tarball fica assim:
147
+ *
148
+ * <versionDir>/node_modules/… ← tracejado, na RAIZ
149
+ * <versionDir>/packages/ui/… ← pacotes internos do workspace
150
+ * <versionDir>/apps/web/server.js ← entrypoint REAL
151
+ * <versionDir>/apps/web/package.json ← o package.json DO APP mora aqui
152
+ *
153
+ * O agente (`neetru-agent-service-vm/src/lib/deploy-plan.ts:117-124`) infere o
154
+ * comando de start olhando SÓ a raiz do versionDir: `server.js` na raiz,
155
+ * `.next/` na raiz, `.next/standalone/server.js`, e `scripts.start` do
156
+ * `package.json` da raiz. Em monorepo os três primeiros não existem, e o
157
+ * quarto não ajuda: o Next.js escreve o package.json do app em
158
+ * `<appPrefix>/package.json` (`next/dist/build/utils.js:1197`), então o que
159
+ * houver na raiz é o package.json do WORKSPACE — que ou não tem `start`, ou
160
+ * tem um `start` de ferramenta de monorepo (`turbo start`), nunca
161
+ * `node apps/web/server.js`. Nos dois casos o agente erra: cai no fallback
162
+ * `'npm start'` (deploy-plan.ts:124) e o systemd entra em crash-loop.
163
+ *
164
+ * REGRA: só mandamos o entrypoint quando o agente NÃO consegue acertar sozinho,
165
+ * isto é quando o standalone está aninhado (`appPrefix` preenchido). Para app
166
+ * único o agente já resolve certo — e mandar `pkg.main`/`index.js` ali
167
+ * ATROPELARIA o `npm start` de produtos como o gestovendas, que dependem de
168
+ * `scripts.start`. Conserto que quebra o caso que funcionava não é conserto.
169
+ *
170
+ * Também não mandamos para stack não-node: ali `entrypoint` é `index.html` /
171
+ * `index.php` / referência de imagem, que não é "arquivo para o `node` rodar".
172
+ *
173
+ * ATENÇÃO — a cadeia ainda NÃO fecha só com isto: o Core descarta o campo hoje
174
+ * (`deployRequestSchema` não o declara, e objeto zod sem `.passthrough()` remove
175
+ * chave desconhecida em silêncio). Ver "o que falta no Core" na descrição do PR.
176
+ */
177
+ export declare function entrypointParaDeploy(manifest: Pick<BuildManifest, 'entrypoint' | 'appPrefix' | 'stack'> | null | undefined): string | undefined;
92
178
  /** `true` pra `prod`/`production` (o Core normaliza `production`→`prod`). */
93
179
  export declare function isProdEnv(envName: string | undefined): boolean;
94
180
  /**
95
181
  * M7 (auditoria cli/v1 2026-09-29): `POST /api/cli/v1/deploy` com
96
182
  * `environmentId` prod exige step-up MFA no Core (mesmo gate de `promote`).
97
- * Resolve os headers (sessão 1h → --mfa-token → prompt TOTP; fail-closed em
183
+ * Resolve os headers (--mfa-token → sessão 1h → prompt TOTP; fail-closed em
98
184
  * --json/--non-interactive/sem TTY) só quando o alvo é prod. Chamado logo
99
185
  * antes do POST — depois do build/upload — pra o TOTP não vencer no meio.
100
186
  */
101
187
  export declare function resolveDeployStepUpHeaders(opts: Pick<DeployOptions, 'mfaToken' | 'json'>, envName: string, nonInteractive: boolean): Promise<Record<string, string>>;
188
+ /**
189
+ * Mostra os `warnings[]` que o Core devolve no deploy.
190
+ *
191
+ * Medido em 2026-10-12: o Core devolve `warnings` nos TRES alvos e o comentario
192
+ * dele diz, literalmente, "`warnings[]` na resposta JSON (o CLI exibe pro
193
+ * operador)" (`cli/v1/deploy/route.ts:309`). `grep warnings` em `deploy.ts`
194
+ * devolvia ZERO — a promessa nunca foi cumprida.
195
+ *
196
+ * O caso que mais doia: a CLI manda o ambiente default e o Core normaliza, e o
197
+ * aviso de que `environmentId` foi ASSUMIDO disparava em todo deploy sem
198
+ * `--env` — e sumia 100% das vezes. O operador achava que tinha escolhido.
199
+ *
200
+ * Vai pro STDERR de proposito: em `--json` o stdout e contrato de maquina (uma
201
+ * linha JSON) e nao pode ser poluido. Quem le JSON ja recebe `warnings` no
202
+ * proprio corpo.
203
+ */
204
+ export declare function mostrarAvisosDoCore(warnings: unknown, json?: boolean): void;
205
+ /**
206
+ * `--env` do deploy workspace/cloud-run: fora do vocabulário, encerra com exit
207
+ * 1 e os valores válidos da MESMA lista que validou (`invalid_env`, com `flag`,
208
+ * `value` e `valid` no JSON). Exportada para teste.
209
+ */
210
+ export declare function validarAmbienteDoDeploy(envName: string, json: boolean | undefined): void;
102
211
  /**
103
212
  * Mapeia o `envName` do deploy ('dev' | 'staging' | 'prod' — vocabulário do
104
213
  * `--env` deste comando) pro `targetEnv` que `neetru build` entende
105
214
  * ('dev' | 'workspace' | 'prod' — vocabulário de `BuildOptions`/SDK).
106
215
  * 'staging' vira 'workspace' (mesmo conceito de ambiente não-dev/não-prod).
107
216
  * Valor desconhecido cai em 'prod' (mesmo default conservador de `runBuild`).
217
+ * P105: a correspondência sai de `VOCABULARIOS_DE_AMBIENTE`, não de `if`s.
108
218
  *
109
219
  * Fix (2026-07-22, achado da revisão adversarial): sem isso, todo build
110
220
  * implícito de `neetru deploy --env dev`/`--env staging` (quando não há
111
221
  * artifact em cache) forçava NEXT_PUBLIC_NEETRU_ENV=prod incondicionalmente.
112
222
  */
113
- export declare function deployEnvToBuildTargetEnv(envName: string): 'dev' | 'workspace' | 'prod';
223
+ export declare function deployEnvToBuildTargetEnv(envName: string): RuntimeEnvironmentId;
114
224
  /**
115
225
  * bug_5b6bb0d7 — segredos NÃO podem viajar por env no deploy.
116
226
  *
@@ -133,6 +243,30 @@ export declare function deployEnvToBuildTargetEnv(envName: string): 'dev' | 'wor
133
243
  * saírem de sincronia, mas exige atualização manual dos dois lados.
134
244
  */
135
245
  export declare const SECRET_ENVVAR_PATTERNS: RegExp[];
246
+ /**
247
+ * Aviso do segredo descartado no `--env-file` de um deploy VM.
248
+ *
249
+ * bug_8b85353b (Parte 3): até aqui a mensagem mandava "usar o Secret Manager e
250
+ * referenciar por nome na VM" — mecanismo que NÃO existia para segredo do
251
+ * próprio produto (era a 4ª cópia do padrão que o core#632 corrigiu nas outras
252
+ * três). O caminho real é `neetru secrets set`, que grava no registro
253
+ * `product_secrets` do Core com o valor direto no Secret Manager. `env` é o
254
+ * `--env` do deploy, para o comando sugerido já sair com o ambiente certo.
255
+ *
256
+ * Revisão do #81 (M1): o comando só é sugerido quando o Core o aceitaria.
257
+ * Chave reservada (o Core já a entrega ao app: credencial SDK/OIDC/CLI,
258
+ * módulo, unit) é recusada em `assertValidProductSecretKey`, e nome fora de
259
+ * CAIXA_ALTA é recusado pela própria CLI (`problemaNaChave`) — sugerir
260
+ * `neetru secrets set` nesses casos mandava o dev para um caminho que falha.
261
+ */
262
+ export declare function avisoSegredoDescartadoNaVm(chave: string, env: string | undefined): string;
263
+ /**
264
+ * O aviso desta chave manda para `neetru secrets set`? Não manda quando o
265
+ * Core reserva a chave — aí o aviso de que o agente ainda não entrega
266
+ * segredos do produto também não cabe.
267
+ */
268
+ export declare function segredoDescartadoApontaSecretsSet(chave: string): boolean;
269
+ export declare function pickTarget(opts: DeployOptions, nonInteractive: boolean, runtime?: string): Promise<'cloud-run' | 'vm' | 'workspace'>;
136
270
  /** Verdicts de uma tentativa de probe. Só `healthy` é terminal-sucesso. */
137
271
  export type HealthProbeVerdict = 'healthy' | 'degraded' | 'warming' | 'unreachable' | 'unverifiable';
138
272
  export interface HealthProbeAttempt {