Compare commits

...

2 Commits

Author SHA1 Message Date
Raven Scott
aa70e42fdc change internal agent prefix 2024-07-07 22:40:22 -04:00
Raven Scott
c530a8d69c Add back file menu 2024-07-07 22:39:31 -04:00
2 changed files with 58 additions and 14 deletions

7
app.js
View File

@ -1116,6 +1116,7 @@ function addMessage(name, message, avatar, topic) {
const messageText = document.createElement('div'); const messageText = document.createElement('div');
messageText.classList.add('message-text'); messageText.classList.add('message-text');
messageText.innerHTML = message; messageText.innerHTML = message;
messageContent.appendChild(senderName); messageContent.appendChild(senderName);
@ -1162,8 +1163,7 @@ async function sendMessage(e) {
const timestamp = Date.now(); const timestamp = Date.now();
console.log("Sending message to current topic:", topic); // Add logging console.log("Sending message to current topic:", topic); // Add logging
if (message.startsWith('>')) {
if (message.startsWith('~')) {
await handleCommand(message, { await handleCommand(message, {
eventEmitter, eventEmitter,
currentTopic: topic, // Pass the current topic as a string currentTopic: topic, // Pass the current topic as a string
@ -1173,7 +1173,8 @@ async function sendMessage(e) {
leaveRoom, leaveRoom,
createRoom, createRoom,
listFiles, listFiles,
deleteFile deleteFile,
servePort
}); });
return; return;
} }

View File

@ -11,7 +11,7 @@ if (fs.existsSync(agentAvatarPath)) {
} }
export default async function handleCommand(command, context) { export default async function handleCommand(command, context) {
const { eventEmitter, currentTopic, clearMessages, addMessage, joinRoom, leaveRoom, createRoom, listFiles } = context; const { eventEmitter, currentTopic, clearMessages, addMessage, joinRoom, leaveRoom, createRoom, listFiles, deleteFile, servePort } = context;
console.log("Context received in handleCommand:", context); // Add logging console.log("Context received in handleCommand:", context); // Add logging
@ -23,39 +23,82 @@ export default async function handleCommand(command, context) {
console.log("Current topic:", currentTopic); // Add logging to check the current topic console.log("Current topic:", currentTopic); // Add logging to check the current topic
switch (cmd) { switch (cmd) {
case '~clear': case '>clear':
clearMessages(currentTopic); clearMessages(currentTopic);
break; break;
case '~ping': case '>ping':
addMessage('LinkUp', 'pong', agentAvatar, currentTopic); addMessage('LinkUp', 'pong', agentAvatar, currentTopic);
break; break;
case '~help': case '>help':
addMessage('LinkUp', 'Available commands:\n- ~clear\n- ~ping\n- ~help\n- ~join [topic]\n- ~leave\n- ~create [alias]\n- ~list-files', agentAvatar, currentTopic); addMessage('LinkUp', 'Available commands:\n- >clear\n- >ping\n- >help\n- >join [topic]\n- >leave\n- >create [alias]\n- >list-files', agentAvatar, currentTopic);
break; break;
case '~join': case '>join':
if (restArgs) { if (restArgs) {
await joinRoom(currentTopic, restArgs); await joinRoom(currentTopic, restArgs);
} else { } else {
addMessage('LinkUp', 'Usage: ~join [topic]', agentAvatar, currentTopic); addMessage('LinkUp', 'Usage: >join [topic]', agentAvatar, currentTopic);
} }
break; break;
case '~leave': case '>leave':
leaveRoom(currentTopic); leaveRoom(currentTopic);
break; break;
case '~create': case '>create':
if (restArgs) { if (restArgs) {
await createRoom(currentTopic, restArgs); await createRoom(currentTopic, restArgs);
} else { } else {
addMessage('LinkUp', 'Usage: ~create [alias]', agentAvatar, currentTopic); addMessage('LinkUp', 'Usage: >create [alias]', agentAvatar, currentTopic);
} }
break; break;
case '~list-files': case '>list-files':
const files = await listFiles(); const files = await listFiles();
const fileList = files.length > 0 ? files.map(file => `- ${file}`).join('\n') : 'No files available'; const fileList = files.length > 0 ? files.map(file => `- ${file}`).join('\n') : 'No files available';
addMessage('LinkUp', `Available files:\n${fileList}`, agentAvatar, currentTopic); addMessage('LinkUp', `Available files:\n${fileList}`, agentAvatar, currentTopic);
// Render the file list with delete buttons
renderFileList(files, deleteFile, servePort);
break; break;
default: default:
addMessage('LinkUp', `Unknown command: ${cmd}`, agentAvatar, currentTopic); addMessage('LinkUp', `Unknown command: ${cmd}`, agentAvatar, currentTopic);
console.log('Unknown command:', command); console.log('Unknown command:', command);
} }
} }
function renderFileList(files, deleteFile, servePort) {
const container = document.querySelector('#messages');
if (!container) {
console.error('Element #messages not found');
return;
}
const fileList = document.createElement('ul');
files.forEach(file => {
const listItem = document.createElement('li');
const fileButton = document.createElement('button');
fileButton.textContent = file.trim();
fileButton.onclick = () => downloadFile(file.trim(), servePort);
const deleteButton = document.createElement('button');
deleteButton.textContent = 'Delete';
deleteButton.onclick = async () => {
await deleteFile(file);
listItem.remove();
};
listItem.appendChild(fileButton);
listItem.appendChild(deleteButton);
fileList.appendChild(listItem);
});
container.appendChild(fileList);
}
function downloadFile(filename, servePort) {
const url = `http://localhost:${servePort}/files/${filename}`;
const link = document.createElement('a');
link.href = url;
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}