@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.
- package/bin/nimbus +26 -10
- package/bin/nimbus.cmd +41 -0
- package/bin/nimbus.mjs +70 -0
- package/completions/nimbus.bash +38 -0
- package/completions/nimbus.fish +48 -0
- package/completions/nimbus.zsh +81 -0
- package/dist/src/agent/compaction-agent.js +215 -0
- package/dist/src/agent/context-manager.js +385 -0
- package/dist/src/agent/context.js +322 -0
- package/dist/src/agent/deploy-preview.js +395 -0
- package/dist/src/agent/expand-files.js +95 -0
- package/dist/src/agent/index.js +18 -0
- package/dist/src/agent/loop.js +1535 -0
- package/dist/src/agent/modes.js +347 -0
- package/dist/src/agent/permissions.js +396 -0
- package/dist/src/agent/subagents/base.js +67 -0
- package/dist/src/agent/subagents/cost.js +45 -0
- package/dist/src/agent/subagents/explore.js +36 -0
- package/dist/src/agent/subagents/general.js +41 -0
- package/dist/src/agent/subagents/index.js +88 -0
- package/dist/src/agent/subagents/infra.js +52 -0
- package/dist/src/agent/subagents/security.js +60 -0
- package/dist/src/agent/system-prompt.js +860 -0
- package/dist/src/app.js +152 -0
- package/dist/src/audit/activity-log.js +209 -0
- package/dist/src/audit/compliance-checker.js +419 -0
- package/dist/src/audit/cost-tracker.js +231 -0
- package/dist/src/audit/index.js +10 -0
- package/dist/src/audit/security-scanner.js +490 -0
- package/dist/src/auth/guard.js +64 -0
- package/dist/src/auth/index.js +19 -0
- package/dist/src/auth/keychain.js +79 -0
- package/dist/src/auth/oauth.js +389 -0
- package/dist/src/auth/providers.js +415 -0
- package/dist/src/auth/sso.js +87 -0
- package/dist/src/auth/store.js +424 -0
- package/dist/src/auth/types.js +5 -0
- package/dist/src/cli/index.js +8 -0
- package/dist/src/cli/init.js +1048 -0
- package/dist/src/cli/openapi-spec.js +346 -0
- package/dist/src/cli/run.js +505 -0
- package/dist/src/cli/serve-auth.js +56 -0
- package/dist/src/cli/serve.js +432 -0
- package/dist/src/cli/web.js +50 -0
- package/dist/src/cli.js +1574 -0
- package/dist/src/clients/core-engine-client.js +156 -0
- package/dist/src/clients/enterprise-client.js +246 -0
- package/dist/src/clients/generator-client.js +219 -0
- package/dist/src/clients/git-client.js +367 -0
- package/dist/src/clients/github-client.js +229 -0
- package/dist/src/clients/helm-client.js +299 -0
- package/dist/src/clients/index.js +18 -0
- package/dist/src/clients/k8s-client.js +270 -0
- package/dist/src/clients/llm-client.js +119 -0
- package/dist/src/clients/rest-client.js +104 -0
- package/dist/src/clients/service-discovery.js +35 -0
- package/dist/src/clients/terraform-client.js +302 -0
- package/dist/src/clients/tools-client.js +1227 -0
- package/dist/src/clients/ws-client.js +93 -0
- package/dist/src/commands/alias.js +91 -0
- package/dist/src/commands/analyze/index.js +313 -0
- package/dist/src/commands/apply/helm.js +375 -0
- package/dist/src/commands/apply/index.js +176 -0
- package/dist/src/commands/apply/k8s.js +350 -0
- package/dist/src/commands/apply/terraform.js +465 -0
- package/dist/src/commands/ask.js +137 -0
- package/dist/src/commands/audit/index.js +322 -0
- package/dist/src/commands/auth-cloud.js +345 -0
- package/dist/src/commands/auth-list.js +112 -0
- package/dist/src/commands/auth-profile.js +104 -0
- package/dist/src/commands/auth-refresh.js +161 -0
- package/dist/src/commands/auth-status.js +122 -0
- package/dist/src/commands/aws/ec2.js +402 -0
- package/dist/src/commands/aws/iam.js +304 -0
- package/dist/src/commands/aws/index.js +108 -0
- package/dist/src/commands/aws/lambda.js +317 -0
- package/dist/src/commands/aws/rds.js +345 -0
- package/dist/src/commands/aws/s3.js +346 -0
- package/dist/src/commands/aws/vpc.js +302 -0
- package/dist/src/commands/aws-discover.js +413 -0
- package/dist/src/commands/aws-terraform.js +618 -0
- package/dist/src/commands/azure/aks.js +305 -0
- package/dist/src/commands/azure/functions.js +200 -0
- package/dist/src/commands/azure/index.js +93 -0
- package/dist/src/commands/azure/storage.js +378 -0
- package/dist/src/commands/azure/vm.js +291 -0
- package/dist/src/commands/billing/index.js +224 -0
- package/dist/src/commands/chat.js +259 -0
- package/dist/src/commands/completions.js +255 -0
- package/dist/src/commands/config.js +291 -0
- package/dist/src/commands/cost/cloud-cost-estimator.js +211 -0
- package/dist/src/commands/cost/estimator.js +73 -0
- package/dist/src/commands/cost/index.js +625 -0
- package/dist/src/commands/cost/parsers/terraform.js +234 -0
- package/dist/src/commands/cost/parsers/types.js +4 -0
- package/dist/src/commands/cost/pricing/aws.js +501 -0
- package/dist/src/commands/cost/pricing/azure.js +462 -0
- package/dist/src/commands/cost/pricing/gcp.js +359 -0
- package/dist/src/commands/cost/pricing/index.js +24 -0
- package/dist/src/commands/demo.js +196 -0
- package/dist/src/commands/deploy.js +215 -0
- package/dist/src/commands/doctor.js +1291 -0
- package/dist/src/commands/drift/index.js +674 -0
- package/dist/src/commands/explain.js +235 -0
- package/dist/src/commands/export.js +120 -0
- package/dist/src/commands/feedback.js +319 -0
- package/dist/src/commands/fix.js +263 -0
- package/dist/src/commands/fs/index.js +338 -0
- package/dist/src/commands/gcp/compute.js +266 -0
- package/dist/src/commands/gcp/functions.js +221 -0
- package/dist/src/commands/gcp/gke.js +357 -0
- package/dist/src/commands/gcp/iam.js +295 -0
- package/dist/src/commands/gcp/index.js +105 -0
- package/dist/src/commands/gcp/storage.js +232 -0
- package/dist/src/commands/generate-helm.js +1026 -0
- package/dist/src/commands/generate-k8s.js +1263 -0
- package/dist/src/commands/generate-terraform.js +1058 -0
- package/dist/src/commands/gh/index.js +663 -0
- package/dist/src/commands/git/index.js +1208 -0
- package/dist/src/commands/helm/index.js +985 -0
- package/dist/src/commands/help.js +639 -0
- package/dist/src/commands/history.js +120 -0
- package/dist/src/commands/import.js +782 -0
- package/dist/src/commands/incident.js +144 -0
- package/dist/src/commands/index.js +109 -0
- package/dist/src/commands/init.js +955 -0
- package/dist/src/commands/k8s/index.js +979 -0
- package/dist/src/commands/login.js +588 -0
- package/dist/src/commands/logout.js +61 -0
- package/dist/src/commands/logs.js +160 -0
- package/dist/src/commands/onboarding.js +382 -0
- package/dist/src/commands/pipeline.js +153 -0
- package/dist/src/commands/plan/display.js +216 -0
- package/dist/src/commands/plan/index.js +525 -0
- package/dist/src/commands/plugin.js +325 -0
- package/dist/src/commands/preview.js +356 -0
- package/dist/src/commands/profile.js +297 -0
- package/dist/src/commands/questionnaire.js +1021 -0
- package/dist/src/commands/resume.js +35 -0
- package/dist/src/commands/rollback.js +259 -0
- package/dist/src/commands/rollout.js +74 -0
- package/dist/src/commands/runbook.js +307 -0
- package/dist/src/commands/schedule.js +202 -0
- package/dist/src/commands/status.js +213 -0
- package/dist/src/commands/team/index.js +309 -0
- package/dist/src/commands/team-context.js +200 -0
- package/dist/src/commands/template.js +204 -0
- package/dist/src/commands/tf/index.js +989 -0
- package/dist/src/commands/upgrade.js +515 -0
- package/dist/src/commands/usage/index.js +118 -0
- package/dist/src/commands/version.js +145 -0
- package/dist/src/commands/watch.js +127 -0
- package/dist/src/compat/index.js +2 -0
- package/dist/src/compat/runtime.js +10 -0
- package/dist/src/compat/sqlite.js +144 -0
- package/dist/src/config/index.js +6 -0
- package/dist/src/config/manager.js +469 -0
- package/dist/src/config/mode-store.js +57 -0
- package/dist/src/config/profiles.js +66 -0
- package/dist/src/config/safety-policy.js +251 -0
- package/dist/src/config/schema.js +107 -0
- package/dist/src/config/types.js +311 -0
- package/dist/src/config/workspace-state.js +38 -0
- package/dist/src/context/context-db.js +138 -0
- package/dist/src/demo/index.js +295 -0
- package/dist/src/demo/scenarios/full-journey.js +226 -0
- package/dist/src/demo/scenarios/getting-started.js +124 -0
- package/dist/src/demo/scenarios/helm-release.js +334 -0
- package/dist/src/demo/scenarios/k8s-deployment.js +190 -0
- package/dist/src/demo/scenarios/terraform-vpc.js +167 -0
- package/dist/src/demo/types.js +6 -0
- package/dist/src/engine/cost-estimator.js +334 -0
- package/dist/src/engine/diagram-generator.js +192 -0
- package/dist/src/engine/drift-detector.js +688 -0
- package/dist/src/engine/executor.js +832 -0
- package/dist/src/engine/index.js +39 -0
- package/dist/src/engine/orchestrator.js +436 -0
- package/dist/src/engine/planner.js +616 -0
- package/dist/src/engine/safety.js +609 -0
- package/dist/src/engine/verifier.js +664 -0
- package/dist/src/enterprise/audit.js +241 -0
- package/dist/src/enterprise/auth.js +189 -0
- package/dist/src/enterprise/billing.js +512 -0
- package/dist/src/enterprise/index.js +16 -0
- package/dist/src/enterprise/teams.js +315 -0
- package/dist/src/generator/best-practices.js +1375 -0
- package/dist/src/generator/helm.js +495 -0
- package/dist/src/generator/index.js +11 -0
- package/dist/src/generator/intent-parser.js +420 -0
- package/dist/src/generator/kubernetes.js +773 -0
- package/dist/src/generator/terraform.js +1472 -0
- package/dist/src/history/index.js +6 -0
- package/dist/src/history/manager.js +199 -0
- package/dist/src/history/types.js +6 -0
- package/dist/src/hooks/config.js +318 -0
- package/dist/src/hooks/engine.js +317 -0
- package/dist/src/hooks/index.js +2 -0
- package/dist/src/llm/auth-bridge.js +157 -0
- package/dist/src/llm/circuit-breaker.js +116 -0
- package/dist/src/llm/config-loader.js +172 -0
- package/dist/src/llm/cost-calculator.js +137 -0
- package/dist/src/llm/index.js +7 -0
- package/dist/src/llm/model-aliases.js +99 -0
- package/dist/src/llm/provider-registry.js +57 -0
- package/dist/src/llm/providers/anthropic.js +430 -0
- package/dist/src/llm/providers/bedrock.js +409 -0
- package/dist/src/llm/providers/google.js +344 -0
- package/dist/src/llm/providers/ollama.js +661 -0
- package/dist/src/llm/providers/openai-compatible.js +289 -0
- package/dist/src/llm/providers/openai.js +284 -0
- package/dist/src/llm/providers/openrouter.js +293 -0
- package/dist/src/llm/router.js +844 -0
- package/dist/src/llm/types.js +69 -0
- package/dist/src/lsp/client.js +239 -0
- package/dist/src/lsp/languages.js +95 -0
- package/dist/src/lsp/manager.js +243 -0
- package/dist/src/mcp/client.js +289 -0
- package/dist/src/mcp/index.js +5 -0
- package/dist/src/mcp/manager.js +113 -0
- package/dist/src/nimbus.js +212 -0
- package/dist/src/plugins/index.js +13 -0
- package/dist/src/plugins/loader.js +280 -0
- package/dist/src/plugins/manager.js +282 -0
- package/dist/src/plugins/types.js +23 -0
- package/dist/src/scanners/cicd-scanner.js +230 -0
- package/dist/src/scanners/cloud-scanner.js +415 -0
- package/dist/src/scanners/framework-scanner.js +430 -0
- package/dist/src/scanners/iac-scanner.js +350 -0
- package/dist/src/scanners/index.js +454 -0
- package/dist/src/scanners/language-scanner.js +258 -0
- package/dist/src/scanners/package-manager-scanner.js +252 -0
- package/dist/src/scanners/types.js +6 -0
- package/dist/src/sessions/manager.js +395 -0
- package/dist/src/sessions/types.js +4 -0
- package/dist/src/sharing/sync.js +238 -0
- package/dist/src/sharing/viewer.js +131 -0
- package/dist/src/snapshots/index.js +1 -0
- package/dist/src/snapshots/manager.js +432 -0
- package/dist/src/state/artifacts.js +94 -0
- package/dist/src/state/audit.js +73 -0
- package/dist/src/state/billing.js +126 -0
- package/dist/src/state/checkpoints.js +81 -0
- package/dist/src/state/config.js +58 -0
- package/dist/src/state/conversations.js +7 -0
- package/dist/src/state/credentials.js +96 -0
- package/dist/src/state/db.js +53 -0
- package/dist/src/state/index.js +23 -0
- package/dist/src/state/messages.js +76 -0
- package/dist/src/state/projects.js +92 -0
- package/dist/src/state/schema.js +233 -0
- package/dist/src/state/sessions.js +79 -0
- package/dist/src/state/teams.js +131 -0
- package/dist/src/telemetry.js +91 -0
- package/dist/src/tools/aws-ops.js +747 -0
- package/dist/src/tools/azure-ops.js +491 -0
- package/dist/src/tools/file-ops.js +451 -0
- package/dist/src/tools/gcp-ops.js +559 -0
- package/dist/src/tools/git-ops.js +557 -0
- package/dist/src/tools/github-ops.js +460 -0
- package/dist/src/tools/helm-ops.js +634 -0
- package/dist/src/tools/index.js +16 -0
- package/dist/src/tools/k8s-ops.js +579 -0
- package/dist/src/tools/schemas/converter.js +129 -0
- package/dist/src/tools/schemas/devops.js +3319 -0
- package/dist/src/tools/schemas/index.js +19 -0
- package/dist/src/tools/schemas/standard.js +966 -0
- package/dist/src/tools/schemas/types.js +409 -0
- package/dist/src/tools/spawn-exec.js +109 -0
- package/dist/src/tools/terraform-ops.js +627 -0
- package/dist/src/types/config.js +1 -0
- package/dist/src/types/drift.js +4 -0
- package/dist/src/types/enterprise.js +5 -0
- package/dist/src/types/index.js +14 -0
- package/dist/src/types/plan.js +1 -0
- package/dist/src/types/request.js +1 -0
- package/dist/src/types/response.js +1 -0
- package/dist/src/types/service.js +1 -0
- package/dist/src/ui/App.js +1672 -0
- package/dist/src/ui/DeployPreview.js +60 -0
- package/dist/src/ui/FileDiffModal.js +108 -0
- package/dist/src/ui/Header.js +46 -0
- package/dist/src/ui/HelpModal.js +9 -0
- package/dist/src/ui/InputBox.js +408 -0
- package/dist/src/ui/MessageList.js +795 -0
- package/dist/src/ui/PermissionPrompt.js +72 -0
- package/dist/src/ui/StatusBar.js +109 -0
- package/dist/src/ui/TerminalPane.js +31 -0
- package/dist/src/ui/ToolCallDisplay.js +303 -0
- package/dist/src/ui/TreePane.js +83 -0
- package/dist/src/ui/chat-ui.js +721 -0
- package/dist/src/ui/index.js +11 -0
- package/dist/src/ui/ink/index.js +1325 -0
- package/dist/src/ui/streaming.js +137 -0
- package/dist/src/ui/theme.js +78 -0
- package/dist/src/ui/types.js +7 -0
- package/dist/src/utils/analytics.js +61 -0
- package/dist/src/utils/cost-warning.js +25 -0
- package/dist/src/utils/env.js +42 -0
- package/dist/src/utils/errors.js +54 -0
- package/dist/src/utils/event-bus.js +22 -0
- package/dist/src/utils/index.js +16 -0
- package/dist/src/utils/logger.js +150 -0
- package/dist/src/utils/rate-limiter.js +90 -0
- package/dist/src/utils/service-auth.js +36 -0
- package/dist/src/utils/validation.js +39 -0
- package/dist/src/version.js +3 -0
- package/dist/src/watcher/index.js +192 -0
- package/dist/src/wizard/approval.js +275 -0
- package/dist/src/wizard/index.js +13 -0
- package/dist/src/wizard/prompts.js +273 -0
- package/dist/src/wizard/types.js +4 -0
- package/dist/src/wizard/ui.js +453 -0
- package/dist/src/wizard/wizard.js +227 -0
- package/package.json +31 -23
- package/src/__tests__/alias.test.ts +133 -0
- package/src/__tests__/app.test.ts +1 -1
- package/src/__tests__/audit.test.ts +1 -1
- package/src/__tests__/circuit-breaker.test.ts +1 -1
- package/src/__tests__/cli-run.test.ts +237 -1
- package/src/__tests__/compat-sqlite.test.ts +68 -0
- package/src/__tests__/context-manager.test.ts +131 -1
- package/src/__tests__/context.test.ts +1 -1
- package/src/__tests__/devops-terminal-gaps.test.ts +718 -0
- package/src/__tests__/doctor.test.ts +48 -0
- package/src/__tests__/enterprise.test.ts +1 -1
- package/src/__tests__/export.test.ts +236 -0
- package/src/__tests__/gap-11-18-20.test.ts +958 -0
- package/src/__tests__/generator.test.ts +1 -1
- package/src/__tests__/helm-streaming.test.ts +127 -0
- package/src/__tests__/hooks.test.ts +1 -1
- package/src/__tests__/incident.test.ts +179 -0
- package/src/__tests__/init.test.ts +55 -4
- package/src/__tests__/intent-parser.test.ts +1 -1
- package/src/__tests__/llm-router.test.ts +1 -1
- package/src/__tests__/logs.test.ts +107 -0
- package/src/__tests__/loop-errors.test.ts +244 -0
- package/src/__tests__/lsp.test.ts +1 -1
- package/src/__tests__/modes.test.ts +1 -1
- package/src/__tests__/perf-optimizations.test.ts +847 -0
- package/src/__tests__/permissions.test.ts +1 -1
- package/src/__tests__/pipeline.test.ts +50 -0
- package/src/__tests__/polish-phase3.test.ts +340 -0
- package/src/__tests__/profile.test.ts +237 -0
- package/src/__tests__/rollback.test.ts +83 -0
- package/src/__tests__/runbook.test.ts +219 -0
- package/src/__tests__/schedule.test.ts +206 -0
- package/src/__tests__/serve.test.ts +1 -1
- package/src/__tests__/sessions.test.ts +96 -1
- package/src/__tests__/sharing.test.ts +53 -1
- package/src/__tests__/snapshots.test.ts +1 -1
- package/src/__tests__/standalone-migration.test.ts +199 -0
- package/src/__tests__/state-db.test.ts +1 -1
- package/src/__tests__/status.test.ts +158 -0
- package/src/__tests__/stream-with-tools.test.ts +71 -25
- package/src/__tests__/subagents.test.ts +1 -1
- package/src/__tests__/system-prompt.test.ts +82 -3
- package/src/__tests__/terminal-gap-v2.test.ts +395 -0
- package/src/__tests__/terminal-parity.test.ts +393 -0
- package/src/__tests__/tf-apply.test.ts +187 -0
- package/src/__tests__/tool-converter.test.ts +1 -1
- package/src/__tests__/tool-schemas.test.ts +209 -4
- package/src/__tests__/tools.test.ts +4 -3
- package/src/__tests__/version-json.test.ts +184 -0
- package/src/__tests__/version.test.ts +1 -1
- package/src/__tests__/watch.test.ts +129 -0
- package/src/agent/compaction-agent.ts +40 -1
- package/src/agent/context-manager.ts +67 -3
- package/src/agent/deploy-preview.ts +62 -1
- package/src/agent/expand-files.ts +108 -0
- package/src/agent/loop.ts +1312 -31
- package/src/agent/permissions.ts +51 -4
- package/src/agent/system-prompt.ts +573 -19
- package/src/app.ts +58 -0
- package/src/audit/security-scanner.ts +45 -0
- package/src/auth/keychain.ts +82 -0
- package/src/auth/oauth.ts +15 -5
- package/src/cli/init.ts +378 -5
- package/src/cli/run.ts +407 -16
- package/src/cli/serve.ts +78 -1
- package/src/cli/web.ts +10 -6
- package/src/cli.ts +312 -1
- package/src/clients/service-discovery.ts +30 -25
- package/src/commands/alias.ts +100 -0
- package/src/commands/audit/index.ts +121 -2
- package/src/commands/auth-cloud.ts +113 -0
- package/src/commands/auth-refresh.ts +187 -0
- package/src/commands/aws-discover.ts +144 -251
- package/src/commands/aws-terraform.ts +68 -118
- package/src/commands/chat.ts +9 -3
- package/src/commands/completions.ts +268 -0
- package/src/commands/config.ts +26 -0
- package/src/commands/cost/index.ts +218 -2
- package/src/commands/deploy.ts +260 -0
- package/src/commands/doctor.ts +744 -152
- package/src/commands/drift/index.ts +371 -23
- package/src/commands/export.ts +146 -0
- package/src/commands/generate-k8s.ts +9 -61
- package/src/commands/generate-terraform.ts +191 -449
- package/src/commands/help.ts +212 -36
- package/src/commands/history.ts +8 -1
- package/src/commands/incident.ts +166 -0
- package/src/commands/init.ts +5 -0
- package/src/commands/login.ts +86 -1
- package/src/commands/logs.ts +167 -0
- package/src/commands/onboarding.ts +211 -34
- package/src/commands/pipeline.ts +186 -0
- package/src/commands/plugin.ts +398 -0
- package/src/commands/profile.ts +342 -0
- package/src/commands/questionnaire.ts +0 -98
- package/src/commands/resume.ts +26 -34
- package/src/commands/rollback.ts +315 -0
- package/src/commands/rollout.ts +88 -0
- package/src/commands/runbook.ts +346 -0
- package/src/commands/schedule.ts +236 -0
- package/src/commands/status.ts +252 -0
- package/src/commands/team-context.ts +220 -0
- package/src/commands/template.ts +58 -57
- package/src/commands/tf/index.ts +70 -11
- package/src/commands/upgrade.ts +57 -0
- package/src/commands/version.ts +54 -50
- package/src/commands/watch.ts +153 -0
- package/src/compat/runtime.ts +1 -1
- package/src/compat/sqlite.ts +75 -5
- package/src/config/mode-store.ts +62 -0
- package/src/config/profiles.ts +84 -0
- package/src/config/types.ts +83 -1
- package/src/config/workspace-state.ts +53 -0
- package/src/engine/cost-estimator.ts +52 -10
- package/src/engine/executor.ts +33 -2
- package/src/engine/planner.ts +68 -1
- package/src/generator/terraform.ts +8 -0
- package/src/history/manager.ts +2 -74
- package/src/hooks/engine.ts +5 -4
- package/src/llm/cost-calculator.ts +2 -2
- package/src/llm/providers/anthropic.ts +50 -21
- package/src/llm/router.ts +76 -7
- package/src/lsp/languages.ts +3 -0
- package/src/lsp/manager.ts +21 -5
- package/src/nimbus.ts +37 -18
- package/src/sessions/manager.ts +108 -1
- package/src/sharing/sync.ts +4 -0
- package/src/sharing/viewer.ts +66 -0
- package/src/tools/file-ops.ts +22 -0
- package/src/tools/schemas/devops.ts +3007 -117
- package/src/tools/schemas/standard.ts +5 -1
- package/src/tools/schemas/types.ts +31 -1
- package/src/tools/spawn-exec.ts +148 -0
- package/src/ui/App.tsx +1183 -66
- package/src/ui/DeployPreview.tsx +62 -57
- package/src/ui/FileDiffModal.tsx +162 -0
- package/src/ui/Header.tsx +87 -24
- package/src/ui/HelpModal.tsx +57 -0
- package/src/ui/InputBox.tsx +163 -10
- package/src/ui/MessageList.tsx +487 -40
- package/src/ui/PermissionPrompt.tsx +17 -5
- package/src/ui/StatusBar.tsx +122 -3
- package/src/ui/TerminalPane.tsx +84 -0
- package/src/ui/ToolCallDisplay.tsx +252 -18
- package/src/ui/TreePane.tsx +132 -0
- package/src/ui/chat-ui.ts +41 -44
- package/src/ui/ink/index.ts +771 -38
- package/src/ui/streaming.ts +1 -1
- package/src/ui/theme.ts +104 -0
- package/src/ui/types.ts +18 -0
- package/src/version.ts +1 -1
- package/src/watcher/index.ts +66 -15
- package/src/wizard/types.ts +1 -0
- package/src/wizard/ui.ts +1 -1
- 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
|
+
};
|