robot_lab 0.1.0 → 0.2.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 +4 -4
- data/.architecture/AGENTS.md +32 -0
- data/.architecture/config.yml +8 -0
- data/.architecture/members.yml +60 -0
- data/.architecture/reviews/feature-free-will.md +490 -0
- data/.architecture/reviews/overall-codebase.md +427 -0
- data/.claude/settings.local.json +57 -0
- data/.codex/config.toml +2 -0
- data/.irbrc +2 -2
- data/.rubocop.yml +172 -0
- data/CHANGELOG.md +72 -0
- data/CLAUDE.md +139 -0
- data/README.md +91 -95
- data/Rakefile +109 -3
- data/agent2agent_review.md +192 -0
- data/agentf_improvements.md +253 -0
- data/agents.md +14 -0
- data/docs/examples/index.md +37 -2
- data/docs/getting-started/configuration.md +20 -7
- data/docs/guides/index.md +16 -16
- data/docs/guides/knowledge.md +7 -1
- data/docs/guides/observability.md +132 -0
- data/docs/index.md +30 -3
- data/docs/superpowers/plans/2026-05-06-agentskills.md +1303 -0
- data/docs/superpowers/specs/2026-05-06-agentskills-design.md +247 -0
- data/examples/.envrc +1 -0
- data/examples/01_simple_robot.rb +5 -9
- data/examples/02_tools.rb +5 -9
- data/examples/03_network.rb +8 -9
- data/examples/04_mcp.rb +21 -29
- data/examples/05_streaming.rb +12 -18
- data/examples/06_prompt_templates.rb +11 -19
- data/examples/07_network_memory.rb +16 -31
- data/examples/08_llm_config.rb +10 -22
- data/examples/09_chaining.rb +16 -27
- data/examples/10_memory.rb +12 -28
- data/examples/11_network_introspection.rb +15 -29
- data/examples/12_message_bus.rb +5 -12
- data/examples/13_spawn.rb +5 -10
- data/examples/14_rusty_circuit/.envrc +1 -0
- data/examples/14_rusty_circuit/comic.rb +2 -0
- data/examples/14_rusty_circuit/heckler.rb +1 -1
- data/examples/14_rusty_circuit/open_mic.rb +1 -3
- data/examples/14_rusty_circuit/scout.rb +2 -0
- data/examples/15_memory_network_and_bus/.envrc +1 -0
- data/examples/15_memory_network_and_bus/editorial_pipeline.rb +6 -3
- data/examples/15_memory_network_and_bus/linux_writer.rb +1 -1
- data/examples/15_memory_network_and_bus/output/combined_article.md +6 -6
- data/examples/15_memory_network_and_bus/output/final_article.md +6 -8
- data/examples/15_memory_network_and_bus/output/linux_draft.md +4 -2
- data/examples/15_memory_network_and_bus/output/mac_draft.md +3 -3
- data/examples/15_memory_network_and_bus/output/memory.json +6 -6
- data/examples/15_memory_network_and_bus/output/revision_1.md +10 -11
- data/examples/15_memory_network_and_bus/output/revision_2.md +6 -8
- data/examples/15_memory_network_and_bus/output/windows_draft.md +3 -3
- data/examples/16_writers_room/.envrc +1 -0
- data/examples/16_writers_room/writers_room.rb +2 -4
- data/examples/17_skills.rb +8 -17
- data/examples/18_rails/Gemfile +1 -0
- data/examples/19_token_tracking.rb +9 -15
- data/examples/20_circuit_breaker.rb +10 -19
- data/examples/21_learning_loop.rb +11 -20
- data/examples/22_context_compression.rb +6 -13
- data/examples/23_convergence.rb +6 -17
- data/examples/24_structured_delegation.rb +11 -15
- data/examples/25_history_search.rb +5 -12
- data/examples/26_document_store.rb +6 -13
- data/examples/27_incident_response/incident_response.rb +4 -5
- data/examples/28_mcp_discovery.rb +8 -11
- data/examples/29_ractor_tools.rb +4 -9
- data/examples/30_ractor_network.rb +10 -19
- data/examples/31_launch_assessment.rb +10 -23
- data/examples/32_newsletter_reader.rb +188 -0
- data/examples/33_stock_generator.rb +80 -0
- data/examples/33_stock_predictor.rb +306 -0
- data/examples/34_agentskills.rb +72 -0
- data/examples/README.md +1 -1
- data/examples/common.rb +76 -0
- data/examples/ruboruby.md +423 -0
- data/examples/temp.md +51 -0
- data/lib/robot_lab/agent_skill.rb +63 -0
- data/lib/robot_lab/agent_skill_catalog.rb +74 -0
- data/lib/robot_lab/ask_user.rb +2 -2
- data/lib/robot_lab/bus_poller.rb +12 -5
- data/lib/robot_lab/config.rb +1 -12
- data/lib/robot_lab/delegation_future.rb +1 -1
- data/lib/robot_lab/doom_loop_detector.rb +98 -0
- data/lib/robot_lab/history_compressor.rb +4 -10
- data/lib/robot_lab/mcp/client.rb +1 -2
- data/lib/robot_lab/mcp/connection_poller.rb +3 -3
- data/lib/robot_lab/mcp/server.rb +1 -1
- data/lib/robot_lab/mcp/server_discovery.rb +0 -2
- data/lib/robot_lab/memory.rb +32 -27
- data/lib/robot_lab/memory_change.rb +2 -2
- data/lib/robot_lab/message.rb +4 -4
- data/lib/robot_lab/network.rb +11 -6
- data/lib/robot_lab/robot/agent_skill_matching.rb +99 -0
- data/lib/robot_lab/robot/bus_messaging.rb +9 -27
- data/lib/robot_lab/robot/history_search.rb +4 -1
- data/lib/robot_lab/robot/mcp_management.rb +5 -11
- data/lib/robot_lab/robot/template_rendering.rb +60 -40
- data/lib/robot_lab/robot.rb +323 -206
- data/lib/robot_lab/robot_result.rb +6 -5
- data/lib/robot_lab/run_config.rb +5 -11
- data/lib/robot_lab/script_tool.rb +76 -0
- data/lib/robot_lab/state_proxy.rb +7 -5
- data/lib/robot_lab/tool.rb +3 -3
- data/lib/robot_lab/tool_config.rb +1 -1
- data/lib/robot_lab/tool_manifest.rb +5 -7
- data/lib/robot_lab/user_message.rb +2 -2
- data/lib/robot_lab/version.rb +1 -1
- data/lib/robot_lab/waiter.rb +1 -1
- data/lib/robot_lab.rb +41 -52
- data/logfile +8 -0
- data/mkdocs.yml +2 -3
- data/robot_concurrency.md +38 -0
- data/simple_acp_review.md +298 -0
- data/site/404.html +2300 -0
- data/site/api/core/index.html +2706 -0
- data/site/api/core/memory/index.html +3793 -0
- data/site/api/core/network/index.html +3500 -0
- data/site/api/core/robot/index.html +4566 -0
- data/site/api/core/state/index.html +3390 -0
- data/site/api/core/tool/index.html +3843 -0
- data/site/api/index.html +2635 -0
- data/site/api/mcp/client/index.html +3435 -0
- data/site/api/mcp/index.html +2783 -0
- data/site/api/mcp/server/index.html +3252 -0
- data/site/api/mcp/transports/index.html +3352 -0
- data/site/api/messages/index.html +2641 -0
- data/site/api/messages/text-message/index.html +3087 -0
- data/site/api/messages/tool-call-message/index.html +3159 -0
- data/site/api/messages/tool-result-message/index.html +3252 -0
- data/site/api/messages/user-message/index.html +3212 -0
- data/site/api/streaming/context/index.html +3282 -0
- data/site/api/streaming/events/index.html +3347 -0
- data/site/api/streaming/index.html +2738 -0
- data/site/architecture/core-concepts/index.html +3757 -0
- data/site/architecture/index.html +2797 -0
- data/site/architecture/message-flow/index.html +3238 -0
- data/site/architecture/network-orchestration/index.html +3433 -0
- data/site/architecture/robot-execution/index.html +3140 -0
- data/site/architecture/state-management/index.html +3498 -0
- data/site/assets/css/custom.css +56 -0
- data/site/assets/images/favicon.png +0 -0
- data/site/assets/images/robot_lab.jpg +0 -0
- data/site/assets/javascripts/bundle.79ae519e.min.js +16 -0
- data/site/assets/javascripts/bundle.79ae519e.min.js.map +7 -0
- data/site/assets/javascripts/lunr/min/lunr.ar.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.da.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.de.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.du.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.el.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.es.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.fi.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.fr.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.he.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.hi.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.hu.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.hy.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.it.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.ja.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.jp.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.kn.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.ko.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.multi.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.nl.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.no.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.pt.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.ro.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.ru.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.sa.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.stemmer.support.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.sv.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.ta.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.te.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.th.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.tr.min.js +18 -0
- data/site/assets/javascripts/lunr/min/lunr.vi.min.js +1 -0
- data/site/assets/javascripts/lunr/min/lunr.zh.min.js +1 -0
- data/site/assets/javascripts/lunr/tinyseg.js +206 -0
- data/site/assets/javascripts/lunr/wordcut.js +6708 -0
- data/site/assets/javascripts/workers/search.2c215733.min.js +42 -0
- data/site/assets/javascripts/workers/search.2c215733.min.js.map +7 -0
- data/site/assets/stylesheets/main.484c7ddc.min.css +1 -0
- data/site/assets/stylesheets/main.484c7ddc.min.css.map +1 -0
- data/site/assets/stylesheets/palette.ab4e12ef.min.css +1 -0
- data/site/assets/stylesheets/palette.ab4e12ef.min.css.map +1 -0
- data/site/concepts/index.html +3455 -0
- data/site/examples/basic-chat/index.html +2880 -0
- data/site/examples/index.html +2907 -0
- data/site/examples/mcp-server/index.html +3018 -0
- data/site/examples/multi-robot-network/index.html +3131 -0
- data/site/examples/rails-application/index.html +3329 -0
- data/site/examples/tool-usage/index.html +3085 -0
- data/site/getting-started/configuration/index.html +3745 -0
- data/site/getting-started/index.html +2572 -0
- data/site/getting-started/installation/index.html +2981 -0
- data/site/getting-started/quick-start/index.html +2942 -0
- data/site/guides/building-robots/index.html +4290 -0
- data/site/guides/creating-networks/index.html +3858 -0
- data/site/guides/index.html +2586 -0
- data/site/guides/mcp-integration/index.html +3581 -0
- data/site/guides/memory/index.html +3586 -0
- data/site/guides/rails-integration/index.html +4019 -0
- data/site/guides/streaming/index.html +3157 -0
- data/site/guides/using-tools/index.html +3802 -0
- data/site/index.html +2671 -0
- data/site/search/search_index.json +1 -0
- data/site/sitemap.xml +183 -0
- data/site/sitemap.xml.gz +0 -0
- data/site/tags.json +1 -0
- data/temp.md +6 -0
- data/tool_manifest_plan.md +155 -0
- metadata +154 -92
- data/docs/examples/rails-application.md +0 -419
- data/docs/guides/ractor-parallelism.md +0 -364
- data/docs/guides/rails-integration.md +0 -681
- data/docs/superpowers/plans/2026-04-14-ractor-integration.md +0 -1538
- data/docs/superpowers/specs/2026-04-14-ractor-integration-design.md +0 -258
- data/lib/generators/robot_lab/install_generator.rb +0 -90
- data/lib/generators/robot_lab/job_generator.rb +0 -40
- data/lib/generators/robot_lab/robot_generator.rb +0 -55
- data/lib/generators/robot_lab/templates/initializer.rb.tt +0 -42
- data/lib/generators/robot_lab/templates/job.rb.tt +0 -21
- data/lib/generators/robot_lab/templates/migration.rb.tt +0 -32
- data/lib/generators/robot_lab/templates/result_model.rb.tt +0 -52
- data/lib/generators/robot_lab/templates/robot.rb.tt +0 -31
- data/lib/generators/robot_lab/templates/robot_job.rb.tt +0 -18
- data/lib/generators/robot_lab/templates/robot_test.rb.tt +0 -34
- data/lib/generators/robot_lab/templates/routing_robot.rb.tt +0 -59
- data/lib/generators/robot_lab/templates/thread_model.rb.tt +0 -40
- data/lib/robot_lab/document_store.rb +0 -155
- data/lib/robot_lab/ractor_boundary.rb +0 -42
- data/lib/robot_lab/ractor_job.rb +0 -37
- data/lib/robot_lab/ractor_memory_proxy.rb +0 -85
- data/lib/robot_lab/ractor_network_scheduler.rb +0 -154
- data/lib/robot_lab/ractor_worker_pool.rb +0 -117
- data/lib/robot_lab/rails_integration/engine.rb +0 -29
- data/lib/robot_lab/rails_integration/job.rb +0 -158
- data/lib/robot_lab/rails_integration/railtie.rb +0 -51
- data/lib/robot_lab/rails_integration/turbo_stream_callbacks.rb +0 -72
|
@@ -0,0 +1,4566 @@
|
|
|
1
|
+
|
|
2
|
+
<!doctype html>
|
|
3
|
+
<html lang="en" class="no-js">
|
|
4
|
+
<head>
|
|
5
|
+
|
|
6
|
+
<meta charset="utf-8">
|
|
7
|
+
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
8
|
+
|
|
9
|
+
<meta name="description" content="Multi-robot LLM workflow orchestration for Ruby">
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
<meta name="author" content="Dewayne VanHoozer">
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
<link rel="canonical" href="https://madbomber.github.io/robot_lab/api/core/robot/">
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
<link rel="prev" href="../">
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
<link rel="next" href="../network/">
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
<link rel="icon" href="../../../assets/images/favicon.png">
|
|
28
|
+
<meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.7.1">
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
<title>Robot - RobotLab</title>
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
<link rel="stylesheet" href="../../../assets/stylesheets/main.484c7ddc.min.css">
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
<link rel="stylesheet" href="../../../assets/stylesheets/palette.ab4e12ef.min.css">
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
53
|
+
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
|
|
54
|
+
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
<link rel="stylesheet" href="../../../assets/css/custom.css">
|
|
59
|
+
|
|
60
|
+
<script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
</head>
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
<body dir="ltr" data-md-color-scheme="default" data-md-color-primary="deep-purple" data-md-color-accent="amber">
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
|
|
82
|
+
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
|
|
83
|
+
<label class="md-overlay" for="__drawer"></label>
|
|
84
|
+
<div data-md-component="skip">
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
<a href="#robot" class="md-skip">
|
|
88
|
+
Skip to content
|
|
89
|
+
</a>
|
|
90
|
+
|
|
91
|
+
</div>
|
|
92
|
+
<div data-md-component="announce">
|
|
93
|
+
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
<header class="md-header md-header--shadow md-header--lifted" data-md-component="header">
|
|
102
|
+
<nav class="md-header__inner md-grid" aria-label="Header">
|
|
103
|
+
<a href="../../.." title="RobotLab" class="md-header__button md-logo" aria-label="RobotLab" data-md-component="logo">
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h1a7 7 0 0 1 7 7h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v1a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1a7 7 0 0 1 7-7h1V5.73c-.6-.34-1-.99-1-1.73a2 2 0 0 1 2-2M7.5 13A2.5 2.5 0 0 0 5 15.5 2.5 2.5 0 0 0 7.5 18a2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 7.5 13m9 0a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5"/></svg>
|
|
107
|
+
|
|
108
|
+
</a>
|
|
109
|
+
<label class="md-header__button md-icon" for="__drawer">
|
|
110
|
+
|
|
111
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg>
|
|
112
|
+
</label>
|
|
113
|
+
<div class="md-header__title" data-md-component="header-title">
|
|
114
|
+
<div class="md-header__ellipsis">
|
|
115
|
+
<div class="md-header__topic">
|
|
116
|
+
<span class="md-ellipsis">
|
|
117
|
+
RobotLab
|
|
118
|
+
</span>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="md-header__topic" data-md-component="header-topic">
|
|
121
|
+
<span class="md-ellipsis">
|
|
122
|
+
|
|
123
|
+
Robot
|
|
124
|
+
|
|
125
|
+
</span>
|
|
126
|
+
</div>
|
|
127
|
+
</div>
|
|
128
|
+
</div>
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
<form class="md-header__option" data-md-component="palette">
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
|
|
136
|
+
<input class="md-option" data-md-color-media="" data-md-color-scheme="default" data-md-color-primary="deep-purple" data-md-color-accent="amber" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_0">
|
|
137
|
+
|
|
138
|
+
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_1" hidden>
|
|
139
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
|
140
|
+
</label>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
<input class="md-option" data-md-color-media="" data-md-color-scheme="slate" data-md-color-primary="deep-purple" data-md-color-accent="amber" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_1">
|
|
147
|
+
|
|
148
|
+
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_0" hidden>
|
|
149
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg>
|
|
150
|
+
</label>
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
</form>
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
<script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script>
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
<label class="md-header__button md-icon" for="__search">
|
|
164
|
+
|
|
165
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
166
|
+
</label>
|
|
167
|
+
<div class="md-search" data-md-component="search" role="dialog">
|
|
168
|
+
<label class="md-search__overlay" for="__search"></label>
|
|
169
|
+
<div class="md-search__inner" role="search">
|
|
170
|
+
<form class="md-search__form" name="search">
|
|
171
|
+
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
|
|
172
|
+
<label class="md-search__icon md-icon" for="__search">
|
|
173
|
+
|
|
174
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg>
|
|
175
|
+
|
|
176
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
177
|
+
</label>
|
|
178
|
+
<nav class="md-search__options" aria-label="Search">
|
|
179
|
+
|
|
180
|
+
<a href="javascript:void(0)" class="md-search__icon md-icon" title="Share" aria-label="Share" data-clipboard data-clipboard-text="" data-md-component="search-share" tabindex="-1">
|
|
181
|
+
|
|
182
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg>
|
|
183
|
+
</a>
|
|
184
|
+
|
|
185
|
+
<button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1">
|
|
186
|
+
|
|
187
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg>
|
|
188
|
+
</button>
|
|
189
|
+
</nav>
|
|
190
|
+
|
|
191
|
+
<div class="md-search__suggest" data-md-component="search-suggest"></div>
|
|
192
|
+
|
|
193
|
+
</form>
|
|
194
|
+
<div class="md-search__output">
|
|
195
|
+
<div class="md-search__scrollwrap" tabindex="0" data-md-scrollfix>
|
|
196
|
+
<div class="md-search-result" data-md-component="search-result">
|
|
197
|
+
<div class="md-search-result__meta">
|
|
198
|
+
Initializing search
|
|
199
|
+
</div>
|
|
200
|
+
<ol class="md-search-result__list" role="presentation"></ol>
|
|
201
|
+
</div>
|
|
202
|
+
</div>
|
|
203
|
+
</div>
|
|
204
|
+
</div>
|
|
205
|
+
</div>
|
|
206
|
+
|
|
207
|
+
|
|
208
|
+
|
|
209
|
+
<div class="md-header__source">
|
|
210
|
+
<a href="https://github.com/madbomber/robot_lab" title="Go to repository" class="md-source" data-md-component="source">
|
|
211
|
+
<div class="md-source__icon md-icon">
|
|
212
|
+
|
|
213
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
|
214
|
+
</div>
|
|
215
|
+
<div class="md-source__repository">
|
|
216
|
+
madbomber/robot_lab
|
|
217
|
+
</div>
|
|
218
|
+
</a>
|
|
219
|
+
</div>
|
|
220
|
+
|
|
221
|
+
</nav>
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
<nav class="md-tabs" aria-label="Tabs" data-md-component="tabs">
|
|
226
|
+
<div class="md-grid">
|
|
227
|
+
<ul class="md-tabs__list">
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
|
|
233
|
+
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
<li class="md-tabs__item">
|
|
237
|
+
<a href="../../.." class="md-tabs__link">
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
|
|
243
|
+
Home
|
|
244
|
+
|
|
245
|
+
</a>
|
|
246
|
+
</li>
|
|
247
|
+
|
|
248
|
+
|
|
249
|
+
|
|
250
|
+
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
|
|
258
|
+
<li class="md-tabs__item">
|
|
259
|
+
<a href="../../../getting-started/" class="md-tabs__link">
|
|
260
|
+
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
Getting Started
|
|
266
|
+
|
|
267
|
+
</a>
|
|
268
|
+
</li>
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
|
|
277
|
+
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
<li class="md-tabs__item">
|
|
281
|
+
<a href="../../../architecture/" class="md-tabs__link">
|
|
282
|
+
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
Architecture
|
|
288
|
+
|
|
289
|
+
</a>
|
|
290
|
+
</li>
|
|
291
|
+
|
|
292
|
+
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
|
|
299
|
+
|
|
300
|
+
|
|
301
|
+
|
|
302
|
+
<li class="md-tabs__item">
|
|
303
|
+
<a href="../../../guides/" class="md-tabs__link">
|
|
304
|
+
|
|
305
|
+
|
|
306
|
+
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
Guides
|
|
310
|
+
|
|
311
|
+
</a>
|
|
312
|
+
</li>
|
|
313
|
+
|
|
314
|
+
|
|
315
|
+
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
|
|
325
|
+
|
|
326
|
+
<li class="md-tabs__item md-tabs__item--active">
|
|
327
|
+
<a href="../../" class="md-tabs__link">
|
|
328
|
+
|
|
329
|
+
|
|
330
|
+
|
|
331
|
+
|
|
332
|
+
|
|
333
|
+
API Reference
|
|
334
|
+
|
|
335
|
+
</a>
|
|
336
|
+
</li>
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
|
|
340
|
+
|
|
341
|
+
|
|
342
|
+
|
|
343
|
+
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
|
|
347
|
+
|
|
348
|
+
<li class="md-tabs__item">
|
|
349
|
+
<a href="../../../examples/" class="md-tabs__link">
|
|
350
|
+
|
|
351
|
+
|
|
352
|
+
|
|
353
|
+
|
|
354
|
+
|
|
355
|
+
Examples
|
|
356
|
+
|
|
357
|
+
</a>
|
|
358
|
+
</li>
|
|
359
|
+
|
|
360
|
+
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
</ul>
|
|
364
|
+
</div>
|
|
365
|
+
</nav>
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
</header>
|
|
369
|
+
|
|
370
|
+
<div class="md-container" data-md-component="container">
|
|
371
|
+
|
|
372
|
+
|
|
373
|
+
|
|
374
|
+
|
|
375
|
+
<main class="md-main" data-md-component="main">
|
|
376
|
+
<div class="md-main__inner md-grid">
|
|
377
|
+
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
|
|
381
|
+
<div class="md-sidebar__scrollwrap">
|
|
382
|
+
<div class="md-sidebar__inner">
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
|
|
386
|
+
|
|
387
|
+
|
|
388
|
+
|
|
389
|
+
<nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0">
|
|
390
|
+
<label class="md-nav__title" for="__drawer">
|
|
391
|
+
<a href="../../.." title="RobotLab" class="md-nav__button md-logo" aria-label="RobotLab" data-md-component="logo">
|
|
392
|
+
|
|
393
|
+
|
|
394
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 2a2 2 0 0 1 2 2c0 .74-.4 1.39-1 1.73V7h1a7 7 0 0 1 7 7h1a1 1 0 0 1 1 1v3a1 1 0 0 1-1 1h-1v1a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-1H2a1 1 0 0 1-1-1v-3a1 1 0 0 1 1-1h1a7 7 0 0 1 7-7h1V5.73c-.6-.34-1-.99-1-1.73a2 2 0 0 1 2-2M7.5 13A2.5 2.5 0 0 0 5 15.5 2.5 2.5 0 0 0 7.5 18a2.5 2.5 0 0 0 2.5-2.5A2.5 2.5 0 0 0 7.5 13m9 0a2.5 2.5 0 0 0-2.5 2.5 2.5 2.5 0 0 0 2.5 2.5 2.5 2.5 0 0 0 2.5-2.5 2.5 2.5 0 0 0-2.5-2.5"/></svg>
|
|
395
|
+
|
|
396
|
+
</a>
|
|
397
|
+
RobotLab
|
|
398
|
+
</label>
|
|
399
|
+
|
|
400
|
+
<div class="md-nav__source">
|
|
401
|
+
<a href="https://github.com/madbomber/robot_lab" title="Go to repository" class="md-source" data-md-component="source">
|
|
402
|
+
<div class="md-source__icon md-icon">
|
|
403
|
+
|
|
404
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
|
405
|
+
</div>
|
|
406
|
+
<div class="md-source__repository">
|
|
407
|
+
madbomber/robot_lab
|
|
408
|
+
</div>
|
|
409
|
+
</a>
|
|
410
|
+
</div>
|
|
411
|
+
|
|
412
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
413
|
+
|
|
414
|
+
|
|
415
|
+
|
|
416
|
+
|
|
417
|
+
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
|
|
421
|
+
|
|
422
|
+
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
|
|
426
|
+
|
|
427
|
+
|
|
428
|
+
|
|
429
|
+
|
|
430
|
+
|
|
431
|
+
|
|
432
|
+
|
|
433
|
+
|
|
434
|
+
|
|
435
|
+
|
|
436
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
437
|
+
|
|
438
|
+
|
|
439
|
+
|
|
440
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_1" >
|
|
441
|
+
|
|
442
|
+
|
|
443
|
+
<div class="md-nav__link md-nav__container">
|
|
444
|
+
<a href="../../.." class="md-nav__link ">
|
|
445
|
+
|
|
446
|
+
|
|
447
|
+
|
|
448
|
+
<span class="md-ellipsis">
|
|
449
|
+
|
|
450
|
+
|
|
451
|
+
Home
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
|
|
455
|
+
</span>
|
|
456
|
+
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
</a>
|
|
460
|
+
|
|
461
|
+
|
|
462
|
+
<label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0">
|
|
463
|
+
<span class="md-nav__icon md-icon"></span>
|
|
464
|
+
</label>
|
|
465
|
+
|
|
466
|
+
</div>
|
|
467
|
+
|
|
468
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false">
|
|
469
|
+
<label class="md-nav__title" for="__nav_1">
|
|
470
|
+
<span class="md-nav__icon md-icon"></span>
|
|
471
|
+
|
|
472
|
+
|
|
473
|
+
Home
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
</label>
|
|
477
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
478
|
+
|
|
479
|
+
|
|
480
|
+
|
|
481
|
+
|
|
482
|
+
|
|
483
|
+
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
|
|
487
|
+
<li class="md-nav__item">
|
|
488
|
+
<a href="../../../concepts/" class="md-nav__link">
|
|
489
|
+
|
|
490
|
+
|
|
491
|
+
|
|
492
|
+
<span class="md-ellipsis">
|
|
493
|
+
|
|
494
|
+
|
|
495
|
+
Concepts
|
|
496
|
+
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
</span>
|
|
500
|
+
|
|
501
|
+
|
|
502
|
+
|
|
503
|
+
</a>
|
|
504
|
+
</li>
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
|
|
509
|
+
</ul>
|
|
510
|
+
</nav>
|
|
511
|
+
|
|
512
|
+
</li>
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
516
|
+
|
|
517
|
+
|
|
518
|
+
|
|
519
|
+
|
|
520
|
+
|
|
521
|
+
|
|
522
|
+
|
|
523
|
+
|
|
524
|
+
|
|
525
|
+
|
|
526
|
+
|
|
527
|
+
|
|
528
|
+
|
|
529
|
+
|
|
530
|
+
|
|
531
|
+
|
|
532
|
+
|
|
533
|
+
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
|
|
537
|
+
|
|
538
|
+
|
|
539
|
+
|
|
540
|
+
|
|
541
|
+
|
|
542
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
543
|
+
|
|
544
|
+
|
|
545
|
+
|
|
546
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" >
|
|
547
|
+
|
|
548
|
+
|
|
549
|
+
<div class="md-nav__link md-nav__container">
|
|
550
|
+
<a href="../../../getting-started/" class="md-nav__link ">
|
|
551
|
+
|
|
552
|
+
|
|
553
|
+
|
|
554
|
+
<span class="md-ellipsis">
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
Getting Started
|
|
558
|
+
|
|
559
|
+
|
|
560
|
+
|
|
561
|
+
</span>
|
|
562
|
+
|
|
563
|
+
|
|
564
|
+
|
|
565
|
+
</a>
|
|
566
|
+
|
|
567
|
+
|
|
568
|
+
<label class="md-nav__link " for="__nav_2" id="__nav_2_label" tabindex="0">
|
|
569
|
+
<span class="md-nav__icon md-icon"></span>
|
|
570
|
+
</label>
|
|
571
|
+
|
|
572
|
+
</div>
|
|
573
|
+
|
|
574
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="false">
|
|
575
|
+
<label class="md-nav__title" for="__nav_2">
|
|
576
|
+
<span class="md-nav__icon md-icon"></span>
|
|
577
|
+
|
|
578
|
+
|
|
579
|
+
Getting Started
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
</label>
|
|
583
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
584
|
+
|
|
585
|
+
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
|
|
589
|
+
|
|
590
|
+
|
|
591
|
+
|
|
592
|
+
|
|
593
|
+
<li class="md-nav__item">
|
|
594
|
+
<a href="../../../getting-started/installation/" class="md-nav__link">
|
|
595
|
+
|
|
596
|
+
|
|
597
|
+
|
|
598
|
+
<span class="md-ellipsis">
|
|
599
|
+
|
|
600
|
+
|
|
601
|
+
Installation
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
</span>
|
|
606
|
+
|
|
607
|
+
|
|
608
|
+
|
|
609
|
+
</a>
|
|
610
|
+
</li>
|
|
611
|
+
|
|
612
|
+
|
|
613
|
+
|
|
614
|
+
|
|
615
|
+
|
|
616
|
+
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
<li class="md-nav__item">
|
|
622
|
+
<a href="../../../getting-started/quick-start/" class="md-nav__link">
|
|
623
|
+
|
|
624
|
+
|
|
625
|
+
|
|
626
|
+
<span class="md-ellipsis">
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
Quick Start
|
|
630
|
+
|
|
631
|
+
|
|
632
|
+
|
|
633
|
+
</span>
|
|
634
|
+
|
|
635
|
+
|
|
636
|
+
|
|
637
|
+
</a>
|
|
638
|
+
</li>
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
|
|
642
|
+
|
|
643
|
+
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
<li class="md-nav__item">
|
|
650
|
+
<a href="../../../getting-started/configuration/" class="md-nav__link">
|
|
651
|
+
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
<span class="md-ellipsis">
|
|
655
|
+
|
|
656
|
+
|
|
657
|
+
Configuration
|
|
658
|
+
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
</span>
|
|
662
|
+
|
|
663
|
+
|
|
664
|
+
|
|
665
|
+
</a>
|
|
666
|
+
</li>
|
|
667
|
+
|
|
668
|
+
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
</ul>
|
|
672
|
+
</nav>
|
|
673
|
+
|
|
674
|
+
</li>
|
|
675
|
+
|
|
676
|
+
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
|
|
680
|
+
|
|
681
|
+
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
|
|
685
|
+
|
|
686
|
+
|
|
687
|
+
|
|
688
|
+
|
|
689
|
+
|
|
690
|
+
|
|
691
|
+
|
|
692
|
+
|
|
693
|
+
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
|
|
699
|
+
|
|
700
|
+
|
|
701
|
+
|
|
702
|
+
|
|
703
|
+
|
|
704
|
+
|
|
705
|
+
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
709
|
+
|
|
710
|
+
|
|
711
|
+
|
|
712
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_3" >
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
<div class="md-nav__link md-nav__container">
|
|
716
|
+
<a href="../../../architecture/" class="md-nav__link ">
|
|
717
|
+
|
|
718
|
+
|
|
719
|
+
|
|
720
|
+
<span class="md-ellipsis">
|
|
721
|
+
|
|
722
|
+
|
|
723
|
+
Architecture
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
|
|
727
|
+
</span>
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
|
|
731
|
+
</a>
|
|
732
|
+
|
|
733
|
+
|
|
734
|
+
<label class="md-nav__link " for="__nav_3" id="__nav_3_label" tabindex="0">
|
|
735
|
+
<span class="md-nav__icon md-icon"></span>
|
|
736
|
+
</label>
|
|
737
|
+
|
|
738
|
+
</div>
|
|
739
|
+
|
|
740
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false">
|
|
741
|
+
<label class="md-nav__title" for="__nav_3">
|
|
742
|
+
<span class="md-nav__icon md-icon"></span>
|
|
743
|
+
|
|
744
|
+
|
|
745
|
+
Architecture
|
|
746
|
+
|
|
747
|
+
|
|
748
|
+
</label>
|
|
749
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
|
|
759
|
+
<li class="md-nav__item">
|
|
760
|
+
<a href="../../../architecture/core-concepts/" class="md-nav__link">
|
|
761
|
+
|
|
762
|
+
|
|
763
|
+
|
|
764
|
+
<span class="md-ellipsis">
|
|
765
|
+
|
|
766
|
+
|
|
767
|
+
Core Concepts
|
|
768
|
+
|
|
769
|
+
|
|
770
|
+
|
|
771
|
+
</span>
|
|
772
|
+
|
|
773
|
+
|
|
774
|
+
|
|
775
|
+
</a>
|
|
776
|
+
</li>
|
|
777
|
+
|
|
778
|
+
|
|
779
|
+
|
|
780
|
+
|
|
781
|
+
|
|
782
|
+
|
|
783
|
+
|
|
784
|
+
|
|
785
|
+
|
|
786
|
+
|
|
787
|
+
<li class="md-nav__item">
|
|
788
|
+
<a href="../../../architecture/robot-execution/" class="md-nav__link">
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
|
|
792
|
+
<span class="md-ellipsis">
|
|
793
|
+
|
|
794
|
+
|
|
795
|
+
Robot Execution
|
|
796
|
+
|
|
797
|
+
|
|
798
|
+
|
|
799
|
+
</span>
|
|
800
|
+
|
|
801
|
+
|
|
802
|
+
|
|
803
|
+
</a>
|
|
804
|
+
</li>
|
|
805
|
+
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
<li class="md-nav__item">
|
|
816
|
+
<a href="../../../architecture/network-orchestration/" class="md-nav__link">
|
|
817
|
+
|
|
818
|
+
|
|
819
|
+
|
|
820
|
+
<span class="md-ellipsis">
|
|
821
|
+
|
|
822
|
+
|
|
823
|
+
Network Orchestration
|
|
824
|
+
|
|
825
|
+
|
|
826
|
+
|
|
827
|
+
</span>
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
|
|
831
|
+
</a>
|
|
832
|
+
</li>
|
|
833
|
+
|
|
834
|
+
|
|
835
|
+
|
|
836
|
+
|
|
837
|
+
|
|
838
|
+
|
|
839
|
+
|
|
840
|
+
|
|
841
|
+
|
|
842
|
+
|
|
843
|
+
<li class="md-nav__item">
|
|
844
|
+
<a href="../../../architecture/state-management/" class="md-nav__link">
|
|
845
|
+
|
|
846
|
+
|
|
847
|
+
|
|
848
|
+
<span class="md-ellipsis">
|
|
849
|
+
|
|
850
|
+
|
|
851
|
+
State Management
|
|
852
|
+
|
|
853
|
+
|
|
854
|
+
|
|
855
|
+
</span>
|
|
856
|
+
|
|
857
|
+
|
|
858
|
+
|
|
859
|
+
</a>
|
|
860
|
+
</li>
|
|
861
|
+
|
|
862
|
+
|
|
863
|
+
|
|
864
|
+
|
|
865
|
+
|
|
866
|
+
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
|
|
870
|
+
|
|
871
|
+
<li class="md-nav__item">
|
|
872
|
+
<a href="../../../architecture/message-flow/" class="md-nav__link">
|
|
873
|
+
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
<span class="md-ellipsis">
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
Message Flow
|
|
880
|
+
|
|
881
|
+
|
|
882
|
+
|
|
883
|
+
</span>
|
|
884
|
+
|
|
885
|
+
|
|
886
|
+
|
|
887
|
+
</a>
|
|
888
|
+
</li>
|
|
889
|
+
|
|
890
|
+
|
|
891
|
+
|
|
892
|
+
|
|
893
|
+
</ul>
|
|
894
|
+
</nav>
|
|
895
|
+
|
|
896
|
+
</li>
|
|
897
|
+
|
|
898
|
+
|
|
899
|
+
|
|
900
|
+
|
|
901
|
+
|
|
902
|
+
|
|
903
|
+
|
|
904
|
+
|
|
905
|
+
|
|
906
|
+
|
|
907
|
+
|
|
908
|
+
|
|
909
|
+
|
|
910
|
+
|
|
911
|
+
|
|
912
|
+
|
|
913
|
+
|
|
914
|
+
|
|
915
|
+
|
|
916
|
+
|
|
917
|
+
|
|
918
|
+
|
|
919
|
+
|
|
920
|
+
|
|
921
|
+
|
|
922
|
+
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
|
|
929
|
+
|
|
930
|
+
|
|
931
|
+
|
|
932
|
+
|
|
933
|
+
|
|
934
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
935
|
+
|
|
936
|
+
|
|
937
|
+
|
|
938
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_4" >
|
|
939
|
+
|
|
940
|
+
|
|
941
|
+
<div class="md-nav__link md-nav__container">
|
|
942
|
+
<a href="../../../guides/" class="md-nav__link ">
|
|
943
|
+
|
|
944
|
+
|
|
945
|
+
|
|
946
|
+
<span class="md-ellipsis">
|
|
947
|
+
|
|
948
|
+
|
|
949
|
+
Guides
|
|
950
|
+
|
|
951
|
+
|
|
952
|
+
|
|
953
|
+
</span>
|
|
954
|
+
|
|
955
|
+
|
|
956
|
+
|
|
957
|
+
</a>
|
|
958
|
+
|
|
959
|
+
|
|
960
|
+
<label class="md-nav__link " for="__nav_4" id="__nav_4_label" tabindex="0">
|
|
961
|
+
<span class="md-nav__icon md-icon"></span>
|
|
962
|
+
</label>
|
|
963
|
+
|
|
964
|
+
</div>
|
|
965
|
+
|
|
966
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false">
|
|
967
|
+
<label class="md-nav__title" for="__nav_4">
|
|
968
|
+
<span class="md-nav__icon md-icon"></span>
|
|
969
|
+
|
|
970
|
+
|
|
971
|
+
Guides
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
</label>
|
|
975
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
976
|
+
|
|
977
|
+
|
|
978
|
+
|
|
979
|
+
|
|
980
|
+
|
|
981
|
+
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
|
|
985
|
+
<li class="md-nav__item">
|
|
986
|
+
<a href="../../../guides/building-robots/" class="md-nav__link">
|
|
987
|
+
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
<span class="md-ellipsis">
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
Building Robots
|
|
994
|
+
|
|
995
|
+
|
|
996
|
+
|
|
997
|
+
</span>
|
|
998
|
+
|
|
999
|
+
|
|
1000
|
+
|
|
1001
|
+
</a>
|
|
1002
|
+
</li>
|
|
1003
|
+
|
|
1004
|
+
|
|
1005
|
+
|
|
1006
|
+
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
|
|
1010
|
+
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
<li class="md-nav__item">
|
|
1014
|
+
<a href="../../../guides/creating-networks/" class="md-nav__link">
|
|
1015
|
+
|
|
1016
|
+
|
|
1017
|
+
|
|
1018
|
+
<span class="md-ellipsis">
|
|
1019
|
+
|
|
1020
|
+
|
|
1021
|
+
Creating Networks
|
|
1022
|
+
|
|
1023
|
+
|
|
1024
|
+
|
|
1025
|
+
</span>
|
|
1026
|
+
|
|
1027
|
+
|
|
1028
|
+
|
|
1029
|
+
</a>
|
|
1030
|
+
</li>
|
|
1031
|
+
|
|
1032
|
+
|
|
1033
|
+
|
|
1034
|
+
|
|
1035
|
+
|
|
1036
|
+
|
|
1037
|
+
|
|
1038
|
+
|
|
1039
|
+
|
|
1040
|
+
|
|
1041
|
+
<li class="md-nav__item">
|
|
1042
|
+
<a href="../../../guides/using-tools/" class="md-nav__link">
|
|
1043
|
+
|
|
1044
|
+
|
|
1045
|
+
|
|
1046
|
+
<span class="md-ellipsis">
|
|
1047
|
+
|
|
1048
|
+
|
|
1049
|
+
Using Tools
|
|
1050
|
+
|
|
1051
|
+
|
|
1052
|
+
|
|
1053
|
+
</span>
|
|
1054
|
+
|
|
1055
|
+
|
|
1056
|
+
|
|
1057
|
+
</a>
|
|
1058
|
+
</li>
|
|
1059
|
+
|
|
1060
|
+
|
|
1061
|
+
|
|
1062
|
+
|
|
1063
|
+
|
|
1064
|
+
|
|
1065
|
+
|
|
1066
|
+
|
|
1067
|
+
|
|
1068
|
+
|
|
1069
|
+
<li class="md-nav__item">
|
|
1070
|
+
<a href="../../../guides/mcp-integration/" class="md-nav__link">
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
|
|
1074
|
+
<span class="md-ellipsis">
|
|
1075
|
+
|
|
1076
|
+
|
|
1077
|
+
MCP Integration
|
|
1078
|
+
|
|
1079
|
+
|
|
1080
|
+
|
|
1081
|
+
</span>
|
|
1082
|
+
|
|
1083
|
+
|
|
1084
|
+
|
|
1085
|
+
</a>
|
|
1086
|
+
</li>
|
|
1087
|
+
|
|
1088
|
+
|
|
1089
|
+
|
|
1090
|
+
|
|
1091
|
+
|
|
1092
|
+
|
|
1093
|
+
|
|
1094
|
+
|
|
1095
|
+
|
|
1096
|
+
|
|
1097
|
+
<li class="md-nav__item">
|
|
1098
|
+
<a href="../../../guides/streaming/" class="md-nav__link">
|
|
1099
|
+
|
|
1100
|
+
|
|
1101
|
+
|
|
1102
|
+
<span class="md-ellipsis">
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
Streaming Responses
|
|
1106
|
+
|
|
1107
|
+
|
|
1108
|
+
|
|
1109
|
+
</span>
|
|
1110
|
+
|
|
1111
|
+
|
|
1112
|
+
|
|
1113
|
+
</a>
|
|
1114
|
+
</li>
|
|
1115
|
+
|
|
1116
|
+
|
|
1117
|
+
|
|
1118
|
+
|
|
1119
|
+
|
|
1120
|
+
|
|
1121
|
+
|
|
1122
|
+
|
|
1123
|
+
|
|
1124
|
+
|
|
1125
|
+
<li class="md-nav__item">
|
|
1126
|
+
<a href="../../../guides/memory/" class="md-nav__link">
|
|
1127
|
+
|
|
1128
|
+
|
|
1129
|
+
|
|
1130
|
+
<span class="md-ellipsis">
|
|
1131
|
+
|
|
1132
|
+
|
|
1133
|
+
Memory System
|
|
1134
|
+
|
|
1135
|
+
|
|
1136
|
+
|
|
1137
|
+
</span>
|
|
1138
|
+
|
|
1139
|
+
|
|
1140
|
+
|
|
1141
|
+
</a>
|
|
1142
|
+
</li>
|
|
1143
|
+
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
|
|
1147
|
+
|
|
1148
|
+
|
|
1149
|
+
|
|
1150
|
+
|
|
1151
|
+
|
|
1152
|
+
|
|
1153
|
+
<li class="md-nav__item">
|
|
1154
|
+
<a href="../../../guides/rails-integration/" class="md-nav__link">
|
|
1155
|
+
|
|
1156
|
+
|
|
1157
|
+
|
|
1158
|
+
<span class="md-ellipsis">
|
|
1159
|
+
|
|
1160
|
+
|
|
1161
|
+
Rails Integration
|
|
1162
|
+
|
|
1163
|
+
|
|
1164
|
+
|
|
1165
|
+
</span>
|
|
1166
|
+
|
|
1167
|
+
|
|
1168
|
+
|
|
1169
|
+
</a>
|
|
1170
|
+
</li>
|
|
1171
|
+
|
|
1172
|
+
|
|
1173
|
+
|
|
1174
|
+
|
|
1175
|
+
</ul>
|
|
1176
|
+
</nav>
|
|
1177
|
+
|
|
1178
|
+
</li>
|
|
1179
|
+
|
|
1180
|
+
|
|
1181
|
+
|
|
1182
|
+
|
|
1183
|
+
|
|
1184
|
+
|
|
1185
|
+
|
|
1186
|
+
|
|
1187
|
+
|
|
1188
|
+
|
|
1189
|
+
|
|
1190
|
+
|
|
1191
|
+
|
|
1192
|
+
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
|
|
1196
|
+
|
|
1197
|
+
|
|
1198
|
+
|
|
1199
|
+
|
|
1200
|
+
|
|
1201
|
+
|
|
1202
|
+
|
|
1203
|
+
|
|
1204
|
+
|
|
1205
|
+
|
|
1206
|
+
|
|
1207
|
+
|
|
1208
|
+
|
|
1209
|
+
|
|
1210
|
+
|
|
1211
|
+
|
|
1212
|
+
|
|
1213
|
+
|
|
1214
|
+
|
|
1215
|
+
<li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested">
|
|
1216
|
+
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5" checked>
|
|
1220
|
+
|
|
1221
|
+
|
|
1222
|
+
<div class="md-nav__link md-nav__container">
|
|
1223
|
+
<a href="../../" class="md-nav__link ">
|
|
1224
|
+
|
|
1225
|
+
|
|
1226
|
+
|
|
1227
|
+
<span class="md-ellipsis">
|
|
1228
|
+
|
|
1229
|
+
|
|
1230
|
+
API Reference
|
|
1231
|
+
|
|
1232
|
+
|
|
1233
|
+
|
|
1234
|
+
</span>
|
|
1235
|
+
|
|
1236
|
+
|
|
1237
|
+
|
|
1238
|
+
</a>
|
|
1239
|
+
|
|
1240
|
+
|
|
1241
|
+
<label class="md-nav__link " for="__nav_5" id="__nav_5_label" tabindex="">
|
|
1242
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1243
|
+
</label>
|
|
1244
|
+
|
|
1245
|
+
</div>
|
|
1246
|
+
|
|
1247
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="true">
|
|
1248
|
+
<label class="md-nav__title" for="__nav_5">
|
|
1249
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1250
|
+
|
|
1251
|
+
|
|
1252
|
+
API Reference
|
|
1253
|
+
|
|
1254
|
+
|
|
1255
|
+
</label>
|
|
1256
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1257
|
+
|
|
1258
|
+
|
|
1259
|
+
|
|
1260
|
+
|
|
1261
|
+
|
|
1262
|
+
|
|
1263
|
+
|
|
1264
|
+
|
|
1265
|
+
|
|
1266
|
+
|
|
1267
|
+
|
|
1268
|
+
|
|
1269
|
+
|
|
1270
|
+
|
|
1271
|
+
|
|
1272
|
+
|
|
1273
|
+
|
|
1274
|
+
|
|
1275
|
+
|
|
1276
|
+
|
|
1277
|
+
|
|
1278
|
+
|
|
1279
|
+
|
|
1280
|
+
|
|
1281
|
+
|
|
1282
|
+
|
|
1283
|
+
|
|
1284
|
+
|
|
1285
|
+
|
|
1286
|
+
|
|
1287
|
+
|
|
1288
|
+
|
|
1289
|
+
|
|
1290
|
+
|
|
1291
|
+
|
|
1292
|
+
<li class="md-nav__item md-nav__item--active md-nav__item--nested">
|
|
1293
|
+
|
|
1294
|
+
|
|
1295
|
+
|
|
1296
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_2" checked>
|
|
1297
|
+
|
|
1298
|
+
|
|
1299
|
+
<div class="md-nav__link md-nav__container">
|
|
1300
|
+
<a href="../" class="md-nav__link ">
|
|
1301
|
+
|
|
1302
|
+
|
|
1303
|
+
|
|
1304
|
+
<span class="md-ellipsis">
|
|
1305
|
+
|
|
1306
|
+
|
|
1307
|
+
Core Classes
|
|
1308
|
+
|
|
1309
|
+
|
|
1310
|
+
|
|
1311
|
+
</span>
|
|
1312
|
+
|
|
1313
|
+
|
|
1314
|
+
|
|
1315
|
+
</a>
|
|
1316
|
+
|
|
1317
|
+
|
|
1318
|
+
<label class="md-nav__link " for="__nav_5_2" id="__nav_5_2_label" tabindex="0">
|
|
1319
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1320
|
+
</label>
|
|
1321
|
+
|
|
1322
|
+
</div>
|
|
1323
|
+
|
|
1324
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="true">
|
|
1325
|
+
<label class="md-nav__title" for="__nav_5_2">
|
|
1326
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1327
|
+
|
|
1328
|
+
|
|
1329
|
+
Core Classes
|
|
1330
|
+
|
|
1331
|
+
|
|
1332
|
+
</label>
|
|
1333
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
1334
|
+
|
|
1335
|
+
|
|
1336
|
+
|
|
1337
|
+
|
|
1338
|
+
|
|
1339
|
+
|
|
1340
|
+
|
|
1341
|
+
|
|
1342
|
+
|
|
1343
|
+
|
|
1344
|
+
|
|
1345
|
+
<li class="md-nav__item md-nav__item--active">
|
|
1346
|
+
|
|
1347
|
+
<input class="md-nav__toggle md-toggle" type="checkbox" id="__toc">
|
|
1348
|
+
|
|
1349
|
+
|
|
1350
|
+
|
|
1351
|
+
|
|
1352
|
+
|
|
1353
|
+
<label class="md-nav__link md-nav__link--active" for="__toc">
|
|
1354
|
+
|
|
1355
|
+
|
|
1356
|
+
|
|
1357
|
+
<span class="md-ellipsis">
|
|
1358
|
+
|
|
1359
|
+
|
|
1360
|
+
Robot
|
|
1361
|
+
|
|
1362
|
+
|
|
1363
|
+
|
|
1364
|
+
</span>
|
|
1365
|
+
|
|
1366
|
+
|
|
1367
|
+
|
|
1368
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1369
|
+
</label>
|
|
1370
|
+
|
|
1371
|
+
<a href="./" class="md-nav__link md-nav__link--active">
|
|
1372
|
+
|
|
1373
|
+
|
|
1374
|
+
|
|
1375
|
+
<span class="md-ellipsis">
|
|
1376
|
+
|
|
1377
|
+
|
|
1378
|
+
Robot
|
|
1379
|
+
|
|
1380
|
+
|
|
1381
|
+
|
|
1382
|
+
</span>
|
|
1383
|
+
|
|
1384
|
+
|
|
1385
|
+
|
|
1386
|
+
</a>
|
|
1387
|
+
|
|
1388
|
+
|
|
1389
|
+
|
|
1390
|
+
|
|
1391
|
+
|
|
1392
|
+
<nav class="md-nav md-nav--secondary" aria-label="On this page">
|
|
1393
|
+
|
|
1394
|
+
|
|
1395
|
+
|
|
1396
|
+
|
|
1397
|
+
|
|
1398
|
+
|
|
1399
|
+
<label class="md-nav__title" for="__toc">
|
|
1400
|
+
<span class="md-nav__icon md-icon"></span>
|
|
1401
|
+
On this page
|
|
1402
|
+
</label>
|
|
1403
|
+
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
1404
|
+
|
|
1405
|
+
<li class="md-nav__item">
|
|
1406
|
+
<a href="#class-hierarchy" class="md-nav__link">
|
|
1407
|
+
<span class="md-ellipsis">
|
|
1408
|
+
|
|
1409
|
+
Class Hierarchy
|
|
1410
|
+
|
|
1411
|
+
</span>
|
|
1412
|
+
</a>
|
|
1413
|
+
|
|
1414
|
+
</li>
|
|
1415
|
+
|
|
1416
|
+
<li class="md-nav__item">
|
|
1417
|
+
<a href="#constructor" class="md-nav__link">
|
|
1418
|
+
<span class="md-ellipsis">
|
|
1419
|
+
|
|
1420
|
+
Constructor
|
|
1421
|
+
|
|
1422
|
+
</span>
|
|
1423
|
+
</a>
|
|
1424
|
+
|
|
1425
|
+
<nav class="md-nav" aria-label="Constructor">
|
|
1426
|
+
<ul class="md-nav__list">
|
|
1427
|
+
|
|
1428
|
+
<li class="md-nav__item">
|
|
1429
|
+
<a href="#parameters" class="md-nav__link">
|
|
1430
|
+
<span class="md-ellipsis">
|
|
1431
|
+
|
|
1432
|
+
Parameters
|
|
1433
|
+
|
|
1434
|
+
</span>
|
|
1435
|
+
</a>
|
|
1436
|
+
|
|
1437
|
+
</li>
|
|
1438
|
+
|
|
1439
|
+
</ul>
|
|
1440
|
+
</nav>
|
|
1441
|
+
|
|
1442
|
+
</li>
|
|
1443
|
+
|
|
1444
|
+
<li class="md-nav__item">
|
|
1445
|
+
<a href="#factory-method" class="md-nav__link">
|
|
1446
|
+
<span class="md-ellipsis">
|
|
1447
|
+
|
|
1448
|
+
Factory Method
|
|
1449
|
+
|
|
1450
|
+
</span>
|
|
1451
|
+
</a>
|
|
1452
|
+
|
|
1453
|
+
</li>
|
|
1454
|
+
|
|
1455
|
+
<li class="md-nav__item">
|
|
1456
|
+
<a href="#attributes-read-only" class="md-nav__link">
|
|
1457
|
+
<span class="md-ellipsis">
|
|
1458
|
+
|
|
1459
|
+
Attributes (Read-Only)
|
|
1460
|
+
|
|
1461
|
+
</span>
|
|
1462
|
+
</a>
|
|
1463
|
+
|
|
1464
|
+
</li>
|
|
1465
|
+
|
|
1466
|
+
<li class="md-nav__item">
|
|
1467
|
+
<a href="#attributes-read-write" class="md-nav__link">
|
|
1468
|
+
<span class="md-ellipsis">
|
|
1469
|
+
|
|
1470
|
+
Attributes (Read-Write)
|
|
1471
|
+
|
|
1472
|
+
</span>
|
|
1473
|
+
</a>
|
|
1474
|
+
|
|
1475
|
+
</li>
|
|
1476
|
+
|
|
1477
|
+
<li class="md-nav__item">
|
|
1478
|
+
<a href="#methods" class="md-nav__link">
|
|
1479
|
+
<span class="md-ellipsis">
|
|
1480
|
+
|
|
1481
|
+
Methods
|
|
1482
|
+
|
|
1483
|
+
</span>
|
|
1484
|
+
</a>
|
|
1485
|
+
|
|
1486
|
+
<nav class="md-nav" aria-label="Methods">
|
|
1487
|
+
<ul class="md-nav__list">
|
|
1488
|
+
|
|
1489
|
+
<li class="md-nav__item">
|
|
1490
|
+
<a href="#run" class="md-nav__link">
|
|
1491
|
+
<span class="md-ellipsis">
|
|
1492
|
+
|
|
1493
|
+
run
|
|
1494
|
+
|
|
1495
|
+
</span>
|
|
1496
|
+
</a>
|
|
1497
|
+
|
|
1498
|
+
</li>
|
|
1499
|
+
|
|
1500
|
+
<li class="md-nav__item">
|
|
1501
|
+
<a href="#model" class="md-nav__link">
|
|
1502
|
+
<span class="md-ellipsis">
|
|
1503
|
+
|
|
1504
|
+
model
|
|
1505
|
+
|
|
1506
|
+
</span>
|
|
1507
|
+
</a>
|
|
1508
|
+
|
|
1509
|
+
</li>
|
|
1510
|
+
|
|
1511
|
+
<li class="md-nav__item">
|
|
1512
|
+
<a href="#update" class="md-nav__link">
|
|
1513
|
+
<span class="md-ellipsis">
|
|
1514
|
+
|
|
1515
|
+
update
|
|
1516
|
+
|
|
1517
|
+
</span>
|
|
1518
|
+
</a>
|
|
1519
|
+
|
|
1520
|
+
</li>
|
|
1521
|
+
|
|
1522
|
+
<li class="md-nav__item">
|
|
1523
|
+
<a href="#with_-methods-chaining" class="md-nav__link">
|
|
1524
|
+
<span class="md-ellipsis">
|
|
1525
|
+
|
|
1526
|
+
with_* Methods (Chaining)
|
|
1527
|
+
|
|
1528
|
+
</span>
|
|
1529
|
+
</a>
|
|
1530
|
+
|
|
1531
|
+
</li>
|
|
1532
|
+
|
|
1533
|
+
<li class="md-nav__item">
|
|
1534
|
+
<a href="#with_template" class="md-nav__link">
|
|
1535
|
+
<span class="md-ellipsis">
|
|
1536
|
+
|
|
1537
|
+
with_template
|
|
1538
|
+
|
|
1539
|
+
</span>
|
|
1540
|
+
</a>
|
|
1541
|
+
|
|
1542
|
+
</li>
|
|
1543
|
+
|
|
1544
|
+
<li class="md-nav__item">
|
|
1545
|
+
<a href="#call" class="md-nav__link">
|
|
1546
|
+
<span class="md-ellipsis">
|
|
1547
|
+
|
|
1548
|
+
call
|
|
1549
|
+
|
|
1550
|
+
</span>
|
|
1551
|
+
</a>
|
|
1552
|
+
|
|
1553
|
+
</li>
|
|
1554
|
+
|
|
1555
|
+
<li class="md-nav__item">
|
|
1556
|
+
<a href="#reset_memory" class="md-nav__link">
|
|
1557
|
+
<span class="md-ellipsis">
|
|
1558
|
+
|
|
1559
|
+
reset_memory
|
|
1560
|
+
|
|
1561
|
+
</span>
|
|
1562
|
+
</a>
|
|
1563
|
+
|
|
1564
|
+
</li>
|
|
1565
|
+
|
|
1566
|
+
<li class="md-nav__item">
|
|
1567
|
+
<a href="#send_message" class="md-nav__link">
|
|
1568
|
+
<span class="md-ellipsis">
|
|
1569
|
+
|
|
1570
|
+
send_message
|
|
1571
|
+
|
|
1572
|
+
</span>
|
|
1573
|
+
</a>
|
|
1574
|
+
|
|
1575
|
+
</li>
|
|
1576
|
+
|
|
1577
|
+
<li class="md-nav__item">
|
|
1578
|
+
<a href="#send_reply" class="md-nav__link">
|
|
1579
|
+
<span class="md-ellipsis">
|
|
1580
|
+
|
|
1581
|
+
send_reply
|
|
1582
|
+
|
|
1583
|
+
</span>
|
|
1584
|
+
</a>
|
|
1585
|
+
|
|
1586
|
+
</li>
|
|
1587
|
+
|
|
1588
|
+
<li class="md-nav__item">
|
|
1589
|
+
<a href="#on_message" class="md-nav__link">
|
|
1590
|
+
<span class="md-ellipsis">
|
|
1591
|
+
|
|
1592
|
+
on_message
|
|
1593
|
+
|
|
1594
|
+
</span>
|
|
1595
|
+
</a>
|
|
1596
|
+
|
|
1597
|
+
</li>
|
|
1598
|
+
|
|
1599
|
+
<li class="md-nav__item">
|
|
1600
|
+
<a href="#spawn" class="md-nav__link">
|
|
1601
|
+
<span class="md-ellipsis">
|
|
1602
|
+
|
|
1603
|
+
spawn
|
|
1604
|
+
|
|
1605
|
+
</span>
|
|
1606
|
+
</a>
|
|
1607
|
+
|
|
1608
|
+
</li>
|
|
1609
|
+
|
|
1610
|
+
<li class="md-nav__item">
|
|
1611
|
+
<a href="#with_bus" class="md-nav__link">
|
|
1612
|
+
<span class="md-ellipsis">
|
|
1613
|
+
|
|
1614
|
+
with_bus
|
|
1615
|
+
|
|
1616
|
+
</span>
|
|
1617
|
+
</a>
|
|
1618
|
+
|
|
1619
|
+
</li>
|
|
1620
|
+
|
|
1621
|
+
<li class="md-nav__item">
|
|
1622
|
+
<a href="#disconnect" class="md-nav__link">
|
|
1623
|
+
<span class="md-ellipsis">
|
|
1624
|
+
|
|
1625
|
+
disconnect
|
|
1626
|
+
|
|
1627
|
+
</span>
|
|
1628
|
+
</a>
|
|
1629
|
+
|
|
1630
|
+
</li>
|
|
1631
|
+
|
|
1632
|
+
<li class="md-nav__item">
|
|
1633
|
+
<a href="#to_h" class="md-nav__link">
|
|
1634
|
+
<span class="md-ellipsis">
|
|
1635
|
+
|
|
1636
|
+
to_h
|
|
1637
|
+
|
|
1638
|
+
</span>
|
|
1639
|
+
</a>
|
|
1640
|
+
|
|
1641
|
+
</li>
|
|
1642
|
+
|
|
1643
|
+
</ul>
|
|
1644
|
+
</nav>
|
|
1645
|
+
|
|
1646
|
+
</li>
|
|
1647
|
+
|
|
1648
|
+
<li class="md-nav__item">
|
|
1649
|
+
<a href="#memory-behavior" class="md-nav__link">
|
|
1650
|
+
<span class="md-ellipsis">
|
|
1651
|
+
|
|
1652
|
+
Memory Behavior
|
|
1653
|
+
|
|
1654
|
+
</span>
|
|
1655
|
+
</a>
|
|
1656
|
+
|
|
1657
|
+
</li>
|
|
1658
|
+
|
|
1659
|
+
<li class="md-nav__item">
|
|
1660
|
+
<a href="#templates" class="md-nav__link">
|
|
1661
|
+
<span class="md-ellipsis">
|
|
1662
|
+
|
|
1663
|
+
Templates
|
|
1664
|
+
|
|
1665
|
+
</span>
|
|
1666
|
+
</a>
|
|
1667
|
+
|
|
1668
|
+
</li>
|
|
1669
|
+
|
|
1670
|
+
<li class="md-nav__item">
|
|
1671
|
+
<a href="#skills" class="md-nav__link">
|
|
1672
|
+
<span class="md-ellipsis">
|
|
1673
|
+
|
|
1674
|
+
Skills
|
|
1675
|
+
|
|
1676
|
+
</span>
|
|
1677
|
+
</a>
|
|
1678
|
+
|
|
1679
|
+
</li>
|
|
1680
|
+
|
|
1681
|
+
<li class="md-nav__item">
|
|
1682
|
+
<a href="#runconfig" class="md-nav__link">
|
|
1683
|
+
<span class="md-ellipsis">
|
|
1684
|
+
|
|
1685
|
+
RunConfig
|
|
1686
|
+
|
|
1687
|
+
</span>
|
|
1688
|
+
</a>
|
|
1689
|
+
|
|
1690
|
+
</li>
|
|
1691
|
+
|
|
1692
|
+
<li class="md-nav__item">
|
|
1693
|
+
<a href="#streaming" class="md-nav__link">
|
|
1694
|
+
<span class="md-ellipsis">
|
|
1695
|
+
|
|
1696
|
+
Streaming
|
|
1697
|
+
|
|
1698
|
+
</span>
|
|
1699
|
+
</a>
|
|
1700
|
+
|
|
1701
|
+
<nav class="md-nav" aria-label="Streaming">
|
|
1702
|
+
<ul class="md-nav__list">
|
|
1703
|
+
|
|
1704
|
+
<li class="md-nav__item">
|
|
1705
|
+
<a href="#the-chunk-object" class="md-nav__link">
|
|
1706
|
+
<span class="md-ellipsis">
|
|
1707
|
+
|
|
1708
|
+
The Chunk Object
|
|
1709
|
+
|
|
1710
|
+
</span>
|
|
1711
|
+
</a>
|
|
1712
|
+
|
|
1713
|
+
</li>
|
|
1714
|
+
|
|
1715
|
+
<li class="md-nav__item">
|
|
1716
|
+
<a href="#stored-callback-on_content" class="md-nav__link">
|
|
1717
|
+
<span class="md-ellipsis">
|
|
1718
|
+
|
|
1719
|
+
Stored Callback (on_content:)
|
|
1720
|
+
|
|
1721
|
+
</span>
|
|
1722
|
+
</a>
|
|
1723
|
+
|
|
1724
|
+
</li>
|
|
1725
|
+
|
|
1726
|
+
<li class="md-nav__item">
|
|
1727
|
+
<a href="#per-call-block" class="md-nav__link">
|
|
1728
|
+
<span class="md-ellipsis">
|
|
1729
|
+
|
|
1730
|
+
Per-Call Block
|
|
1731
|
+
|
|
1732
|
+
</span>
|
|
1733
|
+
</a>
|
|
1734
|
+
|
|
1735
|
+
</li>
|
|
1736
|
+
|
|
1737
|
+
<li class="md-nav__item">
|
|
1738
|
+
<a href="#both-together" class="md-nav__link">
|
|
1739
|
+
<span class="md-ellipsis">
|
|
1740
|
+
|
|
1741
|
+
Both Together
|
|
1742
|
+
|
|
1743
|
+
</span>
|
|
1744
|
+
</a>
|
|
1745
|
+
|
|
1746
|
+
</li>
|
|
1747
|
+
|
|
1748
|
+
</ul>
|
|
1749
|
+
</nav>
|
|
1750
|
+
|
|
1751
|
+
</li>
|
|
1752
|
+
|
|
1753
|
+
<li class="md-nav__item">
|
|
1754
|
+
<a href="#configuration-hierarchy" class="md-nav__link">
|
|
1755
|
+
<span class="md-ellipsis">
|
|
1756
|
+
|
|
1757
|
+
Configuration Hierarchy
|
|
1758
|
+
|
|
1759
|
+
</span>
|
|
1760
|
+
</a>
|
|
1761
|
+
|
|
1762
|
+
</li>
|
|
1763
|
+
|
|
1764
|
+
<li class="md-nav__item">
|
|
1765
|
+
<a href="#examples" class="md-nav__link">
|
|
1766
|
+
<span class="md-ellipsis">
|
|
1767
|
+
|
|
1768
|
+
Examples
|
|
1769
|
+
|
|
1770
|
+
</span>
|
|
1771
|
+
</a>
|
|
1772
|
+
|
|
1773
|
+
<nav class="md-nav" aria-label="Examples">
|
|
1774
|
+
<ul class="md-nav__list">
|
|
1775
|
+
|
|
1776
|
+
<li class="md-nav__item">
|
|
1777
|
+
<a href="#basic-robot" class="md-nav__link">
|
|
1778
|
+
<span class="md-ellipsis">
|
|
1779
|
+
|
|
1780
|
+
Basic Robot
|
|
1781
|
+
|
|
1782
|
+
</span>
|
|
1783
|
+
</a>
|
|
1784
|
+
|
|
1785
|
+
</li>
|
|
1786
|
+
|
|
1787
|
+
<li class="md-nav__item">
|
|
1788
|
+
<a href="#robot-with-template" class="md-nav__link">
|
|
1789
|
+
<span class="md-ellipsis">
|
|
1790
|
+
|
|
1791
|
+
Robot with Template
|
|
1792
|
+
|
|
1793
|
+
</span>
|
|
1794
|
+
</a>
|
|
1795
|
+
|
|
1796
|
+
</li>
|
|
1797
|
+
|
|
1798
|
+
<li class="md-nav__item">
|
|
1799
|
+
<a href="#robot-with-tools" class="md-nav__link">
|
|
1800
|
+
<span class="md-ellipsis">
|
|
1801
|
+
|
|
1802
|
+
Robot with Tools
|
|
1803
|
+
|
|
1804
|
+
</span>
|
|
1805
|
+
</a>
|
|
1806
|
+
|
|
1807
|
+
</li>
|
|
1808
|
+
|
|
1809
|
+
<li class="md-nav__item">
|
|
1810
|
+
<a href="#robot-with-mcp" class="md-nav__link">
|
|
1811
|
+
<span class="md-ellipsis">
|
|
1812
|
+
|
|
1813
|
+
Robot with MCP
|
|
1814
|
+
|
|
1815
|
+
</span>
|
|
1816
|
+
</a>
|
|
1817
|
+
|
|
1818
|
+
</li>
|
|
1819
|
+
|
|
1820
|
+
<li class="md-nav__item">
|
|
1821
|
+
<a href="#robot-with-skills" class="md-nav__link">
|
|
1822
|
+
<span class="md-ellipsis">
|
|
1823
|
+
|
|
1824
|
+
Robot with Skills
|
|
1825
|
+
|
|
1826
|
+
</span>
|
|
1827
|
+
</a>
|
|
1828
|
+
|
|
1829
|
+
</li>
|
|
1830
|
+
|
|
1831
|
+
<li class="md-nav__item">
|
|
1832
|
+
<a href="#bare-robot-with-chaining" class="md-nav__link">
|
|
1833
|
+
<span class="md-ellipsis">
|
|
1834
|
+
|
|
1835
|
+
Bare Robot with Chaining
|
|
1836
|
+
|
|
1837
|
+
</span>
|
|
1838
|
+
</a>
|
|
1839
|
+
|
|
1840
|
+
</li>
|
|
1841
|
+
|
|
1842
|
+
<li class="md-nav__item">
|
|
1843
|
+
<a href="#robot-with-message-bus" class="md-nav__link">
|
|
1844
|
+
<span class="md-ellipsis">
|
|
1845
|
+
|
|
1846
|
+
Robot with Message Bus
|
|
1847
|
+
|
|
1848
|
+
</span>
|
|
1849
|
+
</a>
|
|
1850
|
+
|
|
1851
|
+
</li>
|
|
1852
|
+
|
|
1853
|
+
<li class="md-nav__item">
|
|
1854
|
+
<a href="#spawning-robots-dynamically" class="md-nav__link">
|
|
1855
|
+
<span class="md-ellipsis">
|
|
1856
|
+
|
|
1857
|
+
Spawning Robots Dynamically
|
|
1858
|
+
|
|
1859
|
+
</span>
|
|
1860
|
+
</a>
|
|
1861
|
+
|
|
1862
|
+
</li>
|
|
1863
|
+
|
|
1864
|
+
<li class="md-nav__item">
|
|
1865
|
+
<a href="#connecting-to-a-bus-after-creation" class="md-nav__link">
|
|
1866
|
+
<span class="md-ellipsis">
|
|
1867
|
+
|
|
1868
|
+
Connecting to a Bus After Creation
|
|
1869
|
+
|
|
1870
|
+
</span>
|
|
1871
|
+
</a>
|
|
1872
|
+
|
|
1873
|
+
</li>
|
|
1874
|
+
|
|
1875
|
+
</ul>
|
|
1876
|
+
</nav>
|
|
1877
|
+
|
|
1878
|
+
</li>
|
|
1879
|
+
|
|
1880
|
+
<li class="md-nav__item">
|
|
1881
|
+
<a href="#see-also" class="md-nav__link">
|
|
1882
|
+
<span class="md-ellipsis">
|
|
1883
|
+
|
|
1884
|
+
See Also
|
|
1885
|
+
|
|
1886
|
+
</span>
|
|
1887
|
+
</a>
|
|
1888
|
+
|
|
1889
|
+
</li>
|
|
1890
|
+
|
|
1891
|
+
</ul>
|
|
1892
|
+
|
|
1893
|
+
</nav>
|
|
1894
|
+
|
|
1895
|
+
</li>
|
|
1896
|
+
|
|
1897
|
+
|
|
1898
|
+
|
|
1899
|
+
|
|
1900
|
+
|
|
1901
|
+
|
|
1902
|
+
|
|
1903
|
+
|
|
1904
|
+
|
|
1905
|
+
|
|
1906
|
+
<li class="md-nav__item">
|
|
1907
|
+
<a href="../network/" class="md-nav__link">
|
|
1908
|
+
|
|
1909
|
+
|
|
1910
|
+
|
|
1911
|
+
<span class="md-ellipsis">
|
|
1912
|
+
|
|
1913
|
+
|
|
1914
|
+
Network
|
|
1915
|
+
|
|
1916
|
+
|
|
1917
|
+
|
|
1918
|
+
</span>
|
|
1919
|
+
|
|
1920
|
+
|
|
1921
|
+
|
|
1922
|
+
</a>
|
|
1923
|
+
</li>
|
|
1924
|
+
|
|
1925
|
+
|
|
1926
|
+
|
|
1927
|
+
|
|
1928
|
+
|
|
1929
|
+
|
|
1930
|
+
|
|
1931
|
+
|
|
1932
|
+
|
|
1933
|
+
|
|
1934
|
+
<li class="md-nav__item">
|
|
1935
|
+
<a href="../state/" class="md-nav__link">
|
|
1936
|
+
|
|
1937
|
+
|
|
1938
|
+
|
|
1939
|
+
<span class="md-ellipsis">
|
|
1940
|
+
|
|
1941
|
+
|
|
1942
|
+
State
|
|
1943
|
+
|
|
1944
|
+
|
|
1945
|
+
|
|
1946
|
+
</span>
|
|
1947
|
+
|
|
1948
|
+
|
|
1949
|
+
|
|
1950
|
+
</a>
|
|
1951
|
+
</li>
|
|
1952
|
+
|
|
1953
|
+
|
|
1954
|
+
|
|
1955
|
+
|
|
1956
|
+
|
|
1957
|
+
|
|
1958
|
+
|
|
1959
|
+
|
|
1960
|
+
|
|
1961
|
+
|
|
1962
|
+
<li class="md-nav__item">
|
|
1963
|
+
<a href="../tool/" class="md-nav__link">
|
|
1964
|
+
|
|
1965
|
+
|
|
1966
|
+
|
|
1967
|
+
<span class="md-ellipsis">
|
|
1968
|
+
|
|
1969
|
+
|
|
1970
|
+
Tool
|
|
1971
|
+
|
|
1972
|
+
|
|
1973
|
+
|
|
1974
|
+
</span>
|
|
1975
|
+
|
|
1976
|
+
|
|
1977
|
+
|
|
1978
|
+
</a>
|
|
1979
|
+
</li>
|
|
1980
|
+
|
|
1981
|
+
|
|
1982
|
+
|
|
1983
|
+
|
|
1984
|
+
|
|
1985
|
+
|
|
1986
|
+
|
|
1987
|
+
|
|
1988
|
+
|
|
1989
|
+
|
|
1990
|
+
<li class="md-nav__item">
|
|
1991
|
+
<a href="../memory/" class="md-nav__link">
|
|
1992
|
+
|
|
1993
|
+
|
|
1994
|
+
|
|
1995
|
+
<span class="md-ellipsis">
|
|
1996
|
+
|
|
1997
|
+
|
|
1998
|
+
Memory
|
|
1999
|
+
|
|
2000
|
+
|
|
2001
|
+
|
|
2002
|
+
</span>
|
|
2003
|
+
|
|
2004
|
+
|
|
2005
|
+
|
|
2006
|
+
</a>
|
|
2007
|
+
</li>
|
|
2008
|
+
|
|
2009
|
+
|
|
2010
|
+
|
|
2011
|
+
|
|
2012
|
+
</ul>
|
|
2013
|
+
</nav>
|
|
2014
|
+
|
|
2015
|
+
</li>
|
|
2016
|
+
|
|
2017
|
+
|
|
2018
|
+
|
|
2019
|
+
|
|
2020
|
+
|
|
2021
|
+
|
|
2022
|
+
|
|
2023
|
+
|
|
2024
|
+
|
|
2025
|
+
|
|
2026
|
+
|
|
2027
|
+
|
|
2028
|
+
|
|
2029
|
+
|
|
2030
|
+
|
|
2031
|
+
|
|
2032
|
+
|
|
2033
|
+
|
|
2034
|
+
|
|
2035
|
+
|
|
2036
|
+
|
|
2037
|
+
|
|
2038
|
+
|
|
2039
|
+
|
|
2040
|
+
|
|
2041
|
+
|
|
2042
|
+
|
|
2043
|
+
|
|
2044
|
+
|
|
2045
|
+
|
|
2046
|
+
|
|
2047
|
+
|
|
2048
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2049
|
+
|
|
2050
|
+
|
|
2051
|
+
|
|
2052
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_3" >
|
|
2053
|
+
|
|
2054
|
+
|
|
2055
|
+
<div class="md-nav__link md-nav__container">
|
|
2056
|
+
<a href="../../messages/" class="md-nav__link ">
|
|
2057
|
+
|
|
2058
|
+
|
|
2059
|
+
|
|
2060
|
+
<span class="md-ellipsis">
|
|
2061
|
+
|
|
2062
|
+
|
|
2063
|
+
Messages
|
|
2064
|
+
|
|
2065
|
+
|
|
2066
|
+
|
|
2067
|
+
</span>
|
|
2068
|
+
|
|
2069
|
+
|
|
2070
|
+
|
|
2071
|
+
</a>
|
|
2072
|
+
|
|
2073
|
+
|
|
2074
|
+
<label class="md-nav__link " for="__nav_5_3" id="__nav_5_3_label" tabindex="0">
|
|
2075
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2076
|
+
</label>
|
|
2077
|
+
|
|
2078
|
+
</div>
|
|
2079
|
+
|
|
2080
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_3_label" aria-expanded="false">
|
|
2081
|
+
<label class="md-nav__title" for="__nav_5_3">
|
|
2082
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2083
|
+
|
|
2084
|
+
|
|
2085
|
+
Messages
|
|
2086
|
+
|
|
2087
|
+
|
|
2088
|
+
</label>
|
|
2089
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2090
|
+
|
|
2091
|
+
|
|
2092
|
+
|
|
2093
|
+
|
|
2094
|
+
|
|
2095
|
+
|
|
2096
|
+
|
|
2097
|
+
|
|
2098
|
+
|
|
2099
|
+
<li class="md-nav__item">
|
|
2100
|
+
<a href="../../messages/user-message/" class="md-nav__link">
|
|
2101
|
+
|
|
2102
|
+
|
|
2103
|
+
|
|
2104
|
+
<span class="md-ellipsis">
|
|
2105
|
+
|
|
2106
|
+
|
|
2107
|
+
UserMessage
|
|
2108
|
+
|
|
2109
|
+
|
|
2110
|
+
|
|
2111
|
+
</span>
|
|
2112
|
+
|
|
2113
|
+
|
|
2114
|
+
|
|
2115
|
+
</a>
|
|
2116
|
+
</li>
|
|
2117
|
+
|
|
2118
|
+
|
|
2119
|
+
|
|
2120
|
+
|
|
2121
|
+
|
|
2122
|
+
|
|
2123
|
+
|
|
2124
|
+
|
|
2125
|
+
|
|
2126
|
+
|
|
2127
|
+
<li class="md-nav__item">
|
|
2128
|
+
<a href="../../messages/text-message/" class="md-nav__link">
|
|
2129
|
+
|
|
2130
|
+
|
|
2131
|
+
|
|
2132
|
+
<span class="md-ellipsis">
|
|
2133
|
+
|
|
2134
|
+
|
|
2135
|
+
TextMessage
|
|
2136
|
+
|
|
2137
|
+
|
|
2138
|
+
|
|
2139
|
+
</span>
|
|
2140
|
+
|
|
2141
|
+
|
|
2142
|
+
|
|
2143
|
+
</a>
|
|
2144
|
+
</li>
|
|
2145
|
+
|
|
2146
|
+
|
|
2147
|
+
|
|
2148
|
+
|
|
2149
|
+
|
|
2150
|
+
|
|
2151
|
+
|
|
2152
|
+
|
|
2153
|
+
|
|
2154
|
+
|
|
2155
|
+
<li class="md-nav__item">
|
|
2156
|
+
<a href="../../messages/tool-call-message/" class="md-nav__link">
|
|
2157
|
+
|
|
2158
|
+
|
|
2159
|
+
|
|
2160
|
+
<span class="md-ellipsis">
|
|
2161
|
+
|
|
2162
|
+
|
|
2163
|
+
ToolCallMessage
|
|
2164
|
+
|
|
2165
|
+
|
|
2166
|
+
|
|
2167
|
+
</span>
|
|
2168
|
+
|
|
2169
|
+
|
|
2170
|
+
|
|
2171
|
+
</a>
|
|
2172
|
+
</li>
|
|
2173
|
+
|
|
2174
|
+
|
|
2175
|
+
|
|
2176
|
+
|
|
2177
|
+
|
|
2178
|
+
|
|
2179
|
+
|
|
2180
|
+
|
|
2181
|
+
|
|
2182
|
+
|
|
2183
|
+
<li class="md-nav__item">
|
|
2184
|
+
<a href="../../messages/tool-result-message/" class="md-nav__link">
|
|
2185
|
+
|
|
2186
|
+
|
|
2187
|
+
|
|
2188
|
+
<span class="md-ellipsis">
|
|
2189
|
+
|
|
2190
|
+
|
|
2191
|
+
ToolResultMessage
|
|
2192
|
+
|
|
2193
|
+
|
|
2194
|
+
|
|
2195
|
+
</span>
|
|
2196
|
+
|
|
2197
|
+
|
|
2198
|
+
|
|
2199
|
+
</a>
|
|
2200
|
+
</li>
|
|
2201
|
+
|
|
2202
|
+
|
|
2203
|
+
|
|
2204
|
+
|
|
2205
|
+
</ul>
|
|
2206
|
+
</nav>
|
|
2207
|
+
|
|
2208
|
+
</li>
|
|
2209
|
+
|
|
2210
|
+
|
|
2211
|
+
|
|
2212
|
+
|
|
2213
|
+
|
|
2214
|
+
|
|
2215
|
+
|
|
2216
|
+
|
|
2217
|
+
|
|
2218
|
+
|
|
2219
|
+
|
|
2220
|
+
|
|
2221
|
+
|
|
2222
|
+
|
|
2223
|
+
|
|
2224
|
+
|
|
2225
|
+
|
|
2226
|
+
|
|
2227
|
+
|
|
2228
|
+
|
|
2229
|
+
|
|
2230
|
+
|
|
2231
|
+
|
|
2232
|
+
|
|
2233
|
+
|
|
2234
|
+
|
|
2235
|
+
|
|
2236
|
+
|
|
2237
|
+
|
|
2238
|
+
|
|
2239
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2240
|
+
|
|
2241
|
+
|
|
2242
|
+
|
|
2243
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_4" >
|
|
2244
|
+
|
|
2245
|
+
|
|
2246
|
+
<div class="md-nav__link md-nav__container">
|
|
2247
|
+
<a href="../../mcp/" class="md-nav__link ">
|
|
2248
|
+
|
|
2249
|
+
|
|
2250
|
+
|
|
2251
|
+
<span class="md-ellipsis">
|
|
2252
|
+
|
|
2253
|
+
|
|
2254
|
+
MCP
|
|
2255
|
+
|
|
2256
|
+
|
|
2257
|
+
|
|
2258
|
+
</span>
|
|
2259
|
+
|
|
2260
|
+
|
|
2261
|
+
|
|
2262
|
+
</a>
|
|
2263
|
+
|
|
2264
|
+
|
|
2265
|
+
<label class="md-nav__link " for="__nav_5_4" id="__nav_5_4_label" tabindex="0">
|
|
2266
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2267
|
+
</label>
|
|
2268
|
+
|
|
2269
|
+
</div>
|
|
2270
|
+
|
|
2271
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_4_label" aria-expanded="false">
|
|
2272
|
+
<label class="md-nav__title" for="__nav_5_4">
|
|
2273
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2274
|
+
|
|
2275
|
+
|
|
2276
|
+
MCP
|
|
2277
|
+
|
|
2278
|
+
|
|
2279
|
+
</label>
|
|
2280
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2281
|
+
|
|
2282
|
+
|
|
2283
|
+
|
|
2284
|
+
|
|
2285
|
+
|
|
2286
|
+
|
|
2287
|
+
|
|
2288
|
+
|
|
2289
|
+
|
|
2290
|
+
<li class="md-nav__item">
|
|
2291
|
+
<a href="../../mcp/client/" class="md-nav__link">
|
|
2292
|
+
|
|
2293
|
+
|
|
2294
|
+
|
|
2295
|
+
<span class="md-ellipsis">
|
|
2296
|
+
|
|
2297
|
+
|
|
2298
|
+
Client
|
|
2299
|
+
|
|
2300
|
+
|
|
2301
|
+
|
|
2302
|
+
</span>
|
|
2303
|
+
|
|
2304
|
+
|
|
2305
|
+
|
|
2306
|
+
</a>
|
|
2307
|
+
</li>
|
|
2308
|
+
|
|
2309
|
+
|
|
2310
|
+
|
|
2311
|
+
|
|
2312
|
+
|
|
2313
|
+
|
|
2314
|
+
|
|
2315
|
+
|
|
2316
|
+
|
|
2317
|
+
|
|
2318
|
+
<li class="md-nav__item">
|
|
2319
|
+
<a href="../../mcp/server/" class="md-nav__link">
|
|
2320
|
+
|
|
2321
|
+
|
|
2322
|
+
|
|
2323
|
+
<span class="md-ellipsis">
|
|
2324
|
+
|
|
2325
|
+
|
|
2326
|
+
Server
|
|
2327
|
+
|
|
2328
|
+
|
|
2329
|
+
|
|
2330
|
+
</span>
|
|
2331
|
+
|
|
2332
|
+
|
|
2333
|
+
|
|
2334
|
+
</a>
|
|
2335
|
+
</li>
|
|
2336
|
+
|
|
2337
|
+
|
|
2338
|
+
|
|
2339
|
+
|
|
2340
|
+
|
|
2341
|
+
|
|
2342
|
+
|
|
2343
|
+
|
|
2344
|
+
|
|
2345
|
+
|
|
2346
|
+
<li class="md-nav__item">
|
|
2347
|
+
<a href="../../mcp/transports/" class="md-nav__link">
|
|
2348
|
+
|
|
2349
|
+
|
|
2350
|
+
|
|
2351
|
+
<span class="md-ellipsis">
|
|
2352
|
+
|
|
2353
|
+
|
|
2354
|
+
Transports
|
|
2355
|
+
|
|
2356
|
+
|
|
2357
|
+
|
|
2358
|
+
</span>
|
|
2359
|
+
|
|
2360
|
+
|
|
2361
|
+
|
|
2362
|
+
</a>
|
|
2363
|
+
</li>
|
|
2364
|
+
|
|
2365
|
+
|
|
2366
|
+
|
|
2367
|
+
|
|
2368
|
+
</ul>
|
|
2369
|
+
</nav>
|
|
2370
|
+
|
|
2371
|
+
</li>
|
|
2372
|
+
|
|
2373
|
+
|
|
2374
|
+
|
|
2375
|
+
|
|
2376
|
+
|
|
2377
|
+
|
|
2378
|
+
|
|
2379
|
+
|
|
2380
|
+
|
|
2381
|
+
|
|
2382
|
+
|
|
2383
|
+
|
|
2384
|
+
|
|
2385
|
+
|
|
2386
|
+
|
|
2387
|
+
|
|
2388
|
+
|
|
2389
|
+
|
|
2390
|
+
|
|
2391
|
+
|
|
2392
|
+
|
|
2393
|
+
|
|
2394
|
+
|
|
2395
|
+
|
|
2396
|
+
|
|
2397
|
+
|
|
2398
|
+
|
|
2399
|
+
|
|
2400
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2401
|
+
|
|
2402
|
+
|
|
2403
|
+
|
|
2404
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_5_5" >
|
|
2405
|
+
|
|
2406
|
+
|
|
2407
|
+
<div class="md-nav__link md-nav__container">
|
|
2408
|
+
<a href="../../streaming/" class="md-nav__link ">
|
|
2409
|
+
|
|
2410
|
+
|
|
2411
|
+
|
|
2412
|
+
<span class="md-ellipsis">
|
|
2413
|
+
|
|
2414
|
+
|
|
2415
|
+
Streaming
|
|
2416
|
+
|
|
2417
|
+
|
|
2418
|
+
|
|
2419
|
+
</span>
|
|
2420
|
+
|
|
2421
|
+
|
|
2422
|
+
|
|
2423
|
+
</a>
|
|
2424
|
+
|
|
2425
|
+
|
|
2426
|
+
<label class="md-nav__link " for="__nav_5_5" id="__nav_5_5_label" tabindex="0">
|
|
2427
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2428
|
+
</label>
|
|
2429
|
+
|
|
2430
|
+
</div>
|
|
2431
|
+
|
|
2432
|
+
<nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_5_label" aria-expanded="false">
|
|
2433
|
+
<label class="md-nav__title" for="__nav_5_5">
|
|
2434
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2435
|
+
|
|
2436
|
+
|
|
2437
|
+
Streaming
|
|
2438
|
+
|
|
2439
|
+
|
|
2440
|
+
</label>
|
|
2441
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2442
|
+
|
|
2443
|
+
|
|
2444
|
+
|
|
2445
|
+
|
|
2446
|
+
|
|
2447
|
+
|
|
2448
|
+
|
|
2449
|
+
|
|
2450
|
+
|
|
2451
|
+
<li class="md-nav__item">
|
|
2452
|
+
<a href="../../streaming/context/" class="md-nav__link">
|
|
2453
|
+
|
|
2454
|
+
|
|
2455
|
+
|
|
2456
|
+
<span class="md-ellipsis">
|
|
2457
|
+
|
|
2458
|
+
|
|
2459
|
+
Context
|
|
2460
|
+
|
|
2461
|
+
|
|
2462
|
+
|
|
2463
|
+
</span>
|
|
2464
|
+
|
|
2465
|
+
|
|
2466
|
+
|
|
2467
|
+
</a>
|
|
2468
|
+
</li>
|
|
2469
|
+
|
|
2470
|
+
|
|
2471
|
+
|
|
2472
|
+
|
|
2473
|
+
|
|
2474
|
+
|
|
2475
|
+
|
|
2476
|
+
|
|
2477
|
+
|
|
2478
|
+
|
|
2479
|
+
<li class="md-nav__item">
|
|
2480
|
+
<a href="../../streaming/events/" class="md-nav__link">
|
|
2481
|
+
|
|
2482
|
+
|
|
2483
|
+
|
|
2484
|
+
<span class="md-ellipsis">
|
|
2485
|
+
|
|
2486
|
+
|
|
2487
|
+
Events
|
|
2488
|
+
|
|
2489
|
+
|
|
2490
|
+
|
|
2491
|
+
</span>
|
|
2492
|
+
|
|
2493
|
+
|
|
2494
|
+
|
|
2495
|
+
</a>
|
|
2496
|
+
</li>
|
|
2497
|
+
|
|
2498
|
+
|
|
2499
|
+
|
|
2500
|
+
|
|
2501
|
+
</ul>
|
|
2502
|
+
</nav>
|
|
2503
|
+
|
|
2504
|
+
</li>
|
|
2505
|
+
|
|
2506
|
+
|
|
2507
|
+
|
|
2508
|
+
|
|
2509
|
+
</ul>
|
|
2510
|
+
</nav>
|
|
2511
|
+
|
|
2512
|
+
</li>
|
|
2513
|
+
|
|
2514
|
+
|
|
2515
|
+
|
|
2516
|
+
|
|
2517
|
+
|
|
2518
|
+
|
|
2519
|
+
|
|
2520
|
+
|
|
2521
|
+
|
|
2522
|
+
|
|
2523
|
+
|
|
2524
|
+
|
|
2525
|
+
|
|
2526
|
+
|
|
2527
|
+
|
|
2528
|
+
|
|
2529
|
+
|
|
2530
|
+
|
|
2531
|
+
|
|
2532
|
+
|
|
2533
|
+
|
|
2534
|
+
|
|
2535
|
+
|
|
2536
|
+
|
|
2537
|
+
|
|
2538
|
+
|
|
2539
|
+
|
|
2540
|
+
|
|
2541
|
+
|
|
2542
|
+
|
|
2543
|
+
|
|
2544
|
+
|
|
2545
|
+
|
|
2546
|
+
<li class="md-nav__item md-nav__item--nested">
|
|
2547
|
+
|
|
2548
|
+
|
|
2549
|
+
|
|
2550
|
+
<input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_6" >
|
|
2551
|
+
|
|
2552
|
+
|
|
2553
|
+
<div class="md-nav__link md-nav__container">
|
|
2554
|
+
<a href="../../../examples/" class="md-nav__link ">
|
|
2555
|
+
|
|
2556
|
+
|
|
2557
|
+
|
|
2558
|
+
<span class="md-ellipsis">
|
|
2559
|
+
|
|
2560
|
+
|
|
2561
|
+
Examples
|
|
2562
|
+
|
|
2563
|
+
|
|
2564
|
+
|
|
2565
|
+
</span>
|
|
2566
|
+
|
|
2567
|
+
|
|
2568
|
+
|
|
2569
|
+
</a>
|
|
2570
|
+
|
|
2571
|
+
|
|
2572
|
+
<label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="0">
|
|
2573
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2574
|
+
</label>
|
|
2575
|
+
|
|
2576
|
+
</div>
|
|
2577
|
+
|
|
2578
|
+
<nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false">
|
|
2579
|
+
<label class="md-nav__title" for="__nav_6">
|
|
2580
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2581
|
+
|
|
2582
|
+
|
|
2583
|
+
Examples
|
|
2584
|
+
|
|
2585
|
+
|
|
2586
|
+
</label>
|
|
2587
|
+
<ul class="md-nav__list" data-md-scrollfix>
|
|
2588
|
+
|
|
2589
|
+
|
|
2590
|
+
|
|
2591
|
+
|
|
2592
|
+
|
|
2593
|
+
|
|
2594
|
+
|
|
2595
|
+
|
|
2596
|
+
|
|
2597
|
+
<li class="md-nav__item">
|
|
2598
|
+
<a href="../../../examples/basic-chat/" class="md-nav__link">
|
|
2599
|
+
|
|
2600
|
+
|
|
2601
|
+
|
|
2602
|
+
<span class="md-ellipsis">
|
|
2603
|
+
|
|
2604
|
+
|
|
2605
|
+
Basic Chat
|
|
2606
|
+
|
|
2607
|
+
|
|
2608
|
+
|
|
2609
|
+
</span>
|
|
2610
|
+
|
|
2611
|
+
|
|
2612
|
+
|
|
2613
|
+
</a>
|
|
2614
|
+
</li>
|
|
2615
|
+
|
|
2616
|
+
|
|
2617
|
+
|
|
2618
|
+
|
|
2619
|
+
|
|
2620
|
+
|
|
2621
|
+
|
|
2622
|
+
|
|
2623
|
+
|
|
2624
|
+
|
|
2625
|
+
<li class="md-nav__item">
|
|
2626
|
+
<a href="../../../examples/multi-robot-network/" class="md-nav__link">
|
|
2627
|
+
|
|
2628
|
+
|
|
2629
|
+
|
|
2630
|
+
<span class="md-ellipsis">
|
|
2631
|
+
|
|
2632
|
+
|
|
2633
|
+
Multi-Robot Network
|
|
2634
|
+
|
|
2635
|
+
|
|
2636
|
+
|
|
2637
|
+
</span>
|
|
2638
|
+
|
|
2639
|
+
|
|
2640
|
+
|
|
2641
|
+
</a>
|
|
2642
|
+
</li>
|
|
2643
|
+
|
|
2644
|
+
|
|
2645
|
+
|
|
2646
|
+
|
|
2647
|
+
|
|
2648
|
+
|
|
2649
|
+
|
|
2650
|
+
|
|
2651
|
+
|
|
2652
|
+
|
|
2653
|
+
<li class="md-nav__item">
|
|
2654
|
+
<a href="../../../examples/tool-usage/" class="md-nav__link">
|
|
2655
|
+
|
|
2656
|
+
|
|
2657
|
+
|
|
2658
|
+
<span class="md-ellipsis">
|
|
2659
|
+
|
|
2660
|
+
|
|
2661
|
+
Tool Usage
|
|
2662
|
+
|
|
2663
|
+
|
|
2664
|
+
|
|
2665
|
+
</span>
|
|
2666
|
+
|
|
2667
|
+
|
|
2668
|
+
|
|
2669
|
+
</a>
|
|
2670
|
+
</li>
|
|
2671
|
+
|
|
2672
|
+
|
|
2673
|
+
|
|
2674
|
+
|
|
2675
|
+
|
|
2676
|
+
|
|
2677
|
+
|
|
2678
|
+
|
|
2679
|
+
|
|
2680
|
+
|
|
2681
|
+
<li class="md-nav__item">
|
|
2682
|
+
<a href="../../../examples/mcp-server/" class="md-nav__link">
|
|
2683
|
+
|
|
2684
|
+
|
|
2685
|
+
|
|
2686
|
+
<span class="md-ellipsis">
|
|
2687
|
+
|
|
2688
|
+
|
|
2689
|
+
MCP Server
|
|
2690
|
+
|
|
2691
|
+
|
|
2692
|
+
|
|
2693
|
+
</span>
|
|
2694
|
+
|
|
2695
|
+
|
|
2696
|
+
|
|
2697
|
+
</a>
|
|
2698
|
+
</li>
|
|
2699
|
+
|
|
2700
|
+
|
|
2701
|
+
|
|
2702
|
+
|
|
2703
|
+
|
|
2704
|
+
|
|
2705
|
+
|
|
2706
|
+
|
|
2707
|
+
|
|
2708
|
+
|
|
2709
|
+
<li class="md-nav__item">
|
|
2710
|
+
<a href="../../../examples/rails-application/" class="md-nav__link">
|
|
2711
|
+
|
|
2712
|
+
|
|
2713
|
+
|
|
2714
|
+
<span class="md-ellipsis">
|
|
2715
|
+
|
|
2716
|
+
|
|
2717
|
+
Rails Application
|
|
2718
|
+
|
|
2719
|
+
|
|
2720
|
+
|
|
2721
|
+
</span>
|
|
2722
|
+
|
|
2723
|
+
|
|
2724
|
+
|
|
2725
|
+
</a>
|
|
2726
|
+
</li>
|
|
2727
|
+
|
|
2728
|
+
|
|
2729
|
+
|
|
2730
|
+
|
|
2731
|
+
</ul>
|
|
2732
|
+
</nav>
|
|
2733
|
+
|
|
2734
|
+
</li>
|
|
2735
|
+
|
|
2736
|
+
|
|
2737
|
+
|
|
2738
|
+
</ul>
|
|
2739
|
+
</nav>
|
|
2740
|
+
</div>
|
|
2741
|
+
</div>
|
|
2742
|
+
</div>
|
|
2743
|
+
|
|
2744
|
+
|
|
2745
|
+
|
|
2746
|
+
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
|
|
2747
|
+
<div class="md-sidebar__scrollwrap">
|
|
2748
|
+
<div class="md-sidebar__inner">
|
|
2749
|
+
|
|
2750
|
+
|
|
2751
|
+
|
|
2752
|
+
|
|
2753
|
+
<nav class="md-nav md-nav--secondary" aria-label="On this page">
|
|
2754
|
+
|
|
2755
|
+
|
|
2756
|
+
|
|
2757
|
+
|
|
2758
|
+
|
|
2759
|
+
|
|
2760
|
+
<label class="md-nav__title" for="__toc">
|
|
2761
|
+
<span class="md-nav__icon md-icon"></span>
|
|
2762
|
+
On this page
|
|
2763
|
+
</label>
|
|
2764
|
+
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
|
|
2765
|
+
|
|
2766
|
+
<li class="md-nav__item">
|
|
2767
|
+
<a href="#class-hierarchy" class="md-nav__link">
|
|
2768
|
+
<span class="md-ellipsis">
|
|
2769
|
+
|
|
2770
|
+
Class Hierarchy
|
|
2771
|
+
|
|
2772
|
+
</span>
|
|
2773
|
+
</a>
|
|
2774
|
+
|
|
2775
|
+
</li>
|
|
2776
|
+
|
|
2777
|
+
<li class="md-nav__item">
|
|
2778
|
+
<a href="#constructor" class="md-nav__link">
|
|
2779
|
+
<span class="md-ellipsis">
|
|
2780
|
+
|
|
2781
|
+
Constructor
|
|
2782
|
+
|
|
2783
|
+
</span>
|
|
2784
|
+
</a>
|
|
2785
|
+
|
|
2786
|
+
<nav class="md-nav" aria-label="Constructor">
|
|
2787
|
+
<ul class="md-nav__list">
|
|
2788
|
+
|
|
2789
|
+
<li class="md-nav__item">
|
|
2790
|
+
<a href="#parameters" class="md-nav__link">
|
|
2791
|
+
<span class="md-ellipsis">
|
|
2792
|
+
|
|
2793
|
+
Parameters
|
|
2794
|
+
|
|
2795
|
+
</span>
|
|
2796
|
+
</a>
|
|
2797
|
+
|
|
2798
|
+
</li>
|
|
2799
|
+
|
|
2800
|
+
</ul>
|
|
2801
|
+
</nav>
|
|
2802
|
+
|
|
2803
|
+
</li>
|
|
2804
|
+
|
|
2805
|
+
<li class="md-nav__item">
|
|
2806
|
+
<a href="#factory-method" class="md-nav__link">
|
|
2807
|
+
<span class="md-ellipsis">
|
|
2808
|
+
|
|
2809
|
+
Factory Method
|
|
2810
|
+
|
|
2811
|
+
</span>
|
|
2812
|
+
</a>
|
|
2813
|
+
|
|
2814
|
+
</li>
|
|
2815
|
+
|
|
2816
|
+
<li class="md-nav__item">
|
|
2817
|
+
<a href="#attributes-read-only" class="md-nav__link">
|
|
2818
|
+
<span class="md-ellipsis">
|
|
2819
|
+
|
|
2820
|
+
Attributes (Read-Only)
|
|
2821
|
+
|
|
2822
|
+
</span>
|
|
2823
|
+
</a>
|
|
2824
|
+
|
|
2825
|
+
</li>
|
|
2826
|
+
|
|
2827
|
+
<li class="md-nav__item">
|
|
2828
|
+
<a href="#attributes-read-write" class="md-nav__link">
|
|
2829
|
+
<span class="md-ellipsis">
|
|
2830
|
+
|
|
2831
|
+
Attributes (Read-Write)
|
|
2832
|
+
|
|
2833
|
+
</span>
|
|
2834
|
+
</a>
|
|
2835
|
+
|
|
2836
|
+
</li>
|
|
2837
|
+
|
|
2838
|
+
<li class="md-nav__item">
|
|
2839
|
+
<a href="#methods" class="md-nav__link">
|
|
2840
|
+
<span class="md-ellipsis">
|
|
2841
|
+
|
|
2842
|
+
Methods
|
|
2843
|
+
|
|
2844
|
+
</span>
|
|
2845
|
+
</a>
|
|
2846
|
+
|
|
2847
|
+
<nav class="md-nav" aria-label="Methods">
|
|
2848
|
+
<ul class="md-nav__list">
|
|
2849
|
+
|
|
2850
|
+
<li class="md-nav__item">
|
|
2851
|
+
<a href="#run" class="md-nav__link">
|
|
2852
|
+
<span class="md-ellipsis">
|
|
2853
|
+
|
|
2854
|
+
run
|
|
2855
|
+
|
|
2856
|
+
</span>
|
|
2857
|
+
</a>
|
|
2858
|
+
|
|
2859
|
+
</li>
|
|
2860
|
+
|
|
2861
|
+
<li class="md-nav__item">
|
|
2862
|
+
<a href="#model" class="md-nav__link">
|
|
2863
|
+
<span class="md-ellipsis">
|
|
2864
|
+
|
|
2865
|
+
model
|
|
2866
|
+
|
|
2867
|
+
</span>
|
|
2868
|
+
</a>
|
|
2869
|
+
|
|
2870
|
+
</li>
|
|
2871
|
+
|
|
2872
|
+
<li class="md-nav__item">
|
|
2873
|
+
<a href="#update" class="md-nav__link">
|
|
2874
|
+
<span class="md-ellipsis">
|
|
2875
|
+
|
|
2876
|
+
update
|
|
2877
|
+
|
|
2878
|
+
</span>
|
|
2879
|
+
</a>
|
|
2880
|
+
|
|
2881
|
+
</li>
|
|
2882
|
+
|
|
2883
|
+
<li class="md-nav__item">
|
|
2884
|
+
<a href="#with_-methods-chaining" class="md-nav__link">
|
|
2885
|
+
<span class="md-ellipsis">
|
|
2886
|
+
|
|
2887
|
+
with_* Methods (Chaining)
|
|
2888
|
+
|
|
2889
|
+
</span>
|
|
2890
|
+
</a>
|
|
2891
|
+
|
|
2892
|
+
</li>
|
|
2893
|
+
|
|
2894
|
+
<li class="md-nav__item">
|
|
2895
|
+
<a href="#with_template" class="md-nav__link">
|
|
2896
|
+
<span class="md-ellipsis">
|
|
2897
|
+
|
|
2898
|
+
with_template
|
|
2899
|
+
|
|
2900
|
+
</span>
|
|
2901
|
+
</a>
|
|
2902
|
+
|
|
2903
|
+
</li>
|
|
2904
|
+
|
|
2905
|
+
<li class="md-nav__item">
|
|
2906
|
+
<a href="#call" class="md-nav__link">
|
|
2907
|
+
<span class="md-ellipsis">
|
|
2908
|
+
|
|
2909
|
+
call
|
|
2910
|
+
|
|
2911
|
+
</span>
|
|
2912
|
+
</a>
|
|
2913
|
+
|
|
2914
|
+
</li>
|
|
2915
|
+
|
|
2916
|
+
<li class="md-nav__item">
|
|
2917
|
+
<a href="#reset_memory" class="md-nav__link">
|
|
2918
|
+
<span class="md-ellipsis">
|
|
2919
|
+
|
|
2920
|
+
reset_memory
|
|
2921
|
+
|
|
2922
|
+
</span>
|
|
2923
|
+
</a>
|
|
2924
|
+
|
|
2925
|
+
</li>
|
|
2926
|
+
|
|
2927
|
+
<li class="md-nav__item">
|
|
2928
|
+
<a href="#send_message" class="md-nav__link">
|
|
2929
|
+
<span class="md-ellipsis">
|
|
2930
|
+
|
|
2931
|
+
send_message
|
|
2932
|
+
|
|
2933
|
+
</span>
|
|
2934
|
+
</a>
|
|
2935
|
+
|
|
2936
|
+
</li>
|
|
2937
|
+
|
|
2938
|
+
<li class="md-nav__item">
|
|
2939
|
+
<a href="#send_reply" class="md-nav__link">
|
|
2940
|
+
<span class="md-ellipsis">
|
|
2941
|
+
|
|
2942
|
+
send_reply
|
|
2943
|
+
|
|
2944
|
+
</span>
|
|
2945
|
+
</a>
|
|
2946
|
+
|
|
2947
|
+
</li>
|
|
2948
|
+
|
|
2949
|
+
<li class="md-nav__item">
|
|
2950
|
+
<a href="#on_message" class="md-nav__link">
|
|
2951
|
+
<span class="md-ellipsis">
|
|
2952
|
+
|
|
2953
|
+
on_message
|
|
2954
|
+
|
|
2955
|
+
</span>
|
|
2956
|
+
</a>
|
|
2957
|
+
|
|
2958
|
+
</li>
|
|
2959
|
+
|
|
2960
|
+
<li class="md-nav__item">
|
|
2961
|
+
<a href="#spawn" class="md-nav__link">
|
|
2962
|
+
<span class="md-ellipsis">
|
|
2963
|
+
|
|
2964
|
+
spawn
|
|
2965
|
+
|
|
2966
|
+
</span>
|
|
2967
|
+
</a>
|
|
2968
|
+
|
|
2969
|
+
</li>
|
|
2970
|
+
|
|
2971
|
+
<li class="md-nav__item">
|
|
2972
|
+
<a href="#with_bus" class="md-nav__link">
|
|
2973
|
+
<span class="md-ellipsis">
|
|
2974
|
+
|
|
2975
|
+
with_bus
|
|
2976
|
+
|
|
2977
|
+
</span>
|
|
2978
|
+
</a>
|
|
2979
|
+
|
|
2980
|
+
</li>
|
|
2981
|
+
|
|
2982
|
+
<li class="md-nav__item">
|
|
2983
|
+
<a href="#disconnect" class="md-nav__link">
|
|
2984
|
+
<span class="md-ellipsis">
|
|
2985
|
+
|
|
2986
|
+
disconnect
|
|
2987
|
+
|
|
2988
|
+
</span>
|
|
2989
|
+
</a>
|
|
2990
|
+
|
|
2991
|
+
</li>
|
|
2992
|
+
|
|
2993
|
+
<li class="md-nav__item">
|
|
2994
|
+
<a href="#to_h" class="md-nav__link">
|
|
2995
|
+
<span class="md-ellipsis">
|
|
2996
|
+
|
|
2997
|
+
to_h
|
|
2998
|
+
|
|
2999
|
+
</span>
|
|
3000
|
+
</a>
|
|
3001
|
+
|
|
3002
|
+
</li>
|
|
3003
|
+
|
|
3004
|
+
</ul>
|
|
3005
|
+
</nav>
|
|
3006
|
+
|
|
3007
|
+
</li>
|
|
3008
|
+
|
|
3009
|
+
<li class="md-nav__item">
|
|
3010
|
+
<a href="#memory-behavior" class="md-nav__link">
|
|
3011
|
+
<span class="md-ellipsis">
|
|
3012
|
+
|
|
3013
|
+
Memory Behavior
|
|
3014
|
+
|
|
3015
|
+
</span>
|
|
3016
|
+
</a>
|
|
3017
|
+
|
|
3018
|
+
</li>
|
|
3019
|
+
|
|
3020
|
+
<li class="md-nav__item">
|
|
3021
|
+
<a href="#templates" class="md-nav__link">
|
|
3022
|
+
<span class="md-ellipsis">
|
|
3023
|
+
|
|
3024
|
+
Templates
|
|
3025
|
+
|
|
3026
|
+
</span>
|
|
3027
|
+
</a>
|
|
3028
|
+
|
|
3029
|
+
</li>
|
|
3030
|
+
|
|
3031
|
+
<li class="md-nav__item">
|
|
3032
|
+
<a href="#skills" class="md-nav__link">
|
|
3033
|
+
<span class="md-ellipsis">
|
|
3034
|
+
|
|
3035
|
+
Skills
|
|
3036
|
+
|
|
3037
|
+
</span>
|
|
3038
|
+
</a>
|
|
3039
|
+
|
|
3040
|
+
</li>
|
|
3041
|
+
|
|
3042
|
+
<li class="md-nav__item">
|
|
3043
|
+
<a href="#runconfig" class="md-nav__link">
|
|
3044
|
+
<span class="md-ellipsis">
|
|
3045
|
+
|
|
3046
|
+
RunConfig
|
|
3047
|
+
|
|
3048
|
+
</span>
|
|
3049
|
+
</a>
|
|
3050
|
+
|
|
3051
|
+
</li>
|
|
3052
|
+
|
|
3053
|
+
<li class="md-nav__item">
|
|
3054
|
+
<a href="#streaming" class="md-nav__link">
|
|
3055
|
+
<span class="md-ellipsis">
|
|
3056
|
+
|
|
3057
|
+
Streaming
|
|
3058
|
+
|
|
3059
|
+
</span>
|
|
3060
|
+
</a>
|
|
3061
|
+
|
|
3062
|
+
<nav class="md-nav" aria-label="Streaming">
|
|
3063
|
+
<ul class="md-nav__list">
|
|
3064
|
+
|
|
3065
|
+
<li class="md-nav__item">
|
|
3066
|
+
<a href="#the-chunk-object" class="md-nav__link">
|
|
3067
|
+
<span class="md-ellipsis">
|
|
3068
|
+
|
|
3069
|
+
The Chunk Object
|
|
3070
|
+
|
|
3071
|
+
</span>
|
|
3072
|
+
</a>
|
|
3073
|
+
|
|
3074
|
+
</li>
|
|
3075
|
+
|
|
3076
|
+
<li class="md-nav__item">
|
|
3077
|
+
<a href="#stored-callback-on_content" class="md-nav__link">
|
|
3078
|
+
<span class="md-ellipsis">
|
|
3079
|
+
|
|
3080
|
+
Stored Callback (on_content:)
|
|
3081
|
+
|
|
3082
|
+
</span>
|
|
3083
|
+
</a>
|
|
3084
|
+
|
|
3085
|
+
</li>
|
|
3086
|
+
|
|
3087
|
+
<li class="md-nav__item">
|
|
3088
|
+
<a href="#per-call-block" class="md-nav__link">
|
|
3089
|
+
<span class="md-ellipsis">
|
|
3090
|
+
|
|
3091
|
+
Per-Call Block
|
|
3092
|
+
|
|
3093
|
+
</span>
|
|
3094
|
+
</a>
|
|
3095
|
+
|
|
3096
|
+
</li>
|
|
3097
|
+
|
|
3098
|
+
<li class="md-nav__item">
|
|
3099
|
+
<a href="#both-together" class="md-nav__link">
|
|
3100
|
+
<span class="md-ellipsis">
|
|
3101
|
+
|
|
3102
|
+
Both Together
|
|
3103
|
+
|
|
3104
|
+
</span>
|
|
3105
|
+
</a>
|
|
3106
|
+
|
|
3107
|
+
</li>
|
|
3108
|
+
|
|
3109
|
+
</ul>
|
|
3110
|
+
</nav>
|
|
3111
|
+
|
|
3112
|
+
</li>
|
|
3113
|
+
|
|
3114
|
+
<li class="md-nav__item">
|
|
3115
|
+
<a href="#configuration-hierarchy" class="md-nav__link">
|
|
3116
|
+
<span class="md-ellipsis">
|
|
3117
|
+
|
|
3118
|
+
Configuration Hierarchy
|
|
3119
|
+
|
|
3120
|
+
</span>
|
|
3121
|
+
</a>
|
|
3122
|
+
|
|
3123
|
+
</li>
|
|
3124
|
+
|
|
3125
|
+
<li class="md-nav__item">
|
|
3126
|
+
<a href="#examples" class="md-nav__link">
|
|
3127
|
+
<span class="md-ellipsis">
|
|
3128
|
+
|
|
3129
|
+
Examples
|
|
3130
|
+
|
|
3131
|
+
</span>
|
|
3132
|
+
</a>
|
|
3133
|
+
|
|
3134
|
+
<nav class="md-nav" aria-label="Examples">
|
|
3135
|
+
<ul class="md-nav__list">
|
|
3136
|
+
|
|
3137
|
+
<li class="md-nav__item">
|
|
3138
|
+
<a href="#basic-robot" class="md-nav__link">
|
|
3139
|
+
<span class="md-ellipsis">
|
|
3140
|
+
|
|
3141
|
+
Basic Robot
|
|
3142
|
+
|
|
3143
|
+
</span>
|
|
3144
|
+
</a>
|
|
3145
|
+
|
|
3146
|
+
</li>
|
|
3147
|
+
|
|
3148
|
+
<li class="md-nav__item">
|
|
3149
|
+
<a href="#robot-with-template" class="md-nav__link">
|
|
3150
|
+
<span class="md-ellipsis">
|
|
3151
|
+
|
|
3152
|
+
Robot with Template
|
|
3153
|
+
|
|
3154
|
+
</span>
|
|
3155
|
+
</a>
|
|
3156
|
+
|
|
3157
|
+
</li>
|
|
3158
|
+
|
|
3159
|
+
<li class="md-nav__item">
|
|
3160
|
+
<a href="#robot-with-tools" class="md-nav__link">
|
|
3161
|
+
<span class="md-ellipsis">
|
|
3162
|
+
|
|
3163
|
+
Robot with Tools
|
|
3164
|
+
|
|
3165
|
+
</span>
|
|
3166
|
+
</a>
|
|
3167
|
+
|
|
3168
|
+
</li>
|
|
3169
|
+
|
|
3170
|
+
<li class="md-nav__item">
|
|
3171
|
+
<a href="#robot-with-mcp" class="md-nav__link">
|
|
3172
|
+
<span class="md-ellipsis">
|
|
3173
|
+
|
|
3174
|
+
Robot with MCP
|
|
3175
|
+
|
|
3176
|
+
</span>
|
|
3177
|
+
</a>
|
|
3178
|
+
|
|
3179
|
+
</li>
|
|
3180
|
+
|
|
3181
|
+
<li class="md-nav__item">
|
|
3182
|
+
<a href="#robot-with-skills" class="md-nav__link">
|
|
3183
|
+
<span class="md-ellipsis">
|
|
3184
|
+
|
|
3185
|
+
Robot with Skills
|
|
3186
|
+
|
|
3187
|
+
</span>
|
|
3188
|
+
</a>
|
|
3189
|
+
|
|
3190
|
+
</li>
|
|
3191
|
+
|
|
3192
|
+
<li class="md-nav__item">
|
|
3193
|
+
<a href="#bare-robot-with-chaining" class="md-nav__link">
|
|
3194
|
+
<span class="md-ellipsis">
|
|
3195
|
+
|
|
3196
|
+
Bare Robot with Chaining
|
|
3197
|
+
|
|
3198
|
+
</span>
|
|
3199
|
+
</a>
|
|
3200
|
+
|
|
3201
|
+
</li>
|
|
3202
|
+
|
|
3203
|
+
<li class="md-nav__item">
|
|
3204
|
+
<a href="#robot-with-message-bus" class="md-nav__link">
|
|
3205
|
+
<span class="md-ellipsis">
|
|
3206
|
+
|
|
3207
|
+
Robot with Message Bus
|
|
3208
|
+
|
|
3209
|
+
</span>
|
|
3210
|
+
</a>
|
|
3211
|
+
|
|
3212
|
+
</li>
|
|
3213
|
+
|
|
3214
|
+
<li class="md-nav__item">
|
|
3215
|
+
<a href="#spawning-robots-dynamically" class="md-nav__link">
|
|
3216
|
+
<span class="md-ellipsis">
|
|
3217
|
+
|
|
3218
|
+
Spawning Robots Dynamically
|
|
3219
|
+
|
|
3220
|
+
</span>
|
|
3221
|
+
</a>
|
|
3222
|
+
|
|
3223
|
+
</li>
|
|
3224
|
+
|
|
3225
|
+
<li class="md-nav__item">
|
|
3226
|
+
<a href="#connecting-to-a-bus-after-creation" class="md-nav__link">
|
|
3227
|
+
<span class="md-ellipsis">
|
|
3228
|
+
|
|
3229
|
+
Connecting to a Bus After Creation
|
|
3230
|
+
|
|
3231
|
+
</span>
|
|
3232
|
+
</a>
|
|
3233
|
+
|
|
3234
|
+
</li>
|
|
3235
|
+
|
|
3236
|
+
</ul>
|
|
3237
|
+
</nav>
|
|
3238
|
+
|
|
3239
|
+
</li>
|
|
3240
|
+
|
|
3241
|
+
<li class="md-nav__item">
|
|
3242
|
+
<a href="#see-also" class="md-nav__link">
|
|
3243
|
+
<span class="md-ellipsis">
|
|
3244
|
+
|
|
3245
|
+
See Also
|
|
3246
|
+
|
|
3247
|
+
</span>
|
|
3248
|
+
</a>
|
|
3249
|
+
|
|
3250
|
+
</li>
|
|
3251
|
+
|
|
3252
|
+
</ul>
|
|
3253
|
+
|
|
3254
|
+
</nav>
|
|
3255
|
+
</div>
|
|
3256
|
+
</div>
|
|
3257
|
+
</div>
|
|
3258
|
+
|
|
3259
|
+
|
|
3260
|
+
|
|
3261
|
+
<div class="md-content" data-md-component="content">
|
|
3262
|
+
|
|
3263
|
+
|
|
3264
|
+
|
|
3265
|
+
|
|
3266
|
+
|
|
3267
|
+
|
|
3268
|
+
<nav class="md-path" aria-label="Navigation" >
|
|
3269
|
+
<ol class="md-path__list">
|
|
3270
|
+
|
|
3271
|
+
|
|
3272
|
+
|
|
3273
|
+
|
|
3274
|
+
|
|
3275
|
+
|
|
3276
|
+
|
|
3277
|
+
<li class="md-path__item">
|
|
3278
|
+
<a href="../../" class="md-path__link">
|
|
3279
|
+
|
|
3280
|
+
<span class="md-ellipsis">
|
|
3281
|
+
API Reference
|
|
3282
|
+
</span>
|
|
3283
|
+
|
|
3284
|
+
</a>
|
|
3285
|
+
</li>
|
|
3286
|
+
|
|
3287
|
+
|
|
3288
|
+
|
|
3289
|
+
|
|
3290
|
+
|
|
3291
|
+
|
|
3292
|
+
|
|
3293
|
+
|
|
3294
|
+
|
|
3295
|
+
<li class="md-path__item">
|
|
3296
|
+
<a href="../" class="md-path__link">
|
|
3297
|
+
|
|
3298
|
+
<span class="md-ellipsis">
|
|
3299
|
+
Core Classes
|
|
3300
|
+
</span>
|
|
3301
|
+
|
|
3302
|
+
</a>
|
|
3303
|
+
</li>
|
|
3304
|
+
|
|
3305
|
+
|
|
3306
|
+
|
|
3307
|
+
|
|
3308
|
+
</ol>
|
|
3309
|
+
</nav>
|
|
3310
|
+
|
|
3311
|
+
|
|
3312
|
+
<article class="md-content__inner md-typeset">
|
|
3313
|
+
|
|
3314
|
+
|
|
3315
|
+
|
|
3316
|
+
|
|
3317
|
+
|
|
3318
|
+
<a href="https://github.com/madbomber/robot_lab/edit/main/docs/api/core/robot.md" title="Edit this page" class="md-content__button md-icon" rel="edit">
|
|
3319
|
+
|
|
3320
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg>
|
|
3321
|
+
</a>
|
|
3322
|
+
|
|
3323
|
+
|
|
3324
|
+
|
|
3325
|
+
|
|
3326
|
+
|
|
3327
|
+
<a href="https://github.com/madbomber/robot_lab/raw/main/docs/api/core/robot.md" title="View source of this page" class="md-content__button md-icon">
|
|
3328
|
+
|
|
3329
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg>
|
|
3330
|
+
</a>
|
|
3331
|
+
|
|
3332
|
+
|
|
3333
|
+
|
|
3334
|
+
<h1 id="robot">Robot<a class="headerlink" href="#robot" title="Permanent link">¶</a></h1>
|
|
3335
|
+
<p>LLM-powered agent with template-based prompts, tools, memory, and MCP integration.</p>
|
|
3336
|
+
<h2 id="class-hierarchy">Class Hierarchy<a class="headerlink" href="#class-hierarchy" title="Permanent link">¶</a></h2>
|
|
3337
|
+
<div class="language-text highlight"><pre><span></span><code><span id="__span-0-1"><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>RubyLLM::Agent
|
|
3338
|
+
</span><span id="__span-0-2"><a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a> └── RobotLab::Robot
|
|
3339
|
+
</span><span id="__span-0-3"><a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a> └── Your custom subclasses (e.g., ClassifierRobot)
|
|
3340
|
+
</span></code></pre></div>
|
|
3341
|
+
<p><code>Robot</code> inherits from <code>RubyLLM::Agent</code>, which creates a persistent <code>@chat</code> on initialization. The robot adds template-based prompts, shared memory, hierarchical MCP configuration, and SimpleFlow pipeline integration on top of the base agent.</p>
|
|
3342
|
+
<h2 id="constructor">Constructor<a class="headerlink" href="#constructor" title="Permanent link">¶</a></h2>
|
|
3343
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-1-1"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a><span class="no">Robot</span><span class="o">.</span><span class="n">new</span><span class="p">(</span>
|
|
3344
|
+
</span><span id="__span-1-2"><a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:,</span>
|
|
3345
|
+
</span><span id="__span-1-3"><a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3346
|
+
</span><span id="__span-1-4"><a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3347
|
+
</span><span id="__span-1-5"><a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a><span class="w"> </span><span class="ss">context</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
|
3348
|
+
</span><span id="__span-1-6"><a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a><span class="w"> </span><span class="ss">description</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3349
|
+
</span><span id="__span-1-7"><a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a><span class="w"> </span><span class="ss">local_tools</span><span class="p">:</span><span class="w"> </span><span class="o">[]</span><span class="p">,</span>
|
|
3350
|
+
</span><span id="__span-1-8"><a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a><span class="w"> </span><span class="ss">model</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3351
|
+
</span><span id="__span-1-9"><a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a><span class="w"> </span><span class="ss">mcp_servers</span><span class="p">:</span><span class="w"> </span><span class="o">[]</span><span class="p">,</span>
|
|
3352
|
+
</span><span id="__span-1-10"><a id="__codelineno-1-10" name="__codelineno-1-10" href="#__codelineno-1-10"></a><span class="w"> </span><span class="ss">mcp</span><span class="p">:</span><span class="w"> </span><span class="ss">:none</span><span class="p">,</span>
|
|
3353
|
+
</span><span id="__span-1-11"><a id="__codelineno-1-11" name="__codelineno-1-11" href="#__codelineno-1-11"></a><span class="w"> </span><span class="ss">tools</span><span class="p">:</span><span class="w"> </span><span class="ss">:none</span><span class="p">,</span>
|
|
3354
|
+
</span><span id="__span-1-12"><a id="__codelineno-1-12" name="__codelineno-1-12" href="#__codelineno-1-12"></a><span class="w"> </span><span class="ss">on_tool_call</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3355
|
+
</span><span id="__span-1-13"><a id="__codelineno-1-13" name="__codelineno-1-13" href="#__codelineno-1-13"></a><span class="w"> </span><span class="ss">on_tool_result</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3356
|
+
</span><span id="__span-1-14"><a id="__codelineno-1-14" name="__codelineno-1-14" href="#__codelineno-1-14"></a><span class="w"> </span><span class="ss">on_content</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3357
|
+
</span><span id="__span-1-15"><a id="__codelineno-1-15" name="__codelineno-1-15" href="#__codelineno-1-15"></a><span class="w"> </span><span class="ss">enable_cache</span><span class="p">:</span><span class="w"> </span><span class="kp">true</span><span class="p">,</span>
|
|
3358
|
+
</span><span id="__span-1-16"><a id="__codelineno-1-16" name="__codelineno-1-16" href="#__codelineno-1-16"></a><span class="w"> </span><span class="ss">bus</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3359
|
+
</span><span id="__span-1-17"><a id="__codelineno-1-17" name="__codelineno-1-17" href="#__codelineno-1-17"></a><span class="w"> </span><span class="ss">skills</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3360
|
+
</span><span id="__span-1-18"><a id="__codelineno-1-18" name="__codelineno-1-18" href="#__codelineno-1-18"></a><span class="w"> </span><span class="ss">temperature</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3361
|
+
</span><span id="__span-1-19"><a id="__codelineno-1-19" name="__codelineno-1-19" href="#__codelineno-1-19"></a><span class="w"> </span><span class="ss">top_p</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3362
|
+
</span><span id="__span-1-20"><a id="__codelineno-1-20" name="__codelineno-1-20" href="#__codelineno-1-20"></a><span class="w"> </span><span class="ss">top_k</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3363
|
+
</span><span id="__span-1-21"><a id="__codelineno-1-21" name="__codelineno-1-21" href="#__codelineno-1-21"></a><span class="w"> </span><span class="ss">max_tokens</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3364
|
+
</span><span id="__span-1-22"><a id="__codelineno-1-22" name="__codelineno-1-22" href="#__codelineno-1-22"></a><span class="w"> </span><span class="ss">presence_penalty</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3365
|
+
</span><span id="__span-1-23"><a id="__codelineno-1-23" name="__codelineno-1-23" href="#__codelineno-1-23"></a><span class="w"> </span><span class="ss">frequency_penalty</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3366
|
+
</span><span id="__span-1-24"><a id="__codelineno-1-24" name="__codelineno-1-24" href="#__codelineno-1-24"></a><span class="w"> </span><span class="ss">stop</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3367
|
+
</span><span id="__span-1-25"><a id="__codelineno-1-25" name="__codelineno-1-25" href="#__codelineno-1-25"></a><span class="w"> </span><span class="ss">config</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span>
|
|
3368
|
+
</span><span id="__span-1-26"><a id="__codelineno-1-26" name="__codelineno-1-26" href="#__codelineno-1-26"></a><span class="p">)</span>
|
|
3369
|
+
</span></code></pre></div>
|
|
3370
|
+
<h3 id="parameters">Parameters<a class="headerlink" href="#parameters" title="Permanent link">¶</a></h3>
|
|
3371
|
+
<table>
|
|
3372
|
+
<thead>
|
|
3373
|
+
<tr>
|
|
3374
|
+
<th>Name</th>
|
|
3375
|
+
<th>Type</th>
|
|
3376
|
+
<th>Default</th>
|
|
3377
|
+
<th>Description</th>
|
|
3378
|
+
</tr>
|
|
3379
|
+
</thead>
|
|
3380
|
+
<tbody>
|
|
3381
|
+
<tr>
|
|
3382
|
+
<td><code>name</code></td>
|
|
3383
|
+
<td><code>String</code></td>
|
|
3384
|
+
<td><strong>required</strong></td>
|
|
3385
|
+
<td>Unique identifier for the robot</td>
|
|
3386
|
+
</tr>
|
|
3387
|
+
<tr>
|
|
3388
|
+
<td><code>template</code></td>
|
|
3389
|
+
<td><code>Symbol</code>, <code>nil</code></td>
|
|
3390
|
+
<td><code>nil</code></td>
|
|
3391
|
+
<td>Prompt template (e.g., <code>:assistant</code> loads <code>prompts/assistant.md</code>)</td>
|
|
3392
|
+
</tr>
|
|
3393
|
+
<tr>
|
|
3394
|
+
<td><code>system_prompt</code></td>
|
|
3395
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
3396
|
+
<td><code>nil</code></td>
|
|
3397
|
+
<td>Inline system prompt (appended after template if both given)</td>
|
|
3398
|
+
</tr>
|
|
3399
|
+
<tr>
|
|
3400
|
+
<td><code>context</code></td>
|
|
3401
|
+
<td><code>Hash</code>, <code>Proc</code></td>
|
|
3402
|
+
<td><code>{}</code></td>
|
|
3403
|
+
<td>Variables passed to the template</td>
|
|
3404
|
+
</tr>
|
|
3405
|
+
<tr>
|
|
3406
|
+
<td><code>description</code></td>
|
|
3407
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
3408
|
+
<td><code>nil</code></td>
|
|
3409
|
+
<td>Human-readable description of what the robot does</td>
|
|
3410
|
+
</tr>
|
|
3411
|
+
<tr>
|
|
3412
|
+
<td><code>local_tools</code></td>
|
|
3413
|
+
<td><code>Array</code></td>
|
|
3414
|
+
<td><code>[]</code></td>
|
|
3415
|
+
<td>Tools defined locally (<code>RubyLLM::Tool</code> subclasses or <code>RobotLab::Tool</code> instances)</td>
|
|
3416
|
+
</tr>
|
|
3417
|
+
<tr>
|
|
3418
|
+
<td><code>model</code></td>
|
|
3419
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
3420
|
+
<td><code>nil</code></td>
|
|
3421
|
+
<td>LLM model ID (falls back to <code>RobotLab.config.ruby_llm.model</code>)</td>
|
|
3422
|
+
</tr>
|
|
3423
|
+
<tr>
|
|
3424
|
+
<td><code>mcp_servers</code></td>
|
|
3425
|
+
<td><code>Array</code></td>
|
|
3426
|
+
<td><code>[]</code></td>
|
|
3427
|
+
<td>Legacy MCP server configurations</td>
|
|
3428
|
+
</tr>
|
|
3429
|
+
<tr>
|
|
3430
|
+
<td><code>mcp</code></td>
|
|
3431
|
+
<td><code>Symbol</code>, <code>Array</code></td>
|
|
3432
|
+
<td><code>:none</code></td>
|
|
3433
|
+
<td>Hierarchical MCP config (<code>:none</code>, <code>:inherit</code>, or server array)</td>
|
|
3434
|
+
</tr>
|
|
3435
|
+
<tr>
|
|
3436
|
+
<td><code>tools</code></td>
|
|
3437
|
+
<td><code>Symbol</code>, <code>Array</code></td>
|
|
3438
|
+
<td><code>:none</code></td>
|
|
3439
|
+
<td>Hierarchical tools config (<code>:none</code>, <code>:inherit</code>, or tool name array)</td>
|
|
3440
|
+
</tr>
|
|
3441
|
+
<tr>
|
|
3442
|
+
<td><code>on_tool_call</code></td>
|
|
3443
|
+
<td><code>Proc</code>, <code>nil</code></td>
|
|
3444
|
+
<td><code>nil</code></td>
|
|
3445
|
+
<td>Callback invoked when a tool is called</td>
|
|
3446
|
+
</tr>
|
|
3447
|
+
<tr>
|
|
3448
|
+
<td><code>on_tool_result</code></td>
|
|
3449
|
+
<td><code>Proc</code>, <code>nil</code></td>
|
|
3450
|
+
<td><code>nil</code></td>
|
|
3451
|
+
<td>Callback invoked when a tool returns a result</td>
|
|
3452
|
+
</tr>
|
|
3453
|
+
<tr>
|
|
3454
|
+
<td><code>on_content</code></td>
|
|
3455
|
+
<td><code>Proc</code>, <code>nil</code></td>
|
|
3456
|
+
<td><code>nil</code></td>
|
|
3457
|
+
<td>Stored streaming callback invoked with each content chunk (see <a href="#streaming">Streaming</a>)</td>
|
|
3458
|
+
</tr>
|
|
3459
|
+
<tr>
|
|
3460
|
+
<td><code>enable_cache</code></td>
|
|
3461
|
+
<td><code>Boolean</code></td>
|
|
3462
|
+
<td><code>true</code></td>
|
|
3463
|
+
<td>Whether to enable semantic caching</td>
|
|
3464
|
+
</tr>
|
|
3465
|
+
<tr>
|
|
3466
|
+
<td><code>bus</code></td>
|
|
3467
|
+
<td><code>TypedBus::MessageBus</code>, <code>nil</code></td>
|
|
3468
|
+
<td><code>nil</code></td>
|
|
3469
|
+
<td>Optional message bus for inter-robot communication</td>
|
|
3470
|
+
</tr>
|
|
3471
|
+
<tr>
|
|
3472
|
+
<td><code>skills</code></td>
|
|
3473
|
+
<td><code>Symbol</code>, <code>Array<Symbol></code>, <code>nil</code></td>
|
|
3474
|
+
<td><code>nil</code></td>
|
|
3475
|
+
<td>Skill templates to prepend (see <a href="#skills">Skills</a>)</td>
|
|
3476
|
+
</tr>
|
|
3477
|
+
<tr>
|
|
3478
|
+
<td><code>config</code></td>
|
|
3479
|
+
<td><code>RunConfig</code>, <code>nil</code></td>
|
|
3480
|
+
<td><code>nil</code></td>
|
|
3481
|
+
<td>Shared config merged with explicit kwargs (see <a href="#runconfig">RunConfig</a>)</td>
|
|
3482
|
+
</tr>
|
|
3483
|
+
<tr>
|
|
3484
|
+
<td><code>temperature</code></td>
|
|
3485
|
+
<td><code>Float</code>, <code>nil</code></td>
|
|
3486
|
+
<td><code>nil</code></td>
|
|
3487
|
+
<td>Controls randomness (0.0-1.0)</td>
|
|
3488
|
+
</tr>
|
|
3489
|
+
<tr>
|
|
3490
|
+
<td><code>top_p</code></td>
|
|
3491
|
+
<td><code>Float</code>, <code>nil</code></td>
|
|
3492
|
+
<td><code>nil</code></td>
|
|
3493
|
+
<td>Nucleus sampling threshold</td>
|
|
3494
|
+
</tr>
|
|
3495
|
+
<tr>
|
|
3496
|
+
<td><code>top_k</code></td>
|
|
3497
|
+
<td><code>Integer</code>, <code>nil</code></td>
|
|
3498
|
+
<td><code>nil</code></td>
|
|
3499
|
+
<td>Top-k sampling</td>
|
|
3500
|
+
</tr>
|
|
3501
|
+
<tr>
|
|
3502
|
+
<td><code>max_tokens</code></td>
|
|
3503
|
+
<td><code>Integer</code>, <code>nil</code></td>
|
|
3504
|
+
<td><code>nil</code></td>
|
|
3505
|
+
<td>Maximum tokens in response</td>
|
|
3506
|
+
</tr>
|
|
3507
|
+
<tr>
|
|
3508
|
+
<td><code>presence_penalty</code></td>
|
|
3509
|
+
<td><code>Float</code>, <code>nil</code></td>
|
|
3510
|
+
<td><code>nil</code></td>
|
|
3511
|
+
<td>Penalize based on presence</td>
|
|
3512
|
+
</tr>
|
|
3513
|
+
<tr>
|
|
3514
|
+
<td><code>frequency_penalty</code></td>
|
|
3515
|
+
<td><code>Float</code>, <code>nil</code></td>
|
|
3516
|
+
<td><code>nil</code></td>
|
|
3517
|
+
<td>Penalize based on frequency</td>
|
|
3518
|
+
</tr>
|
|
3519
|
+
<tr>
|
|
3520
|
+
<td><code>stop</code></td>
|
|
3521
|
+
<td><code>String</code>, <code>Array</code>, <code>nil</code></td>
|
|
3522
|
+
<td><code>nil</code></td>
|
|
3523
|
+
<td>Stop sequences</td>
|
|
3524
|
+
</tr>
|
|
3525
|
+
</tbody>
|
|
3526
|
+
</table>
|
|
3527
|
+
<p>When both <code>config:</code> and explicit kwargs (e.g., <code>temperature:</code>) are provided, explicit kwargs always win.</p>
|
|
3528
|
+
<h2 id="factory-method">Factory Method<a class="headerlink" href="#factory-method" title="Permanent link">¶</a></h2>
|
|
3529
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-2-1"><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
3530
|
+
</span><span id="__span-2-2"><a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"robot"</span><span class="p">,</span><span class="w"> </span><span class="c1"># Defaults to "robot"</span>
|
|
3531
|
+
</span><span id="__span-2-3"><a id="__codelineno-2-3" name="__codelineno-2-3" href="#__codelineno-2-3"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3532
|
+
</span><span id="__span-2-4"><a id="__codelineno-2-4" name="__codelineno-2-4" href="#__codelineno-2-4"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3533
|
+
</span><span id="__span-2-5"><a id="__codelineno-2-5" name="__codelineno-2-5" href="#__codelineno-2-5"></a><span class="w"> </span><span class="ss">context</span><span class="p">:</span><span class="w"> </span><span class="p">{},</span>
|
|
3534
|
+
</span><span id="__span-2-6"><a id="__codelineno-2-6" name="__codelineno-2-6" href="#__codelineno-2-6"></a><span class="w"> </span><span class="ss">enable_cache</span><span class="p">:</span><span class="w"> </span><span class="kp">true</span><span class="p">,</span>
|
|
3535
|
+
</span><span id="__span-2-7"><a id="__codelineno-2-7" name="__codelineno-2-7" href="#__codelineno-2-7"></a><span class="w"> </span><span class="ss">bus</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span><span class="w"> </span><span class="c1"># Optional TypedBus::MessageBus</span>
|
|
3536
|
+
</span><span id="__span-2-8"><a id="__codelineno-2-8" name="__codelineno-2-8" href="#__codelineno-2-8"></a><span class="w"> </span><span class="ss">skills</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span><span class="w"> </span><span class="c1"># Optional skill templates</span>
|
|
3537
|
+
</span><span id="__span-2-9"><a id="__codelineno-2-9" name="__codelineno-2-9" href="#__codelineno-2-9"></a><span class="w"> </span><span class="o">**</span><span class="n">options</span><span class="w"> </span><span class="c1"># All other Robot.new parameters</span>
|
|
3538
|
+
</span><span id="__span-2-10"><a id="__codelineno-2-10" name="__codelineno-2-10" href="#__codelineno-2-10"></a><span class="p">)</span>
|
|
3539
|
+
</span><span id="__span-2-11"><a id="__codelineno-2-11" name="__codelineno-2-11" href="#__codelineno-2-11"></a><span class="c1"># => RobotLab::Robot</span>
|
|
3540
|
+
</span></code></pre></div>
|
|
3541
|
+
<p>If <code>name</code> is omitted, it defaults to <code>"robot"</code>.</p>
|
|
3542
|
+
<h2 id="attributes-read-only">Attributes (Read-Only)<a class="headerlink" href="#attributes-read-only" title="Permanent link">¶</a></h2>
|
|
3543
|
+
<table>
|
|
3544
|
+
<thead>
|
|
3545
|
+
<tr>
|
|
3546
|
+
<th>Attribute</th>
|
|
3547
|
+
<th>Type</th>
|
|
3548
|
+
<th>Description</th>
|
|
3549
|
+
</tr>
|
|
3550
|
+
</thead>
|
|
3551
|
+
<tbody>
|
|
3552
|
+
<tr>
|
|
3553
|
+
<td><code>name</code></td>
|
|
3554
|
+
<td><code>String</code></td>
|
|
3555
|
+
<td>Unique identifier</td>
|
|
3556
|
+
</tr>
|
|
3557
|
+
<tr>
|
|
3558
|
+
<td><code>description</code></td>
|
|
3559
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
3560
|
+
<td>Human-readable description</td>
|
|
3561
|
+
</tr>
|
|
3562
|
+
<tr>
|
|
3563
|
+
<td><code>template</code></td>
|
|
3564
|
+
<td><code>Symbol</code>, <code>nil</code></td>
|
|
3565
|
+
<td>Prompt template identifier</td>
|
|
3566
|
+
</tr>
|
|
3567
|
+
<tr>
|
|
3568
|
+
<td><code>system_prompt</code></td>
|
|
3569
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
3570
|
+
<td>Inline system prompt</td>
|
|
3571
|
+
</tr>
|
|
3572
|
+
<tr>
|
|
3573
|
+
<td><code>skills</code></td>
|
|
3574
|
+
<td><code>Array<Symbol></code>, <code>nil</code></td>
|
|
3575
|
+
<td>Constructor-provided skill template IDs (nil if none)</td>
|
|
3576
|
+
</tr>
|
|
3577
|
+
<tr>
|
|
3578
|
+
<td><code>local_tools</code></td>
|
|
3579
|
+
<td><code>Array</code></td>
|
|
3580
|
+
<td>Locally defined tools</td>
|
|
3581
|
+
</tr>
|
|
3582
|
+
<tr>
|
|
3583
|
+
<td><code>mcp_clients</code></td>
|
|
3584
|
+
<td><code>Hash<String, MCP::Client></code></td>
|
|
3585
|
+
<td>Connected MCP clients, keyed by server name</td>
|
|
3586
|
+
</tr>
|
|
3587
|
+
<tr>
|
|
3588
|
+
<td><code>mcp_tools</code></td>
|
|
3589
|
+
<td><code>Array<Tool></code></td>
|
|
3590
|
+
<td>Tools discovered from MCP servers</td>
|
|
3591
|
+
</tr>
|
|
3592
|
+
<tr>
|
|
3593
|
+
<td><code>memory</code></td>
|
|
3594
|
+
<td><code>Memory</code></td>
|
|
3595
|
+
<td>Inherent memory (used when standalone, not in network)</td>
|
|
3596
|
+
</tr>
|
|
3597
|
+
<tr>
|
|
3598
|
+
<td><code>bus</code></td>
|
|
3599
|
+
<td><code>TypedBus::MessageBus</code>, <code>nil</code></td>
|
|
3600
|
+
<td>Message bus instance (nil if not configured)</td>
|
|
3601
|
+
</tr>
|
|
3602
|
+
<tr>
|
|
3603
|
+
<td><code>outbox</code></td>
|
|
3604
|
+
<td><code>Hash</code></td>
|
|
3605
|
+
<td>Sent messages tracked by composite key with status and replies</td>
|
|
3606
|
+
</tr>
|
|
3607
|
+
<tr>
|
|
3608
|
+
<td><code>config</code></td>
|
|
3609
|
+
<td><code>RunConfig</code></td>
|
|
3610
|
+
<td>Effective RunConfig (merged from constructor kwargs and passed-in config)</td>
|
|
3611
|
+
</tr>
|
|
3612
|
+
<tr>
|
|
3613
|
+
<td><code>mcp_config</code></td>
|
|
3614
|
+
<td><code>Symbol</code>, <code>Array</code></td>
|
|
3615
|
+
<td>Build-time MCP configuration (raw, unresolved)</td>
|
|
3616
|
+
</tr>
|
|
3617
|
+
<tr>
|
|
3618
|
+
<td><code>tools_config</code></td>
|
|
3619
|
+
<td><code>Symbol</code>, <code>Array</code></td>
|
|
3620
|
+
<td>Build-time tools configuration (raw, unresolved)</td>
|
|
3621
|
+
</tr>
|
|
3622
|
+
</tbody>
|
|
3623
|
+
</table>
|
|
3624
|
+
<h2 id="attributes-read-write">Attributes (Read-Write)<a class="headerlink" href="#attributes-read-write" title="Permanent link">¶</a></h2>
|
|
3625
|
+
<table>
|
|
3626
|
+
<thead>
|
|
3627
|
+
<tr>
|
|
3628
|
+
<th>Attribute</th>
|
|
3629
|
+
<th>Type</th>
|
|
3630
|
+
<th>Default</th>
|
|
3631
|
+
<th>Description</th>
|
|
3632
|
+
</tr>
|
|
3633
|
+
</thead>
|
|
3634
|
+
<tbody>
|
|
3635
|
+
<tr>
|
|
3636
|
+
<td><code>input</code></td>
|
|
3637
|
+
<td><code>IO</code>, <code>nil</code></td>
|
|
3638
|
+
<td><code>nil</code></td>
|
|
3639
|
+
<td>Input stream for user interaction (falls back to <code>$stdin</code>)</td>
|
|
3640
|
+
</tr>
|
|
3641
|
+
<tr>
|
|
3642
|
+
<td><code>output</code></td>
|
|
3643
|
+
<td><code>IO</code>, <code>nil</code></td>
|
|
3644
|
+
<td><code>nil</code></td>
|
|
3645
|
+
<td>Output stream for user interaction (falls back to <code>$stdout</code>)</td>
|
|
3646
|
+
</tr>
|
|
3647
|
+
</tbody>
|
|
3648
|
+
</table>
|
|
3649
|
+
<p>Used by tools like <a href="../tool/#built-in-askuser"><code>AskUser</code></a> that need terminal IO. Set to <code>StringIO</code> for testing.</p>
|
|
3650
|
+
<h2 id="methods">Methods<a class="headerlink" href="#methods" title="Permanent link">¶</a></h2>
|
|
3651
|
+
<h3 id="run">run<a class="headerlink" href="#run" title="Permanent link">¶</a></h3>
|
|
3652
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-3-1"><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">message</span><span class="p">,</span><span class="w"> </span><span class="o">**</span><span class="n">kwargs</span><span class="p">,</span><span class="w"> </span><span class="o">&</span><span class="n">block</span><span class="p">)</span>
|
|
3653
|
+
</span><span id="__span-3-2"><a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a><span class="c1"># => RobotResult</span>
|
|
3654
|
+
</span></code></pre></div>
|
|
3655
|
+
<p>Primary execution method. Sends a message to the LLM with memory/MCP/tools resolution and returns a <code>RobotResult</code>.</p>
|
|
3656
|
+
<p><strong>Parameters:</strong></p>
|
|
3657
|
+
<table>
|
|
3658
|
+
<thead>
|
|
3659
|
+
<tr>
|
|
3660
|
+
<th>Name</th>
|
|
3661
|
+
<th>Type</th>
|
|
3662
|
+
<th>Default</th>
|
|
3663
|
+
<th>Description</th>
|
|
3664
|
+
</tr>
|
|
3665
|
+
</thead>
|
|
3666
|
+
<tbody>
|
|
3667
|
+
<tr>
|
|
3668
|
+
<td><code>message</code></td>
|
|
3669
|
+
<td><code>String</code></td>
|
|
3670
|
+
<td><strong>required</strong></td>
|
|
3671
|
+
<td>The user message to send</td>
|
|
3672
|
+
</tr>
|
|
3673
|
+
<tr>
|
|
3674
|
+
<td><code>network</code></td>
|
|
3675
|
+
<td><code>NetworkRun</code>, <code>nil</code></td>
|
|
3676
|
+
<td><code>nil</code></td>
|
|
3677
|
+
<td>Network context (passed internally)</td>
|
|
3678
|
+
</tr>
|
|
3679
|
+
<tr>
|
|
3680
|
+
<td><code>network_memory</code></td>
|
|
3681
|
+
<td><code>Memory</code>, <code>nil</code></td>
|
|
3682
|
+
<td><code>nil</code></td>
|
|
3683
|
+
<td>Shared network memory</td>
|
|
3684
|
+
</tr>
|
|
3685
|
+
<tr>
|
|
3686
|
+
<td><code>memory</code></td>
|
|
3687
|
+
<td><code>Memory</code>, <code>Hash</code>, <code>nil</code></td>
|
|
3688
|
+
<td><code>nil</code></td>
|
|
3689
|
+
<td>Runtime memory to merge</td>
|
|
3690
|
+
</tr>
|
|
3691
|
+
<tr>
|
|
3692
|
+
<td><code>mcp</code></td>
|
|
3693
|
+
<td><code>Symbol</code>, <code>Array</code></td>
|
|
3694
|
+
<td><code>:none</code></td>
|
|
3695
|
+
<td>Runtime MCP override</td>
|
|
3696
|
+
</tr>
|
|
3697
|
+
<tr>
|
|
3698
|
+
<td><code>tools</code></td>
|
|
3699
|
+
<td><code>Symbol</code>, <code>Array</code></td>
|
|
3700
|
+
<td><code>:none</code></td>
|
|
3701
|
+
<td>Runtime tools override</td>
|
|
3702
|
+
</tr>
|
|
3703
|
+
<tr>
|
|
3704
|
+
<td><code>**kwargs</code></td>
|
|
3705
|
+
<td><code>Hash</code></td>
|
|
3706
|
+
<td><code>{}</code></td>
|
|
3707
|
+
<td>Additional keyword arguments passed to <code>Agent#ask</code></td>
|
|
3708
|
+
</tr>
|
|
3709
|
+
<tr>
|
|
3710
|
+
<td><code>&block</code></td>
|
|
3711
|
+
<td><code>Proc</code></td>
|
|
3712
|
+
<td><code>nil</code></td>
|
|
3713
|
+
<td>Per-call streaming block, receives each content chunk</td>
|
|
3714
|
+
</tr>
|
|
3715
|
+
</tbody>
|
|
3716
|
+
</table>
|
|
3717
|
+
<p>When both a stored <code>on_content</code> callback and a runtime block are provided, both fire (stored first, then runtime block).</p>
|
|
3718
|
+
<p><strong>Returns:</strong> <code>RobotResult</code></p>
|
|
3719
|
+
<p><strong>Examples:</strong></p>
|
|
3720
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-4-1"><a id="__codelineno-4-1" name="__codelineno-4-1" href="#__codelineno-4-1"></a><span class="c1"># Simple message</span>
|
|
3721
|
+
</span><span id="__span-4-2"><a id="__codelineno-4-2" name="__codelineno-4-2" href="#__codelineno-4-2"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"What is 2+2?"</span><span class="p">)</span>
|
|
3722
|
+
</span><span id="__span-4-3"><a id="__codelineno-4-3" name="__codelineno-4-3" href="#__codelineno-4-3"></a>
|
|
3723
|
+
</span><span id="__span-4-4"><a id="__codelineno-4-4" name="__codelineno-4-4" href="#__codelineno-4-4"></a><span class="c1"># With runtime memory</span>
|
|
3724
|
+
</span><span id="__span-4-5"><a id="__codelineno-4-5" name="__codelineno-4-5" href="#__codelineno-4-5"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Summarize the data"</span><span class="p">,</span><span class="w"> </span><span class="ss">memory</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">data</span><span class="p">:</span><span class="w"> </span><span class="n">report</span><span class="w"> </span><span class="p">})</span>
|
|
3725
|
+
</span><span id="__span-4-6"><a id="__codelineno-4-6" name="__codelineno-4-6" href="#__codelineno-4-6"></a>
|
|
3726
|
+
</span><span id="__span-4-7"><a id="__codelineno-4-7" name="__codelineno-4-7" href="#__codelineno-4-7"></a><span class="c1"># With per-call streaming block</span>
|
|
3727
|
+
</span><span id="__span-4-8"><a id="__codelineno-4-8" name="__codelineno-4-8" href="#__codelineno-4-8"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Tell me a story"</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="o">|</span><span class="n">chunk</span><span class="o">|</span><span class="w"> </span><span class="nb">print</span><span class="w"> </span><span class="n">chunk</span><span class="o">.</span><span class="n">content</span><span class="w"> </span><span class="p">}</span>
|
|
3728
|
+
</span><span id="__span-4-9"><a id="__codelineno-4-9" name="__codelineno-4-9" href="#__codelineno-4-9"></a>
|
|
3729
|
+
</span><span id="__span-4-10"><a id="__codelineno-4-10" name="__codelineno-4-10" href="#__codelineno-4-10"></a><span class="c1"># With runtime overrides</span>
|
|
3730
|
+
</span><span id="__span-4-11"><a id="__codelineno-4-11" name="__codelineno-4-11" href="#__codelineno-4-11"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Help me"</span><span class="p">,</span><span class="w"> </span><span class="ss">mcp</span><span class="p">:</span><span class="w"> </span><span class="ss">:none</span><span class="p">,</span><span class="w"> </span><span class="ss">tools</span><span class="p">:</span><span class="w"> </span><span class="ss">:none</span><span class="p">)</span>
|
|
3731
|
+
</span></code></pre></div>
|
|
3732
|
+
<h3 id="model">model<a class="headerlink" href="#model" title="Permanent link">¶</a></h3>
|
|
3733
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-5-1"><a id="__codelineno-5-1" name="__codelineno-5-1" href="#__codelineno-5-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">model</span><span class="w"> </span><span class="c1"># => "claude-sonnet-4" or nil</span>
|
|
3734
|
+
</span></code></pre></div>
|
|
3735
|
+
<p>Returns the model ID string. Resolves through the underlying chat object.</p>
|
|
3736
|
+
<h3 id="update">update<a class="headerlink" href="#update" title="Permanent link">¶</a></h3>
|
|
3737
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-6-1"><a id="__codelineno-6-1" name="__codelineno-6-1" href="#__codelineno-6-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">update</span><span class="p">(</span>
|
|
3738
|
+
</span><span id="__span-6-2"><a id="__codelineno-6-2" name="__codelineno-6-2" href="#__codelineno-6-2"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3739
|
+
</span><span id="__span-6-3"><a id="__codelineno-6-3" name="__codelineno-6-3" href="#__codelineno-6-3"></a><span class="w"> </span><span class="ss">context</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3740
|
+
</span><span id="__span-6-4"><a id="__codelineno-6-4" name="__codelineno-6-4" href="#__codelineno-6-4"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3741
|
+
</span><span id="__span-6-5"><a id="__codelineno-6-5" name="__codelineno-6-5" href="#__codelineno-6-5"></a><span class="w"> </span><span class="ss">model</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3742
|
+
</span><span id="__span-6-6"><a id="__codelineno-6-6" name="__codelineno-6-6" href="#__codelineno-6-6"></a><span class="w"> </span><span class="ss">temperature</span><span class="p">:</span><span class="w"> </span><span class="kp">nil</span><span class="p">,</span>
|
|
3743
|
+
</span><span id="__span-6-7"><a id="__codelineno-6-7" name="__codelineno-6-7" href="#__codelineno-6-7"></a><span class="w"> </span><span class="o">**</span><span class="n">kwargs</span>
|
|
3744
|
+
</span><span id="__span-6-8"><a id="__codelineno-6-8" name="__codelineno-6-8" href="#__codelineno-6-8"></a><span class="p">)</span>
|
|
3745
|
+
</span><span id="__span-6-9"><a id="__codelineno-6-9" name="__codelineno-6-9" href="#__codelineno-6-9"></a><span class="c1"># => self</span>
|
|
3746
|
+
</span></code></pre></div>
|
|
3747
|
+
<p>Reconfigure the robot after construction. Returns <code>self</code> for chaining.</p>
|
|
3748
|
+
<h3 id="with_-methods-chaining">with_* Methods (Chaining)<a class="headerlink" href="#with_-methods-chaining" title="Permanent link">¶</a></h3>
|
|
3749
|
+
<p>All <code>with_*</code> methods delegate to the persistent <code>@chat</code> and return <code>self</code> for chaining:</p>
|
|
3750
|
+
<table>
|
|
3751
|
+
<thead>
|
|
3752
|
+
<tr>
|
|
3753
|
+
<th>Method</th>
|
|
3754
|
+
<th>Description</th>
|
|
3755
|
+
</tr>
|
|
3756
|
+
</thead>
|
|
3757
|
+
<tbody>
|
|
3758
|
+
<tr>
|
|
3759
|
+
<td><code>with_model(model_id)</code></td>
|
|
3760
|
+
<td>Change the LLM model</td>
|
|
3761
|
+
</tr>
|
|
3762
|
+
<tr>
|
|
3763
|
+
<td><code>with_temperature(temp)</code></td>
|
|
3764
|
+
<td>Set temperature</td>
|
|
3765
|
+
</tr>
|
|
3766
|
+
<tr>
|
|
3767
|
+
<td><code>with_top_p(value)</code></td>
|
|
3768
|
+
<td>Set nucleus sampling</td>
|
|
3769
|
+
</tr>
|
|
3770
|
+
<tr>
|
|
3771
|
+
<td><code>with_top_k(value)</code></td>
|
|
3772
|
+
<td>Set top-k sampling</td>
|
|
3773
|
+
</tr>
|
|
3774
|
+
<tr>
|
|
3775
|
+
<td><code>with_max_tokens(value)</code></td>
|
|
3776
|
+
<td>Set max response tokens</td>
|
|
3777
|
+
</tr>
|
|
3778
|
+
<tr>
|
|
3779
|
+
<td><code>with_presence_penalty(value)</code></td>
|
|
3780
|
+
<td>Set presence penalty</td>
|
|
3781
|
+
</tr>
|
|
3782
|
+
<tr>
|
|
3783
|
+
<td><code>with_frequency_penalty(value)</code></td>
|
|
3784
|
+
<td>Set frequency penalty</td>
|
|
3785
|
+
</tr>
|
|
3786
|
+
<tr>
|
|
3787
|
+
<td><code>with_stop(sequences)</code></td>
|
|
3788
|
+
<td>Set stop sequences</td>
|
|
3789
|
+
</tr>
|
|
3790
|
+
<tr>
|
|
3791
|
+
<td><code>with_instructions(prompt)</code></td>
|
|
3792
|
+
<td>Set system instructions</td>
|
|
3793
|
+
</tr>
|
|
3794
|
+
<tr>
|
|
3795
|
+
<td><code>with_tool(tool)</code></td>
|
|
3796
|
+
<td>Add a single tool</td>
|
|
3797
|
+
</tr>
|
|
3798
|
+
<tr>
|
|
3799
|
+
<td><code>with_tools(*tools)</code></td>
|
|
3800
|
+
<td>Add multiple tools</td>
|
|
3801
|
+
</tr>
|
|
3802
|
+
<tr>
|
|
3803
|
+
<td><code>with_params(**params)</code></td>
|
|
3804
|
+
<td>Set additional parameters</td>
|
|
3805
|
+
</tr>
|
|
3806
|
+
<tr>
|
|
3807
|
+
<td><code>with_headers(**headers)</code></td>
|
|
3808
|
+
<td>Set custom headers</td>
|
|
3809
|
+
</tr>
|
|
3810
|
+
<tr>
|
|
3811
|
+
<td><code>with_schema(schema)</code></td>
|
|
3812
|
+
<td>Set output schema</td>
|
|
3813
|
+
</tr>
|
|
3814
|
+
<tr>
|
|
3815
|
+
<td><code>with_context(**ctx)</code></td>
|
|
3816
|
+
<td>Set context</td>
|
|
3817
|
+
</tr>
|
|
3818
|
+
<tr>
|
|
3819
|
+
<td><code>with_thinking(opts)</code></td>
|
|
3820
|
+
<td>Enable extended thinking</td>
|
|
3821
|
+
</tr>
|
|
3822
|
+
<tr>
|
|
3823
|
+
<td><code>with_bus(bus)</code></td>
|
|
3824
|
+
<td>Connect to a message bus (creates one if nil)</td>
|
|
3825
|
+
</tr>
|
|
3826
|
+
</tbody>
|
|
3827
|
+
</table>
|
|
3828
|
+
<p><strong>Example:</strong></p>
|
|
3829
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-7-1"><a id="__codelineno-7-1" name="__codelineno-7-1" href="#__codelineno-7-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">)</span>
|
|
3830
|
+
</span><span id="__span-7-2"><a id="__codelineno-7-2" name="__codelineno-7-2" href="#__codelineno-7-2"></a><span class="n">robot</span>
|
|
3831
|
+
</span><span id="__span-7-3"><a id="__codelineno-7-3" name="__codelineno-7-3" href="#__codelineno-7-3"></a><span class="w"> </span><span class="o">.</span><span class="n">with_model</span><span class="p">(</span><span class="s2">"claude-sonnet-4"</span><span class="p">)</span>
|
|
3832
|
+
</span><span id="__span-7-4"><a id="__codelineno-7-4" name="__codelineno-7-4" href="#__codelineno-7-4"></a><span class="w"> </span><span class="o">.</span><span class="n">with_temperature</span><span class="p">(</span><span class="mi">0</span><span class="o">.</span><span class="mi">7</span><span class="p">)</span>
|
|
3833
|
+
</span><span id="__span-7-5"><a id="__codelineno-7-5" name="__codelineno-7-5" href="#__codelineno-7-5"></a><span class="w"> </span><span class="o">.</span><span class="n">with_instructions</span><span class="p">(</span><span class="s2">"Be concise."</span><span class="p">)</span>
|
|
3834
|
+
</span><span id="__span-7-6"><a id="__codelineno-7-6" name="__codelineno-7-6" href="#__codelineno-7-6"></a><span class="w"> </span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Hello"</span><span class="p">)</span>
|
|
3835
|
+
</span></code></pre></div>
|
|
3836
|
+
<h3 id="with_template">with_template<a class="headerlink" href="#with_template" title="Permanent link">¶</a></h3>
|
|
3837
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-8-1"><a id="__codelineno-8-1" name="__codelineno-8-1" href="#__codelineno-8-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">with_template</span><span class="p">(</span><span class="ss">:assistant</span><span class="p">,</span><span class="w"> </span><span class="ss">tone</span><span class="p">:</span><span class="w"> </span><span class="s2">"friendly"</span><span class="p">)</span>
|
|
3838
|
+
</span><span id="__span-8-2"><a id="__codelineno-8-2" name="__codelineno-8-2" href="#__codelineno-8-2"></a><span class="c1"># => self</span>
|
|
3839
|
+
</span></code></pre></div>
|
|
3840
|
+
<p>Apply a prompt_manager template. Separate from the delegated <code>with_*</code> methods because it handles template parsing and front matter config.</p>
|
|
3841
|
+
<h3 id="call">call<a class="headerlink" href="#call" title="Permanent link">¶</a></h3>
|
|
3842
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-9-1"><a id="__codelineno-9-1" name="__codelineno-9-1" href="#__codelineno-9-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">call</span><span class="p">(</span><span class="n">result</span><span class="p">)</span>
|
|
3843
|
+
</span><span id="__span-9-2"><a id="__codelineno-9-2" name="__codelineno-9-2" href="#__codelineno-9-2"></a><span class="c1"># => SimpleFlow::Result</span>
|
|
3844
|
+
</span></code></pre></div>
|
|
3845
|
+
<p>SimpleFlow step interface. Extracts the message from <code>result.context[:run_params]</code>, calls <code>run</code>, and wraps the output in a continued <code>SimpleFlow::Result</code>.</p>
|
|
3846
|
+
<p>Override this method in subclasses for custom routing logic (e.g., classifiers).</p>
|
|
3847
|
+
<h3 id="reset_memory">reset_memory<a class="headerlink" href="#reset_memory" title="Permanent link">¶</a></h3>
|
|
3848
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-10-1"><a id="__codelineno-10-1" name="__codelineno-10-1" href="#__codelineno-10-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">reset_memory</span>
|
|
3849
|
+
</span><span id="__span-10-2"><a id="__codelineno-10-2" name="__codelineno-10-2" href="#__codelineno-10-2"></a><span class="c1"># => self</span>
|
|
3850
|
+
</span></code></pre></div>
|
|
3851
|
+
<p>Reset the robot's inherent memory to its initial state.</p>
|
|
3852
|
+
<h3 id="send_message">send_message<a class="headerlink" href="#send_message" title="Permanent link">¶</a></h3>
|
|
3853
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-11-1"><a id="__codelineno-11-1" name="__codelineno-11-1" href="#__codelineno-11-1"></a><span class="n">message</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">send_message</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="ss">:bob</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tell me a joke."</span><span class="p">)</span>
|
|
3854
|
+
</span><span id="__span-11-2"><a id="__codelineno-11-2" name="__codelineno-11-2" href="#__codelineno-11-2"></a><span class="c1"># => RobotMessage</span>
|
|
3855
|
+
</span></code></pre></div>
|
|
3856
|
+
<p>Publish a message to another robot's bus channel. Increments the internal message counter, creates a <code>RobotMessage</code>, tracks it in the outbox, and publishes to the target channel.</p>
|
|
3857
|
+
<p><strong>Parameters:</strong></p>
|
|
3858
|
+
<table>
|
|
3859
|
+
<thead>
|
|
3860
|
+
<tr>
|
|
3861
|
+
<th>Name</th>
|
|
3862
|
+
<th>Type</th>
|
|
3863
|
+
<th>Description</th>
|
|
3864
|
+
</tr>
|
|
3865
|
+
</thead>
|
|
3866
|
+
<tbody>
|
|
3867
|
+
<tr>
|
|
3868
|
+
<td><code>to</code></td>
|
|
3869
|
+
<td><code>String</code>, <code>Symbol</code></td>
|
|
3870
|
+
<td>Target robot's channel name</td>
|
|
3871
|
+
</tr>
|
|
3872
|
+
<tr>
|
|
3873
|
+
<td><code>content</code></td>
|
|
3874
|
+
<td><code>String</code>, <code>Hash</code></td>
|
|
3875
|
+
<td>Message payload</td>
|
|
3876
|
+
</tr>
|
|
3877
|
+
</tbody>
|
|
3878
|
+
</table>
|
|
3879
|
+
<p><strong>Returns:</strong> <code>RobotMessage</code></p>
|
|
3880
|
+
<p><strong>Raises:</strong> <code>BusError</code> if no bus is configured.</p>
|
|
3881
|
+
<h3 id="send_reply">send_reply<a class="headerlink" href="#send_reply" title="Permanent link">¶</a></h3>
|
|
3882
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-12-1"><a id="__codelineno-12-1" name="__codelineno-12-1" href="#__codelineno-12-1"></a><span class="n">reply</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">send_reply</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="ss">:alice</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="s2">"Here's a joke..."</span><span class="p">,</span><span class="w"> </span><span class="ss">in_reply_to</span><span class="p">:</span><span class="w"> </span><span class="s2">"alice:1"</span><span class="p">)</span>
|
|
3883
|
+
</span><span id="__span-12-2"><a id="__codelineno-12-2" name="__codelineno-12-2" href="#__codelineno-12-2"></a><span class="c1"># => RobotMessage</span>
|
|
3884
|
+
</span></code></pre></div>
|
|
3885
|
+
<p>Publish a correlated reply to a specific message. The <code>in_reply_to</code> composite key links this reply to the original message.</p>
|
|
3886
|
+
<p><strong>Parameters:</strong></p>
|
|
3887
|
+
<table>
|
|
3888
|
+
<thead>
|
|
3889
|
+
<tr>
|
|
3890
|
+
<th>Name</th>
|
|
3891
|
+
<th>Type</th>
|
|
3892
|
+
<th>Description</th>
|
|
3893
|
+
</tr>
|
|
3894
|
+
</thead>
|
|
3895
|
+
<tbody>
|
|
3896
|
+
<tr>
|
|
3897
|
+
<td><code>to</code></td>
|
|
3898
|
+
<td><code>String</code>, <code>Symbol</code></td>
|
|
3899
|
+
<td>Target robot's channel name</td>
|
|
3900
|
+
</tr>
|
|
3901
|
+
<tr>
|
|
3902
|
+
<td><code>content</code></td>
|
|
3903
|
+
<td><code>String</code>, <code>Hash</code></td>
|
|
3904
|
+
<td>Reply payload</td>
|
|
3905
|
+
</tr>
|
|
3906
|
+
<tr>
|
|
3907
|
+
<td><code>in_reply_to</code></td>
|
|
3908
|
+
<td><code>String</code></td>
|
|
3909
|
+
<td>Composite key of the original message (e.g., <code>"alice:1"</code>)</td>
|
|
3910
|
+
</tr>
|
|
3911
|
+
</tbody>
|
|
3912
|
+
</table>
|
|
3913
|
+
<p><strong>Returns:</strong> <code>RobotMessage</code></p>
|
|
3914
|
+
<p><strong>Raises:</strong> <code>BusError</code> if no bus is configured.</p>
|
|
3915
|
+
<h3 id="on_message">on_message<a class="headerlink" href="#on_message" title="Permanent link">¶</a></h3>
|
|
3916
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-13-1"><a id="__codelineno-13-1" name="__codelineno-13-1" href="#__codelineno-13-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">on_message</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="o">|</span><span class="n">message</span><span class="o">|</span><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="w"> </span><span class="p">}</span>
|
|
3917
|
+
</span><span id="__span-13-2"><a id="__codelineno-13-2" name="__codelineno-13-2" href="#__codelineno-13-2"></a><span class="c1"># => self</span>
|
|
3918
|
+
</span></code></pre></div>
|
|
3919
|
+
<p>Register a custom handler for incoming bus messages. Block arity controls delivery handling:</p>
|
|
3920
|
+
<ul>
|
|
3921
|
+
<li><strong>1 argument</strong> <code>|message|</code> — auto-acknowledges the delivery before calling the block</li>
|
|
3922
|
+
<li><strong>2 arguments</strong> <code>|delivery, message|</code> — manual mode; you call <code>delivery.ack!</code> or <code>delivery.nack!</code></li>
|
|
3923
|
+
</ul>
|
|
3924
|
+
<p><strong>Examples:</strong></p>
|
|
3925
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-14-1"><a id="__codelineno-14-1" name="__codelineno-14-1" href="#__codelineno-14-1"></a><span class="c1"># Auto-ack mode (1 arg)</span>
|
|
3926
|
+
</span><span id="__span-14-2"><a id="__codelineno-14-2" name="__codelineno-14-2" href="#__codelineno-14-2"></a><span class="n">robot</span><span class="o">.</span><span class="n">on_message</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">message</span><span class="o">|</span>
|
|
3927
|
+
</span><span id="__span-14-3"><a id="__codelineno-14-3" name="__codelineno-14-3" href="#__codelineno-14-3"></a><span class="w"> </span><span class="n">joke</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">run</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="o">.</span><span class="n">to_s</span><span class="p">)</span><span class="o">.</span><span class="n">last_text_content</span>
|
|
3928
|
+
</span><span id="__span-14-4"><a id="__codelineno-14-4" name="__codelineno-14-4" href="#__codelineno-14-4"></a><span class="w"> </span><span class="n">send_reply</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">from</span><span class="o">.</span><span class="n">to_sym</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="n">joke</span><span class="p">,</span><span class="w"> </span><span class="ss">in_reply_to</span><span class="p">:</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
|
3929
|
+
</span><span id="__span-14-5"><a id="__codelineno-14-5" name="__codelineno-14-5" href="#__codelineno-14-5"></a><span class="k">end</span>
|
|
3930
|
+
</span><span id="__span-14-6"><a id="__codelineno-14-6" name="__codelineno-14-6" href="#__codelineno-14-6"></a>
|
|
3931
|
+
</span><span id="__span-14-7"><a id="__codelineno-14-7" name="__codelineno-14-7" href="#__codelineno-14-7"></a><span class="c1"># Manual mode (2 args)</span>
|
|
3932
|
+
</span><span id="__span-14-8"><a id="__codelineno-14-8" name="__codelineno-14-8" href="#__codelineno-14-8"></a><span class="n">robot</span><span class="o">.</span><span class="n">on_message</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">delivery</span><span class="p">,</span><span class="w"> </span><span class="n">message</span><span class="o">|</span>
|
|
3933
|
+
</span><span id="__span-14-9"><a id="__codelineno-14-9" name="__codelineno-14-9" href="#__codelineno-14-9"></a><span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="o">.</span><span class="n">to_s</span><span class="o">.</span><span class="n">length</span><span class="w"> </span><span class="o">></span><span class="w"> </span><span class="mi">10</span>
|
|
3934
|
+
</span><span id="__span-14-10"><a id="__codelineno-14-10" name="__codelineno-14-10" href="#__codelineno-14-10"></a><span class="w"> </span><span class="n">delivery</span><span class="o">.</span><span class="n">ack!</span>
|
|
3935
|
+
</span><span id="__span-14-11"><a id="__codelineno-14-11" name="__codelineno-14-11" href="#__codelineno-14-11"></a><span class="w"> </span><span class="n">send_reply</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">from</span><span class="o">.</span><span class="n">to_sym</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="s2">"Got it!"</span><span class="p">,</span><span class="w"> </span><span class="ss">in_reply_to</span><span class="p">:</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
|
3936
|
+
</span><span id="__span-14-12"><a id="__codelineno-14-12" name="__codelineno-14-12" href="#__codelineno-14-12"></a><span class="w"> </span><span class="k">else</span>
|
|
3937
|
+
</span><span id="__span-14-13"><a id="__codelineno-14-13" name="__codelineno-14-13" href="#__codelineno-14-13"></a><span class="w"> </span><span class="n">delivery</span><span class="o">.</span><span class="n">nack!</span>
|
|
3938
|
+
</span><span id="__span-14-14"><a id="__codelineno-14-14" name="__codelineno-14-14" href="#__codelineno-14-14"></a><span class="w"> </span><span class="k">end</span>
|
|
3939
|
+
</span><span id="__span-14-15"><a id="__codelineno-14-15" name="__codelineno-14-15" href="#__codelineno-14-15"></a><span class="k">end</span>
|
|
3940
|
+
</span></code></pre></div>
|
|
3941
|
+
<h3 id="spawn">spawn<a class="headerlink" href="#spawn" title="Permanent link">¶</a></h3>
|
|
3942
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-15-1"><a id="__codelineno-15-1" name="__codelineno-15-1" href="#__codelineno-15-1"></a><span class="n">child</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span>
|
|
3943
|
+
</span><span id="__span-15-2"><a id="__codelineno-15-2" name="__codelineno-15-2" href="#__codelineno-15-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"specialist"</span><span class="p">,</span>
|
|
3944
|
+
</span><span id="__span-15-3"><a id="__codelineno-15-3" name="__codelineno-15-3" href="#__codelineno-15-3"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You are a specialist."</span>
|
|
3945
|
+
</span><span id="__span-15-4"><a id="__codelineno-15-4" name="__codelineno-15-4" href="#__codelineno-15-4"></a><span class="p">)</span>
|
|
3946
|
+
</span><span id="__span-15-5"><a id="__codelineno-15-5" name="__codelineno-15-5" href="#__codelineno-15-5"></a><span class="c1"># => RobotLab::Robot (connected to same bus)</span>
|
|
3947
|
+
</span></code></pre></div>
|
|
3948
|
+
<p>Create a new robot on the same message bus. If the parent has no bus, one is created automatically and the parent is connected to it.</p>
|
|
3949
|
+
<p><strong>Parameters:</strong></p>
|
|
3950
|
+
<table>
|
|
3951
|
+
<thead>
|
|
3952
|
+
<tr>
|
|
3953
|
+
<th>Name</th>
|
|
3954
|
+
<th>Type</th>
|
|
3955
|
+
<th>Default</th>
|
|
3956
|
+
<th>Description</th>
|
|
3957
|
+
</tr>
|
|
3958
|
+
</thead>
|
|
3959
|
+
<tbody>
|
|
3960
|
+
<tr>
|
|
3961
|
+
<td><code>name</code></td>
|
|
3962
|
+
<td><code>String</code></td>
|
|
3963
|
+
<td><code>"robot"</code></td>
|
|
3964
|
+
<td>Name for the new robot</td>
|
|
3965
|
+
</tr>
|
|
3966
|
+
<tr>
|
|
3967
|
+
<td><code>system_prompt</code></td>
|
|
3968
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
3969
|
+
<td><code>nil</code></td>
|
|
3970
|
+
<td>Inline system prompt</td>
|
|
3971
|
+
</tr>
|
|
3972
|
+
<tr>
|
|
3973
|
+
<td><code>template</code></td>
|
|
3974
|
+
<td><code>Symbol</code>, <code>nil</code></td>
|
|
3975
|
+
<td><code>nil</code></td>
|
|
3976
|
+
<td>Prompt template</td>
|
|
3977
|
+
</tr>
|
|
3978
|
+
<tr>
|
|
3979
|
+
<td><code>local_tools</code></td>
|
|
3980
|
+
<td><code>Array</code></td>
|
|
3981
|
+
<td><code>[]</code></td>
|
|
3982
|
+
<td>Tools for the new robot</td>
|
|
3983
|
+
</tr>
|
|
3984
|
+
<tr>
|
|
3985
|
+
<td><code>**options</code></td>
|
|
3986
|
+
<td><code>Hash</code></td>
|
|
3987
|
+
<td><code>{}</code></td>
|
|
3988
|
+
<td>Additional options passed to <code>RobotLab.build</code></td>
|
|
3989
|
+
</tr>
|
|
3990
|
+
</tbody>
|
|
3991
|
+
</table>
|
|
3992
|
+
<p><strong>Returns:</strong> <code>Robot</code></p>
|
|
3993
|
+
<p><strong>Examples:</strong></p>
|
|
3994
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-16-1"><a id="__codelineno-16-1" name="__codelineno-16-1" href="#__codelineno-16-1"></a><span class="c1"># Minimal spawn (bus created automatically)</span>
|
|
3995
|
+
</span><span id="__span-16-2"><a id="__codelineno-16-2" name="__codelineno-16-2" href="#__codelineno-16-2"></a><span class="n">bot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span>
|
|
3996
|
+
</span><span id="__span-16-3"><a id="__codelineno-16-3" name="__codelineno-16-3" href="#__codelineno-16-3"></a><span class="n">bot2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bot</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You are helpful."</span><span class="p">)</span>
|
|
3997
|
+
</span><span id="__span-16-4"><a id="__codelineno-16-4" name="__codelineno-16-4" href="#__codelineno-16-4"></a>
|
|
3998
|
+
</span><span id="__span-16-5"><a id="__codelineno-16-5" name="__codelineno-16-5" href="#__codelineno-16-5"></a><span class="c1"># Spawn with template</span>
|
|
3999
|
+
</span><span id="__span-16-6"><a id="__codelineno-16-6" name="__codelineno-16-6" href="#__codelineno-16-6"></a><span class="n">specialist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dispatcher</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span>
|
|
4000
|
+
</span><span id="__span-16-7"><a id="__codelineno-16-7" name="__codelineno-16-7" href="#__codelineno-16-7"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"billing"</span><span class="p">,</span>
|
|
4001
|
+
</span><span id="__span-16-8"><a id="__codelineno-16-8" name="__codelineno-16-8" href="#__codelineno-16-8"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="ss">:billing</span><span class="p">,</span>
|
|
4002
|
+
</span><span id="__span-16-9"><a id="__codelineno-16-9" name="__codelineno-16-9" href="#__codelineno-16-9"></a><span class="w"> </span><span class="ss">local_tools</span><span class="p">:</span><span class="w"> </span><span class="o">[</span><span class="no">InvoiceLookup</span><span class="o">]</span>
|
|
4003
|
+
</span><span id="__span-16-10"><a id="__codelineno-16-10" name="__codelineno-16-10" href="#__codelineno-16-10"></a><span class="p">)</span>
|
|
4004
|
+
</span><span id="__span-16-11"><a id="__codelineno-16-11" name="__codelineno-16-11" href="#__codelineno-16-11"></a>
|
|
4005
|
+
</span><span id="__span-16-12"><a id="__codelineno-16-12" name="__codelineno-16-12" href="#__codelineno-16-12"></a><span class="c1"># Fan-out: multiple robots with the same name</span>
|
|
4006
|
+
</span><span id="__span-16-13"><a id="__codelineno-16-13" name="__codelineno-16-13" href="#__codelineno-16-13"></a><span class="n">worker1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bot</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"worker"</span><span class="p">,</span><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"Worker 1"</span><span class="p">)</span>
|
|
4007
|
+
</span><span id="__span-16-14"><a id="__codelineno-16-14" name="__codelineno-16-14" href="#__codelineno-16-14"></a><span class="n">worker2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bot</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"worker"</span><span class="p">,</span><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"Worker 2"</span><span class="p">)</span>
|
|
4008
|
+
</span><span id="__span-16-15"><a id="__codelineno-16-15" name="__codelineno-16-15" href="#__codelineno-16-15"></a><span class="c1"># Messages sent to :worker are delivered to both</span>
|
|
4009
|
+
</span></code></pre></div>
|
|
4010
|
+
<h3 id="with_bus">with_bus<a class="headerlink" href="#with_bus" title="Permanent link">¶</a></h3>
|
|
4011
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-17-1"><a id="__codelineno-17-1" name="__codelineno-17-1" href="#__codelineno-17-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">with_bus</span><span class="p">(</span><span class="n">bus</span><span class="p">)</span>
|
|
4012
|
+
</span><span id="__span-17-2"><a id="__codelineno-17-2" name="__codelineno-17-2" href="#__codelineno-17-2"></a><span class="c1"># => self</span>
|
|
4013
|
+
</span></code></pre></div>
|
|
4014
|
+
<p>Connect the robot to a message bus after creation. If called without an argument and the robot has no bus, a new one is created. Returns <code>self</code> for chaining.</p>
|
|
4015
|
+
<p><strong>Parameters:</strong></p>
|
|
4016
|
+
<table>
|
|
4017
|
+
<thead>
|
|
4018
|
+
<tr>
|
|
4019
|
+
<th>Name</th>
|
|
4020
|
+
<th>Type</th>
|
|
4021
|
+
<th>Default</th>
|
|
4022
|
+
<th>Description</th>
|
|
4023
|
+
</tr>
|
|
4024
|
+
</thead>
|
|
4025
|
+
<tbody>
|
|
4026
|
+
<tr>
|
|
4027
|
+
<td><code>bus</code></td>
|
|
4028
|
+
<td><code>TypedBus::MessageBus</code>, <code>nil</code></td>
|
|
4029
|
+
<td><code>nil</code></td>
|
|
4030
|
+
<td>Bus to join (creates one if nil and robot has no bus)</td>
|
|
4031
|
+
</tr>
|
|
4032
|
+
</tbody>
|
|
4033
|
+
</table>
|
|
4034
|
+
<p><strong>Returns:</strong> <code>self</code></p>
|
|
4035
|
+
<p><strong>Examples:</strong></p>
|
|
4036
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-18-1"><a id="__codelineno-18-1" name="__codelineno-18-1" href="#__codelineno-18-1"></a><span class="c1"># Join an existing bus</span>
|
|
4037
|
+
</span><span id="__span-18-2"><a id="__codelineno-18-2" name="__codelineno-18-2" href="#__codelineno-18-2"></a><span class="n">bot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">)</span>
|
|
4038
|
+
</span><span id="__span-18-3"><a id="__codelineno-18-3" name="__codelineno-18-3" href="#__codelineno-18-3"></a><span class="n">bot</span><span class="o">.</span><span class="n">with_bus</span><span class="p">(</span><span class="n">some_bus</span><span class="p">)</span>
|
|
4039
|
+
</span><span id="__span-18-4"><a id="__codelineno-18-4" name="__codelineno-18-4" href="#__codelineno-18-4"></a>
|
|
4040
|
+
</span><span id="__span-18-5"><a id="__codelineno-18-5" name="__codelineno-18-5" href="#__codelineno-18-5"></a><span class="c1"># Create a bus on demand</span>
|
|
4041
|
+
</span><span id="__span-18-6"><a id="__codelineno-18-6" name="__codelineno-18-6" href="#__codelineno-18-6"></a><span class="n">bot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">)</span><span class="o">.</span><span class="n">with_bus</span>
|
|
4042
|
+
</span><span id="__span-18-7"><a id="__codelineno-18-7" name="__codelineno-18-7" href="#__codelineno-18-7"></a>
|
|
4043
|
+
</span><span id="__span-18-8"><a id="__codelineno-18-8" name="__codelineno-18-8" href="#__codelineno-18-8"></a><span class="c1"># Switch buses</span>
|
|
4044
|
+
</span><span id="__span-18-9"><a id="__codelineno-18-9" name="__codelineno-18-9" href="#__codelineno-18-9"></a><span class="n">bot</span><span class="o">.</span><span class="n">with_bus</span><span class="p">(</span><span class="n">bus1</span><span class="p">)</span><span class="w"> </span><span class="c1"># joins bus1</span>
|
|
4045
|
+
</span><span id="__span-18-10"><a id="__codelineno-18-10" name="__codelineno-18-10" href="#__codelineno-18-10"></a><span class="n">bot</span><span class="o">.</span><span class="n">with_bus</span><span class="p">(</span><span class="n">bus2</span><span class="p">)</span><span class="w"> </span><span class="c1"># leaves bus1, joins bus2</span>
|
|
4046
|
+
</span></code></pre></div>
|
|
4047
|
+
<h3 id="disconnect">disconnect<a class="headerlink" href="#disconnect" title="Permanent link">¶</a></h3>
|
|
4048
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-19-1"><a id="__codelineno-19-1" name="__codelineno-19-1" href="#__codelineno-19-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">disconnect</span>
|
|
4049
|
+
</span><span id="__span-19-2"><a id="__codelineno-19-2" name="__codelineno-19-2" href="#__codelineno-19-2"></a><span class="c1"># => self</span>
|
|
4050
|
+
</span></code></pre></div>
|
|
4051
|
+
<p>Disconnect from all MCP servers and bus channels.</p>
|
|
4052
|
+
<h3 id="to_h">to_h<a class="headerlink" href="#to_h" title="Permanent link">¶</a></h3>
|
|
4053
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-20-1"><a id="__codelineno-20-1" name="__codelineno-20-1" href="#__codelineno-20-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">to_h</span>
|
|
4054
|
+
</span><span id="__span-20-2"><a id="__codelineno-20-2" name="__codelineno-20-2" href="#__codelineno-20-2"></a><span class="c1"># => Hash</span>
|
|
4055
|
+
</span></code></pre></div>
|
|
4056
|
+
<p>Returns a hash representation of the robot including name, description, template, skills, system_prompt, local_tools, mcp_tools, mcp_config, tools_config, mcp_servers, model, and bus (true if configured, omitted otherwise). Nil values are compacted out.</p>
|
|
4057
|
+
<h2 id="memory-behavior">Memory Behavior<a class="headerlink" href="#memory-behavior" title="Permanent link">¶</a></h2>
|
|
4058
|
+
<ul>
|
|
4059
|
+
<li><strong>Standalone</strong>: Robot uses its own inherent <code>Memory</code> instance (<code>robot.memory</code>).</li>
|
|
4060
|
+
<li><strong>In a Network</strong>: Robot uses the network's shared memory (passed via <code>network_memory:</code>).</li>
|
|
4061
|
+
</ul>
|
|
4062
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-21-1"><a id="__codelineno-21-1" name="__codelineno-21-1" href="#__codelineno-21-1"></a><span class="c1"># Standalone memory access</span>
|
|
4063
|
+
</span><span id="__span-21-2"><a id="__codelineno-21-2" name="__codelineno-21-2" href="#__codelineno-21-2"></a><span class="n">robot</span><span class="o">.</span><span class="n">memory</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">123</span>
|
|
4064
|
+
</span><span id="__span-21-3"><a id="__codelineno-21-3" name="__codelineno-21-3" href="#__codelineno-21-3"></a><span class="n">robot</span><span class="o">.</span><span class="n">memory</span><span class="o">[</span><span class="ss">:user_id</span><span class="o">]</span><span class="w"> </span><span class="c1"># => 123</span>
|
|
4065
|
+
</span><span id="__span-21-4"><a id="__codelineno-21-4" name="__codelineno-21-4" href="#__codelineno-21-4"></a>
|
|
4066
|
+
</span><span id="__span-21-5"><a id="__codelineno-21-5" name="__codelineno-21-5" href="#__codelineno-21-5"></a><span class="c1"># Reset standalone memory</span>
|
|
4067
|
+
</span><span id="__span-21-6"><a id="__codelineno-21-6" name="__codelineno-21-6" href="#__codelineno-21-6"></a><span class="n">robot</span><span class="o">.</span><span class="n">reset_memory</span>
|
|
4068
|
+
</span></code></pre></div>
|
|
4069
|
+
<h2 id="templates">Templates<a class="headerlink" href="#templates" title="Permanent link">¶</a></h2>
|
|
4070
|
+
<p>Templates are <code>.md</code> files with optional YAML front matter, loaded via <code>prompt_manager</code>. The <code>template:</code> parameter maps to a file path relative to the configured template directory:</p>
|
|
4071
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-22-1"><a id="__codelineno-22-1" name="__codelineno-22-1" href="#__codelineno-22-1"></a><span class="c1"># template: :assistant => prompts/assistant.md</span>
|
|
4072
|
+
</span><span id="__span-22-2"><a id="__codelineno-22-2" name="__codelineno-22-2" href="#__codelineno-22-2"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">,</span><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="ss">:assistant</span><span class="p">,</span><span class="w"> </span><span class="ss">context</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">tone</span><span class="p">:</span><span class="w"> </span><span class="s2">"friendly"</span><span class="w"> </span><span class="p">})</span>
|
|
4073
|
+
</span></code></pre></div>
|
|
4074
|
+
<p>Front matter supports two categories of keys:</p>
|
|
4075
|
+
<p><strong>LLM Config:</strong> <code>model</code>, <code>temperature</code>, <code>top_p</code>, <code>top_k</code>, <code>max_tokens</code>, <code>presence_penalty</code>, <code>frequency_penalty</code>, <code>stop</code> — applied to the underlying chat.</p>
|
|
4076
|
+
<p><strong>Robot Extras:</strong> <code>robot_name</code>, <code>description</code>, <code>tools</code>, <code>mcp</code>, <code>skills</code> — applied to the robot's identity and capabilities. Constructor-provided values always take precedence.</p>
|
|
4077
|
+
<table>
|
|
4078
|
+
<thead>
|
|
4079
|
+
<tr>
|
|
4080
|
+
<th>Key</th>
|
|
4081
|
+
<th>Type</th>
|
|
4082
|
+
<th>Description</th>
|
|
4083
|
+
</tr>
|
|
4084
|
+
</thead>
|
|
4085
|
+
<tbody>
|
|
4086
|
+
<tr>
|
|
4087
|
+
<td><code>robot_name</code></td>
|
|
4088
|
+
<td><code>String</code></td>
|
|
4089
|
+
<td>Override robot name (when constructor uses the default <code>"robot"</code>)</td>
|
|
4090
|
+
</tr>
|
|
4091
|
+
<tr>
|
|
4092
|
+
<td><code>description</code></td>
|
|
4093
|
+
<td><code>String</code></td>
|
|
4094
|
+
<td>Human-readable description</td>
|
|
4095
|
+
</tr>
|
|
4096
|
+
<tr>
|
|
4097
|
+
<td><code>tools</code></td>
|
|
4098
|
+
<td><code>Array<String></code></td>
|
|
4099
|
+
<td>Tool class names resolved via <code>Object.const_get</code></td>
|
|
4100
|
+
</tr>
|
|
4101
|
+
<tr>
|
|
4102
|
+
<td><code>mcp</code></td>
|
|
4103
|
+
<td><code>Array<Hash></code></td>
|
|
4104
|
+
<td>MCP server configurations</td>
|
|
4105
|
+
</tr>
|
|
4106
|
+
<tr>
|
|
4107
|
+
<td><code>skills</code></td>
|
|
4108
|
+
<td><code>Array<Symbol></code></td>
|
|
4109
|
+
<td>Skill templates to prepend (recursive, with cycle detection)</td>
|
|
4110
|
+
</tr>
|
|
4111
|
+
</tbody>
|
|
4112
|
+
</table>
|
|
4113
|
+
<h2 id="skills">Skills<a class="headerlink" href="#skills" title="Permanent link">¶</a></h2>
|
|
4114
|
+
<p>Skills compose robot behaviors from reusable templates. Each skill is a standard <code>.md</code> template whose prompt body is prepended before the main template. Skills are expanded depth-first with automatic cycle detection.</p>
|
|
4115
|
+
<p><strong>Constructor:</strong> <code>skills:</code> accepts <code>Symbol</code> or <code>Array<Symbol></code>:</p>
|
|
4116
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-23-1"><a id="__codelineno-23-1" name="__codelineno-23-1" href="#__codelineno-23-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4117
|
+
</span><span id="__span-23-2"><a id="__codelineno-23-2" name="__codelineno-23-2" href="#__codelineno-23-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"support"</span><span class="p">,</span>
|
|
4118
|
+
</span><span id="__span-23-3"><a id="__codelineno-23-3" name="__codelineno-23-3" href="#__codelineno-23-3"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="ss">:support</span><span class="p">,</span>
|
|
4119
|
+
</span><span id="__span-23-4"><a id="__codelineno-23-4" name="__codelineno-23-4" href="#__codelineno-23-4"></a><span class="w"> </span><span class="ss">skills</span><span class="p">:</span><span class="w"> </span><span class="o">[</span><span class="ss">:clarifier</span><span class="p">,</span><span class="w"> </span><span class="ss">:json_responder</span><span class="o">]</span>
|
|
4120
|
+
</span><span id="__span-23-5"><a id="__codelineno-23-5" name="__codelineno-23-5" href="#__codelineno-23-5"></a><span class="p">)</span>
|
|
4121
|
+
</span></code></pre></div>
|
|
4122
|
+
<p><strong>Front matter:</strong> templates can declare skills via <code>skills:</code> key:</p>
|
|
4123
|
+
<div class="language-markdown highlight"><pre><span></span><code><span id="__span-24-1"><a id="__codelineno-24-1" name="__codelineno-24-1" href="#__codelineno-24-1"></a>---
|
|
4124
|
+
</span><span id="__span-24-2"><a id="__codelineno-24-2" name="__codelineno-24-2" href="#__codelineno-24-2"></a>skills:
|
|
4125
|
+
</span><span id="__span-24-3"><a id="__codelineno-24-3" name="__codelineno-24-3" href="#__codelineno-24-3"></a><span class="w"> </span><span class="k">-</span><span class="w"> </span>clarifier
|
|
4126
|
+
</span><span id="__span-24-4"><a id="__codelineno-24-4" name="__codelineno-24-4" href="#__codelineno-24-4"></a><span class="gu"> - json_responder</span>
|
|
4127
|
+
</span><span id="__span-24-5"><a id="__codelineno-24-5" name="__codelineno-24-5" href="#__codelineno-24-5"></a><span class="gu">---</span>
|
|
4128
|
+
</span><span id="__span-24-6"><a id="__codelineno-24-6" name="__codelineno-24-6" href="#__codelineno-24-6"></a>Main template body here.
|
|
4129
|
+
</span></code></pre></div>
|
|
4130
|
+
<p>Constructor <code>skills:</code> and front matter <code>skills:</code> are combined (constructor first, then front matter). Skills can nest (a skill can declare its own <code>skills:</code> in front matter).</p>
|
|
4131
|
+
<p><strong>Config cascade:</strong> skill config merges in processing order (deepest first). Later values override earlier. Constructor kwargs always win.</p>
|
|
4132
|
+
<p><strong>Prompt order:</strong> skill bodies are concatenated in expansion order, followed by the main template body. All are joined with <code>"\n\n"</code> and set as system instructions via a single <code>with_instructions</code> call.</p>
|
|
4133
|
+
<p><strong>Cycle detection:</strong> if skills form a cycle, the duplicate is skipped with a logger warning.</p>
|
|
4134
|
+
<h2 id="runconfig">RunConfig<a class="headerlink" href="#runconfig" title="Permanent link">¶</a></h2>
|
|
4135
|
+
<p><code>RunConfig</code> provides shared operational defaults that flow through the configuration hierarchy. Pass it via the <code>config:</code> parameter on <code>Robot.new</code> or <code>RobotLab.build</code>.</p>
|
|
4136
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-25-1"><a id="__codelineno-25-1" name="__codelineno-25-1" href="#__codelineno-25-1"></a><span class="n">shared</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">::</span><span class="no">RunConfig</span><span class="o">.</span><span class="n">new</span><span class="p">(</span><span class="ss">model</span><span class="p">:</span><span class="w"> </span><span class="s2">"claude-sonnet-4"</span><span class="p">,</span><span class="w"> </span><span class="ss">temperature</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">7</span><span class="p">)</span>
|
|
4137
|
+
</span><span id="__span-25-2"><a id="__codelineno-25-2" name="__codelineno-25-2" href="#__codelineno-25-2"></a>
|
|
4138
|
+
</span><span id="__span-25-3"><a id="__codelineno-25-3" name="__codelineno-25-3" href="#__codelineno-25-3"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4139
|
+
</span><span id="__span-25-4"><a id="__codelineno-25-4" name="__codelineno-25-4" href="#__codelineno-25-4"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"writer"</span><span class="p">,</span>
|
|
4140
|
+
</span><span id="__span-25-5"><a id="__codelineno-25-5" name="__codelineno-25-5" href="#__codelineno-25-5"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You write creatively."</span><span class="p">,</span>
|
|
4141
|
+
</span><span id="__span-25-6"><a id="__codelineno-25-6" name="__codelineno-25-6" href="#__codelineno-25-6"></a><span class="w"> </span><span class="ss">config</span><span class="p">:</span><span class="w"> </span><span class="n">shared</span><span class="p">,</span>
|
|
4142
|
+
</span><span id="__span-25-7"><a id="__codelineno-25-7" name="__codelineno-25-7" href="#__codelineno-25-7"></a><span class="w"> </span><span class="ss">temperature</span><span class="p">:</span><span class="w"> </span><span class="mi">0</span><span class="o">.</span><span class="mi">9</span><span class="w"> </span><span class="c1"># explicit kwargs override config</span>
|
|
4143
|
+
</span><span id="__span-25-8"><a id="__codelineno-25-8" name="__codelineno-25-8" href="#__codelineno-25-8"></a><span class="p">)</span>
|
|
4144
|
+
</span><span id="__span-25-9"><a id="__codelineno-25-9" name="__codelineno-25-9" href="#__codelineno-25-9"></a>
|
|
4145
|
+
</span><span id="__span-25-10"><a id="__codelineno-25-10" name="__codelineno-25-10" href="#__codelineno-25-10"></a><span class="n">robot</span><span class="o">.</span><span class="n">config</span><span class="w"> </span><span class="c1">#=> RunConfig with model: "claude-sonnet-4", temperature: 0.9, ...</span>
|
|
4146
|
+
</span></code></pre></div>
|
|
4147
|
+
<p>RunConfig fields: <code>model</code>, <code>temperature</code>, <code>top_p</code>, <code>top_k</code>, <code>max_tokens</code>, <code>presence_penalty</code>, <code>frequency_penalty</code>, <code>stop</code>, <code>mcp</code>, <code>tools</code>, <code>on_tool_call</code>, <code>on_tool_result</code>, <code>on_content</code>, <code>bus</code>, <code>enable_cache</code>.</p>
|
|
4148
|
+
<p>See <a href="../../../getting-started/configuration/#runconfig-shared-operational-defaults">Configuration: RunConfig</a> for full details.</p>
|
|
4149
|
+
<h2 id="streaming">Streaming<a class="headerlink" href="#streaming" title="Permanent link">¶</a></h2>
|
|
4150
|
+
<p>Robots support two complementary approaches for streaming LLM content in real-time.</p>
|
|
4151
|
+
<h3 id="the-chunk-object">The Chunk Object<a class="headerlink" href="#the-chunk-object" title="Permanent link">¶</a></h3>
|
|
4152
|
+
<p>Both callbacks and blocks receive a <a href="https://rubyllm.com/streaming/#basic-streaming"><code>RubyLLM::Chunk</code></a> (subclass of <code>RubyLLM::Message</code>). Key accessors:</p>
|
|
4153
|
+
<table>
|
|
4154
|
+
<thead>
|
|
4155
|
+
<tr>
|
|
4156
|
+
<th>Accessor</th>
|
|
4157
|
+
<th>Type</th>
|
|
4158
|
+
<th>Description</th>
|
|
4159
|
+
</tr>
|
|
4160
|
+
</thead>
|
|
4161
|
+
<tbody>
|
|
4162
|
+
<tr>
|
|
4163
|
+
<td><code>content</code></td>
|
|
4164
|
+
<td><code>String</code>, <code>nil</code></td>
|
|
4165
|
+
<td>The text delta for this chunk (<code>nil</code> on tool-call or usage-only chunks)</td>
|
|
4166
|
+
</tr>
|
|
4167
|
+
<tr>
|
|
4168
|
+
<td><code>role</code></td>
|
|
4169
|
+
<td><code>Symbol</code></td>
|
|
4170
|
+
<td>Always <code>:assistant</code></td>
|
|
4171
|
+
</tr>
|
|
4172
|
+
<tr>
|
|
4173
|
+
<td><code>model_id</code></td>
|
|
4174
|
+
<td><code>String</code></td>
|
|
4175
|
+
<td>The LLM model ID</td>
|
|
4176
|
+
</tr>
|
|
4177
|
+
<tr>
|
|
4178
|
+
<td><code>tool_calls</code></td>
|
|
4179
|
+
<td><code>Array</code>, <code>nil</code></td>
|
|
4180
|
+
<td>Tool call deltas (partial JSON arguments)</td>
|
|
4181
|
+
</tr>
|
|
4182
|
+
<tr>
|
|
4183
|
+
<td><code>tool_call?</code></td>
|
|
4184
|
+
<td><code>Boolean</code></td>
|
|
4185
|
+
<td>Whether this chunk contains tool call data</td>
|
|
4186
|
+
</tr>
|
|
4187
|
+
<tr>
|
|
4188
|
+
<td><code>thinking</code></td>
|
|
4189
|
+
<td><code>Thinking</code>, <code>nil</code></td>
|
|
4190
|
+
<td>Extended thinking delta (Anthropic only)</td>
|
|
4191
|
+
</tr>
|
|
4192
|
+
<tr>
|
|
4193
|
+
<td><code>input_tokens</code></td>
|
|
4194
|
+
<td><code>Integer</code>, <code>nil</code></td>
|
|
4195
|
+
<td>Input token count (populated on final chunk)</td>
|
|
4196
|
+
</tr>
|
|
4197
|
+
<tr>
|
|
4198
|
+
<td><code>output_tokens</code></td>
|
|
4199
|
+
<td><code>Integer</code>, <code>nil</code></td>
|
|
4200
|
+
<td>Output token count (populated on final chunk)</td>
|
|
4201
|
+
</tr>
|
|
4202
|
+
<tr>
|
|
4203
|
+
<td><code>cached_tokens</code></td>
|
|
4204
|
+
<td><code>Integer</code>, <code>nil</code></td>
|
|
4205
|
+
<td>Cached prompt tokens (final chunk)</td>
|
|
4206
|
+
</tr>
|
|
4207
|
+
</tbody>
|
|
4208
|
+
</table>
|
|
4209
|
+
<p>Most chunks carry only <code>content</code> (the text delta). The final chunk(s) carry token usage counts. Tool call chunks have <code>tool_calls</code> instead of <code>content</code>.</p>
|
|
4210
|
+
<h3 id="stored-callback-on_content">Stored Callback (<code>on_content:</code>)<a class="headerlink" href="#stored-callback-on_content" title="Permanent link">¶</a></h3>
|
|
4211
|
+
<p>Wired at build time via constructor or RunConfig. Fires on every <code>run()</code> call automatically:</p>
|
|
4212
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-26-1"><a id="__codelineno-26-1" name="__codelineno-26-1" href="#__codelineno-26-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4213
|
+
</span><span id="__span-26-2"><a id="__codelineno-26-2" name="__codelineno-26-2" href="#__codelineno-26-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"assistant"</span><span class="p">,</span>
|
|
4214
|
+
</span><span id="__span-26-3"><a id="__codelineno-26-3" name="__codelineno-26-3" href="#__codelineno-26-3"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You are helpful."</span><span class="p">,</span>
|
|
4215
|
+
</span><span id="__span-26-4"><a id="__codelineno-26-4" name="__codelineno-26-4" href="#__codelineno-26-4"></a><span class="w"> </span><span class="ss">on_content</span><span class="p">:</span><span class="w"> </span><span class="o">-></span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">broadcast</span><span class="p">(</span><span class="n">chunk</span><span class="o">.</span><span class="n">content</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
|
4216
|
+
</span><span id="__span-26-5"><a id="__codelineno-26-5" name="__codelineno-26-5" href="#__codelineno-26-5"></a><span class="p">)</span>
|
|
4217
|
+
</span><span id="__span-26-6"><a id="__codelineno-26-6" name="__codelineno-26-6" href="#__codelineno-26-6"></a><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Tell me a story"</span><span class="p">)</span><span class="w"> </span><span class="c1"># streams via stored callback</span>
|
|
4218
|
+
</span></code></pre></div>
|
|
4219
|
+
<p>The <code>on_content</code> callback participates in the RunConfig cascade:</p>
|
|
4220
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-27-1"><a id="__codelineno-27-1" name="__codelineno-27-1" href="#__codelineno-27-1"></a><span class="n">config</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">::</span><span class="no">RunConfig</span><span class="o">.</span><span class="n">new</span><span class="p">(</span>
|
|
4221
|
+
</span><span id="__span-27-2"><a id="__codelineno-27-2" name="__codelineno-27-2" href="#__codelineno-27-2"></a><span class="w"> </span><span class="ss">on_content</span><span class="p">:</span><span class="w"> </span><span class="o">-></span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="n">chunk</span><span class="o">.</span><span class="n">content</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
|
4222
|
+
</span><span id="__span-27-3"><a id="__codelineno-27-3" name="__codelineno-27-3" href="#__codelineno-27-3"></a><span class="p">)</span>
|
|
4223
|
+
</span><span id="__span-27-4"><a id="__codelineno-27-4" name="__codelineno-27-4" href="#__codelineno-27-4"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">,</span><span class="w"> </span><span class="ss">config</span><span class="p">:</span><span class="w"> </span><span class="n">config</span><span class="p">)</span>
|
|
4224
|
+
</span></code></pre></div>
|
|
4225
|
+
<p>Constructor <code>on_content:</code> overrides RunConfig <code>on_content</code>.</p>
|
|
4226
|
+
<h3 id="per-call-block">Per-Call Block<a class="headerlink" href="#per-call-block" title="Permanent link">¶</a></h3>
|
|
4227
|
+
<p>Pass a block to <code>run()</code> for one-off streaming:</p>
|
|
4228
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-28-1"><a id="__codelineno-28-1" name="__codelineno-28-1" href="#__codelineno-28-1"></a><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Tell me a story"</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="o">|</span><span class="n">chunk</span><span class="o">|</span><span class="w"> </span><span class="nb">print</span><span class="w"> </span><span class="n">chunk</span><span class="o">.</span><span class="n">content</span><span class="w"> </span><span class="p">}</span>
|
|
4229
|
+
</span></code></pre></div>
|
|
4230
|
+
<h3 id="both-together">Both Together<a class="headerlink" href="#both-together" title="Permanent link">¶</a></h3>
|
|
4231
|
+
<p>When both exist, both fire — stored callback first, then runtime block:</p>
|
|
4232
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-29-1"><a id="__codelineno-29-1" name="__codelineno-29-1" href="#__codelineno-29-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4233
|
+
</span><span id="__span-29-2"><a id="__codelineno-29-2" name="__codelineno-29-2" href="#__codelineno-29-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">,</span>
|
|
4234
|
+
</span><span id="__span-29-3"><a id="__codelineno-29-3" name="__codelineno-29-3" href="#__codelineno-29-3"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You are helpful."</span><span class="p">,</span>
|
|
4235
|
+
</span><span id="__span-29-4"><a id="__codelineno-29-4" name="__codelineno-29-4" href="#__codelineno-29-4"></a><span class="w"> </span><span class="ss">on_content</span><span class="p">:</span><span class="w"> </span><span class="o">-></span><span class="p">(</span><span class="n">chunk</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="n">log</span><span class="p">(</span><span class="n">chunk</span><span class="o">.</span><span class="n">content</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
|
4236
|
+
</span><span id="__span-29-5"><a id="__codelineno-29-5" name="__codelineno-29-5" href="#__codelineno-29-5"></a><span class="p">)</span>
|
|
4237
|
+
</span><span id="__span-29-6"><a id="__codelineno-29-6" name="__codelineno-29-6" href="#__codelineno-29-6"></a><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Tell me a story"</span><span class="p">)</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="o">|</span><span class="n">chunk</span><span class="o">|</span><span class="w"> </span><span class="n">stream_to_client</span><span class="p">(</span><span class="n">chunk</span><span class="o">.</span><span class="n">content</span><span class="p">)</span><span class="w"> </span><span class="p">}</span>
|
|
4238
|
+
</span><span id="__span-29-7"><a id="__codelineno-29-7" name="__codelineno-29-7" href="#__codelineno-29-7"></a><span class="c1"># log() fires first, then stream_to_client()</span>
|
|
4239
|
+
</span></code></pre></div>
|
|
4240
|
+
<h2 id="configuration-hierarchy">Configuration Hierarchy<a class="headerlink" href="#configuration-hierarchy" title="Permanent link">¶</a></h2>
|
|
4241
|
+
<p>Tools and MCP servers use hierarchical resolution: <strong>runtime > robot > network > global config</strong>.</p>
|
|
4242
|
+
<div class="language-text highlight"><pre><span></span><code><span id="__span-30-1"><a id="__codelineno-30-1" name="__codelineno-30-1" href="#__codelineno-30-1"></a>RobotLab.config (global)
|
|
4243
|
+
</span><span id="__span-30-2"><a id="__codelineno-30-2" name="__codelineno-30-2" href="#__codelineno-30-2"></a> |
|
|
4244
|
+
</span><span id="__span-30-3"><a id="__codelineno-30-3" name="__codelineno-30-3" href="#__codelineno-30-3"></a> +-- Network (config:)
|
|
4245
|
+
</span><span id="__span-30-4"><a id="__codelineno-30-4" name="__codelineno-30-4" href="#__codelineno-30-4"></a> | |
|
|
4246
|
+
</span><span id="__span-30-5"><a id="__codelineno-30-5" name="__codelineno-30-5" href="#__codelineno-30-5"></a> | +-- Task (config:)
|
|
4247
|
+
</span><span id="__span-30-6"><a id="__codelineno-30-6" name="__codelineno-30-6" href="#__codelineno-30-6"></a> | | |
|
|
4248
|
+
</span><span id="__span-30-7"><a id="__codelineno-30-7" name="__codelineno-30-7" href="#__codelineno-30-7"></a> | | +-- Robot (config: + build-time mcp:, tools:)
|
|
4249
|
+
</span><span id="__span-30-8"><a id="__codelineno-30-8" name="__codelineno-30-8" href="#__codelineno-30-8"></a> | | |
|
|
4250
|
+
</span><span id="__span-30-9"><a id="__codelineno-30-9" name="__codelineno-30-9" href="#__codelineno-30-9"></a> | | +-- Template front matter
|
|
4251
|
+
</span><span id="__span-30-10"><a id="__codelineno-30-10" name="__codelineno-30-10" href="#__codelineno-30-10"></a> | | |
|
|
4252
|
+
</span><span id="__span-30-11"><a id="__codelineno-30-11" name="__codelineno-30-11" href="#__codelineno-30-11"></a> | | +-- run() call (runtime mcp:, tools:)
|
|
4253
|
+
</span></code></pre></div>
|
|
4254
|
+
<p>Values at each level:</p>
|
|
4255
|
+
<ul>
|
|
4256
|
+
<li><code>:none</code> -- no tools/MCP at this level</li>
|
|
4257
|
+
<li><code>:inherit</code> -- inherit from parent level</li>
|
|
4258
|
+
<li><code>Array</code> -- explicit list of tool names or MCP server configs</li>
|
|
4259
|
+
</ul>
|
|
4260
|
+
<h2 id="examples">Examples<a class="headerlink" href="#examples" title="Permanent link">¶</a></h2>
|
|
4261
|
+
<h3 id="basic-robot">Basic Robot<a class="headerlink" href="#basic-robot" title="Permanent link">¶</a></h3>
|
|
4262
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-31-1"><a id="__codelineno-31-1" name="__codelineno-31-1" href="#__codelineno-31-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4263
|
+
</span><span id="__span-31-2"><a id="__codelineno-31-2" name="__codelineno-31-2" href="#__codelineno-31-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"greeter"</span><span class="p">,</span>
|
|
4264
|
+
</span><span id="__span-31-3"><a id="__codelineno-31-3" name="__codelineno-31-3" href="#__codelineno-31-3"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You greet users warmly."</span>
|
|
4265
|
+
</span><span id="__span-31-4"><a id="__codelineno-31-4" name="__codelineno-31-4" href="#__codelineno-31-4"></a><span class="p">)</span>
|
|
4266
|
+
</span><span id="__span-31-5"><a id="__codelineno-31-5" name="__codelineno-31-5" href="#__codelineno-31-5"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Hello!"</span><span class="p">)</span>
|
|
4267
|
+
</span><span id="__span-31-6"><a id="__codelineno-31-6" name="__codelineno-31-6" href="#__codelineno-31-6"></a><span class="nb">puts</span><span class="w"> </span><span class="n">result</span><span class="o">.</span><span class="n">last_text_content</span>
|
|
4268
|
+
</span></code></pre></div>
|
|
4269
|
+
<h3 id="robot-with-template">Robot with Template<a class="headerlink" href="#robot-with-template" title="Permanent link">¶</a></h3>
|
|
4270
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-32-1"><a id="__codelineno-32-1" name="__codelineno-32-1" href="#__codelineno-32-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4271
|
+
</span><span id="__span-32-2"><a id="__codelineno-32-2" name="__codelineno-32-2" href="#__codelineno-32-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"support"</span><span class="p">,</span>
|
|
4272
|
+
</span><span id="__span-32-3"><a id="__codelineno-32-3" name="__codelineno-32-3" href="#__codelineno-32-3"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="ss">:support</span><span class="p">,</span>
|
|
4273
|
+
</span><span id="__span-32-4"><a id="__codelineno-32-4" name="__codelineno-32-4" href="#__codelineno-32-4"></a><span class="w"> </span><span class="ss">context</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">company</span><span class="p">:</span><span class="w"> </span><span class="s2">"Acme Corp"</span><span class="w"> </span><span class="p">}</span>
|
|
4274
|
+
</span><span id="__span-32-5"><a id="__codelineno-32-5" name="__codelineno-32-5" href="#__codelineno-32-5"></a><span class="p">)</span>
|
|
4275
|
+
</span><span id="__span-32-6"><a id="__codelineno-32-6" name="__codelineno-32-6" href="#__codelineno-32-6"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"I need help with my order"</span><span class="p">)</span>
|
|
4276
|
+
</span></code></pre></div>
|
|
4277
|
+
<h3 id="robot-with-tools">Robot with Tools<a class="headerlink" href="#robot-with-tools" title="Permanent link">¶</a></h3>
|
|
4278
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-33-1"><a id="__codelineno-33-1" name="__codelineno-33-1" href="#__codelineno-33-1"></a><span class="k">class</span><span class="w"> </span><span class="nc">Calculator</span><span class="w"> </span><span class="o"><</span><span class="w"> </span><span class="no">RubyLLM</span><span class="o">::</span><span class="no">Tool</span>
|
|
4279
|
+
</span><span id="__span-33-2"><a id="__codelineno-33-2" name="__codelineno-33-2" href="#__codelineno-33-2"></a><span class="w"> </span><span class="n">description</span><span class="w"> </span><span class="s2">"Performs basic arithmetic"</span>
|
|
4280
|
+
</span><span id="__span-33-3"><a id="__codelineno-33-3" name="__codelineno-33-3" href="#__codelineno-33-3"></a><span class="w"> </span><span class="n">param</span><span class="w"> </span><span class="ss">:operation</span><span class="p">,</span><span class="w"> </span><span class="ss">type</span><span class="p">:</span><span class="w"> </span><span class="s2">"string"</span><span class="p">,</span><span class="w"> </span><span class="ss">desc</span><span class="p">:</span><span class="w"> </span><span class="s2">"add, subtract, multiply, divide"</span>
|
|
4281
|
+
</span><span id="__span-33-4"><a id="__codelineno-33-4" name="__codelineno-33-4" href="#__codelineno-33-4"></a><span class="w"> </span><span class="n">param</span><span class="w"> </span><span class="ss">:a</span><span class="p">,</span><span class="w"> </span><span class="ss">type</span><span class="p">:</span><span class="w"> </span><span class="s2">"number"</span><span class="p">,</span><span class="w"> </span><span class="ss">desc</span><span class="p">:</span><span class="w"> </span><span class="s2">"First operand"</span>
|
|
4282
|
+
</span><span id="__span-33-5"><a id="__codelineno-33-5" name="__codelineno-33-5" href="#__codelineno-33-5"></a><span class="w"> </span><span class="n">param</span><span class="w"> </span><span class="ss">:b</span><span class="p">,</span><span class="w"> </span><span class="ss">type</span><span class="p">:</span><span class="w"> </span><span class="s2">"number"</span><span class="p">,</span><span class="w"> </span><span class="ss">desc</span><span class="p">:</span><span class="w"> </span><span class="s2">"Second operand"</span>
|
|
4283
|
+
</span><span id="__span-33-6"><a id="__codelineno-33-6" name="__codelineno-33-6" href="#__codelineno-33-6"></a>
|
|
4284
|
+
</span><span id="__span-33-7"><a id="__codelineno-33-7" name="__codelineno-33-7" href="#__codelineno-33-7"></a><span class="w"> </span><span class="k">def</span><span class="w"> </span><span class="nf">execute</span><span class="p">(</span><span class="ss">operation</span><span class="p">:,</span><span class="w"> </span><span class="ss">a</span><span class="p">:,</span><span class="w"> </span><span class="ss">b</span><span class="p">:)</span>
|
|
4285
|
+
</span><span id="__span-33-8"><a id="__codelineno-33-8" name="__codelineno-33-8" href="#__codelineno-33-8"></a><span class="w"> </span><span class="k">case</span><span class="w"> </span><span class="n">operation</span>
|
|
4286
|
+
</span><span id="__span-33-9"><a id="__codelineno-33-9" name="__codelineno-33-9" href="#__codelineno-33-9"></a><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="s2">"add"</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">b</span>
|
|
4287
|
+
</span><span id="__span-33-10"><a id="__codelineno-33-10" name="__codelineno-33-10" href="#__codelineno-33-10"></a><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="s2">"subtract"</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">b</span>
|
|
4288
|
+
</span><span id="__span-33-11"><a id="__codelineno-33-11" name="__codelineno-33-11" href="#__codelineno-33-11"></a><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="s2">"multiply"</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="n">b</span>
|
|
4289
|
+
</span><span id="__span-33-12"><a id="__codelineno-33-12" name="__codelineno-33-12" href="#__codelineno-33-12"></a><span class="w"> </span><span class="k">when</span><span class="w"> </span><span class="s2">"divide"</span><span class="w"> </span><span class="k">then</span><span class="w"> </span><span class="n">a</span><span class="o">.</span><span class="n">to_f</span><span class="w"> </span><span class="o">/</span><span class="w"> </span><span class="n">b</span>
|
|
4290
|
+
</span><span id="__span-33-13"><a id="__codelineno-33-13" name="__codelineno-33-13" href="#__codelineno-33-13"></a><span class="w"> </span><span class="k">end</span>
|
|
4291
|
+
</span><span id="__span-33-14"><a id="__codelineno-33-14" name="__codelineno-33-14" href="#__codelineno-33-14"></a><span class="w"> </span><span class="k">end</span>
|
|
4292
|
+
</span><span id="__span-33-15"><a id="__codelineno-33-15" name="__codelineno-33-15" href="#__codelineno-33-15"></a><span class="k">end</span>
|
|
4293
|
+
</span><span id="__span-33-16"><a id="__codelineno-33-16" name="__codelineno-33-16" href="#__codelineno-33-16"></a>
|
|
4294
|
+
</span><span id="__span-33-17"><a id="__codelineno-33-17" name="__codelineno-33-17" href="#__codelineno-33-17"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4295
|
+
</span><span id="__span-33-18"><a id="__codelineno-33-18" name="__codelineno-33-18" href="#__codelineno-33-18"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"math_bot"</span><span class="p">,</span>
|
|
4296
|
+
</span><span id="__span-33-19"><a id="__codelineno-33-19" name="__codelineno-33-19" href="#__codelineno-33-19"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You help with math."</span><span class="p">,</span>
|
|
4297
|
+
</span><span id="__span-33-20"><a id="__codelineno-33-20" name="__codelineno-33-20" href="#__codelineno-33-20"></a><span class="w"> </span><span class="ss">local_tools</span><span class="p">:</span><span class="w"> </span><span class="o">[</span><span class="no">Calculator</span><span class="o">]</span>
|
|
4298
|
+
</span><span id="__span-33-21"><a id="__codelineno-33-21" name="__codelineno-33-21" href="#__codelineno-33-21"></a><span class="p">)</span>
|
|
4299
|
+
</span><span id="__span-33-22"><a id="__codelineno-33-22" name="__codelineno-33-22" href="#__codelineno-33-22"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"What is 15 * 7?"</span><span class="p">)</span>
|
|
4300
|
+
</span></code></pre></div>
|
|
4301
|
+
<h3 id="robot-with-mcp">Robot with MCP<a class="headerlink" href="#robot-with-mcp" title="Permanent link">¶</a></h3>
|
|
4302
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-34-1"><a id="__codelineno-34-1" name="__codelineno-34-1" href="#__codelineno-34-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4303
|
+
</span><span id="__span-34-2"><a id="__codelineno-34-2" name="__codelineno-34-2" href="#__codelineno-34-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"developer"</span><span class="p">,</span>
|
|
4304
|
+
</span><span id="__span-34-3"><a id="__codelineno-34-3" name="__codelineno-34-3" href="#__codelineno-34-3"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You help with coding tasks."</span><span class="p">,</span>
|
|
4305
|
+
</span><span id="__span-34-4"><a id="__codelineno-34-4" name="__codelineno-34-4" href="#__codelineno-34-4"></a><span class="w"> </span><span class="ss">mcp</span><span class="p">:</span><span class="w"> </span><span class="o">[</span>
|
|
4306
|
+
</span><span id="__span-34-5"><a id="__codelineno-34-5" name="__codelineno-34-5" href="#__codelineno-34-5"></a><span class="w"> </span><span class="p">{</span>
|
|
4307
|
+
</span><span id="__span-34-6"><a id="__codelineno-34-6" name="__codelineno-34-6" href="#__codelineno-34-6"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"github"</span><span class="p">,</span>
|
|
4308
|
+
</span><span id="__span-34-7"><a id="__codelineno-34-7" name="__codelineno-34-7" href="#__codelineno-34-7"></a><span class="w"> </span><span class="ss">transport</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">type</span><span class="p">:</span><span class="w"> </span><span class="s2">"stdio"</span><span class="p">,</span><span class="w"> </span><span class="ss">command</span><span class="p">:</span><span class="w"> </span><span class="s2">"github-mcp-server"</span><span class="p">,</span><span class="w"> </span><span class="ss">args</span><span class="p">:</span><span class="w"> </span><span class="o">[</span><span class="s2">"stdio"</span><span class="o">]</span><span class="w"> </span><span class="p">}</span>
|
|
4309
|
+
</span><span id="__span-34-8"><a id="__codelineno-34-8" name="__codelineno-34-8" href="#__codelineno-34-8"></a><span class="w"> </span><span class="p">}</span>
|
|
4310
|
+
</span><span id="__span-34-9"><a id="__codelineno-34-9" name="__codelineno-34-9" href="#__codelineno-34-9"></a><span class="w"> </span><span class="o">]</span>
|
|
4311
|
+
</span><span id="__span-34-10"><a id="__codelineno-34-10" name="__codelineno-34-10" href="#__codelineno-34-10"></a><span class="p">)</span>
|
|
4312
|
+
</span><span id="__span-34-11"><a id="__codelineno-34-11" name="__codelineno-34-11" href="#__codelineno-34-11"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Search for popular Ruby repos"</span><span class="p">)</span>
|
|
4313
|
+
</span><span id="__span-34-12"><a id="__codelineno-34-12" name="__codelineno-34-12" href="#__codelineno-34-12"></a><span class="n">robot</span><span class="o">.</span><span class="n">disconnect</span>
|
|
4314
|
+
</span></code></pre></div>
|
|
4315
|
+
<h3 id="robot-with-skills">Robot with Skills<a class="headerlink" href="#robot-with-skills" title="Permanent link">¶</a></h3>
|
|
4316
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-35-1"><a id="__codelineno-35-1" name="__codelineno-35-1" href="#__codelineno-35-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4317
|
+
</span><span id="__span-35-2"><a id="__codelineno-35-2" name="__codelineno-35-2" href="#__codelineno-35-2"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"support"</span><span class="p">,</span>
|
|
4318
|
+
</span><span id="__span-35-3"><a id="__codelineno-35-3" name="__codelineno-35-3" href="#__codelineno-35-3"></a><span class="w"> </span><span class="ss">template</span><span class="p">:</span><span class="w"> </span><span class="ss">:support</span><span class="p">,</span>
|
|
4319
|
+
</span><span id="__span-35-4"><a id="__codelineno-35-4" name="__codelineno-35-4" href="#__codelineno-35-4"></a><span class="w"> </span><span class="ss">skills</span><span class="p">:</span><span class="w"> </span><span class="o">[</span><span class="ss">:clarifier</span><span class="p">,</span><span class="w"> </span><span class="ss">:safety</span><span class="p">,</span><span class="w"> </span><span class="ss">:json_responder</span><span class="o">]</span><span class="p">,</span>
|
|
4320
|
+
</span><span id="__span-35-5"><a id="__codelineno-35-5" name="__codelineno-35-5" href="#__codelineno-35-5"></a><span class="w"> </span><span class="ss">context</span><span class="p">:</span><span class="w"> </span><span class="p">{</span><span class="w"> </span><span class="ss">company</span><span class="p">:</span><span class="w"> </span><span class="s2">"Acme Corp"</span><span class="w"> </span><span class="p">}</span>
|
|
4321
|
+
</span><span id="__span-35-6"><a id="__codelineno-35-6" name="__codelineno-35-6" href="#__codelineno-35-6"></a><span class="p">)</span>
|
|
4322
|
+
</span><span id="__span-35-7"><a id="__codelineno-35-7" name="__codelineno-35-7" href="#__codelineno-35-7"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"I need help with my order"</span><span class="p">)</span>
|
|
4323
|
+
</span></code></pre></div>
|
|
4324
|
+
<h3 id="bare-robot-with-chaining">Bare Robot with Chaining<a class="headerlink" href="#bare-robot-with-chaining" title="Permanent link">¶</a></h3>
|
|
4325
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-36-1"><a id="__codelineno-36-1" name="__codelineno-36-1" href="#__codelineno-36-1"></a><span class="n">robot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bot"</span><span class="p">)</span>
|
|
4326
|
+
</span><span id="__span-36-2"><a id="__codelineno-36-2" name="__codelineno-36-2" href="#__codelineno-36-2"></a><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">robot</span>
|
|
4327
|
+
</span><span id="__span-36-3"><a id="__codelineno-36-3" name="__codelineno-36-3" href="#__codelineno-36-3"></a><span class="w"> </span><span class="o">.</span><span class="n">with_instructions</span><span class="p">(</span><span class="s2">"Be concise."</span><span class="p">)</span>
|
|
4328
|
+
</span><span id="__span-36-4"><a id="__codelineno-36-4" name="__codelineno-36-4" href="#__codelineno-36-4"></a><span class="w"> </span><span class="o">.</span><span class="n">with_temperature</span><span class="p">(</span><span class="mi">0</span><span class="o">.</span><span class="mi">3</span><span class="p">)</span>
|
|
4329
|
+
</span><span id="__span-36-5"><a id="__codelineno-36-5" name="__codelineno-36-5" href="#__codelineno-36-5"></a><span class="w"> </span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Explain quantum computing"</span><span class="p">)</span>
|
|
4330
|
+
</span></code></pre></div>
|
|
4331
|
+
<h3 id="robot-with-message-bus">Robot with Message Bus<a class="headerlink" href="#robot-with-message-bus" title="Permanent link">¶</a></h3>
|
|
4332
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-37-1"><a id="__codelineno-37-1" name="__codelineno-37-1" href="#__codelineno-37-1"></a><span class="n">bus</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">TypedBus</span><span class="o">::</span><span class="no">MessageBus</span><span class="o">.</span><span class="n">new</span>
|
|
4333
|
+
</span><span id="__span-37-2"><a id="__codelineno-37-2" name="__codelineno-37-2" href="#__codelineno-37-2"></a>
|
|
4334
|
+
</span><span id="__span-37-3"><a id="__codelineno-37-3" name="__codelineno-37-3" href="#__codelineno-37-3"></a><span class="n">bob</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"bob"</span><span class="p">,</span><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You tell jokes."</span><span class="p">,</span><span class="w"> </span><span class="ss">bus</span><span class="p">:</span><span class="w"> </span><span class="n">bus</span><span class="p">)</span>
|
|
4335
|
+
</span><span id="__span-37-4"><a id="__codelineno-37-4" name="__codelineno-37-4" href="#__codelineno-37-4"></a>
|
|
4336
|
+
</span><span id="__span-37-5"><a id="__codelineno-37-5" name="__codelineno-37-5" href="#__codelineno-37-5"></a><span class="n">alice</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"alice"</span><span class="p">,</span><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You evaluate jokes."</span><span class="p">,</span><span class="w"> </span><span class="ss">bus</span><span class="p">:</span><span class="w"> </span><span class="n">bus</span><span class="p">)</span>
|
|
4337
|
+
</span><span id="__span-37-6"><a id="__codelineno-37-6" name="__codelineno-37-6" href="#__codelineno-37-6"></a><span class="n">alice</span><span class="o">.</span><span class="n">on_message</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">message</span><span class="o">|</span>
|
|
4338
|
+
</span><span id="__span-37-7"><a id="__codelineno-37-7" name="__codelineno-37-7" href="#__codelineno-37-7"></a><span class="w"> </span><span class="n">verdict</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">alice</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"Is this funny? </span><span class="si">#{</span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="si">}</span><span class="s2">"</span><span class="p">)</span><span class="o">.</span><span class="n">last_text_content</span>
|
|
4339
|
+
</span><span id="__span-37-8"><a id="__codelineno-37-8" name="__codelineno-37-8" href="#__codelineno-37-8"></a><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="n">verdict</span>
|
|
4340
|
+
</span><span id="__span-37-9"><a id="__codelineno-37-9" name="__codelineno-37-9" href="#__codelineno-37-9"></a><span class="k">end</span>
|
|
4341
|
+
</span><span id="__span-37-10"><a id="__codelineno-37-10" name="__codelineno-37-10" href="#__codelineno-37-10"></a>
|
|
4342
|
+
</span><span id="__span-37-11"><a id="__codelineno-37-11" name="__codelineno-37-11" href="#__codelineno-37-11"></a><span class="n">bob</span><span class="o">.</span><span class="n">on_message</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">message</span><span class="o">|</span>
|
|
4343
|
+
</span><span id="__span-37-12"><a id="__codelineno-37-12" name="__codelineno-37-12" href="#__codelineno-37-12"></a><span class="w"> </span><span class="n">joke</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bob</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="o">.</span><span class="n">to_s</span><span class="p">)</span><span class="o">.</span><span class="n">last_text_content</span>
|
|
4344
|
+
</span><span id="__span-37-13"><a id="__codelineno-37-13" name="__codelineno-37-13" href="#__codelineno-37-13"></a><span class="w"> </span><span class="n">bob</span><span class="o">.</span><span class="n">send_reply</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">from</span><span class="o">.</span><span class="n">to_sym</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="n">joke</span><span class="p">,</span><span class="w"> </span><span class="ss">in_reply_to</span><span class="p">:</span><span class="w"> </span><span class="n">message</span><span class="o">.</span><span class="n">key</span><span class="p">)</span>
|
|
4345
|
+
</span><span id="__span-37-14"><a id="__codelineno-37-14" name="__codelineno-37-14" href="#__codelineno-37-14"></a><span class="k">end</span>
|
|
4346
|
+
</span><span id="__span-37-15"><a id="__codelineno-37-15" name="__codelineno-37-15" href="#__codelineno-37-15"></a>
|
|
4347
|
+
</span><span id="__span-37-16"><a id="__codelineno-37-16" name="__codelineno-37-16" href="#__codelineno-37-16"></a><span class="n">alice</span><span class="o">.</span><span class="n">send_message</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="ss">:bob</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="s2">"Tell me a robot joke."</span><span class="p">)</span>
|
|
4348
|
+
</span></code></pre></div>
|
|
4349
|
+
<h3 id="spawning-robots-dynamically">Spawning Robots Dynamically<a class="headerlink" href="#spawning-robots-dynamically" title="Permanent link">¶</a></h3>
|
|
4350
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-38-1"><a id="__codelineno-38-1" name="__codelineno-38-1" href="#__codelineno-38-1"></a><span class="c1"># Parent robot spawns specialists on demand</span>
|
|
4351
|
+
</span><span id="__span-38-2"><a id="__codelineno-38-2" name="__codelineno-38-2" href="#__codelineno-38-2"></a><span class="n">dispatcher</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span>
|
|
4352
|
+
</span><span id="__span-38-3"><a id="__codelineno-38-3" name="__codelineno-38-3" href="#__codelineno-38-3"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"dispatcher"</span><span class="p">,</span>
|
|
4353
|
+
</span><span id="__span-38-4"><a id="__codelineno-38-4" name="__codelineno-38-4" href="#__codelineno-38-4"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You delegate work."</span>
|
|
4354
|
+
</span><span id="__span-38-5"><a id="__codelineno-38-5" name="__codelineno-38-5" href="#__codelineno-38-5"></a><span class="p">)</span>
|
|
4355
|
+
</span><span id="__span-38-6"><a id="__codelineno-38-6" name="__codelineno-38-6" href="#__codelineno-38-6"></a>
|
|
4356
|
+
</span><span id="__span-38-7"><a id="__codelineno-38-7" name="__codelineno-38-7" href="#__codelineno-38-7"></a><span class="n">dispatcher</span><span class="o">.</span><span class="n">on_message</span><span class="w"> </span><span class="k">do</span><span class="w"> </span><span class="o">|</span><span class="n">message</span><span class="o">|</span>
|
|
4357
|
+
</span><span id="__span-38-8"><a id="__codelineno-38-8" name="__codelineno-38-8" href="#__codelineno-38-8"></a><span class="w"> </span><span class="nb">puts</span><span class="w"> </span><span class="s2">"Reply from </span><span class="si">#{</span><span class="n">message</span><span class="o">.</span><span class="n">from</span><span class="si">}</span><span class="s2">: </span><span class="si">#{</span><span class="n">message</span><span class="o">.</span><span class="n">content</span><span class="si">}</span><span class="s2">"</span>
|
|
4358
|
+
</span><span id="__span-38-9"><a id="__codelineno-38-9" name="__codelineno-38-9" href="#__codelineno-38-9"></a><span class="k">end</span>
|
|
4359
|
+
</span><span id="__span-38-10"><a id="__codelineno-38-10" name="__codelineno-38-10" href="#__codelineno-38-10"></a>
|
|
4360
|
+
</span><span id="__span-38-11"><a id="__codelineno-38-11" name="__codelineno-38-11" href="#__codelineno-38-11"></a><span class="c1"># spawn creates child on same bus (bus created lazily)</span>
|
|
4361
|
+
</span><span id="__span-38-12"><a id="__codelineno-38-12" name="__codelineno-38-12" href="#__codelineno-38-12"></a><span class="n">helper</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">dispatcher</span><span class="o">.</span><span class="n">spawn</span><span class="p">(</span>
|
|
4362
|
+
</span><span id="__span-38-13"><a id="__codelineno-38-13" name="__codelineno-38-13" href="#__codelineno-38-13"></a><span class="w"> </span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"helper"</span><span class="p">,</span>
|
|
4363
|
+
</span><span id="__span-38-14"><a id="__codelineno-38-14" name="__codelineno-38-14" href="#__codelineno-38-14"></a><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"You answer questions concisely."</span>
|
|
4364
|
+
</span><span id="__span-38-15"><a id="__codelineno-38-15" name="__codelineno-38-15" href="#__codelineno-38-15"></a><span class="p">)</span>
|
|
4365
|
+
</span><span id="__span-38-16"><a id="__codelineno-38-16" name="__codelineno-38-16" href="#__codelineno-38-16"></a>
|
|
4366
|
+
</span><span id="__span-38-17"><a id="__codelineno-38-17" name="__codelineno-38-17" href="#__codelineno-38-17"></a><span class="n">answer</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">helper</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="s2">"What is 2+2?"</span><span class="p">)</span><span class="o">.</span><span class="n">last_text_content</span>
|
|
4367
|
+
</span><span id="__span-38-18"><a id="__codelineno-38-18" name="__codelineno-38-18" href="#__codelineno-38-18"></a><span class="n">helper</span><span class="o">.</span><span class="n">send_message</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="ss">:dispatcher</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="n">answer</span><span class="p">)</span>
|
|
4368
|
+
</span></code></pre></div>
|
|
4369
|
+
<h3 id="connecting-to-a-bus-after-creation">Connecting to a Bus After Creation<a class="headerlink" href="#connecting-to-a-bus-after-creation" title="Permanent link">¶</a></h3>
|
|
4370
|
+
<div class="language-ruby highlight"><pre><span></span><code><span id="__span-39-1"><a id="__codelineno-39-1" name="__codelineno-39-1" href="#__codelineno-39-1"></a><span class="n">bot</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">RobotLab</span><span class="o">.</span><span class="n">build</span><span class="p">(</span><span class="nb">name</span><span class="p">:</span><span class="w"> </span><span class="s2">"latecomer"</span><span class="p">,</span><span class="w"> </span><span class="ss">system_prompt</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hi there."</span><span class="p">)</span>
|
|
4371
|
+
</span><span id="__span-39-2"><a id="__codelineno-39-2" name="__codelineno-39-2" href="#__codelineno-39-2"></a>
|
|
4372
|
+
</span><span id="__span-39-3"><a id="__codelineno-39-3" name="__codelineno-39-3" href="#__codelineno-39-3"></a><span class="c1"># Join a bus later</span>
|
|
4373
|
+
</span><span id="__span-39-4"><a id="__codelineno-39-4" name="__codelineno-39-4" href="#__codelineno-39-4"></a><span class="n">bus</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="no">TypedBus</span><span class="o">::</span><span class="no">MessageBus</span><span class="o">.</span><span class="n">new</span>
|
|
4374
|
+
</span><span id="__span-39-5"><a id="__codelineno-39-5" name="__codelineno-39-5" href="#__codelineno-39-5"></a><span class="n">bot</span><span class="o">.</span><span class="n">with_bus</span><span class="p">(</span><span class="n">bus</span><span class="p">)</span>
|
|
4375
|
+
</span><span id="__span-39-6"><a id="__codelineno-39-6" name="__codelineno-39-6" href="#__codelineno-39-6"></a>
|
|
4376
|
+
</span><span id="__span-39-7"><a id="__codelineno-39-7" name="__codelineno-39-7" href="#__codelineno-39-7"></a><span class="c1"># Now bot can send/receive messages</span>
|
|
4377
|
+
</span><span id="__span-39-8"><a id="__codelineno-39-8" name="__codelineno-39-8" href="#__codelineno-39-8"></a><span class="n">bot</span><span class="o">.</span><span class="n">send_message</span><span class="p">(</span><span class="ss">to</span><span class="p">:</span><span class="w"> </span><span class="ss">:someone</span><span class="p">,</span><span class="w"> </span><span class="ss">content</span><span class="p">:</span><span class="w"> </span><span class="s2">"Hello!"</span><span class="p">)</span>
|
|
4378
|
+
</span></code></pre></div>
|
|
4379
|
+
<h2 id="see-also">See Also<a class="headerlink" href="#see-also" title="Permanent link">¶</a></h2>
|
|
4380
|
+
<ul>
|
|
4381
|
+
<li><a href="../../../guides/building-robots/">Building Robots Guide</a> (includes <a href="../../../guides/building-robots/#composable-skills">Composable Skills</a>)</li>
|
|
4382
|
+
<li><a href="../tool/">Tool</a></li>
|
|
4383
|
+
<li><a href="../network/">Network</a></li>
|
|
4384
|
+
</ul>
|
|
4385
|
+
|
|
4386
|
+
|
|
4387
|
+
|
|
4388
|
+
|
|
4389
|
+
|
|
4390
|
+
|
|
4391
|
+
|
|
4392
|
+
|
|
4393
|
+
|
|
4394
|
+
|
|
4395
|
+
|
|
4396
|
+
|
|
4397
|
+
|
|
4398
|
+
<form class="md-feedback" name="feedback" hidden>
|
|
4399
|
+
<fieldset>
|
|
4400
|
+
<legend class="md-feedback__title">
|
|
4401
|
+
Was this page helpful?
|
|
4402
|
+
</legend>
|
|
4403
|
+
<div class="md-feedback__inner">
|
|
4404
|
+
<div class="md-feedback__list">
|
|
4405
|
+
|
|
4406
|
+
<button class="md-feedback__icon md-icon" type="submit" title="This page was helpful" data-md-value="1">
|
|
4407
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m7 0c0 .8-.7 1.5-1.5 1.5S14 10.3 14 9.5 14.7 8 15.5 8s1.5.7 1.5 1.5m-5 7.73c-1.75 0-3.29-.73-4.19-1.81L9.23 14c.45.72 1.52 1.23 2.77 1.23s2.32-.51 2.77-1.23l1.42 1.42c-.9 1.08-2.44 1.81-4.19 1.81"/></svg>
|
|
4408
|
+
</button>
|
|
4409
|
+
|
|
4410
|
+
<button class="md-feedback__icon md-icon" type="submit" title="This page could be improved" data-md-value="0">
|
|
4411
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 12a8 8 0 0 0-8-8 8 8 0 0 0-8 8 8 8 0 0 0 8 8 8 8 0 0 0 8-8m2 0a10 10 0 0 1-10 10A10 10 0 0 1 2 12 10 10 0 0 1 12 2a10 10 0 0 1 10 10m-6.5-4c.8 0 1.5.7 1.5 1.5s-.7 1.5-1.5 1.5-1.5-.7-1.5-1.5.7-1.5 1.5-1.5M10 9.5c0 .8-.7 1.5-1.5 1.5S7 10.3 7 9.5 7.7 8 8.5 8s1.5.7 1.5 1.5m2 4.5c1.75 0 3.29.72 4.19 1.81l-1.42 1.42C14.32 16.5 13.25 16 12 16s-2.32.5-2.77 1.23l-1.42-1.42C8.71 14.72 10.25 14 12 14"/></svg>
|
|
4412
|
+
</button>
|
|
4413
|
+
|
|
4414
|
+
</div>
|
|
4415
|
+
<div class="md-feedback__note">
|
|
4416
|
+
|
|
4417
|
+
<div data-md-value="1" hidden>
|
|
4418
|
+
|
|
4419
|
+
|
|
4420
|
+
|
|
4421
|
+
|
|
4422
|
+
|
|
4423
|
+
|
|
4424
|
+
|
|
4425
|
+
|
|
4426
|
+
|
|
4427
|
+
Thanks for your feedback!
|
|
4428
|
+
</div>
|
|
4429
|
+
|
|
4430
|
+
<div data-md-value="0" hidden>
|
|
4431
|
+
|
|
4432
|
+
|
|
4433
|
+
|
|
4434
|
+
|
|
4435
|
+
|
|
4436
|
+
|
|
4437
|
+
|
|
4438
|
+
|
|
4439
|
+
|
|
4440
|
+
Thanks for your feedback! Help us improve by creating an issue.
|
|
4441
|
+
</div>
|
|
4442
|
+
|
|
4443
|
+
</div>
|
|
4444
|
+
</div>
|
|
4445
|
+
</fieldset>
|
|
4446
|
+
</form>
|
|
4447
|
+
|
|
4448
|
+
|
|
4449
|
+
|
|
4450
|
+
</article>
|
|
4451
|
+
</div>
|
|
4452
|
+
|
|
4453
|
+
|
|
4454
|
+
<script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script>
|
|
4455
|
+
|
|
4456
|
+
<script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script>
|
|
4457
|
+
</div>
|
|
4458
|
+
|
|
4459
|
+
<button type="button" class="md-top md-icon" data-md-component="top" hidden>
|
|
4460
|
+
|
|
4461
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg>
|
|
4462
|
+
Back to top
|
|
4463
|
+
</button>
|
|
4464
|
+
|
|
4465
|
+
</main>
|
|
4466
|
+
|
|
4467
|
+
<footer class="md-footer">
|
|
4468
|
+
|
|
4469
|
+
|
|
4470
|
+
|
|
4471
|
+
<nav class="md-footer__inner md-grid" aria-label="Footer" >
|
|
4472
|
+
|
|
4473
|
+
|
|
4474
|
+
<a href="../" class="md-footer__link md-footer__link--prev" aria-label="Previous: Core Classes">
|
|
4475
|
+
<div class="md-footer__button md-icon">
|
|
4476
|
+
|
|
4477
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg>
|
|
4478
|
+
</div>
|
|
4479
|
+
<div class="md-footer__title">
|
|
4480
|
+
<span class="md-footer__direction">
|
|
4481
|
+
Previous
|
|
4482
|
+
</span>
|
|
4483
|
+
<div class="md-ellipsis">
|
|
4484
|
+
Core Classes
|
|
4485
|
+
</div>
|
|
4486
|
+
</div>
|
|
4487
|
+
</a>
|
|
4488
|
+
|
|
4489
|
+
|
|
4490
|
+
|
|
4491
|
+
<a href="../network/" class="md-footer__link md-footer__link--next" aria-label="Next: Network">
|
|
4492
|
+
<div class="md-footer__title">
|
|
4493
|
+
<span class="md-footer__direction">
|
|
4494
|
+
Next
|
|
4495
|
+
</span>
|
|
4496
|
+
<div class="md-ellipsis">
|
|
4497
|
+
Network
|
|
4498
|
+
</div>
|
|
4499
|
+
</div>
|
|
4500
|
+
<div class="md-footer__button md-icon">
|
|
4501
|
+
|
|
4502
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"/></svg>
|
|
4503
|
+
</div>
|
|
4504
|
+
</a>
|
|
4505
|
+
|
|
4506
|
+
</nav>
|
|
4507
|
+
|
|
4508
|
+
|
|
4509
|
+
<div class="md-footer-meta md-typeset">
|
|
4510
|
+
<div class="md-footer-meta__inner md-grid">
|
|
4511
|
+
<div class="md-copyright">
|
|
4512
|
+
|
|
4513
|
+
<div class="md-copyright__highlight">
|
|
4514
|
+
Copyright © 2025 Dewayne VanHoozer
|
|
4515
|
+
</div>
|
|
4516
|
+
|
|
4517
|
+
|
|
4518
|
+
Made with
|
|
4519
|
+
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
|
|
4520
|
+
Material for MkDocs
|
|
4521
|
+
</a>
|
|
4522
|
+
|
|
4523
|
+
</div>
|
|
4524
|
+
|
|
4525
|
+
|
|
4526
|
+
<div class="md-social">
|
|
4527
|
+
|
|
4528
|
+
|
|
4529
|
+
|
|
4530
|
+
|
|
4531
|
+
|
|
4532
|
+
<a href="https://github.com/madbomber/robot_lab" target="_blank" rel="noopener" title="RobotLab on GitHub" class="md-social__link">
|
|
4533
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M173.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M252.8 8C114.1 8 8 113.3 8 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C436.2 457.8 504 362.9 504 252 504 113.3 391.5 8 252.8 8M105.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg>
|
|
4534
|
+
</a>
|
|
4535
|
+
|
|
4536
|
+
|
|
4537
|
+
|
|
4538
|
+
|
|
4539
|
+
|
|
4540
|
+
<a href="https://rubygems.org/gems/robot_lab" target="_blank" rel="noopener" title="RobotLab on RubyGems" class="md-social__link">
|
|
4541
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><!--! Font Awesome Free 7.1.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2025 Fonticons, Inc.--><path d="M116.7 33.8c4.5-6.1 11.7-9.8 19.3-9.8h240c7.6 0 14.8 3.6 19.3 9.8l112 152c6.8 9.2 6.1 21.9-1.5 30.4l-232 256c-4.5 5-11 7.9-17.8 7.9s-13.2-2.9-17.8-7.9l-232-256c-7.7-8.5-8.3-21.2-1.5-30.4zm38.5 39.8c-3.3 2.5-4.2 7-2.1 10.5l57.4 95.7L63.3 192c-4.1.3-7.3 3.8-7.3 8s3.2 7.6 7.3 8l192 16h1.3l192-16c4.1-.3 7.3-3.8 7.3-8s-3.2-7.6-7.3-8l-147.2-12.3 57.4-95.6c2.1-3.5 1.2-8.1-2.1-10.5s-7.9-2-10.7 1l-90 97.6-90.1-97.6c-2.8-3-7.4-3.4-10.7-1"/></svg>
|
|
4542
|
+
</a>
|
|
4543
|
+
|
|
4544
|
+
</div>
|
|
4545
|
+
|
|
4546
|
+
</div>
|
|
4547
|
+
</div>
|
|
4548
|
+
</footer>
|
|
4549
|
+
|
|
4550
|
+
</div>
|
|
4551
|
+
<div class="md-dialog" data-md-component="dialog">
|
|
4552
|
+
<div class="md-dialog__inner md-typeset"></div>
|
|
4553
|
+
</div>
|
|
4554
|
+
|
|
4555
|
+
|
|
4556
|
+
|
|
4557
|
+
|
|
4558
|
+
|
|
4559
|
+
<script id="__config" type="application/json">{"annotate": null, "base": "../../..", "features": ["navigation.instant", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "navigation.path", "navigation.indexes", "navigation.top", "navigation.footer", "toc.follow", "search.suggest", "search.highlight", "search.share", "header.autohide", "content.code.copy", "content.code.annotate", "content.tabs.link", "content.tooltips", "content.action.edit", "content.action.view"], "search": "../../../assets/javascripts/workers/search.2c215733.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": null}</script>
|
|
4560
|
+
|
|
4561
|
+
|
|
4562
|
+
<script src="../../../assets/javascripts/bundle.79ae519e.min.js"></script>
|
|
4563
|
+
|
|
4564
|
+
|
|
4565
|
+
</body>
|
|
4566
|
+
</html>
|