From 6dfc30d1f60518be3d21a606518117a685f94bb9 Mon Sep 17 00:00:00 2001 From: legop3 Date: Thu, 28 May 2026 03:03:10 -0400 Subject: [PATCH] overseer configurables --- server/config.example.yaml | 2 ++ server/src/services/overseerControlService/index.js | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/server/config.example.yaml b/server/config.example.yaml index 03f3436e..e298857b 100644 --- a/server/config.example.yaml +++ b/server/config.example.yaml @@ -18,6 +18,8 @@ overseerControl: observeOnly: true alwaysRunModel: false postToolsOnlyMessages: false + tiebreakerEnable: false + runWhileNoPeopleOnline: false name: "The Overseer" model: "qwen2.5:7b-instruct" ollamaServer: "http://127.0.0.1:11434" diff --git a/server/src/services/overseerControlService/index.js b/server/src/services/overseerControlService/index.js index e8023656..a1ee6b1c 100644 --- a/server/src/services/overseerControlService/index.js +++ b/server/src/services/overseerControlService/index.js @@ -44,6 +44,8 @@ const heartbeatMs = normalizeMs(Number(overseerConfig.heartbeatMs), DEFAULT_HEAR const postChatDelayMs = normalizeMs(Number(overseerConfig.postChatDelayMs), DEFAULT_POST_CHAT_DELAY_MS); const alwaysRunModel = Boolean(overseerConfig.alwaysRunModel); const postToolsOnlyMessages = Boolean(overseerConfig.postToolsOnlyMessages); +const tiebreakerEnable = Boolean(overseerConfig.tiebreakerEnable); +const runWhileNoPeopleOnline = Boolean(overseerConfig.runWhileNoPeopleOnline); const profileImageUrl = String(overseerConfig.profileImageUrl || '').trim() || null; const ollamaClient = ollamaUrl ? new Ollama({ host: ollamaUrl }) : null; @@ -72,6 +74,8 @@ let status = { postChatDelayMs, alwaysRunModel, postToolsOnlyMessages, + tiebreakerEnable, + runWhileNoPeopleOnline, running: false, inFlight: false, phase: 'idle', @@ -134,7 +138,14 @@ function buildVoteStatus() { const eligibleCount = votesByIdentity.size; const onlineCount = yesCount + noCount; - const gatePassed = eligibleCount > 0 && yesCount > noCount; + let gatePassed = false; + if (eligibleCount === 0) { + gatePassed = runWhileNoPeopleOnline; + } else if (yesCount === noCount) { + gatePassed = tiebreakerEnable; + } else { + gatePassed = yesCount > noCount; + } return { yesCount, noCount,