{
  "_id": "6af5bafef58eaab79920bb81",
  "Package": "PsyLingLLM",
  "Type": "Package",
  "Title": "Tools for Psycholinguistic Experiments with Large Language\nModels",
  "Version": "0.4.0",
  "Authors@R": "person(\ngiven = \"Han\",\nfamily = \"Ming\",\nemail = \"hanmingpsy@gmail.com\",\nrole = c(\"aut\", \"cre\")\n)",
  "Description": "Provides tools for designing and running controlled\npsycholinguistic, psychological, cognitive, and educational\nexperiments with large language models. Registry-based\nconfiguration separates models, providers, and application\nprogramming interfaces so that compatible services can share\nexperimental designs. Functions support randomized and\nfactorial trials, multi-turn conversations, response and\nreasoning capture, timing and token measurements, and\nstructured result export.",
  "License": "MIT + file LICENSE",
  "URL": "https://github.com/HanMingPsy/PsyLingLLM-R",
  "BugReports": "https://github.com/HanMingPsy/PsyLingLLM-R/issues",
  "Encoding": "UTF-8",
  "Language": "en-US",
  "RoxygenNote": "7.3.2",
  "Config/testthat/edition": "3",
  "Config/pak/sysreqs": "libicu-dev libssl-dev libx11-dev zlib1g-dev",
  "Repository": "https://hanmingpsy.r-universe.dev",
  "Date/Publication": "2026-10-07 14:44:09 UTC",
  "RemoteUrl": "https://github.com/hanmingpsy/psylingllm-r",
  "RemoteRef": "HEAD",
  "RemoteSha": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
  "NeedsCompilation": "no",
  "Packaged": {
    "Date": "2026-11-12 13:06:53 UTC",
    "User": "root"
  },
  "Author": "Han Ming [aut, cre]",
  "Maintainer": "Han Ming <hanmingpsy@gmail.com>",
  "_user": "hanmingpsy",
  "_type": "src",
  "_file": "PsyLingLLM_0.4.0.tar.gz",
  "_fileid": "https://r2.ropensci.org/9cfecbeaa63ac6954735122914a28525f994e383c677a01175f34e93550d9552",
  "_filesize": 597394,
  "_sha256": "9cfecbeaa63ac6954735122914a28525f994e383c677a01175f34e93550d9552",
  "_expires": "2027-02-20T13:11:25.000Z",
  "_created": "2026-11-12T13:06:53.000Z",
  "_published": "2026-11-12T13:11:26.954Z",
  "_upstream": "https://github.com/hanmingpsy/psylingllm-r",
  "_status": "success",
  "_maintainer": {
    "name": "Han Ming",
    "email": "hanmingpsy@gmail.com",
    "login": "hanmingpsy",
    "description": "",
    "uuid": 232505089
  },
  "_jobs": [
    {
      "job": 131203256404,
      "time": 132,
      "config": "linux-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "13947491400"
    },
    {
      "job": 131203256387,
      "time": 155,
      "config": "linux-release-x86_64",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "13947745682"
    },
    {
      "job": 131203256233,
      "time": 212,
      "config": "macos-oldrel-arm64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "13947227226"
    },
    {
      "job": 131203256244,
      "time": 173,
      "config": "macos-release-arm64",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "13946349998"
    },
    {
      "job": 131201372670,
      "time": 204,
      "config": "source",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "13947590451"
    },
    {
      "job": 131203256388,
      "time": 100,
      "config": "wasm-release",
      "r": "4.6.0",
      "check": "OK",
      "artifact": "13946504724"
    },
    {
      "job": 131203256323,
      "time": 221,
      "config": "windows-devel-x86_64",
      "r": "4.7.0",
      "check": "OK",
      "artifact": "13947372070"
    },
    {
      "job": 131203256375,
      "time": 193,
      "config": "windows-oldrel-x86_64",
      "r": "4.5.3",
      "check": "OK",
      "artifact": "13946922504"
    },
    {
      "job": 131203256230,
      "time": 233,
      "config": "windows-release-x86_64",
      "r": "4.6.2",
      "check": "OK",
      "artifact": "13948195447"
    }
  ],
  "_buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416",
  "_commit": {
    "id": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
    "author": "Han Ming <hanmingpsy@gmail.com>",
    "committer": "Han Ming <hanmingpsy@gmail.com>",
    "message": "docs(package): update 0.4 release guidance\n",
    "time": 1791384249
  },
  "_distro": "resolute",
  "_host": "GitHub-Actions",
  "_registered": true,
  "_dependencies": [
    {
      "package": "R",
      "version": ">= 4.0",
      "role": "Depends"
    },
    {
      "package": "curl",
      "role": "Imports"
    },
    {
      "package": "writexl",
      "role": "Imports"
    },
    {
      "package": "dplyr",
      "version": ">= 1.1.0",
      "role": "Imports"
    },
    {
      "package": "tibble",
      "version": ">= 3.2.0",
      "role": "Imports"
    },
    {
      "package": "jsonlite",
      "version": ">= 1.8.0",
      "role": "Imports"
    },
    {
      "package": "magrittr",
      "role": "Imports"
    },
    {
      "package": "yaml",
      "role": "Imports"
    },
    {
      "package": "readr",
      "role": "Imports"
    },
    {
      "package": "readxl",
      "role": "Imports"
    },
    {
      "package": "openxlsx",
      "role": "Imports"
    },
    {
      "package": "stringr",
      "role": "Imports"
    },
    {
      "package": "stats",
      "role": "Imports"
    },
    {
      "package": "utils",
      "role": "Imports"
    },
    {
      "package": "stringi",
      "role": "Imports"
    },
    {
      "package": "jsonvalidate",
      "role": "Suggests"
    },
    {
      "package": "testthat",
      "version": ">= 3.0.0",
      "role": "Suggests"
    },
    {
      "package": "withr",
      "role": "Suggests"
    }
  ],
  "_owner": "hanmingpsy",
  "_selfowned": true,
  "_usedby": 0,
  "_updates": [
    {
      "week": "2026-36",
      "n": 21
    },
    {
      "week": "2026-37",
      "n": 3
    },
    {
      "week": "2026-38",
      "n": 11
    },
    {
      "week": "2026-40",
      "n": 17
    },
    {
      "week": "2026-41",
      "n": 3
    }
  ],
  "_tags": [],
  "_stars": 1,
  "_contributors": [
    {
      "user": "hanmingpsy",
      "count": 84,
      "uuid": 232505089
    }
  ],
  "_userbio": {
    "uuid": 232505089,
    "type": "user",
    "name": "HanMingPsy",
    "followers": 0
  },
  "_downloads": {
    "count": 0,
    "source": "https://cranlogs.r-pkg.org/downloads/total/last-month/PsyLingLLM"
  },
  "_devurl": "https://github.com/hanmingpsy/psylingllm-r",
  "_searchresults": 0,
  "_rbuild": "4.6.2",
  "_assets": [
    "extra/citation.cff",
    "extra/citation.html",
    "extra/citation.json",
    "extra/citation.txt",
    "extra/contents.json",
    "extra/manual.pdf",
    "extra/NEWS.html",
    "extra/NEWS.txt",
    "extra/PsyLingLLM.html",
    "extra/readme.html",
    "extra/readme.md",
    "LICENSE"
  ],
  "_homeurl": "https://github.com/hanmingpsy/psylingllm-r",
  "_realowner": "hanmingpsy",
  "_cranurl": true,
  "_releases": [
    {
      "version": "0.4.0",
      "date": "2026-11-11"
    }
  ],
  "_exports": [
    "adaptive_feedback_experiment",
    "build_body_pass2_structural",
    "build_registry_entry_from_analysis",
    "build_standardized_input",
    "cat_slowly",
    "classify_generation_interface",
    "coerce_path_segments",
    "common_error_blacklist",
    "complete_headers_for_pass2",
    "conversation_experiment",
    "conversation_experiment_with_feedback",
    "default_keyword_lexicon",
    "default_optional_keys",
    "detect_embedded_think_tag",
    "ensure_registry_header",
    "explain_alias",
    "extract_pass2_templates",
    "extract_usage_fields",
    "factorial_trial_experiment",
    "find_placeholder_path",
    "flat_key_to_regex",
    "flatten_json_paths",
    "format_registration_preview",
    "generate_llm_experiment_list",
    "generate_llm_factorial_experiment_list",
    "get_model_config",
    "get_registry_entry",
    "get_registry_path",
    "has_nonempty_text",
    "infer_role_mapping_from_body",
    "infer_structure_from_placeholder",
    "inject_optional_params",
    "is_invalid_candidate",
    "is_message_object",
    "json_get_by_path",
    "list_get_by_path",
    "llm_caller",
    "llm_register",
    "load_registry",
    "make_alias",
    "make_pass2_probe_inputs",
    "merge_defaults_for_probe",
    "multi_model_experiment",
    "normalize_history_messages",
    "normalize_path_key",
    "normalize_path_key_with_regex",
    "normalize_provider_label",
    "normalize_type_label",
    "probe_llm_streaming",
    "register_endpoint_offline",
    "register_endpoint_to_user_registry",
    "save_experiment_results",
    "score_candidates_ns",
    "score_candidates_st",
    "stream_reconstruct_text",
    "strip_optionals_from_body",
    "sub_placeholders",
    "trial_experiment",
    "update_progress_bar",
    "validate_experiment_config",
    "validate_registry_entry",
    "validate_registry_schema"
  ],
  "_help": [
    {
      "page": "adaptive_feedback_experiment",
      "title": "Run an Adaptive Feedback Experiment",
      "topics": [
        "adaptive_feedback_experiment",
        "conversation_experiment_with_feedback"
      ]
    },
    {
      "page": "build_body_pass2_structural",
      "title": "Build Pass-2 body",
      "topics": [
        "build_body_pass2_structural"
      ]
    },
    {
      "page": "build_registry_entry_from_analysis",
      "title": "Build a registry entry from analysis results",
      "topics": [
        "build_registry_entry_from_analysis"
      ]
    },
    {
      "page": "build_standardized_input",
      "title": "Build standardized Pass-2 headers & body from Pass-1 raw inputs",
      "topics": [
        "build_standardized_input"
      ]
    },
    {
      "page": "cat_slowly",
      "title": "Print lines gradually with delay (console-safe)",
      "topics": [
        "cat_slowly"
      ]
    },
    {
      "page": "classify_generation_interface",
      "title": "Classify LLM generation interface from URL (robust and version-agnostic)",
      "topics": [
        "classify_generation_interface"
      ]
    },
    {
      "page": "common_error_blacklist",
      "title": "Common provider error-field blacklist (path segments only)",
      "topics": [
        "common_error_blacklist"
      ]
    },
    {
      "page": "compare_path_line",
      "title": "Compare two optional scalar strings (paths). Return a structured line and a boolean flag.",
      "topics": [
        "compare_path_line"
      ]
    },
    {
      "page": "complete_headers_for_pass2",
      "title": "Complete headers minimally for Pass-2 (keeps user values)",
      "topics": [
        "complete_headers_for_pass2"
      ]
    },
    {
      "page": "conversation_experiment",
      "title": "Run a Multi-turn Conversation Experiment",
      "topics": [
        "conversation_experiment"
      ]
    },
    {
      "page": "default_keyword_lexicon",
      "title": "Default keyword lexicon for ns/st scoring",
      "topics": [
        "default_keyword_lexicon"
      ]
    },
    {
      "page": "default_optional_keys",
      "title": "Default optional keys for common LLM providers (explicit removal first)",
      "topics": [
        "default_optional_keys"
      ]
    },
    {
      "page": "detect_embedded_think_tag",
      "title": "Detect embedded <think> tags in model output",
      "topics": [
        "detect_embedded_think_tag"
      ]
    },
    {
      "page": "ensure_registry_header",
      "title": "Ensure registry directory exists and header is present",
      "topics": [
        "ensure_registry_header"
      ]
    },
    {
      "page": "explain_alias",
      "title": "Explain how an alias was derived from a model id",
      "topics": [
        "explain_alias"
      ]
    },
    {
      "page": "extract_pass2_templates",
      "title": "Tolerant extraction of Pass-2 templates (headers and body)",
      "topics": [
        "extract_pass2_templates"
      ]
    },
    {
      "page": "extract_usage_fields",
      "title": "Extract usage field names from a parsed non-streaming response",
      "topics": [
        "extract_usage_fields"
      ]
    },
    {
      "page": "factorial_trial_experiment",
      "title": "Run Factorial Trial Experiment (registry-driven, assistant-native)",
      "topics": [
        "factorial_trial_experiment"
      ]
    },
    {
      "page": "find_placeholder_path",
      "title": "Recursively find the first path to a placeholder string",
      "topics": [
        "find_placeholder_path"
      ]
    },
    {
      "page": "flatten_json_paths",
      "title": "Flatten a JSON-like object into (path, key, value) rows",
      "topics": [
        "flatten_json_paths"
      ]
    },
    {
      "page": "format_registration_preview",
      "title": "Render a registry entry preview (verbatim from the registry node)",
      "topics": [
        "format_registration_preview"
      ]
    },
    {
      "page": "generate_llm_experiment_list",
      "title": "Generate LLM Experiment List (CSV→XLSX conversion, UTF-8 safe)",
      "topics": [
        "generate_llm_experiment_list"
      ]
    },
    {
      "page": "generate_llm_factorial_experiment_list",
      "title": "Generate LLM Experiment List for Factorial Design (UTF-8 safe)",
      "topics": [
        "generate_llm_factorial_experiment_list"
      ]
    },
    {
      "page": "get_model_config",
      "title": "Resolve a model name (id or alias) to a registry entry (new registry-aware)",
      "topics": [
        "get_model_config"
      ]
    },
    {
      "page": "get_registry_entry",
      "title": "Retrieve a registry interface entry (inputs / outputs / streaming)",
      "topics": [
        "get_registry_entry"
      ]
    },
    {
      "page": "get_registry_path",
      "title": "Get user registry path (cross-platform, unified)",
      "topics": [
        "get_registry_path"
      ]
    },
    {
      "page": "has_nonempty_text",
      "title": "Does a value contain any non-empty textual content?",
      "topics": [
        "has_nonempty_text"
      ]
    },
    {
      "page": "infer_role_mapping_from_body",
      "title": "Infer role mapping from a chat-style LLM request body",
      "topics": [
        "infer_role_mapping_from_body"
      ]
    },
    {
      "page": "infer_structure_from_placeholder",
      "title": "Infer structure from where '\"\\${CONTENT}\"' lives",
      "topics": [
        "infer_structure_from_placeholder"
      ]
    },
    {
      "page": "inject_optional_params",
      "title": "Inject optional params into a body using a whitelist",
      "topics": [
        "inject_optional_params"
      ]
    },
    {
      "page": "is_invalid_candidate",
      "title": "Hard filter: blacklist, nullish, booleans, numeric-only, too-short Segment-exact blacklist (compares path segments, not substrings).",
      "topics": [
        "is_invalid_candidate"
      ]
    },
    {
      "page": "is_key",
      "title": "Utility: check if a path segment is a named key",
      "topics": [
        "is_key"
      ]
    },
    {
      "page": "is_message_object",
      "title": "Check if an object is a message object",
      "topics": [
        "is_message_object"
      ]
    },
    {
      "page": "list_get_by_path",
      "title": "Get a nested value by a mixed path (character keys and integer indices)",
      "topics": [
        "list_get_by_path"
      ]
    },
    {
      "page": "llm_caller",
      "title": "Call an LLM via the registry",
      "topics": [
        "llm_caller"
      ]
    },
    {
      "page": "llm_register",
      "title": "Register an LLM Endpoint with Pass-2 Validation",
      "topics": [
        "llm_register"
      ]
    },
    {
      "page": "load_registry",
      "title": "Load the system LLM registry",
      "topics": [
        "load_registry"
      ]
    },
    {
      "page": "make_alias",
      "title": "Generate a compact alias for a model id",
      "topics": [
        "make_alias"
      ]
    },
    {
      "page": "make_pass2_probe_inputs",
      "title": "Build Pass-2 EFFECTIVE probe inputs (no forced system; structural role inference)",
      "topics": [
        "make_pass2_probe_inputs"
      ]
    },
    {
      "page": "merge_defaults_for_probe",
      "title": "Merge default generation parameters into a request body (probe only)",
      "topics": [
        "merge_defaults_for_probe"
      ]
    },
    {
      "page": "multi_model_experiment",
      "title": "Run Trials Across Multiple Models (registry-driven, assistant-native)",
      "topics": [
        "multi_model_experiment"
      ]
    },
    {
      "page": "normalize_history_messages",
      "title": "Normalize conversation history into message objects",
      "topics": [
        "normalize_history_messages"
      ]
    },
    {
      "page": "normalize_path_key_with_regex",
      "title": "Normalize any path spec to a flat key AND, if needed, a regex with wildcard index",
      "topics": [
        "normalize_path_key_with_regex"
      ]
    },
    {
      "page": "normalize_provider_label",
      "title": "Normalize a free-form provider label",
      "topics": [
        "normalize_provider_label"
      ]
    },
    {
      "page": "normalize_type_label",
      "title": "Normalize a free-form type string (strip a leading '@' if present)",
      "topics": [
        "normalize_type_label"
      ]
    },
    {
      "page": "probe_llm_streaming",
      "title": "Probe an LLM endpoint (non-stream + streaming, SSE-aware)",
      "topics": [
        "probe_llm_streaming"
      ]
    },
    {
      "page": "PsyLingLLM_Schema",
      "title": "PsyLingLLM Schema (v1)",
      "topics": [
        "PsyLingLLM_Schema"
      ]
    },
    {
      "page": "register_endpoint_offline",
      "title": "Register an LLM endpoint offline (supports reasoning / thinking path)",
      "topics": [
        "register_endpoint_offline"
      ]
    },
    {
      "page": "register_endpoint_to_user_registry",
      "title": "Upsert endpoint entry into the user registry (safe merge)",
      "topics": [
        "register_endpoint_to_user_registry"
      ]
    },
    {
      "page": "render_pass2_path_consistency_report",
      "title": "Render a structured \"[Pass-2 Verified Ports]\" report section.",
      "topics": [
        "render_pass2_path_consistency_report"
      ]
    },
    {
      "page": "save_experiment_results",
      "title": "Save Experiment Results to File",
      "topics": [
        "save_experiment_results"
      ]
    },
    {
      "page": "score_candidates_ns",
      "title": "Rank non-streaming JSON paths for answer/think (segment-aware, conflict-guarded)",
      "topics": [
        "score_candidates_ns"
      ]
    },
    {
      "page": "score_candidates_st",
      "title": "Rank streaming (SSE) candidates for answer/think (temporal aggregation, delta-aware, conflict-guarded)",
      "topics": [
        "score_candidates_st"
      ]
    },
    {
      "page": "stream_reconstruct_text",
      "title": "Reconstruct stream text from raw_json using exact or wildcard-index matching Falls back to regex (for \"..\" wildcard) if exact match finds nothing.",
      "topics": [
        "stream_reconstruct_text"
      ]
    },
    {
      "page": "strip_optionals_from_body",
      "title": "Strip optional runtime parameters from a request body",
      "topics": [
        "strip_optionals_from_body"
      ]
    },
    {
      "page": "sub_placeholders",
      "title": "Substitute placeholders '\"\\${API_KEY}\"', '\"\\${CONTENT}\"', '\"\\${ROLE}\"' robustly",
      "topics": [
        "sub_placeholders"
      ]
    },
    {
      "page": "trial_experiment",
      "title": "Run LLM Trial Experiment",
      "topics": [
        "trial_experiment"
      ]
    },
    {
      "page": "update_progress_bar",
      "title": "Update progress bar for an experiment",
      "topics": [
        "update_progress_bar"
      ]
    },
    {
      "page": "validate_experiment_config",
      "title": "Validate experiment configuration and resolve API URL",
      "topics": [
        "validate_experiment_config"
      ]
    },
    {
      "page": "validate_registry_entry",
      "title": "Validate structure of a registry entry",
      "topics": [
        "validate_registry_entry"
      ]
    },
    {
      "page": "validate_registry_schema",
      "title": "Validate a PsyLingLLM Registry Document",
      "topics": [
        "validate_registry_schema"
      ]
    }
  ],
  "_readme": "https://github.com/hanmingpsy/psylingllm-r/raw/HEAD/README.md",
  "_rundeps": [
    "bit",
    "bit64",
    "cellranger",
    "cli",
    "clipr",
    "cpp11",
    "crayon",
    "curl",
    "dplyr",
    "generics",
    "glue",
    "hms",
    "jsonlite",
    "lifecycle",
    "magrittr",
    "openxlsx",
    "pillar",
    "pkgconfig",
    "prettyunits",
    "progress",
    "R6",
    "Rcpp",
    "readr",
    "readxl",
    "rematch",
    "rlang",
    "stringi",
    "stringr",
    "tibble",
    "tidyselect",
    "tzdb",
    "utf8",
    "vctrs",
    "vroom",
    "withr",
    "writexl",
    "yaml",
    "zip"
  ],
  "_score": 3.3979400086720375,
  "_indexed": true,
  "_nocasepkg": "psylingllm",
  "_universes": [
    "hanmingpsy"
  ],
  "_binaries": [
    {
      "r": "4.7.0",
      "os": "linux",
      "version": "0.4.0",
      "date": "2026-11-12T13:08:51.000Z",
      "distro": "resolute",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/5eab12817c9fd2953a631bda2cd36df41b71d59bf96a7a900935b07bba09d4f9",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.6.2",
      "os": "linux",
      "version": "0.4.0",
      "date": "2026-11-12T13:09:19.000Z",
      "distro": "resolute",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/f5c6e3904bb69348fa39c59fd661478c3c5ac8d50d91ae0afec4155adf3bf4ae",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.5.3",
      "os": "mac",
      "version": "0.4.0",
      "date": "2026-11-12T13:09:26.000Z",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/a8d96e16b97c9e82f69650a0f35399e7761fddcb53ed845d78c3c5e1c371493c",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.6.2",
      "os": "mac",
      "version": "0.4.0",
      "date": "2026-11-12T13:09:02.000Z",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/4972274a302e5d812fc0a78e57d9124151427857fde95d8aa0660bdf81d6976d",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.6.0",
      "os": "wasm",
      "version": "0.4.0",
      "date": "2026-11-12T13:08:56.000Z",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/391a494b9536a60ee1f789ffbbd7de1edd7ab0aa180b3116f54c1c93f84f9240",
      "status": "success",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.7.0",
      "os": "win",
      "version": "0.4.0",
      "date": "2026-11-12T13:09:03.000Z",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/16fbfd5c5d114083246eefbd1112c866e7217fe4c97c62810a9f983f5584b3c7",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.5.3",
      "os": "win",
      "version": "0.4.0",
      "date": "2026-11-12T13:08:56.000Z",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/b4d4c2a036350f5169337a91b9d47622ebd54193b8c900ff356437c84dc977bf",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    },
    {
      "r": "4.6.2",
      "os": "win",
      "version": "0.4.0",
      "date": "2026-11-12T13:09:12.000Z",
      "commit": "0e14fc4a6afd8c6777ec19c3a1300f4388152c42",
      "fileid": "https://r2.ropensci.org/394c280dc944165947a461507bb5af87dcb5a346bfeb1b4ca0a5a153676f4ec1",
      "status": "success",
      "check": "OK",
      "buildurl": "https://github.com/r-universe/hanmingpsy/actions/runs/43223658416"
    }
  ]
}