agenticros 0.0.1 → 0.1.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.
Files changed (330) hide show
  1. package/LICENSE +192 -0
  2. package/README.md +90 -4
  3. package/dist/commands/config.d.ts +20 -0
  4. package/dist/commands/config.d.ts.map +1 -0
  5. package/dist/commands/config.js +179 -0
  6. package/dist/commands/config.js.map +1 -0
  7. package/dist/commands/doctor.d.ts +33 -0
  8. package/dist/commands/doctor.d.ts.map +1 -0
  9. package/dist/commands/doctor.js +232 -0
  10. package/dist/commands/doctor.js.map +1 -0
  11. package/dist/commands/down.d.ts +15 -0
  12. package/dist/commands/down.d.ts.map +1 -0
  13. package/dist/commands/down.js +91 -0
  14. package/dist/commands/down.js.map +1 -0
  15. package/dist/commands/init.d.ts +21 -0
  16. package/dist/commands/init.d.ts.map +1 -0
  17. package/dist/commands/init.js +259 -0
  18. package/dist/commands/init.js.map +1 -0
  19. package/dist/commands/logs.d.ts +18 -0
  20. package/dist/commands/logs.d.ts.map +1 -0
  21. package/dist/commands/logs.js +67 -0
  22. package/dist/commands/logs.js.map +1 -0
  23. package/dist/commands/status.d.ts +12 -0
  24. package/dist/commands/status.d.ts.map +1 -0
  25. package/dist/commands/status.js +56 -0
  26. package/dist/commands/status.js.map +1 -0
  27. package/dist/commands/up.d.ts +20 -0
  28. package/dist/commands/up.d.ts.map +1 -0
  29. package/dist/commands/up.js +70 -0
  30. package/dist/commands/up.js.map +1 -0
  31. package/dist/index.d.ts +12 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +107 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/menu.d.ts +9 -0
  36. package/dist/menu.d.ts.map +1 -0
  37. package/dist/menu.js +96 -0
  38. package/dist/menu.js.map +1 -0
  39. package/dist/runners/real-robot.d.ts +15 -0
  40. package/dist/runners/real-robot.d.ts.map +1 -0
  41. package/dist/runners/real-robot.js +46 -0
  42. package/dist/runners/real-robot.js.map +1 -0
  43. package/dist/runners/sim.d.ts +19 -0
  44. package/dist/runners/sim.d.ts.map +1 -0
  45. package/dist/runners/sim.js +53 -0
  46. package/dist/runners/sim.js.map +1 -0
  47. package/dist/util/env.d.ts +24 -0
  48. package/dist/util/env.d.ts.map +1 -0
  49. package/dist/util/env.js +53 -0
  50. package/dist/util/env.js.map +1 -0
  51. package/dist/util/logger.d.ts +24 -0
  52. package/dist/util/logger.d.ts.map +1 -0
  53. package/dist/util/logger.js +62 -0
  54. package/dist/util/logger.js.map +1 -0
  55. package/dist/util/paths.d.ts +57 -0
  56. package/dist/util/paths.d.ts.map +1 -0
  57. package/dist/util/paths.js +132 -0
  58. package/dist/util/paths.js.map +1 -0
  59. package/dist/util/pidfile.d.ts +16 -0
  60. package/dist/util/pidfile.d.ts.map +1 -0
  61. package/dist/util/pidfile.js +63 -0
  62. package/dist/util/pidfile.js.map +1 -0
  63. package/dist/util/state.d.ts +26 -0
  64. package/dist/util/state.d.ts.map +1 -0
  65. package/dist/util/state.js +55 -0
  66. package/dist/util/state.js.map +1 -0
  67. package/package.json +60 -1
  68. package/runtime/BUNDLE.json +11 -0
  69. package/runtime/LICENSE +192 -0
  70. package/runtime/README.md +273 -0
  71. package/runtime/docs/architecture.md +366 -0
  72. package/runtime/docs/cli.md +140 -0
  73. package/runtime/docs/memory.md +292 -0
  74. package/runtime/docs/robot-setup.md +347 -0
  75. package/runtime/package.json +28 -0
  76. package/runtime/packages/agenticros/agenticros-agenticros-0.0.1.tgz +0 -0
  77. package/runtime/packages/agenticros/openclaw.plugin.json +451 -0
  78. package/runtime/packages/agenticros/package.json +41 -0
  79. package/runtime/packages/agenticros/src/camera-snapshot-cache.ts +59 -0
  80. package/runtime/packages/agenticros/src/camera-snapshot-routes.ts +44 -0
  81. package/runtime/packages/agenticros/src/commands/estop.ts +41 -0
  82. package/runtime/packages/agenticros/src/commands/transport.ts +195 -0
  83. package/runtime/packages/agenticros/src/config-file.ts +136 -0
  84. package/runtime/packages/agenticros/src/config-page.ts +498 -0
  85. package/runtime/packages/agenticros/src/context/robot-context.ts +373 -0
  86. package/runtime/packages/agenticros/src/depth.ts +313 -0
  87. package/runtime/packages/agenticros/src/describer.ts +157 -0
  88. package/runtime/packages/agenticros/src/image-binary-trim.ts +16 -0
  89. package/runtime/packages/agenticros/src/index.ts +85 -0
  90. package/runtime/packages/agenticros/src/landing-page.ts +38 -0
  91. package/runtime/packages/agenticros/src/memory.ts +44 -0
  92. package/runtime/packages/agenticros/src/plugin-api.ts +173 -0
  93. package/runtime/packages/agenticros/src/plugin-image-base64.ts +69 -0
  94. package/runtime/packages/agenticros/src/preflight.ts +110 -0
  95. package/runtime/packages/agenticros/src/routes.ts +328 -0
  96. package/runtime/packages/agenticros/src/safety/validator.ts +43 -0
  97. package/runtime/packages/agenticros/src/service.ts +359 -0
  98. package/runtime/packages/agenticros/src/skill-api.ts +65 -0
  99. package/runtime/packages/agenticros/src/skill-loader.ts +146 -0
  100. package/runtime/packages/agenticros/src/teleop/page.ts +498 -0
  101. package/runtime/packages/agenticros/src/teleop/routes.ts +650 -0
  102. package/runtime/packages/agenticros/src/tools/index.ts +26 -0
  103. package/runtime/packages/agenticros/src/tools/ros2-action.ts +50 -0
  104. package/runtime/packages/agenticros/src/tools/ros2-camera.ts +221 -0
  105. package/runtime/packages/agenticros/src/tools/ros2-depth-distance.ts +58 -0
  106. package/runtime/packages/agenticros/src/tools/ros2-introspect.ts +62 -0
  107. package/runtime/packages/agenticros/src/tools/ros2-memory.ts +158 -0
  108. package/runtime/packages/agenticros/src/tools/ros2-param.ts +87 -0
  109. package/runtime/packages/agenticros/src/tools/ros2-publish.ts +52 -0
  110. package/runtime/packages/agenticros/src/tools/ros2-service.ts +46 -0
  111. package/runtime/packages/agenticros/src/tools/ros2-subscribe.ts +71 -0
  112. package/runtime/packages/agenticros/tsconfig.json +9 -0
  113. package/runtime/packages/agenticros-claude-code/README.md +260 -0
  114. package/runtime/packages/agenticros-claude-code/config.example.json +9 -0
  115. package/runtime/packages/agenticros-claude-code/dist/config.d.ts +8 -0
  116. package/runtime/packages/agenticros-claude-code/dist/config.d.ts.map +1 -0
  117. package/runtime/packages/agenticros-claude-code/dist/config.js +93 -0
  118. package/runtime/packages/agenticros-claude-code/dist/config.js.map +1 -0
  119. package/runtime/packages/agenticros-claude-code/dist/depth.d.ts +20 -0
  120. package/runtime/packages/agenticros-claude-code/dist/depth.d.ts.map +1 -0
  121. package/runtime/packages/agenticros-claude-code/dist/depth.js +126 -0
  122. package/runtime/packages/agenticros-claude-code/dist/depth.js.map +1 -0
  123. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.d.ts +6 -0
  124. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.d.ts.map +1 -0
  125. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.js +36 -0
  126. package/runtime/packages/agenticros-claude-code/dist/find-object/coco-classes.js.map +1 -0
  127. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.d.ts +33 -0
  128. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.d.ts.map +1 -0
  129. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.js +134 -0
  130. package/runtime/packages/agenticros-claude-code/dist/find-object/find-object.js.map +1 -0
  131. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.d.ts +43 -0
  132. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.d.ts.map +1 -0
  133. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.js +73 -0
  134. package/runtime/packages/agenticros-claude-code/dist/follow-me/controller.js.map +1 -0
  135. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.d.ts +58 -0
  136. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.d.ts.map +1 -0
  137. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.js +251 -0
  138. package/runtime/packages/agenticros-claude-code/dist/follow-me/detector.js.map +1 -0
  139. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.d.ts +61 -0
  140. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.d.ts.map +1 -0
  141. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.js +268 -0
  142. package/runtime/packages/agenticros-claude-code/dist/follow-me/loop.js.map +1 -0
  143. package/runtime/packages/agenticros-claude-code/dist/index.d.ts +3 -0
  144. package/runtime/packages/agenticros-claude-code/dist/index.d.ts.map +1 -0
  145. package/runtime/packages/agenticros-claude-code/dist/index.js +111 -0
  146. package/runtime/packages/agenticros-claude-code/dist/index.js.map +1 -0
  147. package/runtime/packages/agenticros-claude-code/dist/memory.d.ts +17 -0
  148. package/runtime/packages/agenticros-claude-code/dist/memory.d.ts.map +1 -0
  149. package/runtime/packages/agenticros-claude-code/dist/memory.js +44 -0
  150. package/runtime/packages/agenticros-claude-code/dist/memory.js.map +1 -0
  151. package/runtime/packages/agenticros-claude-code/dist/safety.d.ts +10 -0
  152. package/runtime/packages/agenticros-claude-code/dist/safety.d.ts.map +1 -0
  153. package/runtime/packages/agenticros-claude-code/dist/safety.js +34 -0
  154. package/runtime/packages/agenticros-claude-code/dist/safety.js.map +1 -0
  155. package/runtime/packages/agenticros-claude-code/dist/tools.d.ts +36 -0
  156. package/runtime/packages/agenticros-claude-code/dist/tools.d.ts.map +1 -0
  157. package/runtime/packages/agenticros-claude-code/dist/tools.js +777 -0
  158. package/runtime/packages/agenticros-claude-code/dist/tools.js.map +1 -0
  159. package/runtime/packages/agenticros-claude-code/dist/transport.d.ts +17 -0
  160. package/runtime/packages/agenticros-claude-code/dist/transport.d.ts.map +1 -0
  161. package/runtime/packages/agenticros-claude-code/dist/transport.js +46 -0
  162. package/runtime/packages/agenticros-claude-code/dist/transport.js.map +1 -0
  163. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.d.ts +42 -0
  164. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.d.ts.map +1 -0
  165. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.js +114 -0
  166. package/runtime/packages/agenticros-claude-code/dist/zero-shot/detector.js.map +1 -0
  167. package/runtime/packages/agenticros-claude-code/package.json +29 -0
  168. package/runtime/packages/agenticros-claude-code/src/config.ts +96 -0
  169. package/runtime/packages/agenticros-claude-code/src/depth.ts +173 -0
  170. package/runtime/packages/agenticros-claude-code/src/find-object/coco-classes.ts +38 -0
  171. package/runtime/packages/agenticros-claude-code/src/find-object/find-object.ts +190 -0
  172. package/runtime/packages/agenticros-claude-code/src/follow-me/controller.ts +109 -0
  173. package/runtime/packages/agenticros-claude-code/src/follow-me/depth-loop.ts +420 -0
  174. package/runtime/packages/agenticros-claude-code/src/follow-me/detector.ts +303 -0
  175. package/runtime/packages/agenticros-claude-code/src/follow-me/loop.ts +330 -0
  176. package/runtime/packages/agenticros-claude-code/src/index.ts +125 -0
  177. package/runtime/packages/agenticros-claude-code/src/memory.ts +51 -0
  178. package/runtime/packages/agenticros-claude-code/src/safety.ts +44 -0
  179. package/runtime/packages/agenticros-claude-code/src/tools.ts +891 -0
  180. package/runtime/packages/agenticros-claude-code/src/transport.ts +58 -0
  181. package/runtime/packages/agenticros-claude-code/src/zero-shot/detector.ts +169 -0
  182. package/runtime/packages/agenticros-claude-code/tsconfig.json +9 -0
  183. package/runtime/packages/agenticros-claude-code/yolo-debug.mjs +106 -0
  184. package/runtime/packages/agenticros-gemini/README.md +139 -0
  185. package/runtime/packages/agenticros-gemini/package.json +28 -0
  186. package/runtime/packages/agenticros-gemini/scripts/smoke-api.mjs +42 -0
  187. package/runtime/packages/agenticros-gemini/src/chat.ts +139 -0
  188. package/runtime/packages/agenticros-gemini/src/config.ts +92 -0
  189. package/runtime/packages/agenticros-gemini/src/depth.ts +173 -0
  190. package/runtime/packages/agenticros-gemini/src/index.ts +58 -0
  191. package/runtime/packages/agenticros-gemini/src/memory.ts +32 -0
  192. package/runtime/packages/agenticros-gemini/src/safety.ts +44 -0
  193. package/runtime/packages/agenticros-gemini/src/tools.ts +516 -0
  194. package/runtime/packages/agenticros-gemini/src/transport.ts +58 -0
  195. package/runtime/packages/agenticros-gemini/tsconfig.json +8 -0
  196. package/runtime/packages/core/package.json +47 -0
  197. package/runtime/packages/core/src/banner.ts +32 -0
  198. package/runtime/packages/core/src/cmd-vel-twist.ts +31 -0
  199. package/runtime/packages/core/src/config.ts +279 -0
  200. package/runtime/packages/core/src/index.ts +54 -0
  201. package/runtime/packages/core/src/memory/__tests__/factory.test.ts +70 -0
  202. package/runtime/packages/core/src/memory/__tests__/local-provider.test.ts +195 -0
  203. package/runtime/packages/core/src/memory/__tests__/mem0-provider.test.ts +192 -0
  204. package/runtime/packages/core/src/memory/__tests__/smart-defaults.test.ts +46 -0
  205. package/runtime/packages/core/src/memory/factory.ts +63 -0
  206. package/runtime/packages/core/src/memory/index.ts +10 -0
  207. package/runtime/packages/core/src/memory/local/provider.ts +229 -0
  208. package/runtime/packages/core/src/memory/mem0/provider.ts +379 -0
  209. package/runtime/packages/core/src/memory/types.ts +96 -0
  210. package/runtime/packages/core/src/topic-utils.ts +95 -0
  211. package/runtime/packages/core/src/transport/factory.ts +47 -0
  212. package/runtime/packages/core/src/transport/local/conversion.ts +333 -0
  213. package/runtime/packages/core/src/transport/local/entities.ts +129 -0
  214. package/runtime/packages/core/src/transport/local/transport.ts +406 -0
  215. package/runtime/packages/core/src/transport/rosbridge/actions.ts +81 -0
  216. package/runtime/packages/core/src/transport/rosbridge/adapter.ts +157 -0
  217. package/runtime/packages/core/src/transport/rosbridge/client.ts +438 -0
  218. package/runtime/packages/core/src/transport/rosbridge/services.ts +41 -0
  219. package/runtime/packages/core/src/transport/rosbridge/topics.ts +60 -0
  220. package/runtime/packages/core/src/transport/rosbridge/types.ts +118 -0
  221. package/runtime/packages/core/src/transport/transport.ts +77 -0
  222. package/runtime/packages/core/src/transport/types.ts +137 -0
  223. package/runtime/packages/core/src/transport/webrtc/signaling-client.ts +196 -0
  224. package/runtime/packages/core/src/transport/webrtc/signaling-types.ts +130 -0
  225. package/runtime/packages/core/src/transport/webrtc/transport.ts +516 -0
  226. package/runtime/packages/core/src/transport/zenoh/adapter.ts +357 -0
  227. package/runtime/packages/core/src/transport/zenoh/cdr.ts +183 -0
  228. package/runtime/packages/core/src/transport/zenoh/keys.ts +51 -0
  229. package/runtime/packages/core/tsconfig.json +9 -0
  230. package/runtime/packages/ros-camera/package.json +30 -0
  231. package/runtime/packages/ros-camera/src/index.ts +13 -0
  232. package/runtime/packages/ros-camera/src/snapshot.ts +372 -0
  233. package/runtime/packages/ros-camera/tsconfig.json +9 -0
  234. package/runtime/pnpm-lock.yaml +5260 -0
  235. package/runtime/pnpm-workspace.yaml +2 -0
  236. package/runtime/ros2_ws/src/agenticros_agent/agenticros_agent/__init__.py +0 -0
  237. package/runtime/ros2_ws/src/agenticros_agent/agenticros_agent/agent_node.py +561 -0
  238. package/runtime/ros2_ws/src/agenticros_agent/package.xml +25 -0
  239. package/runtime/ros2_ws/src/agenticros_agent/resource/agenticros_agent +0 -0
  240. package/runtime/ros2_ws/src/agenticros_agent/setup.cfg +4 -0
  241. package/runtime/ros2_ws/src/agenticros_agent/setup.py +25 -0
  242. package/runtime/ros2_ws/src/agenticros_bringup/README.md +128 -0
  243. package/runtime/ros2_ws/src/agenticros_bringup/agenticros_bringup/__init__.py +1 -0
  244. package/runtime/ros2_ws/src/agenticros_bringup/agenticros_bringup/cmd_vel_relay.py +33 -0
  245. package/runtime/ros2_ws/src/agenticros_bringup/launch/cmd_vel_bridge.launch.py +58 -0
  246. package/runtime/ros2_ws/src/agenticros_bringup/launch/gazebo_turtlebot3.launch.py +69 -0
  247. package/runtime/ros2_ws/src/agenticros_bringup/launch/mode_a_gazebo.launch.py +55 -0
  248. package/runtime/ros2_ws/src/agenticros_bringup/launch/mode_a_gazebo_rviz.launch.py +48 -0
  249. package/runtime/ros2_ws/src/agenticros_bringup/launch/realsense_rosbridge.launch.py +154 -0
  250. package/runtime/ros2_ws/src/agenticros_bringup/launch/rosbridge_gazebo.launch.py +54 -0
  251. package/runtime/ros2_ws/src/agenticros_bringup/launch/rviz.launch.py +38 -0
  252. package/runtime/ros2_ws/src/agenticros_bringup/launch/turtlebot3_gazebo_rviz.launch.py +42 -0
  253. package/runtime/ros2_ws/src/agenticros_bringup/package.xml +24 -0
  254. package/runtime/ros2_ws/src/agenticros_bringup/resource/agenticros_bringup +0 -0
  255. package/runtime/ros2_ws/src/agenticros_bringup/rviz/turtlebot3_agenticros.rviz +174 -0
  256. package/runtime/ros2_ws/src/agenticros_bringup/setup.cfg +4 -0
  257. package/runtime/ros2_ws/src/agenticros_bringup/setup.py +28 -0
  258. package/runtime/ros2_ws/src/agenticros_discovery/agenticros_discovery/__init__.py +0 -0
  259. package/runtime/ros2_ws/src/agenticros_discovery/agenticros_discovery/discovery_node.py +172 -0
  260. package/runtime/ros2_ws/src/agenticros_discovery/package.xml +22 -0
  261. package/runtime/ros2_ws/src/agenticros_discovery/resource/agenticros_discovery +0 -0
  262. package/runtime/ros2_ws/src/agenticros_discovery/setup.cfg +5 -0
  263. package/runtime/ros2_ws/src/agenticros_discovery/setup.py +25 -0
  264. package/runtime/ros2_ws/src/agenticros_follow_me/README.md +66 -0
  265. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/__init__.py +1 -0
  266. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/__main__.py +5 -0
  267. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/follow_me_node.py +278 -0
  268. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/follower_controller.py +631 -0
  269. package/runtime/ros2_ws/src/agenticros_follow_me/agenticros_follow_me/person_tracker.py +635 -0
  270. package/runtime/ros2_ws/src/agenticros_follow_me/package.xml +22 -0
  271. package/runtime/ros2_ws/src/agenticros_follow_me/resource/agenticros_follow_me +0 -0
  272. package/runtime/ros2_ws/src/agenticros_follow_me/setup.py +25 -0
  273. package/runtime/ros2_ws/src/agenticros_msgs/CMakeLists.txt +26 -0
  274. package/runtime/ros2_ws/src/agenticros_msgs/msg/CapabilityManifest.msg +9 -0
  275. package/runtime/ros2_ws/src/agenticros_msgs/package.xml +22 -0
  276. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeGetStatus.srv +11 -0
  277. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeSetDistance.srv +4 -0
  278. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeSetTarget.srv +6 -0
  279. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeStart.srv +5 -0
  280. package/runtime/ros2_ws/src/agenticros_msgs/srv/FollowMeStop.srv +3 -0
  281. package/runtime/ros2_ws/src/agenticros_msgs/srv/GetCapabilities.srv +5 -0
  282. package/runtime/ros2_ws/src/agenticros_sim/CMakeLists.txt +24 -0
  283. package/runtime/ros2_ws/src/agenticros_sim/README.md +120 -0
  284. package/runtime/ros2_ws/src/agenticros_sim/config/agenticros-sim.config.json +28 -0
  285. package/runtime/ros2_ws/src/agenticros_sim/config/amr_bridge.yaml +111 -0
  286. package/runtime/ros2_ws/src/agenticros_sim/config/amr_view.rviz +172 -0
  287. package/runtime/ros2_ws/src/agenticros_sim/env-hooks/gz_resource_path.dsv.in +3 -0
  288. package/runtime/ros2_ws/src/agenticros_sim/env-hooks/gz_resource_path.sh.in +7 -0
  289. package/runtime/ros2_ws/src/agenticros_sim/launch/sim_amr.launch.py +159 -0
  290. package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.config +17 -0
  291. package/runtime/ros2_ws/src/agenticros_sim/models/agenticros_amr/model.sdf +244 -0
  292. package/runtime/ros2_ws/src/agenticros_sim/package.xml +27 -0
  293. package/runtime/ros2_ws/src/agenticros_sim/worlds/agenticros_indoor.sdf +183 -0
  294. package/runtime/scripts/activate_workspace.sh +285 -0
  295. package/runtime/scripts/agenticros-describer.policy.yaml +96 -0
  296. package/runtime/scripts/agenticros-proxy.cjs +99 -0
  297. package/runtime/scripts/agenticros-rosbridge.policy.yaml +62 -0
  298. package/runtime/scripts/check-cli-tarball-size.mjs +42 -0
  299. package/runtime/scripts/configure_agenticros.sh +200 -0
  300. package/runtime/scripts/configure_for_sim.sh +64 -0
  301. package/runtime/scripts/fix-openclaw-control-ui-path.sh +20 -0
  302. package/runtime/scripts/install_cli.sh +94 -0
  303. package/runtime/scripts/install_rosbridge_from_source.sh +67 -0
  304. package/runtime/scripts/lib/agenticros-banner.sh +28 -0
  305. package/runtime/scripts/onboard_robot.sh +75 -0
  306. package/runtime/scripts/openai.policy.yaml +77 -0
  307. package/runtime/scripts/openclaw-dashboard-url.cjs +49 -0
  308. package/runtime/scripts/pack-runtime.mjs +245 -0
  309. package/runtime/scripts/run_demo_native.sh +43 -0
  310. package/runtime/scripts/run_nemoclaw_host_stack.sh +91 -0
  311. package/runtime/scripts/run_robot_rosbridge.sh +36 -0
  312. package/runtime/scripts/sandbox_rosbridge_relay.py +137 -0
  313. package/runtime/scripts/setup-openclaw-local.cjs +75 -0
  314. package/runtime/scripts/setup_gateway_plugin.sh +329 -0
  315. package/runtime/scripts/setup_robot.sh +113 -0
  316. package/runtime/scripts/setup_workspace.sh +484 -0
  317. package/runtime/scripts/sim/run_sim.sh +146 -0
  318. package/runtime/scripts/smoke_test_nemoclaw.sh +123 -0
  319. package/runtime/scripts/start_demo.sh +55 -0
  320. package/runtime/scripts/sync-skill-tools.mjs +335 -0
  321. package/runtime/scripts/test-follow-me-sim.mjs +135 -0
  322. package/runtime/scripts/test-mcp-e2e.mjs +184 -0
  323. package/runtime/scripts/test-rclnodejs.mts +129 -0
  324. package/runtime/scripts/use-openclaw-2026.2.26.sh +19 -0
  325. package/runtime/scripts/use-openclaw-2026.3.11.sh +19 -0
  326. package/runtime/scripts/zenoh-bridge-ros2dds-robot.json5 +30 -0
  327. package/runtime/scripts/zenohd-agenticros.json5 +11 -0
  328. package/runtime/scripts/zenohd-rosclaw.json5 +11 -0
  329. package/runtime/tsconfig.base.json +19 -0
  330. package/index.js +0 -6
@@ -0,0 +1,195 @@
1
+ import type { OpenClawPluginApi } from "../plugin-api.js";
2
+ import type { AgenticROSConfig } from "@agenticros/core";
3
+ import type { TransportConfig } from "@agenticros/core";
4
+ import { getTransport, getTransportMode, switchTransport } from "../service.js";
5
+ import { clearDiscoveryCache } from "../context/robot-context.js";
6
+
7
+ const VALID_MODES = ["rosbridge", "local", "webrtc", "zenoh"] as const;
8
+ type Mode = (typeof VALID_MODES)[number];
9
+
10
+ function isValidMode(value: string): value is Mode {
11
+ return (VALID_MODES as readonly string[]).includes(value);
12
+ }
13
+
14
+ /**
15
+ * Register the /transport command for runtime transport switching.
16
+ */
17
+ export function registerTransportCommand(api: OpenClawPluginApi, config: AgenticROSConfig): void {
18
+ api.registerCommand({
19
+ name: "transport",
20
+ description: "Show or switch the ROS2 transport mode (rosbridge, webrtc, local, zenoh)",
21
+
22
+ async handler(ctx) {
23
+ const args = (ctx.args ?? "").trim();
24
+
25
+ // No args → show current status
26
+ if (!args) {
27
+ return showStatus();
28
+ }
29
+
30
+ // Parse mode from first arg
31
+ const parts = args.split(/\s+/);
32
+ const modeArg = parts[0];
33
+
34
+ if (!isValidMode(modeArg)) {
35
+ return {
36
+ text: `Unknown transport mode: "${modeArg}". Valid modes: ${VALID_MODES.join(", ")}`,
37
+ };
38
+ }
39
+
40
+ // Build TransportConfig from base config + overrides
41
+ let transportConfig: TransportConfig;
42
+ try {
43
+ transportConfig = buildTransportConfig(modeArg, parts.slice(1), config);
44
+ } catch (err) {
45
+ return { text: `Invalid arguments: ${String(err)}` };
46
+ }
47
+
48
+ // Perform the switch
49
+ try {
50
+ await switchTransport(transportConfig, api.logger);
51
+ clearDiscoveryCache();
52
+ return { text: formatSwitchSuccess(transportConfig) };
53
+ } catch (err) {
54
+ return {
55
+ text: `Failed to switch transport: ${String(err)}\nYou can retry with /transport ${modeArg}`,
56
+ };
57
+ }
58
+ },
59
+ });
60
+ }
61
+
62
+ function showStatus(): { text: string } {
63
+ const mode = getTransportMode();
64
+
65
+ if (!mode) {
66
+ return { text: "Transport: not active" };
67
+ }
68
+
69
+ try {
70
+ const transport = getTransport();
71
+ const status = transport.getStatus();
72
+ return { text: `Transport: ${mode} (${status})` };
73
+ } catch {
74
+ return { text: `Transport: ${mode} (unknown status)` };
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Build a TransportConfig from base config + positional/key=value overrides.
80
+ */
81
+ function buildTransportConfig(
82
+ mode: Mode,
83
+ overrides: string[],
84
+ config: AgenticROSConfig,
85
+ ): TransportConfig {
86
+ switch (mode) {
87
+ case "rosbridge": {
88
+ const base = { ...config.rosbridge };
89
+
90
+ for (const arg of overrides) {
91
+ if (arg.startsWith("ws://") || arg.startsWith("wss://")) {
92
+ // Positional URL override
93
+ base.url = arg;
94
+ } else if (arg.includes("=")) {
95
+ const [key, ...rest] = arg.split("=");
96
+ const value = rest.join("=");
97
+ applyOverride(base, key, value);
98
+ } else {
99
+ throw new Error(`Unexpected argument: "${arg}"`);
100
+ }
101
+ }
102
+
103
+ return { mode: "rosbridge", rosbridge: base };
104
+ }
105
+
106
+ case "webrtc": {
107
+ const base = { ...config.webrtc };
108
+
109
+ for (const arg of overrides) {
110
+ if (!arg.includes("=")) {
111
+ throw new Error(`Unexpected argument: "${arg}". Use key=value format.`);
112
+ }
113
+ const [key, ...rest] = arg.split("=");
114
+ const value = rest.join("=");
115
+ applyOverride(base, key, value);
116
+ }
117
+
118
+ return { mode: "webrtc", webrtc: base };
119
+ }
120
+
121
+ case "local": {
122
+ const base = { ...config.local };
123
+
124
+ for (const arg of overrides) {
125
+ if (!arg.includes("=")) {
126
+ throw new Error(`Unexpected argument: "${arg}". Use key=value format.`);
127
+ }
128
+ const [key, ...rest] = arg.split("=");
129
+ const value = rest.join("=");
130
+ applyOverride(base, key, value);
131
+ }
132
+
133
+ return { mode: "local", local: base };
134
+ }
135
+
136
+ case "zenoh": {
137
+ const base = { ...config.zenoh };
138
+
139
+ for (const arg of overrides) {
140
+ if (arg.includes("=")) {
141
+ const [key, ...rest] = arg.split("=");
142
+ const value = rest.join("=");
143
+ applyOverride(base as Record<string, unknown>, key, value);
144
+ } else if (arg.startsWith("ws://") || arg.startsWith("wss://") || /^[a-z]+\/\S+/.test(arg)) {
145
+ base.routerEndpoint = arg;
146
+ } else {
147
+ throw new Error(`Unexpected argument: "${arg}". Use key=value or router endpoint.`);
148
+ }
149
+ }
150
+
151
+ return { mode: "zenoh", zenoh: base };
152
+ }
153
+ }
154
+ }
155
+
156
+ /** Apply a key=value override to a config object. */
157
+ function applyOverride(obj: Record<string, unknown>, key: string, value: string): void {
158
+ if (!(key in obj)) {
159
+ throw new Error(`Unknown config key: "${key}"`);
160
+ }
161
+
162
+ const existing = obj[key];
163
+
164
+ // Coerce value to match existing type
165
+ if (typeof existing === "number") {
166
+ const num = Number(value);
167
+ if (Number.isNaN(num)) {
168
+ throw new Error(`"${key}" expects a number, got "${value}"`);
169
+ }
170
+ obj[key] = num;
171
+ } else if (typeof existing === "boolean") {
172
+ obj[key] = value === "true";
173
+ } else {
174
+ obj[key] = value;
175
+ }
176
+ }
177
+
178
+ function formatSwitchSuccess(config: TransportConfig): string {
179
+ switch (config.mode) {
180
+ case "rosbridge":
181
+ return `Switched to rosbridge transport (${config.rosbridge.url})`;
182
+ case "webrtc": {
183
+ const robotId = config.webrtc.robotId;
184
+ return `Switched to webrtc transport (robotId: ${robotId})`;
185
+ }
186
+ case "local":
187
+ return `Switched to local transport (domainId: ${config.local?.domainId ?? 0})`;
188
+ case "zenoh":
189
+ return `Switched to zenoh transport (${config.zenoh.routerEndpoint})`;
190
+ default: {
191
+ const _: never = config;
192
+ return `Switched to ${(_ as TransportConfig).mode} transport`;
193
+ }
194
+ }
195
+ }
@@ -0,0 +1,136 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import os from "node:os";
4
+ import type { AgenticROSConfig } from "@agenticros/core";
5
+ import { parseConfig } from "@agenticros/core";
6
+
7
+ /**
8
+ * Resolve the OpenClaw config file path.
9
+ * Same convention as scripts/configure_agenticros.sh: OPENCLAW_CONFIG or ~/.openclaw/openclaw.json
10
+ */
11
+ export function getOpenClawConfigPath(): string {
12
+ const env = process.env.OPENCLAW_CONFIG;
13
+ if (env && env.length > 0) {
14
+ return path.resolve(env);
15
+ }
16
+ return path.join(os.homedir(), ".openclaw", "openclaw.json");
17
+ }
18
+
19
+ export class ConfigFileError extends Error {
20
+ constructor(
21
+ message: string,
22
+ public readonly code?: "ENOENT" | "EACCES" | "INVALID_JSON",
23
+ ) {
24
+ super(message);
25
+ this.name = "ConfigFileError";
26
+ }
27
+ }
28
+
29
+ /**
30
+ * Read and parse the full OpenClaw config file.
31
+ * @throws ConfigFileError if file is missing or invalid JSON
32
+ */
33
+ export function readOpenClawConfig(): Record<string, unknown> {
34
+ const configPath = getOpenClawConfigPath();
35
+ let raw: string;
36
+ try {
37
+ raw = fs.readFileSync(configPath, "utf8");
38
+ } catch (err) {
39
+ const nodeErr = err as NodeJS.ErrnoException;
40
+ if (nodeErr.code === "ENOENT") {
41
+ throw new ConfigFileError(
42
+ `Config file not found: ${configPath}. Create it by running OpenClaw configure once, or set OPENCLAW_CONFIG.`,
43
+ "ENOENT",
44
+ );
45
+ }
46
+ if (nodeErr.code === "EACCES") {
47
+ throw new ConfigFileError(
48
+ `Cannot read config file: ${configPath}. Check permissions.`,
49
+ "EACCES",
50
+ );
51
+ }
52
+ throw new ConfigFileError(
53
+ nodeErr.message ?? "Failed to read config file",
54
+ "EACCES",
55
+ );
56
+ }
57
+ try {
58
+ const parsed = JSON.parse(raw) as unknown;
59
+ if (parsed !== null && typeof parsed === "object") {
60
+ return parsed as Record<string, unknown>;
61
+ }
62
+ } catch {
63
+ throw new ConfigFileError("Config file is not valid JSON.", "INVALID_JSON");
64
+ }
65
+ throw new ConfigFileError("Config file is not valid JSON.", "INVALID_JSON");
66
+ }
67
+
68
+ /**
69
+ * Ensure plugins.entries.agenticros exists in the config object (mutates in place).
70
+ */
71
+ function ensureAgenticROSEntry(full: Record<string, unknown>): void {
72
+ if (!full.plugins || typeof full.plugins !== "object") {
73
+ full.plugins = {};
74
+ }
75
+ const plugins = full.plugins as Record<string, unknown>;
76
+ if (!plugins.entries || typeof plugins.entries !== "object") {
77
+ plugins.entries = {};
78
+ }
79
+ const entries = plugins.entries as Record<string, unknown>;
80
+ if (!entries.agenticros || typeof entries.agenticros !== "object") {
81
+ entries.agenticros = {};
82
+ }
83
+ }
84
+
85
+ /**
86
+ * Write AgenticROS plugin config into the OpenClaw config file.
87
+ * Reads the file, sets plugins.entries.agenticros.config, writes back.
88
+ * @throws ConfigFileError on read/write errors
89
+ */
90
+ export function writeAgenticROSConfig(pluginConfig: Record<string, unknown>): void {
91
+ const configPath = getOpenClawConfigPath();
92
+ const full = readOpenClawConfig();
93
+ ensureAgenticROSEntry(full);
94
+ const plugins = full.plugins as Record<string, unknown>;
95
+ const entries = plugins.entries as Record<string, unknown>;
96
+ const agenticrosEntry = entries.agenticros as Record<string, unknown>;
97
+ agenticrosEntry.config = pluginConfig;
98
+
99
+ try {
100
+ fs.writeFileSync(configPath, JSON.stringify(full, null, 2), "utf8");
101
+ } catch (err) {
102
+ const nodeErr = err as NodeJS.ErrnoException;
103
+ if (nodeErr.code === "EACCES" || nodeErr.code === "EPERM") {
104
+ throw new ConfigFileError(
105
+ `Cannot write config file: ${configPath}. Check permissions.`,
106
+ "EACCES",
107
+ );
108
+ }
109
+ throw new ConfigFileError(
110
+ nodeErr.message ?? "Failed to write config file",
111
+ "EACCES",
112
+ );
113
+ }
114
+ }
115
+
116
+ /**
117
+ * Read the current AgenticROS plugin config from the OpenClaw config file.
118
+ * Use this when handling requests so teleop/tools use the latest saved config (e.g. robot.namespace)
119
+ * without requiring a gateway restart.
120
+ * Preserves webrtc.robotKey from the file if set.
121
+ */
122
+ export function readAgenticROSConfigFromFile(): AgenticROSConfig {
123
+ const full = readOpenClawConfig();
124
+ const plugins = full.plugins as Record<string, unknown> | undefined;
125
+ const entries = plugins?.entries as Record<string, unknown> | undefined;
126
+ const agenticrosEntry = entries?.agenticros as Record<string, unknown> | undefined;
127
+ const raw = agenticrosEntry?.config;
128
+ const obj = raw && typeof raw === "object" && raw !== null ? (raw as Record<string, unknown>) : {};
129
+ const parsed = parseConfig(obj);
130
+ const existing = agenticrosEntry?.config as Record<string, unknown> | undefined;
131
+ const existingKey = (existing?.webrtc as Record<string, unknown> | undefined)?.robotKey;
132
+ if (typeof existingKey === "string" && existingKey.length > 0) {
133
+ parsed.webrtc.robotKey = existingKey;
134
+ }
135
+ return parsed;
136
+ }