synthos 0.7.1 → 0.8.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.
Files changed (263) hide show
  1. package/README.md +215 -65
  2. package/default-pages/application.json +1 -0
  3. package/default-pages/json_tools.json +1 -1
  4. package/default-pages/oregon_trail.html +321 -0
  5. package/default-pages/oregon_trail.json +12 -0
  6. package/default-pages/sidebar_page.json +1 -0
  7. package/default-pages/solar_explorer.html +10 -18
  8. package/default-pages/solar_explorer.json +2 -2
  9. package/default-pages/two-panel_page.json +1 -0
  10. package/default-pages/us_map.html +192 -0
  11. package/default-pages/us_map.json +12 -0
  12. package/default-pages/us_map_1850.html +325 -0
  13. package/default-pages/us_map_1850.json +12 -0
  14. package/default-pages/western_cities_1850.html +526 -0
  15. package/default-pages/western_cities_1850.json +12 -0
  16. package/default-themes/{nebula-dawn.css → nebula-dawn.v2.css} +24 -0
  17. package/default-themes/{nebula-dusk.css → nebula-dusk.v2.css} +24 -0
  18. package/dist/agents/a2a/a2aProvider.d.ts +3 -0
  19. package/dist/agents/a2a/a2aProvider.d.ts.map +1 -0
  20. package/dist/agents/a2a/a2aProvider.js +126 -0
  21. package/dist/agents/a2a/a2aProvider.js.map +1 -0
  22. package/dist/agents/discovery.d.ts +30 -0
  23. package/dist/agents/discovery.d.ts.map +1 -0
  24. package/dist/agents/discovery.js +52 -0
  25. package/dist/agents/discovery.js.map +1 -0
  26. package/dist/agents/index.d.ts +7 -0
  27. package/dist/agents/index.d.ts.map +1 -0
  28. package/dist/agents/index.js +19 -0
  29. package/dist/agents/index.js.map +1 -0
  30. package/dist/agents/openclaw/gatewayManager.d.ts +113 -0
  31. package/dist/agents/openclaw/gatewayManager.d.ts.map +1 -0
  32. package/dist/agents/openclaw/gatewayManager.js +470 -0
  33. package/dist/agents/openclaw/gatewayManager.js.map +1 -0
  34. package/dist/agents/openclaw/openclawProvider.d.ts +3 -0
  35. package/dist/agents/openclaw/openclawProvider.d.ts.map +1 -0
  36. package/dist/agents/openclaw/openclawProvider.js +239 -0
  37. package/dist/agents/openclaw/openclawProvider.js.map +1 -0
  38. package/dist/agents/openclaw/sshTunnelManager.d.ts +23 -0
  39. package/dist/agents/openclaw/sshTunnelManager.d.ts.map +1 -0
  40. package/dist/agents/openclaw/sshTunnelManager.js +340 -0
  41. package/dist/agents/openclaw/sshTunnelManager.js.map +1 -0
  42. package/dist/agents/types.d.ts +64 -0
  43. package/dist/agents/types.d.ts.map +1 -0
  44. package/dist/agents/types.js +6 -0
  45. package/dist/agents/types.js.map +1 -0
  46. package/dist/connectors/airtable/connector.json +27 -0
  47. package/dist/connectors/alpha-vantage/connector.json +26 -0
  48. package/dist/connectors/brave-search/connector.json +26 -0
  49. package/dist/connectors/cloudinary/connector.json +27 -0
  50. package/dist/connectors/deepl/connector.json +28 -0
  51. package/dist/connectors/elevenlabs/connector.json +30 -0
  52. package/dist/connectors/giphy/connector.json +27 -0
  53. package/dist/connectors/github/connector.json +29 -0
  54. package/dist/connectors/huggingface/connector.json +27 -0
  55. package/dist/connectors/imgur/connector.json +29 -0
  56. package/dist/connectors/index.d.ts +1 -1
  57. package/dist/connectors/index.d.ts.map +1 -1
  58. package/dist/connectors/instagram/connector.json +43 -0
  59. package/dist/connectors/jira/connector.json +28 -0
  60. package/dist/connectors/mapbox/connector.json +26 -0
  61. package/dist/connectors/nasa/connector.json +27 -0
  62. package/dist/connectors/newsapi/connector.json +27 -0
  63. package/dist/connectors/notion/connector.json +28 -0
  64. package/dist/connectors/open-exchange-rates/connector.json +27 -0
  65. package/dist/connectors/openweathermap/connector.json +26 -0
  66. package/dist/connectors/pexels/connector.json +27 -0
  67. package/dist/connectors/registry.d.ts.map +1 -1
  68. package/dist/connectors/registry.js +42 -96
  69. package/dist/connectors/registry.js.map +1 -1
  70. package/dist/connectors/resend/connector.json +29 -0
  71. package/dist/connectors/rss2json/connector.json +27 -0
  72. package/dist/connectors/sendgrid/connector.json +27 -0
  73. package/dist/connectors/spoonacular/connector.json +28 -0
  74. package/dist/connectors/stability-ai/connector.json +27 -0
  75. package/dist/connectors/twilio/connector.json +28 -0
  76. package/dist/connectors/types.d.ts +23 -0
  77. package/dist/connectors/types.d.ts.map +1 -1
  78. package/dist/connectors/unsplash/connector.json +27 -0
  79. package/dist/connectors/wolfram-alpha/connector.json +26 -0
  80. package/dist/connectors/youtube-data/connector.json +30 -0
  81. package/dist/files.d.ts +1 -0
  82. package/dist/files.d.ts.map +1 -1
  83. package/dist/files.js +16 -1
  84. package/dist/files.js.map +1 -1
  85. package/dist/init.d.ts.map +1 -1
  86. package/dist/init.js +28 -0
  87. package/dist/init.js.map +1 -1
  88. package/dist/migrations.d.ts +3 -2
  89. package/dist/migrations.d.ts.map +1 -1
  90. package/dist/migrations.js +122 -138
  91. package/dist/migrations.js.map +1 -1
  92. package/dist/models/anthropic.d.ts +22 -0
  93. package/dist/models/anthropic.d.ts.map +1 -0
  94. package/dist/models/anthropic.js +76 -0
  95. package/dist/models/anthropic.js.map +1 -0
  96. package/dist/models/chainOfThought.d.ts +12 -0
  97. package/dist/models/chainOfThought.d.ts.map +1 -0
  98. package/dist/models/chainOfThought.js +45 -0
  99. package/dist/models/chainOfThought.js.map +1 -0
  100. package/dist/models/fireworksai.d.ts +30 -0
  101. package/dist/models/fireworksai.d.ts.map +1 -0
  102. package/dist/models/fireworksai.js +133 -0
  103. package/dist/models/fireworksai.js.map +1 -0
  104. package/dist/models/index.d.ts +7 -1
  105. package/dist/models/index.d.ts.map +1 -1
  106. package/dist/models/index.js +19 -1
  107. package/dist/models/index.js.map +1 -1
  108. package/dist/models/logCompletePrompt.d.ts +3 -0
  109. package/dist/models/logCompletePrompt.d.ts.map +1 -0
  110. package/dist/models/logCompletePrompt.js +23 -0
  111. package/dist/models/logCompletePrompt.js.map +1 -0
  112. package/dist/models/openai.d.ts +24 -0
  113. package/dist/models/openai.d.ts.map +1 -0
  114. package/dist/models/openai.js +80 -0
  115. package/dist/models/openai.js.map +1 -0
  116. package/dist/models/providers.d.ts +1 -0
  117. package/dist/models/providers.d.ts.map +1 -1
  118. package/dist/models/providers.js +12 -4
  119. package/dist/models/providers.js.map +1 -1
  120. package/dist/models/types.d.ts +34 -2
  121. package/dist/models/types.d.ts.map +1 -1
  122. package/dist/models/types.js +16 -0
  123. package/dist/models/types.js.map +1 -1
  124. package/dist/models/utils.d.ts +6 -0
  125. package/dist/models/utils.d.ts.map +1 -0
  126. package/dist/models/utils.js +21 -0
  127. package/dist/models/utils.js.map +1 -0
  128. package/dist/scripts.d.ts +2 -1
  129. package/dist/scripts.d.ts.map +1 -1
  130. package/dist/scripts.js +4 -3
  131. package/dist/scripts.js.map +1 -1
  132. package/dist/service/createCompletePrompt.d.ts +1 -1
  133. package/dist/service/createCompletePrompt.d.ts.map +1 -1
  134. package/dist/service/createCompletePrompt.js +9 -6
  135. package/dist/service/createCompletePrompt.js.map +1 -1
  136. package/dist/service/generateImage.d.ts +1 -1
  137. package/dist/service/generateImage.d.ts.map +1 -1
  138. package/dist/service/generateImage.js +3 -3
  139. package/dist/service/generateImage.js.map +1 -1
  140. package/dist/service/server.d.ts.map +1 -1
  141. package/dist/service/server.js +3 -0
  142. package/dist/service/server.js.map +1 -1
  143. package/dist/service/transformPage.d.ts +4 -2
  144. package/dist/service/transformPage.d.ts.map +1 -1
  145. package/dist/service/transformPage.js +74 -6
  146. package/dist/service/transformPage.js.map +1 -1
  147. package/dist/service/useAgentRoutes.d.ts +4 -0
  148. package/dist/service/useAgentRoutes.d.ts.map +1 -0
  149. package/dist/service/useAgentRoutes.js +389 -0
  150. package/dist/service/useAgentRoutes.js.map +1 -0
  151. package/dist/service/useApiRoutes.d.ts.map +1 -1
  152. package/dist/service/useApiRoutes.js +157 -16
  153. package/dist/service/useApiRoutes.js.map +1 -1
  154. package/dist/service/useConnectorRoutes.d.ts.map +1 -1
  155. package/dist/service/useConnectorRoutes.js +14 -3
  156. package/dist/service/useConnectorRoutes.js.map +1 -1
  157. package/dist/service/useGatewayRoutes.d.ts +4 -0
  158. package/dist/service/useGatewayRoutes.d.ts.map +1 -0
  159. package/dist/service/useGatewayRoutes.js +168 -0
  160. package/dist/service/useGatewayRoutes.js.map +1 -0
  161. package/dist/service/usePageRoutes.d.ts.map +1 -1
  162. package/dist/service/usePageRoutes.js +16 -5
  163. package/dist/service/usePageRoutes.js.map +1 -1
  164. package/dist/settings.d.ts +2 -1
  165. package/dist/settings.d.ts.map +1 -1
  166. package/dist/settings.js +4 -8
  167. package/dist/settings.js.map +1 -1
  168. package/dist/themes.d.ts +14 -0
  169. package/dist/themes.d.ts.map +1 -1
  170. package/dist/themes.js +86 -13
  171. package/dist/themes.js.map +1 -1
  172. package/package.json +10 -5
  173. package/page-scripts/helpers-v2.js +222 -0
  174. package/page-scripts/page-v2.js +656 -0
  175. package/required-pages/builder.html +1 -27
  176. package/required-pages/pages.html +745 -22
  177. package/required-pages/settings.html +819 -21
  178. package/required-pages/synthos_apis.html +56 -1
  179. package/src/agents/a2a/a2aProvider.ts +110 -0
  180. package/src/agents/discovery.ts +74 -0
  181. package/src/agents/index.ts +6 -0
  182. package/src/agents/openclaw/gatewayManager.ts +559 -0
  183. package/src/agents/openclaw/openclawProvider.ts +261 -0
  184. package/src/agents/openclaw/sshTunnelManager.ts +385 -0
  185. package/src/agents/types.ts +82 -0
  186. package/src/connectors/airtable/connector.json +27 -0
  187. package/src/connectors/alpha-vantage/connector.json +26 -0
  188. package/src/connectors/brave-search/connector.json +26 -0
  189. package/src/connectors/cloudinary/connector.json +27 -0
  190. package/src/connectors/deepl/connector.json +28 -0
  191. package/src/connectors/elevenlabs/connector.json +30 -0
  192. package/src/connectors/giphy/connector.json +27 -0
  193. package/src/connectors/github/connector.json +29 -0
  194. package/src/connectors/huggingface/connector.json +27 -0
  195. package/src/connectors/imgur/connector.json +29 -0
  196. package/src/connectors/index.ts +2 -0
  197. package/src/connectors/instagram/connector.json +43 -0
  198. package/src/connectors/jira/connector.json +28 -0
  199. package/src/connectors/mapbox/connector.json +26 -0
  200. package/src/connectors/nasa/connector.json +27 -0
  201. package/src/connectors/newsapi/connector.json +27 -0
  202. package/src/connectors/notion/connector.json +28 -0
  203. package/src/connectors/open-exchange-rates/connector.json +27 -0
  204. package/src/connectors/openweathermap/connector.json +26 -0
  205. package/src/connectors/pexels/connector.json +27 -0
  206. package/src/connectors/registry.ts +21 -97
  207. package/src/connectors/resend/connector.json +29 -0
  208. package/src/connectors/rss2json/connector.json +27 -0
  209. package/src/connectors/sendgrid/connector.json +27 -0
  210. package/src/connectors/spoonacular/connector.json +28 -0
  211. package/src/connectors/stability-ai/connector.json +27 -0
  212. package/src/connectors/twilio/connector.json +28 -0
  213. package/src/connectors/types.ts +25 -0
  214. package/src/connectors/unsplash/connector.json +27 -0
  215. package/src/connectors/wolfram-alpha/connector.json +26 -0
  216. package/src/connectors/youtube-data/connector.json +30 -0
  217. package/src/files.ts +14 -0
  218. package/src/init.ts +27 -0
  219. package/src/migrations.ts +121 -138
  220. package/src/models/anthropic.ts +89 -0
  221. package/src/models/chainOfThought.ts +56 -0
  222. package/src/models/fireworksai.ts +136 -0
  223. package/src/models/index.ts +7 -1
  224. package/src/models/logCompletePrompt.ts +25 -0
  225. package/src/models/openai.ts +90 -0
  226. package/src/models/providers.ts +12 -3
  227. package/src/models/types.ts +67 -2
  228. package/src/models/utils.ts +16 -0
  229. package/src/scripts.ts +2 -2
  230. package/src/service/createCompletePrompt.ts +3 -1
  231. package/src/service/generateImage.ts +2 -2
  232. package/src/service/server.ts +4 -0
  233. package/src/service/transformPage.ts +81 -8
  234. package/src/service/useAgentRoutes.ts +423 -0
  235. package/src/service/useApiRoutes.ts +173 -18
  236. package/src/service/useConnectorRoutes.ts +14 -3
  237. package/src/service/usePageRoutes.ts +20 -6
  238. package/src/settings.ts +6 -10
  239. package/src/themes.ts +84 -12
  240. package/tests/README.md +12 -0
  241. package/tests/anthropic.spec.ts +84 -0
  242. package/tests/chainOfThought.spec.ts +108 -0
  243. package/tests/ensureScripts.spec.ts +82 -0
  244. package/tests/files.spec.ts +233 -0
  245. package/tests/fireworksai.spec.ts +92 -0
  246. package/tests/logCompletePrompt.spec.ts +74 -0
  247. package/tests/migrations.spec.ts +169 -0
  248. package/tests/openai.spec.ts +71 -0
  249. package/tests/pages.spec.ts +328 -0
  250. package/tests/providers.spec.ts +144 -0
  251. package/tests/scripts.spec.ts +209 -0
  252. package/tests/transformPage.spec.ts +931 -0
  253. package/tests/types.spec.ts +23 -0
  254. package/default-pages/app_builder.json +0 -1
  255. package/default-pages/sidebar_builder.json +0 -1
  256. package/default-pages/two-panel_builder.json +0 -1
  257. package/images/home.png +0 -0
  258. package/images/page-management.png +0 -0
  259. package/images/settings.png +0 -0
  260. package/images/synthos-square.png +0 -0
  261. /package/default-pages/{app_builder.html → application.html} +0 -0
  262. /package/default-pages/{sidebar_builder.html → sidebar_page.html} +0 -0
  263. /package/default-pages/{two-panel_builder.html → two-panel_page.html} +0 -0
@@ -0,0 +1,470 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.httpBaseUrl = exports.getAgentStatus = exports.disconnectAgent = exports.connectAgent = exports.offEvent = exports.onEvent = exports.request = exports.getConnectionStatus = exports.getConnection = exports.disconnect = exports.connect = void 0;
4
+ const sshTunnelManager_1 = require("./sshTunnelManager");
5
+ const RPC_TIMEOUT_MS = 30_000;
6
+ const AUTH_TIMEOUT_MS = 15_000;
7
+ const MAX_RECONNECT_DELAY_MS = 60_000;
8
+ const BASE_RECONNECT_DELAY_MS = 1_000;
9
+ // ---------------------------------------------------------------------------
10
+ // Module-level connection pool
11
+ // ---------------------------------------------------------------------------
12
+ const connections = new Map();
13
+ let _nextId = 1;
14
+ function nextRequestId() {
15
+ return `req-${_nextId++}`;
16
+ }
17
+ // ---------------------------------------------------------------------------
18
+ // Public API
19
+ // ---------------------------------------------------------------------------
20
+ /**
21
+ * Connect to an OpenClaw gateway. Resolves once the auth handshake completes.
22
+ *
23
+ * Protocol (from https://docs.openclaw.ai/gateway/protocol):
24
+ * 1. Client opens WebSocket
25
+ * 2. Server sends {type:"event", event:"connect.challenge", payload:{nonce,ts}}
26
+ * 3. Client sends {type:"req", id, method:"connect", params:{auth:{token}, role, scopes, ...}}
27
+ * 4. Server sends {type:"res", id, ok:true, payload:{type:"hello-ok", policy:{tickIntervalMs}, auth:{...}}}
28
+ */
29
+ async function connect(config) {
30
+ const existing = connections.get(config.id);
31
+ if (existing?.connected && existing.authenticated) {
32
+ return existing;
33
+ }
34
+ const conn = existing ?? {
35
+ gatewayId: config.id,
36
+ ws: null,
37
+ config,
38
+ connected: false,
39
+ authenticated: false,
40
+ pendingRequests: new Map(),
41
+ eventListeners: new Map(),
42
+ lastTick: Date.now(),
43
+ tickIntervalMs: 0,
44
+ tickTimer: null,
45
+ reconnectTimer: null,
46
+ reconnectAttempts: 0,
47
+ intentionalClose: false,
48
+ };
49
+ // Update config in case it changed
50
+ conn.config = config;
51
+ conn.intentionalClose = false;
52
+ connections.set(config.id, conn);
53
+ return new Promise((resolve, reject) => {
54
+ let settled = false;
55
+ function settle(err) {
56
+ if (settled)
57
+ return;
58
+ settled = true;
59
+ clearTimeout(authTimeout);
60
+ if (err)
61
+ reject(err);
62
+ else
63
+ resolve(conn);
64
+ }
65
+ const authTimeout = setTimeout(() => {
66
+ settle(new Error(`Gateway auth timed out after ${AUTH_TIMEOUT_MS}ms: ${config.url}`));
67
+ conn.ws?.close();
68
+ }, AUTH_TIMEOUT_MS);
69
+ try {
70
+ const ws = new WebSocket(config.url);
71
+ conn.ws = ws;
72
+ ws.addEventListener('open', () => {
73
+ conn.connected = true;
74
+ conn.reconnectAttempts = 0;
75
+ // Wait for connect.challenge event from server
76
+ });
77
+ ws.addEventListener('message', (rawEvent) => {
78
+ const data = typeof rawEvent.data === 'string' ? rawEvent.data : rawEvent.data.toString();
79
+ let msg;
80
+ try {
81
+ msg = JSON.parse(data);
82
+ }
83
+ catch {
84
+ return;
85
+ }
86
+ handleMessage(conn, msg, () => settle());
87
+ });
88
+ ws.addEventListener('close', (ev) => {
89
+ const wasAuthenticated = conn.authenticated;
90
+ conn.connected = false;
91
+ conn.authenticated = false;
92
+ stopTickWatch(conn);
93
+ // Reject all pending requests
94
+ for (const [, pending] of conn.pendingRequests) {
95
+ clearTimeout(pending.timer);
96
+ pending.reject(new Error('Gateway connection closed'));
97
+ }
98
+ conn.pendingRequests.clear();
99
+ // If we never finished auth, reject the connect promise
100
+ settle(new Error(`Gateway WebSocket closed (code ${ev.code}) before auth completed`));
101
+ // Auto-reconnect only if: was previously authenticated, not intentionally closed, and config is enabled
102
+ if (wasAuthenticated && !conn.intentionalClose && config.enabled) {
103
+ scheduleReconnect(conn);
104
+ }
105
+ });
106
+ ws.addEventListener('error', () => {
107
+ // The close event will fire after this, so we don't settle here.
108
+ // Just log for diagnostics.
109
+ console.error(`[OpenClaw] WebSocket error on gateway ${config.name}`);
110
+ });
111
+ }
112
+ catch (err) {
113
+ settle(err instanceof Error ? err : new Error(String(err)));
114
+ }
115
+ });
116
+ }
117
+ exports.connect = connect;
118
+ /**
119
+ * Disconnect from a gateway.
120
+ */
121
+ function disconnect(gatewayId) {
122
+ const conn = connections.get(gatewayId);
123
+ if (!conn)
124
+ return;
125
+ conn.intentionalClose = true;
126
+ if (conn.reconnectTimer) {
127
+ clearTimeout(conn.reconnectTimer);
128
+ conn.reconnectTimer = null;
129
+ }
130
+ stopTickWatch(conn);
131
+ if (conn.ws) {
132
+ conn.ws.close();
133
+ conn.ws = null;
134
+ }
135
+ conn.connected = false;
136
+ conn.authenticated = false;
137
+ connections.delete(gatewayId);
138
+ }
139
+ exports.disconnect = disconnect;
140
+ /**
141
+ * Get an existing connection (connects on demand if not yet connected).
142
+ */
143
+ async function getConnection(config) {
144
+ const existing = connections.get(config.id);
145
+ if (existing?.connected && existing.authenticated) {
146
+ return existing;
147
+ }
148
+ return connect(config);
149
+ }
150
+ exports.getConnection = getConnection;
151
+ /**
152
+ * Get connection status without connecting.
153
+ */
154
+ function getConnectionStatus(gatewayId) {
155
+ const conn = connections.get(gatewayId);
156
+ return {
157
+ connected: conn?.connected ?? false,
158
+ authenticated: conn?.authenticated ?? false,
159
+ };
160
+ }
161
+ exports.getConnectionStatus = getConnectionStatus;
162
+ /**
163
+ * Send an RPC request to the gateway and wait for the correlated response.
164
+ */
165
+ function request(conn, method, params, opts) {
166
+ return new Promise((resolve, reject) => {
167
+ if (!conn.ws || !conn.connected || !conn.authenticated) {
168
+ reject(new Error('Gateway not connected or not authenticated'));
169
+ return;
170
+ }
171
+ const id = nextRequestId();
172
+ const timer = setTimeout(() => {
173
+ conn.pendingRequests.delete(id);
174
+ reject(new Error(`RPC timeout for method "${method}" (id: ${id})`));
175
+ }, RPC_TIMEOUT_MS);
176
+ conn.pendingRequests.set(id, { resolve, reject, timer, expectFinal: opts?.expectFinal });
177
+ const msg = { type: 'req', id, method };
178
+ if (params !== undefined) {
179
+ msg.params = params;
180
+ }
181
+ console.log(`[OpenClaw] → req: ${id} ${method}`);
182
+ conn.ws.send(JSON.stringify(msg));
183
+ });
184
+ }
185
+ exports.request = request;
186
+ /**
187
+ * Subscribe to gateway events by event type.
188
+ */
189
+ function onEvent(conn, eventType, listener) {
190
+ if (!conn.eventListeners.has(eventType)) {
191
+ conn.eventListeners.set(eventType, []);
192
+ }
193
+ conn.eventListeners.get(eventType).push(listener);
194
+ }
195
+ exports.onEvent = onEvent;
196
+ /**
197
+ * Remove a specific event listener.
198
+ */
199
+ function offEvent(conn, eventType, listener) {
200
+ const listeners = conn.eventListeners.get(eventType);
201
+ if (!listeners)
202
+ return;
203
+ const idx = listeners.indexOf(listener);
204
+ if (idx !== -1)
205
+ listeners.splice(idx, 1);
206
+ }
207
+ exports.offEvent = offEvent;
208
+ // ---------------------------------------------------------------------------
209
+ // Agent-level helpers (bridge from AgentConfig to internal GatewayConfig)
210
+ // ---------------------------------------------------------------------------
211
+ /**
212
+ * Convert an http(s) URL to a ws(s) URL for WebSocket connections.
213
+ */
214
+ function wsUrl(url) {
215
+ return url
216
+ .replace(/^https:\/\//, 'wss://')
217
+ .replace(/^http:\/\//, 'ws://')
218
+ .replace(/\/+$/, '');
219
+ }
220
+ /**
221
+ * Connect an OpenClaw agent via WebSocket.
222
+ * Converts the agent's HTTP URL to a WS URL and uses default operator role/scopes.
223
+ */
224
+ async function connectAgent(agent) {
225
+ // Start SSH tunnel first if configured
226
+ if (agent.sshTunnel?.enabled && agent.sshTunnel.command) {
227
+ const tunnelConfig = {
228
+ command: agent.sshTunnel.command,
229
+ password: agent.sshTunnel.password,
230
+ };
231
+ await (0, sshTunnelManager_1.startTunnel)(agent.id, tunnelConfig);
232
+ }
233
+ const gwConfig = {
234
+ id: agent.id,
235
+ name: agent.name,
236
+ url: wsUrl(agent.url),
237
+ token: agent.token,
238
+ enabled: true,
239
+ role: 'operator',
240
+ scopes: ['operator.read', 'operator.write', 'operator.approvals'],
241
+ };
242
+ return connect(gwConfig);
243
+ }
244
+ exports.connectAgent = connectAgent;
245
+ /**
246
+ * Disconnect an agent's WebSocket connection.
247
+ */
248
+ function disconnectAgent(agentId) {
249
+ disconnect(agentId);
250
+ (0, sshTunnelManager_1.stopTunnel)(agentId);
251
+ }
252
+ exports.disconnectAgent = disconnectAgent;
253
+ /**
254
+ * Get an agent's WebSocket connection status without connecting.
255
+ */
256
+ function getAgentStatus(agentId) {
257
+ return getConnectionStatus(agentId);
258
+ }
259
+ exports.getAgentStatus = getAgentStatus;
260
+ // ---------------------------------------------------------------------------
261
+ // Derive the HTTP base URL from the WebSocket URL
262
+ // ---------------------------------------------------------------------------
263
+ /**
264
+ * Convert a ws:// or wss:// URL to http:// or https:// for the HTTP API.
265
+ * Also passes through http/https URLs unchanged.
266
+ */
267
+ function httpBaseUrl(config) {
268
+ return config.url
269
+ .replace(/^wss:\/\//, 'https://')
270
+ .replace(/^ws:\/\//, 'http://')
271
+ .replace(/\/+$/, '');
272
+ }
273
+ exports.httpBaseUrl = httpBaseUrl;
274
+ // ---------------------------------------------------------------------------
275
+ // Internal helpers
276
+ // ---------------------------------------------------------------------------
277
+ function handleMessage(conn, msg, onAuthenticated) {
278
+ const type = msg.type;
279
+ switch (type) {
280
+ // --- Events from the server ---
281
+ case 'event': {
282
+ const eventName = msg.event;
283
+ if (eventName === 'tick' || eventName === 'health') {
284
+ if (eventName === 'tick')
285
+ conn.lastTick = Date.now();
286
+ break;
287
+ }
288
+ // Skip noisy per-token agent events
289
+ if (eventName === 'agent') {
290
+ // Still dispatch to listeners below, just don't log
291
+ }
292
+ else {
293
+ console.log(`[OpenClaw] ← event: ${eventName}`);
294
+ if (eventName === 'chat') {
295
+ console.log(`[OpenClaw] ← ${eventName} payload:\n${JSON.stringify(msg.payload, null, 2)}`);
296
+ }
297
+ }
298
+ if (eventName === 'connect.challenge') {
299
+ sendConnectRequest(conn);
300
+ break;
301
+ }
302
+ // Dispatch to registered event listeners
303
+ const listeners = conn.eventListeners.get(eventName);
304
+ if (listeners) {
305
+ for (const listener of listeners) {
306
+ try {
307
+ listener(msg.payload);
308
+ }
309
+ catch (err) {
310
+ console.error(`[OpenClaw] Event listener error (${eventName}):`, err);
311
+ }
312
+ }
313
+ }
314
+ // Wildcard listeners
315
+ const wildcardListeners = conn.eventListeners.get('*');
316
+ if (wildcardListeners) {
317
+ for (const listener of wildcardListeners) {
318
+ try {
319
+ listener(msg);
320
+ }
321
+ catch (err) {
322
+ console.error(`[OpenClaw] Wildcard listener error:`, err);
323
+ }
324
+ }
325
+ }
326
+ break;
327
+ }
328
+ // --- RPC responses (including connect handshake) ---
329
+ case 'res': {
330
+ const id = msg.id;
331
+ const ok = msg.ok;
332
+ const payload = (msg.payload ?? msg.result ?? msg.data ?? {});
333
+ const error = msg.error;
334
+ const payloadType = payload.type;
335
+ console.log(`[OpenClaw] ← res: ${id} ${ok ? (payloadType ?? 'ok') : 'ERROR'}`);
336
+ if (!ok || error) {
337
+ console.error(`[OpenClaw] ← error (id: ${id}):\n${JSON.stringify(msg, null, 2)}`);
338
+ }
339
+ // Check if this is the hello-ok response to our connect request
340
+ if (payload.type === 'hello-ok') {
341
+ conn.authenticated = true;
342
+ const policy = payload.policy;
343
+ if (policy?.tickIntervalMs && typeof policy.tickIntervalMs === 'number') {
344
+ conn.tickIntervalMs = policy.tickIntervalMs;
345
+ conn.lastTick = Date.now();
346
+ startTickWatch(conn);
347
+ }
348
+ const auth = payload.auth;
349
+ if (auth) {
350
+ conn.grantedAuth = {
351
+ role: auth.role ?? conn.config.role,
352
+ scopes: auth.scopes ?? conn.config.scopes,
353
+ deviceToken: auth.deviceToken,
354
+ };
355
+ }
356
+ onAuthenticated();
357
+ // Also resolve the pending request if tracked
358
+ const pending = conn.pendingRequests.get(id);
359
+ if (pending) {
360
+ clearTimeout(pending.timer);
361
+ conn.pendingRequests.delete(id);
362
+ pending.resolve(payload);
363
+ }
364
+ break;
365
+ }
366
+ // Regular RPC response
367
+ const pending = conn.pendingRequests.get(id);
368
+ if (pending) {
369
+ // Skip intermediate "accepted" acks for long-running requests
370
+ if (pending.expectFinal && payload.status === 'accepted') {
371
+ break;
372
+ }
373
+ clearTimeout(pending.timer);
374
+ conn.pendingRequests.delete(id);
375
+ if (!ok || error) {
376
+ const errMsg = typeof error === 'string' ? error
377
+ : error?.message ?? JSON.stringify(error ?? 'Unknown error');
378
+ pending.reject(new Error(errMsg));
379
+ }
380
+ else {
381
+ pending.resolve(payload);
382
+ }
383
+ }
384
+ break;
385
+ }
386
+ }
387
+ }
388
+ /**
389
+ * Send the `connect` RPC request after receiving the server challenge.
390
+ *
391
+ * OpenClaw protocol requires:
392
+ * - client: { id: 'gateway-client', version, platform, mode: 'backend' }
393
+ * - device: { id, publicKey, signature, signedAt, nonce }
394
+ * - auth: { token }
395
+ *
396
+ * Device signature payload (pipe-delimited):
397
+ * v2 (with nonce): "v2|deviceId|clientId|clientMode|role|scopes|signedAt|token|nonce"
398
+ * v1 (no nonce): "v1|deviceId|clientId|clientMode|role|scopes|signedAt|token"
399
+ */
400
+ function sendConnectRequest(conn) {
401
+ const id = nextRequestId();
402
+ const connectMsg = {
403
+ type: 'req',
404
+ id,
405
+ method: 'connect',
406
+ params: {
407
+ minProtocol: 3,
408
+ maxProtocol: 3,
409
+ client: {
410
+ id: 'gateway-client',
411
+ version: '1.0.0',
412
+ platform: process.platform,
413
+ mode: 'backend',
414
+ },
415
+ role: conn.config.role,
416
+ scopes: conn.config.scopes,
417
+ caps: [],
418
+ commands: [],
419
+ permissions: {},
420
+ auth: { token: conn.config.token },
421
+ locale: 'en-US',
422
+ userAgent: 'SynthOS/1.0',
423
+ },
424
+ };
425
+ // Track as a pending request so we can correlate the response
426
+ conn.pendingRequests.set(id, {
427
+ resolve: () => { },
428
+ reject: (err) => {
429
+ console.error(`[OpenClaw] Connect request failed for ${conn.config.name}: ${err.message}`);
430
+ },
431
+ timer: setTimeout(() => {
432
+ conn.pendingRequests.delete(id);
433
+ }, AUTH_TIMEOUT_MS),
434
+ });
435
+ conn.ws?.send(JSON.stringify(connectMsg));
436
+ }
437
+ /** Monitor server tick events — close if stalled (2x interval with no tick). */
438
+ function startTickWatch(conn) {
439
+ stopTickWatch(conn);
440
+ if (conn.tickIntervalMs <= 0)
441
+ return;
442
+ conn.tickTimer = setInterval(() => {
443
+ const elapsed = Date.now() - conn.lastTick;
444
+ if (elapsed > conn.tickIntervalMs * 2) {
445
+ conn.ws?.close(4000, 'tick stall');
446
+ }
447
+ }, conn.tickIntervalMs);
448
+ }
449
+ function stopTickWatch(conn) {
450
+ if (conn.tickTimer) {
451
+ clearInterval(conn.tickTimer);
452
+ conn.tickTimer = null;
453
+ }
454
+ }
455
+ function scheduleReconnect(conn) {
456
+ if (conn.reconnectTimer || conn.intentionalClose)
457
+ return;
458
+ conn.reconnectAttempts++;
459
+ const delay = Math.min(BASE_RECONNECT_DELAY_MS * Math.pow(2, conn.reconnectAttempts - 1), MAX_RECONNECT_DELAY_MS);
460
+ conn.reconnectTimer = setTimeout(async () => {
461
+ conn.reconnectTimer = null;
462
+ try {
463
+ await connect(conn.config);
464
+ }
465
+ catch (err) {
466
+ console.error(`[OpenClaw] Reconnect failed for ${conn.config.name}:`, err instanceof Error ? err.message : err);
467
+ }
468
+ }, delay);
469
+ }
470
+ //# sourceMappingURL=gatewayManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gatewayManager.js","sourceRoot":"","sources":["../../../src/agents/openclaw/gatewayManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { AgentProvider } from '../types';
2
+ export declare const openclawProvider: AgentProvider;
3
+ //# sourceMappingURL=openclawProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openclawProvider.d.ts","sourceRoot":"","sources":["../../../src/agents/openclaw/openclawProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAA0C,aAAa,EAA2B,MAAM,UAAU,CAAC;AA2D1G,eAAO,MAAM,gBAAgB,EAAE,aAwM9B,CAAC"}