robot_lab 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.envrc +1 -0
- data/.github/workflows/deploy-github-pages.yml +52 -0
- data/.github/workflows/deploy-yard-docs.yml +52 -0
- data/CHANGELOG.md +55 -0
- data/COMMITS.md +196 -0
- data/LICENSE.txt +21 -0
- data/README.md +332 -0
- data/Rakefile +67 -0
- data/docs/api/adapters/anthropic.md +121 -0
- data/docs/api/adapters/gemini.md +133 -0
- data/docs/api/adapters/index.md +104 -0
- data/docs/api/adapters/openai.md +134 -0
- data/docs/api/core/index.md +113 -0
- data/docs/api/core/memory.md +314 -0
- data/docs/api/core/network.md +291 -0
- data/docs/api/core/robot.md +273 -0
- data/docs/api/core/state.md +273 -0
- data/docs/api/core/tool.md +353 -0
- data/docs/api/history/active-record-adapter.md +195 -0
- data/docs/api/history/config.md +191 -0
- data/docs/api/history/index.md +132 -0
- data/docs/api/history/thread-manager.md +144 -0
- data/docs/api/index.md +82 -0
- data/docs/api/mcp/client.md +221 -0
- data/docs/api/mcp/index.md +111 -0
- data/docs/api/mcp/server.md +225 -0
- data/docs/api/mcp/transports.md +264 -0
- data/docs/api/messages/index.md +67 -0
- data/docs/api/messages/text-message.md +102 -0
- data/docs/api/messages/tool-call-message.md +144 -0
- data/docs/api/messages/tool-result-message.md +154 -0
- data/docs/api/messages/user-message.md +171 -0
- data/docs/api/streaming/context.md +174 -0
- data/docs/api/streaming/events.md +237 -0
- data/docs/api/streaming/index.md +108 -0
- data/docs/architecture/core-concepts.md +243 -0
- data/docs/architecture/index.md +138 -0
- data/docs/architecture/message-flow.md +320 -0
- data/docs/architecture/network-orchestration.md +216 -0
- data/docs/architecture/robot-execution.md +243 -0
- data/docs/architecture/state-management.md +323 -0
- data/docs/assets/css/custom.css +56 -0
- data/docs/assets/images/robot_lab.jpg +0 -0
- data/docs/concepts.md +216 -0
- data/docs/examples/basic-chat.md +193 -0
- data/docs/examples/index.md +129 -0
- data/docs/examples/mcp-server.md +290 -0
- data/docs/examples/multi-robot-network.md +312 -0
- data/docs/examples/rails-application.md +420 -0
- data/docs/examples/tool-usage.md +310 -0
- data/docs/getting-started/configuration.md +230 -0
- data/docs/getting-started/index.md +56 -0
- data/docs/getting-started/installation.md +179 -0
- data/docs/getting-started/quick-start.md +203 -0
- data/docs/guides/building-robots.md +376 -0
- data/docs/guides/creating-networks.md +366 -0
- data/docs/guides/history.md +359 -0
- data/docs/guides/index.md +68 -0
- data/docs/guides/mcp-integration.md +356 -0
- data/docs/guides/memory.md +309 -0
- data/docs/guides/rails-integration.md +432 -0
- data/docs/guides/streaming.md +314 -0
- data/docs/guides/using-tools.md +394 -0
- data/docs/index.md +160 -0
- data/examples/01_simple_robot.rb +38 -0
- data/examples/02_tools.rb +106 -0
- data/examples/03_network.rb +103 -0
- data/examples/04_mcp.rb +219 -0
- data/examples/05_streaming.rb +124 -0
- data/examples/06_prompt_templates.rb +324 -0
- data/examples/07_network_memory.rb +329 -0
- data/examples/prompts/assistant/system.txt.erb +2 -0
- data/examples/prompts/assistant/user.txt.erb +1 -0
- data/examples/prompts/billing/system.txt.erb +7 -0
- data/examples/prompts/billing/user.txt.erb +1 -0
- data/examples/prompts/classifier/system.txt.erb +4 -0
- data/examples/prompts/classifier/user.txt.erb +1 -0
- data/examples/prompts/entity_extractor/system.txt.erb +11 -0
- data/examples/prompts/entity_extractor/user.txt.erb +3 -0
- data/examples/prompts/escalation/system.txt.erb +35 -0
- data/examples/prompts/escalation/user.txt.erb +34 -0
- data/examples/prompts/general/system.txt.erb +4 -0
- data/examples/prompts/general/user.txt.erb +1 -0
- data/examples/prompts/github_assistant/system.txt.erb +6 -0
- data/examples/prompts/github_assistant/user.txt.erb +1 -0
- data/examples/prompts/helper/system.txt.erb +1 -0
- data/examples/prompts/helper/user.txt.erb +1 -0
- data/examples/prompts/keyword_extractor/system.txt.erb +8 -0
- data/examples/prompts/keyword_extractor/user.txt.erb +3 -0
- data/examples/prompts/order_support/system.txt.erb +27 -0
- data/examples/prompts/order_support/user.txt.erb +22 -0
- data/examples/prompts/product_support/system.txt.erb +30 -0
- data/examples/prompts/product_support/user.txt.erb +32 -0
- data/examples/prompts/sentiment_analyzer/system.txt.erb +9 -0
- data/examples/prompts/sentiment_analyzer/user.txt.erb +3 -0
- data/examples/prompts/synthesizer/system.txt.erb +14 -0
- data/examples/prompts/synthesizer/user.txt.erb +15 -0
- data/examples/prompts/technical/system.txt.erb +7 -0
- data/examples/prompts/technical/user.txt.erb +1 -0
- data/examples/prompts/triage/system.txt.erb +16 -0
- data/examples/prompts/triage/user.txt.erb +17 -0
- data/lib/generators/robot_lab/install_generator.rb +78 -0
- data/lib/generators/robot_lab/robot_generator.rb +55 -0
- data/lib/generators/robot_lab/templates/initializer.rb.tt +41 -0
- data/lib/generators/robot_lab/templates/migration.rb.tt +32 -0
- data/lib/generators/robot_lab/templates/result_model.rb.tt +52 -0
- data/lib/generators/robot_lab/templates/robot.rb.tt +46 -0
- data/lib/generators/robot_lab/templates/robot_test.rb.tt +32 -0
- data/lib/generators/robot_lab/templates/routing_robot.rb.tt +53 -0
- data/lib/generators/robot_lab/templates/thread_model.rb.tt +40 -0
- data/lib/robot_lab/adapters/anthropic.rb +163 -0
- data/lib/robot_lab/adapters/base.rb +85 -0
- data/lib/robot_lab/adapters/gemini.rb +193 -0
- data/lib/robot_lab/adapters/openai.rb +159 -0
- data/lib/robot_lab/adapters/registry.rb +81 -0
- data/lib/robot_lab/configuration.rb +143 -0
- data/lib/robot_lab/error.rb +32 -0
- data/lib/robot_lab/errors.rb +70 -0
- data/lib/robot_lab/history/active_record_adapter.rb +146 -0
- data/lib/robot_lab/history/config.rb +115 -0
- data/lib/robot_lab/history/thread_manager.rb +93 -0
- data/lib/robot_lab/mcp/client.rb +210 -0
- data/lib/robot_lab/mcp/server.rb +84 -0
- data/lib/robot_lab/mcp/transports/base.rb +56 -0
- data/lib/robot_lab/mcp/transports/sse.rb +117 -0
- data/lib/robot_lab/mcp/transports/stdio.rb +133 -0
- data/lib/robot_lab/mcp/transports/streamable_http.rb +139 -0
- data/lib/robot_lab/mcp/transports/websocket.rb +108 -0
- data/lib/robot_lab/memory.rb +882 -0
- data/lib/robot_lab/memory_change.rb +123 -0
- data/lib/robot_lab/message.rb +357 -0
- data/lib/robot_lab/network.rb +350 -0
- data/lib/robot_lab/rails/engine.rb +29 -0
- data/lib/robot_lab/rails/railtie.rb +42 -0
- data/lib/robot_lab/robot.rb +560 -0
- data/lib/robot_lab/robot_result.rb +205 -0
- data/lib/robot_lab/robotic_model.rb +324 -0
- data/lib/robot_lab/state_proxy.rb +188 -0
- data/lib/robot_lab/streaming/context.rb +144 -0
- data/lib/robot_lab/streaming/events.rb +95 -0
- data/lib/robot_lab/streaming/sequence_counter.rb +48 -0
- data/lib/robot_lab/task.rb +117 -0
- data/lib/robot_lab/tool.rb +223 -0
- data/lib/robot_lab/tool_config.rb +112 -0
- data/lib/robot_lab/tool_manifest.rb +234 -0
- data/lib/robot_lab/user_message.rb +118 -0
- data/lib/robot_lab/version.rb +5 -0
- data/lib/robot_lab/waiter.rb +73 -0
- data/lib/robot_lab.rb +195 -0
- data/mkdocs.yml +214 -0
- data/sig/robot_lab.rbs +4 -0
- metadata +442 -0
data/lib/robot_lab.rb
ADDED
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "zeitwerk"
|
|
4
|
+
require "json"
|
|
5
|
+
require "securerandom"
|
|
6
|
+
require "digest"
|
|
7
|
+
|
|
8
|
+
# Core dependencies
|
|
9
|
+
require "ruby_llm"
|
|
10
|
+
require "async"
|
|
11
|
+
|
|
12
|
+
# Define the module first so Zeitwerk can populate it
|
|
13
|
+
#
|
|
14
|
+
# RobotLab is a Ruby framework for building and orchestrating multi-robot LLM workflows.
|
|
15
|
+
# It provides a modular architecture with adapters for multiple LLM providers (Anthropic,
|
|
16
|
+
# OpenAI, Gemini), MCP (Model Context Protocol) integration, streaming support, and
|
|
17
|
+
# history management.
|
|
18
|
+
#
|
|
19
|
+
# @example Basic usage with a single robot
|
|
20
|
+
# robot = RobotLab.build(name: "assistant", template: "chat.erb")
|
|
21
|
+
# result = robot.run("Hello, world!")
|
|
22
|
+
#
|
|
23
|
+
# @example Creating a network of robots
|
|
24
|
+
# network = RobotLab.create_network(name: "pipeline") do
|
|
25
|
+
# step :analyzer, analyzer, depends_on: :none
|
|
26
|
+
# step :writer, writer, depends_on: [:analyzer]
|
|
27
|
+
# step :reviewer, reviewer, depends_on: [:writer]
|
|
28
|
+
# end
|
|
29
|
+
# result = network.run(message: "Process this document")
|
|
30
|
+
#
|
|
31
|
+
# @example Configuration
|
|
32
|
+
# RobotLab.configure do |config|
|
|
33
|
+
# config.anthropic_api_key = ENV["ANTHROPIC_API_KEY"]
|
|
34
|
+
# config.template_path = "app/templates"
|
|
35
|
+
# end
|
|
36
|
+
#
|
|
37
|
+
module RobotLab
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
loader = Zeitwerk::Loader.for_gem(warn_on_extra_files: false)
|
|
41
|
+
loader.ignore("#{__dir__}/generators")
|
|
42
|
+
loader.ignore("#{__dir__}/robot_lab/rails")
|
|
43
|
+
|
|
44
|
+
# Custom inflections for classes that don't follow Zeitwerk naming conventions
|
|
45
|
+
loader.inflector.inflect(
|
|
46
|
+
"robot_lab" => "RobotLab",
|
|
47
|
+
"robotic_model" => "RoboticModel",
|
|
48
|
+
"mcp" => "MCP",
|
|
49
|
+
"openai" => "OpenAI",
|
|
50
|
+
"sse" => "SSE",
|
|
51
|
+
"streamable_http" => "StreamableHTTP",
|
|
52
|
+
"websocket" => "WebSocket"
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
# Note: adapters/ is NOT collapsed since files define RobotLab::Adapters::* classes
|
|
56
|
+
|
|
57
|
+
loader.setup
|
|
58
|
+
|
|
59
|
+
# Eager load for proper constant resolution
|
|
60
|
+
loader.eager_load
|
|
61
|
+
|
|
62
|
+
module RobotLab
|
|
63
|
+
# Error classes are defined in lib/robot_lab/error.rb
|
|
64
|
+
|
|
65
|
+
class << self
|
|
66
|
+
# @!attribute [w] configuration
|
|
67
|
+
# @return [Configuration] the configuration object
|
|
68
|
+
attr_writer :configuration
|
|
69
|
+
|
|
70
|
+
# Returns the current configuration object.
|
|
71
|
+
#
|
|
72
|
+
# @return [Configuration] the configuration instance
|
|
73
|
+
def configuration
|
|
74
|
+
@configuration ||= Configuration.new
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
# Yields the configuration object for modification.
|
|
78
|
+
#
|
|
79
|
+
# @yield [Configuration] the configuration object
|
|
80
|
+
# @return [void]
|
|
81
|
+
#
|
|
82
|
+
# @example
|
|
83
|
+
# RobotLab.configure do |config|
|
|
84
|
+
# config.anthropic_api_key = "sk-..."
|
|
85
|
+
# end
|
|
86
|
+
def configure
|
|
87
|
+
yield(configuration)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
# Factory method to create a new Robot instance.
|
|
91
|
+
#
|
|
92
|
+
# @param name [String] the unique identifier for the robot
|
|
93
|
+
# @param template [Symbol, nil] the ERB template for the robot's prompt
|
|
94
|
+
# @param system_prompt [String, nil] inline system prompt (can be used alone or with template)
|
|
95
|
+
# @param context [Hash] variables to pass to the template
|
|
96
|
+
# @param enable_cache [Boolean] whether to enable semantic caching (default: true)
|
|
97
|
+
# @param options [Hash] additional options passed to Robot.new
|
|
98
|
+
# @return [Robot] a new Robot instance
|
|
99
|
+
# @raise [ArgumentError] if neither template nor system_prompt is provided
|
|
100
|
+
#
|
|
101
|
+
# @example Robot with template
|
|
102
|
+
# robot = RobotLab.build(
|
|
103
|
+
# name: "assistant",
|
|
104
|
+
# template: :assistant,
|
|
105
|
+
# context: { tone: "friendly" }
|
|
106
|
+
# )
|
|
107
|
+
#
|
|
108
|
+
# @example Robot with inline system prompt
|
|
109
|
+
# robot = RobotLab.build(
|
|
110
|
+
# name: "helper",
|
|
111
|
+
# system_prompt: "You are a helpful assistant."
|
|
112
|
+
# )
|
|
113
|
+
#
|
|
114
|
+
# @example Robot with both template and system prompt
|
|
115
|
+
# robot = RobotLab.build(
|
|
116
|
+
# name: "support",
|
|
117
|
+
# template: :support_agent,
|
|
118
|
+
# system_prompt: "Today's date is #{Date.today}."
|
|
119
|
+
# )
|
|
120
|
+
#
|
|
121
|
+
# @example Robot with caching disabled
|
|
122
|
+
# robot = RobotLab.build(
|
|
123
|
+
# name: "simple",
|
|
124
|
+
# system_prompt: "You are helpful.",
|
|
125
|
+
# enable_cache: false
|
|
126
|
+
# )
|
|
127
|
+
def build(name:, template: nil, system_prompt: nil, context: {}, enable_cache: true, **options)
|
|
128
|
+
Robot.new(
|
|
129
|
+
name: name,
|
|
130
|
+
template: template,
|
|
131
|
+
system_prompt: system_prompt,
|
|
132
|
+
context: context,
|
|
133
|
+
enable_cache: enable_cache,
|
|
134
|
+
**options
|
|
135
|
+
)
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
# Factory method to create a new Network of robots.
|
|
139
|
+
#
|
|
140
|
+
# @param name [String] the unique identifier for the network
|
|
141
|
+
# @param concurrency [Symbol] concurrency model (:auto, :threads, :async)
|
|
142
|
+
# @yield Block for defining pipeline steps
|
|
143
|
+
# @return [Network] a new Network instance
|
|
144
|
+
#
|
|
145
|
+
# @example Sequential pipeline
|
|
146
|
+
# network = RobotLab.create_network(name: "pipeline") do
|
|
147
|
+
# step :first, robot1, depends_on: :none
|
|
148
|
+
# step :second, robot2, depends_on: [:first]
|
|
149
|
+
# end
|
|
150
|
+
#
|
|
151
|
+
# @example With optional routing
|
|
152
|
+
# network = RobotLab.create_network(name: "support") do
|
|
153
|
+
# step :classifier, classifier, depends_on: :none
|
|
154
|
+
# step :billing, billing_robot, depends_on: :optional
|
|
155
|
+
# step :technical, technical_robot, depends_on: :optional
|
|
156
|
+
# end
|
|
157
|
+
#
|
|
158
|
+
# @example Parallel execution
|
|
159
|
+
# network = RobotLab.create_network(name: "analysis") do
|
|
160
|
+
# step :fetch, fetcher, depends_on: :none
|
|
161
|
+
# step :sentiment, sentiment_bot, depends_on: [:fetch]
|
|
162
|
+
# step :entities, entity_bot, depends_on: [:fetch]
|
|
163
|
+
# step :merge, merger, depends_on: [:sentiment, :entities]
|
|
164
|
+
# end
|
|
165
|
+
def create_network(name:, concurrency: :auto, &block)
|
|
166
|
+
Network.new(name: name, concurrency: concurrency, &block)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
# Factory method to create a new Memory object.
|
|
170
|
+
#
|
|
171
|
+
# @param data [Hash] initial runtime data
|
|
172
|
+
# @param enable_cache [Boolean] whether to enable semantic caching (default: true)
|
|
173
|
+
# @param options [Hash] additional options passed to Memory.new
|
|
174
|
+
# @return [Memory] a new Memory instance
|
|
175
|
+
#
|
|
176
|
+
# @example Basic memory
|
|
177
|
+
# memory = RobotLab.create_memory(data: { user_id: 123 })
|
|
178
|
+
#
|
|
179
|
+
# @example Memory with custom values
|
|
180
|
+
# memory = RobotLab.create_memory(data: { category: nil })
|
|
181
|
+
# memory[:session_id] = "abc123"
|
|
182
|
+
#
|
|
183
|
+
# @example Memory with caching disabled
|
|
184
|
+
# memory = RobotLab.create_memory(data: {}, enable_cache: false)
|
|
185
|
+
def create_memory(data: {}, enable_cache: true, **options)
|
|
186
|
+
Memory.new(data: data, enable_cache: enable_cache, **options)
|
|
187
|
+
end
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# Load Rails integration if Rails is defined
|
|
192
|
+
if defined?(Rails::Engine)
|
|
193
|
+
require "robot_lab/rails/engine"
|
|
194
|
+
require "robot_lab/rails/railtie"
|
|
195
|
+
end
|
data/mkdocs.yml
ADDED
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
# MkDocs Configuration for RobotLab Documentation
|
|
2
|
+
site_name: RobotLab
|
|
3
|
+
site_description: Multi-robot LLM workflow orchestration for Ruby
|
|
4
|
+
site_author: Dewayne VanHoozer
|
|
5
|
+
site_url: https://madbomber.github.io/robot_lab
|
|
6
|
+
copyright: Copyright © 2025 Dewayne VanHoozer
|
|
7
|
+
|
|
8
|
+
# Repository information
|
|
9
|
+
repo_name: madbomber/robot_lab
|
|
10
|
+
repo_url: https://github.com/madbomber/robot_lab
|
|
11
|
+
edit_uri: edit/main/docs/
|
|
12
|
+
|
|
13
|
+
# Configuration
|
|
14
|
+
theme:
|
|
15
|
+
name: material
|
|
16
|
+
|
|
17
|
+
# Color scheme
|
|
18
|
+
palette:
|
|
19
|
+
- scheme: default
|
|
20
|
+
primary: deep purple
|
|
21
|
+
accent: amber
|
|
22
|
+
toggle:
|
|
23
|
+
icon: material/brightness-7
|
|
24
|
+
name: Switch to dark mode
|
|
25
|
+
|
|
26
|
+
- scheme: slate
|
|
27
|
+
primary: deep purple
|
|
28
|
+
accent: amber
|
|
29
|
+
toggle:
|
|
30
|
+
icon: material/brightness-4
|
|
31
|
+
name: Switch to light mode
|
|
32
|
+
|
|
33
|
+
# Typography
|
|
34
|
+
font:
|
|
35
|
+
text: Roboto
|
|
36
|
+
code: Roboto Mono
|
|
37
|
+
|
|
38
|
+
# Logo and icon
|
|
39
|
+
icon:
|
|
40
|
+
repo: fontawesome/brands/github
|
|
41
|
+
logo: material/robot
|
|
42
|
+
|
|
43
|
+
# Theme features
|
|
44
|
+
features:
|
|
45
|
+
- navigation.instant
|
|
46
|
+
- navigation.tracking
|
|
47
|
+
- navigation.tabs
|
|
48
|
+
- navigation.tabs.sticky
|
|
49
|
+
- navigation.path
|
|
50
|
+
- navigation.indexes
|
|
51
|
+
- navigation.top
|
|
52
|
+
- navigation.footer
|
|
53
|
+
- toc.follow
|
|
54
|
+
- search.suggest
|
|
55
|
+
- search.highlight
|
|
56
|
+
- search.share
|
|
57
|
+
- header.autohide
|
|
58
|
+
- content.code.copy
|
|
59
|
+
- content.code.annotate
|
|
60
|
+
- content.tabs.link
|
|
61
|
+
- content.tooltips
|
|
62
|
+
- content.action.edit
|
|
63
|
+
- content.action.view
|
|
64
|
+
|
|
65
|
+
# Plugins
|
|
66
|
+
plugins:
|
|
67
|
+
- search:
|
|
68
|
+
separator: '[\s\-,:!=\[\]()"`/]+|\.(?!\d)|&[lg]t;|(?!\b)(?=[A-Z][a-z])'
|
|
69
|
+
- tags
|
|
70
|
+
|
|
71
|
+
# Extensions
|
|
72
|
+
markdown_extensions:
|
|
73
|
+
- abbr
|
|
74
|
+
- admonition
|
|
75
|
+
- attr_list
|
|
76
|
+
- def_list
|
|
77
|
+
- footnotes
|
|
78
|
+
- md_in_html
|
|
79
|
+
- tables
|
|
80
|
+
- toc:
|
|
81
|
+
permalink: true
|
|
82
|
+
title: On this page
|
|
83
|
+
|
|
84
|
+
- pymdownx.arithmatex:
|
|
85
|
+
generic: true
|
|
86
|
+
- pymdownx.betterem:
|
|
87
|
+
smart_enable: all
|
|
88
|
+
- pymdownx.caret
|
|
89
|
+
- pymdownx.critic
|
|
90
|
+
- pymdownx.details
|
|
91
|
+
- pymdownx.emoji:
|
|
92
|
+
emoji_generator: !!python/name:material.extensions.emoji.to_svg
|
|
93
|
+
emoji_index: !!python/name:material.extensions.emoji.twemoji
|
|
94
|
+
- pymdownx.highlight:
|
|
95
|
+
anchor_linenums: true
|
|
96
|
+
line_spans: __span
|
|
97
|
+
pygments_lang_class: true
|
|
98
|
+
- pymdownx.inlinehilite
|
|
99
|
+
- pymdownx.keys
|
|
100
|
+
- pymdownx.magiclink:
|
|
101
|
+
repo_url_shorthand: true
|
|
102
|
+
user: madbomber
|
|
103
|
+
repo: robot_lab
|
|
104
|
+
normalize_issue_symbols: true
|
|
105
|
+
- pymdownx.mark
|
|
106
|
+
- pymdownx.smartsymbols
|
|
107
|
+
- pymdownx.snippets:
|
|
108
|
+
check_paths: true
|
|
109
|
+
- pymdownx.superfences:
|
|
110
|
+
custom_fences:
|
|
111
|
+
- name: mermaid
|
|
112
|
+
class: mermaid
|
|
113
|
+
format: !!python/name:pymdownx.superfences.fence_code_format
|
|
114
|
+
- pymdownx.tabbed:
|
|
115
|
+
alternate_style: true
|
|
116
|
+
- pymdownx.tasklist:
|
|
117
|
+
custom_checkbox: true
|
|
118
|
+
- pymdownx.tilde
|
|
119
|
+
|
|
120
|
+
# Extra CSS
|
|
121
|
+
extra_css:
|
|
122
|
+
- assets/css/custom.css
|
|
123
|
+
|
|
124
|
+
# Social media and extra configuration
|
|
125
|
+
extra:
|
|
126
|
+
social:
|
|
127
|
+
- icon: fontawesome/brands/github
|
|
128
|
+
link: https://github.com/madbomber/robot_lab
|
|
129
|
+
name: RobotLab on GitHub
|
|
130
|
+
- icon: fontawesome/solid/gem
|
|
131
|
+
link: https://rubygems.org/gems/robot_lab
|
|
132
|
+
name: RobotLab on RubyGems
|
|
133
|
+
|
|
134
|
+
analytics:
|
|
135
|
+
feedback:
|
|
136
|
+
title: Was this page helpful?
|
|
137
|
+
ratings:
|
|
138
|
+
- icon: material/emoticon-happy-outline
|
|
139
|
+
name: This page was helpful
|
|
140
|
+
data: 1
|
|
141
|
+
note: Thanks for your feedback!
|
|
142
|
+
- icon: material/emoticon-sad-outline
|
|
143
|
+
name: This page could be improved
|
|
144
|
+
data: 0
|
|
145
|
+
note: Thanks for your feedback! Help us improve by creating an issue.
|
|
146
|
+
|
|
147
|
+
# Navigation
|
|
148
|
+
nav:
|
|
149
|
+
- Home:
|
|
150
|
+
- Overview: index.md
|
|
151
|
+
- Concepts: concepts.md
|
|
152
|
+
- Getting Started:
|
|
153
|
+
- getting-started/index.md
|
|
154
|
+
- Installation: getting-started/installation.md
|
|
155
|
+
- Quick Start: getting-started/quick-start.md
|
|
156
|
+
- Configuration: getting-started/configuration.md
|
|
157
|
+
- Architecture:
|
|
158
|
+
- architecture/index.md
|
|
159
|
+
- Core Concepts: architecture/core-concepts.md
|
|
160
|
+
- Robot Execution: architecture/robot-execution.md
|
|
161
|
+
- Network Orchestration: architecture/network-orchestration.md
|
|
162
|
+
- State Management: architecture/state-management.md
|
|
163
|
+
- Message Flow: architecture/message-flow.md
|
|
164
|
+
- Guides:
|
|
165
|
+
- guides/index.md
|
|
166
|
+
- Building Robots: guides/building-robots.md
|
|
167
|
+
- Creating Networks: guides/creating-networks.md
|
|
168
|
+
- Using Tools: guides/using-tools.md
|
|
169
|
+
- MCP Integration: guides/mcp-integration.md
|
|
170
|
+
- Streaming Responses: guides/streaming.md
|
|
171
|
+
- Conversation History: guides/history.md
|
|
172
|
+
- Memory System: guides/memory.md
|
|
173
|
+
- Rails Integration: guides/rails-integration.md
|
|
174
|
+
- API Reference:
|
|
175
|
+
- api/index.md
|
|
176
|
+
- Core Classes:
|
|
177
|
+
- api/core/index.md
|
|
178
|
+
- Robot: api/core/robot.md
|
|
179
|
+
- Network: api/core/network.md
|
|
180
|
+
- State: api/core/state.md
|
|
181
|
+
- Tool: api/core/tool.md
|
|
182
|
+
- Memory: api/core/memory.md
|
|
183
|
+
- Messages:
|
|
184
|
+
- api/messages/index.md
|
|
185
|
+
- UserMessage: api/messages/user-message.md
|
|
186
|
+
- TextMessage: api/messages/text-message.md
|
|
187
|
+
- ToolCallMessage: api/messages/tool-call-message.md
|
|
188
|
+
- ToolResultMessage: api/messages/tool-result-message.md
|
|
189
|
+
- Adapters:
|
|
190
|
+
- api/adapters/index.md
|
|
191
|
+
- Anthropic: api/adapters/anthropic.md
|
|
192
|
+
- OpenAI: api/adapters/openai.md
|
|
193
|
+
- Gemini: api/adapters/gemini.md
|
|
194
|
+
- MCP:
|
|
195
|
+
- api/mcp/index.md
|
|
196
|
+
- Client: api/mcp/client.md
|
|
197
|
+
- Server: api/mcp/server.md
|
|
198
|
+
- Transports: api/mcp/transports.md
|
|
199
|
+
- Streaming:
|
|
200
|
+
- api/streaming/index.md
|
|
201
|
+
- Context: api/streaming/context.md
|
|
202
|
+
- Events: api/streaming/events.md
|
|
203
|
+
- History:
|
|
204
|
+
- api/history/index.md
|
|
205
|
+
- Config: api/history/config.md
|
|
206
|
+
- ThreadManager: api/history/thread-manager.md
|
|
207
|
+
- ActiveRecordAdapter: api/history/active-record-adapter.md
|
|
208
|
+
- Examples:
|
|
209
|
+
- examples/index.md
|
|
210
|
+
- Basic Chat: examples/basic-chat.md
|
|
211
|
+
- Multi-Robot Network: examples/multi-robot-network.md
|
|
212
|
+
- Tool Usage: examples/tool-usage.md
|
|
213
|
+
- MCP Server: examples/mcp-server.md
|
|
214
|
+
- Rails Application: examples/rails-application.md
|
data/sig/robot_lab.rbs
ADDED