From 70123d7dc473cf9c1e8300188630d07559c395f4 Mon Sep 17 00:00:00 2001 From: Garrick Aden-Buie Date: Fri, 14 Nov 2025 12:23:09 -0500 Subject: [PATCH 01/11] fix: Prepare for upcoming ellmer v0.4.0 release --- tests/testthat/setup.R | 2 +- tests/testthat/test-set_llm.R | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/testthat/setup.R b/tests/testthat/setup.R index 6dd373b..229b0a3 100644 --- a/tests/testthat/setup.R +++ b/tests/testthat/setup.R @@ -54,7 +54,7 @@ chat_openai_mocked <- function(system_prompt = NULL, model = model, params = params, extra_args = api_args, - api_key = api_key, + credentials = function() api_key, provider_class = ellmer:::ProviderOpenAI ) } diff --git a/tests/testthat/test-set_llm.R b/tests/testthat/test-set_llm.R index 1232882..c964117 100644 --- a/tests/testthat/test-set_llm.R +++ b/tests/testthat/test-set_llm.R @@ -60,7 +60,7 @@ test_that("setting arguments for selected provider ", { my_project <- my_project |> set_llm(provider = "openai", model = "model_mocked") expect_equal( - my_project$llm$.__enclos_env__$private$provider@model, + my_project$llm$get_provider()@model, "model_mocked" ) @@ -68,7 +68,7 @@ test_that("setting arguments for selected provider ", { my_project <- my_project |> set_llm(provider = "openai", api_key = "api_key_mocked") expect_equal( - my_project$llm$.__enclos_env__$private$provider@api_key, + my_project$llm$get_provider()@credentials(), "api_key_mocked" ) @@ -76,6 +76,7 @@ test_that("setting arguments for selected provider ", { my_project <- my_project |> set_llm(provider = "openai", echo = "all") expect_equal( + # Please don't reach into the private namespace of external R6 classes my_project$llm$.__enclos_env__$private$echo, "all" ) From 5aaeef7c648ba4ac50b9bf50ea72387c03c53903 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 09:34:06 +0000 Subject: [PATCH 02/11] Bump version, add NEWS. --- DESCRIPTION | 2 +- NEWS.md | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index bacff1e..93712d8 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: GitAI Title: Extracts Knowledge from 'Git' Repositories -Version: 0.1.2 +Version: 0.1.2.9000 Authors@R: c( person("Kamil", "Wais", , "kamil.wais@gmail.com", role = c("aut", "cre")), person("Krystian", "Igras", , "krystian8207@gmail.com", role = "aut"), diff --git a/NEWS.md b/NEWS.md index c5d7b9d..bbfe20f 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,8 @@ +# GitAI (development version) + +* Fixes for CRAN. +* Adjust to new `ellmer` release (`0.4.0`). + # GitAI 0.1.2 * Added GitHub URL to `DESCRIPTION`. From b8fd85a92af96caecbf58cb48c29cc2ae20b2e1f Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 10:15:28 +0000 Subject: [PATCH 03/11] Fix expect as chat ouptut has ellmer_output class now. --- tests/testthat/test-set_llm.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/testthat/test-set_llm.R b/tests/testthat/test-set_llm.R index c964117..fb1aa4e 100644 --- a/tests/testthat/test-set_llm.R +++ b/tests/testthat/test-set_llm.R @@ -19,7 +19,7 @@ test_that("setting system prompt", { my_project$llm$get_system_prompt(), "You always return only 'Hi there!'" ) - expect_equal( + expect_equal_to_reference( my_project$llm$chat("Hi"), "Hi there!" ) From 144b321af3e4adfb0c1fd19087a213b41bc84f07 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 10:16:15 +0000 Subject: [PATCH 04/11] Do not reach to private fields of ellmer objects. --- tests/testthat/test-set_llm.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/testthat/test-set_llm.R b/tests/testthat/test-set_llm.R index fb1aa4e..d6bcf28 100644 --- a/tests/testthat/test-set_llm.R +++ b/tests/testthat/test-set_llm.R @@ -37,7 +37,7 @@ test_that("setting LLM with default provider ", { expect_true("Chat" %in% class(my_project$llm)) expect_in( "ellmer::ProviderOpenAI", - class(my_project$llm$.__enclos_env__$private$provider) + class(my_project$llm$get_provider()) ) }) @@ -60,7 +60,7 @@ test_that("setting arguments for selected provider ", { my_project <- my_project |> set_llm(provider = "openai", model = "model_mocked") expect_equal( - my_project$llm$get_provider()@model, + my_project$llm$get_model(), "model_mocked" ) From 635cac11b7d123b570def9a516ec67b279b76ff1 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 10:17:13 +0000 Subject: [PATCH 05/11] Skip tests on CRAN. --- tests/testthat/test-process_repos.R | 2 +- tests/testthat/test-set_llm.R | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/testthat/test-process_repos.R b/tests/testthat/test-process_repos.R index 33a8942..131bfeb 100644 --- a/tests/testthat/test-process_repos.R +++ b/tests/testthat/test-process_repos.R @@ -1,5 +1,5 @@ test_that("process_repos() returns results with repo metadata", { - + testthat::skip_on_cran() withr::local_envvar(GITAI_VERBOSE = FALSE) my_project <- initialize_project("gitai_test_project") |> diff --git a/tests/testthat/test-set_llm.R b/tests/testthat/test-set_llm.R index d6bcf28..81f1dcb 100644 --- a/tests/testthat/test-set_llm.R +++ b/tests/testthat/test-set_llm.R @@ -7,6 +7,8 @@ test_that("setting LLM ", { }) test_that("setting system prompt", { + skip_on_cran() + skip_if_not(interactive()) my_project <- initialize_project("gitai_test_project") expect_error( my_project |> set_prompt(system_prompt = "You always return only 'Hi there!'") From 6f2b91f88b345f7c15e5eee822cab3d2609b7140 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 10:21:02 +0000 Subject: [PATCH 06/11] Update renv. --- renv.lock | 106 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 51 deletions(-) diff --git a/renv.lock b/renv.lock index b127fd7..e5916c7 100644 --- a/renv.lock +++ b/renv.lock @@ -1,6 +1,6 @@ { "R": { - "Version": "4.4.3", + "Version": "4.5.1", "Repositories": [ { "Name": "CRAN", @@ -201,13 +201,13 @@ }, "curl": { "Package": "curl", - "Version": "6.2.2", + "Version": "7.0.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "e4f9e10b18f453a1b7eaf38247dad4fe" + "Hash": "aa27e963d3deccf4bade44d06b976977" }, "desc": { "Package": "desc", @@ -293,9 +293,13 @@ }, "ellmer": { "Package": "ellmer", - "Version": "0.2.0", - "Source": "Repository", - "Repository": "CRAN", + "Version": "0.3.2.9000", + "Source": "GitHub", + "RemoteType": "github", + "RemoteHost": "api.github.com", + "RemoteRepo": "ellmer", + "RemoteUsername": "tidyverse", + "RemoteSha": "13af6c408076a7e59ca3f34bc85ceb5d0f736709", "Requirements": [ "R", "R6", @@ -308,19 +312,21 @@ "later", "lifecycle", "promises", - "rlang" + "rlang", + "tibble", + "vctrs" ], - "Hash": "08f7504cda76185e0f689b19357706e0" + "Hash": "6a71d636d543f1508437fa258d1ddeca" }, "evaluate": { "Package": "evaluate", - "Version": "1.0.1", + "Version": "1.0.5", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "3fd29944b231036ad67c3edb32e02201" + "Hash": "94cf2c54237f6841cee68e3ba4ab5a14" }, "fansi": { "Package": "fansi", @@ -355,14 +361,14 @@ }, "fs": { "Package": "fs", - "Version": "1.6.5", + "Version": "1.6.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "methods" ], - "Hash": "7f48af39fa27711ea5fbd183b399920d" + "Hash": "7eb1e342eee7e0a7449c49cdaa526d39" }, "generics": { "Package": "generics", @@ -430,7 +436,7 @@ }, "httr2": { "Package": "httr2", - "Version": "1.1.2", + "Version": "1.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -447,7 +453,7 @@ "vctrs", "withr" ], - "Hash": "ade531519694081d91036b509eb30594" + "Hash": "6e29f1ed132b927f7d52e9fd8869f0ea" }, "jquerylib": { "Package": "jquerylib", @@ -461,17 +467,17 @@ }, "jsonlite": { "Package": "jsonlite", - "Version": "1.8.9", + "Version": "2.0.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "methods" ], - "Hash": "4e993b65c2c3ffbffce7bb3e2c6f832b" + "Hash": "b0776f526d36d8bd4a3344a88fe165c4" }, "knitr": { "Package": "knitr", - "Version": "1.49", + "Version": "1.50", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -483,7 +489,7 @@ "xfun", "yaml" ], - "Hash": "9fcb189926d93c636dea94fbe4f44480" + "Hash": "5a07d8ec459d7b80bd4acca5f4a6e062" }, "later": { "Package": "later", @@ -606,7 +612,7 @@ }, "pkgbuild": { "Package": "pkgbuild", - "Version": "1.4.5", + "Version": "1.4.8", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -617,7 +623,7 @@ "desc", "processx" ], - "Hash": "30eaaab94db72652e72e3475c1b55278" + "Hash": "fc9fc4162e79a94f760aac8d328ee6c9" }, "pkgconfig": { "Package": "pkgconfig", @@ -631,7 +637,7 @@ }, "pkgdown": { "Package": "pkgdown", - "Version": "2.1.1", + "Version": "2.2.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -640,12 +646,12 @@ "callr", "cli", "desc", - "digest", "downlit", "fontawesome", "fs", "httr2", "jsonlite", + "lifecycle", "openssl", "purrr", "ragg", @@ -657,13 +663,13 @@ "xml2", "yaml" ], - "Hash": "df2912d5873422b55a13002510f02c9f" + "Hash": "bc6b2a21988dba71f128f238b034294b" }, "pkgload": { "Package": "pkgload", - "Version": "1.4.0", + "Version": "1.4.1", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "R", "cli", @@ -676,10 +682,9 @@ "processx", "rlang", "rprojroot", - "utils", - "withr" + "utils" ], - "Hash": "2ec30ffbeec83da57655b850cf2d3e0e" + "Hash": "6f2060ae5ad112cc61df8876f93993de" }, "praise": { "Package": "praise", @@ -690,7 +695,7 @@ }, "processx": { "Package": "processx", - "Version": "3.8.4", + "Version": "3.8.6", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -699,7 +704,7 @@ "ps", "utils" ], - "Hash": "0c90a7d71988856bad2a2a45dd871bb9" + "Hash": "720161b280b0a35f4d1490ead2fe81d0" }, "promises": { "Package": "promises", @@ -719,18 +724,18 @@ }, "ps": { "Package": "ps", - "Version": "1.8.1", + "Version": "1.9.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "b4404b1de13758dea1c0484ad0d48563" + "Hash": "093688087b0bacce6ba2f661f36328e2" }, "purrr": { "Package": "purrr", - "Version": "1.0.4", + "Version": "1.2.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -741,18 +746,18 @@ "rlang", "vctrs" ], - "Hash": "cc8b5d43f90551fa6df0a6be5d640a4f" + "Hash": "5150f0e38b8150315ac853acade2740e" }, "ragg": { "Package": "ragg", - "Version": "1.3.3", + "Version": "1.5.0", "Source": "Repository", - "Repository": "CRAN", + "Repository": "RSPM", "Requirements": [ "systemfonts", "textshaping" ], - "Hash": "0595fe5e47357111f29ad19101c7d271" + "Hash": "cdb40b21711a8870f305b24226698f9f" }, "rappdirs": { "Package": "rappdirs", @@ -787,7 +792,7 @@ }, "rmarkdown": { "Package": "rmarkdown", - "Version": "2.29", + "Version": "2.30", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -806,17 +811,17 @@ "xfun", "yaml" ], - "Hash": "df99277f63d01c34e95e3d2f06a79736" + "Hash": "efe19db0fde0fff13cea7eec6f695021" }, "rprojroot": { "Package": "rprojroot", - "Version": "2.0.4", + "Version": "2.1.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R" ], - "Hash": "4c8415e0ec1e29f3f4f6fc108bef0144" + "Hash": "b2453de2d29aa646afe4781defdc7903" }, "rsconnect": { "Package": "rsconnect", @@ -864,7 +869,7 @@ }, "shiny": { "Package": "shiny", - "Version": "1.10.0", + "Version": "1.11.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -872,8 +877,8 @@ "R6", "bslib", "cachem", + "cli", "commonmark", - "crayon", "fastmap", "fontawesome", "glue", @@ -893,7 +898,7 @@ "withr", "xtable" ], - "Hash": "4b4477baa9a939c5577e5ddb4bf01f28" + "Hash": "1c1a2437351984ff592639ae28cda09e" }, "shinychat": { "Package": "shinychat", @@ -971,7 +976,7 @@ }, "testthat": { "Package": "testthat", - "Version": "3.2.1.1", + "Version": "3.3.0", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -981,7 +986,6 @@ "callr", "cli", "desc", - "digest", "evaluate", "jsonlite", "lifecycle", @@ -996,7 +1000,7 @@ "waldo", "withr" ], - "Hash": "3f6e7e5e2220856ff865e4834766bf2b" + "Hash": "198814ba13914c64a7fcf1b1ce5004e4" }, "textshaping": { "Package": "textshaping", @@ -1093,7 +1097,7 @@ }, "waldo": { "Package": "waldo", - "Version": "0.6.1", + "Version": "0.6.2", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1104,7 +1108,7 @@ "methods", "rlang" ], - "Hash": "52f574062a7b66e56926988c3fbdb3b7" + "Hash": "b7b91294ee9418a54527a9a9d8677597" }, "whisker": { "Package": "whisker", @@ -1127,7 +1131,7 @@ }, "xfun": { "Package": "xfun", - "Version": "0.49", + "Version": "0.54", "Source": "Repository", "Repository": "CRAN", "Requirements": [ @@ -1136,7 +1140,7 @@ "stats", "tools" ], - "Hash": "8687398773806cfff9401a2feca96298" + "Hash": "e80bda1cae1725a7b2bc5b846ba1fdfb" }, "xml2": { "Package": "xml2", From cd94a017f9b6998eacecdb5206f16c7168274354 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 15:09:08 +0000 Subject: [PATCH 07/11] Remove test. --- tests/testthat/test-set_llm.R | 8 -------- 1 file changed, 8 deletions(-) diff --git a/tests/testthat/test-set_llm.R b/tests/testthat/test-set_llm.R index 81f1dcb..0db96fe 100644 --- a/tests/testthat/test-set_llm.R +++ b/tests/testthat/test-set_llm.R @@ -74,14 +74,6 @@ test_that("setting arguments for selected provider ", { "api_key_mocked" ) - # Chat-related, non-default argument (not included within `llm_default_args`) is properly set - my_project <- my_project |> - set_llm(provider = "openai", echo = "all") - expect_equal( - # Please don't reach into the private namespace of external R6 classes - my_project$llm$.__enclos_env__$private$echo, - "all" - ) }) test_that("setting LLM without system prompt", { From 5b42414b1390632a5c9ce693efaedadcbb44fd4c Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Mon, 17 Nov 2025 15:40:53 +0000 Subject: [PATCH 08/11] Use newest ellmer from CRAN. --- DESCRIPTION | 2 +- renv.lock | 16 ++++++---------- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 93712d8..613d9c0 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -16,7 +16,7 @@ Depends: R (>= 4.1.0) Imports: cli (>= 3.4.0), - ellmer, + ellmer (>= 0.4.0), GitStats (>= 2.2.0), httr2, lubridate, diff --git a/renv.lock b/renv.lock index e5916c7..20d8ebe 100644 --- a/renv.lock +++ b/renv.lock @@ -63,14 +63,14 @@ }, "S7": { "Package": "S7", - "Version": "0.2.0", + "Version": "0.2.1", "Source": "Repository", "Repository": "CRAN", "Requirements": [ "R", "utils" ], - "Hash": "5deb66b3ae702137e1f4162c11861e76" + "Hash": "9da85950949574264f92f91f0e23de26" }, "askpass": { "Package": "askpass", @@ -293,13 +293,9 @@ }, "ellmer": { "Package": "ellmer", - "Version": "0.3.2.9000", - "Source": "GitHub", - "RemoteType": "github", - "RemoteHost": "api.github.com", - "RemoteRepo": "ellmer", - "RemoteUsername": "tidyverse", - "RemoteSha": "13af6c408076a7e59ca3f34bc85ceb5d0f736709", + "Version": "0.4.0", + "Source": "Repository", + "Repository": "CRAN", "Requirements": [ "R", "R6", @@ -316,7 +312,7 @@ "tibble", "vctrs" ], - "Hash": "6a71d636d543f1508437fa258d1ddeca" + "Hash": "c251e14722bdfbe83b1b5c442d835064" }, "evaluate": { "Package": "evaluate", From 2aa869f2f4c275e4db2138debbe156ea49168f3f Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Tue, 18 Nov 2025 08:13:18 +0000 Subject: [PATCH 09/11] Bump version. --- DESCRIPTION | 2 +- NEWS.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 613d9c0..9cd8343 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: GitAI Title: Extracts Knowledge from 'Git' Repositories -Version: 0.1.2.9000 +Version: 0.1.3 Authors@R: c( person("Kamil", "Wais", , "kamil.wais@gmail.com", role = c("aut", "cre")), person("Krystian", "Igras", , "krystian8207@gmail.com", role = "aut"), diff --git a/NEWS.md b/NEWS.md index bbfe20f..d0ab335 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,4 @@ -# GitAI (development version) +# GitAI 0.1.3 * Fixes for CRAN. * Adjust to new `ellmer` release (`0.4.0`). From 1163d72c26404ff13deb9412e62a5ea9f3da0e51 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Tue, 18 Nov 2025 09:49:47 +0000 Subject: [PATCH 10/11] Update docs. --- DESCRIPTION | 2 +- man/GitAI-package.Rd | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 9cd8343..04d2b60 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -11,7 +11,7 @@ License: MIT + file LICENSE Encoding: UTF-8 Roxygen: list(markdown = TRUE) URL: https://github.com/r-world-devs/GitAI -RoxygenNote: 7.3.2 +RoxygenNote: 7.3.3 Depends: R (>= 4.1.0) Imports: diff --git a/man/GitAI-package.Rd b/man/GitAI-package.Rd index 85ba8bd..e500cf5 100644 --- a/man/GitAI-package.Rd +++ b/man/GitAI-package.Rd @@ -9,6 +9,13 @@ \if{html}{\figure{logo.png}{options: style='float: right' alt='logo' width='120'}} Scan multiple 'Git' repositories, pull specified files content and process it with large language models. You can summarize the content in specific way, extract information and data, or find answers to your questions about the repositories. The output can be stored in vector database and used for semantic search or as a part of a RAG (Retrieval Augmented Generation) prompt. +} +\seealso{ +Useful links: +\itemize{ + \item \url{https://github.com/r-world-devs/GitAI} +} + } \author{ \strong{Maintainer}: Kamil Wais \email{kamil.wais@gmail.com} From fa7ff8cfd41eface8863b75cec160e3da8dd9ab6 Mon Sep 17 00:00:00 2001 From: Maciej Banas Date: Tue, 18 Nov 2025 09:49:56 +0000 Subject: [PATCH 11/11] Remove. --- CRAN-SUBMISSION | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 CRAN-SUBMISSION diff --git a/CRAN-SUBMISSION b/CRAN-SUBMISSION deleted file mode 100644 index 78147a2..0000000 --- a/CRAN-SUBMISSION +++ /dev/null @@ -1,3 +0,0 @@ -Version: 0.1.0 -Date: 2025-02-20 07:39:24 UTC -SHA: 9fceed941981ee5a49765c77b25e366e5a770e43