@@ -12,7 +12,9 @@ import (
12
12
"github.com/obot-platform/obot/pkg/render"
13
13
v1 "github.com/obot-platform/obot/pkg/storage/apis/obot.obot.ai/v1"
14
14
apierror "k8s.io/apimachinery/pkg/api/errors"
15
+ "k8s.io/apimachinery/pkg/fields"
15
16
"k8s.io/apimachinery/pkg/util/sets"
17
+ kclient "sigs.k8s.io/controller-runtime/pkg/client"
16
18
)
17
19
18
20
type Handler struct {
@@ -105,6 +107,47 @@ func (h *Handler) RemoveUnneededCredentials(req router.Request, _ router.Respons
105
107
}
106
108
}
107
109
110
+ var knowledgeSets v1.KnowledgeSetList
111
+ switch req .Object .(type ) {
112
+ case * v1.Workflow :
113
+ if err := req .List (& knowledgeSets , & kclient.ListOptions {
114
+ Namespace : req .Namespace ,
115
+ FieldSelector : fields .SelectorFromSet (map [string ]string {
116
+ "spec.workflowName" : req .Object .GetName (),
117
+ }),
118
+ }); err != nil {
119
+ return err
120
+ }
121
+
122
+ case * v1.Agent :
123
+ if err := req .List (& knowledgeSets , & kclient.ListOptions {
124
+ Namespace : req .Namespace ,
125
+ FieldSelector : fields .SelectorFromSet (map [string ]string {
126
+ "spec.agentName" : req .Object .GetName (),
127
+ }),
128
+ }); err != nil {
129
+ return err
130
+ }
131
+ }
132
+
133
+ for _ , knowledgeSet := range knowledgeSets .Items {
134
+ var knowledgeSources v1.KnowledgeSourceList
135
+ if err := req .List (& knowledgeSources , & kclient.ListOptions {
136
+ Namespace : req .Namespace ,
137
+ FieldSelector : fields .SelectorFromSet (map [string ]string {
138
+ "spec.knowledgeSetName" : knowledgeSet .Name ,
139
+ }),
140
+ }); err != nil {
141
+ return err
142
+ }
143
+
144
+ for _ , knowledgeSource := range knowledgeSources .Items {
145
+ if sourceType := string (knowledgeSource .Spec .Manifest .GetType ()); sourceType != "" {
146
+ credentialNames [sourceType + ".sync-file" ] = struct {}{}
147
+ }
148
+ }
149
+ }
150
+
108
151
for _ , cred := range creds {
109
152
if _ , ok := credentialNames [cred .ToolName ]; ! ok {
110
153
if err := h .gptscript .DeleteCredential (req .Ctx , req .Object .GetName (), cred .ToolName ); err != nil && ! errors .As (err , & gptscript.ErrNotFound {}) {
0 commit comments