@agenticros/core 0.5.0
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.
- package/LICENSE +192 -0
- package/README.md +88 -0
- package/dist/banner.d.ts +7 -0
- package/dist/banner.d.ts.map +1 -0
- package/dist/banner.js +25 -0
- package/dist/banner.js.map +1 -0
- package/dist/capabilities.d.ts +101 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +240 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/cmd-vel-twist.d.ts +9 -0
- package/dist/cmd-vel-twist.d.ts.map +1 -0
- package/dist/cmd-vel-twist.js +32 -0
- package/dist/cmd-vel-twist.js.map +1 -0
- package/dist/config.d.ts +1195 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +427 -0
- package/dist/config.js.map +1 -0
- package/dist/discovery.d.ts +113 -0
- package/dist/discovery.d.ts.map +1 -0
- package/dist/discovery.js +141 -0
- package/dist/discovery.js.map +1 -0
- package/dist/find-robots-for.d.ts +85 -0
- package/dist/find-robots-for.d.ts.map +1 -0
- package/dist/find-robots-for.js +120 -0
- package/dist/find-robots-for.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/factory.d.ts +18 -0
- package/dist/memory/factory.d.ts.map +1 -0
- package/dist/memory/factory.js +51 -0
- package/dist/memory/factory.js.map +1 -0
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +2 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/local/provider.d.ts +29 -0
- package/dist/memory/local/provider.d.ts.map +1 -0
- package/dist/memory/local/provider.js +202 -0
- package/dist/memory/local/provider.js.map +1 -0
- package/dist/memory/mem0/provider.d.ts +66 -0
- package/dist/memory/mem0/provider.d.ts.map +1 -0
- package/dist/memory/mem0/provider.js +310 -0
- package/dist/memory/mem0/provider.js.map +1 -0
- package/dist/memory/types.d.ts +91 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +10 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/mission-registry.d.ts +94 -0
- package/dist/mission-registry.d.ts.map +1 -0
- package/dist/mission-registry.js +123 -0
- package/dist/mission-registry.js.map +1 -0
- package/dist/mission-transcript-sink.d.ts +33 -0
- package/dist/mission-transcript-sink.d.ts.map +1 -0
- package/dist/mission-transcript-sink.js +76 -0
- package/dist/mission-transcript-sink.js.map +1 -0
- package/dist/mission.d.ts +281 -0
- package/dist/mission.d.ts.map +1 -0
- package/dist/mission.js +331 -0
- package/dist/mission.js.map +1 -0
- package/dist/planner/index.d.ts +84 -0
- package/dist/planner/index.d.ts.map +1 -0
- package/dist/planner/index.js +486 -0
- package/dist/planner/index.js.map +1 -0
- package/dist/robots.d.ts +133 -0
- package/dist/robots.d.ts.map +1 -0
- package/dist/robots.js +220 -0
- package/dist/robots.js.map +1 -0
- package/dist/topic-utils.d.ts +47 -0
- package/dist/topic-utils.d.ts.map +1 -0
- package/dist/topic-utils.js +136 -0
- package/dist/topic-utils.js.map +1 -0
- package/dist/transport/factory.d.ts +10 -0
- package/dist/transport/factory.d.ts.map +1 -0
- package/dist/transport/factory.js +40 -0
- package/dist/transport/factory.js.map +1 -0
- package/dist/transport/local/conversion.d.ts +30 -0
- package/dist/transport/local/conversion.d.ts.map +1 -0
- package/dist/transport/local/conversion.js +340 -0
- package/dist/transport/local/conversion.js.map +1 -0
- package/dist/transport/local/entities.d.ts +34 -0
- package/dist/transport/local/entities.d.ts.map +1 -0
- package/dist/transport/local/entities.js +108 -0
- package/dist/transport/local/entities.js.map +1 -0
- package/dist/transport/local/transport.d.ts +53 -0
- package/dist/transport/local/transport.d.ts.map +1 -0
- package/dist/transport/local/transport.js +344 -0
- package/dist/transport/local/transport.js.map +1 -0
- package/dist/transport/rosbridge/actions.d.ts +30 -0
- package/dist/transport/rosbridge/actions.d.ts.map +1 -0
- package/dist/transport/rosbridge/actions.js +61 -0
- package/dist/transport/rosbridge/actions.js.map +1 -0
- package/dist/transport/rosbridge/adapter.d.ts +29 -0
- package/dist/transport/rosbridge/adapter.d.ts.map +1 -0
- package/dist/transport/rosbridge/adapter.js +108 -0
- package/dist/transport/rosbridge/adapter.js.map +1 -0
- package/dist/transport/rosbridge/client.d.ts +55 -0
- package/dist/transport/rosbridge/client.d.ts.map +1 -0
- package/dist/transport/rosbridge/client.js +375 -0
- package/dist/transport/rosbridge/client.js.map +1 -0
- package/dist/transport/rosbridge/services.d.ts +14 -0
- package/dist/transport/rosbridge/services.d.ts.map +1 -0
- package/dist/transport/rosbridge/services.js +25 -0
- package/dist/transport/rosbridge/services.js.map +1 -0
- package/dist/transport/rosbridge/topics.d.ts +28 -0
- package/dist/transport/rosbridge/topics.d.ts.map +1 -0
- package/dist/transport/rosbridge/topics.js +59 -0
- package/dist/transport/rosbridge/topics.js.map +1 -0
- package/dist/transport/rosbridge/types.d.ts +87 -0
- package/dist/transport/rosbridge/types.d.ts.map +1 -0
- package/dist/transport/rosbridge/types.js +6 -0
- package/dist/transport/rosbridge/types.js.map +1 -0
- package/dist/transport/transport.d.ts +39 -0
- package/dist/transport/transport.d.ts.map +1 -0
- package/dist/transport/transport.js +2 -0
- package/dist/transport/transport.js.map +1 -0
- package/dist/transport/types.d.ts +100 -0
- package/dist/transport/types.d.ts.map +1 -0
- package/dist/transport/types.js +5 -0
- package/dist/transport/types.js.map +1 -0
- package/dist/transport/webrtc/signaling-client.d.ts +38 -0
- package/dist/transport/webrtc/signaling-client.d.ts.map +1 -0
- package/dist/transport/webrtc/signaling-client.js +161 -0
- package/dist/transport/webrtc/signaling-client.js.map +1 -0
- package/dist/transport/webrtc/signaling-types.d.ts +112 -0
- package/dist/transport/webrtc/signaling-types.d.ts.map +1 -0
- package/dist/transport/webrtc/signaling-types.js +8 -0
- package/dist/transport/webrtc/signaling-types.js.map +1 -0
- package/dist/transport/webrtc/transport.d.ts +67 -0
- package/dist/transport/webrtc/transport.d.ts.map +1 -0
- package/dist/transport/webrtc/transport.js +406 -0
- package/dist/transport/webrtc/transport.js.map +1 -0
- package/dist/transport/zenoh/adapter.d.ts +47 -0
- package/dist/transport/zenoh/adapter.d.ts.map +1 -0
- package/dist/transport/zenoh/adapter.js +296 -0
- package/dist/transport/zenoh/adapter.js.map +1 -0
- package/dist/transport/zenoh/cdr.d.ts +17 -0
- package/dist/transport/zenoh/cdr.d.ts.map +1 -0
- package/dist/transport/zenoh/cdr.js +170 -0
- package/dist/transport/zenoh/cdr.js.map +1 -0
- package/dist/transport/zenoh/keys.d.ts +21 -0
- package/dist/transport/zenoh/keys.d.ts.map +1 -0
- package/dist/transport/zenoh/keys.js +44 -0
- package/dist/transport/zenoh/keys.js.map +1 -0
- package/dist/transport-pool.d.ts +74 -0
- package/dist/transport-pool.d.ts.map +1 -0
- package/dist/transport-pool.js +135 -0
- package/dist/transport-pool.js.map +1 -0
- package/package.json +80 -0
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,1195 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { TransportConfig } from "./transport/types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Per-robot transport override schema (Phase 1.d-resolve).
|
|
5
|
+
*
|
|
6
|
+
* Discriminated union on `mode`, each variant `.strict()` so that a
|
|
7
|
+
* typo like `{ mode: "zenoh", local: {...} }` fails fast at parse time
|
|
8
|
+
* instead of being silently stripped. Sub-sections are optional —
|
|
9
|
+
* `{ mode: "zenoh" }` is a valid override that inherits everything
|
|
10
|
+
* from the top-level `config.zenoh`. A partial sub-section like
|
|
11
|
+
* `{ mode: "zenoh", zenoh: { routerEndpoint: "ws://field:10000" } }`
|
|
12
|
+
* is merged per-field over the global config — see the resolver.
|
|
13
|
+
*
|
|
14
|
+
* Why a discriminated union (vs the top-level shape of sibling fields):
|
|
15
|
+
* - Keeps the override self-contained at one JSON property
|
|
16
|
+
* - Matches TransportConfig's runtime discriminated union 1:1
|
|
17
|
+
* - Trivially validatable per-robot without leaking across siblings
|
|
18
|
+
*/
|
|
19
|
+
declare const RobotTransportOverrideSchema: z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
|
|
20
|
+
mode: z.ZodLiteral<"rosbridge">;
|
|
21
|
+
rosbridge: z.ZodOptional<z.ZodObject<{
|
|
22
|
+
url: z.ZodOptional<z.ZodString>;
|
|
23
|
+
reconnect: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
reconnectInterval: z.ZodOptional<z.ZodNumber>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
url?: string | undefined;
|
|
27
|
+
reconnect?: boolean | undefined;
|
|
28
|
+
reconnectInterval?: number | undefined;
|
|
29
|
+
}, {
|
|
30
|
+
url?: string | undefined;
|
|
31
|
+
reconnect?: boolean | undefined;
|
|
32
|
+
reconnectInterval?: number | undefined;
|
|
33
|
+
}>>;
|
|
34
|
+
}, "strict", z.ZodTypeAny, {
|
|
35
|
+
mode: "rosbridge";
|
|
36
|
+
rosbridge?: {
|
|
37
|
+
url?: string | undefined;
|
|
38
|
+
reconnect?: boolean | undefined;
|
|
39
|
+
reconnectInterval?: number | undefined;
|
|
40
|
+
} | undefined;
|
|
41
|
+
}, {
|
|
42
|
+
mode: "rosbridge";
|
|
43
|
+
rosbridge?: {
|
|
44
|
+
url?: string | undefined;
|
|
45
|
+
reconnect?: boolean | undefined;
|
|
46
|
+
reconnectInterval?: number | undefined;
|
|
47
|
+
} | undefined;
|
|
48
|
+
}>, z.ZodObject<{
|
|
49
|
+
mode: z.ZodLiteral<"local">;
|
|
50
|
+
local: z.ZodOptional<z.ZodObject<{
|
|
51
|
+
domainId: z.ZodOptional<z.ZodNumber>;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
domainId?: number | undefined;
|
|
54
|
+
}, {
|
|
55
|
+
domainId?: number | undefined;
|
|
56
|
+
}>>;
|
|
57
|
+
}, "strict", z.ZodTypeAny, {
|
|
58
|
+
mode: "local";
|
|
59
|
+
local?: {
|
|
60
|
+
domainId?: number | undefined;
|
|
61
|
+
} | undefined;
|
|
62
|
+
}, {
|
|
63
|
+
mode: "local";
|
|
64
|
+
local?: {
|
|
65
|
+
domainId?: number | undefined;
|
|
66
|
+
} | undefined;
|
|
67
|
+
}>, z.ZodObject<{
|
|
68
|
+
mode: z.ZodLiteral<"zenoh">;
|
|
69
|
+
zenoh: z.ZodOptional<z.ZodObject<{
|
|
70
|
+
routerEndpoint: z.ZodOptional<z.ZodString>;
|
|
71
|
+
domainId: z.ZodOptional<z.ZodNumber>;
|
|
72
|
+
keyFormat: z.ZodOptional<z.ZodEnum<["ros2dds", "rmw_zenoh"]>>;
|
|
73
|
+
bridgeNamespace: z.ZodOptional<z.ZodString>;
|
|
74
|
+
}, "strip", z.ZodTypeAny, {
|
|
75
|
+
routerEndpoint?: string | undefined;
|
|
76
|
+
domainId?: number | undefined;
|
|
77
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
78
|
+
bridgeNamespace?: string | undefined;
|
|
79
|
+
}, {
|
|
80
|
+
routerEndpoint?: string | undefined;
|
|
81
|
+
domainId?: number | undefined;
|
|
82
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
83
|
+
bridgeNamespace?: string | undefined;
|
|
84
|
+
}>>;
|
|
85
|
+
}, "strict", z.ZodTypeAny, {
|
|
86
|
+
mode: "zenoh";
|
|
87
|
+
zenoh?: {
|
|
88
|
+
routerEndpoint?: string | undefined;
|
|
89
|
+
domainId?: number | undefined;
|
|
90
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
91
|
+
bridgeNamespace?: string | undefined;
|
|
92
|
+
} | undefined;
|
|
93
|
+
}, {
|
|
94
|
+
mode: "zenoh";
|
|
95
|
+
zenoh?: {
|
|
96
|
+
routerEndpoint?: string | undefined;
|
|
97
|
+
domainId?: number | undefined;
|
|
98
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
99
|
+
bridgeNamespace?: string | undefined;
|
|
100
|
+
} | undefined;
|
|
101
|
+
}>, z.ZodObject<{
|
|
102
|
+
mode: z.ZodLiteral<"webrtc">;
|
|
103
|
+
webrtc: z.ZodOptional<z.ZodObject<{
|
|
104
|
+
signalingUrl: z.ZodOptional<z.ZodString>;
|
|
105
|
+
apiUrl: z.ZodOptional<z.ZodString>;
|
|
106
|
+
robotId: z.ZodOptional<z.ZodString>;
|
|
107
|
+
robotKey: z.ZodOptional<z.ZodString>;
|
|
108
|
+
iceServers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
109
|
+
urls: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
|
|
110
|
+
username: z.ZodOptional<z.ZodString>;
|
|
111
|
+
credential: z.ZodOptional<z.ZodString>;
|
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
|
+
urls: string | string[];
|
|
114
|
+
username?: string | undefined;
|
|
115
|
+
credential?: string | undefined;
|
|
116
|
+
}, {
|
|
117
|
+
urls: string | string[];
|
|
118
|
+
username?: string | undefined;
|
|
119
|
+
credential?: string | undefined;
|
|
120
|
+
}>, "many">>;
|
|
121
|
+
}, "strip", z.ZodTypeAny, {
|
|
122
|
+
signalingUrl?: string | undefined;
|
|
123
|
+
apiUrl?: string | undefined;
|
|
124
|
+
robotId?: string | undefined;
|
|
125
|
+
robotKey?: string | undefined;
|
|
126
|
+
iceServers?: {
|
|
127
|
+
urls: string | string[];
|
|
128
|
+
username?: string | undefined;
|
|
129
|
+
credential?: string | undefined;
|
|
130
|
+
}[] | undefined;
|
|
131
|
+
}, {
|
|
132
|
+
signalingUrl?: string | undefined;
|
|
133
|
+
apiUrl?: string | undefined;
|
|
134
|
+
robotId?: string | undefined;
|
|
135
|
+
robotKey?: string | undefined;
|
|
136
|
+
iceServers?: {
|
|
137
|
+
urls: string | string[];
|
|
138
|
+
username?: string | undefined;
|
|
139
|
+
credential?: string | undefined;
|
|
140
|
+
}[] | undefined;
|
|
141
|
+
}>>;
|
|
142
|
+
}, "strict", z.ZodTypeAny, {
|
|
143
|
+
mode: "webrtc";
|
|
144
|
+
webrtc?: {
|
|
145
|
+
signalingUrl?: string | undefined;
|
|
146
|
+
apiUrl?: string | undefined;
|
|
147
|
+
robotId?: string | undefined;
|
|
148
|
+
robotKey?: string | undefined;
|
|
149
|
+
iceServers?: {
|
|
150
|
+
urls: string | string[];
|
|
151
|
+
username?: string | undefined;
|
|
152
|
+
credential?: string | undefined;
|
|
153
|
+
}[] | undefined;
|
|
154
|
+
} | undefined;
|
|
155
|
+
}, {
|
|
156
|
+
mode: "webrtc";
|
|
157
|
+
webrtc?: {
|
|
158
|
+
signalingUrl?: string | undefined;
|
|
159
|
+
apiUrl?: string | undefined;
|
|
160
|
+
robotId?: string | undefined;
|
|
161
|
+
robotKey?: string | undefined;
|
|
162
|
+
iceServers?: {
|
|
163
|
+
urls: string | string[];
|
|
164
|
+
username?: string | undefined;
|
|
165
|
+
credential?: string | undefined;
|
|
166
|
+
}[] | undefined;
|
|
167
|
+
} | undefined;
|
|
168
|
+
}>]>;
|
|
169
|
+
export type RobotTransportOverride = z.infer<typeof RobotTransportOverrideSchema>;
|
|
170
|
+
export declare const AgenticROSConfigSchema: z.ZodObject<{
|
|
171
|
+
transport: z.ZodDefault<z.ZodObject<{
|
|
172
|
+
/**
|
|
173
|
+
* Default is "local" — assumes the gateway is co-located with the robot
|
|
174
|
+
* (Mode A: DDS direct via rclnodejs, no router). Switch to "rosbridge",
|
|
175
|
+
* "zenoh", or "webrtc" when the gateway runs off-robot.
|
|
176
|
+
*/
|
|
177
|
+
mode: z.ZodDefault<z.ZodEnum<["rosbridge", "local", "webrtc", "zenoh"]>>;
|
|
178
|
+
}, "strip", z.ZodTypeAny, {
|
|
179
|
+
mode: "rosbridge" | "local" | "webrtc" | "zenoh";
|
|
180
|
+
}, {
|
|
181
|
+
mode?: "rosbridge" | "local" | "webrtc" | "zenoh" | undefined;
|
|
182
|
+
}>>;
|
|
183
|
+
zenoh: z.ZodDefault<z.ZodObject<{
|
|
184
|
+
/** WebSocket URL for zenoh-ts (zenoh-plugin-remote-api). Not tcp/ — use e.g. ws://localhost:10000 */
|
|
185
|
+
routerEndpoint: z.ZodDefault<z.ZodString>;
|
|
186
|
+
domainId: z.ZodDefault<z.ZodNumber>;
|
|
187
|
+
/** "ros2dds" = zenoh-bridge-ros2dds key format (slashes kept). "rmw_zenoh" = rmw_zenoh key format (domain + %). */
|
|
188
|
+
keyFormat: z.ZodDefault<z.ZodEnum<["ros2dds", "rmw_zenoh"]>>;
|
|
189
|
+
/**
|
|
190
|
+
* Must match zenoh-bridge-ros2dds `plugins.ros2dds.namespace` when it is not the default "/".
|
|
191
|
+
* Example: bridge has `namespace: "/bot1"` → set `bridgeNamespace` to "/bot1" or "bot1".
|
|
192
|
+
* Omit or use "/" when the bridge uses the default (only the ROS topic path is the zenoh key).
|
|
193
|
+
*/
|
|
194
|
+
bridgeNamespace: z.ZodOptional<z.ZodString>;
|
|
195
|
+
}, "strip", z.ZodTypeAny, {
|
|
196
|
+
routerEndpoint: string;
|
|
197
|
+
domainId: number;
|
|
198
|
+
keyFormat: "ros2dds" | "rmw_zenoh";
|
|
199
|
+
bridgeNamespace?: string | undefined;
|
|
200
|
+
}, {
|
|
201
|
+
routerEndpoint?: string | undefined;
|
|
202
|
+
domainId?: number | undefined;
|
|
203
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
204
|
+
bridgeNamespace?: string | undefined;
|
|
205
|
+
}>>;
|
|
206
|
+
rosbridge: z.ZodDefault<z.ZodObject<{
|
|
207
|
+
url: z.ZodDefault<z.ZodString>;
|
|
208
|
+
reconnect: z.ZodDefault<z.ZodBoolean>;
|
|
209
|
+
reconnectInterval: z.ZodDefault<z.ZodNumber>;
|
|
210
|
+
}, "strip", z.ZodTypeAny, {
|
|
211
|
+
url: string;
|
|
212
|
+
reconnect: boolean;
|
|
213
|
+
reconnectInterval: number;
|
|
214
|
+
}, {
|
|
215
|
+
url?: string | undefined;
|
|
216
|
+
reconnect?: boolean | undefined;
|
|
217
|
+
reconnectInterval?: number | undefined;
|
|
218
|
+
}>>;
|
|
219
|
+
local: z.ZodDefault<z.ZodObject<{
|
|
220
|
+
domainId: z.ZodDefault<z.ZodNumber>;
|
|
221
|
+
}, "strip", z.ZodTypeAny, {
|
|
222
|
+
domainId: number;
|
|
223
|
+
}, {
|
|
224
|
+
domainId?: number | undefined;
|
|
225
|
+
}>>;
|
|
226
|
+
webrtc: z.ZodDefault<z.ZodObject<{
|
|
227
|
+
signalingUrl: z.ZodDefault<z.ZodString>;
|
|
228
|
+
apiUrl: z.ZodDefault<z.ZodString>;
|
|
229
|
+
robotId: z.ZodDefault<z.ZodString>;
|
|
230
|
+
robotKey: z.ZodDefault<z.ZodString>;
|
|
231
|
+
iceServers: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
232
|
+
urls: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
|
|
233
|
+
username: z.ZodOptional<z.ZodString>;
|
|
234
|
+
credential: z.ZodOptional<z.ZodString>;
|
|
235
|
+
}, "strip", z.ZodTypeAny, {
|
|
236
|
+
urls: string | string[];
|
|
237
|
+
username?: string | undefined;
|
|
238
|
+
credential?: string | undefined;
|
|
239
|
+
}, {
|
|
240
|
+
urls: string | string[];
|
|
241
|
+
username?: string | undefined;
|
|
242
|
+
credential?: string | undefined;
|
|
243
|
+
}>, "many">>;
|
|
244
|
+
}, "strip", z.ZodTypeAny, {
|
|
245
|
+
signalingUrl: string;
|
|
246
|
+
apiUrl: string;
|
|
247
|
+
robotId: string;
|
|
248
|
+
robotKey: string;
|
|
249
|
+
iceServers: {
|
|
250
|
+
urls: string | string[];
|
|
251
|
+
username?: string | undefined;
|
|
252
|
+
credential?: string | undefined;
|
|
253
|
+
}[];
|
|
254
|
+
}, {
|
|
255
|
+
signalingUrl?: string | undefined;
|
|
256
|
+
apiUrl?: string | undefined;
|
|
257
|
+
robotId?: string | undefined;
|
|
258
|
+
robotKey?: string | undefined;
|
|
259
|
+
iceServers?: {
|
|
260
|
+
urls: string | string[];
|
|
261
|
+
username?: string | undefined;
|
|
262
|
+
credential?: string | undefined;
|
|
263
|
+
}[] | undefined;
|
|
264
|
+
}>>;
|
|
265
|
+
robot: z.ZodDefault<z.ZodObject<{
|
|
266
|
+
name: z.ZodDefault<z.ZodString>;
|
|
267
|
+
namespace: z.ZodDefault<z.ZodString>;
|
|
268
|
+
/** Camera topic for "what do you see?" (e.g. /camera/camera/color/image_raw/compressed). If set, used as default in ros2_camera_snapshot and in context. */
|
|
269
|
+
cameraTopic: z.ZodDefault<z.ZodString>;
|
|
270
|
+
}, "strip", z.ZodTypeAny, {
|
|
271
|
+
name: string;
|
|
272
|
+
namespace: string;
|
|
273
|
+
cameraTopic: string;
|
|
274
|
+
}, {
|
|
275
|
+
name?: string | undefined;
|
|
276
|
+
namespace?: string | undefined;
|
|
277
|
+
cameraTopic?: string | undefined;
|
|
278
|
+
}>>;
|
|
279
|
+
/**
|
|
280
|
+
* Phase 1.d multi-robot list. When non-empty, this is the source of
|
|
281
|
+
* truth for `ros2_list_robots` and (in a follow-up) the per-tool
|
|
282
|
+
* `robot_id` parameter. When empty, the legacy single-robot
|
|
283
|
+
* `config.robot` above is synthesised into a one-entry list at
|
|
284
|
+
* resolution time (see packages/core/src/robots.ts). Existing configs
|
|
285
|
+
* keep working unchanged; this field is opt-in.
|
|
286
|
+
*
|
|
287
|
+
* Mark one entry with `default: true` to make it the active robot
|
|
288
|
+
* even when it isn't the first in the list. Otherwise the first entry
|
|
289
|
+
* wins.
|
|
290
|
+
*/
|
|
291
|
+
robots: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
292
|
+
/** Stable, human-readable identifier referenced by `robot_id` arguments. */
|
|
293
|
+
id: z.ZodString;
|
|
294
|
+
name: z.ZodDefault<z.ZodString>;
|
|
295
|
+
namespace: z.ZodDefault<z.ZodString>;
|
|
296
|
+
cameraTopic: z.ZodDefault<z.ZodString>;
|
|
297
|
+
default: z.ZodOptional<z.ZodBoolean>;
|
|
298
|
+
/**
|
|
299
|
+
* Phase 1.e robot kind ("amr" | "arm" | "drone" | "rover" | …).
|
|
300
|
+
*
|
|
301
|
+
* Free-form string so users can invent their own taxonomy, but the
|
|
302
|
+
* documented set is `amr` (autonomous mobile robot), `arm`,
|
|
303
|
+
* `drone`, and `rover`. Consumed by `ros2_find_robots_for(kind=…)`
|
|
304
|
+
* so an agent can ask "find me an AMR with a depth camera that
|
|
305
|
+
* can follow_person" and the platform filters the fleet.
|
|
306
|
+
*
|
|
307
|
+
* Defaults to "amr" (back-compat: every existing robot today is
|
|
308
|
+
* an AMR), so the field stays useful even when the user hasn't
|
|
309
|
+
* tagged their robots explicitly.
|
|
310
|
+
*/
|
|
311
|
+
kind: z.ZodDefault<z.ZodString>;
|
|
312
|
+
/**
|
|
313
|
+
* Phase 1.e sensor/hardware tags.
|
|
314
|
+
*
|
|
315
|
+
* Lets `ros2_find_robots_for` answer questions like "which
|
|
316
|
+
* robots have a depth camera" without subscribing to topics or
|
|
317
|
+
* inspecting the URDF. All flags default to false — set them
|
|
318
|
+
* explicitly per robot via the CLI (`--sensors=has_realsense`)
|
|
319
|
+
* or by hand-editing `~/.agenticros/config.json`.
|
|
320
|
+
*
|
|
321
|
+
* The list is intentionally short for Phase 1; expand it as we
|
|
322
|
+
* accumulate seed-catalog skills that depend on a specific
|
|
323
|
+
* hardware capability (lidar SLAM, arm grasping, etc.).
|
|
324
|
+
*/
|
|
325
|
+
sensors: z.ZodDefault<z.ZodObject<{
|
|
326
|
+
has_realsense: z.ZodDefault<z.ZodBoolean>;
|
|
327
|
+
has_lidar: z.ZodDefault<z.ZodBoolean>;
|
|
328
|
+
has_arm: z.ZodDefault<z.ZodBoolean>;
|
|
329
|
+
}, "strip", z.ZodTypeAny, {
|
|
330
|
+
has_realsense: boolean;
|
|
331
|
+
has_lidar: boolean;
|
|
332
|
+
has_arm: boolean;
|
|
333
|
+
}, {
|
|
334
|
+
has_realsense?: boolean | undefined;
|
|
335
|
+
has_lidar?: boolean | undefined;
|
|
336
|
+
has_arm?: boolean | undefined;
|
|
337
|
+
}>>;
|
|
338
|
+
/**
|
|
339
|
+
* Phase 1.e optional per-robot capability allowlist.
|
|
340
|
+
*
|
|
341
|
+
* When set, restricts which capabilities `ros2_find_robots_for`
|
|
342
|
+
* considers this robot capable of. When unset (the common
|
|
343
|
+
* case), the robot inherits the gateway's global capability
|
|
344
|
+
* registry (the union of built-in verbs plus every loaded
|
|
345
|
+
* skill's capabilities). Useful in heterogeneous fleets where
|
|
346
|
+
* one robot has the arm skill loaded and another doesn't.
|
|
347
|
+
*/
|
|
348
|
+
capabilities: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
349
|
+
/**
|
|
350
|
+
* Phase 1.d-resolve per-robot transport override.
|
|
351
|
+
*
|
|
352
|
+
* When set, this robot uses its own transport instead of the
|
|
353
|
+
* top-level `config.transport.*`. Useful when one host drives
|
|
354
|
+
* BOTH a local sim (mode: "local") AND a real robot reached via
|
|
355
|
+
* an off-robot bridge (mode: "zenoh" / "rosbridge") — each
|
|
356
|
+
* robot connects through the right path with no global config
|
|
357
|
+
* juggling.
|
|
358
|
+
*
|
|
359
|
+
* Sub-sections (`zenoh`, `rosbridge`, `local`, `webrtc`) are
|
|
360
|
+
* optional inside the override: omit them to inherit the global
|
|
361
|
+
* `config.<section>` defaults; set them to override only the
|
|
362
|
+
* fields you need (e.g. a different router endpoint).
|
|
363
|
+
*
|
|
364
|
+
* Consumed by `getTransportConfigForRobot(config, robotId)` in
|
|
365
|
+
* robots.ts. Adapters opt in to multi-transport pools — when
|
|
366
|
+
* the override is absent they keep using the single global
|
|
367
|
+
* transport, so existing single-robot deployments are
|
|
368
|
+
* unaffected.
|
|
369
|
+
*/
|
|
370
|
+
transport: z.ZodOptional<z.ZodDiscriminatedUnion<"mode", [z.ZodObject<{
|
|
371
|
+
mode: z.ZodLiteral<"rosbridge">;
|
|
372
|
+
rosbridge: z.ZodOptional<z.ZodObject<{
|
|
373
|
+
url: z.ZodOptional<z.ZodString>;
|
|
374
|
+
reconnect: z.ZodOptional<z.ZodBoolean>;
|
|
375
|
+
reconnectInterval: z.ZodOptional<z.ZodNumber>;
|
|
376
|
+
}, "strip", z.ZodTypeAny, {
|
|
377
|
+
url?: string | undefined;
|
|
378
|
+
reconnect?: boolean | undefined;
|
|
379
|
+
reconnectInterval?: number | undefined;
|
|
380
|
+
}, {
|
|
381
|
+
url?: string | undefined;
|
|
382
|
+
reconnect?: boolean | undefined;
|
|
383
|
+
reconnectInterval?: number | undefined;
|
|
384
|
+
}>>;
|
|
385
|
+
}, "strict", z.ZodTypeAny, {
|
|
386
|
+
mode: "rosbridge";
|
|
387
|
+
rosbridge?: {
|
|
388
|
+
url?: string | undefined;
|
|
389
|
+
reconnect?: boolean | undefined;
|
|
390
|
+
reconnectInterval?: number | undefined;
|
|
391
|
+
} | undefined;
|
|
392
|
+
}, {
|
|
393
|
+
mode: "rosbridge";
|
|
394
|
+
rosbridge?: {
|
|
395
|
+
url?: string | undefined;
|
|
396
|
+
reconnect?: boolean | undefined;
|
|
397
|
+
reconnectInterval?: number | undefined;
|
|
398
|
+
} | undefined;
|
|
399
|
+
}>, z.ZodObject<{
|
|
400
|
+
mode: z.ZodLiteral<"local">;
|
|
401
|
+
local: z.ZodOptional<z.ZodObject<{
|
|
402
|
+
domainId: z.ZodOptional<z.ZodNumber>;
|
|
403
|
+
}, "strip", z.ZodTypeAny, {
|
|
404
|
+
domainId?: number | undefined;
|
|
405
|
+
}, {
|
|
406
|
+
domainId?: number | undefined;
|
|
407
|
+
}>>;
|
|
408
|
+
}, "strict", z.ZodTypeAny, {
|
|
409
|
+
mode: "local";
|
|
410
|
+
local?: {
|
|
411
|
+
domainId?: number | undefined;
|
|
412
|
+
} | undefined;
|
|
413
|
+
}, {
|
|
414
|
+
mode: "local";
|
|
415
|
+
local?: {
|
|
416
|
+
domainId?: number | undefined;
|
|
417
|
+
} | undefined;
|
|
418
|
+
}>, z.ZodObject<{
|
|
419
|
+
mode: z.ZodLiteral<"zenoh">;
|
|
420
|
+
zenoh: z.ZodOptional<z.ZodObject<{
|
|
421
|
+
routerEndpoint: z.ZodOptional<z.ZodString>;
|
|
422
|
+
domainId: z.ZodOptional<z.ZodNumber>;
|
|
423
|
+
keyFormat: z.ZodOptional<z.ZodEnum<["ros2dds", "rmw_zenoh"]>>;
|
|
424
|
+
bridgeNamespace: z.ZodOptional<z.ZodString>;
|
|
425
|
+
}, "strip", z.ZodTypeAny, {
|
|
426
|
+
routerEndpoint?: string | undefined;
|
|
427
|
+
domainId?: number | undefined;
|
|
428
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
429
|
+
bridgeNamespace?: string | undefined;
|
|
430
|
+
}, {
|
|
431
|
+
routerEndpoint?: string | undefined;
|
|
432
|
+
domainId?: number | undefined;
|
|
433
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
434
|
+
bridgeNamespace?: string | undefined;
|
|
435
|
+
}>>;
|
|
436
|
+
}, "strict", z.ZodTypeAny, {
|
|
437
|
+
mode: "zenoh";
|
|
438
|
+
zenoh?: {
|
|
439
|
+
routerEndpoint?: string | undefined;
|
|
440
|
+
domainId?: number | undefined;
|
|
441
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
442
|
+
bridgeNamespace?: string | undefined;
|
|
443
|
+
} | undefined;
|
|
444
|
+
}, {
|
|
445
|
+
mode: "zenoh";
|
|
446
|
+
zenoh?: {
|
|
447
|
+
routerEndpoint?: string | undefined;
|
|
448
|
+
domainId?: number | undefined;
|
|
449
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
450
|
+
bridgeNamespace?: string | undefined;
|
|
451
|
+
} | undefined;
|
|
452
|
+
}>, z.ZodObject<{
|
|
453
|
+
mode: z.ZodLiteral<"webrtc">;
|
|
454
|
+
webrtc: z.ZodOptional<z.ZodObject<{
|
|
455
|
+
signalingUrl: z.ZodOptional<z.ZodString>;
|
|
456
|
+
apiUrl: z.ZodOptional<z.ZodString>;
|
|
457
|
+
robotId: z.ZodOptional<z.ZodString>;
|
|
458
|
+
robotKey: z.ZodOptional<z.ZodString>;
|
|
459
|
+
iceServers: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
460
|
+
urls: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
|
|
461
|
+
username: z.ZodOptional<z.ZodString>;
|
|
462
|
+
credential: z.ZodOptional<z.ZodString>;
|
|
463
|
+
}, "strip", z.ZodTypeAny, {
|
|
464
|
+
urls: string | string[];
|
|
465
|
+
username?: string | undefined;
|
|
466
|
+
credential?: string | undefined;
|
|
467
|
+
}, {
|
|
468
|
+
urls: string | string[];
|
|
469
|
+
username?: string | undefined;
|
|
470
|
+
credential?: string | undefined;
|
|
471
|
+
}>, "many">>;
|
|
472
|
+
}, "strip", z.ZodTypeAny, {
|
|
473
|
+
signalingUrl?: string | undefined;
|
|
474
|
+
apiUrl?: string | undefined;
|
|
475
|
+
robotId?: string | undefined;
|
|
476
|
+
robotKey?: string | undefined;
|
|
477
|
+
iceServers?: {
|
|
478
|
+
urls: string | string[];
|
|
479
|
+
username?: string | undefined;
|
|
480
|
+
credential?: string | undefined;
|
|
481
|
+
}[] | undefined;
|
|
482
|
+
}, {
|
|
483
|
+
signalingUrl?: string | undefined;
|
|
484
|
+
apiUrl?: string | undefined;
|
|
485
|
+
robotId?: string | undefined;
|
|
486
|
+
robotKey?: string | undefined;
|
|
487
|
+
iceServers?: {
|
|
488
|
+
urls: string | string[];
|
|
489
|
+
username?: string | undefined;
|
|
490
|
+
credential?: string | undefined;
|
|
491
|
+
}[] | undefined;
|
|
492
|
+
}>>;
|
|
493
|
+
}, "strict", z.ZodTypeAny, {
|
|
494
|
+
mode: "webrtc";
|
|
495
|
+
webrtc?: {
|
|
496
|
+
signalingUrl?: string | undefined;
|
|
497
|
+
apiUrl?: string | undefined;
|
|
498
|
+
robotId?: string | undefined;
|
|
499
|
+
robotKey?: string | undefined;
|
|
500
|
+
iceServers?: {
|
|
501
|
+
urls: string | string[];
|
|
502
|
+
username?: string | undefined;
|
|
503
|
+
credential?: string | undefined;
|
|
504
|
+
}[] | undefined;
|
|
505
|
+
} | undefined;
|
|
506
|
+
}, {
|
|
507
|
+
mode: "webrtc";
|
|
508
|
+
webrtc?: {
|
|
509
|
+
signalingUrl?: string | undefined;
|
|
510
|
+
apiUrl?: string | undefined;
|
|
511
|
+
robotId?: string | undefined;
|
|
512
|
+
robotKey?: string | undefined;
|
|
513
|
+
iceServers?: {
|
|
514
|
+
urls: string | string[];
|
|
515
|
+
username?: string | undefined;
|
|
516
|
+
credential?: string | undefined;
|
|
517
|
+
}[] | undefined;
|
|
518
|
+
} | undefined;
|
|
519
|
+
}>]>>;
|
|
520
|
+
}, "strip", z.ZodTypeAny, {
|
|
521
|
+
name: string;
|
|
522
|
+
namespace: string;
|
|
523
|
+
cameraTopic: string;
|
|
524
|
+
id: string;
|
|
525
|
+
kind: string;
|
|
526
|
+
sensors: {
|
|
527
|
+
has_realsense: boolean;
|
|
528
|
+
has_lidar: boolean;
|
|
529
|
+
has_arm: boolean;
|
|
530
|
+
};
|
|
531
|
+
transport?: {
|
|
532
|
+
mode: "rosbridge";
|
|
533
|
+
rosbridge?: {
|
|
534
|
+
url?: string | undefined;
|
|
535
|
+
reconnect?: boolean | undefined;
|
|
536
|
+
reconnectInterval?: number | undefined;
|
|
537
|
+
} | undefined;
|
|
538
|
+
} | {
|
|
539
|
+
mode: "local";
|
|
540
|
+
local?: {
|
|
541
|
+
domainId?: number | undefined;
|
|
542
|
+
} | undefined;
|
|
543
|
+
} | {
|
|
544
|
+
mode: "zenoh";
|
|
545
|
+
zenoh?: {
|
|
546
|
+
routerEndpoint?: string | undefined;
|
|
547
|
+
domainId?: number | undefined;
|
|
548
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
549
|
+
bridgeNamespace?: string | undefined;
|
|
550
|
+
} | undefined;
|
|
551
|
+
} | {
|
|
552
|
+
mode: "webrtc";
|
|
553
|
+
webrtc?: {
|
|
554
|
+
signalingUrl?: string | undefined;
|
|
555
|
+
apiUrl?: string | undefined;
|
|
556
|
+
robotId?: string | undefined;
|
|
557
|
+
robotKey?: string | undefined;
|
|
558
|
+
iceServers?: {
|
|
559
|
+
urls: string | string[];
|
|
560
|
+
username?: string | undefined;
|
|
561
|
+
credential?: string | undefined;
|
|
562
|
+
}[] | undefined;
|
|
563
|
+
} | undefined;
|
|
564
|
+
} | undefined;
|
|
565
|
+
default?: boolean | undefined;
|
|
566
|
+
capabilities?: string[] | undefined;
|
|
567
|
+
}, {
|
|
568
|
+
id: string;
|
|
569
|
+
transport?: {
|
|
570
|
+
mode: "rosbridge";
|
|
571
|
+
rosbridge?: {
|
|
572
|
+
url?: string | undefined;
|
|
573
|
+
reconnect?: boolean | undefined;
|
|
574
|
+
reconnectInterval?: number | undefined;
|
|
575
|
+
} | undefined;
|
|
576
|
+
} | {
|
|
577
|
+
mode: "local";
|
|
578
|
+
local?: {
|
|
579
|
+
domainId?: number | undefined;
|
|
580
|
+
} | undefined;
|
|
581
|
+
} | {
|
|
582
|
+
mode: "zenoh";
|
|
583
|
+
zenoh?: {
|
|
584
|
+
routerEndpoint?: string | undefined;
|
|
585
|
+
domainId?: number | undefined;
|
|
586
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
587
|
+
bridgeNamespace?: string | undefined;
|
|
588
|
+
} | undefined;
|
|
589
|
+
} | {
|
|
590
|
+
mode: "webrtc";
|
|
591
|
+
webrtc?: {
|
|
592
|
+
signalingUrl?: string | undefined;
|
|
593
|
+
apiUrl?: string | undefined;
|
|
594
|
+
robotId?: string | undefined;
|
|
595
|
+
robotKey?: string | undefined;
|
|
596
|
+
iceServers?: {
|
|
597
|
+
urls: string | string[];
|
|
598
|
+
username?: string | undefined;
|
|
599
|
+
credential?: string | undefined;
|
|
600
|
+
}[] | undefined;
|
|
601
|
+
} | undefined;
|
|
602
|
+
} | undefined;
|
|
603
|
+
name?: string | undefined;
|
|
604
|
+
namespace?: string | undefined;
|
|
605
|
+
cameraTopic?: string | undefined;
|
|
606
|
+
default?: boolean | undefined;
|
|
607
|
+
kind?: string | undefined;
|
|
608
|
+
sensors?: {
|
|
609
|
+
has_realsense?: boolean | undefined;
|
|
610
|
+
has_lidar?: boolean | undefined;
|
|
611
|
+
has_arm?: boolean | undefined;
|
|
612
|
+
} | undefined;
|
|
613
|
+
capabilities?: string[] | undefined;
|
|
614
|
+
}>, "many">>;
|
|
615
|
+
/** Phase 3 teleop web app: camera + twist controls. */
|
|
616
|
+
teleop: z.ZodDefault<z.ZodObject<{
|
|
617
|
+
/** Default camera topic when only one source or as default selection. Falls back to robot.cameraTopic then RealSense default. */
|
|
618
|
+
cameraTopic: z.ZodDefault<z.ZodString>;
|
|
619
|
+
/** Explicit list of camera sources for the selector; if empty, derived from listTopics() filtered by Image/CompressedImage. */
|
|
620
|
+
cameraTopics: z.ZodDefault<z.ZodArray<z.ZodObject<{
|
|
621
|
+
topic: z.ZodString;
|
|
622
|
+
label: z.ZodOptional<z.ZodString>;
|
|
623
|
+
}, "strip", z.ZodTypeAny, {
|
|
624
|
+
topic: string;
|
|
625
|
+
label?: string | undefined;
|
|
626
|
+
}, {
|
|
627
|
+
topic: string;
|
|
628
|
+
label?: string | undefined;
|
|
629
|
+
}>, "many">>;
|
|
630
|
+
/** cmd_vel topic override (default from robot namespace). */
|
|
631
|
+
cmdVelTopic: z.ZodDefault<z.ZodString>;
|
|
632
|
+
/** Default linear speed (m/s) for teleop. */
|
|
633
|
+
speedDefault: z.ZodDefault<z.ZodNumber>;
|
|
634
|
+
/** Camera poll interval in ms for the teleop page. */
|
|
635
|
+
cameraPollMs: z.ZodDefault<z.ZodNumber>;
|
|
636
|
+
}, "strip", z.ZodTypeAny, {
|
|
637
|
+
cameraTopic: string;
|
|
638
|
+
cameraTopics: {
|
|
639
|
+
topic: string;
|
|
640
|
+
label?: string | undefined;
|
|
641
|
+
}[];
|
|
642
|
+
cmdVelTopic: string;
|
|
643
|
+
speedDefault: number;
|
|
644
|
+
cameraPollMs: number;
|
|
645
|
+
}, {
|
|
646
|
+
cameraTopic?: string | undefined;
|
|
647
|
+
cameraTopics?: {
|
|
648
|
+
topic: string;
|
|
649
|
+
label?: string | undefined;
|
|
650
|
+
}[] | undefined;
|
|
651
|
+
cmdVelTopic?: string | undefined;
|
|
652
|
+
speedDefault?: number | undefined;
|
|
653
|
+
cameraPollMs?: number | undefined;
|
|
654
|
+
}>>;
|
|
655
|
+
safety: z.ZodDefault<z.ZodObject<{
|
|
656
|
+
maxLinearVelocity: z.ZodDefault<z.ZodNumber>;
|
|
657
|
+
maxAngularVelocity: z.ZodDefault<z.ZodNumber>;
|
|
658
|
+
workspaceLimits: z.ZodDefault<z.ZodObject<{
|
|
659
|
+
xMin: z.ZodDefault<z.ZodNumber>;
|
|
660
|
+
xMax: z.ZodDefault<z.ZodNumber>;
|
|
661
|
+
yMin: z.ZodDefault<z.ZodNumber>;
|
|
662
|
+
yMax: z.ZodDefault<z.ZodNumber>;
|
|
663
|
+
}, "strip", z.ZodTypeAny, {
|
|
664
|
+
xMin: number;
|
|
665
|
+
xMax: number;
|
|
666
|
+
yMin: number;
|
|
667
|
+
yMax: number;
|
|
668
|
+
}, {
|
|
669
|
+
xMin?: number | undefined;
|
|
670
|
+
xMax?: number | undefined;
|
|
671
|
+
yMin?: number | undefined;
|
|
672
|
+
yMax?: number | undefined;
|
|
673
|
+
}>>;
|
|
674
|
+
}, "strip", z.ZodTypeAny, {
|
|
675
|
+
maxLinearVelocity: number;
|
|
676
|
+
maxAngularVelocity: number;
|
|
677
|
+
workspaceLimits: {
|
|
678
|
+
xMin: number;
|
|
679
|
+
xMax: number;
|
|
680
|
+
yMin: number;
|
|
681
|
+
yMax: number;
|
|
682
|
+
};
|
|
683
|
+
}, {
|
|
684
|
+
maxLinearVelocity?: number | undefined;
|
|
685
|
+
maxAngularVelocity?: number | undefined;
|
|
686
|
+
workspaceLimits?: {
|
|
687
|
+
xMin?: number | undefined;
|
|
688
|
+
xMax?: number | undefined;
|
|
689
|
+
yMin?: number | undefined;
|
|
690
|
+
yMax?: number | undefined;
|
|
691
|
+
} | undefined;
|
|
692
|
+
}>>;
|
|
693
|
+
/**
|
|
694
|
+
* Optional in-plugin image describer.
|
|
695
|
+
*
|
|
696
|
+
* When the primary chat model is text-only (e.g. Ollama qwen2.5:7b),
|
|
697
|
+
* OpenClaw filters image content blocks out of tool results before the
|
|
698
|
+
* LLM ever sees them, so `ros2_camera_snapshot` cannot be described.
|
|
699
|
+
* Configuring an OpenAI-compatible chat completions endpoint here lets
|
|
700
|
+
* the plugin call a vision model itself and embed the description text
|
|
701
|
+
* directly in the snapshot tool result.
|
|
702
|
+
*
|
|
703
|
+
* Recommended Jetson setup: point at local Ollama with a VL model:
|
|
704
|
+
* url: "http://host.docker.internal:11434/v1/chat/completions"
|
|
705
|
+
* model: "qwen2.5vl:7b"
|
|
706
|
+
*
|
|
707
|
+
* If `enabled: false`, the snapshot result includes only the camera URL
|
|
708
|
+
* and the agent is on its own (suitable when the primary model is
|
|
709
|
+
* multimodal and OpenClaw does not need to filter images).
|
|
710
|
+
*/
|
|
711
|
+
describer: z.ZodDefault<z.ZodObject<{
|
|
712
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
713
|
+
/** OpenAI-compat chat completions endpoint URL. */
|
|
714
|
+
url: z.ZodDefault<z.ZodString>;
|
|
715
|
+
/** Optional Bearer token / API key for the endpoint. */
|
|
716
|
+
apiKey: z.ZodOptional<z.ZodString>;
|
|
717
|
+
/** Vision model id (must accept OpenAI `image_url` content blocks). */
|
|
718
|
+
model: z.ZodDefault<z.ZodString>;
|
|
719
|
+
/** Prompt sent alongside the image. */
|
|
720
|
+
prompt: z.ZodDefault<z.ZodString>;
|
|
721
|
+
/** Max tokens for the description. */
|
|
722
|
+
maxTokens: z.ZodDefault<z.ZodNumber>;
|
|
723
|
+
/** Request timeout in ms. */
|
|
724
|
+
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
725
|
+
/**
|
|
726
|
+
* Resize images larger than this max dimension before sending to the
|
|
727
|
+
* VL model. Reduces token usage and latency. Set to 0 to disable.
|
|
728
|
+
*/
|
|
729
|
+
maxImageDimension: z.ZodDefault<z.ZodNumber>;
|
|
730
|
+
}, "strip", z.ZodTypeAny, {
|
|
731
|
+
url: string;
|
|
732
|
+
enabled: boolean;
|
|
733
|
+
model: string;
|
|
734
|
+
prompt: string;
|
|
735
|
+
maxTokens: number;
|
|
736
|
+
timeoutMs: number;
|
|
737
|
+
maxImageDimension: number;
|
|
738
|
+
apiKey?: string | undefined;
|
|
739
|
+
}, {
|
|
740
|
+
url?: string | undefined;
|
|
741
|
+
enabled?: boolean | undefined;
|
|
742
|
+
apiKey?: string | undefined;
|
|
743
|
+
model?: string | undefined;
|
|
744
|
+
prompt?: string | undefined;
|
|
745
|
+
maxTokens?: number | undefined;
|
|
746
|
+
timeoutMs?: number | undefined;
|
|
747
|
+
maxImageDimension?: number | undefined;
|
|
748
|
+
}>>;
|
|
749
|
+
/**
|
|
750
|
+
* Optional cross-adapter semantic memory subsystem.
|
|
751
|
+
*
|
|
752
|
+
* When `enabled: true`, OpenClaw, Claude Code, and Gemini adapters all
|
|
753
|
+
* register four memory tools (memory_remember / memory_recall /
|
|
754
|
+
* memory_forget / memory_status) backed by a shared store. Default is
|
|
755
|
+
* off — zero new deps when disabled.
|
|
756
|
+
*
|
|
757
|
+
* See docs/memory.md for ready-to-paste recipes.
|
|
758
|
+
*/
|
|
759
|
+
memory: z.ZodDefault<z.ZodObject<{
|
|
760
|
+
/** Master switch. When false, adapters skip registering memory tools. */
|
|
761
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
762
|
+
/** Which backend to use. "local" has no extra deps; "mem0" needs `pnpm add mem0ai`. */
|
|
763
|
+
backend: z.ZodDefault<z.ZodEnum<["local", "mem0"]>>;
|
|
764
|
+
/** Override the per-record namespace. Defaults to robot.namespace at call time. */
|
|
765
|
+
namespace: z.ZodOptional<z.ZodString>;
|
|
766
|
+
local: z.ZodDefault<z.ZodObject<{
|
|
767
|
+
/** JSON-on-disk store path. Supports leading "~/". */
|
|
768
|
+
storePath: z.ZodDefault<z.ZodString>;
|
|
769
|
+
}, "strip", z.ZodTypeAny, {
|
|
770
|
+
storePath: string;
|
|
771
|
+
}, {
|
|
772
|
+
storePath?: string | undefined;
|
|
773
|
+
}>>;
|
|
774
|
+
mem0: z.ZodDefault<z.ZodObject<{
|
|
775
|
+
/**
|
|
776
|
+
* When true, mem0 runs its LLM-driven fact extraction on `add`.
|
|
777
|
+
* When false (default), content is stored as-is — predictable,
|
|
778
|
+
* no LLM call on write, agent stays in explicit control.
|
|
779
|
+
*/
|
|
780
|
+
inferOnWrite: z.ZodDefault<z.ZodBoolean>;
|
|
781
|
+
/** SQLite history db path (mem0 historyDbPath). Supports leading "~/". */
|
|
782
|
+
historyDbPath: z.ZodDefault<z.ZodString>;
|
|
783
|
+
/**
|
|
784
|
+
* Embedder passed verbatim to `new Memory({ embedder })`.
|
|
785
|
+
* When omitted, the factory auto-detects: Ollama (if reachable)
|
|
786
|
+
* → OpenAI (if OPENAI_API_KEY set) → error.
|
|
787
|
+
*/
|
|
788
|
+
embedder: z.ZodOptional<z.ZodObject<{
|
|
789
|
+
provider: z.ZodString;
|
|
790
|
+
config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
791
|
+
}, "strip", z.ZodTypeAny, {
|
|
792
|
+
provider: string;
|
|
793
|
+
config: Record<string, unknown>;
|
|
794
|
+
}, {
|
|
795
|
+
provider: string;
|
|
796
|
+
config: Record<string, unknown>;
|
|
797
|
+
}>>;
|
|
798
|
+
/** Vector store passed verbatim to `new Memory({ vectorStore })`. */
|
|
799
|
+
vectorStore: z.ZodOptional<z.ZodObject<{
|
|
800
|
+
provider: z.ZodString;
|
|
801
|
+
config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
802
|
+
}, "strip", z.ZodTypeAny, {
|
|
803
|
+
provider: string;
|
|
804
|
+
config: Record<string, unknown>;
|
|
805
|
+
}, {
|
|
806
|
+
provider: string;
|
|
807
|
+
config: Record<string, unknown>;
|
|
808
|
+
}>>;
|
|
809
|
+
/** LLM passed verbatim to `new Memory({ llm })`. Only used when inferOnWrite is true. */
|
|
810
|
+
llm: z.ZodOptional<z.ZodObject<{
|
|
811
|
+
provider: z.ZodString;
|
|
812
|
+
config: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
813
|
+
}, "strip", z.ZodTypeAny, {
|
|
814
|
+
provider: string;
|
|
815
|
+
config: Record<string, unknown>;
|
|
816
|
+
}, {
|
|
817
|
+
provider: string;
|
|
818
|
+
config: Record<string, unknown>;
|
|
819
|
+
}>>;
|
|
820
|
+
}, "strip", z.ZodTypeAny, {
|
|
821
|
+
inferOnWrite: boolean;
|
|
822
|
+
historyDbPath: string;
|
|
823
|
+
embedder?: {
|
|
824
|
+
provider: string;
|
|
825
|
+
config: Record<string, unknown>;
|
|
826
|
+
} | undefined;
|
|
827
|
+
vectorStore?: {
|
|
828
|
+
provider: string;
|
|
829
|
+
config: Record<string, unknown>;
|
|
830
|
+
} | undefined;
|
|
831
|
+
llm?: {
|
|
832
|
+
provider: string;
|
|
833
|
+
config: Record<string, unknown>;
|
|
834
|
+
} | undefined;
|
|
835
|
+
}, {
|
|
836
|
+
inferOnWrite?: boolean | undefined;
|
|
837
|
+
historyDbPath?: string | undefined;
|
|
838
|
+
embedder?: {
|
|
839
|
+
provider: string;
|
|
840
|
+
config: Record<string, unknown>;
|
|
841
|
+
} | undefined;
|
|
842
|
+
vectorStore?: {
|
|
843
|
+
provider: string;
|
|
844
|
+
config: Record<string, unknown>;
|
|
845
|
+
} | undefined;
|
|
846
|
+
llm?: {
|
|
847
|
+
provider: string;
|
|
848
|
+
config: Record<string, unknown>;
|
|
849
|
+
} | undefined;
|
|
850
|
+
}>>;
|
|
851
|
+
}, "strip", z.ZodTypeAny, {
|
|
852
|
+
local: {
|
|
853
|
+
storePath: string;
|
|
854
|
+
};
|
|
855
|
+
enabled: boolean;
|
|
856
|
+
mem0: {
|
|
857
|
+
inferOnWrite: boolean;
|
|
858
|
+
historyDbPath: string;
|
|
859
|
+
embedder?: {
|
|
860
|
+
provider: string;
|
|
861
|
+
config: Record<string, unknown>;
|
|
862
|
+
} | undefined;
|
|
863
|
+
vectorStore?: {
|
|
864
|
+
provider: string;
|
|
865
|
+
config: Record<string, unknown>;
|
|
866
|
+
} | undefined;
|
|
867
|
+
llm?: {
|
|
868
|
+
provider: string;
|
|
869
|
+
config: Record<string, unknown>;
|
|
870
|
+
} | undefined;
|
|
871
|
+
};
|
|
872
|
+
backend: "local" | "mem0";
|
|
873
|
+
namespace?: string | undefined;
|
|
874
|
+
}, {
|
|
875
|
+
local?: {
|
|
876
|
+
storePath?: string | undefined;
|
|
877
|
+
} | undefined;
|
|
878
|
+
namespace?: string | undefined;
|
|
879
|
+
enabled?: boolean | undefined;
|
|
880
|
+
mem0?: {
|
|
881
|
+
inferOnWrite?: boolean | undefined;
|
|
882
|
+
historyDbPath?: string | undefined;
|
|
883
|
+
embedder?: {
|
|
884
|
+
provider: string;
|
|
885
|
+
config: Record<string, unknown>;
|
|
886
|
+
} | undefined;
|
|
887
|
+
vectorStore?: {
|
|
888
|
+
provider: string;
|
|
889
|
+
config: Record<string, unknown>;
|
|
890
|
+
} | undefined;
|
|
891
|
+
llm?: {
|
|
892
|
+
provider: string;
|
|
893
|
+
config: Record<string, unknown>;
|
|
894
|
+
} | undefined;
|
|
895
|
+
} | undefined;
|
|
896
|
+
backend?: "local" | "mem0" | undefined;
|
|
897
|
+
}>>;
|
|
898
|
+
/** Per-skill config. Keys are skill ids (e.g. followme). Each skill validates its own slice. */
|
|
899
|
+
skills: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
900
|
+
/** Directories to scan for skill packages (package.json with an `agenticros` block). Resolved at gateway start. */
|
|
901
|
+
skillPaths: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
902
|
+
/** Npm (or local) package names to load as skills. Resolved via require.resolve from plugin context. */
|
|
903
|
+
skillPackages: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
904
|
+
}, "strip", z.ZodTypeAny, {
|
|
905
|
+
rosbridge: {
|
|
906
|
+
url: string;
|
|
907
|
+
reconnect: boolean;
|
|
908
|
+
reconnectInterval: number;
|
|
909
|
+
};
|
|
910
|
+
local: {
|
|
911
|
+
domainId: number;
|
|
912
|
+
};
|
|
913
|
+
webrtc: {
|
|
914
|
+
signalingUrl: string;
|
|
915
|
+
apiUrl: string;
|
|
916
|
+
robotId: string;
|
|
917
|
+
robotKey: string;
|
|
918
|
+
iceServers: {
|
|
919
|
+
urls: string | string[];
|
|
920
|
+
username?: string | undefined;
|
|
921
|
+
credential?: string | undefined;
|
|
922
|
+
}[];
|
|
923
|
+
};
|
|
924
|
+
zenoh: {
|
|
925
|
+
routerEndpoint: string;
|
|
926
|
+
domainId: number;
|
|
927
|
+
keyFormat: "ros2dds" | "rmw_zenoh";
|
|
928
|
+
bridgeNamespace?: string | undefined;
|
|
929
|
+
};
|
|
930
|
+
transport: {
|
|
931
|
+
mode: "rosbridge" | "local" | "webrtc" | "zenoh";
|
|
932
|
+
};
|
|
933
|
+
robot: {
|
|
934
|
+
name: string;
|
|
935
|
+
namespace: string;
|
|
936
|
+
cameraTopic: string;
|
|
937
|
+
};
|
|
938
|
+
robots: {
|
|
939
|
+
name: string;
|
|
940
|
+
namespace: string;
|
|
941
|
+
cameraTopic: string;
|
|
942
|
+
id: string;
|
|
943
|
+
kind: string;
|
|
944
|
+
sensors: {
|
|
945
|
+
has_realsense: boolean;
|
|
946
|
+
has_lidar: boolean;
|
|
947
|
+
has_arm: boolean;
|
|
948
|
+
};
|
|
949
|
+
transport?: {
|
|
950
|
+
mode: "rosbridge";
|
|
951
|
+
rosbridge?: {
|
|
952
|
+
url?: string | undefined;
|
|
953
|
+
reconnect?: boolean | undefined;
|
|
954
|
+
reconnectInterval?: number | undefined;
|
|
955
|
+
} | undefined;
|
|
956
|
+
} | {
|
|
957
|
+
mode: "local";
|
|
958
|
+
local?: {
|
|
959
|
+
domainId?: number | undefined;
|
|
960
|
+
} | undefined;
|
|
961
|
+
} | {
|
|
962
|
+
mode: "zenoh";
|
|
963
|
+
zenoh?: {
|
|
964
|
+
routerEndpoint?: string | undefined;
|
|
965
|
+
domainId?: number | undefined;
|
|
966
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
967
|
+
bridgeNamespace?: string | undefined;
|
|
968
|
+
} | undefined;
|
|
969
|
+
} | {
|
|
970
|
+
mode: "webrtc";
|
|
971
|
+
webrtc?: {
|
|
972
|
+
signalingUrl?: string | undefined;
|
|
973
|
+
apiUrl?: string | undefined;
|
|
974
|
+
robotId?: string | undefined;
|
|
975
|
+
robotKey?: string | undefined;
|
|
976
|
+
iceServers?: {
|
|
977
|
+
urls: string | string[];
|
|
978
|
+
username?: string | undefined;
|
|
979
|
+
credential?: string | undefined;
|
|
980
|
+
}[] | undefined;
|
|
981
|
+
} | undefined;
|
|
982
|
+
} | undefined;
|
|
983
|
+
default?: boolean | undefined;
|
|
984
|
+
capabilities?: string[] | undefined;
|
|
985
|
+
}[];
|
|
986
|
+
teleop: {
|
|
987
|
+
cameraTopic: string;
|
|
988
|
+
cameraTopics: {
|
|
989
|
+
topic: string;
|
|
990
|
+
label?: string | undefined;
|
|
991
|
+
}[];
|
|
992
|
+
cmdVelTopic: string;
|
|
993
|
+
speedDefault: number;
|
|
994
|
+
cameraPollMs: number;
|
|
995
|
+
};
|
|
996
|
+
safety: {
|
|
997
|
+
maxLinearVelocity: number;
|
|
998
|
+
maxAngularVelocity: number;
|
|
999
|
+
workspaceLimits: {
|
|
1000
|
+
xMin: number;
|
|
1001
|
+
xMax: number;
|
|
1002
|
+
yMin: number;
|
|
1003
|
+
yMax: number;
|
|
1004
|
+
};
|
|
1005
|
+
};
|
|
1006
|
+
describer: {
|
|
1007
|
+
url: string;
|
|
1008
|
+
enabled: boolean;
|
|
1009
|
+
model: string;
|
|
1010
|
+
prompt: string;
|
|
1011
|
+
maxTokens: number;
|
|
1012
|
+
timeoutMs: number;
|
|
1013
|
+
maxImageDimension: number;
|
|
1014
|
+
apiKey?: string | undefined;
|
|
1015
|
+
};
|
|
1016
|
+
memory: {
|
|
1017
|
+
local: {
|
|
1018
|
+
storePath: string;
|
|
1019
|
+
};
|
|
1020
|
+
enabled: boolean;
|
|
1021
|
+
mem0: {
|
|
1022
|
+
inferOnWrite: boolean;
|
|
1023
|
+
historyDbPath: string;
|
|
1024
|
+
embedder?: {
|
|
1025
|
+
provider: string;
|
|
1026
|
+
config: Record<string, unknown>;
|
|
1027
|
+
} | undefined;
|
|
1028
|
+
vectorStore?: {
|
|
1029
|
+
provider: string;
|
|
1030
|
+
config: Record<string, unknown>;
|
|
1031
|
+
} | undefined;
|
|
1032
|
+
llm?: {
|
|
1033
|
+
provider: string;
|
|
1034
|
+
config: Record<string, unknown>;
|
|
1035
|
+
} | undefined;
|
|
1036
|
+
};
|
|
1037
|
+
backend: "local" | "mem0";
|
|
1038
|
+
namespace?: string | undefined;
|
|
1039
|
+
};
|
|
1040
|
+
skills: Record<string, unknown>;
|
|
1041
|
+
skillPaths: string[];
|
|
1042
|
+
skillPackages: string[];
|
|
1043
|
+
}, {
|
|
1044
|
+
rosbridge?: {
|
|
1045
|
+
url?: string | undefined;
|
|
1046
|
+
reconnect?: boolean | undefined;
|
|
1047
|
+
reconnectInterval?: number | undefined;
|
|
1048
|
+
} | undefined;
|
|
1049
|
+
local?: {
|
|
1050
|
+
domainId?: number | undefined;
|
|
1051
|
+
} | undefined;
|
|
1052
|
+
webrtc?: {
|
|
1053
|
+
signalingUrl?: string | undefined;
|
|
1054
|
+
apiUrl?: string | undefined;
|
|
1055
|
+
robotId?: string | undefined;
|
|
1056
|
+
robotKey?: string | undefined;
|
|
1057
|
+
iceServers?: {
|
|
1058
|
+
urls: string | string[];
|
|
1059
|
+
username?: string | undefined;
|
|
1060
|
+
credential?: string | undefined;
|
|
1061
|
+
}[] | undefined;
|
|
1062
|
+
} | undefined;
|
|
1063
|
+
zenoh?: {
|
|
1064
|
+
routerEndpoint?: string | undefined;
|
|
1065
|
+
domainId?: number | undefined;
|
|
1066
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
1067
|
+
bridgeNamespace?: string | undefined;
|
|
1068
|
+
} | undefined;
|
|
1069
|
+
transport?: {
|
|
1070
|
+
mode?: "rosbridge" | "local" | "webrtc" | "zenoh" | undefined;
|
|
1071
|
+
} | undefined;
|
|
1072
|
+
robot?: {
|
|
1073
|
+
name?: string | undefined;
|
|
1074
|
+
namespace?: string | undefined;
|
|
1075
|
+
cameraTopic?: string | undefined;
|
|
1076
|
+
} | undefined;
|
|
1077
|
+
robots?: {
|
|
1078
|
+
id: string;
|
|
1079
|
+
transport?: {
|
|
1080
|
+
mode: "rosbridge";
|
|
1081
|
+
rosbridge?: {
|
|
1082
|
+
url?: string | undefined;
|
|
1083
|
+
reconnect?: boolean | undefined;
|
|
1084
|
+
reconnectInterval?: number | undefined;
|
|
1085
|
+
} | undefined;
|
|
1086
|
+
} | {
|
|
1087
|
+
mode: "local";
|
|
1088
|
+
local?: {
|
|
1089
|
+
domainId?: number | undefined;
|
|
1090
|
+
} | undefined;
|
|
1091
|
+
} | {
|
|
1092
|
+
mode: "zenoh";
|
|
1093
|
+
zenoh?: {
|
|
1094
|
+
routerEndpoint?: string | undefined;
|
|
1095
|
+
domainId?: number | undefined;
|
|
1096
|
+
keyFormat?: "ros2dds" | "rmw_zenoh" | undefined;
|
|
1097
|
+
bridgeNamespace?: string | undefined;
|
|
1098
|
+
} | undefined;
|
|
1099
|
+
} | {
|
|
1100
|
+
mode: "webrtc";
|
|
1101
|
+
webrtc?: {
|
|
1102
|
+
signalingUrl?: string | undefined;
|
|
1103
|
+
apiUrl?: string | undefined;
|
|
1104
|
+
robotId?: string | undefined;
|
|
1105
|
+
robotKey?: string | undefined;
|
|
1106
|
+
iceServers?: {
|
|
1107
|
+
urls: string | string[];
|
|
1108
|
+
username?: string | undefined;
|
|
1109
|
+
credential?: string | undefined;
|
|
1110
|
+
}[] | undefined;
|
|
1111
|
+
} | undefined;
|
|
1112
|
+
} | undefined;
|
|
1113
|
+
name?: string | undefined;
|
|
1114
|
+
namespace?: string | undefined;
|
|
1115
|
+
cameraTopic?: string | undefined;
|
|
1116
|
+
default?: boolean | undefined;
|
|
1117
|
+
kind?: string | undefined;
|
|
1118
|
+
sensors?: {
|
|
1119
|
+
has_realsense?: boolean | undefined;
|
|
1120
|
+
has_lidar?: boolean | undefined;
|
|
1121
|
+
has_arm?: boolean | undefined;
|
|
1122
|
+
} | undefined;
|
|
1123
|
+
capabilities?: string[] | undefined;
|
|
1124
|
+
}[] | undefined;
|
|
1125
|
+
teleop?: {
|
|
1126
|
+
cameraTopic?: string | undefined;
|
|
1127
|
+
cameraTopics?: {
|
|
1128
|
+
topic: string;
|
|
1129
|
+
label?: string | undefined;
|
|
1130
|
+
}[] | undefined;
|
|
1131
|
+
cmdVelTopic?: string | undefined;
|
|
1132
|
+
speedDefault?: number | undefined;
|
|
1133
|
+
cameraPollMs?: number | undefined;
|
|
1134
|
+
} | undefined;
|
|
1135
|
+
safety?: {
|
|
1136
|
+
maxLinearVelocity?: number | undefined;
|
|
1137
|
+
maxAngularVelocity?: number | undefined;
|
|
1138
|
+
workspaceLimits?: {
|
|
1139
|
+
xMin?: number | undefined;
|
|
1140
|
+
xMax?: number | undefined;
|
|
1141
|
+
yMin?: number | undefined;
|
|
1142
|
+
yMax?: number | undefined;
|
|
1143
|
+
} | undefined;
|
|
1144
|
+
} | undefined;
|
|
1145
|
+
describer?: {
|
|
1146
|
+
url?: string | undefined;
|
|
1147
|
+
enabled?: boolean | undefined;
|
|
1148
|
+
apiKey?: string | undefined;
|
|
1149
|
+
model?: string | undefined;
|
|
1150
|
+
prompt?: string | undefined;
|
|
1151
|
+
maxTokens?: number | undefined;
|
|
1152
|
+
timeoutMs?: number | undefined;
|
|
1153
|
+
maxImageDimension?: number | undefined;
|
|
1154
|
+
} | undefined;
|
|
1155
|
+
memory?: {
|
|
1156
|
+
local?: {
|
|
1157
|
+
storePath?: string | undefined;
|
|
1158
|
+
} | undefined;
|
|
1159
|
+
namespace?: string | undefined;
|
|
1160
|
+
enabled?: boolean | undefined;
|
|
1161
|
+
mem0?: {
|
|
1162
|
+
inferOnWrite?: boolean | undefined;
|
|
1163
|
+
historyDbPath?: string | undefined;
|
|
1164
|
+
embedder?: {
|
|
1165
|
+
provider: string;
|
|
1166
|
+
config: Record<string, unknown>;
|
|
1167
|
+
} | undefined;
|
|
1168
|
+
vectorStore?: {
|
|
1169
|
+
provider: string;
|
|
1170
|
+
config: Record<string, unknown>;
|
|
1171
|
+
} | undefined;
|
|
1172
|
+
llm?: {
|
|
1173
|
+
provider: string;
|
|
1174
|
+
config: Record<string, unknown>;
|
|
1175
|
+
} | undefined;
|
|
1176
|
+
} | undefined;
|
|
1177
|
+
backend?: "local" | "mem0" | undefined;
|
|
1178
|
+
} | undefined;
|
|
1179
|
+
skills?: Record<string, unknown> | undefined;
|
|
1180
|
+
skillPaths?: string[] | undefined;
|
|
1181
|
+
skillPackages?: string[] | undefined;
|
|
1182
|
+
}>;
|
|
1183
|
+
export type AgenticROSConfig = z.infer<typeof AgenticROSConfigSchema>;
|
|
1184
|
+
/**
|
|
1185
|
+
* Parse and validate raw config against the schema.
|
|
1186
|
+
* Returns a fully-defaulted, typed config object.
|
|
1187
|
+
* Backward compat: if raw.followMe is set, it is merged into raw.skills.followme before parsing.
|
|
1188
|
+
*/
|
|
1189
|
+
export declare function parseConfig(raw: Record<string, unknown>): AgenticROSConfig;
|
|
1190
|
+
/**
|
|
1191
|
+
* Build TransportConfig from full config for createTransport().
|
|
1192
|
+
*/
|
|
1193
|
+
export declare function getTransportConfig(config: AgenticROSConfig): TransportConfig;
|
|
1194
|
+
export {};
|
|
1195
|
+
//# sourceMappingURL=config.d.ts.map
|