Compare commits
5 Commits
3927c92fa8
...
2843bd204f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2843bd204f | ||
|
|
05374f99b0 | ||
|
|
c88e3ac630 | ||
|
|
dc94a5323a | ||
|
|
69d3feb865 |
@@ -322,10 +322,10 @@ pub fn analyze_for_pain_signals(messages: &[zclaw_types::Message]) -> Option<Pai
|
||||
let combined = user_frustrations.join(" ");
|
||||
let severity = if combined.contains("烦死了")
|
||||
|| combined.contains("受不了")
|
||||
|| user_frustrations.len() >= 3
|
||||
|| user_frustrations.len() >= 2
|
||||
{
|
||||
PainSeverity::High
|
||||
} else if user_frustrations.len() >= 2 {
|
||||
} else if user_frustrations.len() >= 1 {
|
||||
PainSeverity::Medium
|
||||
} else {
|
||||
PainSeverity::Low
|
||||
|
||||
@@ -893,7 +893,7 @@ mod tests {
|
||||
];
|
||||
|
||||
let patterns = engine.analyze_patterns(&memories);
|
||||
// Should not trigger (only 2 tasks, threshold is 5)
|
||||
// Should not trigger (only 2 tasks, threshold is 3)
|
||||
assert!(!patterns.iter().any(|p| p.observation.contains("待办任务")));
|
||||
}
|
||||
|
||||
|
||||
@@ -187,7 +187,10 @@ pub async fn agent_get(
|
||||
if let Ok(storage) = crate::viking_commands::get_storage().await {
|
||||
let profile_store = zclaw_memory::UserProfileStore::new(storage.pool().clone());
|
||||
if let Ok(Some(profile)) = profile_store.get(&agent_id).await {
|
||||
agent_info.user_profile = Some(serde_json::to_value(profile).unwrap_or_default());
|
||||
match serde_json::to_value(&profile) {
|
||||
Ok(val) => agent_info.user_profile = Some(val),
|
||||
Err(e) => tracing::warn!("[agent_get] Failed to serialize UserProfile: {}", e),
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
|
||||
import { useState, useEffect, useMemo } from 'react';
|
||||
import { motion, AnimatePresence } from 'framer-motion';
|
||||
import { createLogger } from '../lib/logger';
|
||||
|
||||
const log = createLogger('IdentityChangeProposal');
|
||||
import {
|
||||
Check,
|
||||
X,
|
||||
@@ -381,7 +384,7 @@ export function IdentityChangeProposalPanel() {
|
||||
setProposals(pendingProposals);
|
||||
setSnapshots(agentSnapshots);
|
||||
} catch (err) {
|
||||
console.error('[IdentityChangeProposal] Failed to load data:', err);
|
||||
log.error('[IdentityChangeProposal] Failed to load data:', err);
|
||||
setError('加载失败');
|
||||
} finally {
|
||||
setLoading(false);
|
||||
@@ -405,7 +408,7 @@ export function IdentityChangeProposalPanel() {
|
||||
setProposals(pendingProposals);
|
||||
setSnapshots(agentSnapshots);
|
||||
} catch (err) {
|
||||
console.error('[IdentityChangeProposal] Failed to approve:', err);
|
||||
log.error('[IdentityChangeProposal] Failed to approve:', err);
|
||||
setError(parseProposalError(err, 'approval'));
|
||||
} finally {
|
||||
setProcessingId(null);
|
||||
@@ -422,7 +425,7 @@ export function IdentityChangeProposalPanel() {
|
||||
const pendingProposals = await intelligenceClient.identity.getPendingProposals(agentId);
|
||||
setProposals(pendingProposals);
|
||||
} catch (err) {
|
||||
console.error('[IdentityChangeProposal] Failed to reject:', err);
|
||||
log.error('[IdentityChangeProposal] Failed to reject:', err);
|
||||
setError(parseProposalError(err, 'rejection'));
|
||||
} finally {
|
||||
setProcessingId(null);
|
||||
@@ -439,7 +442,7 @@ export function IdentityChangeProposalPanel() {
|
||||
const agentSnapshots = await intelligenceClient.identity.getSnapshots(agentId, 10);
|
||||
setSnapshots(agentSnapshots);
|
||||
} catch (err) {
|
||||
console.error('[IdentityChangeProposal] Failed to restore:', err);
|
||||
log.error('[IdentityChangeProposal] Failed to restore:', err);
|
||||
setError(parseProposalError(err, 'restore'));
|
||||
} finally {
|
||||
setProcessingId(null);
|
||||
|
||||
@@ -181,17 +181,3 @@ export function loadConnectionMode(): string | null {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the timestamp of the persisted connection mode.
|
||||
* Returns null if not set or format is legacy.
|
||||
*/
|
||||
export function loadConnectionModeTimestamp(): number | null {
|
||||
const raw = localStorage.getItem(SAASMODE_KEY);
|
||||
if (!raw) return null;
|
||||
try {
|
||||
const parsed = JSON.parse(raw);
|
||||
return parsed.timestamp ?? null;
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user