cat() with message() for console
output, with proper verbose controltempdir() by default instead
of userโs workspace.GlobalEnv modifications - now using
package-private environmentcache_dir now defaults to tempdir()
instead of โconsensus_cacheโlog_dir now defaults to tempdir() instead
of โlogsโclusters_to_analyze:
Allows users to specify exactly which clusters to analyze
force_rerun: Forces
fresh analysis of controversial clusters
clusters_to_analyze for
targeted workflowsnormalize_annotation(): Handles annotation variations
(e.g., โT cellsโ vs โT lymphocytesโ)calculate_simple_consensus(): Fast local consensus
calculation with CP and entropy metricsBaseAPIProcessor with consistent
make_api_call() and extract_response_content()
methodsapi_logs/ subdirectories within each sessionEnhanced directory structure:
logs/
โโโ mllm_YYYYMMDD_HHMMSS.log # Main session log
โโโ YYYYMMDD_HHMMSS/ # Session directory
โ โโโ cluster_X_discussion.md # Discussion logs (fixed format)
โ โโโ api_logs/ # Complete API call logs (NEW)
โ โโโ provider_model_timestamp.json
โ โโโ provider_model_timestamp.mdDiscussionLogger class
and scattered write_log callsUnifiedLogger R6 class with
structured JSON output, multi-level logging, and performance
monitoringconfigure_logger(),
get_logger(), log_info(),
log_warn(), log_error(),
log_debug()logger
parameters from interactive_consensus_annotation() and
related functionsDiscussionLogger class (still exported for backward
compatibility but not recommended)gemini-2.0-flash-lite to supported models
listgemini-2.0-flash or gemini-2.0-flash-lite for
better performance and continued supportgemini-1.5-pro and
gemini-1.5-flash will continue to work until September 24,
2025as.logical(from) error:
Resolved critical error that occurred when processing large numbers of
clusters (60+ clusters), which was caused by non-character data being
passed to strsplit() functionstryCatch() blocks around all
strsplit() operations in API processing functionsprocess_openrouter.R,
process_anthropic.R, process_openai.R,
process_deepseek.R, process_qwen.R,
process_stepfun.R, process_minimax.R,
process_zhipu.R, process_gemini.R,
process_grok.R) now include improved error handlingunlist() operations to filter out NULL values and handle
errors gracefullycheck_consensus.R to handle edge cases with malformed
responsesprompt_templates.Rconsensus_annotation.R to
ensure cluster indices start from 0