feat: add PrepareTicketDraft tool and related graph for drafting ticket information

This commit is contained in:
mlogclub
2026-04-12 13:32:07 +08:00
parent 5484384d89
commit a66b78eecc
8 changed files with 423 additions and 6 deletions
+19 -4
View File
@@ -29,10 +29,8 @@ func (r *Registry) Resolve(ctx Context) (*ToolSet, error) {
continue
}
toolCode := strings.TrimSpace(toolDef.Code())
if len(allowedToolCodes) > 0 {
if _, ok := allowedToolCodes[toolCode]; !ok && !isAlwaysAllowedToolCode(toolCode) {
continue
}
if len(allowedToolCodes) > 0 && !isAllowedToolCode(toolCode, allowedToolCodes) {
continue
}
tool, err := toolDef.Build(ctx)
if err != nil {
@@ -51,6 +49,23 @@ func (r *Registry) Resolve(ctx Context) (*ToolSet, error) {
return ret, nil
}
func isAllowedToolCode(toolCode string, allowedToolCodes map[string]struct{}) bool {
if len(allowedToolCodes) == 0 {
return true
}
if _, ok := allowedToolCodes[toolCode]; ok {
return true
}
if isAlwaysAllowedToolCode(toolCode) {
return true
}
if strings.TrimSpace(toolCode) == toolx.GraphPrepareTicketDraftToolCode {
_, ok := allowedToolCodes[toolx.GraphCreateTicketConfirmToolCode]
return ok
}
return false
}
func makeAllowedToolCodeSet(input []string) map[string]struct{} {
if len(input) == 0 {
return nil