diff --git a/src/common/environment.ts b/src/common/environment.ts index 047e8df..9089f3a 100644 --- a/src/common/environment.ts +++ b/src/common/environment.ts @@ -3,6 +3,7 @@ import {saveData} from "../db/database"; import {Answers} from "../model/answers"; import {ifTrue} from "../util/utils"; import {AiProvider} from "../model/ai-provider"; +import {ImageHandleFallbackPolicy, ImageHandlePolicy, RateLimitFallbackPolicy} from "./policies"; export class Environment { static BOT_TOKEN: string; @@ -31,6 +32,10 @@ export class Environment { static DEFAULT_AI_PROVIDER: AiProvider; + static RATE_LIMIT_FALLBACK_POLICY: RateLimitFallbackPolicy; + static IMAGE_HANDLE_POLICY: ImageHandlePolicy; + static IMAGE_HANDLE_FALLBACK_POLICY: ImageHandleFallbackPolicy; + static SYSTEM_PROMPT?: string; static OLLAMA_ADDRESS?: string; @@ -86,6 +91,27 @@ export class Environment { Environment.DEFAULT_AI_PROVIDER = AiProvider.OLLAMA; } + const rateLimitFallbackPolicy = process.env.RATE_LIMIT_FALLBACK_POLICY || "NOTIFY_USER"; + if (Object.values(RateLimitFallbackPolicy).includes(rateLimitFallbackPolicy as RateLimitFallbackPolicy)) { + Environment.RATE_LIMIT_FALLBACK_POLICY = rateLimitFallbackPolicy as RateLimitFallbackPolicy; + } else { + Environment.RATE_LIMIT_FALLBACK_POLICY = RateLimitFallbackPolicy.NOTIFY_USER; + } + + const imageHandlePolicy = process.env.IMAGE_HANDLE_POLICY || "HANDLE_IF_CAPABLE"; + if (Object.values(ImageHandlePolicy).includes(imageHandlePolicy as ImageHandlePolicy)) { + Environment.IMAGE_HANDLE_POLICY = imageHandlePolicy as ImageHandlePolicy; + } else { + Environment.IMAGE_HANDLE_POLICY = ImageHandlePolicy.HANDLE_IF_CAPABLE; + } + + const imageHandleFallbackPolicy = process.env.IMAGE_HANDLE_FALLBACK_POLICY || "NOTIFY_USER"; + if (Object.values(ImageHandleFallbackPolicy).includes(imageHandleFallbackPolicy as ImageHandleFallbackPolicy)) { + Environment.IMAGE_HANDLE_FALLBACK_POLICY = imageHandleFallbackPolicy as ImageHandleFallbackPolicy; + } else { + Environment.IMAGE_HANDLE_FALLBACK_POLICY = ImageHandleFallbackPolicy.NOTIFY_USER; + } + Environment.SYSTEM_PROMPT = process.env.SYSTEM_PROMPT?.trim(); Environment.OLLAMA_ADDRESS = process.env.OLLAMA_ADDRESS; diff --git a/src/common/policies.ts b/src/common/policies.ts new file mode 100644 index 0000000..33f4602 --- /dev/null +++ b/src/common/policies.ts @@ -0,0 +1,17 @@ +export enum RateLimitFallbackPolicy { + NOTIFY_USER = "NOTIFY_USER", + IGNORE_USER = "IGNORE_USER", + USE_OLLAMA = "USE_OLLAMA", +} + +export enum ImageHandlePolicy { + IGNORE = "IGNORE", + FORCE_HANDLE = "FORCE_HANDLE", + HANDLE_IF_CAPABLE = "HANDLE_IF_CAPABLE", +} + +export enum ImageHandleFallbackPolicy { + NOTIFY_USER = "NOTIFY_USER", + IGNORE_USER = "IGNORE_USER", + USE_OLLAMA = "USE_OLLAMA", +} \ No newline at end of file