This is an automated email from the ASF dual-hosted git repository.

zhongxjian pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-kubernetes.git


The following commit(s) were added to refs/heads/master by this push:
     new fdcf1f51 feature: remove dubboctl seek subcommand (#874)
fdcf1f51 is described below

commit fdcf1f518f976e9c6d59deb628dffdaf38208e01
Author: Joe Zhong <[email protected]>
AuthorDate: Tue Mar 10 01:03:37 2026 +0800

    feature: remove dubboctl seek subcommand (#874)
---
 dubboctl/cmd/root.go        |   2 -
 dubboctl/cmd/seek.go        | 253 --------------------
 dubboctl/pkg/chat/openai.go | 559 --------------------------------------------
 go.mod                      |  12 +-
 go.sum                      | 142 +----------
 5 files changed, 7 insertions(+), 961 deletions(-)

diff --git a/dubboctl/cmd/root.go b/dubboctl/cmd/root.go
index 7b34e7b9..1db0e298 100644
--- a/dubboctl/cmd/root.go
+++ b/dubboctl/cmd/root.go
@@ -144,8 +144,6 @@ func GetRootCmd(args []string) *cobra.Command {
        rootCmd.AddCommand(imageCmd)
        hideFlags(imageCmd, ChartFlag)
 
-       rootCmd.AddCommand(SeekCmd())
-
        rootCmd.AddCommand(version.NewVersionCommand())
 
        return rootCmd
diff --git a/dubboctl/cmd/seek.go b/dubboctl/cmd/seek.go
deleted file mode 100644
index b6d32c3f..00000000
--- a/dubboctl/cmd/seek.go
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements.  See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package cmd
-
-import (
-       "bufio"
-       "context"
-       "fmt"
-       "github.com/apache/dubbo-kubernetes/dubboctl/pkg/chat"
-       "github.com/apache/dubbo-kubernetes/operator/cmd/cluster"
-       "github.com/chzyer/readline"
-       "github.com/spf13/cobra"
-       "github.com/tmc/langchaingo/chains"
-       "github.com/tmc/langchaingo/llms"
-       llmopenai "github.com/tmc/langchaingo/llms/openai"
-       "github.com/tmc/langchaingo/memory"
-       "os"
-       "strings"
-
-       "time"
-)
-
-func SeekCmd() *cobra.Command {
-       rootArgs := &cluster.RootArgs{}
-       gpt := chatGPTCmd()
-       s := &cobra.Command{
-               Use:   "seek",
-               Short: "Seek help from a large-scale AI model.",
-       }
-       cluster.AddFlags(s, rootArgs)
-       cluster.AddFlags(gpt, rootArgs)
-       s.AddCommand(gpt)
-       return s
-}
-
-func chatGPTCmd() *cobra.Command {
-       gpt := &cobra.Command{
-               Use:   "chatgpt",
-               Short: "Start an interactive ChatGPT session in your terminal",
-               Args:  cobra.ExactArgs(0),
-               Run: func(cmd *cobra.Command, args []string) {
-                       runChatGPT()
-               },
-       }
-       return gpt
-}
-
-func runChatGPT() {
-       chatMemory := memory.NewConversationBuffer()
-       llmClient, err := chat.NewOpenAIClient()
-       if err != nil {
-               fmt.Println("OPENAI_API_KEY is not set")
-               return
-       }
-       chain := chains.NewConversation(llmClient, chatMemory)
-
-       rl, err := readline.NewEx(&readline.Config{
-               Prompt:      "\033[1m\033[94m⌘ Dubboctl AI >\033[0m ",
-               HistoryFile: "/tmp/dubboctl_ai.history",
-               AutoComplete: readline.NewPrefixCompleter(
-                       readline.PcItem("sdk"),
-                       readline.PcItem("image"),
-                       readline.PcItem("repo"),
-                       readline.PcItem("exit"),
-               ),
-               InterruptPrompt: "^C",
-               EOFPrompt:       "exit",
-       })
-       if err != nil {
-               fmt.Fprintln(os.Stderr, "Unable to initialize command line:", 
err)
-               os.Exit(1)
-       }
-       defer rl.Close()
-
-       typewriter(`Welcome to Dubboctl AI, your command-line assistant!
-
-  reset Resets the conversation context
-
-  exit Exits the program
-
-Example:
-  1. I want to create a Go project named dubbogo-application and use the 
common template library.
-  2. I want to build an image named john/testapp:latest.
-  3. I want to view the list of template libraries.
-  4. I want to add a template library named simple and located at 
https://example.com.
-  5. I want to delete a template library named simple.
-  6. I want to deploy an image named john/testapp:latest, with the default 
namespace and port 8080.
-  7. I want to delete the image. `, 20*time.Millisecond)
-
-       prompt := `Introduce myself as the command line assistant responsible 
for the development of Dubboctl`
-       resp, err := llmClient.Call(context.TODO(), prompt)
-       if err != nil {
-               fmt.Printf("call failed:%v\n", err)
-               return
-       }
-       typewriter(resp, 20*time.Millisecond)
-
-       for {
-               line, err := rl.Readline()
-               if err != nil {
-                       fmt.Println("Exit Program")
-                       break
-               }
-               input := strings.TrimSpace(line)
-               if input == "" {
-                       continue
-               }
-
-               parts := strings.Fields(input)
-               cmd := parts[0]
-               var args string
-               if len(parts) > 1 {
-                       args = strings.Join(parts[1:], " ")
-               }
-
-               switch cmd {
-               case "exit":
-                       fmt.Print("Confirm exit?(y/N) ")
-                       ans, _ := bufio.NewReader(os.Stdin).ReadString('\n')
-                       if strings.ToLower(strings.TrimSpace(ans)) == "y" {
-                               fmt.Println("goodbye!")
-                               return
-                       }
-
-               case "reset":
-                       clearScreen()
-                       chatMemory = memory.NewConversationBuffer()
-                       chain = chains.NewConversation(llmClient, chatMemory)
-                       fmt.Println("Conversation context reset.")
-
-               case "sdk", "image", "repo":
-                       if args == "" {
-                               fmt.Printf("Please provide content after '%s', 
or type help to see examples.\n", cmd)
-                               continue
-                       }
-                       fmt.Print("AI is thinking...")
-                       time.Sleep(200 * time.Millisecond)
-
-                       var result string
-                       switch cmd {
-                       case "sdk":
-                               result = chatGPTFromSdk(args)
-                       case "image":
-                               result = chatGPTFromImage(args)
-                       case "repo":
-                               result = chatGPTFromRepo(args)
-                       }
-
-                       fmt.Println()
-                       typewriter(result, 20*time.Millisecond)
-                       continue
-
-               default:
-                       _, err := chains.Run(context.Background(), chain, input)
-                       if err != nil {
-                               fmt.Printf("AI processing errors: %v\n", err)
-                               continue
-                       }
-
-                       intent, err := classifyIntent(input, llmClient)
-                       if err != nil {
-                               fmt.Printf("I can't tell what you meant, please 
be more specific:%v\n", err)
-                               continue
-                       }
-
-                       var result string
-                       switch intent {
-                       case "sdk":
-                               result = chatGPTFromSdk(input)
-                       case "image":
-                               result = chatGPTFromImage(input)
-                       case "repo":
-                               result = chatGPTFromRepo(input)
-                       default:
-                               result = "I don't understand your request at 
the moment."
-                       }
-
-                       typewriter(result, 20*time.Millisecond)
-               }
-       }
-}
-
-func clearScreen() {
-       fmt.Print("\033[H\033[2J")
-}
-
-func typewriter(text string, delay time.Duration) {
-       for _, r := range text {
-               fmt.Print(string(r))
-               time.Sleep(delay)
-       }
-       fmt.Println()
-}
-
-func chatGPTFromSdk(input string) string {
-       client, err := chat.NewOpenAIClient()
-       if err != nil {
-               return err.Error()
-       }
-       resp := chat.SdkFunctionCall(input, client)
-       return resp
-}
-
-func chatGPTFromImage(input string) string {
-       client, err := chat.NewOpenAIClient()
-       if err != nil {
-               return err.Error()
-       }
-       resp := chat.ImageFunctionCall(input, client)
-       return resp
-}
-
-func chatGPTFromRepo(input string) string {
-       client, err := chat.NewOpenAIClient()
-       if err != nil {
-               return err.Error()
-       }
-       resp := chat.RepoFunctionCall(input, client)
-       return resp
-}
-
-func classifyIntent(input string, client *llmopenai.LLM) (string, error) {
-       messages := []llms.MessageContent{
-               llms.TextParts(llms.ChatMessageTypeSystem, `You are an intent 
recognition assistant. The user's intent can only be one of three: "sdk", 
"image", or "repo". Return only one of these, no more. For example:
-"I want to generate a project" → sdk
-"I want to build an image" → image
-"I want to view the template library" → repo`),
-               llms.TextParts(llms.ChatMessageTypeHuman, input),
-       }
-       resp, err := client.GenerateContent(context.TODO(), messages)
-       if err != nil {
-               return "", err
-       }
-       intent := strings.TrimSpace(resp.Choices[0].Content)
-       if intent == "sdk" || intent == "image" || intent == "repo" {
-               return intent, nil
-       }
-       return "", fmt.Errorf("Unclear intentions: %s", intent)
-}
diff --git a/dubboctl/pkg/chat/openai.go b/dubboctl/pkg/chat/openai.go
deleted file mode 100644
index 9f05756e..00000000
--- a/dubboctl/pkg/chat/openai.go
+++ /dev/null
@@ -1,559 +0,0 @@
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements.  See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License.  You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package chat
-
-import (
-       "context"
-       "encoding/json"
-       "errors"
-       "fmt"
-       "github.com/sashabaranov/go-openai"
-       "github.com/sashabaranov/go-openai/jsonschema"
-       "github.com/tmc/langchaingo/llms"
-       llmopenai "github.com/tmc/langchaingo/llms/openai"
-       "os/exec"
-)
-
-func NewOpenAIClient() (*llmopenai.LLM, error) {
-       llmClient, err := llmopenai.New()
-       if err != nil {
-               return nil, err
-       }
-       return llmClient, nil
-}
-
-func SdkFunctionCall(input string, client *llmopenai.LLM) string {
-       f := llms.FunctionDefinition{
-               Name:        "sdkResource",
-               Description: "The sdk subcommand generates an sdk sample 
provided by Dubbo supported languages.",
-               Parameters: jsonschema.Definition{
-                       Type: jsonschema.Object,
-                       Properties: map[string]jsonschema.Definition{
-                               "language": {
-                                       Type:        jsonschema.String,
-                                       Description: "A language specified by 
user input, such as go or java",
-                               },
-                               "template": {
-                                       Type:        jsonschema.String,
-                                       Description: "Based on user input, a 
user-specified template library, such as common",
-                               },
-                               "dirname": {
-                                       Type:        jsonschema.String,
-                                       Description: "The project name 
specified by the user, such as mydubbo",
-                               },
-                       },
-                       Required: []string{"language", "template", "dirname"},
-               },
-       }
-
-       t := []llms.Tool{
-               {
-                       Type:     string(openai.ToolTypeFunction),
-                       Function: &f,
-               },
-       }
-
-       messages := []llms.MessageContent{
-               llms.TextParts(llms.ChatMessageTypeSystem, `
-You are a Dubbo SDK project creation assistant. When a user requests you to 
create or generate a project, please help complete the following parameters:
-Please complete according to the following rules:
-
-1. If the user only provides a language (such as "go"), you can:
-- Default template to "common"
-- Default directory name to "app"
-
-2. If the user provides a language and directory name but does not specify a 
template:
-- Default template to "common"
-
-3. If the user does not specify anything (for example, only "Help me create or 
generate related keywords"), you can default to:
-- language: "go"
-- template: "common"
-- dirname: You randomly generate a project name.
-
-Regardless of which default values you use, please clearly explain the 
defaults in your response.
-
-And guide the user to view the template repository using the command dubboctl 
repo list.
-
-Note: If the user's question is not in the context of creating or generating a 
project (such as regarding deployment or images), do not respond.
-`),
-               llms.TextParts(llms.ChatMessageTypeHuman, input),
-       }
-
-       resp, err := client.GenerateContent(context.TODO(), messages, 
llms.WithTools(t))
-
-       msg := resp.Choices[0].ToolCalls
-       if len(msg) != 1 {
-               return "I don't fully understand what you mean. Do you want to 
create a Go or Java SDK project?"
-       }
-
-       res, err := call(client, msg[0].FunctionCall.Name, 
msg[0].FunctionCall.Arguments)
-       if err != nil {
-               return err.Error()
-       }
-       return res
-}
-
-func ImageFunctionCall(input string, client *llmopenai.LLM) string {
-       f1 := llms.FunctionDefinition{
-               Name:        "imageHubResource",
-               Description: "The hub subcommand used to build and push images",
-               Parameters: jsonschema.Definition{
-                       Type: jsonschema.Object,
-                       Properties: map[string]jsonschema.Definition{
-                               "image_info": {
-                                       Type:        jsonschema.String,
-                                       Description: "Mirror information 
entered by the user, such as john/testapp:latest",
-                               },
-                       },
-                       Required: []string{"image_info"},
-               },
-       }
-       f2 := llms.FunctionDefinition{
-               Name:        "imageDeployResource",
-               Description: "The deploy subcommand used to deploy to cluster",
-               Parameters: jsonschema.Definition{
-                       Type: jsonschema.Object,
-                       Properties: map[string]jsonschema.Definition{
-                               "deploy_type": {
-                                       Type:        jsonschema.String,
-                                       Description: "Judge user deployment 
operations, such as create or --delete",
-                               },
-                               "image_info": {
-                                       Type:        jsonschema.String,
-                                       Description: "Deployment image 
information entered by the user, such as john/testapp:latest",
-                               },
-                               "namespace": {
-                                       Type:        jsonschema.String,
-                                       Description: "The deployment namespace 
entered by the user, such as default",
-                               },
-                               "port": {
-                                       Type:        jsonschema.String,
-                                       Description: "Deployment port entered 
by the user, for example 80",
-                               },
-                       },
-                       Required: []string{"deploy_type", "image_info", 
"namespace", "port"},
-               },
-       }
-
-       t := []llms.Tool{
-               {Type: string(openai.ToolTypeFunction), Function: &f1},
-               {Type: string(openai.ToolTypeFunction), Function: &f2},
-       }
-
-       messages := []llms.MessageContent{
-               llms.TextParts(llms.ChatMessageTypeSystem, `
-You are an image assistant for the Dubbo SDK project, and can help users 
perform the following operations:
-
-1. Build or push an image (using imageHubResource)
-
-2. Deploy or delete an image (using imageDeployResource)
-
-Determine which function to call based on user input:
-- If the user mentions "build," "package," or "push," call imageHubResource 
with the image_info parameter.
-- If the user mentions "deploy," "launch," or "run," call imageDeployResource 
with the following parameters:
-- deploy_type: Deployment type, create for deployment
-- image_info: Image name
-- namespace: Deployment namespace
-- port: Deployment port.
-- If the user mentions "delete," delete for deletion; call imageDeployResource 
to directly delete.
-
-Note:
-- If the user does not provide a deploy_type.
-- If the user does not provide a namespace, "default" is used by default.
-- If the user does not provide a port, port 80 is used by default.
-- If the user's intent is unclear, please ask for clarification.
-- Please kindly guide users to fill in the missing information.
-`),
-               llms.TextParts(llms.ChatMessageTypeHuman, input),
-       }
-
-       resp, err := client.GenerateContent(context.TODO(), messages, 
llms.WithTools(t))
-
-       msg := resp.Choices[0].ToolCalls
-
-       if len(msg) != 1 {
-               if resp.Choices[0].Content != "" {
-                       return resp.Choices[0].Content
-               }
-               return "I don't fully understand what you mean, do you want to 
build or push an image or deploy or delete an image?"
-       }
-
-       res, err := call(client, msg[0].FunctionCall.Name, 
msg[0].FunctionCall.Arguments)
-       if err != nil {
-               return err.Error()
-       }
-       return res
-}
-
-func RepoFunctionCall(input string, client *llmopenai.LLM) string {
-       f := llms.FunctionDefinition{
-               Name:        "repoResource",
-               Description: "The repo command Manage existing Dubbo SDK module 
libraries",
-               Parameters: jsonschema.Definition{
-                       Type: jsonschema.Object,
-                       Properties: map[string]jsonschema.Definition{
-                               "name": {
-                                       Type:        jsonschema.String,
-                                       Description: "User-entered template 
library name operation",
-                               },
-                               "url": {
-                                       Type:        jsonschema.String,
-                                       Description: "User-entered template 
library address operation",
-                               },
-                               "repo_type": {
-                                       Type:        jsonschema.String,
-                                       Description: "Template library 
operations for user input",
-                               },
-                       },
-                       Required: []string{"repo_type"},
-               },
-       }
-
-       t := []llms.Tool{
-               {
-                       Type:     string(openai.ToolTypeFunction),
-                       Function: &f,
-               },
-       }
-
-       messages := []llms.MessageContent{
-               llms.TextParts(llms.ChatMessageTypeSystem, "You are an 
assistant who helps users manage template libraries, such as dubboctl repo 
add/list/remove operations"),
-               llms.TextParts(llms.ChatMessageTypeHuman, input),
-       }
-
-       resp, err := client.GenerateContent(context.TODO(), messages, 
llms.WithTools(t))
-
-       msg := resp.Choices[0].ToolCalls
-       if len(msg) != 1 {
-               if resp.Choices[0].Content != "" {
-                       return resp.Choices[0].Content
-               }
-               return "I don't fully understand what you mean. Do you want to 
add, view, or delete a template library?"
-       }
-
-       res, err := call(client, msg[0].FunctionCall.Name, 
msg[0].FunctionCall.Arguments)
-       if err != nil {
-               return err.Error()
-       }
-       return res
-}
-
-func call(client *llmopenai.LLM, name, argument string) (string, error) {
-       if name == "sdkResource" {
-               sdkParams := struct {
-                       Language string `json:"language"`
-                       Template string `json:"template"`
-                       Dirname  string `json:"dirname"`
-               }{}
-               err := json.Unmarshal([]byte(argument), &sdkParams)
-               if err != nil {
-                       return "", err
-               }
-               if sdkParams.Language == "" || sdkParams.Template == "" || 
sdkParams.Dirname == "" {
-                       prompt := fmt.Sprintf(
-                               "The user wants to create a Dubbo SDK project, 
but the parameters are incomplete. Please fill in the missing fields with 
appropriate default values. Existing parameters: language=%s, template=%s, 
dirname=%s. Please return a complete JSON.",
-                               sdkParams.Language, sdkParams.Template, 
sdkParams.Dirname,
-                       )
-
-                       resp, err := client.Call(context.TODO(), prompt)
-                       if err != nil {
-                               return "", fmt.Errorf("large model completion 
failed: %v", err)
-                       }
-
-                       err = json.Unmarshal([]byte(resp), &sdkParams)
-                       if err != nil {
-                               return "", fmt.Errorf("invalid JSON generated 
by large model: %v", err)
-                       }
-               }
-
-               return sdkResource(sdkParams.Language, sdkParams.Template, 
sdkParams.Dirname)
-       }
-       if name == "imageHubResource" {
-               imageParams := struct {
-                       ImageInfo string `json:"image_info"`
-               }{}
-               err := json.Unmarshal([]byte(argument), &imageParams)
-               if err != nil {
-                       return "", err
-               }
-               if imageParams.ImageInfo == "" {
-                       prompt := fmt.Sprintf(
-                               "The user wants to build the Dubbo SDK project 
into a container image, but the parameters require interactive mode. If the 
user does not fill in the information, an error will occur, for example: Error: 
failed to build the application: invalid image name '': image is a required 
parameter. Existing parameter: imageInfo=%s. Please return the complete JSON.", 
imageParams.ImageInfo,
-                       )
-
-                       resp, err := client.Call(context.TODO(), prompt)
-                       if err != nil {
-                               return "", fmt.Errorf("large model completion 
failed: %v", err)
-                       }
-
-                       err = json.Unmarshal([]byte(resp), &imageParams)
-                       if err != nil {
-                               return "", fmt.Errorf("invalid JSON generated 
by large model: %v", err)
-                       }
-               }
-
-               return imageHubResource(imageParams.ImageInfo)
-       }
-       if name == "imageDeployResource" {
-               imageParams := struct {
-                       ImageInfo  string `json:"image_info"`
-                       Namespace  string `json:"namespace"`
-                       Port       string `json:"port"`
-                       DeployType string `json:"deploy_type"`
-               }{}
-               err := json.Unmarshal([]byte(argument), &imageParams)
-               if err != nil {
-                       return "", err
-               }
-               if imageParams.DeployType == "" || (imageParams.DeployType == 
"create" && (imageParams.Port == "" || imageParams.Namespace == "" || 
imageParams.ImageInfo == "")) || (imageParams.DeployType == "delete") {
-                       prompt := fmt.Sprintf("If a user wants to deploy an 
image to a cluster, the create operation should complete the following fields: 
port=%s namespace=%s, imageInfo=%s. The delete operation will directly delete 
the image and return a JSON format.",
-                               imageParams.Port, imageParams.Namespace, 
imageParams.ImageInfo)
-                       resp, err := client.Call(context.TODO(), prompt)
-                       if err != nil {
-                               return "", fmt.Errorf("large model completion 
failed: %v", err)
-                       }
-                       err = json.Unmarshal([]byte(resp), &imageParams)
-                       if err != nil {
-                               return "", fmt.Errorf("invalid JSON generated 
by large model: %v", err)
-                       }
-               }
-               return imageDeployResource(imageParams.DeployType, 
imageParams.Port, imageParams.Namespace, imageParams.ImageInfo)
-       }
-       if name == "repoResource" {
-               Params := struct {
-                       Name     string `json:"name"`
-                       Url      string `json:"url"`
-                       RepoType string `json:"repo_type"`
-               }{}
-               err := json.Unmarshal([]byte(argument), &Params)
-               if err != nil {
-                       return "", fmt.Errorf("Parameter parsing failed: %v", 
err)
-               }
-               if Params.RepoType == "" || (Params.RepoType == "add" && 
(Params.Name == "" || Params.Url == "")) || (Params.RepoType == "remove" && 
Params.Name == "") {
-                       prompt := fmt.Sprintf("The user wants to operate the 
template library. The add operation completes the following fields: name=%s, 
url=%s. The list operation directly outputs, and the remove operation completes 
the following fields: name=%s and returns JSON format.",
-                               Params.Name, Params.Url, Params.RepoType)
-                       resp, err := client.Call(context.TODO(), prompt)
-                       if err != nil {
-                               return "", fmt.Errorf("large model completion 
failed: %v", err)
-                       }
-                       err = json.Unmarshal([]byte(resp), &Params)
-                       if err != nil {
-                               return "", fmt.Errorf("invalid JSON generated 
by large model: %v", err)
-                       }
-               }
-               return repoResource(Params.RepoType, Params.Name, Params.Url)
-       }
-       return "", nil
-}
-
-func sdkResource(language, template, dirname string) (string, error) {
-       _, err := exec.LookPath("dubboctl")
-       if err != nil {
-               return "", errors.New("dubboctl not found, please make sure it 
is installed and configured in your PATH")
-       }
-       // 构建命令
-       cmd := exec.Command("dubboctl", "create", "sdk",
-               "--language", language,
-               "--template", template,
-               "--dirname", dirname,
-       )
-       // 获取命令输出
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-
-       var client *llmopenai.LLM
-       client, err = NewOpenAIClient()
-       if err != nil {
-               return "", fmt.Errorf("Failed to create LLM client: %v", err)
-       }
-       prompt := fmt.Sprintf(`I just ran the dubboctl command for the user. 
Here is the output: %s Please use natural language to tell the user that the 
project has been created. If necessary, you can also remind them of the next 
steps. For example, you can run dubboctl repo list to view the template list. 
`, string(output))
-
-       resp, err := client.Call(context.TODO(), prompt)
-       if err != nil {
-               return "", fmt.Errorf("failed to generate natural language 
description: %v", err)
-       }
-       return resp, nil
-}
-
-func imageHubResource(imageInfo string) (string, error) {
-       client, err := NewOpenAIClient()
-       if err != nil {
-               return "", fmt.Errorf("failed to create LLM client: %v", err)
-       }
-       _, err = exec.LookPath("dubboctl")
-       if err != nil {
-               return "", errors.New("dubboctl not found, please make sure it 
is installed and configured in your PATH")
-       }
-
-       cmd := exec.Command("dubboctl", "image", "hub", "-b",
-               "--imageInfo", imageInfo,
-       )
-
-       prompt := fmt.Sprintf(`Answer based on the Chinese or English input 
from the user. If an error occurs, provide an example to indicate whether the 
project directory was not created or switched, e.g., "Error: does not contain 
an initialized sdk."
-Note: I don't want any interjections.`)
-
-       resp, err := client.Call(context.TODO(), prompt)
-       if err != nil {
-               return "", fmt.Errorf("failed to generate natural language 
description: %v", err)
-       }
-
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-
-       prompt = fmt.Sprintf(`I just ran the dubboctl command for a user. 
Here's a summary of what was done. Note: I don't want any interjections. Here's 
the output: %s`, string(output))
-       resp, err = client.Call(context.TODO(), prompt)
-       if err != nil {
-               return "", fmt.Errorf("Failed to generate natural language 
description: %v", err)
-       }
-       return resp, nil
-}
-
-func imageDeployResource(deployType, port, namespace, imageInfo string) 
(string, error) {
-       client, err := NewOpenAIClient()
-       if err != nil {
-               return "", fmt.Errorf("Failed to create LLM client: %v", err)
-       }
-       _, err = exec.LookPath("dubboctl")
-       if err != nil {
-               return "", errors.New("dubboctl not found, please make sure it 
is installed and configured in your PATH")
-       }
-
-       var output string
-       switch deployType {
-       case "create":
-               output, err = resourceCreate(port, namespace, imageInfo)
-               if err != nil {
-                       return "", err
-               }
-       case "--delete":
-               output, err = resourceDelete(deployType)
-               if err != nil {
-                       return "", err
-               }
-       }
-
-       prompt := fmt.Sprintf(`I just ran the dubboctl command for a user. 
Here's a summary of what was done. Note: I don't want any interjections. Here's 
the output: %s`, string(output))
-       resp, err := client.Call(context.TODO(), prompt)
-       if err != nil {
-               return "", fmt.Errorf("failed to generate natural language 
description: %v", err)
-       }
-       return resp, nil
-}
-
-func repoResource(repoType, name, url string) (string, error) {
-       client, err := NewOpenAIClient()
-       if err != nil {
-               return "", fmt.Errorf("failed to create LLM client: %v", err)
-       }
-       _, err = exec.LookPath("dubboctl")
-       if err != nil {
-               return "", errors.New("dubboctl not found, please make sure it 
is installed and configured in your PATH")
-       }
-
-       var output string
-       switch repoType {
-       case "add":
-               if name == "" || url == "" {
-                       return "", fmt.Errorf("The add operation requires a 
name and a url")
-               }
-               output, err = repoAdd(repoType, name, url)
-               if err != nil {
-                       return "", err
-               }
-       case "list":
-               output, err = repoList(repoType)
-               if err != nil {
-                       return "", err
-               }
-       case "remove":
-               if name == "" {
-                       return "", fmt.Errorf("The remove operation requires a 
name")
-               }
-               output, err = repoRemove(repoType, name)
-               if err != nil {
-                       return "", err
-               }
-       default:
-               return "", fmt.Errorf("unknown operation type: %s", repoType)
-       }
-
-       prompt := fmt.Sprintf("I just ran the dubboctl repo %s operation for a 
user. Here's a summary of what I did. Note: I don't want any interjections. 
Here's the output: %s", repoType, output)
-       resp, err := client.Call(context.TODO(), prompt)
-       if err != nil {
-               return "", fmt.Errorf("failed to generate natural language 
description: %v", err)
-       }
-       return resp, nil
-}
-
-func repoAdd(repoType, name, url string) (string, error) {
-       cmd := exec.Command("dubboctl", "repo", repoType, name, url)
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-       return string(output), nil
-}
-
-func repoList(repoType string) (string, error) {
-       cmd := exec.Command("dubboctl", "repo", repoType)
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-       return string(output), nil
-}
-
-func repoRemove(repoType, name string) (string, error) {
-       cmd := exec.Command("dubboctl", "repo", repoType, name)
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-       return string(output), nil
-}
-
-func resourceCreate(port, namespace, imageInfo string) (string, error) {
-       cmd := exec.Command("dubboctl", "image", "deploy",
-               "--namespace", namespace,
-               "--imageInfo", imageInfo,
-               "--port", port)
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-       return string(output), nil
-}
-
-func resourceDelete(deployType string) (string, error) {
-       cmd := exec.Command("dubboctl", "image", "deploy", deployType)
-       output, err := cmd.CombinedOutput()
-       if err != nil {
-               return "", fmt.Errorf("Command execution failed: %s\nError: 
%v", string(output), err)
-       }
-       fmt.Printf("The command was executed successfully, and the output is as 
follows:\n%s", string(output))
-       return string(output), nil
-}
diff --git a/go.mod b/go.mod
index 715c26cf..fa07c67a 100644
--- a/go.mod
+++ b/go.mod
@@ -30,7 +30,6 @@ require (
        github.com/cenkalti/backoff/v4 v4.3.0
        github.com/cespare/xxhash/v2 v2.3.0
        github.com/cheggaaa/pb/v3 v3.1.7
-       github.com/chzyer/readline v1.5.1
        github.com/containers/image/v5 v5.34.0
        github.com/containers/storage v1.57.1
        github.com/docker/cli v28.3.3+incompatible
@@ -61,11 +60,10 @@ require (
        github.com/moby/term v0.5.2
        github.com/ory/viper v1.7.5
        github.com/pkg/errors v0.9.1
-       github.com/sashabaranov/go-openai v1.40.5
+       github.com/prometheus/client_golang v1.23.2
        github.com/spf13/cobra v1.9.1
        github.com/spf13/pflag v1.0.7
        github.com/stoewer/go-strcase v1.3.0
-       github.com/tmc/langchaingo v0.1.13
        go.uber.org/atomic v1.11.0
        golang.org/x/crypto v0.46.0
        golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6
@@ -146,7 +144,6 @@ require (
        github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // 
indirect
        github.com/dgraph-io/ristretto v0.0.1 // indirect
        github.com/dimchansky/utfbom v1.1.1 // indirect
-       github.com/dlclark/regexp2 v1.11.0 // indirect
        github.com/docker/distribution v2.8.3+incompatible // indirect
        github.com/docker/go-units v0.5.0 // indirect
        github.com/dustin/go-humanize v1.0.1 // indirect
@@ -170,7 +167,6 @@ require (
        github.com/google/gnostic-models v0.7.0 // indirect
        github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a // indirect
        github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
-       github.com/goph/emperror v0.17.2 // indirect
        github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 // 
indirect
        github.com/hashicorp/errwrap v1.1.0 // indirect
        github.com/hashicorp/hcl v1.0.0 // indirect
@@ -208,7 +204,6 @@ require (
        github.com/monochromegane/go-gitignore 
v0.0.0-20200626010858-205db1a8cc00 // indirect
        github.com/morikuni/aec v1.0.0 // indirect
        github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // 
indirect
-       github.com/nikolalohinski/gonja v1.5.3 // indirect
        github.com/onsi/ginkgo/v2 v2.25.3 // indirect
        github.com/onsi/gomega v1.38.2 // indirect
        github.com/opencontainers/go-digest v1.0.0 // indirect
@@ -217,12 +212,9 @@ require (
        github.com/opencontainers/runtime-spec v1.2.0 // indirect
        github.com/opencontainers/selinux v1.11.1 // indirect
        github.com/pelletier/go-toml v1.9.5 // indirect
-       github.com/pelletier/go-toml/v2 v2.2.4 // indirect
        github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
        github.com/pjbgf/sha1cd v0.3.0 // indirect
-       github.com/pkoukk/tiktoken-go v0.1.6 // indirect
        github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // 
indirect
-       github.com/prometheus/client_golang v1.23.2 // indirect
        github.com/prometheus/client_model v0.6.2 // indirect
        github.com/prometheus/common v0.66.1 // indirect
        github.com/prometheus/procfs v0.17.0 // indirect
@@ -244,9 +236,7 @@ require (
        github.com/x448/float16 v0.8.4 // indirect
        github.com/xanzy/ssh-agent v0.3.3 // indirect
        github.com/xlab/treeprint v1.2.0 // indirect
-       github.com/yargevad/filepathx v1.0.0 // indirect
        go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 
// indirect
-       go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 // indirect
        go.yaml.in/yaml/v2 v2.4.2 // indirect
        go.yaml.in/yaml/v3 v3.0.4 // indirect
        golang.org/x/mod v0.30.0 // indirect
diff --git a/go.sum b/go.sum
index a23118d5..b82d8968 100644
--- a/go.sum
+++ b/go.sum
@@ -1,33 +1,12 @@
 cel.dev/expr v0.25.1 h1:1KrZg61W6TWSxuNZ37Xy49ps13NUovb66QLprthtwi4=
 cel.dev/expr v0.25.1/go.mod h1:hrXvqGP6G6gyx8UAHSHJ5RGk//1Oj5nXQ2NI02Nrsg4=
 cloud.google.com/go v0.26.0/go.mod 
h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
-cloud.google.com/go v0.114.0 h1:OIPFAdfrFDFO2ve2U7r/H5SwSbBzEdrBdE7xkgwc+kY=
-cloud.google.com/go v0.114.0/go.mod 
h1:ZV9La5YYxctro1HTPug5lXH/GefROyW8PPD4T8n9J8E=
-cloud.google.com/go/ai v0.7.0 h1:P6+b5p4gXlza5E+u7uvcgYlzZ7103ACg70YdZeC6oGE=
-cloud.google.com/go/ai v0.7.0/go.mod 
h1:7ozuEcraovh4ABsPbrec3o4LmFl9HigNI3D5haxYeQo=
-cloud.google.com/go/aiplatform v1.68.0 
h1:EPPqgHDJpBZKRvv+OsB3cr0jYz3EL2pZ+802rBPcG8U=
-cloud.google.com/go/aiplatform v1.68.0/go.mod 
h1:105MFA3svHjC3Oazl7yjXAmIR89LKhRAeNdnDKJczME=
-cloud.google.com/go/auth v0.5.1 h1:0QNO7VThG54LUzKiQxv8C6x1YX7lUrzlAa1nVLF8CIw=
-cloud.google.com/go/auth v0.5.1/go.mod 
h1:vbZT8GjzDf3AVqCcQmqeeM32U9HBFc32vVVAbwDsa6s=
-cloud.google.com/go/auth/oauth2adapt v0.2.2 
h1:+TTV8aXpjeChS9M+aTtN/TjdQnzJvmzKFt//oWu7HX4=
-cloud.google.com/go/auth/oauth2adapt v0.2.2/go.mod 
h1:wcYjgpZI9+Yu7LyYBg4pqSiaRkfEK3GQcpb7C/uyF1Q=
-cloud.google.com/go/compute v1.20.0 
h1:cUOcywWuowO9It2i1KX1lIb0HH7gLv6nENKuZGnlcSo=
-cloud.google.com/go/compute/metadata v0.9.0 
h1:pDUj4QMoPejqq20dK0Pg2N4yG9zIkYGdBtwLoEkH9Zs=
-cloud.google.com/go/compute/metadata v0.9.0/go.mod 
h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
-cloud.google.com/go/iam v1.1.8 h1:r7umDwhj+BQyz0ScZMp4QrGXjSTI3ZINnpgU2nlB/K0=
-cloud.google.com/go/iam v1.1.8/go.mod 
h1:GvE6lyMmfxXauzNq8NbgJbeVQNspG+tcdL/W8QO1+zE=
-cloud.google.com/go/longrunning v0.5.7 
h1:WLbHekDbjK1fVFD3ibpFFVoyizlLRl73I7YKuAKilhU=
-cloud.google.com/go/longrunning v0.5.7/go.mod 
h1:8GClkudohy1Fxm3owmBGid8W0pSgodEMwEAztp38Xng=
-cloud.google.com/go/vertexai v0.12.0 
h1:zTadEo/CtsoyRXNx3uGCncoWAP1H2HakGqwznt+iMo8=
-cloud.google.com/go/vertexai v0.12.0/go.mod 
h1:8u+d0TsvBfAAd2x5R6GMgbYhsLgo3J7lmP4bR8g2ig8=
 dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
 dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 
h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU=
 github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod 
h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8=
 github.com/AlecAivazis/survey/v2 v2.3.7 
h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ=
 github.com/AlecAivazis/survey/v2 v2.3.7/go.mod 
h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo=
-github.com/AssemblyAI/assemblyai-go-sdk v1.3.0 
h1:AtOVgGxUycvK4P4ypP+1ZupecvFgnfH+Jsum0o5ILoU=
-github.com/AssemblyAI/assemblyai-go-sdk v1.3.0/go.mod 
h1:H0naZbvpIW49cDA5ZZ/gggeXqi7ojSGB1mqshRk6kNE=
 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible 
h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU=
 github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod 
h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
 github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c 
h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
@@ -78,15 +57,10 @@ github.com/OneOfOne/xxhash v1.2.8 
h1:31czK/TI9sNkxIKfaUfGlU47BAxQ0ztGgd9vPyqimf8
 github.com/OneOfOne/xxhash v1.2.8/go.mod 
h1:eZbhyaAYD41SGSSsnmcpxVoRiQ/MPUTjUdIIOT9Um7Q=
 github.com/ProtonMail/go-crypto v1.1.3 
h1:nRBOetoydLeUb4nHajyO2bKqMLfWQ/ZPwkXqXxPxCFk=
 github.com/ProtonMail/go-crypto v1.1.3/go.mod 
h1:rA3QumHc/FZ8pAHreoekgiAbzpNsfQAosU5td4SnOrE=
-github.com/PuerkitoBio/goquery v1.8.1 
h1:uQxhNlArOIdbrH1tr0UXwdVFgDcZDrZVdcpygAcwmWM=
-github.com/PuerkitoBio/goquery v1.8.1/go.mod 
h1:Q8ICL1kNUJ2sXGoAhPGUdYDJvgQgHzJsnnd3H7Ho5jQ=
 github.com/VividCortex/ewma v1.2.0 
h1:f58SaIzcDXrSy3kWaHNvuJgJ3Nmz59Zji6XoJR/q1ow=
 github.com/VividCortex/ewma v1.2.0/go.mod 
h1:nz4BbCtbLyFDeC9SUHbtcT5644juEuWfUAUnGx7j5l4=
 github.com/agext/levenshtein v1.2.3 
h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7lmo=
 github.com/agext/levenshtein v1.2.3/go.mod 
h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
-github.com/airbrake/gobrake v3.6.1+incompatible/go.mod 
h1:wM4gu3Cn0W0K7GUuVWnlXZU11AGBXMILnrdOU8Kn00o=
-github.com/andybalholm/cascadia v1.3.2 
h1:3Xi6Dw5lHF15JtdcmAHD3i1+T8plmv7BQ/nsViSLyss=
-github.com/andybalholm/cascadia v1.3.2/go.mod 
h1:7gtRlve5FxPPgIgX36uWBX58OdBsSS6lUvCFb+h7KvU=
 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be 
h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8=
 github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod 
h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4=
 github.com/antlr4-go/antlr/v4 v4.13.0 
h1:lxCg3LAv+EUK6t1i0y1V6/SLeUi0eKEKdhQAlS8TVTI=
@@ -146,29 +120,20 @@ github.com/aws/smithy-go v1.20.2/go.mod 
h1:krry+ya/rV9RDcV/Q16kpu6ypI4K2czasz0NC
 github.com/awslabs/amazon-ecr-credential-helper/ecr-login 
v0.0.0-20230522190001-adf1bafd791a 
h1:rW+dV12c0WD3+O4Zs8Qt4+oqnr8ecXeyg8g3yB73ZKA=
 github.com/awslabs/amazon-ecr-credential-helper/ecr-login 
v0.0.0-20230522190001-adf1bafd791a/go.mod 
h1:1mvdZLjy932pV2fhj1jjwUSHaF5Ogq2gk5bvi/6ngEU=
 github.com/aybabtme/rgbterm v0.0.0-20170906152045-cc83f3b3ce59/go.mod 
h1:q/89r3U2H7sSsE2t6Kca0lfwTK8JdoNGS/yzM/4iH5I=
-github.com/aymerick/douceur v0.2.0 
h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=
-github.com/aymerick/douceur v0.2.0/go.mod 
h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4=
 github.com/benbjohnson/clock v1.1.0/go.mod 
h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA=
 github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
 github.com/beorn7/perks v1.0.1/go.mod 
h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bitly/go-simplejson v0.5.0/go.mod 
h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA=
 github.com/blang/semver/v4 v4.0.0 
h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM=
 github.com/blang/semver/v4 v4.0.0/go.mod 
h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ=
-github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod 
h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4=
-github.com/bugsnag/bugsnag-go v1.4.0/go.mod 
h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
-github.com/bugsnag/panicwrap v1.2.0/go.mod 
h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
 github.com/buildpacks/imgutil v0.0.0-20230626185301-726f02e4225c 
h1:HlRuSz+JGAzudNtNCfHIzXe0AEuHX6Vx8uZgmjvX02o=
 github.com/buildpacks/imgutil v0.0.0-20230626185301-726f02e4225c/go.mod 
h1:mBG5M3GJW5nknCEOOqtmMHyPYnSpw/5GEiciuYU/COw=
 github.com/buildpacks/lifecycle v0.17.0 
h1:vX/kpQfuh4LZvsIhi1wNkx/zahvwiF72bgc46rQ+3z0=
 github.com/buildpacks/lifecycle v0.17.0/go.mod 
h1:WFzcNp1WG4bwgHuXtKxMg4tdU3AguL44ZlP3knANeVs=
 github.com/buildpacks/pack v0.30.0 
h1:1beK8QAp7By4K40QigYl9JG/Os4nA93dQxYR/GMMbTo=
 github.com/buildpacks/pack v0.30.0/go.mod 
h1:ZtkyUJKcTdWgEDFi0KOmtHQAOkeQeOeJ2wre1+0ipnA=
-github.com/cenkalti/backoff v2.2.1+incompatible 
h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4=
-github.com/cenkalti/backoff v2.2.1+incompatible/go.mod 
h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
 github.com/cenkalti/backoff/v4 v4.3.0 
h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
 github.com/cenkalti/backoff/v4 v4.3.0/go.mod 
h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
 github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod 
h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
-github.com/certifi/gocertifi v0.0.0-20190105021004-abcd57078448/go.mod 
h1:GJKEexRPVJrBSOjoqN5VNOIKJ5Q3RViH6eu3puDRwx4=
 github.com/cespare/xxhash v1.1.0 
h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
 github.com/cespare/xxhash v1.1.0/go.mod 
h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
 github.com/cespare/xxhash/v2 v2.3.0 
h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs=
@@ -177,15 +142,6 @@ github.com/cheggaaa/pb/v3 v3.1.7 
h1:2FsIW307kt7A/rz/ZI2lvPO+v3wKazzE4K/0LtTWsOI=
 github.com/cheggaaa/pb/v3 v3.1.7/go.mod 
h1:/Ji89zfVPeC/u5j8ukD0MBPHt2bzTYp74lQ7KlgFWTQ=
 github.com/chrismellard/docker-credential-acr-env 
v0.0.0-20230304212654-82a0ddb27589 
h1:krfRl01rzPzxSxyLyrChD+U+MzsBXbm0OwYYB67uF+4=
 github.com/chrismellard/docker-credential-acr-env 
v0.0.0-20230304212654-82a0ddb27589/go.mod 
h1:OuDyvmLnMCwa2ep4Jkm6nyA0ocJuZlGyk2gGseVzERM=
-github.com/chzyer/logex v1.1.10/go.mod 
h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI=
-github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM=
-github.com/chzyer/logex v1.2.1/go.mod 
h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ=
-github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod 
h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI=
-github.com/chzyer/readline v1.5.1 
h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI=
-github.com/chzyer/readline v1.5.1/go.mod 
h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk=
-github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod 
h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
-github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04=
-github.com/chzyer/test v1.0.0/go.mod 
h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8=
 github.com/client9/misspell v0.3.4/go.mod 
h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
 github.com/cloudflare/circl v1.3.7 
h1:qlCDlTPz2n9fu58M0Nh1J/JzcFpfgkFHHX3O35r5vcU=
 github.com/cloudflare/circl v1.3.7/go.mod 
h1:sRTcRWXGLrKw6yIGJ+l7amYJFfAXbZG0kBSc8r4zxgA=
@@ -238,8 +194,6 @@ github.com/docker/go-metrics v0.0.1 
h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQ
 github.com/docker/go-metrics v0.0.1/go.mod 
h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
 github.com/docker/go-units v0.5.0 
h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
 github.com/docker/go-units v0.5.0/go.mod 
h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
-github.com/dubbo-kubernetes/xds-api v0.0.0-20260228092615-de7c34e91f7b 
h1:WHE12JRWMaZsNdLWTYWjRbzrj4uLkOSdJyM76VzmEyE=
-github.com/dubbo-kubernetes/xds-api v0.0.0-20260228092615-de7c34e91f7b/go.mod 
h1:Xt+Kec3dL9AS7D3GJnqdNVJUW17VlFauXVnjkK/hVU0=
 github.com/dubbo-kubernetes/xds-api v0.0.0-20260228103100-7a9ab7bac3bb 
h1:22gy5yN3itUL9himTcy8WaZVhVwikgDRIFLAiXgVmnY=
 github.com/dubbo-kubernetes/xds-api v0.0.0-20260228103100-7a9ab7bac3bb/go.mod 
h1:Xt+Kec3dL9AS7D3GJnqdNVJUW17VlFauXVnjkK/hVU0=
 github.com/dustin/go-humanize v1.0.1 
h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
@@ -250,6 +204,10 @@ github.com/emicklei/go-restful/v3 v3.13.0 
h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bF
 github.com/emicklei/go-restful/v3 v3.13.0/go.mod 
h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
 github.com/emirpasic/gods v1.18.1 
h1:FXtiHYKDGKCW2KzwZKx0iC0PQmdlorYgdFG9jPXJ1Bc=
 github.com/emirpasic/gods v1.18.1/go.mod 
h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod 
h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane 
v0.9.1-0.20191026205805-5f8ba28d4473/go.mod 
h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod 
h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod 
h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
 github.com/evanphx/json-patch v5.9.11+incompatible 
h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8=
 github.com/evanphx/json-patch v5.9.11+incompatible/go.mod 
h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
 github.com/evanphx/json-patch/v5 v5.9.11 
h1:/8HVnzMq13/3x9TPvjG08wUGqBTmZBsCWzjTM0wiaDU=
@@ -272,13 +230,8 @@ github.com/gdamore/encoding v1.0.0/go.mod 
h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo
 github.com/gdamore/tcell/v2 v2.4.1-0.20210905002822-f057f0a857a1/go.mod 
h1:Az6Jt+M5idSED2YPGtwnfJV0kXohgdCBPmHGSYc1r04=
 github.com/gdamore/tcell/v2 v2.6.0 
h1:OKbluoP9VYmJwZwq/iLb4BxwKcwGthaa1YNBJIyCySg=
 github.com/gdamore/tcell/v2 v2.6.0/go.mod 
h1:be9omFATkdr0D9qewWW3d+MEvl5dha+Etb5y65J2H8Y=
-github.com/getsentry/raven-go v0.2.0/go.mod 
h1:KungGk8q33+aIAZUIVWZDr2OfAEBsO49PX4NzFV5kcQ=
-github.com/getzep/zep-go v1.0.4 h1:09o26bPP2RAPKFjWuVWwUWLbtFDF/S8bfbilxzeZAAg=
-github.com/getzep/zep-go v1.0.4/go.mod 
h1:HC1Gz7oiyrzOTvzeKC4dQKUiUy87zpIJl0ZFXXdHuss=
 github.com/gliderlabs/ssh v0.3.8 
h1:a4YXD1V7xMF9g5nTkdfnja3Sxy1PVDCj1Zg4Wb8vY6c=
 github.com/gliderlabs/ssh v0.3.8/go.mod 
h1:xYoytBv1sV0aL3CavoDuJIQNURXkkfPA/wxQ1pL1fAU=
-github.com/go-check/check v0.0.0-20180628173108-788fd7840127 
h1:0gkP6mzaMqkmpcJYCFOLkIBwI7xFExG03bbkOkCvUPI=
-github.com/go-check/check v0.0.0-20180628173108-788fd7840127/go.mod 
h1:9ES+weclKsC9YodN5RgxqK/VD9HM9JsCSh7rNhMZE98=
 github.com/go-errors/errors v1.5.1 
h1:ZwEMSLRCapFLflTpT7NKaAc7ukJ8ZPEjzlxt8rPN8bk=
 github.com/go-errors/errors v1.5.1/go.mod 
h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 
h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
@@ -305,8 +258,6 @@ github.com/go-openapi/jsonreference v0.21.0 
h1:Rs+Y7hSXT83Jacb7kFyjn4ijOuVGSvOdF
 github.com/go-openapi/jsonreference v0.21.0/go.mod 
h1:LmZmgsrTkVg9LG4EaHeY8cBDslNPMo06cago5JNLkm4=
 github.com/go-openapi/swag v0.23.1 
h1:lpsStH0n2ittzTnbaSloVZLuB5+fvSY/+hnagBjSNZU=
 github.com/go-openapi/swag v0.23.1/go.mod 
h1:STZs8TbRvEQQKUA+JZNAm3EWlgaOBGpyFDqQnDHMef0=
-github.com/go-sql-driver/mysql v1.7.1 
h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI=
-github.com/go-sql-driver/mysql v1.7.1/go.mod 
h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI=
 github.com/go-stack/stack v1.8.0/go.mod 
h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
 github.com/go-task/slim-sprig/v3 v3.0.0 
h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI=
 github.com/go-task/slim-sprig/v3 v3.0.0/go.mod 
h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8=
@@ -314,7 +265,6 @@ github.com/gobuffalo/flect v1.0.3 
h1:xeWBM2nui+qnVvNM4S3foBhCAL2XgPU+a7FdpelbTq4
 github.com/gobuffalo/flect v1.0.3/go.mod 
h1:A5msMlrHtLqh9umBSnvabjsMrCcCpAyzglnDvkbYKHs=
 github.com/gobwas/glob v0.2.3 h1:A4xDbljILXROh+kObIiy5kIaPYD8e96x1tgBhUI5J+Y=
 github.com/gobwas/glob v0.2.3/go.mod 
h1:d3Ez4x06l9bZtSvzIay5+Yzi0fmZzPgnTbPcKjJAkT8=
-github.com/gofrs/uuid v3.2.0+incompatible/go.mod 
h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod 
h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/golang-jwt/jwt/v4 v4.0.0/go.mod 
h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg=
@@ -334,12 +284,6 @@ github.com/golang/protobuf v1.2.0/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
 github.com/golang/protobuf v1.3.1/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.2/go.mod 
h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
 github.com/golang/protobuf v1.3.3/go.mod 
h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
-github.com/golang/protobuf v1.4.0-rc.1/go.mod 
h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
-github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod 
h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA=
-github.com/golang/protobuf v1.4.0-rc.2/go.mod 
h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs=
-github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod 
h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
-github.com/golang/protobuf v1.4.0/go.mod 
h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
-github.com/golang/protobuf v1.4.1/go.mod 
h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8=
 github.com/golang/protobuf v1.5.4 
h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek=
 github.com/golang/protobuf v1.5.4/go.mod 
h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps=
 github.com/gomarkdown/markdown v0.0.0-20250810172220-2e2c11897d1a 
h1:l7A0loSszR5zHd/qK53ZIHMO8b3bBSmENnQ6eKnUT0A=
@@ -348,44 +292,26 @@ github.com/google/btree v1.1.3 
h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
 github.com/google/btree v1.1.3/go.mod 
h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
 github.com/google/cel-go v0.26.0 
h1:DPGjXackMpJWH680oGY4lZhYjIameYmR+/6RBdDGmaI=
 github.com/google/cel-go v0.26.0/go.mod 
h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM=
-github.com/google/generative-ai-go v0.15.1 
h1:n8aQUpvhPOlGVuM2DRkJ2jvx04zpp42B778AROJa+pQ=
-github.com/google/generative-ai-go v0.15.1/go.mod 
h1:AAucpWZjXsDKhQYWvCYuP6d0yB1kX998pJlOW1rAesw=
 github.com/google/gnostic-models v0.7.0 
h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
 github.com/google/gnostic-models v0.7.0/go.mod 
h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
 github.com/google/go-cmp v0.2.0/go.mod 
h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0/go.mod 
h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.3.1/go.mod 
h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
 github.com/google/go-cmp v0.4.0/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.0/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
-github.com/google/go-cmp v0.5.1/go.mod 
h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
 github.com/google/go-cmp v0.5.8/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.5.9/go.mod 
h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
 github.com/google/go-cmp v0.7.0/go.mod 
h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
 github.com/google/go-containerregistry v0.20.2 
h1:B1wPJ1SN/S7pB+ZAimcciVD+r+yV/l/DSArMxlbwseo=
 github.com/google/go-containerregistry v0.20.2/go.mod 
h1:z38EKdKh4h7IP2gSfUUqEvalZBqs6AoLeWfUy34nQC8=
-github.com/google/go-querystring v1.1.0 
h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8=
-github.com/google/go-querystring v1.1.0/go.mod 
h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU=
 github.com/google/gofuzz v1.0.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/gofuzz v1.1.0/go.mod 
h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
 github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a 
h1://KbezygeMJZCSHH+HgUZiTeSoiuFspbMg1ge+eFj18=
 github.com/google/pprof v0.0.0-20250607225305-033d6d78b36a/go.mod 
h1:5hDyRhoBCxViHszMt12TnOpEI4VVi+U8Gm9iphldiMA=
-github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o=
-github.com/google/s2a-go v0.1.7/go.mod 
h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 
h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod 
h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
 github.com/google/uuid v1.1.1/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
 github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
 github.com/google/uuid v1.6.0/go.mod 
h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2 
h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs=
-github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod 
h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0=
-github.com/googleapis/gax-go/v2 v2.12.4 
h1:9gWcmF85Wvq4ryPFvGFaOgPIs1AQX0d0bcbGw4Z96qg=
-github.com/googleapis/gax-go/v2 v2.12.4/go.mod 
h1:KYEYLorsnIGDi/rPC8b5TdlB9kbKoFubselGIoBMCwI=
-github.com/goph/emperror v0.17.2 
h1:yLapQcmEsO0ipe9p5TaN22djm3OFV/TfM/fcYP0/J18=
-github.com/goph/emperror v0.17.2/go.mod 
h1:+ZbQ+fUNO/6FNiUo0ujtMjhgad9Xa6fQL9KhH4LNHic=
 github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod 
h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
-github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY=
-github.com/gorilla/css v1.0.0/go.mod 
h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c=
 github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY=
 github.com/gorilla/mux v1.8.1/go.mod 
h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ=
 github.com/gregjones/httpcache v0.0.0-20190611155906-901d90724c79 
h1:+ngKgrYPPJrOjhax5N+uePQ0Fh1Z7PheYoUI/0nzkPA=
@@ -432,7 +358,6 @@ github.com/jpillora/backoff 
v0.0.0-20180909062703-3050d21c67d7/go.mod h1:2iMrUgb
 github.com/json-iterator/go v1.1.12 
h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
 github.com/json-iterator/go v1.1.12/go.mod 
h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
 github.com/jtolds/gls v4.20.0+incompatible/go.mod 
h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
-github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod 
h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 
h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
 github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod 
h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
 github.com/kevinburke/ssh_config v1.2.0 
h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
@@ -453,8 +378,8 @@ github.com/kr/pty v1.1.1/go.mod 
h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
 github.com/kr/text v0.1.0/go.mod 
h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
 github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod 
h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
-github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 
h1:6Yzfa6GP0rIo/kULo2bwGEkFvCePZ3qHDDTC3/J9Swo=
-github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod 
h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs=
+github.com/kylelemons/godebug v1.1.0 
h1:RPNrshWIDI6G2gRW9EHilWtl7Z6Sb1BR0xunSBf0SNc=
+github.com/kylelemons/godebug v1.1.0/go.mod 
h1:9/0rRGxNHcop5bhtWyNeEfOS8JIWk580+fNqagV/RAw=
 github.com/lucasb-eyer/go-colorful v1.2.0 
h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY=
 github.com/lucasb-eyer/go-colorful v1.2.0/go.mod 
h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0=
 github.com/magiconair/properties v1.8.1/go.mod 
h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -476,8 +401,6 @@ github.com/mattn/go-runewidth v0.0.16 
h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6T
 github.com/mattn/go-runewidth v0.0.16/go.mod 
h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
 github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b 
h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4=
 github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod 
h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
-github.com/microcosm-cc/bluemonday v1.0.26 
h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58=
-github.com/microcosm-cc/bluemonday v1.0.26/go.mod 
h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs=
 github.com/mitchellh/copystructure v1.2.0 
h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw=
 github.com/mitchellh/copystructure v1.2.0/go.mod 
h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s=
 github.com/mitchellh/go-homedir v1.1.0 
h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
@@ -517,12 +440,9 @@ github.com/morikuni/aec v1.0.0 
h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
 github.com/morikuni/aec v1.0.0/go.mod 
h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 
h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
 github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod 
h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
-github.com/nikolalohinski/gonja v1.5.3 
h1:GsA+EEaZDZPGJ8JtpeGN78jidhOlxeJROpqMT9fTj9c=
-github.com/nikolalohinski/gonja v1.5.3/go.mod 
h1:RmjwxNiXAEqcq1HeK5SSMmqFJvKOfTfXhkJv6YBtPa4=
 github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
 github.com/nxadm/tail v1.4.8/go.mod 
h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
 github.com/onsi/ginkgo v1.6.0/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
-github.com/onsi/ginkgo v1.8.0/go.mod 
h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
 github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE=
 github.com/onsi/ginkgo v1.16.5/go.mod 
h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU=
 github.com/onsi/ginkgo/v2 v2.25.3 
h1:Ty8+Yi/ayDAGtk4XxmmfUy4GabvM+MegeB4cDLRi6nw=
@@ -546,18 +466,13 @@ github.com/ory/viper v1.7.5/go.mod 
h1:ypOuyJmEUb3oENywQZRgeAMwqgOyDqwboO1tj3DjTa
 github.com/pelletier/go-toml v1.2.0/go.mod 
h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
 github.com/pelletier/go-toml v1.9.5 
h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8=
 github.com/pelletier/go-toml v1.9.5/go.mod 
h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c=
-github.com/pelletier/go-toml/v2 v2.2.4 
h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0t5Ec4=
-github.com/pelletier/go-toml/v2 v2.2.4/go.mod 
h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY=
 github.com/peterbourgon/diskv v2.0.1+incompatible 
h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI=
 github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod 
h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
 github.com/pjbgf/sha1cd v0.3.0 h1:4D5XXmUUBUl/xQ6IjCkEAbqXskkq/4O7LmGn0AqMDs4=
 github.com/pjbgf/sha1cd v0.3.0/go.mod 
h1:nZ1rrWOcGJ5uZgEEVL1VUM9iRQiZvWdbZjkKyFzPPsI=
-github.com/pkg/errors v0.8.0/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.8.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
 github.com/pkg/errors v0.9.1/go.mod 
h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkoukk/tiktoken-go v0.1.6 
h1:JF0TlJzhTbrI30wCvFuiw6FzP2+/bR+FIxUdgEAcUsw=
-github.com/pkoukk/tiktoken-go v0.1.6/go.mod 
h1:9NiV+i9mJKGj1rYOT+njbv+ZwA/zJxYdewGl6qVatpg=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 
h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U=
 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
@@ -579,14 +494,11 @@ github.com/rivo/uniseg v0.4.7/go.mod 
h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUc
 github.com/rogpeppe/fastuuid v1.1.0/go.mod 
h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ=
 github.com/rogpeppe/go-internal v1.13.1 
h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
 github.com/rogpeppe/go-internal v1.13.1/go.mod 
h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
-github.com/rollbar/rollbar-go v1.0.2/go.mod 
h1:AcFs5f0I+c71bpHlXNNDbOWJiKwjFDtISeXco0L5PKQ=
 github.com/russross/blackfriday/v2 v2.1.0/go.mod 
h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06 
h1:OkMGxebDjyw0ULyrTYWeN0UNCCkmCWfjPnIA2W6oviI=
 github.com/sabhiram/go-gitignore v0.0.0-20210923224102-525f6e181f06/go.mod 
h1:+ePHsJ1keEjQtpvf9HHw0f4ZeJ0TLRsxhunSI2hYJSs=
 github.com/santhosh-tekuri/jsonschema/v6 v6.0.2 
h1:KRzFb2m7YtdldCEkzs6KqmJw4nqEVZGK7IN2kJkjTuQ=
 github.com/santhosh-tekuri/jsonschema/v6 v6.0.2/go.mod 
h1:JXeL+ps8p7/KNMjDQk3TCwPpBy0wYklyWTfbkIzdIFU=
-github.com/sashabaranov/go-openai v1.40.5 
h1:SwIlNdWflzR1Rxd1gv3pUg6pwPc6cQ2uMoHs8ai+/NY=
-github.com/sashabaranov/go-openai v1.40.5/go.mod 
h1:lj5b/K+zjTSFxVLijLSTDZuP7adOgerWeFyZLUhAKRg=
 github.com/sclevine/spec v1.4.0 h1:z/Q9idDcay5m5irkZ28M7PtQM4aOISzOpj4bUPkDee8=
 github.com/sclevine/spec v1.4.0/go.mod 
h1:LvpgJaFyvQzRvc1kaDs0bulYwzC70PbiYjC4QnFHkOM=
 github.com/sergi/go-diff v1.0.0/go.mod 
h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
@@ -594,7 +506,6 @@ github.com/sergi/go-diff 
v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN
 github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod 
h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
 github.com/shopspring/decimal v1.4.0 
h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
 github.com/shopspring/decimal v1.4.0/go.mod 
h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
-github.com/sirupsen/logrus v1.2.0/go.mod 
h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
 github.com/sirupsen/logrus v1.4.2/go.mod 
h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
 github.com/sirupsen/logrus v1.7.0/go.mod 
h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0=
 github.com/sirupsen/logrus v1.9.0/go.mod 
h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
@@ -655,41 +566,21 @@ github.com/tj/go-buffer v1.1.0/go.mod 
h1:iyiJpfFcR2B9sXu7KvjbT9fpM4mOelRSDTbntVj
 github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod 
h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0=
 github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod 
h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao=
 github.com/tj/go-spin v1.1.0/go.mod 
h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4=
-github.com/tmc/langchaingo v0.1.13 
h1:rcpMWBIi2y3B90XxfE4Ao8dhCQPVDMaNPnN5cGB1CaA=
-github.com/tmc/langchaingo v0.1.13/go.mod 
h1:vpQ5NOIhpzxDfTZK9B6tf2GM/MoaHewPWM5KXXGh7hg=
 github.com/ulikunitz/xz v0.5.12 h1:37Nm15o69RwBkXM0J6A5OlE67RZTfzUxTj8fB3dfcsc=
 github.com/ulikunitz/xz v0.5.12/go.mod 
h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
 github.com/vbatts/tar-split v0.12.1 
h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
 github.com/vbatts/tar-split v0.12.1/go.mod 
h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
-github.com/x-cray/logrus-prefixed-formatter v0.5.2 
h1:00txxvfBM9muc0jiLIEAkAcIMJzfthRT6usrui8uGmg=
-github.com/x-cray/logrus-prefixed-formatter v0.5.2/go.mod 
h1:2duySbKsL6M18s5GU7VPsoEPHyzalCE06qoARUCeBBE=
 github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
 github.com/x448/float16 v0.8.4/go.mod 
h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/xanzy/ssh-agent v0.3.3 
h1:+/15pJfg/RsTxqYcX6fHqOXZwwMP+2VyYWJeWM2qQFM=
 github.com/xanzy/ssh-agent v0.3.3/go.mod 
h1:6dzNDKs0J9rVPHPhaGCukekBHKqfl+L3KghI1Bc68Uw=
 github.com/xlab/treeprint v1.2.0 
h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ=
 github.com/xlab/treeprint v1.2.0/go.mod 
h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0=
-github.com/yargevad/filepathx v1.0.0 
h1:SYcT+N3tYGi+NvazubCNlvgIPbzAk7i7y2dwg3I5FYc=
-github.com/yargevad/filepathx v1.0.0/go.mod 
h1:BprfX/gpYNJHJfc35GjRRpVcwWXS89gGulUIU5tK3tA=
 github.com/yuin/goldmark v1.1.27/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.4.13/go.mod 
h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
-gitlab.com/golang-commonmark/html v0.0.0-20191124015941-a22733972181 
h1:K+bMSIx9A7mLES1rtG+qKduLIXq40DAzYHtb0XuCukA=
-gitlab.com/golang-commonmark/html v0.0.0-20191124015941-a22733972181/go.mod 
h1:dzYhVIwWCtzPAa4QP98wfB9+mzt33MSmM8wsKiMi2ow=
-gitlab.com/golang-commonmark/linkify v0.0.0-20191026162114-a0c2df6c8f82 
h1:oYrL81N608MLZhma3ruL8qTM4xcpYECGut8KSxRY59g=
-gitlab.com/golang-commonmark/linkify v0.0.0-20191026162114-a0c2df6c8f82/go.mod 
h1:Gn+LZmCrhPECMD3SOKlE+BOHwhOYD9j7WT9NUtkCrC8=
-gitlab.com/golang-commonmark/markdown v0.0.0-20211110145824-bf3e522c626a 
h1:O85GKETcmnCNAfv4Aym9tepU8OE0NmcZNqPlXcsBKBs=
-gitlab.com/golang-commonmark/markdown 
v0.0.0-20211110145824-bf3e522c626a/go.mod 
h1:LaSIs30YPGs1H5jwGgPhLzc8vkNc/k0rDX/fEZqiU/M=
-gitlab.com/golang-commonmark/mdurl v0.0.0-20191124015652-932350d1cb84 
h1:qqjvoVXdWIcZCLPMlzgA7P9FZWdPGPvP/l3ef8GzV6o=
-gitlab.com/golang-commonmark/mdurl v0.0.0-20191124015652-932350d1cb84/go.mod 
h1:IJZ+fdMvbW2qW6htJx7sLJ04FEs4Ldl/MDsJtMKywfw=
-gitlab.com/golang-commonmark/puny v0.0.0-20191124015043-9f83538fa04f 
h1:Wku8eEdeJqIOFHtrfkYUByc4bCaTeA6fL0UJgfEiFMI=
-gitlab.com/golang-commonmark/puny v0.0.0-20191124015043-9f83538fa04f/go.mod 
h1:Tiuhl+njh/JIg0uS/sOJVYi0x2HEa5rc1OAaVsb5tAs=
-go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
-go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo=
 go.opentelemetry.io/auto/sdk v1.2.1 
h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
 go.opentelemetry.io/auto/sdk v1.2.1/go.mod 
h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 
v0.60.0 h1:x7wzEgXfnzJcHDwStJT+mxOz4etr2EcexjqhBvmoakw=
-go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc 
v0.60.0/go.mod h1:rg+RlpR5dKwaS95IyyZqj5Wd4E13lk/msnTS0Xl9lJM=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0 
h1:F7Jx+6hwnZ41NSFTO5q4LYDtJRXBf2PD0rNBkeB/lus=
 go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.61.0/go.mod 
h1:UHB22Z8QsdRDrnAtX4PntOl36ajSxcdUMt1sF7Y6E7Q=
 go.opentelemetry.io/otel v1.39.0 
h1:8yPrr/S0ND9QEfTfdP9V+SiwT4E0G7Y5MO7p85nis48=
@@ -708,8 +599,6 @@ go.opentelemetry.io/otel/trace v1.39.0 
h1:2d2vfpEDmCJ5zVYz7ijaJdOF59xLomrvj7bjt6
 go.opentelemetry.io/otel/trace v1.39.0/go.mod 
h1:88w4/PnZSazkGzz/w84VHpQafiU4EtqqlVdxWy+rNOA=
 go.opentelemetry.io/proto/otlp v1.5.0 
h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
 go.opentelemetry.io/proto/otlp v1.5.0/go.mod 
h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
-go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 
h1:Ss6D3hLXTM0KobyBYEAygXzFfGcjnmfEJOBgSbemCtg=
-go.starlark.net v0.0.0-20230302034142-4b1e35fe2254/go.mod 
h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds=
 go.uber.org/atomic v1.7.0/go.mod 
h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
 go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE=
 go.uber.org/atomic v1.11.0/go.mod 
h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0=
@@ -724,7 +613,6 @@ go.yaml.in/yaml/v2 v2.4.2 
h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
 go.yaml.in/yaml/v2 v2.4.2/go.mod 
h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
 go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
-golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod 
h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190426145343-a29dc8fdc734/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod 
h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
@@ -776,7 +664,6 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod 
h1:RxMgew5VJxzue5/jJ
 golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
 golang.org/x/sync v0.19.0/go.mod 
h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
 golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod 
h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -794,7 +681,6 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod 
h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210819135213-f52c844e1c1c/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -807,7 +693,6 @@ golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9sn
 golang.org/x/term v0.0.0-20201210144234-2321bbc49cbf/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
 golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
 golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
 golang.org/x/term v0.38.0/go.mod 
h1:bSEAKrOT1W+VSu9TSCMtoGEOUcKxOKgl3LE5QEF/xVg=
@@ -848,16 +733,11 @@ gomodules.xyz/jsonpatch/v2 v2.5.0 
h1:JELs8RLM12qJGXU4u/TO3V25KW8GreMKl9pdkk14RM0
 gomodules.xyz/jsonpatch/v2 v2.5.0/go.mod 
h1:AH3dM2RI6uoBZxn3LVrfvJ3E0/9dG4cSrbuBJT4moAY=
 gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk=
 gonum.org/v1/gonum v0.16.0/go.mod 
h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E=
-google.golang.org/api v0.183.0 h1:PNMeRDwo1pJdgNcFQ9GstuLe/noWKIc89pRWRLMvLwE=
-google.golang.org/api v0.183.0/go.mod 
h1:q43adC5/pHoSZTx5h2mSmdF7NcyfW9JuDyIOJAgS9ZQ=
 google.golang.org/appengine v1.1.0/go.mod 
h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM=
 google.golang.org/appengine v1.4.0/go.mod 
h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod 
h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
 google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod 
h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc=
 google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod 
h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
-google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod 
h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo=
-google.golang.org/genproto v0.0.0-20240528184218-531527333157 
h1:u7WMYrIrVvs0TF5yaKwKNbcJyySYf+HAIFXxWltJOXE=
-google.golang.org/genproto v0.0.0-20240528184218-531527333157/go.mod 
h1:ubQlAQnzejB8uZzszhrTCU2Fyp6Vi7ZE5nn0c3W8+qQ=
 google.golang.org/genproto/googleapis/api v0.0.0-20251202230838-ff82c1b0f217 
h1:fCvbg86sFXwdrl5LgVcTEvNC+2txB5mgROGmRL5mrls=
 google.golang.org/genproto/googleapis/api 
v0.0.0-20251202230838-ff82c1b0f217/go.mod 
h1:+rXWjjaukWZun3mLfjmVnQi18E1AsFbDN9QdJ5YXLto=
 google.golang.org/genproto/googleapis/rpc v0.0.0-20251202230838-ff82c1b0f217 
h1:gRkg/vSppuSQoDjxyiGfN4Upv/h/DQmIR10ZU8dh4Ww=
@@ -869,14 +749,6 @@ google.golang.org/grpc v1.27.0/go.mod 
h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8
 google.golang.org/grpc v1.29.1/go.mod 
h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
 google.golang.org/grpc v1.79.1 h1:zGhSi45ODB9/p3VAawt9a+O/MULLl9dpizzNNpq7flY=
 google.golang.org/grpc v1.79.1/go.mod 
h1:KmT0Kjez+0dde/v2j9vzwoAScgEPx/Bw1CYChhHLrHQ=
-google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod 
h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
-google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod 
h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
-google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod 
h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
-google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod 
h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE=
-google.golang.org/protobuf v1.21.0/go.mod 
h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo=
-google.golang.org/protobuf v1.22.0/go.mod 
h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod 
h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU=
-google.golang.org/protobuf v1.25.0/go.mod 
h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c=
 google.golang.org/protobuf v1.36.11 
h1:fV6ZwhNocDyBLK0dj+fg8ektcVegBBuEolpbTQyBNVE=
 google.golang.org/protobuf v1.36.11/go.mod 
h1:HTf+CrKn2C3g5S8VImy6tdcUvCska2kB7j23XfzDpco=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
@@ -938,8 +810,6 @@ k8s.io/kubectl v0.33.3 
h1:r/phHvH1iU7gO/l7tTjQk2K01ER7/OAJi8uFHHyWSac=
 k8s.io/kubectl v0.33.3/go.mod h1:euj2bG56L6kUGOE/ckZbCoudPwuj4Kud7BR0GzyNiT0=
 k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d 
h1:wAhiDyZ4Tdtt7e46e9M5ZSAJ/MnPGPs+Ki1gHw4w1R0=
 k8s.io/utils v0.0.0-20250820121507-0af2bda4dd1d/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-nhooyr.io/websocket v1.8.7 h1:usjR2uOr/zjjkVMy0lW+PPohFok7PCow5sDjLgX4P4g=
-nhooyr.io/websocket v1.8.7/go.mod 
h1:B70DZP8IakI65RVQ51MsWP/8jndNma26DVA/nFSCgW0=
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 
h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM=
 sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod 
h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
 sigs.k8s.io/controller-tools v0.19.0 
h1:OU7jrPPiZusryu6YK0jYSjPqg8Vhf8cAzluP9XGI5uk=

Reply via email to