Broker sessions rest while nothing needs them

A firm's client used to stay logged in around the clock, renewing on a fixed
timer overnight and at weekends. Now, once a firm has nothing open, nothing
pending and nothing left to trade before its next session for a random
15–45 minutes, its client disconnects and the dashboard shows it Resting.
It logs back in a random 20–50 minutes before the next session opens, at a
check-in every 3–7 Central daytime hours, or at once when trading starts, a
manual leg, copy trade, manual order or AutoBuyer run needs it. Token
renewals fall at random points (Tradovate 15–45 min before expiry, TopstepX
every 45–150 min). Settings → Trading → Rest idle broker sessions
(session_rest) turns it off.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Brandon Li
2026-10-21 13:28:47 -05:00
co-authored by Claude Opus 5.5
parent 6dd2528fe2
commit 5eb0ea7760
18 changed files with 872 additions and 41 deletions
+4
View File
@@ -13,6 +13,7 @@
import { createRun } from './db';
import { findAutomation, resolveSteps } from './automations';
import { wakeAllFirms } from './clients';
export class QueueRunError extends Error {
constructor(message: string, readonly status: number) {
@@ -52,5 +53,8 @@ export function queueRun(automationId: string, supplied: Record<string, unknown>
}
const run = createRun(automationId, resolved.length, inputs);
// A purchase brings a new account: a resting session (lib/clients.ts)
// logs back in now so it is seen, and traded if it can be.
wakeAllFirms('AutoBuyer run');
return { runId: run.id, totalSteps: run.total_steps, inputs };
}