summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Paśnikowski <marek@marekpasnikowski.pl>2024-02-05 21:49:53 +0100
committerMarek Paśnikowski <marek@marekpasnikowski.pl>2024-02-05 21:49:53 +0100
commit45ab5390c1fe9d97a804c48225bb0b5b71240cb6 (patch)
tree1c875001c65446a9684a77d96cd1ed81347577b5
parentbe3e15472247134becb3546d0c871e160433e26b (diff)
Complete the ruby-nano-bots definition
-rw-r--r--packages/ruby-nano-bots.scm591
1 files changed, 591 insertions, 0 deletions
diff --git a/packages/ruby-nano-bots.scm b/packages/ruby-nano-bots.scm
new file mode 100644
index 0000000..9106762
--- /dev/null
+++ b/packages/ruby-nano-bots.scm
@@ -0,0 +1,591 @@
+(define-module (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")))