@build-astron-co/nimbus 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +628 -0
- package/bin/nimbus +38 -0
- package/package.json +80 -0
- package/src/__tests__/app.test.ts +76 -0
- package/src/__tests__/audit.test.ts +877 -0
- package/src/__tests__/circuit-breaker.test.ts +116 -0
- package/src/__tests__/cli-run.test.ts +115 -0
- package/src/__tests__/context-manager.test.ts +502 -0
- package/src/__tests__/context.test.ts +242 -0
- package/src/__tests__/enterprise.test.ts +401 -0
- package/src/__tests__/generator.test.ts +433 -0
- package/src/__tests__/hooks.test.ts +582 -0
- package/src/__tests__/init.test.ts +436 -0
- package/src/__tests__/intent-parser.test.ts +229 -0
- package/src/__tests__/llm-router.test.ts +209 -0
- package/src/__tests__/lsp.test.ts +293 -0
- package/src/__tests__/modes.test.ts +336 -0
- package/src/__tests__/permissions.test.ts +338 -0
- package/src/__tests__/serve.test.ts +275 -0
- package/src/__tests__/sessions.test.ts +227 -0
- package/src/__tests__/sharing.test.ts +288 -0
- package/src/__tests__/snapshots.test.ts +581 -0
- package/src/__tests__/state-db.test.ts +334 -0
- package/src/__tests__/stream-with-tools.test.ts +732 -0
- package/src/__tests__/subagents.test.ts +176 -0
- package/src/__tests__/system-prompt.test.ts +169 -0
- package/src/__tests__/tool-converter.test.ts +256 -0
- package/src/__tests__/tool-schemas.test.ts +397 -0
- package/src/__tests__/tools.test.ts +143 -0
- package/src/__tests__/version.test.ts +49 -0
- package/src/agent/compaction-agent.ts +227 -0
- package/src/agent/context-manager.ts +435 -0
- package/src/agent/context.ts +427 -0
- package/src/agent/deploy-preview.ts +426 -0
- package/src/agent/index.ts +68 -0
- package/src/agent/loop.ts +717 -0
- package/src/agent/modes.ts +429 -0
- package/src/agent/permissions.ts +466 -0
- package/src/agent/subagents/base.ts +116 -0
- package/src/agent/subagents/cost.ts +51 -0
- package/src/agent/subagents/explore.ts +42 -0
- package/src/agent/subagents/general.ts +54 -0
- package/src/agent/subagents/index.ts +102 -0
- package/src/agent/subagents/infra.ts +59 -0
- package/src/agent/subagents/security.ts +69 -0
- package/src/agent/system-prompt.ts +436 -0
- package/src/app.ts +122 -0
- package/src/audit/activity-log.ts +290 -0
- package/src/audit/compliance-checker.ts +540 -0
- package/src/audit/cost-tracker.ts +318 -0
- package/src/audit/index.ts +23 -0
- package/src/audit/security-scanner.ts +596 -0
- package/src/auth/guard.ts +75 -0
- package/src/auth/index.ts +56 -0
- package/src/auth/oauth.ts +455 -0
- package/src/auth/providers.ts +470 -0
- package/src/auth/sso.ts +113 -0
- package/src/auth/store.ts +505 -0
- package/src/auth/types.ts +187 -0
- package/src/build.ts +141 -0
- package/src/cli/index.ts +16 -0
- package/src/cli/init.ts +854 -0
- package/src/cli/openapi-spec.ts +356 -0
- package/src/cli/run.ts +237 -0
- package/src/cli/serve-auth.ts +80 -0
- package/src/cli/serve.ts +462 -0
- package/src/cli/web.ts +67 -0
- package/src/cli.ts +1417 -0
- package/src/clients/core-engine-client.ts +227 -0
- package/src/clients/enterprise-client.ts +334 -0
- package/src/clients/generator-client.ts +351 -0
- package/src/clients/git-client.ts +627 -0
- package/src/clients/github-client.ts +410 -0
- package/src/clients/helm-client.ts +504 -0
- package/src/clients/index.ts +80 -0
- package/src/clients/k8s-client.ts +497 -0
- package/src/clients/llm-client.ts +161 -0
- package/src/clients/rest-client.ts +130 -0
- package/src/clients/service-discovery.ts +33 -0
- package/src/clients/terraform-client.ts +482 -0
- package/src/clients/tools-client.ts +1843 -0
- package/src/clients/ws-client.ts +115 -0
- package/src/commands/analyze/index.ts +352 -0
- package/src/commands/apply/helm.ts +473 -0
- package/src/commands/apply/index.ts +213 -0
- package/src/commands/apply/k8s.ts +454 -0
- package/src/commands/apply/terraform.ts +582 -0
- package/src/commands/ask.ts +167 -0
- package/src/commands/audit/index.ts +238 -0
- package/src/commands/auth-cloud.ts +294 -0
- package/src/commands/auth-list.ts +134 -0
- package/src/commands/auth-profile.ts +121 -0
- package/src/commands/auth-status.ts +141 -0
- package/src/commands/aws/ec2.ts +501 -0
- package/src/commands/aws/iam.ts +397 -0
- package/src/commands/aws/index.ts +133 -0
- package/src/commands/aws/lambda.ts +396 -0
- package/src/commands/aws/rds.ts +439 -0
- package/src/commands/aws/s3.ts +439 -0
- package/src/commands/aws/vpc.ts +393 -0
- package/src/commands/aws-discover.ts +649 -0
- package/src/commands/aws-terraform.ts +805 -0
- package/src/commands/azure/aks.ts +376 -0
- package/src/commands/azure/functions.ts +253 -0
- package/src/commands/azure/index.ts +116 -0
- package/src/commands/azure/storage.ts +478 -0
- package/src/commands/azure/vm.ts +355 -0
- package/src/commands/billing/index.ts +256 -0
- package/src/commands/chat.ts +314 -0
- package/src/commands/config.ts +346 -0
- package/src/commands/cost/cloud-cost-estimator.ts +266 -0
- package/src/commands/cost/estimator.ts +79 -0
- package/src/commands/cost/index.ts +594 -0
- package/src/commands/cost/parsers/terraform.ts +273 -0
- package/src/commands/cost/parsers/types.ts +25 -0
- package/src/commands/cost/pricing/aws.ts +544 -0
- package/src/commands/cost/pricing/azure.ts +499 -0
- package/src/commands/cost/pricing/gcp.ts +396 -0
- package/src/commands/cost/pricing/index.ts +40 -0
- package/src/commands/demo.ts +250 -0
- package/src/commands/doctor.ts +794 -0
- package/src/commands/drift/index.ts +439 -0
- package/src/commands/explain.ts +277 -0
- package/src/commands/feedback.ts +389 -0
- package/src/commands/fix.ts +324 -0
- package/src/commands/fs/index.ts +402 -0
- package/src/commands/gcp/compute.ts +325 -0
- package/src/commands/gcp/functions.ts +271 -0
- package/src/commands/gcp/gke.ts +438 -0
- package/src/commands/gcp/iam.ts +344 -0
- package/src/commands/gcp/index.ts +129 -0
- package/src/commands/gcp/storage.ts +284 -0
- package/src/commands/generate-helm.ts +1249 -0
- package/src/commands/generate-k8s.ts +1560 -0
- package/src/commands/generate-terraform.ts +1460 -0
- package/src/commands/gh/index.ts +863 -0
- package/src/commands/git/index.ts +1343 -0
- package/src/commands/helm/index.ts +1126 -0
- package/src/commands/help.ts +539 -0
- package/src/commands/history.ts +142 -0
- package/src/commands/import.ts +868 -0
- package/src/commands/index.ts +367 -0
- package/src/commands/init.ts +1046 -0
- package/src/commands/k8s/index.ts +1137 -0
- package/src/commands/login.ts +631 -0
- package/src/commands/logout.ts +83 -0
- package/src/commands/onboarding.ts +228 -0
- package/src/commands/plan/display.ts +279 -0
- package/src/commands/plan/index.ts +599 -0
- package/src/commands/preview.ts +452 -0
- package/src/commands/questionnaire.ts +1270 -0
- package/src/commands/resume.ts +55 -0
- package/src/commands/team/index.ts +346 -0
- package/src/commands/template.ts +232 -0
- package/src/commands/tf/index.ts +1034 -0
- package/src/commands/upgrade.ts +550 -0
- package/src/commands/usage/index.ts +134 -0
- package/src/commands/version.ts +170 -0
- package/src/compat/index.ts +2 -0
- package/src/compat/runtime.ts +12 -0
- package/src/compat/sqlite.ts +107 -0
- package/src/config/index.ts +17 -0
- package/src/config/manager.ts +530 -0
- package/src/config/safety-policy.ts +358 -0
- package/src/config/schema.ts +125 -0
- package/src/config/types.ts +527 -0
- package/src/context/context-db.ts +199 -0
- package/src/demo/index.ts +349 -0
- package/src/demo/scenarios/full-journey.ts +229 -0
- package/src/demo/scenarios/getting-started.ts +127 -0
- package/src/demo/scenarios/helm-release.ts +341 -0
- package/src/demo/scenarios/k8s-deployment.ts +194 -0
- package/src/demo/scenarios/terraform-vpc.ts +170 -0
- package/src/demo/types.ts +92 -0
- package/src/engine/cost-estimator.ts +438 -0
- package/src/engine/diagram-generator.ts +256 -0
- package/src/engine/drift-detector.ts +902 -0
- package/src/engine/executor.ts +1035 -0
- package/src/engine/index.ts +76 -0
- package/src/engine/orchestrator.ts +636 -0
- package/src/engine/planner.ts +720 -0
- package/src/engine/safety.ts +743 -0
- package/src/engine/verifier.ts +770 -0
- package/src/enterprise/audit.ts +348 -0
- package/src/enterprise/auth.ts +270 -0
- package/src/enterprise/billing.ts +822 -0
- package/src/enterprise/index.ts +17 -0
- package/src/enterprise/teams.ts +443 -0
- package/src/generator/best-practices.ts +1608 -0
- package/src/generator/helm.ts +630 -0
- package/src/generator/index.ts +37 -0
- package/src/generator/intent-parser.ts +514 -0
- package/src/generator/kubernetes.ts +976 -0
- package/src/generator/terraform.ts +1867 -0
- package/src/history/index.ts +8 -0
- package/src/history/manager.ts +322 -0
- package/src/history/types.ts +34 -0
- package/src/hooks/config.ts +432 -0
- package/src/hooks/engine.ts +391 -0
- package/src/hooks/index.ts +4 -0
- package/src/llm/auth-bridge.ts +198 -0
- package/src/llm/circuit-breaker.ts +140 -0
- package/src/llm/config-loader.ts +201 -0
- package/src/llm/cost-calculator.ts +171 -0
- package/src/llm/index.ts +8 -0
- package/src/llm/model-aliases.ts +115 -0
- package/src/llm/provider-registry.ts +63 -0
- package/src/llm/providers/anthropic.ts +433 -0
- package/src/llm/providers/bedrock.ts +477 -0
- package/src/llm/providers/google.ts +405 -0
- package/src/llm/providers/ollama.ts +767 -0
- package/src/llm/providers/openai-compatible.ts +340 -0
- package/src/llm/providers/openai.ts +328 -0
- package/src/llm/providers/openrouter.ts +338 -0
- package/src/llm/router.ts +1035 -0
- package/src/llm/types.ts +232 -0
- package/src/lsp/client.ts +298 -0
- package/src/lsp/languages.ts +116 -0
- package/src/lsp/manager.ts +278 -0
- package/src/mcp/client.ts +402 -0
- package/src/mcp/index.ts +5 -0
- package/src/mcp/manager.ts +133 -0
- package/src/nimbus.ts +214 -0
- package/src/plugins/index.ts +27 -0
- package/src/plugins/loader.ts +334 -0
- package/src/plugins/manager.ts +376 -0
- package/src/plugins/types.ts +284 -0
- package/src/scanners/cicd-scanner.ts +258 -0
- package/src/scanners/cloud-scanner.ts +466 -0
- package/src/scanners/framework-scanner.ts +469 -0
- package/src/scanners/iac-scanner.ts +388 -0
- package/src/scanners/index.ts +539 -0
- package/src/scanners/language-scanner.ts +276 -0
- package/src/scanners/package-manager-scanner.ts +277 -0
- package/src/scanners/types.ts +172 -0
- package/src/sessions/manager.ts +365 -0
- package/src/sessions/types.ts +44 -0
- package/src/sharing/sync.ts +296 -0
- package/src/sharing/viewer.ts +97 -0
- package/src/snapshots/index.ts +2 -0
- package/src/snapshots/manager.ts +530 -0
- package/src/state/artifacts.ts +147 -0
- package/src/state/audit.ts +137 -0
- package/src/state/billing.ts +240 -0
- package/src/state/checkpoints.ts +117 -0
- package/src/state/config.ts +67 -0
- package/src/state/conversations.ts +14 -0
- package/src/state/credentials.ts +154 -0
- package/src/state/db.ts +58 -0
- package/src/state/index.ts +26 -0
- package/src/state/messages.ts +115 -0
- package/src/state/projects.ts +123 -0
- package/src/state/schema.ts +236 -0
- package/src/state/sessions.ts +147 -0
- package/src/state/teams.ts +200 -0
- package/src/telemetry.ts +108 -0
- package/src/tools/aws-ops.ts +952 -0
- package/src/tools/azure-ops.ts +579 -0
- package/src/tools/file-ops.ts +593 -0
- package/src/tools/gcp-ops.ts +625 -0
- package/src/tools/git-ops.ts +773 -0
- package/src/tools/github-ops.ts +799 -0
- package/src/tools/helm-ops.ts +943 -0
- package/src/tools/index.ts +17 -0
- package/src/tools/k8s-ops.ts +819 -0
- package/src/tools/schemas/converter.ts +184 -0
- package/src/tools/schemas/devops.ts +612 -0
- package/src/tools/schemas/index.ts +73 -0
- package/src/tools/schemas/standard.ts +1144 -0
- package/src/tools/schemas/types.ts +705 -0
- package/src/tools/terraform-ops.ts +862 -0
- package/src/types/ambient.d.ts +193 -0
- package/src/types/config.ts +83 -0
- package/src/types/drift.ts +116 -0
- package/src/types/enterprise.ts +335 -0
- package/src/types/index.ts +20 -0
- package/src/types/plan.ts +44 -0
- package/src/types/request.ts +65 -0
- package/src/types/response.ts +54 -0
- package/src/types/service.ts +51 -0
- package/src/ui/App.tsx +997 -0
- package/src/ui/DeployPreview.tsx +169 -0
- package/src/ui/Header.tsx +68 -0
- package/src/ui/InputBox.tsx +350 -0
- package/src/ui/MessageList.tsx +585 -0
- package/src/ui/PermissionPrompt.tsx +151 -0
- package/src/ui/StatusBar.tsx +158 -0
- package/src/ui/ToolCallDisplay.tsx +409 -0
- package/src/ui/chat-ui.ts +853 -0
- package/src/ui/index.ts +33 -0
- package/src/ui/ink/index.ts +711 -0
- package/src/ui/streaming.ts +176 -0
- package/src/ui/types.ts +57 -0
- package/src/utils/analytics.ts +72 -0
- package/src/utils/cost-warning.ts +27 -0
- package/src/utils/env.ts +46 -0
- package/src/utils/errors.ts +69 -0
- package/src/utils/event-bus.ts +38 -0
- package/src/utils/index.ts +24 -0
- package/src/utils/logger.ts +171 -0
- package/src/utils/rate-limiter.ts +121 -0
- package/src/utils/service-auth.ts +49 -0
- package/src/utils/validation.ts +53 -0
- package/src/version.ts +4 -0
- package/src/watcher/index.ts +163 -0
- package/src/wizard/approval.ts +383 -0
- package/src/wizard/index.ts +25 -0
- package/src/wizard/prompts.ts +338 -0
- package/src/wizard/types.ts +171 -0
- package/src/wizard/ui.ts +556 -0
- package/src/wizard/wizard.ts +304 -0
- package/tsconfig.json +24 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Batch Conversion Utilities for Provider-Specific Tool Formats
|
|
3
|
+
*
|
|
4
|
+
* This module re-exports the individual converter functions from
|
|
5
|
+
* {@link module:tools/schemas/types} and adds convenience functions for
|
|
6
|
+
* converting arrays of {@link ToolDefinition}s to each supported LLM
|
|
7
|
+
* provider's expected tool format in a single call.
|
|
8
|
+
*
|
|
9
|
+
* The {@link toProviderFormat} function additionally accepts a
|
|
10
|
+
* {@link Provider} discriminator so callers can defer the choice of
|
|
11
|
+
* target format to runtime configuration.
|
|
12
|
+
*
|
|
13
|
+
* @module tools/schemas/converter
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import {
|
|
17
|
+
toAnthropicTool,
|
|
18
|
+
toOpenAITool,
|
|
19
|
+
toGoogleTool,
|
|
20
|
+
zodToJsonSchema,
|
|
21
|
+
type ToolDefinition,
|
|
22
|
+
type AnthropicTool,
|
|
23
|
+
type OpenAITool,
|
|
24
|
+
type GoogleTool,
|
|
25
|
+
} from './types';
|
|
26
|
+
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Re-exports -- individual converters and provider-specific types
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
|
|
31
|
+
export { toAnthropicTool, toOpenAITool, toGoogleTool, zodToJsonSchema };
|
|
32
|
+
export type { AnthropicTool, OpenAITool, GoogleTool };
|
|
33
|
+
|
|
34
|
+
// ---------------------------------------------------------------------------
|
|
35
|
+
// Provider Discriminator
|
|
36
|
+
// ---------------------------------------------------------------------------
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Union of all LLM provider identifiers that Nimbus supports.
|
|
40
|
+
*
|
|
41
|
+
* | Provider | Wire format used |
|
|
42
|
+
* | ------------------- | ------------------------- |
|
|
43
|
+
* | `anthropic` | Anthropic Messages API |
|
|
44
|
+
* | `openai` | OpenAI function-calling |
|
|
45
|
+
* | `google` | Google Generative AI |
|
|
46
|
+
* | `ollama` | OpenAI-compatible |
|
|
47
|
+
* | `openrouter` | OpenAI-compatible |
|
|
48
|
+
* | `bedrock` | Anthropic (Claude models) |
|
|
49
|
+
* | `openai-compatible` | OpenAI function-calling |
|
|
50
|
+
*/
|
|
51
|
+
export type Provider =
|
|
52
|
+
| 'anthropic'
|
|
53
|
+
| 'openai'
|
|
54
|
+
| 'google'
|
|
55
|
+
| 'ollama'
|
|
56
|
+
| 'openrouter'
|
|
57
|
+
| 'bedrock'
|
|
58
|
+
| 'openai-compatible';
|
|
59
|
+
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
// Batch Conversion Functions
|
|
62
|
+
// ---------------------------------------------------------------------------
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Convert an array of tool definitions to Anthropic Messages API format.
|
|
66
|
+
*
|
|
67
|
+
* Each {@link ToolDefinition} is individually converted via
|
|
68
|
+
* {@link toAnthropicTool} and the results are returned as an array.
|
|
69
|
+
*
|
|
70
|
+
* @param tools - The tool definitions to convert.
|
|
71
|
+
* @returns An array of {@link AnthropicTool} objects ready for the API.
|
|
72
|
+
*/
|
|
73
|
+
export function toAnthropicFormat(tools: ToolDefinition[]): AnthropicTool[] {
|
|
74
|
+
return tools.map(toAnthropicTool);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Convert an array of tool definitions to OpenAI function-calling format.
|
|
79
|
+
*
|
|
80
|
+
* Each {@link ToolDefinition} is individually converted via
|
|
81
|
+
* {@link toOpenAITool} and the results are returned as an array.
|
|
82
|
+
*
|
|
83
|
+
* @param tools - The tool definitions to convert.
|
|
84
|
+
* @returns An array of {@link OpenAITool} objects ready for the API.
|
|
85
|
+
*/
|
|
86
|
+
export function toOpenAIFormat(tools: ToolDefinition[]): OpenAITool[] {
|
|
87
|
+
return tools.map(toOpenAITool);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Convert an array of tool definitions to Google Generative AI format.
|
|
92
|
+
*
|
|
93
|
+
* Unlike Anthropic and OpenAI, Google expects all function declarations
|
|
94
|
+
* to be bundled inside a single tool object with a `functionDeclarations`
|
|
95
|
+
* array. This function delegates to {@link toGoogleTool} which handles
|
|
96
|
+
* that bundling.
|
|
97
|
+
*
|
|
98
|
+
* @param tools - The tool definitions to convert.
|
|
99
|
+
* @returns A single {@link GoogleTool} containing all declarations.
|
|
100
|
+
*/
|
|
101
|
+
export function toGoogleFormat(tools: ToolDefinition[]): GoogleTool {
|
|
102
|
+
return toGoogleTool(tools);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// ---------------------------------------------------------------------------
|
|
106
|
+
// Provider-Aware Conversion
|
|
107
|
+
// ---------------------------------------------------------------------------
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Convert an array of tool definitions to the wire format expected by a
|
|
111
|
+
* specific LLM provider.
|
|
112
|
+
*
|
|
113
|
+
* This is the primary entry point for code that determines the target
|
|
114
|
+
* provider at runtime (e.g. from user configuration). The mapping is:
|
|
115
|
+
*
|
|
116
|
+
* - `'anthropic'` and `'bedrock'` produce {@link AnthropicTool}[] (Bedrock
|
|
117
|
+
* uses Anthropic format for Claude models).
|
|
118
|
+
* - `'openai'`, `'ollama'`, `'openrouter'`, and `'openai-compatible'`
|
|
119
|
+
* produce {@link OpenAITool}[].
|
|
120
|
+
* - `'google'` produces a single {@link GoogleTool} object.
|
|
121
|
+
*
|
|
122
|
+
* If an unrecognized provider string is passed (possible when new
|
|
123
|
+
* providers are added before this function is updated), the function
|
|
124
|
+
* falls back to OpenAI format as it is the most widely supported.
|
|
125
|
+
*
|
|
126
|
+
* @param tools - The tool definitions to convert.
|
|
127
|
+
* @param provider - The target LLM provider identifier.
|
|
128
|
+
* @returns The converted tools in the provider-specific format.
|
|
129
|
+
*/
|
|
130
|
+
export function toProviderFormat(
|
|
131
|
+
tools: ToolDefinition[],
|
|
132
|
+
provider: Provider
|
|
133
|
+
): AnthropicTool[] | OpenAITool[] | GoogleTool {
|
|
134
|
+
switch (provider) {
|
|
135
|
+
case 'anthropic':
|
|
136
|
+
return toAnthropicFormat(tools);
|
|
137
|
+
|
|
138
|
+
case 'openai':
|
|
139
|
+
case 'ollama':
|
|
140
|
+
case 'openrouter':
|
|
141
|
+
case 'openai-compatible':
|
|
142
|
+
return toOpenAIFormat(tools);
|
|
143
|
+
|
|
144
|
+
case 'google':
|
|
145
|
+
return toGoogleFormat(tools);
|
|
146
|
+
|
|
147
|
+
case 'bedrock':
|
|
148
|
+
// Bedrock uses Anthropic format for Claude models
|
|
149
|
+
return toAnthropicFormat(tools);
|
|
150
|
+
|
|
151
|
+
default: {
|
|
152
|
+
// Exhaustive check: if a new Provider variant is added but not
|
|
153
|
+
// handled above, TypeScript will flag this assignment as an error.
|
|
154
|
+
const _exhaustive: never = provider;
|
|
155
|
+
void _exhaustive;
|
|
156
|
+
|
|
157
|
+
// Default to OpenAI format (most widely supported)
|
|
158
|
+
return toOpenAIFormat(tools);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
// ---------------------------------------------------------------------------
|
|
164
|
+
// Utility Helpers
|
|
165
|
+
// ---------------------------------------------------------------------------
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Extract the names of all tool definitions in the given array.
|
|
169
|
+
*
|
|
170
|
+
* Useful for logging, permission checks, or building tool-name allow/deny
|
|
171
|
+
* lists without pulling in the full definition objects.
|
|
172
|
+
*
|
|
173
|
+
* @param tools - The tool definitions to extract names from.
|
|
174
|
+
* @returns An array of tool name strings, preserving input order.
|
|
175
|
+
*
|
|
176
|
+
* @example
|
|
177
|
+
* ```ts
|
|
178
|
+
* const names = getToolNames(registry.getAll());
|
|
179
|
+
* // ['read_file', 'write_file', 'terraform_apply']
|
|
180
|
+
* ```
|
|
181
|
+
*/
|
|
182
|
+
export function getToolNames(tools: ToolDefinition[]): string[] {
|
|
183
|
+
return tools.map(t => t.name);
|
|
184
|
+
}
|