-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathkbs.gemspec
More file actions
53 lines (44 loc) · 2.43 KB
/
kbs.gemspec
File metadata and controls
53 lines (44 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# frozen_string_literal: true
require_relative "lib/kbs/version"
Gem::Specification.new do |spec|
spec.name = "kbs"
spec.version = KBS::VERSION
spec.authors = ["Dewayne VanHoozer"]
spec.email = ["dvanhoozer@gmail.com"]
spec.summary = "Knowledge-Based System with RETE inference, Blackboard architecture, and AI integration"
spec.description = <<~DESC
A comprehensive Ruby implementation of a Knowledge-Based System featuring:
• RETE Algorithm: Optimized forward-chaining inference engine with unlinking optimization for high-performance pattern matching
• Declarative DSL: Readable, expressive syntax for rule definition with built-in condition helpers
• Blackboard Architecture: Multi-agent coordination with message passing and knowledge source registration
• Flexible Persistence: SQLite (durable), Redis (fast), and hybrid storage backends with audit trails
• Concurrent Execution: Thread-safe auto-inference mode for real-time processing
• AI Integration: Native support for LLM integration (Ollama, OpenAI) for hybrid symbolic/neural reasoning
• Production Features: Session management, fact history, query API, statistics tracking
Perfect for expert systems, trading algorithms, IoT monitoring, portfolio management, and AI-enhanced decision systems.
DESC
spec.homepage = "https://github.com/madbomber/kbs"
spec.license = "MIT"
spec.required_ruby_version = ">= 3.2.0"
spec.metadata["homepage_uri"] = spec.homepage
spec.metadata["source_code_uri"] = "https://github.com/madbomber/kbs"
spec.metadata["changelog_uri"] = "https://github.com/madbomber/kbs/blob/main/CHANGELOG.md"
# Specify which files should be added to the gem when it is released.
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
gemspec = File.basename(__FILE__)
spec.files = IO.popen(%w[git ls-files -z], chdir: __dir__, err: IO::NULL) do |ls|
ls.readlines("\x0", chomp: true).reject do |f|
(f == gemspec) ||
f.start_with?(*%w[bin/ Gemfile .gitignore test/])
end
end
spec.bindir = "exe"
spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
spec.require_paths = ["lib"]
# Runtime dependencies
spec.add_dependency "sqlite3", ">= 1.6"
# Development dependencies
spec.add_development_dependency "minitest", "~> 5.16"
spec.add_development_dependency "simplecov", "~> 0.22"
spec.add_development_dependency "redis", "~> 5.0"
end