@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
|
@@ -87,14 +87,17 @@ export async function watchCommand(options) {
|
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
function onChange(filename) {
|
|
90
|
-
if (!filename)
|
|
90
|
+
if (!filename) {
|
|
91
91
|
return;
|
|
92
|
+
}
|
|
92
93
|
// Check if the file matches the glob pattern
|
|
93
|
-
if (!matchGlob(filename, glob))
|
|
94
|
+
if (!matchGlob(filename, glob)) {
|
|
94
95
|
return;
|
|
96
|
+
}
|
|
95
97
|
// Debounce rapid successive changes
|
|
96
|
-
if (debounceTimer)
|
|
98
|
+
if (debounceTimer) {
|
|
97
99
|
clearTimeout(debounceTimer);
|
|
100
|
+
}
|
|
98
101
|
debounceTimer = setTimeout(() => {
|
|
99
102
|
debounceTimer = null;
|
|
100
103
|
triggerRun(filename).catch(err => {
|
|
@@ -53,8 +53,9 @@ else {
|
|
|
53
53
|
let sqlJsDb = null;
|
|
54
54
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
55
55
|
const getSqlJsDb = () => {
|
|
56
|
-
if (!sqlJsDb)
|
|
56
|
+
if (!sqlJsDb) {
|
|
57
57
|
throw new Error('sql.js database not yet initialised — call new Database() first');
|
|
58
|
+
}
|
|
58
59
|
return sqlJsDb;
|
|
59
60
|
};
|
|
60
61
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -89,8 +90,9 @@ else {
|
|
|
89
90
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
90
91
|
get: (...params) => { stmt.bind(params); return stmt.step() ? stmt.getAsObject() : undefined; },
|
|
91
92
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
92
|
-
all: (...params) => { const rows = []; stmt.bind(params); while (stmt.step())
|
|
93
|
-
rows.push(stmt.getAsObject());
|
|
93
|
+
all: (...params) => { const rows = []; stmt.bind(params); while (stmt.step()) {
|
|
94
|
+
rows.push(stmt.getAsObject());
|
|
95
|
+
} return rows; },
|
|
94
96
|
finalize: () => stmt.free(),
|
|
95
97
|
};
|
|
96
98
|
}
|
|
@@ -36,8 +36,9 @@ function saveConfig(data) {
|
|
|
36
36
|
* Returns null if no mode has been saved for this directory.
|
|
37
37
|
*/
|
|
38
38
|
export function loadModeForCwd(cwd) {
|
|
39
|
-
if (MODE_CACHE.has(cwd))
|
|
39
|
+
if (MODE_CACHE.has(cwd)) {
|
|
40
40
|
return MODE_CACHE.get(cwd) ?? null;
|
|
41
|
+
}
|
|
41
42
|
const config = loadConfig();
|
|
42
43
|
const mode = config[cwd];
|
|
43
44
|
if (mode && ['plan', 'build', 'deploy'].includes(mode)) {
|
|
@@ -12,8 +12,9 @@ function getProfilesDir() {
|
|
|
12
12
|
}
|
|
13
13
|
export function loadProfile(name) {
|
|
14
14
|
const profilePath = join(getProfilesDir(), `${name}.json`);
|
|
15
|
-
if (!existsSync(profilePath))
|
|
15
|
+
if (!existsSync(profilePath)) {
|
|
16
16
|
return null;
|
|
17
|
+
}
|
|
17
18
|
try {
|
|
18
19
|
const raw = readFileSync(profilePath, 'utf-8');
|
|
19
20
|
return { name, ...JSON.parse(raw) };
|
|
@@ -30,8 +31,9 @@ export function saveProfile(profile) {
|
|
|
30
31
|
}
|
|
31
32
|
export function listProfiles() {
|
|
32
33
|
const profilesDir = getProfilesDir();
|
|
33
|
-
if (!existsSync(profilesDir))
|
|
34
|
+
if (!existsSync(profilesDir)) {
|
|
34
35
|
return [];
|
|
36
|
+
}
|
|
35
37
|
try {
|
|
36
38
|
return readdirSync(profilesDir)
|
|
37
39
|
.filter(f => f.endsWith('.json'))
|
package/dist/src/config/types.js
CHANGED
|
@@ -297,8 +297,9 @@ export function loadProjectConfig(cwd) {
|
|
|
297
297
|
];
|
|
298
298
|
for (const file of candidates) {
|
|
299
299
|
try {
|
|
300
|
-
if (!existsSync(file))
|
|
300
|
+
if (!existsSync(file)) {
|
|
301
301
|
continue;
|
|
302
|
+
}
|
|
302
303
|
const raw = readFileSync(file, 'utf-8');
|
|
303
304
|
const parsed = JSON.parse(raw);
|
|
304
305
|
return parsed;
|
|
@@ -723,14 +723,18 @@ export class Executor {
|
|
|
723
723
|
await new Promise((resolve, reject) => {
|
|
724
724
|
const { exec } = require('node:child_process');
|
|
725
725
|
exec(rollbackCmd, { timeout: 600_000 }, (error, stdout, stderr) => {
|
|
726
|
-
if (stdout)
|
|
726
|
+
if (stdout) {
|
|
727
727
|
this.log(executionId, 'info', stdout);
|
|
728
|
-
|
|
728
|
+
}
|
|
729
|
+
if (stderr) {
|
|
729
730
|
this.log(executionId, 'info', stderr);
|
|
730
|
-
|
|
731
|
+
}
|
|
732
|
+
if (error) {
|
|
731
733
|
reject(error);
|
|
732
|
-
|
|
734
|
+
}
|
|
735
|
+
else {
|
|
733
736
|
resolve();
|
|
737
|
+
}
|
|
734
738
|
});
|
|
735
739
|
});
|
|
736
740
|
}
|
|
@@ -23,16 +23,20 @@ const VALID_CATEGORIES = new Set(['security', 'cost', 'availability', 'performan
|
|
|
23
23
|
// ==========================================
|
|
24
24
|
/** Detect the primary domain of a task description. */
|
|
25
25
|
function detectDomain(task) {
|
|
26
|
-
const desc = (task.type
|
|
27
|
-
if (desc.includes('helm') || desc.includes('chart') || desc.includes('release'))
|
|
26
|
+
const desc = (`${task.type} ${JSON.stringify(task.context)}`).toLowerCase();
|
|
27
|
+
if (desc.includes('helm') || desc.includes('chart') || desc.includes('release')) {
|
|
28
28
|
return 'helm';
|
|
29
|
-
|
|
29
|
+
}
|
|
30
|
+
if (desc.includes('kubectl') || desc.includes('kubernetes') || desc.includes('pod') || desc.includes('deployment') || desc.includes('k8s')) {
|
|
30
31
|
return 'kubernetes';
|
|
31
|
-
|
|
32
|
+
}
|
|
33
|
+
if (desc.includes('terraform') || desc.includes('.tf') || desc.includes('infrastructure') || desc.includes('provider')) {
|
|
32
34
|
return 'terraform';
|
|
35
|
+
}
|
|
33
36
|
// Default to terraform for infrastructure tasks
|
|
34
|
-
if (task.type === 'deploy' || task.type === 'generate')
|
|
37
|
+
if (task.type === 'deploy' || task.type === 'generate') {
|
|
35
38
|
return 'terraform';
|
|
39
|
+
}
|
|
36
40
|
return 'generic';
|
|
37
41
|
}
|
|
38
42
|
export class Planner {
|
|
@@ -99,8 +99,9 @@ export class AnthropicProvider extends BaseProvider {
|
|
|
99
99
|
}
|
|
100
100
|
/** H4: Return true if the error is an Anthropic rate limit (429). */
|
|
101
101
|
isRateLimitError(error) {
|
|
102
|
-
if (!error || typeof error !== 'object')
|
|
102
|
+
if (!error || typeof error !== 'object') {
|
|
103
103
|
return false;
|
|
104
|
+
}
|
|
104
105
|
const e = error;
|
|
105
106
|
return e.status === 429 || e.error?.type === 'rate_limit_error';
|
|
106
107
|
}
|
|
@@ -121,8 +122,9 @@ export class AnthropicProvider extends BaseProvider {
|
|
|
121
122
|
return this.convertResponse(response);
|
|
122
123
|
}
|
|
123
124
|
catch (error) {
|
|
124
|
-
if (this.isRateLimitError(error))
|
|
125
|
+
if (this.isRateLimitError(error)) {
|
|
125
126
|
throw this.formatRateLimitError(error);
|
|
127
|
+
}
|
|
126
128
|
throw error;
|
|
127
129
|
}
|
|
128
130
|
}
|
|
@@ -143,8 +145,9 @@ export class AnthropicProvider extends BaseProvider {
|
|
|
143
145
|
});
|
|
144
146
|
}
|
|
145
147
|
catch (error) {
|
|
146
|
-
if (this.isRateLimitError(error))
|
|
148
|
+
if (this.isRateLimitError(error)) {
|
|
147
149
|
throw this.formatRateLimitError(error);
|
|
150
|
+
}
|
|
148
151
|
throw error;
|
|
149
152
|
}
|
|
150
153
|
let usage;
|
package/dist/src/llm/router.js
CHANGED
|
@@ -195,6 +195,14 @@ export class LLMRouter {
|
|
|
195
195
|
getDisabledProviders() {
|
|
196
196
|
return this.circuitBreaker.getOpenCircuits();
|
|
197
197
|
}
|
|
198
|
+
/**
|
|
199
|
+
* Re-initialize all providers from scratch (e.g. after a `nimbus login` updates auth.json).
|
|
200
|
+
* Clears the existing provider map and re-runs the full discovery/configuration logic.
|
|
201
|
+
*/
|
|
202
|
+
reinitializeProviders() {
|
|
203
|
+
this.providers.clear();
|
|
204
|
+
this.initializeProviders();
|
|
205
|
+
}
|
|
198
206
|
/**
|
|
199
207
|
* Register a custom provider
|
|
200
208
|
*/
|
|
@@ -791,18 +799,24 @@ export class LLMRouter {
|
|
|
791
799
|
*/
|
|
792
800
|
export function listAuthenticatedProviders() {
|
|
793
801
|
const authenticated = [];
|
|
794
|
-
if (process.env.ANTHROPIC_API_KEY)
|
|
802
|
+
if (process.env.ANTHROPIC_API_KEY) {
|
|
795
803
|
authenticated.push('anthropic');
|
|
796
|
-
|
|
804
|
+
}
|
|
805
|
+
if (process.env.OPENAI_API_KEY) {
|
|
797
806
|
authenticated.push('openai');
|
|
798
|
-
|
|
807
|
+
}
|
|
808
|
+
if (process.env.GOOGLE_API_KEY || process.env.GOOGLE_GENERATIVE_AI_API_KEY) {
|
|
799
809
|
authenticated.push('google');
|
|
800
|
-
|
|
810
|
+
}
|
|
811
|
+
if (process.env.GROQ_API_KEY) {
|
|
801
812
|
authenticated.push('groq');
|
|
802
|
-
|
|
813
|
+
}
|
|
814
|
+
if (process.env.OPENROUTER_API_KEY) {
|
|
803
815
|
authenticated.push('openrouter');
|
|
804
|
-
|
|
816
|
+
}
|
|
817
|
+
if (process.env.AWS_ACCESS_KEY_ID || process.env.AWS_PROFILE) {
|
|
805
818
|
authenticated.push('bedrock');
|
|
819
|
+
}
|
|
806
820
|
return authenticated;
|
|
807
821
|
}
|
|
808
822
|
/**
|
|
@@ -831,8 +845,9 @@ export function classifyTaskComplexity(message) {
|
|
|
831
845
|
* If `preferredModel` is provided it always wins (user override).
|
|
832
846
|
*/
|
|
833
847
|
export function routeModel(complexity, preferredModel) {
|
|
834
|
-
if (preferredModel)
|
|
848
|
+
if (preferredModel) {
|
|
835
849
|
return preferredModel;
|
|
850
|
+
}
|
|
836
851
|
switch (complexity) {
|
|
837
852
|
case 'simple':
|
|
838
853
|
return 'anthropic/claude-haiku-4-5-20251001';
|
|
@@ -253,8 +253,9 @@ export class SessionManager {
|
|
|
253
253
|
}
|
|
254
254
|
/** Schedule a debounced flush (no-op if already scheduled). */
|
|
255
255
|
_scheduleFlush() {
|
|
256
|
-
if (this._flushTimer !== null)
|
|
256
|
+
if (this._flushTimer !== null) {
|
|
257
257
|
return;
|
|
258
|
+
}
|
|
258
259
|
if (this.flushDebounceMs === 0) {
|
|
259
260
|
// Immediate flush path (used in tests)
|
|
260
261
|
this._flushNow();
|
|
@@ -267,8 +268,9 @@ export class SessionManager {
|
|
|
267
268
|
}
|
|
268
269
|
/** Write all pending conversation entries to SQLite. */
|
|
269
270
|
_flushNow() {
|
|
270
|
-
if (this.pendingConversationFlush.size === 0)
|
|
271
|
+
if (this.pendingConversationFlush.size === 0) {
|
|
271
272
|
return;
|
|
273
|
+
}
|
|
272
274
|
const pending = this.pendingConversationFlush;
|
|
273
275
|
this.pendingConversationFlush = new Map();
|
|
274
276
|
const txn = this.db.transaction(() => {
|
|
@@ -343,8 +345,9 @@ export class SessionManager {
|
|
|
343
345
|
/** Retrieve infra context for a session. Returns null if not set. */
|
|
344
346
|
getInfraContext(sessionId) {
|
|
345
347
|
const row = this.db.prepare('SELECT metadata FROM sessions WHERE id = ?').get(sessionId);
|
|
346
|
-
if (!row?.metadata)
|
|
348
|
+
if (!row?.metadata) {
|
|
347
349
|
return null;
|
|
350
|
+
}
|
|
348
351
|
try {
|
|
349
352
|
const meta = JSON.parse(row.metadata);
|
|
350
353
|
return meta.infraContext ?? null;
|
|
@@ -115,8 +115,9 @@ export function formatSessionAsRunbook(messages, session) {
|
|
|
115
115
|
'',
|
|
116
116
|
];
|
|
117
117
|
for (const msg of messages) {
|
|
118
|
-
if (msg.role === 'system')
|
|
118
|
+
if (msg.role === 'system') {
|
|
119
119
|
continue;
|
|
120
|
+
}
|
|
120
121
|
const heading = msg.role === 'user' ? '## User' : '## Agent';
|
|
121
122
|
lines.push(heading);
|
|
122
123
|
lines.push('');
|
|
@@ -79,8 +79,7 @@ export class FileSystemOperations {
|
|
|
79
79
|
await fd.close();
|
|
80
80
|
}
|
|
81
81
|
const truncated = buffer.slice(0, bytesRead).toString(encoding);
|
|
82
|
-
return (truncated +
|
|
83
|
-
`\n\n[File truncated: ${(stat.size / 1024).toFixed(1)} KB total, showing first ${(bytesRead / 1024).toFixed(0)} KB. ` +
|
|
82
|
+
return (`${truncated}\n\n[File truncated: ${(stat.size / 1024).toFixed(1)} KB total, showing first ${(bytesRead / 1024).toFixed(0)} KB. ` +
|
|
84
83
|
`Use line range parameters to read specific sections.]`);
|
|
85
84
|
}
|
|
86
85
|
const content = await fs.readFile(resolvedPath, encoding);
|