feat: port NOFXi agent module onto latest dev base (#1485)

* feat: integrate NOFXi agent into dev

* Enhance NOFXi agent workflow and diagnostics
This commit is contained in:
lky-spec
2026-04-21 23:47:55 +08:00
committed by GitHub
parent 1ba50bdedf
commit 3ca95b294d
88 changed files with 22630 additions and 1143 deletions

View File

@@ -131,7 +131,7 @@ func (s *AIModelStore) GetDefault(userID string) (*AIModel, error) {
if userID == "" {
userID = "default"
}
model, err := s.firstEnabled(userID)
model, err := s.firstEnabledUsable(userID)
if err == nil {
return model, nil
}
@@ -139,14 +139,14 @@ func (s *AIModelStore) GetDefault(userID string) (*AIModel, error) {
return nil, err
}
if userID != "default" {
return s.firstEnabled("default")
return s.firstEnabledUsable("default")
}
return nil, fmt.Errorf("please configure an available AI model in the system first")
}
func (s *AIModelStore) firstEnabled(userID string) (*AIModel, error) {
func (s *AIModelStore) firstEnabledUsable(userID string) (*AIModel, error) {
var model AIModel
err := s.db.Where("user_id = ? AND enabled = ?", userID, true).
err := s.db.Where("user_id = ? AND enabled = ? AND api_key != ''", userID, true).
Order("updated_at DESC, id ASC").
First(&model).Error
if err != nil {
@@ -303,3 +303,16 @@ func (s *AIModelStore) Create(userID, id, name, provider string, enabled bool, a
// Use FirstOrCreate to ignore if already exists
return s.db.Where("id = ?", id).FirstOrCreate(model).Error
}
// Delete removes a user-owned AI model configuration.
func (s *AIModelStore) Delete(userID, id string) error {
result := s.db.Where("user_id = ? AND id = ?", userID, id).Delete(&AIModel{})
if result.Error != nil {
return result.Error
}
if result.RowsAffected == 0 {
return fmt.Errorf("ai model not found: id=%s, userID=%s", id, userID)
}
logger.Infof("🗑️ Deleted AI model: id=%s, userID=%s", id, userID)
return nil
}