@build-astron-co/nimbus 0.4.2 → 0.4.3
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/dist/src/agent/compaction-agent.js +24 -12
- package/dist/src/agent/context-manager.js +2 -1
- package/dist/src/agent/expand-files.js +2 -1
- package/dist/src/agent/loop.js +71 -33
- package/dist/src/agent/permissions.js +4 -2
- package/dist/src/agent/system-prompt.js +34 -17
- package/dist/src/app.js +1 -1
- package/dist/src/auth/keychain.js +8 -4
- package/dist/src/auth/store.js +70 -107
- package/dist/src/cli/init.js +35 -19
- package/dist/src/cli/run.js +18 -10
- package/dist/src/cli/serve.js +4 -2
- package/dist/src/cli.js +52 -11
- package/dist/src/commands/alias.js +5 -3
- package/dist/src/commands/audit/index.js +2 -1
- package/dist/src/commands/aws-terraform.js +36 -18
- package/dist/src/commands/completions.js +1 -1
- package/dist/src/commands/config.js +3 -2
- package/dist/src/commands/connect-github.js +92 -0
- package/dist/src/commands/cost/index.js +3 -2
- package/dist/src/commands/deploy.js +15 -10
- package/dist/src/commands/doctor.js +6 -3
- package/dist/src/commands/drift/index.js +2 -1
- package/dist/src/commands/export.js +5 -3
- package/dist/src/commands/generate-terraform.js +110 -2
- package/dist/src/commands/import.js +3 -3
- package/dist/src/commands/incident.js +10 -5
- package/dist/src/commands/login.js +8 -93
- package/dist/src/commands/logs.js +16 -8
- package/dist/src/commands/onboarding.js +6 -4
- package/dist/src/commands/pipeline.js +6 -3
- package/dist/src/commands/plugin.js +3 -2
- package/dist/src/commands/profile.js +27 -14
- package/dist/src/commands/questionnaire.js +1 -1
- package/dist/src/commands/rollback.js +3 -2
- package/dist/src/commands/rollout.js +5 -3
- package/dist/src/commands/runbook.js +17 -10
- package/dist/src/commands/schedule.js +10 -5
- package/dist/src/commands/status.js +2 -1
- package/dist/src/commands/team-context.js +12 -7
- package/dist/src/commands/template.js +1 -1
- package/dist/src/commands/tf/index.js +6 -3
- package/dist/src/commands/version.js +6 -3
- package/dist/src/commands/watch.js +6 -3
- package/dist/src/compat/sqlite.js +5 -3
- package/dist/src/config/mode-store.js +2 -1
- package/dist/src/config/profiles.js +4 -2
- package/dist/src/config/types.js +2 -1
- package/dist/src/engine/executor.js +8 -4
- package/dist/src/engine/planner.js +9 -5
- package/dist/src/llm/providers/anthropic.js +6 -3
- package/dist/src/llm/providers/ollama.js +1 -1
- package/dist/src/llm/router.js +22 -7
- package/dist/src/sessions/manager.js +6 -3
- package/dist/src/sharing/viewer.js +2 -1
- package/dist/src/tools/file-ops.js +1 -2
- package/dist/src/tools/schemas/devops.js +197 -108
- package/dist/src/tools/schemas/standard.js +1 -1
- package/dist/src/ui/App.js +25 -13
- package/dist/src/ui/FileDiffModal.js +22 -11
- package/dist/src/ui/HelpModal.js +2 -1
- package/dist/src/ui/InputBox.js +6 -3
- package/dist/src/ui/MessageList.js +40 -20
- package/dist/src/ui/TerminalPane.js +2 -1
- package/dist/src/ui/ToolCallDisplay.js +12 -6
- package/dist/src/ui/TreePane.js +2 -1
- package/dist/src/ui/ink/index.js +37 -21
- package/dist/src/watcher/index.js +8 -4
- package/package.json +3 -5
- package/src/__tests__/alias.test.ts +0 -133
- package/src/__tests__/app.test.ts +0 -76
- package/src/__tests__/audit.test.ts +0 -877
- package/src/__tests__/circuit-breaker.test.ts +0 -116
- package/src/__tests__/cli-run.test.ts +0 -351
- package/src/__tests__/compat-sqlite.test.ts +0 -68
- package/src/__tests__/context-manager.test.ts +0 -632
- package/src/__tests__/context.test.ts +0 -242
- package/src/__tests__/devops-terminal-gaps.test.ts +0 -718
- package/src/__tests__/doctor.test.ts +0 -48
- package/src/__tests__/enterprise.test.ts +0 -401
- package/src/__tests__/export.test.ts +0 -236
- package/src/__tests__/gap-11-18-20.test.ts +0 -958
- package/src/__tests__/generator.test.ts +0 -433
- package/src/__tests__/helm-streaming.test.ts +0 -127
- package/src/__tests__/hooks.test.ts +0 -582
- package/src/__tests__/incident.test.ts +0 -179
- package/src/__tests__/init.test.ts +0 -487
- package/src/__tests__/intent-parser.test.ts +0 -229
- package/src/__tests__/llm-router.test.ts +0 -209
- package/src/__tests__/logs.test.ts +0 -107
- package/src/__tests__/loop-errors.test.ts +0 -244
- package/src/__tests__/lsp.test.ts +0 -293
- package/src/__tests__/modes.test.ts +0 -336
- package/src/__tests__/perf-optimizations.test.ts +0 -847
- package/src/__tests__/permissions.test.ts +0 -338
- package/src/__tests__/pipeline.test.ts +0 -50
- package/src/__tests__/polish-phase3.test.ts +0 -340
- package/src/__tests__/profile.test.ts +0 -237
- package/src/__tests__/rollback.test.ts +0 -83
- package/src/__tests__/runbook.test.ts +0 -219
- package/src/__tests__/schedule.test.ts +0 -206
- package/src/__tests__/serve.test.ts +0 -275
- package/src/__tests__/sessions.test.ts +0 -322
- package/src/__tests__/sharing.test.ts +0 -340
- package/src/__tests__/snapshots.test.ts +0 -581
- package/src/__tests__/standalone-migration.test.ts +0 -199
- package/src/__tests__/state-db.test.ts +0 -334
- package/src/__tests__/status.test.ts +0 -158
- package/src/__tests__/stream-with-tools.test.ts +0 -778
- package/src/__tests__/subagents.test.ts +0 -176
- package/src/__tests__/system-prompt.test.ts +0 -248
- package/src/__tests__/terminal-gap-v2.test.ts +0 -395
- package/src/__tests__/terminal-parity.test.ts +0 -393
- package/src/__tests__/tf-apply.test.ts +0 -187
- package/src/__tests__/tool-converter.test.ts +0 -256
- package/src/__tests__/tool-schemas.test.ts +0 -602
- package/src/__tests__/tools.test.ts +0 -144
- package/src/__tests__/version-json.test.ts +0 -184
- package/src/__tests__/version.test.ts +0 -49
- package/src/__tests__/watch.test.ts +0 -129
- package/src/agent/compaction-agent.ts +0 -266
- package/src/agent/context-manager.ts +0 -499
- package/src/agent/context.ts +0 -427
- package/src/agent/deploy-preview.ts +0 -487
- package/src/agent/expand-files.ts +0 -108
- package/src/agent/index.ts +0 -68
- package/src/agent/loop.ts +0 -1998
- package/src/agent/modes.ts +0 -429
- package/src/agent/permissions.ts +0 -513
- package/src/agent/subagents/base.ts +0 -116
- package/src/agent/subagents/cost.ts +0 -51
- package/src/agent/subagents/explore.ts +0 -42
- package/src/agent/subagents/general.ts +0 -54
- package/src/agent/subagents/index.ts +0 -102
- package/src/agent/subagents/infra.ts +0 -59
- package/src/agent/subagents/security.ts +0 -69
- package/src/agent/system-prompt.ts +0 -990
- package/src/app.ts +0 -180
- package/src/audit/activity-log.ts +0 -290
- package/src/audit/compliance-checker.ts +0 -540
- package/src/audit/cost-tracker.ts +0 -318
- package/src/audit/index.ts +0 -23
- package/src/audit/security-scanner.ts +0 -641
- package/src/auth/guard.ts +0 -75
- package/src/auth/index.ts +0 -56
- package/src/auth/keychain.ts +0 -82
- package/src/auth/oauth.ts +0 -465
- package/src/auth/providers.ts +0 -470
- package/src/auth/sso.ts +0 -113
- package/src/auth/store.ts +0 -505
- package/src/auth/types.ts +0 -187
- package/src/build.ts +0 -141
- package/src/cli/index.ts +0 -16
- package/src/cli/init.ts +0 -1227
- package/src/cli/openapi-spec.ts +0 -356
- package/src/cli/run.ts +0 -628
- package/src/cli/serve-auth.ts +0 -80
- package/src/cli/serve.ts +0 -539
- package/src/cli/web.ts +0 -71
- package/src/cli.ts +0 -1728
- package/src/clients/core-engine-client.ts +0 -227
- package/src/clients/enterprise-client.ts +0 -334
- package/src/clients/generator-client.ts +0 -351
- package/src/clients/git-client.ts +0 -627
- package/src/clients/github-client.ts +0 -410
- package/src/clients/helm-client.ts +0 -504
- package/src/clients/index.ts +0 -80
- package/src/clients/k8s-client.ts +0 -497
- package/src/clients/llm-client.ts +0 -161
- package/src/clients/rest-client.ts +0 -130
- package/src/clients/service-discovery.ts +0 -38
- package/src/clients/terraform-client.ts +0 -482
- package/src/clients/tools-client.ts +0 -1843
- package/src/clients/ws-client.ts +0 -115
- package/src/commands/alias.ts +0 -100
- package/src/commands/analyze/index.ts +0 -352
- package/src/commands/apply/helm.ts +0 -473
- package/src/commands/apply/index.ts +0 -213
- package/src/commands/apply/k8s.ts +0 -454
- package/src/commands/apply/terraform.ts +0 -582
- package/src/commands/ask.ts +0 -167
- package/src/commands/audit/index.ts +0 -357
- package/src/commands/auth-cloud.ts +0 -407
- package/src/commands/auth-list.ts +0 -134
- package/src/commands/auth-profile.ts +0 -121
- package/src/commands/auth-refresh.ts +0 -187
- package/src/commands/auth-status.ts +0 -141
- package/src/commands/aws/ec2.ts +0 -501
- package/src/commands/aws/iam.ts +0 -397
- package/src/commands/aws/index.ts +0 -133
- package/src/commands/aws/lambda.ts +0 -396
- package/src/commands/aws/rds.ts +0 -439
- package/src/commands/aws/s3.ts +0 -439
- package/src/commands/aws/vpc.ts +0 -393
- package/src/commands/aws-discover.ts +0 -542
- package/src/commands/aws-terraform.ts +0 -755
- package/src/commands/azure/aks.ts +0 -376
- package/src/commands/azure/functions.ts +0 -253
- package/src/commands/azure/index.ts +0 -116
- package/src/commands/azure/storage.ts +0 -478
- package/src/commands/azure/vm.ts +0 -355
- package/src/commands/billing/index.ts +0 -256
- package/src/commands/chat.ts +0 -320
- package/src/commands/completions.ts +0 -268
- package/src/commands/config.ts +0 -372
- package/src/commands/cost/cloud-cost-estimator.ts +0 -266
- package/src/commands/cost/estimator.ts +0 -79
- package/src/commands/cost/index.ts +0 -810
- package/src/commands/cost/parsers/terraform.ts +0 -273
- package/src/commands/cost/parsers/types.ts +0 -25
- package/src/commands/cost/pricing/aws.ts +0 -544
- package/src/commands/cost/pricing/azure.ts +0 -499
- package/src/commands/cost/pricing/gcp.ts +0 -396
- package/src/commands/cost/pricing/index.ts +0 -40
- package/src/commands/demo.ts +0 -250
- package/src/commands/deploy.ts +0 -260
- package/src/commands/doctor.ts +0 -1386
- package/src/commands/drift/index.ts +0 -787
- package/src/commands/explain.ts +0 -277
- package/src/commands/export.ts +0 -146
- package/src/commands/feedback.ts +0 -389
- package/src/commands/fix.ts +0 -324
- package/src/commands/fs/index.ts +0 -402
- package/src/commands/gcp/compute.ts +0 -325
- package/src/commands/gcp/functions.ts +0 -271
- package/src/commands/gcp/gke.ts +0 -438
- package/src/commands/gcp/iam.ts +0 -344
- package/src/commands/gcp/index.ts +0 -129
- package/src/commands/gcp/storage.ts +0 -284
- package/src/commands/generate-helm.ts +0 -1249
- package/src/commands/generate-k8s.ts +0 -1508
- package/src/commands/generate-terraform.ts +0 -1202
- package/src/commands/gh/index.ts +0 -863
- package/src/commands/git/index.ts +0 -1343
- package/src/commands/helm/index.ts +0 -1126
- package/src/commands/help.ts +0 -715
- package/src/commands/history.ts +0 -149
- package/src/commands/import.ts +0 -868
- package/src/commands/incident.ts +0 -166
- package/src/commands/index.ts +0 -367
- package/src/commands/init.ts +0 -1051
- package/src/commands/k8s/index.ts +0 -1137
- package/src/commands/login.ts +0 -716
- package/src/commands/logout.ts +0 -83
- package/src/commands/logs.ts +0 -167
- package/src/commands/onboarding.ts +0 -405
- package/src/commands/pipeline.ts +0 -186
- package/src/commands/plan/display.ts +0 -279
- package/src/commands/plan/index.ts +0 -599
- package/src/commands/plugin.ts +0 -398
- package/src/commands/preview.ts +0 -452
- package/src/commands/profile.ts +0 -342
- package/src/commands/questionnaire.ts +0 -1172
- package/src/commands/resume.ts +0 -47
- package/src/commands/rollback.ts +0 -315
- package/src/commands/rollout.ts +0 -88
- package/src/commands/runbook.ts +0 -346
- package/src/commands/schedule.ts +0 -236
- package/src/commands/status.ts +0 -252
- package/src/commands/team/index.ts +0 -346
- package/src/commands/team-context.ts +0 -220
- package/src/commands/template.ts +0 -233
- package/src/commands/tf/index.ts +0 -1093
- package/src/commands/upgrade.ts +0 -609
- package/src/commands/usage/index.ts +0 -134
- package/src/commands/version.ts +0 -174
- package/src/commands/watch.ts +0 -153
- package/src/compat/index.ts +0 -2
- package/src/compat/runtime.ts +0 -12
- package/src/compat/sqlite.ts +0 -177
- package/src/config/index.ts +0 -17
- package/src/config/manager.ts +0 -530
- package/src/config/mode-store.ts +0 -62
- package/src/config/profiles.ts +0 -84
- package/src/config/safety-policy.ts +0 -358
- package/src/config/schema.ts +0 -125
- package/src/config/types.ts +0 -609
- package/src/config/workspace-state.ts +0 -53
- package/src/context/context-db.ts +0 -199
- package/src/demo/index.ts +0 -349
- package/src/demo/scenarios/full-journey.ts +0 -229
- package/src/demo/scenarios/getting-started.ts +0 -127
- package/src/demo/scenarios/helm-release.ts +0 -341
- package/src/demo/scenarios/k8s-deployment.ts +0 -194
- package/src/demo/scenarios/terraform-vpc.ts +0 -170
- package/src/demo/types.ts +0 -92
- package/src/engine/cost-estimator.ts +0 -480
- package/src/engine/diagram-generator.ts +0 -256
- package/src/engine/drift-detector.ts +0 -902
- package/src/engine/executor.ts +0 -1066
- package/src/engine/index.ts +0 -76
- package/src/engine/orchestrator.ts +0 -636
- package/src/engine/planner.ts +0 -787
- package/src/engine/safety.ts +0 -743
- package/src/engine/verifier.ts +0 -770
- package/src/enterprise/audit.ts +0 -348
- package/src/enterprise/auth.ts +0 -270
- package/src/enterprise/billing.ts +0 -822
- package/src/enterprise/index.ts +0 -17
- package/src/enterprise/teams.ts +0 -443
- package/src/generator/best-practices.ts +0 -1608
- package/src/generator/helm.ts +0 -630
- package/src/generator/index.ts +0 -37
- package/src/generator/intent-parser.ts +0 -514
- package/src/generator/kubernetes.ts +0 -976
- package/src/generator/terraform.ts +0 -1875
- package/src/history/index.ts +0 -8
- package/src/history/manager.ts +0 -250
- package/src/history/types.ts +0 -34
- package/src/hooks/config.ts +0 -432
- package/src/hooks/engine.ts +0 -392
- package/src/hooks/index.ts +0 -4
- package/src/llm/auth-bridge.ts +0 -198
- package/src/llm/circuit-breaker.ts +0 -140
- package/src/llm/config-loader.ts +0 -201
- package/src/llm/cost-calculator.ts +0 -171
- package/src/llm/index.ts +0 -8
- package/src/llm/model-aliases.ts +0 -115
- package/src/llm/provider-registry.ts +0 -63
- package/src/llm/providers/anthropic.ts +0 -462
- package/src/llm/providers/bedrock.ts +0 -477
- package/src/llm/providers/google.ts +0 -405
- package/src/llm/providers/ollama.ts +0 -767
- package/src/llm/providers/openai-compatible.ts +0 -340
- package/src/llm/providers/openai.ts +0 -328
- package/src/llm/providers/openrouter.ts +0 -338
- package/src/llm/router.ts +0 -1104
- package/src/llm/types.ts +0 -232
- package/src/lsp/client.ts +0 -298
- package/src/lsp/languages.ts +0 -119
- package/src/lsp/manager.ts +0 -294
- package/src/mcp/client.ts +0 -402
- package/src/mcp/index.ts +0 -5
- package/src/mcp/manager.ts +0 -133
- package/src/nimbus.ts +0 -234
- package/src/plugins/index.ts +0 -27
- package/src/plugins/loader.ts +0 -334
- package/src/plugins/manager.ts +0 -376
- package/src/plugins/types.ts +0 -284
- package/src/scanners/cicd-scanner.ts +0 -258
- package/src/scanners/cloud-scanner.ts +0 -466
- package/src/scanners/framework-scanner.ts +0 -469
- package/src/scanners/iac-scanner.ts +0 -388
- package/src/scanners/index.ts +0 -539
- package/src/scanners/language-scanner.ts +0 -276
- package/src/scanners/package-manager-scanner.ts +0 -277
- package/src/scanners/types.ts +0 -172
- package/src/sessions/manager.ts +0 -472
- package/src/sessions/types.ts +0 -44
- package/src/sharing/sync.ts +0 -300
- package/src/sharing/viewer.ts +0 -163
- package/src/snapshots/index.ts +0 -2
- package/src/snapshots/manager.ts +0 -530
- package/src/state/artifacts.ts +0 -147
- package/src/state/audit.ts +0 -137
- package/src/state/billing.ts +0 -240
- package/src/state/checkpoints.ts +0 -117
- package/src/state/config.ts +0 -67
- package/src/state/conversations.ts +0 -14
- package/src/state/credentials.ts +0 -154
- package/src/state/db.ts +0 -58
- package/src/state/index.ts +0 -26
- package/src/state/messages.ts +0 -115
- package/src/state/projects.ts +0 -123
- package/src/state/schema.ts +0 -236
- package/src/state/sessions.ts +0 -147
- package/src/state/teams.ts +0 -200
- package/src/telemetry.ts +0 -108
- package/src/tools/aws-ops.ts +0 -952
- package/src/tools/azure-ops.ts +0 -579
- package/src/tools/file-ops.ts +0 -615
- package/src/tools/gcp-ops.ts +0 -625
- package/src/tools/git-ops.ts +0 -773
- package/src/tools/github-ops.ts +0 -799
- package/src/tools/helm-ops.ts +0 -943
- package/src/tools/index.ts +0 -17
- package/src/tools/k8s-ops.ts +0 -819
- package/src/tools/schemas/converter.ts +0 -184
- package/src/tools/schemas/devops.ts +0 -3502
- package/src/tools/schemas/index.ts +0 -73
- package/src/tools/schemas/standard.ts +0 -1148
- package/src/tools/schemas/types.ts +0 -735
- package/src/tools/spawn-exec.ts +0 -148
- package/src/tools/terraform-ops.ts +0 -862
- package/src/types/ambient.d.ts +0 -193
- package/src/types/config.ts +0 -83
- package/src/types/drift.ts +0 -116
- package/src/types/enterprise.ts +0 -335
- package/src/types/index.ts +0 -20
- package/src/types/plan.ts +0 -44
- package/src/types/request.ts +0 -65
- package/src/types/response.ts +0 -54
- package/src/types/service.ts +0 -51
- package/src/ui/App.tsx +0 -2114
- package/src/ui/DeployPreview.tsx +0 -174
- package/src/ui/FileDiffModal.tsx +0 -162
- package/src/ui/Header.tsx +0 -131
- package/src/ui/HelpModal.tsx +0 -57
- package/src/ui/InputBox.tsx +0 -503
- package/src/ui/MessageList.tsx +0 -1032
- package/src/ui/PermissionPrompt.tsx +0 -163
- package/src/ui/StatusBar.tsx +0 -277
- package/src/ui/TerminalPane.tsx +0 -84
- package/src/ui/ToolCallDisplay.tsx +0 -643
- package/src/ui/TreePane.tsx +0 -132
- package/src/ui/chat-ui.ts +0 -850
- package/src/ui/index.ts +0 -33
- package/src/ui/ink/index.ts +0 -1444
- package/src/ui/streaming.ts +0 -176
- package/src/ui/theme.ts +0 -104
- package/src/ui/types.ts +0 -75
- package/src/utils/analytics.ts +0 -72
- package/src/utils/cost-warning.ts +0 -27
- package/src/utils/env.ts +0 -46
- package/src/utils/errors.ts +0 -69
- package/src/utils/event-bus.ts +0 -38
- package/src/utils/index.ts +0 -24
- package/src/utils/logger.ts +0 -171
- package/src/utils/rate-limiter.ts +0 -121
- package/src/utils/service-auth.ts +0 -49
- package/src/utils/validation.ts +0 -53
- package/src/version.ts +0 -4
- package/src/watcher/index.ts +0 -214
- package/src/wizard/approval.ts +0 -383
- package/src/wizard/index.ts +0 -25
- package/src/wizard/prompts.ts +0 -338
- package/src/wizard/types.ts +0 -172
- package/src/wizard/ui.ts +0 -556
- package/src/wizard/wizard.ts +0 -304
- package/tsconfig.json +0 -24
package/src/config/types.ts
DELETED
|
@@ -1,609 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Configuration Types
|
|
3
|
-
*
|
|
4
|
-
* Type definitions for Nimbus CLI configuration
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Workspace configuration for a project
|
|
9
|
-
*/
|
|
10
|
-
export interface WorkspaceConfig {
|
|
11
|
-
/** Default cloud provider (aws, gcp, azure) */
|
|
12
|
-
defaultProvider?: string;
|
|
13
|
-
/** Output directory for generated code */
|
|
14
|
-
outputDirectory?: string;
|
|
15
|
-
/** Project name */
|
|
16
|
-
name?: string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Cost optimization routing configuration
|
|
21
|
-
*/
|
|
22
|
-
export interface CostOptimizationConfig {
|
|
23
|
-
/** Enable LLM cost optimization routing */
|
|
24
|
-
enabled?: boolean;
|
|
25
|
-
/** Model for simple tasks (summaries, classification) */
|
|
26
|
-
cheap_model?: string;
|
|
27
|
-
/** Model for complex tasks (code generation, reasoning) */
|
|
28
|
-
expensive_model?: string;
|
|
29
|
-
/** Task categories that should use the cheap model */
|
|
30
|
-
use_cheap_model_for?: string[];
|
|
31
|
-
/** Task categories that should use the expensive model */
|
|
32
|
-
use_expensive_model_for?: string[];
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Per-provider LLM configuration (A3/A4)
|
|
37
|
-
*/
|
|
38
|
-
export interface ProviderConfig {
|
|
39
|
-
/** API key for this provider */
|
|
40
|
-
api_key?: string;
|
|
41
|
-
/** Base URL for custom API endpoints (e.g., self-hosted or proxy) */
|
|
42
|
-
base_url?: string;
|
|
43
|
-
/** Available models for this provider */
|
|
44
|
-
models?: string[];
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* LLM fallback configuration (A7/A8)
|
|
49
|
-
*/
|
|
50
|
-
export interface FallbackConfig {
|
|
51
|
-
/** Enable fallback to alternative providers on failure */
|
|
52
|
-
enabled?: boolean;
|
|
53
|
-
/** Ordered list of provider names to try on failure */
|
|
54
|
-
providers?: string[];
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* LLM-related configuration
|
|
59
|
-
*/
|
|
60
|
-
export interface LLMConfig {
|
|
61
|
-
/** Default model to use */
|
|
62
|
-
defaultModel?: string;
|
|
63
|
-
/** Default LLM provider name (A2) */
|
|
64
|
-
default_provider?: string;
|
|
65
|
-
/** Temperature for generation (0-1) */
|
|
66
|
-
temperature?: number;
|
|
67
|
-
/** Maximum tokens for response */
|
|
68
|
-
maxTokens?: number;
|
|
69
|
-
/** Cost optimization settings */
|
|
70
|
-
cost_optimization?: CostOptimizationConfig;
|
|
71
|
-
/** Per-provider configuration map (A3/A4) */
|
|
72
|
-
providers?: Record<string, ProviderConfig>;
|
|
73
|
-
/** Fallback provider configuration (A7/A8) */
|
|
74
|
-
fallback?: FallbackConfig;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* History configuration
|
|
79
|
-
*/
|
|
80
|
-
export interface HistoryConfig {
|
|
81
|
-
/** Maximum number of entries to keep */
|
|
82
|
-
maxEntries?: number;
|
|
83
|
-
/** Whether to save history */
|
|
84
|
-
enabled?: boolean;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Auto-approve settings per operation type
|
|
89
|
-
*/
|
|
90
|
-
export interface AutoApproveConfig {
|
|
91
|
-
/** Auto-approve read operations (list, get, describe) */
|
|
92
|
-
read?: boolean;
|
|
93
|
-
/** Auto-approve generate operations (IaC generation) */
|
|
94
|
-
generate?: boolean;
|
|
95
|
-
/** Auto-approve create operations (apply, install) */
|
|
96
|
-
create?: boolean;
|
|
97
|
-
/** Auto-approve update operations (upgrade, scale) */
|
|
98
|
-
update?: boolean;
|
|
99
|
-
/** Auto-approve delete operations (delete, destroy, uninstall) */
|
|
100
|
-
delete?: boolean;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
/**
|
|
104
|
-
* Safety configuration
|
|
105
|
-
*/
|
|
106
|
-
export interface SafetyConfig {
|
|
107
|
-
/** Require confirmation for destructive operations */
|
|
108
|
-
requireConfirmation?: boolean;
|
|
109
|
-
/** Enable dry-run by default */
|
|
110
|
-
dryRunByDefault?: boolean;
|
|
111
|
-
/** Auto-approve settings per operation type */
|
|
112
|
-
auto_approve?: AutoApproveConfig;
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* UI configuration
|
|
117
|
-
*/
|
|
118
|
-
export interface UIConfig {
|
|
119
|
-
/** Color theme */
|
|
120
|
-
theme?: 'dark' | 'light' | 'auto';
|
|
121
|
-
/** Enable colors in output */
|
|
122
|
-
colors?: boolean;
|
|
123
|
-
/** Spinner style */
|
|
124
|
-
spinner?: 'dots' | 'line' | 'simple';
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Persona configuration for chat behavior
|
|
129
|
-
*/
|
|
130
|
-
export interface PersonaConfig {
|
|
131
|
-
/** Persona mode (standard, concise, detailed, expert, custom) */
|
|
132
|
-
mode?: 'professional' | 'assistant' | 'expert' | 'standard' | 'concise' | 'detailed' | 'custom';
|
|
133
|
-
/** Verbosity level (minimal, normal, verbose, detailed) */
|
|
134
|
-
verbosity?: 'minimal' | 'normal' | 'verbose' | 'detailed';
|
|
135
|
-
/** Custom persona prompt override */
|
|
136
|
-
custom?: string;
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
/**
|
|
140
|
-
* Cloud provider-specific configuration
|
|
141
|
-
*/
|
|
142
|
-
export interface CloudProviderConfig {
|
|
143
|
-
/** Default region for the provider */
|
|
144
|
-
default_region?: string;
|
|
145
|
-
/** Default AWS profile */
|
|
146
|
-
default_profile?: string;
|
|
147
|
-
/** Default GCP project */
|
|
148
|
-
default_project?: string;
|
|
149
|
-
/** Default Azure subscription */
|
|
150
|
-
default_subscription?: string;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Cloud configuration across providers
|
|
155
|
-
*/
|
|
156
|
-
export interface CloudConfig {
|
|
157
|
-
/** Default cloud provider */
|
|
158
|
-
default_provider?: 'aws' | 'gcp' | 'azure';
|
|
159
|
-
/** AWS-specific settings */
|
|
160
|
-
aws?: CloudProviderConfig;
|
|
161
|
-
/** GCP-specific settings */
|
|
162
|
-
gcp?: CloudProviderConfig;
|
|
163
|
-
/** Azure-specific settings */
|
|
164
|
-
azure?: CloudProviderConfig;
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
/**
|
|
168
|
-
* Terraform defaults
|
|
169
|
-
*/
|
|
170
|
-
export interface TerraformDefaults {
|
|
171
|
-
/** Default backend type */
|
|
172
|
-
default_backend?: 's3' | 'gcs' | 'azurerm' | 'local';
|
|
173
|
-
/** State bucket name */
|
|
174
|
-
state_bucket?: string;
|
|
175
|
-
/** DynamoDB lock table (AWS) */
|
|
176
|
-
lock_table?: string;
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Kubernetes defaults
|
|
181
|
-
*/
|
|
182
|
-
export interface KubernetesDefaults {
|
|
183
|
-
/** Default kubectl context */
|
|
184
|
-
default_context?: string;
|
|
185
|
-
/** Default namespace */
|
|
186
|
-
default_namespace?: string;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Complete Nimbus configuration schema
|
|
191
|
-
* Stored at ~/.nimbus/config.yaml
|
|
192
|
-
*/
|
|
193
|
-
export interface NimbusConfig {
|
|
194
|
-
/** Config version for migrations */
|
|
195
|
-
version: number;
|
|
196
|
-
/** Enable anonymous telemetry/usage statistics (A1) */
|
|
197
|
-
telemetry?: boolean;
|
|
198
|
-
/** Workspace settings */
|
|
199
|
-
workspace?: WorkspaceConfig;
|
|
200
|
-
/** LLM settings */
|
|
201
|
-
llm?: LLMConfig;
|
|
202
|
-
/** History settings */
|
|
203
|
-
history?: HistoryConfig;
|
|
204
|
-
/** Safety settings */
|
|
205
|
-
safety?: SafetyConfig;
|
|
206
|
-
/** UI settings */
|
|
207
|
-
ui?: UIConfig;
|
|
208
|
-
/** Persona settings */
|
|
209
|
-
persona?: PersonaConfig;
|
|
210
|
-
/** Cloud provider settings */
|
|
211
|
-
cloud?: CloudConfig;
|
|
212
|
-
/** Terraform defaults */
|
|
213
|
-
terraform?: TerraformDefaults;
|
|
214
|
-
/** Kubernetes defaults */
|
|
215
|
-
kubernetes?: KubernetesDefaults;
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
/**
|
|
219
|
-
* Flat key-value representation of config
|
|
220
|
-
* Used for set/get operations like: llm.defaultModel
|
|
221
|
-
*/
|
|
222
|
-
export type ConfigKey =
|
|
223
|
-
| 'telemetry'
|
|
224
|
-
| 'workspace.defaultProvider'
|
|
225
|
-
| 'workspace.outputDirectory'
|
|
226
|
-
| 'workspace.name'
|
|
227
|
-
| 'llm.defaultModel'
|
|
228
|
-
| 'llm.default_provider'
|
|
229
|
-
| 'llm.temperature'
|
|
230
|
-
| 'llm.maxTokens'
|
|
231
|
-
| 'llm.fallback.enabled'
|
|
232
|
-
| 'llm.fallback.providers'
|
|
233
|
-
| 'history.maxEntries'
|
|
234
|
-
| 'history.enabled'
|
|
235
|
-
| 'safety.requireConfirmation'
|
|
236
|
-
| 'safety.dryRunByDefault'
|
|
237
|
-
| 'safety.auto_approve.read'
|
|
238
|
-
| 'safety.auto_approve.generate'
|
|
239
|
-
| 'safety.auto_approve.create'
|
|
240
|
-
| 'safety.auto_approve.update'
|
|
241
|
-
| 'safety.auto_approve.delete'
|
|
242
|
-
| 'ui.theme'
|
|
243
|
-
| 'ui.colors'
|
|
244
|
-
| 'ui.spinner'
|
|
245
|
-
| 'persona.mode'
|
|
246
|
-
| 'persona.verbosity'
|
|
247
|
-
| 'persona.custom'
|
|
248
|
-
| 'cloud.default_provider'
|
|
249
|
-
| 'cloud.aws.default_region'
|
|
250
|
-
| 'cloud.aws.default_profile'
|
|
251
|
-
| 'cloud.gcp.default_region'
|
|
252
|
-
| 'cloud.gcp.default_project'
|
|
253
|
-
| 'cloud.azure.default_region'
|
|
254
|
-
| 'cloud.azure.default_subscription'
|
|
255
|
-
| 'terraform.default_backend'
|
|
256
|
-
| 'terraform.state_bucket'
|
|
257
|
-
| 'terraform.lock_table'
|
|
258
|
-
| 'kubernetes.default_context'
|
|
259
|
-
| 'kubernetes.default_namespace'
|
|
260
|
-
| 'llm.cost_optimization.enabled'
|
|
261
|
-
| 'llm.cost_optimization.cheap_model'
|
|
262
|
-
| 'llm.cost_optimization.expensive_model'
|
|
263
|
-
| 'llm.cost_optimization.use_cheap_model_for'
|
|
264
|
-
| 'llm.cost_optimization.use_expensive_model_for'
|
|
265
|
-
| 'primaryClouds'
|
|
266
|
-
| 'model'
|
|
267
|
-
| 'defaultCostBudget'
|
|
268
|
-
| 'agentTurnTimeoutSeconds';
|
|
269
|
-
|
|
270
|
-
/**
|
|
271
|
-
* Config key metadata for help/validation
|
|
272
|
-
*/
|
|
273
|
-
export interface ConfigKeyInfo {
|
|
274
|
-
key: ConfigKey;
|
|
275
|
-
description: string;
|
|
276
|
-
type: 'string' | 'number' | 'boolean';
|
|
277
|
-
defaultValue?: string | number | boolean;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Registry of all config keys
|
|
282
|
-
*/
|
|
283
|
-
export const CONFIG_KEYS: ConfigKeyInfo[] = [
|
|
284
|
-
{
|
|
285
|
-
key: 'workspace.defaultProvider',
|
|
286
|
-
description: 'Default cloud provider (aws, gcp, azure)',
|
|
287
|
-
type: 'string',
|
|
288
|
-
defaultValue: 'aws',
|
|
289
|
-
},
|
|
290
|
-
{
|
|
291
|
-
key: 'workspace.outputDirectory',
|
|
292
|
-
description: 'Output directory for generated code',
|
|
293
|
-
type: 'string',
|
|
294
|
-
defaultValue: './infrastructure',
|
|
295
|
-
},
|
|
296
|
-
{
|
|
297
|
-
key: 'workspace.name',
|
|
298
|
-
description: 'Project name',
|
|
299
|
-
type: 'string',
|
|
300
|
-
},
|
|
301
|
-
{
|
|
302
|
-
key: 'llm.defaultModel',
|
|
303
|
-
description: 'Default LLM model to use',
|
|
304
|
-
type: 'string',
|
|
305
|
-
},
|
|
306
|
-
{
|
|
307
|
-
key: 'llm.temperature',
|
|
308
|
-
description: 'Temperature for LLM generation (0-1)',
|
|
309
|
-
type: 'number',
|
|
310
|
-
defaultValue: 0.7,
|
|
311
|
-
},
|
|
312
|
-
{
|
|
313
|
-
key: 'llm.maxTokens',
|
|
314
|
-
description: 'Maximum tokens for LLM response',
|
|
315
|
-
type: 'number',
|
|
316
|
-
defaultValue: 4096,
|
|
317
|
-
},
|
|
318
|
-
{
|
|
319
|
-
key: 'history.maxEntries',
|
|
320
|
-
description: 'Maximum history entries to keep',
|
|
321
|
-
type: 'number',
|
|
322
|
-
defaultValue: 100,
|
|
323
|
-
},
|
|
324
|
-
{
|
|
325
|
-
key: 'history.enabled',
|
|
326
|
-
description: 'Enable command history',
|
|
327
|
-
type: 'boolean',
|
|
328
|
-
defaultValue: true,
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
key: 'safety.requireConfirmation',
|
|
332
|
-
description: 'Require confirmation for destructive operations',
|
|
333
|
-
type: 'boolean',
|
|
334
|
-
defaultValue: true,
|
|
335
|
-
},
|
|
336
|
-
{
|
|
337
|
-
key: 'safety.dryRunByDefault',
|
|
338
|
-
description: 'Enable dry-run mode by default',
|
|
339
|
-
type: 'boolean',
|
|
340
|
-
defaultValue: false,
|
|
341
|
-
},
|
|
342
|
-
{
|
|
343
|
-
key: 'safety.auto_approve.read',
|
|
344
|
-
description: 'Auto-approve read operations (list, get, describe)',
|
|
345
|
-
type: 'boolean',
|
|
346
|
-
defaultValue: true,
|
|
347
|
-
},
|
|
348
|
-
{
|
|
349
|
-
key: 'safety.auto_approve.generate',
|
|
350
|
-
description: 'Auto-approve generate operations (IaC generation)',
|
|
351
|
-
type: 'boolean',
|
|
352
|
-
defaultValue: true,
|
|
353
|
-
},
|
|
354
|
-
{
|
|
355
|
-
key: 'safety.auto_approve.create',
|
|
356
|
-
description: 'Auto-approve create operations (apply, install)',
|
|
357
|
-
type: 'boolean',
|
|
358
|
-
defaultValue: false,
|
|
359
|
-
},
|
|
360
|
-
{
|
|
361
|
-
key: 'safety.auto_approve.update',
|
|
362
|
-
description: 'Auto-approve update operations (upgrade, scale)',
|
|
363
|
-
type: 'boolean',
|
|
364
|
-
defaultValue: false,
|
|
365
|
-
},
|
|
366
|
-
{
|
|
367
|
-
key: 'safety.auto_approve.delete',
|
|
368
|
-
description: 'Auto-approve delete operations (delete, destroy, uninstall)',
|
|
369
|
-
type: 'boolean',
|
|
370
|
-
defaultValue: false,
|
|
371
|
-
},
|
|
372
|
-
{
|
|
373
|
-
key: 'ui.theme',
|
|
374
|
-
description: 'Color theme (dark, light, auto)',
|
|
375
|
-
type: 'string',
|
|
376
|
-
defaultValue: 'auto',
|
|
377
|
-
},
|
|
378
|
-
{
|
|
379
|
-
key: 'ui.colors',
|
|
380
|
-
description: 'Enable colors in output',
|
|
381
|
-
type: 'boolean',
|
|
382
|
-
defaultValue: true,
|
|
383
|
-
},
|
|
384
|
-
{
|
|
385
|
-
key: 'ui.spinner',
|
|
386
|
-
description: 'Spinner style (dots, line, simple)',
|
|
387
|
-
type: 'string',
|
|
388
|
-
defaultValue: 'dots',
|
|
389
|
-
},
|
|
390
|
-
{
|
|
391
|
-
key: 'persona.mode',
|
|
392
|
-
description: 'AI persona mode (standard, concise, detailed, expert)',
|
|
393
|
-
type: 'string',
|
|
394
|
-
defaultValue: 'standard',
|
|
395
|
-
},
|
|
396
|
-
{
|
|
397
|
-
key: 'persona.verbosity',
|
|
398
|
-
description: 'Response verbosity level (minimal, normal, verbose)',
|
|
399
|
-
type: 'string',
|
|
400
|
-
defaultValue: 'normal',
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
key: 'persona.custom',
|
|
404
|
-
description: 'Custom persona prompt override',
|
|
405
|
-
type: 'string',
|
|
406
|
-
defaultValue: '',
|
|
407
|
-
},
|
|
408
|
-
{
|
|
409
|
-
key: 'cloud.default_provider',
|
|
410
|
-
description: 'Default cloud provider (aws, gcp, azure)',
|
|
411
|
-
type: 'string',
|
|
412
|
-
defaultValue: 'aws',
|
|
413
|
-
},
|
|
414
|
-
{
|
|
415
|
-
key: 'cloud.aws.default_region',
|
|
416
|
-
description: 'Default AWS region',
|
|
417
|
-
type: 'string',
|
|
418
|
-
defaultValue: 'us-east-1',
|
|
419
|
-
},
|
|
420
|
-
{
|
|
421
|
-
key: 'cloud.aws.default_profile',
|
|
422
|
-
description: 'Default AWS CLI profile',
|
|
423
|
-
type: 'string',
|
|
424
|
-
defaultValue: 'default',
|
|
425
|
-
},
|
|
426
|
-
{
|
|
427
|
-
key: 'cloud.gcp.default_region',
|
|
428
|
-
description: 'Default GCP region',
|
|
429
|
-
type: 'string',
|
|
430
|
-
defaultValue: 'us-central1',
|
|
431
|
-
},
|
|
432
|
-
{
|
|
433
|
-
key: 'cloud.gcp.default_project',
|
|
434
|
-
description: 'Default GCP project ID',
|
|
435
|
-
type: 'string',
|
|
436
|
-
},
|
|
437
|
-
{
|
|
438
|
-
key: 'cloud.azure.default_region',
|
|
439
|
-
description: 'Default Azure region',
|
|
440
|
-
type: 'string',
|
|
441
|
-
defaultValue: 'eastus',
|
|
442
|
-
},
|
|
443
|
-
{
|
|
444
|
-
key: 'cloud.azure.default_subscription',
|
|
445
|
-
description: 'Default Azure subscription ID',
|
|
446
|
-
type: 'string',
|
|
447
|
-
},
|
|
448
|
-
{
|
|
449
|
-
key: 'terraform.default_backend',
|
|
450
|
-
description: 'Default Terraform backend (s3, gcs, azurerm, local)',
|
|
451
|
-
type: 'string',
|
|
452
|
-
defaultValue: 's3',
|
|
453
|
-
},
|
|
454
|
-
{
|
|
455
|
-
key: 'terraform.state_bucket',
|
|
456
|
-
description: 'Terraform state bucket name',
|
|
457
|
-
type: 'string',
|
|
458
|
-
},
|
|
459
|
-
{
|
|
460
|
-
key: 'terraform.lock_table',
|
|
461
|
-
description: 'Terraform DynamoDB lock table name',
|
|
462
|
-
type: 'string',
|
|
463
|
-
},
|
|
464
|
-
{
|
|
465
|
-
key: 'kubernetes.default_context',
|
|
466
|
-
description: 'Default kubectl context',
|
|
467
|
-
type: 'string',
|
|
468
|
-
},
|
|
469
|
-
{
|
|
470
|
-
key: 'kubernetes.default_namespace',
|
|
471
|
-
description: 'Default Kubernetes namespace',
|
|
472
|
-
type: 'string',
|
|
473
|
-
defaultValue: 'default',
|
|
474
|
-
},
|
|
475
|
-
{
|
|
476
|
-
key: 'llm.cost_optimization.enabled',
|
|
477
|
-
description: 'Enable LLM cost optimization routing',
|
|
478
|
-
type: 'boolean',
|
|
479
|
-
defaultValue: false,
|
|
480
|
-
},
|
|
481
|
-
{
|
|
482
|
-
key: 'llm.cost_optimization.cheap_model',
|
|
483
|
-
description: 'Model for simple tasks (summaries, classification)',
|
|
484
|
-
type: 'string',
|
|
485
|
-
defaultValue: 'claude-haiku-4-20250514',
|
|
486
|
-
},
|
|
487
|
-
{
|
|
488
|
-
key: 'llm.cost_optimization.expensive_model',
|
|
489
|
-
description: 'Model for complex tasks (code generation, reasoning)',
|
|
490
|
-
type: 'string',
|
|
491
|
-
defaultValue: 'claude-sonnet-4-20250514',
|
|
492
|
-
},
|
|
493
|
-
// A1: Telemetry
|
|
494
|
-
{
|
|
495
|
-
key: 'telemetry',
|
|
496
|
-
description: 'Enable anonymous usage statistics and error reporting',
|
|
497
|
-
type: 'boolean',
|
|
498
|
-
defaultValue: true,
|
|
499
|
-
},
|
|
500
|
-
// A2: LLM default provider
|
|
501
|
-
{
|
|
502
|
-
key: 'llm.default_provider',
|
|
503
|
-
description: 'Default LLM provider to use (e.g. anthropic, openai, google)',
|
|
504
|
-
type: 'string',
|
|
505
|
-
},
|
|
506
|
-
// A5: Cost optimization — cheap model task routing
|
|
507
|
-
{
|
|
508
|
-
key: 'llm.cost_optimization.use_cheap_model_for',
|
|
509
|
-
description: 'Task categories that should be routed to the cheap model (JSON array)',
|
|
510
|
-
type: 'string',
|
|
511
|
-
},
|
|
512
|
-
// A6: Cost optimization — expensive model task routing
|
|
513
|
-
{
|
|
514
|
-
key: 'llm.cost_optimization.use_expensive_model_for',
|
|
515
|
-
description: 'Task categories that should be routed to the expensive model (JSON array)',
|
|
516
|
-
type: 'string',
|
|
517
|
-
},
|
|
518
|
-
// A7: Fallback enabled
|
|
519
|
-
{
|
|
520
|
-
key: 'llm.fallback.enabled',
|
|
521
|
-
description: 'Enable automatic fallback to alternative LLM providers on failure',
|
|
522
|
-
type: 'boolean',
|
|
523
|
-
defaultValue: false,
|
|
524
|
-
},
|
|
525
|
-
// A8: Fallback provider list
|
|
526
|
-
{
|
|
527
|
-
key: 'llm.fallback.providers',
|
|
528
|
-
description: 'Ordered list of fallback LLM providers to try on failure (JSON array)',
|
|
529
|
-
type: 'string',
|
|
530
|
-
},
|
|
531
|
-
// M4: Primary cloud providers
|
|
532
|
-
{
|
|
533
|
-
key: 'primaryClouds',
|
|
534
|
-
description: 'Primary cloud providers (comma-separated: aws,gcp,azure)',
|
|
535
|
-
type: 'string',
|
|
536
|
-
},
|
|
537
|
-
// M4: Model override (validated against known model IDs)
|
|
538
|
-
{
|
|
539
|
-
key: 'model',
|
|
540
|
-
description: 'Default model ID (e.g. claude-opus-4-6, claude-sonnet-4-6, claude-haiku-4-5-20251001)',
|
|
541
|
-
type: 'string',
|
|
542
|
-
},
|
|
543
|
-
// G16: Default cost budget per session
|
|
544
|
-
{
|
|
545
|
-
key: 'defaultCostBudget',
|
|
546
|
-
description: 'Default cost budget in USD per session (e.g. 1.00). 0 means unlimited.',
|
|
547
|
-
type: 'number',
|
|
548
|
-
defaultValue: 0,
|
|
549
|
-
},
|
|
550
|
-
// G21: Configurable agent turn silence timeout
|
|
551
|
-
{
|
|
552
|
-
key: 'agentTurnTimeoutSeconds',
|
|
553
|
-
description: 'Seconds to wait for LLM response before aborting (default: 60)',
|
|
554
|
-
type: 'number',
|
|
555
|
-
defaultValue: 60,
|
|
556
|
-
},
|
|
557
|
-
];
|
|
558
|
-
|
|
559
|
-
// ---------------------------------------------------------------------------
|
|
560
|
-
// M3: Per-project configuration (nimbus.yaml / .nimbus/config.json)
|
|
561
|
-
// ---------------------------------------------------------------------------
|
|
562
|
-
|
|
563
|
-
/**
|
|
564
|
-
* Per-project Nimbus configuration for team defaults.
|
|
565
|
-
* Stored in <project-root>/nimbus.yaml OR <project-root>/.nimbus/config.json.
|
|
566
|
-
* JSON-only format to avoid adding a YAML parser dependency.
|
|
567
|
-
*/
|
|
568
|
-
export interface ProjectConfig {
|
|
569
|
-
/** Default Terraform workspace for this project */
|
|
570
|
-
defaultWorkspace?: string;
|
|
571
|
-
/** Default kubectl context for this project */
|
|
572
|
-
defaultContext?: string;
|
|
573
|
-
/** Default Kubernetes namespace */
|
|
574
|
-
defaultNamespace?: string;
|
|
575
|
-
/** Tool call patterns to auto-approve (e.g. ["kubectl get *", "terraform plan"]) */
|
|
576
|
-
autoApprove?: string[];
|
|
577
|
-
/** Environment names that should be treated as protected (require confirmation for destructive ops) */
|
|
578
|
-
protectedEnvironments?: string[];
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
/**
|
|
582
|
-
* Load per-project configuration from:
|
|
583
|
-
* 1. <cwd>/nimbus.yaml (JSON-parsed, no YAML dep)
|
|
584
|
-
* 2. <cwd>/.nimbus/config.json
|
|
585
|
-
*
|
|
586
|
-
* Returns null if neither file exists or both fail to parse.
|
|
587
|
-
*/
|
|
588
|
-
export function loadProjectConfig(cwd: string): ProjectConfig | null {
|
|
589
|
-
const { existsSync, readFileSync } = require('node:fs') as typeof import('node:fs');
|
|
590
|
-
const { join } = require('node:path') as typeof import('node:path');
|
|
591
|
-
|
|
592
|
-
const candidates = [
|
|
593
|
-
join(cwd, 'nimbus.yaml'),
|
|
594
|
-
join(cwd, '.nimbus', 'config.json'),
|
|
595
|
-
];
|
|
596
|
-
|
|
597
|
-
for (const file of candidates) {
|
|
598
|
-
try {
|
|
599
|
-
if (!existsSync(file)) continue;
|
|
600
|
-
const raw = readFileSync(file, 'utf-8');
|
|
601
|
-
const parsed = JSON.parse(raw) as ProjectConfig;
|
|
602
|
-
return parsed;
|
|
603
|
-
} catch {
|
|
604
|
-
// Try next candidate
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
|
|
608
|
-
return null;
|
|
609
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Workspace state persistence — saves terraform workspace + kubectl context
|
|
3
|
-
* per working directory to ~/.nimbus/workspace-state.json
|
|
4
|
-
*/
|
|
5
|
-
import { readFileSync, writeFileSync, mkdirSync } from 'node:fs';
|
|
6
|
-
import { join } from 'node:path';
|
|
7
|
-
import { homedir } from 'node:os';
|
|
8
|
-
|
|
9
|
-
export interface WorkspaceState {
|
|
10
|
-
terraformWorkspace?: string;
|
|
11
|
-
kubectlContext?: string;
|
|
12
|
-
awsProfile?: string;
|
|
13
|
-
awsRegion?: string;
|
|
14
|
-
gcpProject?: string;
|
|
15
|
-
lastSeen?: string; // ISO timestamp
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
type StateFile = Record<string, WorkspaceState>; // keyed by cwd
|
|
19
|
-
|
|
20
|
-
const STATE_PATH = join(homedir(), '.nimbus', 'workspace-state.json');
|
|
21
|
-
|
|
22
|
-
function loadStateFile(): StateFile {
|
|
23
|
-
try {
|
|
24
|
-
return JSON.parse(readFileSync(STATE_PATH, 'utf-8')) as StateFile;
|
|
25
|
-
} catch {
|
|
26
|
-
return {};
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
function saveStateFile(state: StateFile): void {
|
|
31
|
-
try {
|
|
32
|
-
mkdirSync(join(homedir(), '.nimbus'), { recursive: true });
|
|
33
|
-
writeFileSync(STATE_PATH, JSON.stringify(state, null, 2), 'utf-8');
|
|
34
|
-
} catch { /* non-critical */ }
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
export function loadWorkspaceState(cwd: string): WorkspaceState {
|
|
38
|
-
const all = loadStateFile();
|
|
39
|
-
return all[cwd] ?? {};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export function saveWorkspaceState(cwd: string, state: WorkspaceState): void {
|
|
43
|
-
const all = loadStateFile();
|
|
44
|
-
all[cwd] = { ...all[cwd], ...state, lastSeen: new Date().toISOString() };
|
|
45
|
-
saveStateFile(all);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export function mergeWorkspaceState(cwd: string, infra: Partial<WorkspaceState>): WorkspaceState {
|
|
49
|
-
const existing = loadWorkspaceState(cwd);
|
|
50
|
-
const merged = { ...existing, ...infra };
|
|
51
|
-
saveWorkspaceState(cwd, merged);
|
|
52
|
-
return merged;
|
|
53
|
-
}
|