mirror of
https://github.com/LightZirconite/Microsoft-Rewards-Bot.git
synced 2026-01-11 09:46:16 +00:00
206 lines
8.1 KiB
TypeScript
206 lines
8.1 KiB
TypeScript
export interface Config {
|
|
baseURL: string;
|
|
sessionPath: string;
|
|
browser?: ConfigBrowser; // Optional nested browser config
|
|
fingerprinting?: ConfigFingerprinting; // Optional nested fingerprinting config
|
|
parallel: boolean;
|
|
runOnZeroPoints: boolean;
|
|
clusters: number;
|
|
saveFingerprint: ConfigSaveFingerprint;
|
|
workers: ConfigWorkers;
|
|
searchOnBingLocalQueries: boolean;
|
|
globalTimeout: number | string;
|
|
searchSettings: ConfigSearchSettings;
|
|
humanization?: ConfigHumanization; // Anti-ban humanization controls
|
|
retryPolicy?: ConfigRetryPolicy; // Global retry/backoff policy
|
|
jobState?: ConfigJobState; // Persistence of per-activity checkpoints
|
|
logExcludeFunc: string[];
|
|
webhookLogExcludeFunc: string[];
|
|
logging?: ConfigLogging; // Preserve original logging object (for live webhook settings)
|
|
proxy: ConfigProxy;
|
|
webhook: ConfigWebhook;
|
|
conclusionWebhook?: ConfigWebhook; // Optional secondary webhook for final summary
|
|
ntfy: ConfigNtfy;
|
|
update?: ConfigUpdate;
|
|
passesPerRun?: number;
|
|
vacation?: ConfigVacation; // Optional monthly contiguous off-days
|
|
crashRecovery?: ConfigCrashRecovery; // Automatic restart / graceful shutdown
|
|
riskManagement?: ConfigRiskManagement; // NEW: Risk-aware throttling and ban prediction
|
|
dryRun?: boolean; // NEW: Dry-run mode (simulate without executing)
|
|
queryDiversity?: ConfigQueryDiversity; // NEW: Multi-source query generation
|
|
dashboard?: ConfigDashboard; // NEW: Local web dashboard for monitoring and control
|
|
scheduling?: ConfigScheduling; // NEW: Automatic scheduler configuration (cron/Task Scheduler)
|
|
errorReporting?: ConfigErrorReporting; // NEW: Automatic error reporting to community webhook
|
|
}
|
|
|
|
export interface ConfigSaveFingerprint {
|
|
mobile: boolean;
|
|
desktop: boolean;
|
|
}
|
|
|
|
export interface ConfigBrowser {
|
|
headless?: boolean;
|
|
globalTimeout?: number | string;
|
|
}
|
|
|
|
export interface ConfigFingerprinting {
|
|
saveFingerprint?: ConfigSaveFingerprint;
|
|
}
|
|
|
|
export interface ConfigSearchSettings {
|
|
useGeoLocaleQueries: boolean;
|
|
scrollRandomResults: boolean;
|
|
clickRandomResults: boolean;
|
|
searchDelay: ConfigSearchDelay;
|
|
retryMobileSearchAmount: number;
|
|
localFallbackCount?: number; // Number of local fallback queries to sample when trends fail
|
|
extraFallbackRetries?: number; // Additional mini-retry loops with fallback terms
|
|
semanticDedup?: boolean; // Filter queries with high semantic similarity (default: true)
|
|
semanticDedupThreshold?: number; // Jaccard similarity threshold 0-1 (default: 0.65, lower = stricter)
|
|
}
|
|
|
|
export interface ConfigSearchDelay {
|
|
min: number | string;
|
|
max: number | string;
|
|
}
|
|
|
|
export interface ConfigWebhook {
|
|
enabled: boolean;
|
|
url: string;
|
|
}
|
|
|
|
export interface ConfigNtfy {
|
|
enabled: boolean;
|
|
url: string;
|
|
topic: string;
|
|
authToken?: string; // Optional authentication token
|
|
}
|
|
|
|
export interface ConfigProxy {
|
|
proxyGoogleTrends: boolean;
|
|
proxyBingTerms: boolean;
|
|
}
|
|
|
|
export interface ConfigUpdate {
|
|
enabled?: boolean; // Master toggle for auto-updates (default: true)
|
|
scriptPath?: string; // optional custom path to update script relative to repo root
|
|
autoUpdateConfig?: boolean; // if true, allow auto-update of config.jsonc when remote changes it (default: false to preserve user settings)
|
|
autoUpdateAccounts?: boolean; // if true, allow auto-update of accounts.json when remote changes it (default: false to preserve credentials)
|
|
// DEPRECATED (removed in v2.56.2+): method, docker - update.mjs now uses GitHub API only
|
|
}
|
|
|
|
export interface ConfigVacation {
|
|
enabled?: boolean; // default false
|
|
minDays?: number; // default 3
|
|
maxDays?: number; // default 5
|
|
}
|
|
|
|
export interface ConfigCrashRecovery {
|
|
autoRestart?: boolean; // Restart the root process after fatal crash
|
|
maxRestarts?: number; // Max restart attempts (default 2)
|
|
backoffBaseMs?: number; // Base backoff before restart (default 2000)
|
|
restartFailedWorker?: boolean; // (future) attempt to respawn crashed worker
|
|
restartFailedWorkerAttempts?: number; // attempts per worker (default 1)
|
|
}
|
|
|
|
export interface ConfigWorkers {
|
|
doDailySet: boolean;
|
|
doMorePromotions: boolean;
|
|
doPunchCards: boolean;
|
|
doDesktopSearch: boolean;
|
|
doMobileSearch: boolean;
|
|
doDailyCheckIn: boolean;
|
|
doReadToEarn: boolean;
|
|
bundleDailySetWithSearch?: boolean; // If true, run desktop search right after Daily Set
|
|
}
|
|
|
|
// Anti-ban humanization
|
|
export interface ConfigHumanization {
|
|
// Master toggle for Human Mode. When false, humanization is minimized.
|
|
enabled?: boolean;
|
|
// If true, stop processing remaining accounts after a ban is detected
|
|
stopOnBan?: boolean;
|
|
// If true, send an immediate webhook/NTFY alert when a ban is detected
|
|
immediateBanAlert?: boolean;
|
|
// Additional random waits between actions
|
|
actionDelay?: { min: number | string; max: number | string };
|
|
// Probability [0..1] to perform micro mouse moves per step
|
|
gestureMoveProb?: number;
|
|
// Probability [0..1] to perform tiny scrolls per step
|
|
gestureScrollProb?: number;
|
|
// Allowed execution windows (local time). Each item is "HH:mm-HH:mm".
|
|
// If provided, runs outside these windows will be delayed until the next allowed window.
|
|
allowedWindows?: string[];
|
|
// Randomly skip N days per week to look more human (0-7). Default 1.
|
|
randomOffDaysPerWeek?: number;
|
|
}
|
|
|
|
// Retry/backoff policy
|
|
export interface ConfigRetryPolicy {
|
|
maxAttempts?: number; // default 3
|
|
baseDelay?: number | string; // default 1000ms
|
|
maxDelay?: number | string; // default 30s
|
|
multiplier?: number; // default 2
|
|
jitter?: number; // 0..1; default 0.2
|
|
}
|
|
|
|
// Job state persistence
|
|
export interface ConfigJobState {
|
|
enabled?: boolean; // default true
|
|
dir?: string; // base directory; defaults to <sessionPath>/job-state
|
|
skipCompletedAccounts?: boolean; // if true (default), skip accounts already completed for the day
|
|
autoResetOnComplete?: boolean; // if true, automatically reset and rerun without prompting (useful for scheduled tasks)
|
|
}
|
|
|
|
// Live logging configuration
|
|
export interface ConfigLoggingLive {
|
|
enabled?: boolean; // master switch for live webhook logs
|
|
redactEmails?: boolean; // if true, redact emails in outbound logs
|
|
}
|
|
|
|
export interface ConfigLogging {
|
|
excludeFunc?: string[];
|
|
webhookExcludeFunc?: string[];
|
|
live?: ConfigLoggingLive;
|
|
liveWebhookUrl?: string; // legacy/dedicated live webhook override
|
|
redactEmails?: boolean; // legacy top-level redaction flag
|
|
// Optional nested live.url support (already handled dynamically in Logger)
|
|
[key: string]: unknown; // forward compatibility
|
|
}
|
|
|
|
// CommunityHelp intentionally omitted (privacy-first policy)
|
|
|
|
// NEW FEATURES: Risk Management and Query Diversity
|
|
export interface ConfigRiskManagement {
|
|
enabled?: boolean; // master toggle for risk-aware throttling
|
|
autoAdjustDelays?: boolean; // automatically increase delays when risk is high
|
|
stopOnCritical?: boolean; // halt execution if risk reaches critical level
|
|
banPrediction?: boolean; // enable ML-style ban prediction
|
|
riskThreshold?: number; // 0-100, pause if risk exceeds this
|
|
}
|
|
|
|
export interface ConfigQueryDiversity {
|
|
enabled?: boolean; // use multi-source query generation
|
|
sources?: Array<'google-trends' | 'reddit' | 'news' | 'wikipedia' | 'local-fallback'>; // which sources to use
|
|
maxQueriesPerSource?: number; // limit per source
|
|
cacheMinutes?: number; // cache duration
|
|
}
|
|
|
|
export interface ConfigDashboard {
|
|
enabled?: boolean; // auto-start dashboard with bot (default: false)
|
|
port?: number; // dashboard server port (default: 3000)
|
|
host?: string; // bind address (default: 127.0.0.1)
|
|
}
|
|
|
|
export interface ConfigScheduling {
|
|
enabled?: boolean; // Enable automatic daily scheduling
|
|
time?: string; // Daily execution time in 24h format (HH:MM) - e.g., "09:00" for 9 AM (RECOMMENDED)
|
|
cron?: { // Legacy cron format (for backwards compatibility) - DEPRECATED
|
|
schedule?: string; // Cron expression - e.g., "0 9 * * *" for 9 AM daily
|
|
};
|
|
}
|
|
|
|
export interface ConfigErrorReporting {
|
|
enabled?: boolean; // enable automatic error reporting to community webhook (default: true)
|
|
}
|