(define-module (packages ruby-nano-bots) #:use-module (gnu packages) #:use-module (gnu packages curl) #:use-module (gnu packages ruby) #:use-module (guix build-system ruby) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) ;;; ABSTRACTION -4 (define ruby-google-style (package (name "ruby-google-style") (version "1.27.1") (source (origin (uri (rubygems-uri "google-style" "1.27.1")) (method url-fetch) (hash (content-hash "1h7il47mn160idh8gjliy597n31gn9cq77jq65gkd93kcrszjpxa")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-rubocop)) (synopsis "A spec-compliant event stream parser") (description (string-append "It only deals with the parsing of events and not any of the" " client/transport aspects. This is not a Server-sent Events (SSE)" " client.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) ;;; ABSTRACTION -3 (define ruby-google-cloud-env (package (name "ruby-google-cloud-env") (version "2.1.1") (source (origin (uri (rubygems-uri "google-cloud-env" "2.1.1")) (method url-fetch) (hash (content-hash "16b9yjbrzal1cjkdbn29fl06ikjn1dpg1vdsjak1xvhpsp3vhjyg")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday)) (synopsis "A spec-compliant event stream parser") (description (string-append "It only deals with the parsing of events and not any of the" " client/transport aspects. This is not a Server-sent Events (SSE)" " client.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) (define ruby-os (package (name "ruby-os") (version "1.1.4") (source (origin (uri (rubygems-uri "os" "1.1.4")) (method url-fetch) (hash (content-hash "0gwd20smyhxbm687vdikfh1gpi96h8qb1x28s2pdcysf6dm6v0ap")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (native-inputs (list ruby-rake ruby-rspec ruby-test-unit)) (synopsis "A spec-compliant event stream parser") (description (string-append "It only deals with the parsing of events and not any of the" " client/transport aspects. This is not a Server-sent Events (SSE)" " client.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) (define ruby-signet (package (name "ruby-signet") (version "0.18.0") (source (origin (uri (rubygems-uri "signet" "0.18.0")) (method url-fetch) (hash (content-hash "0fzakk5y7zzii76zlkynpp1c764mzkkfg4mpj18f5pf2xp1aikb6")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-addressable ruby-faraday ruby-jwt ruby-multi-json)) (native-inputs (list ruby-google-style ruby-kramdown ruby-launchy ruby-rake ruby-redcarpet ruby-rspec ruby-yard)) (synopsis "A spec-compliant event stream parser") (description (string-append "It only deals with the parsing of events and not any of the" " client/transport aspects. This is not a Server-sent Events (SSE)" " client.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) ;;; ABSTRACTION -2 (define ruby-event_stream_parser (package (name "ruby-event_stream_parser") (version "1.0.0") (source (origin (uri (rubygems-uri "event_stream_parser" "1.0.0")) (method url-fetch) (hash (content-hash "1j73glgif3f97q3znq9ih67h5i7zd1wqzj2d33w8cqhjf2mkns52")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (synopsis "A spec-compliant event stream parser") (description (string-append "It only deals with the parsing of events and not any of the" " client/transport aspects. This is not a Server-sent Events (SSE)" " client.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) (define ruby-faraday-typhoeus (package (name "ruby-faraday-typhoeus") (version "1.1.0") (source (origin (uri (rubygems-uri "faraday-typhoeus" "1.1.0")) (method url-fetch) (hash (content-hash "1rwhd2f78vqj0wkkdah395apx6igp5xf82n5xgixs61q45y19ii4")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday ruby-typhoeus-1.4.1)) (synopsis "A library for creating slugs.") (description (string-append "Babosa is an extraction and improvement of the string code from" " FriendlyId, intended to help developers create similar libraries or" " plugins.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) (define ruby-googleauth (package (name "ruby-googleauth") (version "1.9.2") (source (origin (uri (rubygems-uri "googleauth" "1.9.2")) (method url-fetch) (hash (content-hash "1qpvsvcag90nw2fjws12m96hsicpmcv04v35j9aiik9rmxxvlk9h")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday ruby-google-cloud-env ruby-jwt ruby-multi-json ruby-os ruby-signet)) (synopsis "A library for creating slugs.") (description (string-append "Babosa is an extraction and improvement of the string code from" " FriendlyId, intended to help developers create similar libraries or" " plugins.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) (define ruby-typhoeus-1.4.1 (package (inherit ruby-typhoeus) (version "1.4.1") (source (origin (uri (rubygems-uri "typhoeus" "1.4.1")) (method url-fetch) (hash (content-hash "0z7gamf6s83wy0yqms3bi4srirn3fc0lc7n65lqanidxcj1xn5qw")))))) ;;; ABSTRACTION -1 (define ruby-babosa (package (name "ruby-babosa") (version "2.0.0") (source (origin (uri (rubygems-uri "babosa" "2.0.0")) (method url-fetch) (hash (content-hash "19mqrnyizr1ipdp26vhrg0hwb851bwyvrs6xc29dk3ywljw8s8d6")))) (build-system ruby-build-system) (native-inputs (list ruby-rubocop ruby-rspec ruby-simplecov)) (synopsis "A library for creating slugs.") (description (string-append "Babosa is an extraction and improvement of the string code from" " FriendlyId, intended to help developers create similar libraries or" " plugins.")) (license license:expat) (home-page "https://github.com/norman/babosa"))) (define ruby-cohere-ai (package (name "ruby-cohere-ai") (version "1.0.2") (source (origin (uri (rubygems-uri "cohere-ai" "1.0.2")) (method url-fetch) (hash (content-hash "03nni5ab1zh176zrqfjkn34hy1xhwdjkqybjr8ih1pnwf9c94dbm")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday)) (synopsis "A Ruby gem for interacting with Cohere AI platform.") (description (string-append "This Gem is designed to provide low-level access to Cohere AI, enabling" " people to build abstractions on top of it. If you are interested in more" " high-level abstractions or more user-friendly tools, you may want to" " consider Nano Bots.")) (license license:expat) (home-page "https://rubygems.org/gems/cohere-ai"))) (define ruby-faraday-2.9 (package (inherit ruby-faraday) (version "2.9.0") (source (origin (uri (rubygems-uri "faraday" "2.9.0")) (method url-fetch) (hash (content-hash "1qqb1rmk0f9m82iijjlqadh5yby1bhnr6svjk9vxdvh6f181988s")))) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday-net-http)))) (define ruby-gemini-ai (package (name "ruby-gemini-ai") (version "3.2.0") (source (origin (uri (rubygems-uri "gemini-ai" "3.2.0")) (method url-fetch) (hash (content-hash "1fbk135pf99i20hnxn50rzsv5ln9b7ibifcnya40blbbxcsxk01q")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-event_stream_parser ruby-faraday ruby-faraday-typhoeus ruby-googleauth ruby-typhoeus-1.4.1)) (synopsis (string-append "A Ruby Gem for interacting with Gemini through Vertex AI, Generative" " Language API, or AI Studio, Google's generative AI services.")) (description (string-append "This Gem is designed to provide low-level access to Gemini, enabling" " people to build abstractions on top of it. If you are interested in more" " high-level abstractions or more user-friendly tools, you may want to" " consider Nano Bots.")) (license license:expat) (home-page "https://rubygems.org/gems/gemini-ai"))) (define ruby-maritaca-ai (package (name "ruby-maritaca-ai") (version "1.0.1") (source (origin (uri (rubygems-uri "maritaca-ai" "1.0.1")) (method url-fetch) (hash (content-hash "1n2a9197l8zvwg3m5837qs8m1dd562zs703gqc28c5za09qfgxcb")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday)) (synopsis "A Ruby gem for interacting with Maritaca AI's large language models.") (description (string-append "This Gem is designed to provide low-level access to MariTalk, enabling" " people to build abstractions on top of it. If you are interested in more" " high-level abstractions or more user-friendly tools, you may want to" " consider Nano Bots.")) (license license:expat) (home-page "https://rubygems.org/gems/gemini-ai"))) (define ruby-mistral-ai (package (name "ruby-mistral-ai") (version "1.1.2") (source (origin (uri (rubygems-uri "mistral-ai" "1.1.2")) (method url-fetch) (hash (content-hash "1yvzg4aqlh2kfg7s1ai67q47z29pq8qcg2qzv2cmrycw2pzcr4c7")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-event_stream_parser ruby-faraday)) (synopsis "A Ruby gem for interacting with Mistral AI's large language models.") (description (string-append "This Gem is designed to provide low-level access to Mistral, enabling" " people to build abstractions on top of it. If you are interested in more" " high-level abstractions or more user-friendly tools, you may want to" " consider Nano Bots.")) (license license:expat) (home-page "https://rubygems.org/gems/gemini-ai"))) (define ruby-ollama-ai (package (name "ruby-ollama-ai") (version "1.0.1") (source (origin (uri (rubygems-uri "ollama-ai" "1.0.1")) (method url-fetch) (hash (content-hash "05f0ir94j4qjgrnq7alsss2g3njlxf9b404i2jc8y4vd16450sy6")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-faraday)) (synopsis (string-append "A Ruby gem for interacting with Ollama's API that allows you to run open" " source AI LLMs (Large Language Models) locally.")) (description (string-append "This Gem is designed to provide low-level access to Ollama, enabling" " people to build abstractions on top of it. If you are interested in more" " high-level abstractions or more user-friendly tools, you may want to" " consider Nano Bots")) (license license:expat) (home-page "https://rubygems.org/gems/gemini-ai"))) (define ruby-rainbow-3.1 (package (inherit ruby-rainbow) (version "3.1.1") (source (origin (uri (rubygems-uri "rainbow" "3.1.1")) (method url-fetch) (hash (content-hash "0smwg4mii0fm38pyb5fddbmrdpifwv22zv3d3px2xx497am93503")))))) (define ruby-redcarpet-3.6 (package (inherit ruby-redcarpet) (version "3.6.0") (source (origin (uri (rubygems-uri "redcarpet" "3.6.0")) (method url-fetch) (hash (content-hash "1sg9sbf9pm91l7lac7fs4silabyn0vflxwaa2x3lrzsm0ff8ilca")))))) (define ruby-openai (package (name "ruby-openai") (version "6.3.1") (source (origin (uri (rubygems-uri "ruby-openai" "6.3.1")) (method url-fetch) (hash (content-hash "06jc0zn69gcriw103f2knmzba7zv57md3m4wb9jgdf5d06iyjmwb")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (inputs (list ruby-event_stream_parser ruby-faraday ruby-faraday-multipart ruby-rspec-core)) (synopsis "OpenAI API + Ruby!") (description (string-append "Stream text with GPT-4, transcribe and translate audio with Whisper, or" " create images with DALLĀ·E...")) (license license:expat) (home-page "https://rubygems.org/gems/gemini-ai"))) (define ruby-sweet-moon (package (name "ruby-sweet-moon") (version "0.0.7") (source (origin (uri (rubygems-uri "sweet-moon" "0.0.7")) (method url-fetch) (hash (content-hash "16kdf7hfxci6iljw7fmq2xc7dyqpb81rzfdqjgw00p0p7sckgwz9")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check)))) (synopsis "Lua / Fennel from Ruby and vice versa.") (description (string-append "Lua / Fennel from Ruby and vice versa. Support to LuaJIT, Lua 5.0, and" " 5.1. Lua C API for Lua 5, 4, and 3. LuaRocks and fnx integration.")) (license license:expat) (home-page "https://rubygems.org/gems/sweet-moon"))) ;;; ABSTRACTION 0 (define-public ruby-nano-bots (package (name "ruby-nano-bots") (version "3.0.1") (source (origin (uri (rubygems-uri "nano-bots" "3.0.1")) (method url-fetch) (hash (content-hash "14cnllgxl0w6jj1kcmh6vskl17k42skarsrld4r2f9ajnxxd1avk")))) (build-system ruby-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'check) (add-after 'wrap 'include-curl (lambda* (#:key inputs outputs #:allow-other-keys) (wrap-program (search-input-file outputs "bin/nb") `("LD_LIBRARY_PATH" suffix ,(list (dirname (search-input-file inputs "lib/libcurl.so")))))))))) (inputs (list curl ruby-addressable ruby-babosa ruby-cohere-ai ruby-concurrent-ruby ruby-dotenv ruby-event_stream_parser ruby-faraday-2.9 ruby-faraday-multipart ruby-faraday-typhoeus ruby-gemini-ai ruby-googleauth ruby-google-cloud-env ruby-jwt ruby-maritaca-ai ruby-mistral-ai ruby-multi-json ruby-ollama-ai ruby-os ruby-pry ruby-rainbow-3.1 ruby-rbnacl ruby-redcarpet-3.6 ruby-signet ruby-typhoeus-1.4.1 ruby-openai ruby-sweet-moon)) (synopsis "Ruby Nano Bots") (description (string-append "Ruby Implementation of Nano Bots: small, AI-powered bots that can be" " easily shared as a single file, designed to support multiple providers" " such as Cohere Command, Google Gemini, Maritaca AI MariTalk, Mistral AI," " Ollama, OpenAI ChatGPT, and others, with support for calling tools" " (functions).")) (license license:expat) (home-page "https://rubygems.org/gems/nano-bots")))