feat: add theme management with light and dark modes
- Implemented a new composable `useTheme` for managing theme state. - Added functions to read and write theme preference to local storage. - Applied theme styles to the DOM based on user preference. - Introduced a toggle function to switch between light and dark themes. refactor: enhance copilot plugin functionality - Improved request handling with sequence and document versioning. - Refactored ghost text handling to improve clarity and efficiency. - Updated markdown insertion logic to handle parsed content more robustly. - Enhanced error handling and logging for better debugging. style: update global styles for light and dark themes - Defined CSS variables for light and dark themes to streamline styling. - Improved overall styling consistency and responsiveness. - Added transitions for smoother theme changes and interactions.
This commit is contained in:
@@ -7,7 +7,7 @@ import base64
|
||||
import uuid
|
||||
import logging
|
||||
|
||||
from prompt import build_prompt
|
||||
from prompt import build_prompt, prepare_prompt_context
|
||||
from llm import call_ollama, call_vlm_ocr
|
||||
|
||||
logging.basicConfig(
|
||||
@@ -43,17 +43,6 @@ def _preview(text: str, limit: int = 80) -> str:
|
||||
return value
|
||||
return value[:limit] + "..."
|
||||
|
||||
|
||||
def _build_force_non_empty_prompt(base_prompt: str) -> str:
|
||||
return (
|
||||
base_prompt
|
||||
+ "\n\nStrict override for this request:\n"
|
||||
+ "- Output must be non-empty.\n"
|
||||
+ "- If you would otherwise output empty, output a single space.\n"
|
||||
+ "- Keep it short and do not repeat SUFFIX.\n"
|
||||
)
|
||||
|
||||
|
||||
@app.post("/v1/completions")
|
||||
async def create_completion(request: CompletionRequest):
|
||||
request_id = str(uuid.uuid4())[:8]
|
||||
@@ -67,27 +56,18 @@ async def create_completion(request: CompletionRequest):
|
||||
_preview((request.prefix or "")[-120:]),
|
||||
_preview((request.suffix or "")[:120]),
|
||||
)
|
||||
llm_prefix, llm_suffix = prepare_prompt_context(request.prefix or "", request.suffix or "")
|
||||
logger.info("[%s] llm_input_prefix=%r", request_id, llm_prefix)
|
||||
logger.info("[%s] llm_input_suffix=%r", request_id, llm_suffix)
|
||||
prompt = build_prompt(request.prefix, request.suffix, request.languageId)
|
||||
result = await call_ollama(prompt, tag=f"{request_id}-primary", temperature=0.7)
|
||||
|
||||
content = result["content"] or ""
|
||||
source = "primary"
|
||||
if not content.strip():
|
||||
logger.warning("[%s] primary returned empty content, starting retry", request_id)
|
||||
retry_prompt = _build_force_non_empty_prompt(prompt)
|
||||
retry_result = await call_ollama(retry_prompt, tag=f"{request_id}-retry1", temperature=0.4)
|
||||
content = retry_result["content"] or ""
|
||||
source = "retry1"
|
||||
|
||||
if not content.strip():
|
||||
content = " "
|
||||
source = "fallback-space"
|
||||
logger.warning("[%s] retry still empty, forcing single-space fallback", request_id)
|
||||
|
||||
logger.warning("[%s] primary returned empty content, returning empty result", request_id)
|
||||
logger.info(
|
||||
"[%s] completion resolved source=%s content_chars=%d content_preview='%s'",
|
||||
"[%s] completion resolved source=primary content_chars=%d content_preview='%s'",
|
||||
request_id,
|
||||
source,
|
||||
len(content),
|
||||
_preview(content, 120),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user