@build-astron-co/nimbus 0.2.0 → 0.4.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 (469) hide show
  1. package/bin/nimbus +26 -10
  2. package/bin/nimbus.cmd +41 -0
  3. package/bin/nimbus.mjs +70 -0
  4. package/completions/nimbus.bash +38 -0
  5. package/completions/nimbus.fish +48 -0
  6. package/completions/nimbus.zsh +81 -0
  7. package/dist/src/agent/compaction-agent.js +215 -0
  8. package/dist/src/agent/context-manager.js +385 -0
  9. package/dist/src/agent/context.js +322 -0
  10. package/dist/src/agent/deploy-preview.js +395 -0
  11. package/dist/src/agent/expand-files.js +95 -0
  12. package/dist/src/agent/index.js +18 -0
  13. package/dist/src/agent/loop.js +1535 -0
  14. package/dist/src/agent/modes.js +347 -0
  15. package/dist/src/agent/permissions.js +396 -0
  16. package/dist/src/agent/subagents/base.js +67 -0
  17. package/dist/src/agent/subagents/cost.js +45 -0
  18. package/dist/src/agent/subagents/explore.js +36 -0
  19. package/dist/src/agent/subagents/general.js +41 -0
  20. package/dist/src/agent/subagents/index.js +88 -0
  21. package/dist/src/agent/subagents/infra.js +52 -0
  22. package/dist/src/agent/subagents/security.js +60 -0
  23. package/dist/src/agent/system-prompt.js +860 -0
  24. package/dist/src/app.js +152 -0
  25. package/dist/src/audit/activity-log.js +209 -0
  26. package/dist/src/audit/compliance-checker.js +419 -0
  27. package/dist/src/audit/cost-tracker.js +231 -0
  28. package/dist/src/audit/index.js +10 -0
  29. package/dist/src/audit/security-scanner.js +490 -0
  30. package/dist/src/auth/guard.js +64 -0
  31. package/dist/src/auth/index.js +19 -0
  32. package/dist/src/auth/keychain.js +79 -0
  33. package/dist/src/auth/oauth.js +389 -0
  34. package/dist/src/auth/providers.js +415 -0
  35. package/dist/src/auth/sso.js +87 -0
  36. package/dist/src/auth/store.js +424 -0
  37. package/dist/src/auth/types.js +5 -0
  38. package/dist/src/cli/index.js +8 -0
  39. package/dist/src/cli/init.js +1048 -0
  40. package/dist/src/cli/openapi-spec.js +346 -0
  41. package/dist/src/cli/run.js +505 -0
  42. package/dist/src/cli/serve-auth.js +56 -0
  43. package/dist/src/cli/serve.js +432 -0
  44. package/dist/src/cli/web.js +50 -0
  45. package/dist/src/cli.js +1574 -0
  46. package/dist/src/clients/core-engine-client.js +156 -0
  47. package/dist/src/clients/enterprise-client.js +246 -0
  48. package/dist/src/clients/generator-client.js +219 -0
  49. package/dist/src/clients/git-client.js +367 -0
  50. package/dist/src/clients/github-client.js +229 -0
  51. package/dist/src/clients/helm-client.js +299 -0
  52. package/dist/src/clients/index.js +18 -0
  53. package/dist/src/clients/k8s-client.js +270 -0
  54. package/dist/src/clients/llm-client.js +119 -0
  55. package/dist/src/clients/rest-client.js +104 -0
  56. package/dist/src/clients/service-discovery.js +35 -0
  57. package/dist/src/clients/terraform-client.js +302 -0
  58. package/dist/src/clients/tools-client.js +1227 -0
  59. package/dist/src/clients/ws-client.js +93 -0
  60. package/dist/src/commands/alias.js +91 -0
  61. package/dist/src/commands/analyze/index.js +313 -0
  62. package/dist/src/commands/apply/helm.js +375 -0
  63. package/dist/src/commands/apply/index.js +176 -0
  64. package/dist/src/commands/apply/k8s.js +350 -0
  65. package/dist/src/commands/apply/terraform.js +465 -0
  66. package/dist/src/commands/ask.js +137 -0
  67. package/dist/src/commands/audit/index.js +322 -0
  68. package/dist/src/commands/auth-cloud.js +345 -0
  69. package/dist/src/commands/auth-list.js +112 -0
  70. package/dist/src/commands/auth-profile.js +104 -0
  71. package/dist/src/commands/auth-refresh.js +161 -0
  72. package/dist/src/commands/auth-status.js +122 -0
  73. package/dist/src/commands/aws/ec2.js +402 -0
  74. package/dist/src/commands/aws/iam.js +304 -0
  75. package/dist/src/commands/aws/index.js +108 -0
  76. package/dist/src/commands/aws/lambda.js +317 -0
  77. package/dist/src/commands/aws/rds.js +345 -0
  78. package/dist/src/commands/aws/s3.js +346 -0
  79. package/dist/src/commands/aws/vpc.js +302 -0
  80. package/dist/src/commands/aws-discover.js +413 -0
  81. package/dist/src/commands/aws-terraform.js +618 -0
  82. package/dist/src/commands/azure/aks.js +305 -0
  83. package/dist/src/commands/azure/functions.js +200 -0
  84. package/dist/src/commands/azure/index.js +93 -0
  85. package/dist/src/commands/azure/storage.js +378 -0
  86. package/dist/src/commands/azure/vm.js +291 -0
  87. package/dist/src/commands/billing/index.js +224 -0
  88. package/dist/src/commands/chat.js +259 -0
  89. package/dist/src/commands/completions.js +255 -0
  90. package/dist/src/commands/config.js +291 -0
  91. package/dist/src/commands/cost/cloud-cost-estimator.js +211 -0
  92. package/dist/src/commands/cost/estimator.js +73 -0
  93. package/dist/src/commands/cost/index.js +625 -0
  94. package/dist/src/commands/cost/parsers/terraform.js +234 -0
  95. package/dist/src/commands/cost/parsers/types.js +4 -0
  96. package/dist/src/commands/cost/pricing/aws.js +501 -0
  97. package/dist/src/commands/cost/pricing/azure.js +462 -0
  98. package/dist/src/commands/cost/pricing/gcp.js +359 -0
  99. package/dist/src/commands/cost/pricing/index.js +24 -0
  100. package/dist/src/commands/demo.js +196 -0
  101. package/dist/src/commands/deploy.js +215 -0
  102. package/dist/src/commands/doctor.js +1291 -0
  103. package/dist/src/commands/drift/index.js +674 -0
  104. package/dist/src/commands/explain.js +235 -0
  105. package/dist/src/commands/export.js +120 -0
  106. package/dist/src/commands/feedback.js +319 -0
  107. package/dist/src/commands/fix.js +263 -0
  108. package/dist/src/commands/fs/index.js +338 -0
  109. package/dist/src/commands/gcp/compute.js +266 -0
  110. package/dist/src/commands/gcp/functions.js +221 -0
  111. package/dist/src/commands/gcp/gke.js +357 -0
  112. package/dist/src/commands/gcp/iam.js +295 -0
  113. package/dist/src/commands/gcp/index.js +105 -0
  114. package/dist/src/commands/gcp/storage.js +232 -0
  115. package/dist/src/commands/generate-helm.js +1026 -0
  116. package/dist/src/commands/generate-k8s.js +1263 -0
  117. package/dist/src/commands/generate-terraform.js +1058 -0
  118. package/dist/src/commands/gh/index.js +663 -0
  119. package/dist/src/commands/git/index.js +1208 -0
  120. package/dist/src/commands/helm/index.js +985 -0
  121. package/dist/src/commands/help.js +639 -0
  122. package/dist/src/commands/history.js +120 -0
  123. package/dist/src/commands/import.js +782 -0
  124. package/dist/src/commands/incident.js +144 -0
  125. package/dist/src/commands/index.js +109 -0
  126. package/dist/src/commands/init.js +955 -0
  127. package/dist/src/commands/k8s/index.js +979 -0
  128. package/dist/src/commands/login.js +588 -0
  129. package/dist/src/commands/logout.js +61 -0
  130. package/dist/src/commands/logs.js +160 -0
  131. package/dist/src/commands/onboarding.js +382 -0
  132. package/dist/src/commands/pipeline.js +153 -0
  133. package/dist/src/commands/plan/display.js +216 -0
  134. package/dist/src/commands/plan/index.js +525 -0
  135. package/dist/src/commands/plugin.js +325 -0
  136. package/dist/src/commands/preview.js +356 -0
  137. package/dist/src/commands/profile.js +297 -0
  138. package/dist/src/commands/questionnaire.js +1021 -0
  139. package/dist/src/commands/resume.js +35 -0
  140. package/dist/src/commands/rollback.js +259 -0
  141. package/dist/src/commands/rollout.js +74 -0
  142. package/dist/src/commands/runbook.js +307 -0
  143. package/dist/src/commands/schedule.js +202 -0
  144. package/dist/src/commands/status.js +213 -0
  145. package/dist/src/commands/team/index.js +309 -0
  146. package/dist/src/commands/team-context.js +200 -0
  147. package/dist/src/commands/template.js +204 -0
  148. package/dist/src/commands/tf/index.js +989 -0
  149. package/dist/src/commands/upgrade.js +515 -0
  150. package/dist/src/commands/usage/index.js +118 -0
  151. package/dist/src/commands/version.js +145 -0
  152. package/dist/src/commands/watch.js +127 -0
  153. package/dist/src/compat/index.js +2 -0
  154. package/dist/src/compat/runtime.js +10 -0
  155. package/dist/src/compat/sqlite.js +144 -0
  156. package/dist/src/config/index.js +6 -0
  157. package/dist/src/config/manager.js +469 -0
  158. package/dist/src/config/mode-store.js +57 -0
  159. package/dist/src/config/profiles.js +66 -0
  160. package/dist/src/config/safety-policy.js +251 -0
  161. package/dist/src/config/schema.js +107 -0
  162. package/dist/src/config/types.js +311 -0
  163. package/dist/src/config/workspace-state.js +38 -0
  164. package/dist/src/context/context-db.js +138 -0
  165. package/dist/src/demo/index.js +295 -0
  166. package/dist/src/demo/scenarios/full-journey.js +226 -0
  167. package/dist/src/demo/scenarios/getting-started.js +124 -0
  168. package/dist/src/demo/scenarios/helm-release.js +334 -0
  169. package/dist/src/demo/scenarios/k8s-deployment.js +190 -0
  170. package/dist/src/demo/scenarios/terraform-vpc.js +167 -0
  171. package/dist/src/demo/types.js +6 -0
  172. package/dist/src/engine/cost-estimator.js +334 -0
  173. package/dist/src/engine/diagram-generator.js +192 -0
  174. package/dist/src/engine/drift-detector.js +688 -0
  175. package/dist/src/engine/executor.js +832 -0
  176. package/dist/src/engine/index.js +39 -0
  177. package/dist/src/engine/orchestrator.js +436 -0
  178. package/dist/src/engine/planner.js +616 -0
  179. package/dist/src/engine/safety.js +609 -0
  180. package/dist/src/engine/verifier.js +664 -0
  181. package/dist/src/enterprise/audit.js +241 -0
  182. package/dist/src/enterprise/auth.js +189 -0
  183. package/dist/src/enterprise/billing.js +512 -0
  184. package/dist/src/enterprise/index.js +16 -0
  185. package/dist/src/enterprise/teams.js +315 -0
  186. package/dist/src/generator/best-practices.js +1375 -0
  187. package/dist/src/generator/helm.js +495 -0
  188. package/dist/src/generator/index.js +11 -0
  189. package/dist/src/generator/intent-parser.js +420 -0
  190. package/dist/src/generator/kubernetes.js +773 -0
  191. package/dist/src/generator/terraform.js +1472 -0
  192. package/dist/src/history/index.js +6 -0
  193. package/dist/src/history/manager.js +199 -0
  194. package/dist/src/history/types.js +6 -0
  195. package/dist/src/hooks/config.js +318 -0
  196. package/dist/src/hooks/engine.js +317 -0
  197. package/dist/src/hooks/index.js +2 -0
  198. package/dist/src/llm/auth-bridge.js +157 -0
  199. package/dist/src/llm/circuit-breaker.js +116 -0
  200. package/dist/src/llm/config-loader.js +172 -0
  201. package/dist/src/llm/cost-calculator.js +137 -0
  202. package/dist/src/llm/index.js +7 -0
  203. package/dist/src/llm/model-aliases.js +99 -0
  204. package/dist/src/llm/provider-registry.js +57 -0
  205. package/dist/src/llm/providers/anthropic.js +430 -0
  206. package/dist/src/llm/providers/bedrock.js +409 -0
  207. package/dist/src/llm/providers/google.js +344 -0
  208. package/dist/src/llm/providers/ollama.js +661 -0
  209. package/dist/src/llm/providers/openai-compatible.js +289 -0
  210. package/dist/src/llm/providers/openai.js +284 -0
  211. package/dist/src/llm/providers/openrouter.js +293 -0
  212. package/dist/src/llm/router.js +844 -0
  213. package/dist/src/llm/types.js +69 -0
  214. package/dist/src/lsp/client.js +239 -0
  215. package/dist/src/lsp/languages.js +95 -0
  216. package/dist/src/lsp/manager.js +243 -0
  217. package/dist/src/mcp/client.js +289 -0
  218. package/dist/src/mcp/index.js +5 -0
  219. package/dist/src/mcp/manager.js +113 -0
  220. package/dist/src/nimbus.js +212 -0
  221. package/dist/src/plugins/index.js +13 -0
  222. package/dist/src/plugins/loader.js +280 -0
  223. package/dist/src/plugins/manager.js +282 -0
  224. package/dist/src/plugins/types.js +23 -0
  225. package/dist/src/scanners/cicd-scanner.js +230 -0
  226. package/dist/src/scanners/cloud-scanner.js +415 -0
  227. package/dist/src/scanners/framework-scanner.js +430 -0
  228. package/dist/src/scanners/iac-scanner.js +350 -0
  229. package/dist/src/scanners/index.js +454 -0
  230. package/dist/src/scanners/language-scanner.js +258 -0
  231. package/dist/src/scanners/package-manager-scanner.js +252 -0
  232. package/dist/src/scanners/types.js +6 -0
  233. package/dist/src/sessions/manager.js +395 -0
  234. package/dist/src/sessions/types.js +4 -0
  235. package/dist/src/sharing/sync.js +238 -0
  236. package/dist/src/sharing/viewer.js +131 -0
  237. package/dist/src/snapshots/index.js +1 -0
  238. package/dist/src/snapshots/manager.js +432 -0
  239. package/dist/src/state/artifacts.js +94 -0
  240. package/dist/src/state/audit.js +73 -0
  241. package/dist/src/state/billing.js +126 -0
  242. package/dist/src/state/checkpoints.js +81 -0
  243. package/dist/src/state/config.js +58 -0
  244. package/dist/src/state/conversations.js +7 -0
  245. package/dist/src/state/credentials.js +96 -0
  246. package/dist/src/state/db.js +53 -0
  247. package/dist/src/state/index.js +23 -0
  248. package/dist/src/state/messages.js +76 -0
  249. package/dist/src/state/projects.js +92 -0
  250. package/dist/src/state/schema.js +233 -0
  251. package/dist/src/state/sessions.js +79 -0
  252. package/dist/src/state/teams.js +131 -0
  253. package/dist/src/telemetry.js +91 -0
  254. package/dist/src/tools/aws-ops.js +747 -0
  255. package/dist/src/tools/azure-ops.js +491 -0
  256. package/dist/src/tools/file-ops.js +451 -0
  257. package/dist/src/tools/gcp-ops.js +559 -0
  258. package/dist/src/tools/git-ops.js +557 -0
  259. package/dist/src/tools/github-ops.js +460 -0
  260. package/dist/src/tools/helm-ops.js +634 -0
  261. package/dist/src/tools/index.js +16 -0
  262. package/dist/src/tools/k8s-ops.js +579 -0
  263. package/dist/src/tools/schemas/converter.js +129 -0
  264. package/dist/src/tools/schemas/devops.js +3319 -0
  265. package/dist/src/tools/schemas/index.js +19 -0
  266. package/dist/src/tools/schemas/standard.js +966 -0
  267. package/dist/src/tools/schemas/types.js +409 -0
  268. package/dist/src/tools/spawn-exec.js +109 -0
  269. package/dist/src/tools/terraform-ops.js +627 -0
  270. package/dist/src/types/config.js +1 -0
  271. package/dist/src/types/drift.js +4 -0
  272. package/dist/src/types/enterprise.js +5 -0
  273. package/dist/src/types/index.js +14 -0
  274. package/dist/src/types/plan.js +1 -0
  275. package/dist/src/types/request.js +1 -0
  276. package/dist/src/types/response.js +1 -0
  277. package/dist/src/types/service.js +1 -0
  278. package/dist/src/ui/App.js +1672 -0
  279. package/dist/src/ui/DeployPreview.js +60 -0
  280. package/dist/src/ui/FileDiffModal.js +108 -0
  281. package/dist/src/ui/Header.js +46 -0
  282. package/dist/src/ui/HelpModal.js +9 -0
  283. package/dist/src/ui/InputBox.js +408 -0
  284. package/dist/src/ui/MessageList.js +795 -0
  285. package/dist/src/ui/PermissionPrompt.js +72 -0
  286. package/dist/src/ui/StatusBar.js +109 -0
  287. package/dist/src/ui/TerminalPane.js +31 -0
  288. package/dist/src/ui/ToolCallDisplay.js +303 -0
  289. package/dist/src/ui/TreePane.js +83 -0
  290. package/dist/src/ui/chat-ui.js +721 -0
  291. package/dist/src/ui/index.js +11 -0
  292. package/dist/src/ui/ink/index.js +1325 -0
  293. package/dist/src/ui/streaming.js +137 -0
  294. package/dist/src/ui/theme.js +78 -0
  295. package/dist/src/ui/types.js +7 -0
  296. package/dist/src/utils/analytics.js +61 -0
  297. package/dist/src/utils/cost-warning.js +25 -0
  298. package/dist/src/utils/env.js +42 -0
  299. package/dist/src/utils/errors.js +54 -0
  300. package/dist/src/utils/event-bus.js +22 -0
  301. package/dist/src/utils/index.js +16 -0
  302. package/dist/src/utils/logger.js +150 -0
  303. package/dist/src/utils/rate-limiter.js +90 -0
  304. package/dist/src/utils/service-auth.js +36 -0
  305. package/dist/src/utils/validation.js +39 -0
  306. package/dist/src/version.js +3 -0
  307. package/dist/src/watcher/index.js +192 -0
  308. package/dist/src/wizard/approval.js +275 -0
  309. package/dist/src/wizard/index.js +13 -0
  310. package/dist/src/wizard/prompts.js +273 -0
  311. package/dist/src/wizard/types.js +4 -0
  312. package/dist/src/wizard/ui.js +453 -0
  313. package/dist/src/wizard/wizard.js +227 -0
  314. package/package.json +31 -23
  315. package/src/__tests__/alias.test.ts +133 -0
  316. package/src/__tests__/app.test.ts +1 -1
  317. package/src/__tests__/audit.test.ts +1 -1
  318. package/src/__tests__/circuit-breaker.test.ts +1 -1
  319. package/src/__tests__/cli-run.test.ts +237 -1
  320. package/src/__tests__/compat-sqlite.test.ts +68 -0
  321. package/src/__tests__/context-manager.test.ts +131 -1
  322. package/src/__tests__/context.test.ts +1 -1
  323. package/src/__tests__/devops-terminal-gaps.test.ts +718 -0
  324. package/src/__tests__/doctor.test.ts +48 -0
  325. package/src/__tests__/enterprise.test.ts +1 -1
  326. package/src/__tests__/export.test.ts +236 -0
  327. package/src/__tests__/gap-11-18-20.test.ts +958 -0
  328. package/src/__tests__/generator.test.ts +1 -1
  329. package/src/__tests__/helm-streaming.test.ts +127 -0
  330. package/src/__tests__/hooks.test.ts +1 -1
  331. package/src/__tests__/incident.test.ts +179 -0
  332. package/src/__tests__/init.test.ts +55 -4
  333. package/src/__tests__/intent-parser.test.ts +1 -1
  334. package/src/__tests__/llm-router.test.ts +1 -1
  335. package/src/__tests__/logs.test.ts +107 -0
  336. package/src/__tests__/loop-errors.test.ts +244 -0
  337. package/src/__tests__/lsp.test.ts +1 -1
  338. package/src/__tests__/modes.test.ts +1 -1
  339. package/src/__tests__/perf-optimizations.test.ts +847 -0
  340. package/src/__tests__/permissions.test.ts +1 -1
  341. package/src/__tests__/pipeline.test.ts +50 -0
  342. package/src/__tests__/polish-phase3.test.ts +340 -0
  343. package/src/__tests__/profile.test.ts +237 -0
  344. package/src/__tests__/rollback.test.ts +83 -0
  345. package/src/__tests__/runbook.test.ts +219 -0
  346. package/src/__tests__/schedule.test.ts +206 -0
  347. package/src/__tests__/serve.test.ts +1 -1
  348. package/src/__tests__/sessions.test.ts +96 -1
  349. package/src/__tests__/sharing.test.ts +53 -1
  350. package/src/__tests__/snapshots.test.ts +1 -1
  351. package/src/__tests__/standalone-migration.test.ts +199 -0
  352. package/src/__tests__/state-db.test.ts +1 -1
  353. package/src/__tests__/status.test.ts +158 -0
  354. package/src/__tests__/stream-with-tools.test.ts +71 -25
  355. package/src/__tests__/subagents.test.ts +1 -1
  356. package/src/__tests__/system-prompt.test.ts +82 -3
  357. package/src/__tests__/terminal-gap-v2.test.ts +395 -0
  358. package/src/__tests__/terminal-parity.test.ts +393 -0
  359. package/src/__tests__/tf-apply.test.ts +187 -0
  360. package/src/__tests__/tool-converter.test.ts +1 -1
  361. package/src/__tests__/tool-schemas.test.ts +209 -4
  362. package/src/__tests__/tools.test.ts +4 -3
  363. package/src/__tests__/version-json.test.ts +184 -0
  364. package/src/__tests__/version.test.ts +1 -1
  365. package/src/__tests__/watch.test.ts +129 -0
  366. package/src/agent/compaction-agent.ts +40 -1
  367. package/src/agent/context-manager.ts +67 -3
  368. package/src/agent/deploy-preview.ts +62 -1
  369. package/src/agent/expand-files.ts +108 -0
  370. package/src/agent/loop.ts +1312 -31
  371. package/src/agent/permissions.ts +51 -4
  372. package/src/agent/system-prompt.ts +573 -19
  373. package/src/app.ts +58 -0
  374. package/src/audit/security-scanner.ts +45 -0
  375. package/src/auth/keychain.ts +82 -0
  376. package/src/auth/oauth.ts +15 -5
  377. package/src/cli/init.ts +378 -5
  378. package/src/cli/run.ts +407 -16
  379. package/src/cli/serve.ts +78 -1
  380. package/src/cli/web.ts +10 -6
  381. package/src/cli.ts +312 -1
  382. package/src/clients/service-discovery.ts +30 -25
  383. package/src/commands/alias.ts +100 -0
  384. package/src/commands/audit/index.ts +121 -2
  385. package/src/commands/auth-cloud.ts +113 -0
  386. package/src/commands/auth-refresh.ts +187 -0
  387. package/src/commands/aws-discover.ts +144 -251
  388. package/src/commands/aws-terraform.ts +68 -118
  389. package/src/commands/chat.ts +9 -3
  390. package/src/commands/completions.ts +268 -0
  391. package/src/commands/config.ts +26 -0
  392. package/src/commands/cost/index.ts +218 -2
  393. package/src/commands/deploy.ts +260 -0
  394. package/src/commands/doctor.ts +744 -152
  395. package/src/commands/drift/index.ts +371 -23
  396. package/src/commands/export.ts +146 -0
  397. package/src/commands/generate-k8s.ts +9 -61
  398. package/src/commands/generate-terraform.ts +191 -449
  399. package/src/commands/help.ts +212 -36
  400. package/src/commands/history.ts +8 -1
  401. package/src/commands/incident.ts +166 -0
  402. package/src/commands/init.ts +5 -0
  403. package/src/commands/login.ts +86 -1
  404. package/src/commands/logs.ts +167 -0
  405. package/src/commands/onboarding.ts +211 -34
  406. package/src/commands/pipeline.ts +186 -0
  407. package/src/commands/plugin.ts +398 -0
  408. package/src/commands/profile.ts +342 -0
  409. package/src/commands/questionnaire.ts +0 -98
  410. package/src/commands/resume.ts +26 -34
  411. package/src/commands/rollback.ts +315 -0
  412. package/src/commands/rollout.ts +88 -0
  413. package/src/commands/runbook.ts +346 -0
  414. package/src/commands/schedule.ts +236 -0
  415. package/src/commands/status.ts +252 -0
  416. package/src/commands/team-context.ts +220 -0
  417. package/src/commands/template.ts +58 -57
  418. package/src/commands/tf/index.ts +70 -11
  419. package/src/commands/upgrade.ts +57 -0
  420. package/src/commands/version.ts +54 -50
  421. package/src/commands/watch.ts +153 -0
  422. package/src/compat/runtime.ts +1 -1
  423. package/src/compat/sqlite.ts +75 -5
  424. package/src/config/mode-store.ts +62 -0
  425. package/src/config/profiles.ts +84 -0
  426. package/src/config/types.ts +83 -1
  427. package/src/config/workspace-state.ts +53 -0
  428. package/src/engine/cost-estimator.ts +52 -10
  429. package/src/engine/executor.ts +33 -2
  430. package/src/engine/planner.ts +68 -1
  431. package/src/generator/terraform.ts +8 -0
  432. package/src/history/manager.ts +2 -74
  433. package/src/hooks/engine.ts +5 -4
  434. package/src/llm/cost-calculator.ts +2 -2
  435. package/src/llm/providers/anthropic.ts +50 -21
  436. package/src/llm/router.ts +76 -7
  437. package/src/lsp/languages.ts +3 -0
  438. package/src/lsp/manager.ts +21 -5
  439. package/src/nimbus.ts +37 -18
  440. package/src/sessions/manager.ts +108 -1
  441. package/src/sharing/sync.ts +4 -0
  442. package/src/sharing/viewer.ts +66 -0
  443. package/src/tools/file-ops.ts +22 -0
  444. package/src/tools/schemas/devops.ts +3007 -117
  445. package/src/tools/schemas/standard.ts +5 -1
  446. package/src/tools/schemas/types.ts +31 -1
  447. package/src/tools/spawn-exec.ts +148 -0
  448. package/src/ui/App.tsx +1183 -66
  449. package/src/ui/DeployPreview.tsx +62 -57
  450. package/src/ui/FileDiffModal.tsx +162 -0
  451. package/src/ui/Header.tsx +87 -24
  452. package/src/ui/HelpModal.tsx +57 -0
  453. package/src/ui/InputBox.tsx +163 -10
  454. package/src/ui/MessageList.tsx +487 -40
  455. package/src/ui/PermissionPrompt.tsx +17 -5
  456. package/src/ui/StatusBar.tsx +122 -3
  457. package/src/ui/TerminalPane.tsx +84 -0
  458. package/src/ui/ToolCallDisplay.tsx +252 -18
  459. package/src/ui/TreePane.tsx +132 -0
  460. package/src/ui/chat-ui.ts +41 -44
  461. package/src/ui/ink/index.ts +771 -38
  462. package/src/ui/streaming.ts +1 -1
  463. package/src/ui/theme.ts +104 -0
  464. package/src/ui/types.ts +18 -0
  465. package/src/version.ts +1 -1
  466. package/src/watcher/index.ts +66 -15
  467. package/src/wizard/types.ts +1 -0
  468. package/src/wizard/ui.ts +1 -1
  469. package/tsconfig.json +2 -2
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Getting Started Tutorial
3
+ *
4
+ * Interactive tutorial for new Nimbus users
5
+ */
6
+ export const gettingStartedScenario = {
7
+ id: 'getting-started',
8
+ name: 'Getting Started with Nimbus',
9
+ description: 'Learn the basics of Nimbus CLI in this interactive tutorial',
10
+ category: 'tutorial',
11
+ duration: 5,
12
+ prerequisites: ['Nimbus CLI installed'],
13
+ tags: ['tutorial', 'beginner', 'basics'],
14
+ steps: [
15
+ {
16
+ id: 'check-version',
17
+ title: 'Check Nimbus Version',
18
+ description: "First, let's make sure Nimbus is installed correctly",
19
+ command: 'nimbus --version',
20
+ showOutput: true,
21
+ waitForInput: true,
22
+ mockResponse: 'nimbus version 1.0.0',
23
+ },
24
+ {
25
+ id: 'help',
26
+ title: 'View Available Commands',
27
+ description: "Nimbus has many commands - let's see what's available",
28
+ command: 'nimbus --help',
29
+ showOutput: true,
30
+ waitForInput: true,
31
+ mockResponse: `
32
+ Nimbus CLI - AI-powered infrastructure assistant
33
+
34
+ USAGE:
35
+ nimbus <command> [options]
36
+
37
+ COMMANDS:
38
+ init Initialize Nimbus in the current project
39
+ chat Start an interactive chat session
40
+ generate Generate infrastructure code
41
+ apply Apply infrastructure changes
42
+ preview Preview changes without applying
43
+ aws AWS CLI commands
44
+ tf Terraform commands
45
+ k8s Kubernetes commands
46
+ helm Helm commands
47
+
48
+ FLAGS:
49
+ --version Show version
50
+ --help Show help
51
+ `.trim(),
52
+ },
53
+ {
54
+ id: 'doctor',
55
+ title: 'Run System Check',
56
+ description: 'Check that all required tools are installed',
57
+ command: 'nimbus doctor',
58
+ showOutput: true,
59
+ waitForInput: true,
60
+ mockResponse: `
61
+ Nimbus Doctor
62
+
63
+ Checking system requirements...
64
+
65
+ ✓ Node.js 18.0.0
66
+ ✓ Bun 1.0.0
67
+ ✓ Git 2.40.0
68
+ ✓ Terraform 1.5.0
69
+ ✓ kubectl 1.28.0
70
+ ✓ Helm 3.12.0
71
+ ✓ AWS CLI 2.13.0
72
+
73
+ All checks passed!
74
+ `.trim(),
75
+ },
76
+ {
77
+ id: 'init-demo',
78
+ title: 'Initialize a Project',
79
+ description: 'Set up Nimbus in any directory to get started',
80
+ command: 'nimbus init --scan-depth quick',
81
+ showOutput: true,
82
+ waitForInput: true,
83
+ mockResponse: `
84
+ Nimbus Initialization
85
+
86
+ Scanning project (quick mode)...
87
+
88
+ Project Summary:
89
+ Type: unknown
90
+ Languages: none detected
91
+
92
+ Created .nimbus/project.yaml
93
+ Created .nimbus/config.yaml
94
+
95
+ Project initialized!
96
+
97
+ Next steps:
98
+ 1. Run 'nimbus chat' to get AI assistance
99
+ 2. Run 'nimbus generate terraform' to create infrastructure
100
+ 3. Run 'nimbus aws discover' to scan your AWS account
101
+ `.trim(),
102
+ },
103
+ {
104
+ id: 'config-list',
105
+ title: 'View Configuration',
106
+ description: 'See your current Nimbus configuration',
107
+ command: 'nimbus config list',
108
+ showOutput: true,
109
+ waitForInput: false,
110
+ mockResponse: `
111
+ Nimbus Configuration
112
+
113
+ Key Value
114
+ ─────────────────────────────────────────
115
+ llm.provider anthropic
116
+ llm.model claude-3-sonnet
117
+ safety.enabled true
118
+ safety.costThreshold 500
119
+ output.format table
120
+ output.colors true
121
+ `.trim(),
122
+ },
123
+ ],
124
+ };
@@ -0,0 +1,334 @@
1
+ /**
2
+ * Helm Release Demo Scenario
3
+ *
4
+ * Demonstrates creating and deploying a Helm chart
5
+ */
6
+ export const helmReleaseScenario = {
7
+ id: 'helm-release',
8
+ name: 'Create and Deploy Helm Chart',
9
+ description: 'Learn how to create and deploy Helm charts with Nimbus',
10
+ category: 'helm',
11
+ duration: 15,
12
+ prerequisites: [
13
+ 'Helm 3.x installed',
14
+ 'kubectl configured with cluster access',
15
+ 'Nimbus CLI installed',
16
+ ],
17
+ tags: ['helm', 'charts', 'deployment', 'kubernetes'],
18
+ steps: [
19
+ {
20
+ id: 'check-helm',
21
+ title: 'Verify Helm Installation',
22
+ description: 'Check that Helm is installed and configured',
23
+ command: 'nimbus helm version',
24
+ showOutput: true,
25
+ waitForInput: true,
26
+ mockResponse: `
27
+ Helm Version: v3.14.0
28
+ Kubernetes Version: v1.28.0
29
+ `.trim(),
30
+ },
31
+ {
32
+ id: 'generate-chart',
33
+ title: 'Generate Helm Chart',
34
+ description: 'Create a new Helm chart for a web application',
35
+ command: 'nimbus generate helm --name my-webapp --type web --output ./charts',
36
+ showOutput: true,
37
+ waitForInput: true,
38
+ mockResponse: `
39
+ Generating Helm chart...
40
+
41
+ Created chart: my-webapp
42
+
43
+ charts/my-webapp/
44
+ ├── Chart.yaml # Chart metadata
45
+ ├── values.yaml # Default values
46
+ ├── templates/
47
+ │ ├── _helpers.tpl # Template helpers
48
+ │ ├── deployment.yaml # Deployment template
49
+ │ ├── service.yaml # Service template
50
+ │ ├── ingress.yaml # Ingress template
51
+ │ ├── configmap.yaml # ConfigMap template
52
+ │ ├── hpa.yaml # HPA template
53
+ │ └── NOTES.txt # Post-install notes
54
+ └── .helmignore # Files to ignore
55
+
56
+ Chart type: Web Application
57
+ Features:
58
+ ✓ Deployment with health checks
59
+ ✓ Service (ClusterIP/LoadBalancer)
60
+ ✓ Ingress with TLS support
61
+ ✓ ConfigMap for environment
62
+ ✓ Horizontal Pod Autoscaler
63
+
64
+ Generated successfully!
65
+ `.trim(),
66
+ },
67
+ {
68
+ id: 'review-chart',
69
+ title: 'Review Chart Configuration',
70
+ description: 'Examine the generated Chart.yaml and values.yaml',
71
+ command: 'nimbus explain helm charts/my-webapp',
72
+ showOutput: true,
73
+ waitForInput: true,
74
+ mockResponse: `
75
+ Chart: my-webapp
76
+
77
+ Chart.yaml:
78
+ name: my-webapp
79
+ version: 0.1.0
80
+ appVersion: "1.0.0"
81
+ description: A Helm chart for a web application
82
+ type: application
83
+
84
+ values.yaml (key configurations):
85
+
86
+ replicaCount: 2
87
+
88
+ image:
89
+ repository: nginx
90
+ tag: "latest"
91
+ pullPolicy: IfNotPresent
92
+
93
+ service:
94
+ type: ClusterIP
95
+ port: 80
96
+
97
+ ingress:
98
+ enabled: false
99
+ className: "nginx"
100
+ hosts:
101
+ - host: my-webapp.local
102
+ paths:
103
+ - path: /
104
+ pathType: Prefix
105
+
106
+ resources:
107
+ limits:
108
+ cpu: 500m
109
+ memory: 512Mi
110
+ requests:
111
+ cpu: 100m
112
+ memory: 128Mi
113
+
114
+ autoscaling:
115
+ enabled: true
116
+ minReplicas: 2
117
+ maxReplicas: 10
118
+ targetCPUUtilization: 70
119
+
120
+ This chart follows Helm best practices with
121
+ configurable replicas, resources, and scaling.
122
+ `.trim(),
123
+ },
124
+ {
125
+ id: 'lint-chart',
126
+ title: 'Lint the Chart',
127
+ description: 'Validate the chart structure and templates',
128
+ command: 'nimbus helm lint charts/my-webapp',
129
+ showOutput: true,
130
+ waitForInput: true,
131
+ mockResponse: `
132
+ ==> Linting charts/my-webapp
133
+
134
+ [INFO] Chart.yaml: icon is recommended
135
+
136
+ 1 chart(s) linted, 0 chart(s) failed
137
+
138
+ Lint Summary:
139
+ ✓ Chart.yaml valid
140
+ ✓ values.yaml valid
141
+ ✓ Templates compile correctly
142
+ ✓ Required files present
143
+
144
+ Chart is ready for deployment!
145
+ `.trim(),
146
+ },
147
+ {
148
+ id: 'template-preview',
149
+ title: 'Preview Rendered Templates',
150
+ description: 'See what the chart will generate when installed',
151
+ command: 'nimbus helm template my-webapp charts/my-webapp --values charts/my-webapp/values.yaml | head -50',
152
+ showOutput: true,
153
+ waitForInput: true,
154
+ mockResponse: `
155
+ ---
156
+ # Source: my-webapp/templates/configmap.yaml
157
+ apiVersion: v1
158
+ kind: ConfigMap
159
+ metadata:
160
+ name: my-webapp-config
161
+ labels:
162
+ app.kubernetes.io/name: my-webapp
163
+ app.kubernetes.io/instance: my-webapp
164
+ data:
165
+ APP_ENV: "production"
166
+ ---
167
+ # Source: my-webapp/templates/service.yaml
168
+ apiVersion: v1
169
+ kind: Service
170
+ metadata:
171
+ name: my-webapp
172
+ labels:
173
+ app.kubernetes.io/name: my-webapp
174
+ spec:
175
+ type: ClusterIP
176
+ ports:
177
+ - port: 80
178
+ targetPort: http
179
+ protocol: TCP
180
+ name: http
181
+ selector:
182
+ app.kubernetes.io/name: my-webapp
183
+ ---
184
+ # Source: my-webapp/templates/deployment.yaml
185
+ apiVersion: apps/v1
186
+ kind: Deployment
187
+ metadata:
188
+ name: my-webapp
189
+ labels:
190
+ app.kubernetes.io/name: my-webapp
191
+ spec:
192
+ replicas: 2
193
+ selector:
194
+ matchLabels:
195
+ app.kubernetes.io/name: my-webapp
196
+ template:
197
+ ...
198
+ `.trim(),
199
+ },
200
+ {
201
+ id: 'install-release',
202
+ title: 'Install Helm Release (Dry Run)',
203
+ description: 'Deploy the chart to Kubernetes (dry run mode)',
204
+ command: 'nimbus apply helm --release my-webapp --chart charts/my-webapp --namespace demo --dry-run',
205
+ showOutput: true,
206
+ waitForInput: true,
207
+ mockResponse: `
208
+ Dry Run - Helm Install
209
+
210
+ Release: my-webapp
211
+ Namespace: demo
212
+ Chart: charts/my-webapp (0.1.0)
213
+
214
+ Resources to be created:
215
+ ✓ ConfigMap/my-webapp-config
216
+ ✓ Service/my-webapp
217
+ ✓ Deployment/my-webapp
218
+ ✓ HorizontalPodAutoscaler/my-webapp
219
+
220
+ Computed Values:
221
+ replicaCount: 2
222
+ image.repository: nginx
223
+ image.tag: latest
224
+ service.type: ClusterIP
225
+
226
+ No resources were created (dry run mode)
227
+
228
+ To install for real, remove --dry-run flag
229
+ `.trim(),
230
+ },
231
+ {
232
+ id: 'install-actual',
233
+ title: 'Install Helm Release',
234
+ description: 'Actually deploy the chart to the cluster',
235
+ command: 'nimbus apply helm --release my-webapp --chart charts/my-webapp --namespace demo --create-namespace',
236
+ showOutput: true,
237
+ waitForInput: true,
238
+ mockResponse: `
239
+ Installing Helm release...
240
+
241
+ NAME: my-webapp
242
+ NAMESPACE: demo
243
+ STATUS: deployed
244
+ REVISION: 1
245
+
246
+ Resources:
247
+ ✓ ConfigMap/my-webapp-config created
248
+ ✓ Service/my-webapp created
249
+ ✓ Deployment/my-webapp created
250
+ ✓ HorizontalPodAutoscaler/my-webapp created
251
+
252
+ Waiting for deployment...
253
+ Pods: 2/2 ready
254
+
255
+ NOTES:
256
+ Thank you for installing my-webapp!
257
+
258
+ To access the application:
259
+ kubectl port-forward svc/my-webapp 8080:80 -n demo
260
+ Then visit: http://localhost:8080
261
+
262
+ Installation complete!
263
+ `.trim(),
264
+ },
265
+ {
266
+ id: 'list-releases',
267
+ title: 'List Helm Releases',
268
+ description: 'View all deployed Helm releases',
269
+ command: 'nimbus helm list --namespace demo',
270
+ showOutput: true,
271
+ waitForInput: true,
272
+ mockResponse: `
273
+ NAME NAMESPACE REVISION STATUS CHART APP VERSION
274
+ my-webapp demo 1 deployed my-webapp-0.1.0 1.0.0
275
+ `.trim(),
276
+ },
277
+ {
278
+ id: 'upgrade-release',
279
+ title: 'Upgrade Release',
280
+ description: 'Upgrade the release with new values',
281
+ command: 'nimbus helm upgrade my-webapp charts/my-webapp --namespace demo --set replicaCount=3',
282
+ showOutput: true,
283
+ waitForInput: true,
284
+ mockResponse: `
285
+ Upgrading Helm release...
286
+
287
+ Release "my-webapp" has been upgraded.
288
+ REVISION: 2
289
+
290
+ Changes:
291
+ - replicaCount: 2 -> 3
292
+
293
+ Waiting for rollout...
294
+ Deployment updated: 3/3 replicas ready
295
+
296
+ Upgrade complete!
297
+ `.trim(),
298
+ },
299
+ {
300
+ id: 'history',
301
+ title: 'View Release History',
302
+ description: 'See the revision history of the release',
303
+ command: 'nimbus helm history my-webapp --namespace demo',
304
+ showOutput: true,
305
+ waitForInput: true,
306
+ mockResponse: `
307
+ REVISION STATUS DESCRIPTION
308
+ 1 superseded Install complete
309
+ 2 deployed Upgrade complete
310
+ `.trim(),
311
+ },
312
+ {
313
+ id: 'cleanup',
314
+ title: 'Uninstall Release',
315
+ description: 'Remove the Helm release (optional)',
316
+ command: 'nimbus helm uninstall my-webapp --namespace demo',
317
+ showOutput: true,
318
+ waitForInput: false,
319
+ mockResponse: `
320
+ Uninstalling release...
321
+
322
+ release "my-webapp" uninstalled
323
+
324
+ All resources removed:
325
+ - ConfigMap/my-webapp-config
326
+ - Service/my-webapp
327
+ - Deployment/my-webapp
328
+ - HorizontalPodAutoscaler/my-webapp
329
+
330
+ Cleanup complete!
331
+ `.trim(),
332
+ },
333
+ ],
334
+ };
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Kubernetes Deployment Demo Scenario
3
+ *
4
+ * Demonstrates deploying an application to Kubernetes
5
+ */
6
+ export const k8sDeploymentScenario = {
7
+ id: 'k8s-deployment',
8
+ name: 'Deploy to Kubernetes',
9
+ description: 'Learn how to generate and deploy Kubernetes manifests',
10
+ category: 'kubernetes',
11
+ duration: 10,
12
+ prerequisites: ['kubectl configured with cluster access', 'Nimbus CLI installed'],
13
+ tags: ['kubernetes', 'k8s', 'deployment', 'manifests'],
14
+ steps: [
15
+ {
16
+ id: 'check-cluster',
17
+ title: 'Verify Cluster Connection',
18
+ description: 'Check that kubectl can connect to your cluster',
19
+ command: 'nimbus k8s get nodes',
20
+ showOutput: true,
21
+ waitForInput: true,
22
+ mockResponse: `
23
+ NAME STATUS ROLES AGE VERSION
24
+ node-1 Ready control-plane 30d v1.28.0
25
+ node-2 Ready <none> 30d v1.28.0
26
+ node-3 Ready <none> 30d v1.28.0
27
+ `.trim(),
28
+ },
29
+ {
30
+ id: 'generate-manifests',
31
+ title: 'Generate Kubernetes Manifests',
32
+ description: 'Use Nimbus to generate deployment manifests for an nginx application',
33
+ command: 'nimbus generate k8s --type deployment --image nginx:latest --replicas 3 --port 80 --output ./k8s-demo',
34
+ showOutput: true,
35
+ waitForInput: true,
36
+ mockResponse: `
37
+ Generating Kubernetes manifests...
38
+
39
+ Created files:
40
+ k8s-demo/
41
+ ├── deployment.yaml # Deployment with 3 replicas
42
+ ├── service.yaml # ClusterIP service on port 80
43
+ └── kustomization.yaml # Kustomize configuration
44
+
45
+ Configuration:
46
+ Image: nginx:latest
47
+ Replicas: 3
48
+ Port: 80
49
+ Service: ClusterIP
50
+
51
+ Generated successfully!
52
+ `.trim(),
53
+ },
54
+ {
55
+ id: 'review-deployment',
56
+ title: 'Review Deployment Manifest',
57
+ description: 'Examine the generated deployment configuration',
58
+ command: 'nimbus explain k8s k8s-demo/deployment.yaml',
59
+ showOutput: true,
60
+ waitForInput: true,
61
+ mockResponse: `
62
+ File: k8s-demo/deployment.yaml
63
+
64
+ This Kubernetes Deployment defines:
65
+
66
+ 1. Metadata
67
+ - Name: nginx
68
+ - Labels: app=nginx
69
+
70
+ 2. Pod Spec
71
+ - Replicas: 3
72
+ - Container: nginx:latest
73
+ - Port: 80 (HTTP)
74
+
75
+ 3. Resource Limits
76
+ - CPU: 100m request, 500m limit
77
+ - Memory: 128Mi request, 256Mi limit
78
+
79
+ 4. Health Checks
80
+ - Liveness probe: HTTP GET /
81
+ - Readiness probe: HTTP GET /
82
+
83
+ 5. Update Strategy
84
+ - RollingUpdate
85
+ - maxUnavailable: 1
86
+ - maxSurge: 1
87
+
88
+ This is a production-ready deployment with proper
89
+ resource management and health monitoring.
90
+ `.trim(),
91
+ },
92
+ {
93
+ id: 'preview-apply',
94
+ title: 'Preview Apply (Dry Run)',
95
+ description: 'See what would be created without actually applying',
96
+ command: 'nimbus apply k8s --path ./k8s-demo --dry-run',
97
+ showOutput: true,
98
+ waitForInput: true,
99
+ mockResponse: `
100
+ Dry Run - Kubernetes Apply
101
+
102
+ Resources to create:
103
+ ✓ deployment/nginx (3 replicas)
104
+ ✓ service/nginx (ClusterIP:80)
105
+
106
+ Resource Summary:
107
+ Deployments: 1
108
+ Services: 1
109
+ ConfigMaps: 0
110
+ Secrets: 0
111
+
112
+ No changes will be applied (dry run mode)
113
+ `.trim(),
114
+ },
115
+ {
116
+ id: 'apply-manifests',
117
+ title: 'Apply to Cluster',
118
+ description: 'Deploy the application to your Kubernetes cluster',
119
+ command: 'nimbus apply k8s --path ./k8s-demo --namespace demo',
120
+ showOutput: true,
121
+ waitForInput: true,
122
+ mockResponse: `
123
+ Applying Kubernetes manifests...
124
+
125
+ namespace/demo created
126
+ deployment.apps/nginx created
127
+ service/nginx created
128
+
129
+ Waiting for deployment to be ready...
130
+ Replicas: 3/3 ready
131
+ Conditions: Available, Progressing
132
+
133
+ Deployment successful!
134
+
135
+ To access the application:
136
+ kubectl port-forward svc/nginx 8080:80 -n demo
137
+ Then visit: http://localhost:8080
138
+ `.trim(),
139
+ },
140
+ {
141
+ id: 'check-status',
142
+ title: 'Check Deployment Status',
143
+ description: 'Verify the deployment is running correctly',
144
+ command: 'nimbus k8s get pods --namespace demo',
145
+ showOutput: true,
146
+ waitForInput: true,
147
+ mockResponse: `
148
+ NAME READY STATUS RESTARTS AGE
149
+ nginx-5d4f8b7c9d-abc12 1/1 Running 0 30s
150
+ nginx-5d4f8b7c9d-def34 1/1 Running 0 30s
151
+ nginx-5d4f8b7c9d-ghi56 1/1 Running 0 30s
152
+ `.trim(),
153
+ },
154
+ {
155
+ id: 'scale-deployment',
156
+ title: 'Scale the Deployment',
157
+ description: 'Increase replicas to handle more traffic',
158
+ command: 'nimbus k8s scale deployment/nginx --replicas=5 --namespace demo',
159
+ showOutput: true,
160
+ waitForInput: true,
161
+ mockResponse: `
162
+ deployment.apps/nginx scaled
163
+
164
+ Scaling deployment from 3 to 5 replicas...
165
+
166
+ Current status:
167
+ Ready: 5/5 replicas
168
+
169
+ Scaling complete!
170
+ `.trim(),
171
+ },
172
+ {
173
+ id: 'cleanup',
174
+ title: 'Clean Up Resources',
175
+ description: 'Remove the demo deployment (optional)',
176
+ command: 'nimbus k8s delete --path ./k8s-demo --namespace demo',
177
+ showOutput: true,
178
+ waitForInput: false,
179
+ mockResponse: `
180
+ Deleting Kubernetes resources...
181
+
182
+ deployment.apps/nginx deleted
183
+ service/nginx deleted
184
+ namespace/demo deleted
185
+
186
+ Cleanup complete!
187
+ `.trim(),
188
+ },
189
+ ],
190
+ };