mirror of
https://github.com/legop3/MultiRoombaRover.git
synced 2026-09-16 01:21:20 -04:00
overseer v2 4
This commit is contained in:
@@ -26,21 +26,29 @@ function buildToolState({ mode, homeAssistantState, neatoState, liftState }) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function buildConversation({ recentMessages, name }) {
|
function buildConversation({ recentMessages, name }) {
|
||||||
const rows = [];
|
const messages = [];
|
||||||
(recentMessages || []).forEach((entry) => {
|
(recentMessages || []).forEach((entry) => {
|
||||||
const text = String(entry?.text || '').trim();
|
const text = String(entry?.text || '').trim();
|
||||||
if (!text) return;
|
if (!text) return;
|
||||||
const who = entry?.system ? (entry?.nickname || name || 'Overseer') : (entry?.nickname || 'user');
|
const isAssistant = Boolean(entry?.bot || entry?.system);
|
||||||
rows.push(`${who}: ${text}`);
|
const nickname = String(entry?.nickname || (isAssistant ? name || 'Overseer' : 'user')).trim();
|
||||||
|
if (isAssistant) {
|
||||||
|
messages.push({ role: 'assistant', content: text });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
messages.push({ role: 'user', content: `${nickname}: ${text}` });
|
||||||
});
|
});
|
||||||
return rows;
|
return messages;
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildModelMessages({ systemPrompt, stateUpdate, transcriptRows, availableTools, blockedTools }) {
|
function buildModelMessages({ systemPrompt, stateUpdate, conversationMessages, availableTools, blockedTools }) {
|
||||||
const messages = [];
|
const messages = [];
|
||||||
messages.push({ role: 'system', content: systemPrompt });
|
messages.push({ role: 'system', content: systemPrompt });
|
||||||
messages.push({ role: 'user', content: `STATE_UPDATE\n${stateUpdate}` });
|
messages.push({ role: 'user', content: `STATE_UPDATE\n${stateUpdate}` });
|
||||||
transcriptRows.forEach((row) => messages.push({ role: 'user', content: row }));
|
(conversationMessages || []).forEach((message) => {
|
||||||
|
if (!message || !message.role || !message.content) return;
|
||||||
|
messages.push(message);
|
||||||
|
});
|
||||||
messages.push({
|
messages.push({
|
||||||
role: 'user',
|
role: 'user',
|
||||||
content: `available_tools:\n${availableTools.map((tool) => `- ${tool}`).join('\n') || '- none'}`,
|
content: `available_tools:\n${availableTools.map((tool) => `- ${tool}`).join('\n') || '- none'}`,
|
||||||
|
|||||||
@@ -144,18 +144,23 @@ async function runDecision(triggerReason) {
|
|||||||
const stateUpdate = toStateUpdate({ mode, homeAssistantState, neatoState, liftState, roster, triggerReason });
|
const stateUpdate = toStateUpdate({ mode, homeAssistantState, neatoState, liftState, roster, triggerReason });
|
||||||
const toolState = buildToolState({ mode, homeAssistantState, neatoState, liftState });
|
const toolState = buildToolState({ mode, homeAssistantState, neatoState, liftState });
|
||||||
|
|
||||||
const human = getRecentMessages(MAX_CHAT_CONTEXT, { includeSystem: false });
|
const recentConversation = getRecentMessages(MAX_CHAT_CONTEXT + MAX_BOT_CONTEXT, { includeSystem: true });
|
||||||
const bots = getRecentMessages(100, { includeSystem: true }).filter((entry) => entry?.system).slice(-MAX_BOT_CONTEXT);
|
const conversationMessages = buildConversation({ recentMessages: recentConversation, name });
|
||||||
const transcriptRows = buildConversation({ recentMessages: [...human, ...bots].slice(-(MAX_CHAT_CONTEXT + MAX_BOT_CONTEXT)), name });
|
|
||||||
|
|
||||||
const systemPrompt = await readPrompt();
|
const systemPrompt = await readPrompt();
|
||||||
const modelMessages = buildModelMessages({ systemPrompt, stateUpdate, transcriptRows, availableTools: toolState.available, blockedTools: toolState.blocked });
|
const modelMessages = buildModelMessages({
|
||||||
|
systemPrompt,
|
||||||
|
stateUpdate,
|
||||||
|
conversationMessages,
|
||||||
|
availableTools: toolState.available,
|
||||||
|
blockedTools: toolState.blocked,
|
||||||
|
});
|
||||||
|
|
||||||
updateStatus({
|
updateStatus({
|
||||||
phase: 'awaiting_model',
|
phase: 'awaiting_model',
|
||||||
lastSystemPrompt: systemPrompt,
|
lastSystemPrompt: systemPrompt,
|
||||||
lastStateUpdate: stateUpdate,
|
lastStateUpdate: stateUpdate,
|
||||||
lastTranscript: transcriptRows,
|
lastTranscript: conversationMessages,
|
||||||
lastAvailableTools: toolState.available,
|
lastAvailableTools: toolState.available,
|
||||||
lastBlockedTools: toolState.blocked,
|
lastBlockedTools: toolState.blocked,
|
||||||
lastModelMessages: modelMessages,
|
lastModelMessages: modelMessages,
|
||||||
|
|||||||
Reference in New Issue
Block a user