diff --git a/dashboard.html b/dashboard.html
index b040182..0c27d15 100644
--- a/dashboard.html
+++ b/dashboard.html
@@ -565,6 +565,7 @@
const LETTA_API = 'https://api.letta.com/v1';
let API_KEY = sessionStorage.getItem('letta_api_key') || '';
let DEFAULT_AGENT_ID = sessionStorage.getItem('default_agent_id') || '';
+ let CURRENT_SCHEDULES = []; // Store schedules for modal viewing
// Initialize
if (API_KEY) {
@@ -704,30 +705,39 @@
console.log('Letta API response:', data); // Debug log
const schedules = data.scheduled_messages || data.schedules || data || [];
+ // Store for modal viewing
+ CURRENT_SCHEDULES = schedules;
+
// Debug: Log first schedule if available
if (schedules.length > 0) {
console.log('First schedule:', schedules[0]);
console.log('First schedule messages:', schedules[0].messages);
+ console.log('Full schedule object:', JSON.stringify(schedules[0], null, 2));
}
// Split into one-time and recurring
const onetime = schedules.filter(s => s.schedule?.type === 'one-time');
const recurring = schedules.filter(s => s.schedule?.type === 'recurring');
- onetimeBody.innerHTML = onetime.length ? onetime.map(s => `
+ onetimeBody.innerHTML = onetime.length ? onetime.map((s, idx) => {
+ const globalIdx = CURRENT_SCHEDULES.indexOf(s);
+ return `
| ${s.id?.substring(0, 8) || 'N/A'}... |
${s.agent_id || 'N/A'} |
${s.next_scheduled_at ? fromUnixMs(s.next_scheduled_at) : 'N/A'} |
${truncate(getMessageContent(s), 30)} |
-
+
|
- `).join('') : '| No one-time schedules |
';
+ `;
+ }).join('') : '| No one-time schedules |
';
- recurringBody.innerHTML = recurring.length ? recurring.map(s => `
+ recurringBody.innerHTML = recurring.length ? recurring.map((s, idx) => {
+ const globalIdx = CURRENT_SCHEDULES.indexOf(s);
+ return `
| ${s.id?.substring(0, 8) || 'N/A'}... |
${s.agent_id || 'N/A'} |
@@ -736,11 +746,12 @@
${truncate(getMessageContent(s), 30)} |
${s.next_scheduled_at ? fromUnixMs(s.next_scheduled_at) : 'Never'} |
-
+
|
- `).join('') : '| No recurring schedules |
';
+ `;
+ }).join('') : '| No recurring schedules |
';
} catch (error) {
onetimeBody.innerHTML = `| Error: ${error.message} |
`;
recurringBody.innerHTML = `| Error: ${error.message} |
`;
@@ -882,8 +893,14 @@
return str.length > len ? str.substring(0, len) + '...' : str;
}
- function viewSchedule(scheduleData) {
- const schedule = JSON.parse(decodeURIComponent(scheduleData));
+ function viewSchedule(scheduleIndex) {
+ const schedule = CURRENT_SCHEDULES[scheduleIndex];
+ if (!schedule) {
+ alert('Schedule not found');
+ return;
+ }
+
+ console.log('Viewing schedule:', schedule); // Debug
document.getElementById('modal-id').textContent = schedule.id || 'N/A';
document.getElementById('modal-agent-id').textContent = schedule.agent_id || 'N/A';
@@ -898,19 +915,35 @@
`Cron: ${schedule.schedule.cron_expression}\nNext run: ${schedule.next_scheduled_at ? fromUnixMs(schedule.next_scheduled_at) : 'Never'}`;
}
- // Format messages
+ // Format messages - handle different formats
const messagesEl = document.getElementById('modal-messages');
- if (schedule.messages && Array.isArray(schedule.messages)) {
- messagesEl.innerHTML = schedule.messages.map((msg, idx) => `
+
+ // Check all possible message fields
+ console.log('Messages field:', schedule.messages);
+ console.log('Message field:', schedule.message);
+ console.log('Raw schedule:', JSON.stringify(schedule, null, 2));
+
+ if (schedule.messages && Array.isArray(schedule.messages) && schedule.messages.length > 0) {
+ messagesEl.innerHTML = schedule.messages.map((msg, idx) => {
+ const content = typeof msg === 'string' ? msg :
+ (msg.content || msg.text || JSON.stringify(msg));
+ const role = typeof msg === 'object' ? (msg.role || 'user') : 'user';
+ return `
Message ${idx + 1}
-
Role: ${msg.role || 'user'}
+
Role: ${role}
Content:
-
${typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content, null, 2)}
+
${typeof content === 'string' ? content : JSON.stringify(content, null, 2)}
- `).join('');
+ `;
+ }).join('');
+ } else if (schedule.message) {
+ // Single message field
+ const content = typeof schedule.message === 'string' ? schedule.message : JSON.stringify(schedule.message, null, 2);
+ messagesEl.innerHTML = `${content}
`;
} else {
- messagesEl.textContent = getMessageContent(schedule);
+ // Show raw data for debugging
+ messagesEl.innerHTML = `${JSON.stringify(schedule, null, 2)}
`;
}
document.getElementById('schedule-modal').classList.add('active');