Files
viettranx 21b6c454ca feat: merge pipeline, per-user credentials, unified picker, group contacts
- Enable merge UI for linking channel contacts to tenant_users
- Contact → tenant_user resolution with cached lookup (60s TTL)
- MCP per-user credentials via user-keyed connection pool
- Secure CLI per-user credentials with AES-256-GCM encryption
- Unified UserPickerCombobox searching contacts + tenant_users
- Group contact collection with chat title in all channels
- Group permission inheritance via wildcard user_id="*"
- Fix heartbeat using wrong userID in group chats
- Filter internal senders from contact collection
- Add contact_type column (user/group) to channel_contacts
- SQLite schema v2 migration for desktop edition
2026-03-29 22:33:17 +07:00

67 lines
1.6 KiB
Go

package mcp
import "strings"
func mapToEnvSlice(env map[string]string) []string {
if len(env) == 0 {
return nil
}
s := make([]string, 0, len(env))
for k, v := range env {
s = append(s, k+"="+v)
}
return s
}
func toSet(items []string) map[string]struct{} {
if len(items) == 0 {
return nil
}
s := make(map[string]struct{}, len(items))
for _, item := range items {
s[item] = struct{}{}
}
return s
}
func joinErrors(errs []string) string {
var result strings.Builder
for i, e := range errs {
if i > 0 {
result.WriteString("; ")
}
result.WriteString(e)
}
return result.String()
}
// ParseJSONBytesToStringSlice converts JSONB []byte to []string (exported for loop_mcp_user).
func ParseJSONBytesToStringSlice(data []byte) []string { return jsonBytesToStringSlice(data) }
// ParseJSONBytesToStringMap converts JSONB []byte to map[string]string (exported for loop_mcp_user).
func ParseJSONBytesToStringMap(data []byte) map[string]string { return jsonBytesToStringMap(data) }
// jsonBytesToStringSlice converts JSONB []byte to []string. Returns nil on error.
func jsonBytesToStringSlice(data []byte) []string {
if len(data) == 0 {
return nil
}
var result []string
if err := jsonUnmarshal(data, &result); err != nil {
return nil
}
return result
}
// jsonBytesToStringMap converts JSONB []byte to map[string]string. Returns nil on error.
func jsonBytesToStringMap(data []byte) map[string]string {
if len(data) == 0 {
return nil
}
var result map[string]string
if err := jsonUnmarshal(data, &result); err != nil {
return nil
}
return result
}