(_ bool)
| 485 | } |
| 486 | |
| 487 | func createEnvironmentListTool(_ bool) *Tool { |
| 488 | return &Tool{ |
| 489 | Definition: newRepositoryTool( |
| 490 | "environment_list", |
| 491 | "List available environments", |
| 492 | ), |
| 493 | Handler: func(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) { |
| 494 | repo, err := openRepository(ctx, request) |
| 495 | if err != nil { |
| 496 | return nil, err |
| 497 | } |
| 498 | envInfos, err := repo.List(ctx) |
| 499 | if err != nil { |
| 500 | return nil, fmt.Errorf("invalid source: %w", err) |
| 501 | } |
| 502 | |
| 503 | // Convert EnvironmentInfo slice to EnvironmentResponse slice |
| 504 | responses := make([]EnvironmentResponse, len(envInfos)) |
| 505 | for i, envInfo := range envInfos { |
| 506 | responses[i] = *environmentResponseFromEnvInfo(envInfo) |
| 507 | } |
| 508 | |
| 509 | out, err := json.Marshal(responses) |
| 510 | if err != nil { |
| 511 | return nil, err |
| 512 | } |
| 513 | |
| 514 | // Add warning message for LLMs |
| 515 | result := string(out) + "\n\nDO NOT change environments without explicit permission from the user" |
| 516 | return mcp.NewToolResultText(result), nil |
| 517 | }, |
| 518 | } |
| 519 | } |
| 520 | |
| 521 | func createEnvironmentRunCmdTool(singleTenant bool) *Tool { |
| 522 | return &Tool{ |
no test coverage detected