@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,144 @@
1
+ /**
2
+ * Incident Command (G14)
3
+ *
4
+ * Pre-loads incident context (PagerDuty/Opsgenie alert, recent deployments,
5
+ * pod logs) and launches a focused TUI agent session.
6
+ *
7
+ * Usage:
8
+ * nimbus incident <pagerduty-url-or-id> [--notes "observed behavior"]
9
+ * nimbus incident "high CPU on api-service pod"
10
+ */
11
+ import { execSync } from 'node:child_process';
12
+ /**
13
+ * Detect incident source from URL or plain text.
14
+ */
15
+ function parseIncidentInput(input) {
16
+ if (/pagerduty\.com/i.test(input)) {
17
+ const match = input.match(/incidents?\/(P[A-Z0-9]+)/i);
18
+ return { source: 'pagerduty', id: match?.[1] ?? input, rawInput: input };
19
+ }
20
+ if (/opsgenie\.com/i.test(input) || /app\.opsgenie\.com/i.test(input)) {
21
+ const match = input.match(/alert\/([a-f0-9-]{36})/i);
22
+ return { source: 'opsgenie', id: match?.[1] ?? input, rawInput: input };
23
+ }
24
+ // Plain text description — use as-is
25
+ return { source: 'plain', id: input, rawInput: input };
26
+ }
27
+ /**
28
+ * Attempt to fetch PagerDuty incident details via API (if PD_API_TOKEN is set).
29
+ */
30
+ async function fetchPagerDutyDetails(incidentId) {
31
+ const token = process.env.PD_API_TOKEN;
32
+ if (!token)
33
+ return null;
34
+ try {
35
+ const curlCmd = `curl -sf -H "Authorization: Token token=${token}" -H "Accept: application/vnd.pagerduty+json;version=2" "https://api.pagerduty.com/incidents/${incidentId}"`;
36
+ const output = execSync(curlCmd, { encoding: 'utf-8', timeout: 10_000 });
37
+ const data = JSON.parse(output);
38
+ if (data.incident) {
39
+ const inc = data.incident;
40
+ return [
41
+ `Title: ${inc.title ?? 'N/A'}`,
42
+ `Service: ${inc.service?.summary ?? 'N/A'}`,
43
+ `Urgency: ${inc.urgency ?? 'N/A'}`,
44
+ `Status: ${inc.status ?? 'N/A'}`,
45
+ `Created: ${inc.created_at ?? 'N/A'}`,
46
+ ].join('\n');
47
+ }
48
+ }
49
+ catch {
50
+ // Non-critical — API fetch failure should not block the incident session
51
+ }
52
+ return null;
53
+ }
54
+ /**
55
+ * Try to detect the service name from the incident description.
56
+ */
57
+ function detectServiceName(incident) {
58
+ // Common patterns: "api-service", "payment-worker", "nginx deployment"
59
+ const match = incident.rawInput.match(/\b([\w-]+(?:service|worker|api|pod|deploy(?:ment)?|ingress|controller)[\w-]*)\b/i);
60
+ return match?.[1] ?? null;
61
+ }
62
+ /**
63
+ * Get last 3 Helm releases for a service (best-effort).
64
+ */
65
+ function getRecentHelmHistory(serviceName) {
66
+ try {
67
+ const out = execSync(`helm history ${serviceName} --max 3 --output json 2>/dev/null`, {
68
+ encoding: 'utf-8', timeout: 10_000,
69
+ });
70
+ const history = JSON.parse(out);
71
+ if (history.length === 0)
72
+ return '';
73
+ const lines = history.map(h => ` Rev ${h.revision}: ${h.chart} [${h.status}] ${h.updated} — ${h.description}`);
74
+ return `\nRecent Helm releases for ${serviceName}:\n${lines.join('\n')}`;
75
+ }
76
+ catch {
77
+ return '';
78
+ }
79
+ }
80
+ /**
81
+ * Get recent pod logs for a service (best-effort).
82
+ */
83
+ function getRecentPodLogs(serviceName) {
84
+ try {
85
+ const out = execSync(`kubectl logs -l app=${serviceName} --tail=50 --since=30m --all-containers 2>/dev/null | head -c 4096`, { encoding: 'utf-8', timeout: 15_000 });
86
+ if (!out.trim())
87
+ return '';
88
+ return `\nRecent pod logs (last 30m, ${serviceName}):\n${out.trim()}`;
89
+ }
90
+ catch {
91
+ return '';
92
+ }
93
+ }
94
+ /**
95
+ * Run the incident command — builds incident context and launches the agent.
96
+ */
97
+ export async function incidentCommand(incidentInput, options = {}) {
98
+ if (!incidentInput) {
99
+ console.error('Usage: nimbus incident <pagerduty-url-or-id|description> [--notes "observed behavior"]');
100
+ process.exit(1);
101
+ }
102
+ const incident = parseIncidentInput(incidentInput);
103
+ const contextParts = ['# Incident Response Session'];
104
+ // PD API details
105
+ if (incident.source === 'pagerduty') {
106
+ console.log(`Fetching PagerDuty incident ${incident.id}...`);
107
+ const pdDetails = await fetchPagerDutyDetails(incident.id);
108
+ if (pdDetails) {
109
+ contextParts.push(`\n## PagerDuty Alert (${incident.id})\n${pdDetails}`);
110
+ }
111
+ else {
112
+ contextParts.push(`\n## Alert\nPagerDuty incident: ${incident.id}`);
113
+ if (!process.env.PD_API_TOKEN) {
114
+ contextParts.push('(Set PD_API_TOKEN env var to fetch full alert details)');
115
+ }
116
+ }
117
+ }
118
+ else if (incident.source === 'opsgenie') {
119
+ contextParts.push(`\n## Alert\nOpsgenie incident: ${incident.id}`);
120
+ }
121
+ else {
122
+ contextParts.push(`\n## Alert\n${incident.rawInput}`);
123
+ }
124
+ // Notes
125
+ if (options.notes) {
126
+ contextParts.push(`\n## Observed Behavior\n${options.notes}`);
127
+ }
128
+ // Service auto-detection + recent history
129
+ const serviceName = detectServiceName(incident);
130
+ if (serviceName) {
131
+ contextParts.push(`\n## Detected Service: ${serviceName}`);
132
+ const helmHistory = getRecentHelmHistory(serviceName);
133
+ if (helmHistory)
134
+ contextParts.push(helmHistory);
135
+ const podLogs = getRecentPodLogs(serviceName);
136
+ if (podLogs)
137
+ contextParts.push(podLogs);
138
+ }
139
+ contextParts.push('\n## Your Task\nHelp resolve this incident. Start by diagnosing root cause from the context above, then suggest and (with permission) execute remediation steps.');
140
+ const initialPrompt = contextParts.join('\n');
141
+ // Launch the TUI chat session with the pre-loaded incident prompt
142
+ const { chatCommand } = await import('./chat');
143
+ await chatCommand({ initialPrompt, mode: 'deploy' });
144
+ }
@@ -0,0 +1,109 @@
1
+ /**
2
+ * CLI Commands
3
+ *
4
+ * Exports all available CLI commands
5
+ */
6
+ export { generateTerraformCommand } from './generate-terraform';
7
+ export { awsDiscoverCommand, } from './aws-discover';
8
+ export { awsTerraformCommand, } from './aws-terraform';
9
+ // Auth commands
10
+ export { loginCommand } from './login';
11
+ export { logoutCommand } from './logout';
12
+ export { authStatusCommand } from './auth-status';
13
+ export { authListCommand } from './auth-list';
14
+ // Cloud auth commands
15
+ export { authCloudCommand, authAwsCommand, authGcpCommand, authAzureCommand, } from './auth-cloud';
16
+ // Chat command
17
+ export { chatCommand } from './chat';
18
+ // Config commands
19
+ export { configCommand, configSetCommand, configGetCommand, configListCommand, configInitCommand, configResetCommand, } from './config';
20
+ // Init command
21
+ export { initCommand } from './init';
22
+ // Infrastructure tool commands
23
+ export { tfCommand, tfInitCommand, tfPlanCommand, tfApplyCommand, tfValidateCommand, tfDestroyCommand, tfShowCommand, tfFmtCommand, tfWorkspaceCommand, tfImportCommand, tfOutputCommand, tfStateCommand, tfTaintCommand, tfUntaintCommand, tfGraphCommand, tfForceUnlockCommand, tfRefreshCommand, } from './tf';
24
+ export { k8sCommand, k8sGetCommand, k8sApplyCommand, k8sDeleteCommand, k8sLogsCommand, k8sDescribeCommand, k8sScaleCommand, k8sExecCommand, k8sRolloutCommand, k8sPortForwardCommand, k8sNamespaceCommand, k8sTopCommand, k8sPatchCommand, k8sLabelCommand, k8sAnnotateCommand, } from './k8s';
25
+ export { helmCommand, helmListCommand, helmInstallCommand, helmUpgradeCommand, helmUninstallCommand, helmRollbackCommand, helmHistoryCommand, helmSearchCommand, helmShowCommand, helmRepoAddCommand, helmRepoUpdateCommand, helmLintCommand, helmTemplateCommand, helmPackageCommand, helmDependencyCommand, helmStatusCommand, } from './helm';
26
+ export { gitCommand, gitStatusCommand, gitAddCommand, gitCommitCommand, gitPushCommand, gitPullCommand, gitFetchCommand, gitLogCommand, gitBranchCommand, gitCheckoutCommand, gitDiffCommand, gitMergeCommand, gitStashCommand, gitTagCommand, gitRemoteCommand, gitResetCommand, gitRevertCommand, gitCherryPickCommand, gitBlameCommand, gitInitCommand, } from './git';
27
+ // History command
28
+ export { historyCommand, historyShowCommand } from './history';
29
+ // GitHub CLI commands
30
+ export { ghCommand, ghPrListCommand, ghPrViewCommand, ghPrCreateCommand, ghPrMergeCommand, ghIssueListCommand, ghIssueViewCommand, ghIssueCreateCommand, ghIssueCloseCommand, ghIssueCommentCommand, ghRepoInfoCommand, ghRepoBranchesCommand, } from './gh';
31
+ // Enterprise: Team commands
32
+ export { teamCommand, teamCreateCommand, teamInviteCommand, teamMembersCommand, teamRemoveCommand, teamSwitchCommand, parseTeamCreateOptions, parseTeamInviteOptions, parseTeamMembersOptions, parseTeamRemoveOptions, parseTeamSwitchOptions, } from './team';
33
+ // Enterprise: Billing commands
34
+ export { billingCommand, billingStatusCommand, billingUpgradeCommand, billingInvoicesCommand, billingCancelCommand, parseBillingStatusOptions, parseBillingUpgradeOptions, parseBillingInvoicesOptions, } from './billing';
35
+ // Enterprise: Usage command
36
+ export { usageCommand, parseUsageOptions } from './usage';
37
+ // Enterprise: Audit commands
38
+ export { auditCommand, auditListCommand, auditExportCommand, parseAuditListOptions, parseAuditExportOptions, } from './audit';
39
+ // Analyze command
40
+ export { analyzeCommand, parseAnalyzeOptions } from './analyze';
41
+ // Generate commands
42
+ export { generateK8sCommand, } from './generate-k8s';
43
+ export { generateHelmCommand, } from './generate-helm';
44
+ // Utility commands
45
+ export { versionCommand } from './version';
46
+ export { helpCommand } from './help';
47
+ export { doctorCommand } from './doctor';
48
+ // Apply commands
49
+ export { applyCommand, applyTerraformCommand, applyK8sCommand, applyHelmCommand, parseApplyOptions, } from './apply';
50
+ // AI-powered commands
51
+ export { askCommand } from './ask';
52
+ export { explainCommand } from './explain';
53
+ export { fixCommand } from './fix';
54
+ // Plan command
55
+ export { planCommand, parsePlanOptions, displayPlan, } from './plan';
56
+ // Questionnaire command
57
+ export { questionnaireCommand } from './questionnaire';
58
+ // Preview command
59
+ export { previewCommand } from './preview';
60
+ // Demo command
61
+ export { demoCommand, parseDemoOptions, runDemoScenario, listDemoScenarios, } from './demo';
62
+ // AWS CLI commands
63
+ export { awsCommand, parseAwsOptions } from './aws';
64
+ // GCP CLI commands
65
+ export { gcpCommand, parseGcpOptions } from './gcp';
66
+ // Azure CLI commands
67
+ export { azureCommand, parseAzureOptions } from './azure';
68
+ // Drift detection and remediation commands
69
+ export { driftCommand, driftDetectCommand, driftFixCommand, parseDriftDetectOptions, parseDriftFixOptions, } from './drift';
70
+ // Cost estimation and tracking commands
71
+ export { costCommand, costEstimateCommand, costHistoryCommand, parseCostEstimateOptions, parseCostHistoryOptions, } from './cost';
72
+ // Import command
73
+ export { importCommand, parseImportOptions } from './import';
74
+ // Feedback command
75
+ export { feedbackCommand, parseFeedbackOptions } from './feedback';
76
+ // File system commands
77
+ export { fsCommand, fsListCommand, fsSearchCommand, fsReadCommand, fsTreeCommand, fsWriteCommand, fsDiffCommand, } from './fs';
78
+ // Resume command (checkpoint/resume system)
79
+ export { resumeCommand } from './resume';
80
+ // Template commands
81
+ export { templateCommand } from './template';
82
+ // Auth profile commands
83
+ export { authProfileCommand } from './auth-profile';
84
+ // Onboarding command
85
+ export { onboardingCommand, needsOnboarding } from './onboarding';
86
+ // ===== Top-Level Aliases =====
87
+ // These re-exports provide short-form access to common commands
88
+ // GitHub aliases: nimbus pr -> nimbus gh pr
89
+ export { ghPrListCommand as prListCommand } from './gh';
90
+ export { ghPrCreateCommand as prCreateCommand } from './gh';
91
+ export { ghPrViewCommand as prViewCommand } from './gh';
92
+ export { ghPrMergeCommand as prMergeCommand } from './gh';
93
+ export { ghIssueListCommand as issueListCommand } from './gh';
94
+ export { ghIssueCreateCommand as issueCreateCommand } from './gh';
95
+ export { ghIssueViewCommand as issueViewCommand } from './gh';
96
+ // File system aliases: nimbus read -> nimbus fs read
97
+ export { fsReadCommand as readCommand } from './fs';
98
+ export { fsSearchCommand as searchCommand } from './fs';
99
+ export { fsWriteCommand as writeCommand } from './fs';
100
+ export { fsDiffCommand as diffCommand } from './fs';
101
+ // Top-level command aliases: short names -> full commands
102
+ // tf -> terraform (tfCommand)
103
+ export { tfCommand as terraformCommand } from './tf';
104
+ // k -> k8s (k8sCommand)
105
+ export { k8sCommand as kCommand } from './k8s';
106
+ // g -> generate (generateTerraformCommand serves as the base generate entry point)
107
+ export { generateTerraformCommand as gCommand } from './generate-terraform';
108
+ // h -> helm (helmCommand)
109
+ export { helmCommand as hCommand } from './helm';