@elizaos/plugin-browser 2.0.0-alpha.9 → 2.0.11-beta.7

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 (256) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +98 -83
  3. package/auto-enable.ts +24 -0
  4. package/dist/actions/browser-autofill-login.d.ts +43 -0
  5. package/dist/actions/browser-autofill-login.d.ts.map +1 -0
  6. package/dist/actions/browser-autofill-login.js +278 -0
  7. package/dist/actions/browser-autofill-login.js.map +1 -0
  8. package/dist/actions/browser.d.ts +11 -0
  9. package/dist/actions/browser.d.ts.map +1 -0
  10. package/dist/actions/browser.js +412 -0
  11. package/dist/actions/browser.js.map +1 -0
  12. package/dist/actions/manage-browser-bridge.d.ts +34 -0
  13. package/dist/actions/manage-browser-bridge.d.ts.map +1 -0
  14. package/dist/actions/manage-browser-bridge.js +572 -0
  15. package/dist/actions/manage-browser-bridge.js.map +1 -0
  16. package/dist/bridge-policy.d.ts +10 -0
  17. package/dist/bridge-policy.d.ts.map +1 -0
  18. package/dist/bridge-policy.js +37 -0
  19. package/dist/bridge-policy.js.map +1 -0
  20. package/dist/bridge-readiness.d.ts +16 -0
  21. package/dist/bridge-readiness.d.ts.map +1 -0
  22. package/dist/bridge-readiness.js +82 -0
  23. package/dist/bridge-readiness.js.map +1 -0
  24. package/dist/bridge-records.d.ts +9 -0
  25. package/dist/bridge-records.d.ts.map +1 -0
  26. package/dist/bridge-records.js +37 -0
  27. package/dist/bridge-records.js.map +1 -0
  28. package/dist/browser-capture-hooks.d.ts +9 -0
  29. package/dist/browser-capture-hooks.d.ts.map +1 -0
  30. package/dist/browser-capture-hooks.js +15 -0
  31. package/dist/browser-capture-hooks.js.map +1 -0
  32. package/dist/browser-service.d.ts +103 -0
  33. package/dist/browser-service.d.ts.map +1 -0
  34. package/dist/browser-service.js +186 -0
  35. package/dist/browser-service.js.map +1 -0
  36. package/dist/browser-workspace-hooks.d.ts +14 -0
  37. package/dist/browser-workspace-hooks.d.ts.map +1 -0
  38. package/dist/browser-workspace-hooks.js +15 -0
  39. package/dist/browser-workspace-hooks.js.map +1 -0
  40. package/dist/companion-auth.d.ts +34 -0
  41. package/dist/companion-auth.d.ts.map +1 -0
  42. package/dist/companion-auth.js +98 -0
  43. package/dist/companion-auth.js.map +1 -0
  44. package/dist/contracts.d.ts +284 -0
  45. package/dist/contracts.d.ts.map +1 -0
  46. package/dist/contracts.js +56 -0
  47. package/dist/contracts.js.map +1 -0
  48. package/dist/index.d.ts +30 -16
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +76 -90
  51. package/dist/index.js.map +1 -1
  52. package/dist/lifeops-session-contracts.d.ts +46 -0
  53. package/dist/lifeops-session-contracts.d.ts.map +1 -0
  54. package/dist/lifeops-session-contracts.js +1 -0
  55. package/dist/lifeops-session-contracts.js.map +1 -0
  56. package/dist/message-adapter.d.ts +9 -0
  57. package/dist/message-adapter.d.ts.map +1 -0
  58. package/dist/message-adapter.js +104 -0
  59. package/dist/message-adapter.js.map +1 -0
  60. package/dist/packaging.d.ts +27 -0
  61. package/dist/packaging.d.ts.map +1 -0
  62. package/dist/packaging.js +571 -0
  63. package/dist/packaging.js.map +1 -0
  64. package/dist/password-manager-bridge.d.ts +50 -0
  65. package/dist/password-manager-bridge.d.ts.map +1 -0
  66. package/dist/password-manager-bridge.js +437 -0
  67. package/dist/password-manager-bridge.js.map +1 -0
  68. package/dist/plugin.d.ts +10 -0
  69. package/dist/plugin.d.ts.map +1 -0
  70. package/dist/plugin.js +168 -0
  71. package/dist/plugin.js.map +1 -0
  72. package/dist/providers/workspace.d.ts +13 -0
  73. package/dist/providers/workspace.d.ts.map +1 -0
  74. package/dist/providers/workspace.js +64 -0
  75. package/dist/providers/workspace.js.map +1 -0
  76. package/dist/routes/bridge.d.ts +37 -0
  77. package/dist/routes/bridge.d.ts.map +1 -0
  78. package/dist/routes/bridge.js +844 -0
  79. package/dist/routes/bridge.js.map +1 -0
  80. package/dist/routes/workspace-account-gate.d.ts +29 -0
  81. package/dist/routes/workspace-account-gate.d.ts.map +1 -0
  82. package/dist/routes/workspace-account-gate.js +147 -0
  83. package/dist/routes/workspace-account-gate.js.map +1 -0
  84. package/dist/routes/workspace-setup.d.ts +10 -0
  85. package/dist/routes/workspace-setup.d.ts.map +1 -0
  86. package/dist/routes/workspace-setup.js +65 -0
  87. package/dist/routes/workspace-setup.js.map +1 -0
  88. package/dist/routes/workspace.d.ts +20 -0
  89. package/dist/routes/workspace.d.ts.map +1 -0
  90. package/dist/routes/workspace.js +276 -0
  91. package/dist/routes/workspace.js.map +1 -0
  92. package/dist/schema.d.ts +2326 -0
  93. package/dist/schema.d.ts.map +1 -0
  94. package/dist/schema.js +133 -0
  95. package/dist/schema.js.map +1 -0
  96. package/dist/service.d.ts +30 -0
  97. package/dist/service.d.ts.map +1 -0
  98. package/dist/service.js +5 -0
  99. package/dist/service.js.map +1 -0
  100. package/dist/targets/bridge-target.d.ts +31 -0
  101. package/dist/targets/bridge-target.d.ts.map +1 -0
  102. package/dist/targets/bridge-target.js +98 -0
  103. package/dist/targets/bridge-target.js.map +1 -0
  104. package/dist/targets/stagehand-target.d.ts +3 -0
  105. package/dist/targets/stagehand-target.d.ts.map +1 -0
  106. package/dist/targets/stagehand-target.js +187 -0
  107. package/dist/targets/stagehand-target.js.map +1 -0
  108. package/dist/workspace/browser-capture.d.ts +41 -0
  109. package/dist/workspace/browser-capture.d.ts.map +1 -0
  110. package/dist/workspace/browser-capture.js +159 -0
  111. package/dist/workspace/browser-capture.js.map +1 -0
  112. package/dist/workspace/browser-workspace-desktop.d.ts +19 -0
  113. package/dist/workspace/browser-workspace-desktop.d.ts.map +1 -0
  114. package/dist/workspace/browser-workspace-desktop.js +1578 -0
  115. package/dist/workspace/browser-workspace-desktop.js.map +1 -0
  116. package/dist/workspace/browser-workspace-elements.d.ts +42 -0
  117. package/dist/workspace/browser-workspace-elements.d.ts.map +1 -0
  118. package/dist/workspace/browser-workspace-elements.js +547 -0
  119. package/dist/workspace/browser-workspace-elements.js.map +1 -0
  120. package/dist/workspace/browser-workspace-forms.d.ts +19 -0
  121. package/dist/workspace/browser-workspace-forms.d.ts.map +1 -0
  122. package/dist/workspace/browser-workspace-forms.js +277 -0
  123. package/dist/workspace/browser-workspace-forms.js.map +1 -0
  124. package/dist/workspace/browser-workspace-helpers.d.ts +32 -0
  125. package/dist/workspace/browser-workspace-helpers.d.ts.map +1 -0
  126. package/dist/workspace/browser-workspace-helpers.js +232 -0
  127. package/dist/workspace/browser-workspace-helpers.js.map +1 -0
  128. package/dist/workspace/browser-workspace-jsdom.d.ts +16 -0
  129. package/dist/workspace/browser-workspace-jsdom.d.ts.map +1 -0
  130. package/dist/workspace/browser-workspace-jsdom.js +233 -0
  131. package/dist/workspace/browser-workspace-jsdom.js.map +1 -0
  132. package/dist/workspace/browser-workspace-network.d.ts +7 -0
  133. package/dist/workspace/browser-workspace-network.d.ts.map +1 -0
  134. package/dist/workspace/browser-workspace-network.js +145 -0
  135. package/dist/workspace/browser-workspace-network.js.map +1 -0
  136. package/dist/workspace/browser-workspace-snapshots.d.ts +14 -0
  137. package/dist/workspace/browser-workspace-snapshots.d.ts.map +1 -0
  138. package/dist/workspace/browser-workspace-snapshots.js +144 -0
  139. package/dist/workspace/browser-workspace-snapshots.js.map +1 -0
  140. package/dist/workspace/browser-workspace-state.d.ts +24 -0
  141. package/dist/workspace/browser-workspace-state.d.ts.map +1 -0
  142. package/dist/workspace/browser-workspace-state.js +155 -0
  143. package/dist/workspace/browser-workspace-state.js.map +1 -0
  144. package/dist/workspace/browser-workspace-types.d.ts +345 -0
  145. package/dist/workspace/browser-workspace-types.d.ts.map +1 -0
  146. package/dist/workspace/browser-workspace-types.js +11 -0
  147. package/dist/workspace/browser-workspace-types.js.map +1 -0
  148. package/dist/workspace/browser-workspace-web.d.ts +8 -0
  149. package/dist/workspace/browser-workspace-web.d.ts.map +1 -0
  150. package/dist/workspace/browser-workspace-web.js +1342 -0
  151. package/dist/workspace/browser-workspace-web.js.map +1 -0
  152. package/dist/workspace/browser-workspace.d.ts +39 -0
  153. package/dist/workspace/browser-workspace.d.ts.map +1 -0
  154. package/dist/workspace/browser-workspace.js +958 -0
  155. package/dist/workspace/browser-workspace.js.map +1 -0
  156. package/dist/workspace/index.d.ts +26 -0
  157. package/dist/workspace/index.d.ts.map +1 -0
  158. package/dist/workspace/index.js +3 -0
  159. package/dist/workspace/index.js.map +1 -0
  160. package/dist/workspace.d.ts +2 -0
  161. package/dist/workspace.d.ts.map +1 -0
  162. package/dist/workspace.js +2 -0
  163. package/dist/workspace.js.map +1 -0
  164. package/package.json +71 -110
  165. package/dist/actions/click.d.ts +0 -3
  166. package/dist/actions/click.d.ts.map +0 -1
  167. package/dist/actions/click.js +0 -158
  168. package/dist/actions/click.js.map +0 -1
  169. package/dist/actions/extract.d.ts +0 -3
  170. package/dist/actions/extract.d.ts.map +0 -1
  171. package/dist/actions/extract.js +0 -168
  172. package/dist/actions/extract.js.map +0 -1
  173. package/dist/actions/index.d.ts +0 -7
  174. package/dist/actions/index.d.ts.map +0 -1
  175. package/dist/actions/index.js +0 -7
  176. package/dist/actions/index.js.map +0 -1
  177. package/dist/actions/navigate.d.ts +0 -3
  178. package/dist/actions/navigate.d.ts.map +0 -1
  179. package/dist/actions/navigate.js +0 -187
  180. package/dist/actions/navigate.js.map +0 -1
  181. package/dist/actions/screenshot.d.ts +0 -3
  182. package/dist/actions/screenshot.d.ts.map +0 -1
  183. package/dist/actions/screenshot.js +0 -167
  184. package/dist/actions/screenshot.js.map +0 -1
  185. package/dist/actions/select.d.ts +0 -3
  186. package/dist/actions/select.d.ts.map +0 -1
  187. package/dist/actions/select.js +0 -167
  188. package/dist/actions/select.js.map +0 -1
  189. package/dist/actions/type.d.ts +0 -3
  190. package/dist/actions/type.d.ts.map +0 -1
  191. package/dist/actions/type.js +0 -167
  192. package/dist/actions/type.js.map +0 -1
  193. package/dist/cli/index.d.ts +0 -8
  194. package/dist/cli/index.d.ts.map +0 -1
  195. package/dist/cli/index.js +0 -13
  196. package/dist/cli/index.js.map +0 -1
  197. package/dist/cli/register.d.ts +0 -20
  198. package/dist/cli/register.d.ts.map +0 -1
  199. package/dist/cli/register.js +0 -403
  200. package/dist/cli/register.js.map +0 -1
  201. package/dist/providerRelevance.d.ts +0 -4
  202. package/dist/providerRelevance.d.ts.map +0 -1
  203. package/dist/providerRelevance.js +0 -33
  204. package/dist/providerRelevance.js.map +0 -1
  205. package/dist/providers/browser-state.d.ts +0 -3
  206. package/dist/providers/browser-state.d.ts.map +0 -1
  207. package/dist/providers/browser-state.js +0 -72
  208. package/dist/providers/browser-state.js.map +0 -1
  209. package/dist/providers/index.d.ts +0 -2
  210. package/dist/providers/index.d.ts.map +0 -1
  211. package/dist/providers/index.js +0 -2
  212. package/dist/providers/index.js.map +0 -1
  213. package/dist/services/browser-service.d.ts +0 -32
  214. package/dist/services/browser-service.d.ts.map +0 -1
  215. package/dist/services/browser-service.js +0 -213
  216. package/dist/services/browser-service.js.map +0 -1
  217. package/dist/services/index.d.ts +0 -4
  218. package/dist/services/index.d.ts.map +0 -1
  219. package/dist/services/index.js +0 -4
  220. package/dist/services/index.js.map +0 -1
  221. package/dist/services/process-manager.d.ts +0 -24
  222. package/dist/services/process-manager.d.ts.map +0 -1
  223. package/dist/services/process-manager.js +0 -270
  224. package/dist/services/process-manager.js.map +0 -1
  225. package/dist/services/websocket-client.d.ts +0 -35
  226. package/dist/services/websocket-client.d.ts.map +0 -1
  227. package/dist/services/websocket-client.js +0 -221
  228. package/dist/services/websocket-client.js.map +0 -1
  229. package/dist/types.d.ts +0 -101
  230. package/dist/types.d.ts.map +0 -1
  231. package/dist/types.js +0 -2
  232. package/dist/types.js.map +0 -1
  233. package/dist/utils/captcha.d.ts +0 -33
  234. package/dist/utils/captcha.d.ts.map +0 -1
  235. package/dist/utils/captcha.js +0 -219
  236. package/dist/utils/captcha.js.map +0 -1
  237. package/dist/utils/errors.d.ts +0 -37
  238. package/dist/utils/errors.d.ts.map +0 -1
  239. package/dist/utils/errors.js +0 -81
  240. package/dist/utils/errors.js.map +0 -1
  241. package/dist/utils/index.d.ts +0 -5
  242. package/dist/utils/index.d.ts.map +0 -1
  243. package/dist/utils/index.js +0 -5
  244. package/dist/utils/index.js.map +0 -1
  245. package/dist/utils/retry.d.ts +0 -26
  246. package/dist/utils/retry.d.ts.map +0 -1
  247. package/dist/utils/retry.js +0 -55
  248. package/dist/utils/retry.js.map +0 -1
  249. package/dist/utils/security.d.ts +0 -27
  250. package/dist/utils/security.d.ts.map +0 -1
  251. package/dist/utils/security.js +0 -139
  252. package/dist/utils/security.js.map +0 -1
  253. package/dist/utils/url.d.ts +0 -12
  254. package/dist/utils/url.d.ts.map +0 -1
  255. package/dist/utils/url.js +0 -39
  256. package/dist/utils/url.js.map +0 -1
@@ -1,403 +0,0 @@
1
- import { BrowserService } from "../services/browser-service.js";
2
- /**
3
- * Get the Browser service from runtime
4
- */
5
- function getBrowserService(ctx) {
6
- const runtime = ctx.getRuntime?.();
7
- if (!runtime) {
8
- return null;
9
- }
10
- return runtime.getService(BrowserService.serviceType);
11
- }
12
- /**
13
- * Handle errors in browser commands
14
- */
15
- function handleError(error) {
16
- const message = error instanceof Error ? error.message : String(error);
17
- console.error(`Error: ${message}`);
18
- process.exit(1);
19
- }
20
- /**
21
- * Ensure service is available
22
- */
23
- function requireService(ctx) {
24
- const service = getBrowserService(ctx);
25
- if (!service) {
26
- handleError("Browser service not available. Ensure the agent runtime is initialized.");
27
- }
28
- return service;
29
- }
30
- /**
31
- * Format navigation result for display
32
- */
33
- function formatNavigationResult(result) {
34
- return [
35
- `Success: ${result.success}`,
36
- `URL: ${result.url}`,
37
- `Title: ${result.title}`,
38
- ].join("\n");
39
- }
40
- /**
41
- * Register Browser CLI commands
42
- *
43
- * Commands:
44
- * - browser status: Show browser service status
45
- * - browser start: Start a browser session
46
- * - browser stop: Stop browser service
47
- * - browser navigate: Navigate to a URL
48
- * - browser click: Click an element
49
- * - browser type: Type text into a field
50
- * - browser select: Select an option from dropdown
51
- * - browser extract: Extract information from the page
52
- * - browser screenshot: Take a screenshot
53
- * - browser back/forward/refresh: Navigation controls
54
- *
55
- * @param ctx - CLI context with program and optional runtime
56
- */
57
- export function registerBrowserCli(ctx) {
58
- const browser = ctx.program
59
- .command("browser")
60
- .description("Browser automation commands")
61
- .option("--json", "Output as JSON", false);
62
- // Status command
63
- browser
64
- .command("status")
65
- .description("Show browser service status")
66
- .action(async (_opts, cmd) => {
67
- const parent = cmd.parent?.opts();
68
- const service = getBrowserService(ctx);
69
- const status = {
70
- serviceAvailable: service !== null,
71
- serverConnected: service?.getClient?.()?.isConnected?.() ?? false,
72
- };
73
- let currentSession;
74
- if (service) {
75
- currentSession = await service.getCurrentSession();
76
- }
77
- const output = {
78
- ...status,
79
- hasActiveSession: !!currentSession,
80
- sessionId: currentSession?.id ?? null,
81
- };
82
- if (parent?.json) {
83
- console.log(JSON.stringify(output, null, 2));
84
- }
85
- else {
86
- console.log("Browser Service Status:");
87
- console.log(` Service available: ${output.serviceAvailable}`);
88
- console.log(` Server connected: ${output.serverConnected}`);
89
- console.log(` Active session: ${output.hasActiveSession ? output.sessionId : "none"}`);
90
- }
91
- });
92
- // Start command
93
- browser
94
- .command("start")
95
- .description("Start or ensure browser session is active")
96
- .action(async (_opts, cmd) => {
97
- const parent = cmd.parent?.opts();
98
- const service = requireService(ctx);
99
- const session = await service.getOrCreateSession();
100
- if (parent?.json) {
101
- console.log(JSON.stringify({ sessionId: session.id, createdAt: session.createdAt }, null, 2));
102
- }
103
- else {
104
- console.log(`Browser session active: ${session.id}`);
105
- }
106
- });
107
- // Stop command
108
- browser
109
- .command("stop")
110
- .description("Stop browser service")
111
- .action(async (_opts, cmd) => {
112
- const parent = cmd.parent?.opts();
113
- const service = requireService(ctx);
114
- await service.stop();
115
- if (parent?.json) {
116
- console.log(JSON.stringify({ stopped: true }, null, 2));
117
- }
118
- else {
119
- console.log("Browser service stopped");
120
- }
121
- });
122
- // Navigate command
123
- browser
124
- .command("navigate")
125
- .description("Navigate to a URL")
126
- .argument("<url>", "URL to navigate to")
127
- .action(async (url, _opts, cmd) => {
128
- const parent = cmd.parent?.opts();
129
- const service = requireService(ctx);
130
- const client = service.getClient();
131
- const session = await service.getOrCreateSession();
132
- const result = await client.navigate(session.id, url);
133
- if (parent?.json) {
134
- console.log(JSON.stringify(result, null, 2));
135
- }
136
- else {
137
- console.log(formatNavigationResult(result));
138
- }
139
- });
140
- // Go back command
141
- browser
142
- .command("back")
143
- .description("Navigate back in browser history")
144
- .action(async (_opts, cmd) => {
145
- const parent = cmd.parent?.opts();
146
- const service = requireService(ctx);
147
- const client = service.getClient();
148
- const session = await service.getCurrentSession();
149
- if (!session) {
150
- handleError("No active browser session");
151
- }
152
- const result = await client.goBack(session.id);
153
- if (parent?.json) {
154
- console.log(JSON.stringify(result, null, 2));
155
- }
156
- else {
157
- console.log(formatNavigationResult(result));
158
- }
159
- });
160
- // Go forward command
161
- browser
162
- .command("forward")
163
- .description("Navigate forward in browser history")
164
- .action(async (_opts, cmd) => {
165
- const parent = cmd.parent?.opts();
166
- const service = requireService(ctx);
167
- const client = service.getClient();
168
- const session = await service.getCurrentSession();
169
- if (!session) {
170
- handleError("No active browser session");
171
- }
172
- const result = await client.goForward(session.id);
173
- if (parent?.json) {
174
- console.log(JSON.stringify(result, null, 2));
175
- }
176
- else {
177
- console.log(formatNavigationResult(result));
178
- }
179
- });
180
- // Refresh command
181
- browser
182
- .command("refresh")
183
- .description("Refresh the current page")
184
- .action(async (_opts, cmd) => {
185
- const parent = cmd.parent?.opts();
186
- const service = requireService(ctx);
187
- const client = service.getClient();
188
- const session = await service.getCurrentSession();
189
- if (!session) {
190
- handleError("No active browser session");
191
- }
192
- const result = await client.refresh(session.id);
193
- if (parent?.json) {
194
- console.log(JSON.stringify(result, null, 2));
195
- }
196
- else {
197
- console.log(formatNavigationResult(result));
198
- }
199
- });
200
- // Click command
201
- browser
202
- .command("click")
203
- .description("Click an element on the page")
204
- .argument("<description>", "Description of the element to click (natural language)")
205
- .action(async (description, _opts, cmd) => {
206
- const parent = cmd.parent?.opts();
207
- const service = requireService(ctx);
208
- const client = service.getClient();
209
- const session = await service.getCurrentSession();
210
- if (!session) {
211
- handleError("No active browser session");
212
- }
213
- const result = await client.click(session.id, description);
214
- if (parent?.json) {
215
- console.log(JSON.stringify(result.data ?? { success: true }, null, 2));
216
- }
217
- else {
218
- console.log(`Clicked: ${description}`);
219
- if (result.data) {
220
- console.log(JSON.stringify(result.data, null, 2));
221
- }
222
- }
223
- });
224
- // Type command
225
- browser
226
- .command("type")
227
- .description("Type text into a field")
228
- .argument("<text>", "Text to type")
229
- .requiredOption("--field <description>", "Description of the field (natural language)")
230
- .action(async (text, opts, cmd) => {
231
- const parent = cmd.parent?.opts();
232
- const service = requireService(ctx);
233
- const client = service.getClient();
234
- const session = await service.getCurrentSession();
235
- if (!session) {
236
- handleError("No active browser session");
237
- }
238
- const result = await client.type(session.id, text, opts.field);
239
- if (parent?.json) {
240
- console.log(JSON.stringify(result.data ?? { success: true }, null, 2));
241
- }
242
- else {
243
- console.log(`Typed "${text}" into: ${opts.field}`);
244
- if (result.data) {
245
- console.log(JSON.stringify(result.data, null, 2));
246
- }
247
- }
248
- });
249
- // Select command
250
- browser
251
- .command("select")
252
- .description("Select an option from a dropdown")
253
- .argument("<option>", "Option to select")
254
- .requiredOption("--dropdown <description>", "Description of the dropdown (natural language)")
255
- .action(async (option, opts, cmd) => {
256
- const parent = cmd.parent?.opts();
257
- const service = requireService(ctx);
258
- const client = service.getClient();
259
- const session = await service.getCurrentSession();
260
- if (!session) {
261
- handleError("No active browser session");
262
- }
263
- const result = await client.select(session.id, option, opts.dropdown);
264
- if (parent?.json) {
265
- console.log(JSON.stringify(result.data ?? { success: true }, null, 2));
266
- }
267
- else {
268
- console.log(`Selected "${option}" from: ${opts.dropdown}`);
269
- if (result.data) {
270
- console.log(JSON.stringify(result.data, null, 2));
271
- }
272
- }
273
- });
274
- // Extract command
275
- browser
276
- .command("extract")
277
- .description("Extract information from the page")
278
- .argument("<instruction>", "What to extract (natural language)")
279
- .action(async (instruction, _opts, cmd) => {
280
- const parent = cmd.parent?.opts();
281
- const service = requireService(ctx);
282
- const client = service.getClient();
283
- const session = await service.getCurrentSession();
284
- if (!session) {
285
- handleError("No active browser session");
286
- }
287
- const result = await client.extract(session.id, instruction);
288
- if (parent?.json) {
289
- console.log(JSON.stringify(result.data ?? {}, null, 2));
290
- }
291
- else {
292
- console.log(`Extracted: ${instruction}`);
293
- console.log(JSON.stringify(result.data ?? {}, null, 2));
294
- }
295
- });
296
- // Screenshot command
297
- browser
298
- .command("screenshot")
299
- .description("Take a screenshot of the current page")
300
- .option("--output <path>", "Output file path")
301
- .action(async (opts, cmd) => {
302
- const parent = cmd.parent?.opts();
303
- const service = requireService(ctx);
304
- const client = service.getClient();
305
- const session = await service.getCurrentSession();
306
- if (!session) {
307
- handleError("No active browser session");
308
- }
309
- const result = await client.screenshot(session.id);
310
- const data = result.data;
311
- if (parent?.json) {
312
- console.log(JSON.stringify({
313
- success: !!data?.screenshot,
314
- hasScreenshot: !!data?.screenshot,
315
- outputPath: opts.output ?? null,
316
- }, null, 2));
317
- }
318
- else {
319
- if (data?.screenshot) {
320
- if (opts.output) {
321
- const fs = await import("node:fs/promises");
322
- const buffer = Buffer.from(data.screenshot, "base64");
323
- await fs.writeFile(opts.output, buffer);
324
- console.log(`Screenshot saved to: ${opts.output}`);
325
- }
326
- else {
327
- console.log("Screenshot captured (use --output to save to file)");
328
- console.log(`Base64 length: ${data.screenshot.length}`);
329
- }
330
- }
331
- else {
332
- console.log("Failed to capture screenshot");
333
- }
334
- }
335
- });
336
- // State command
337
- browser
338
- .command("state")
339
- .description("Get current browser state")
340
- .action(async (_opts, cmd) => {
341
- const parent = cmd.parent?.opts();
342
- const service = requireService(ctx);
343
- const client = service.getClient();
344
- const session = await service.getCurrentSession();
345
- if (!session) {
346
- handleError("No active browser session");
347
- }
348
- const state = await client.getState(session.id);
349
- if (parent?.json) {
350
- console.log(JSON.stringify(state, null, 2));
351
- }
352
- else {
353
- console.log("Browser State:");
354
- console.log(` URL: ${state.url}`);
355
- console.log(` Title: ${state.title}`);
356
- console.log(` Session ID: ${state.sessionId}`);
357
- }
358
- });
359
- // Solve captcha command
360
- browser
361
- .command("solve-captcha")
362
- .description("Attempt to solve a captcha on the page")
363
- .action(async (_opts, cmd) => {
364
- const parent = cmd.parent?.opts();
365
- const service = requireService(ctx);
366
- const client = service.getClient();
367
- const session = await service.getCurrentSession();
368
- if (!session) {
369
- handleError("No active browser session");
370
- }
371
- const result = await client.solveCaptcha(session.id);
372
- if (parent?.json) {
373
- console.log(JSON.stringify(result.data ?? { attempted: true }, null, 2));
374
- }
375
- else {
376
- console.log("Captcha solve attempted");
377
- if (result.data) {
378
- console.log(JSON.stringify(result.data, null, 2));
379
- }
380
- }
381
- });
382
- // Health command
383
- browser
384
- .command("health")
385
- .description("Check browser server health")
386
- .action(async (_opts, cmd) => {
387
- const parent = cmd.parent?.opts();
388
- const service = getBrowserService(ctx);
389
- let healthy = false;
390
- if (service) {
391
- const client = service.getClient();
392
- healthy = await client.health();
393
- }
394
- if (parent?.json) {
395
- console.log(JSON.stringify({ healthy, serviceAvailable: !!service }, null, 2));
396
- }
397
- else {
398
- console.log(`Browser server health: ${healthy ? "OK" : "UNHEALTHY"}`);
399
- console.log(`Service available: ${!!service}`);
400
- }
401
- });
402
- }
403
- //# sourceMappingURL=register.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/cli/register.ts"],"names":[],"mappings":"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","sourcesContent":["import type { CliContext } from \"@elizaos/plugin-cli\";\nimport { BrowserService, type Session } from \"../services/browser-service.js\";\n\n/**\n * Get the Browser service from runtime\n */\nfunction getBrowserService(ctx: CliContext): BrowserService | null {\n\tconst runtime = ctx.getRuntime?.();\n\tif (!runtime) {\n\t\treturn null;\n\t}\n\treturn runtime.getService(\n\t\tBrowserService.serviceType,\n\t) as BrowserService | null;\n}\n\n/**\n * Handle errors in browser commands\n */\nfunction handleError(error: Error | string): never {\n\tconst message = error instanceof Error ? error.message : String(error);\n\tconsole.error(`Error: ${message}`);\n\tprocess.exit(1);\n}\n\n/**\n * Ensure service is available\n */\nfunction requireService(ctx: CliContext): BrowserService {\n\tconst service = getBrowserService(ctx);\n\tif (!service) {\n\t\thandleError(\n\t\t\t\"Browser service not available. Ensure the agent runtime is initialized.\",\n\t\t);\n\t}\n\treturn service;\n}\n\n/**\n * Format navigation result for display\n */\nfunction formatNavigationResult(result: {\n\tsuccess: boolean;\n\turl: string;\n\ttitle: string;\n}): string {\n\treturn [\n\t\t`Success: ${result.success}`,\n\t\t`URL: ${result.url}`,\n\t\t`Title: ${result.title}`,\n\t].join(\"\\n\");\n}\n\n/**\n * Register Browser CLI commands\n *\n * Commands:\n * - browser status: Show browser service status\n * - browser start: Start a browser session\n * - browser stop: Stop browser service\n * - browser navigate: Navigate to a URL\n * - browser click: Click an element\n * - browser type: Type text into a field\n * - browser select: Select an option from dropdown\n * - browser extract: Extract information from the page\n * - browser screenshot: Take a screenshot\n * - browser back/forward/refresh: Navigation controls\n *\n * @param ctx - CLI context with program and optional runtime\n */\nexport function registerBrowserCli(ctx: CliContext): void {\n\tconst browser = ctx.program\n\t\t.command(\"browser\")\n\t\t.description(\"Browser automation commands\")\n\t\t.option(\"--json\", \"Output as JSON\", false);\n\n\t// Status command\n\tbrowser\n\t\t.command(\"status\")\n\t\t.description(\"Show browser service status\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = getBrowserService(ctx);\n\n\t\t\tconst status = {\n\t\t\t\tserviceAvailable: service !== null,\n\t\t\t\tserverConnected: service?.getClient?.()?.isConnected?.() ?? false,\n\t\t\t};\n\n\t\t\tlet currentSession: Session | undefined;\n\t\t\tif (service) {\n\t\t\t\tcurrentSession = await service.getCurrentSession();\n\t\t\t}\n\n\t\t\tconst output = {\n\t\t\t\t...status,\n\t\t\t\thasActiveSession: !!currentSession,\n\t\t\t\tsessionId: currentSession?.id ?? null,\n\t\t\t};\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(output, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Browser Service Status:\");\n\t\t\t\tconsole.log(` Service available: ${output.serviceAvailable}`);\n\t\t\t\tconsole.log(` Server connected: ${output.serverConnected}`);\n\t\t\t\tconsole.log(\n\t\t\t\t\t` Active session: ${output.hasActiveSession ? output.sessionId : \"none\"}`,\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\n\t// Start command\n\tbrowser\n\t\t.command(\"start\")\n\t\t.description(\"Start or ensure browser session is active\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\n\t\t\tconst session = await service.getOrCreateSession();\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t{ sessionId: session.id, createdAt: session.createdAt },\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconsole.log(`Browser session active: ${session.id}`);\n\t\t\t}\n\t\t});\n\n\t// Stop command\n\tbrowser\n\t\t.command(\"stop\")\n\t\t.description(\"Stop browser service\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\n\t\t\tawait service.stop();\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify({ stopped: true }, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Browser service stopped\");\n\t\t\t}\n\t\t});\n\n\t// Navigate command\n\tbrowser\n\t\t.command(\"navigate\")\n\t\t.description(\"Navigate to a URL\")\n\t\t.argument(\"<url>\", \"URL to navigate to\")\n\t\t.action(async (url: string, _opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getOrCreateSession();\n\t\t\tconst result = await client.navigate(session.id, url);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(formatNavigationResult(result));\n\t\t\t}\n\t\t});\n\n\t// Go back command\n\tbrowser\n\t\t.command(\"back\")\n\t\t.description(\"Navigate back in browser history\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.goBack(session.id);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(formatNavigationResult(result));\n\t\t\t}\n\t\t});\n\n\t// Go forward command\n\tbrowser\n\t\t.command(\"forward\")\n\t\t.description(\"Navigate forward in browser history\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.goForward(session.id);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(formatNavigationResult(result));\n\t\t\t}\n\t\t});\n\n\t// Refresh command\n\tbrowser\n\t\t.command(\"refresh\")\n\t\t.description(\"Refresh the current page\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.refresh(session.id);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(formatNavigationResult(result));\n\t\t\t}\n\t\t});\n\n\t// Click command\n\tbrowser\n\t\t.command(\"click\")\n\t\t.description(\"Click an element on the page\")\n\t\t.argument(\n\t\t\t\"<description>\",\n\t\t\t\"Description of the element to click (natural language)\",\n\t\t)\n\t\t.action(async (description: string, _opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.click(session.id, description);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result.data ?? { success: true }, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(`Clicked: ${description}`);\n\t\t\t\tif (result.data) {\n\t\t\t\t\tconsole.log(JSON.stringify(result.data, null, 2));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t// Type command\n\tbrowser\n\t\t.command(\"type\")\n\t\t.description(\"Type text into a field\")\n\t\t.argument(\"<text>\", \"Text to type\")\n\t\t.requiredOption(\n\t\t\t\"--field <description>\",\n\t\t\t\"Description of the field (natural language)\",\n\t\t)\n\t\t.action(async (text: string, opts: { field: string }, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.type(session.id, text, opts.field);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result.data ?? { success: true }, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(`Typed \"${text}\" into: ${opts.field}`);\n\t\t\t\tif (result.data) {\n\t\t\t\t\tconsole.log(JSON.stringify(result.data, null, 2));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t// Select command\n\tbrowser\n\t\t.command(\"select\")\n\t\t.description(\"Select an option from a dropdown\")\n\t\t.argument(\"<option>\", \"Option to select\")\n\t\t.requiredOption(\n\t\t\t\"--dropdown <description>\",\n\t\t\t\"Description of the dropdown (natural language)\",\n\t\t)\n\t\t.action(async (option: string, opts: { dropdown: string }, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.select(session.id, option, opts.dropdown);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result.data ?? { success: true }, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(`Selected \"${option}\" from: ${opts.dropdown}`);\n\t\t\t\tif (result.data) {\n\t\t\t\t\tconsole.log(JSON.stringify(result.data, null, 2));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t// Extract command\n\tbrowser\n\t\t.command(\"extract\")\n\t\t.description(\"Extract information from the page\")\n\t\t.argument(\"<instruction>\", \"What to extract (natural language)\")\n\t\t.action(async (instruction: string, _opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.extract(session.id, instruction);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(result.data ?? {}, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(`Extracted: ${instruction}`);\n\t\t\t\tconsole.log(JSON.stringify(result.data ?? {}, null, 2));\n\t\t\t}\n\t\t});\n\n\t// Screenshot command\n\tbrowser\n\t\t.command(\"screenshot\")\n\t\t.description(\"Take a screenshot of the current page\")\n\t\t.option(\"--output <path>\", \"Output file path\")\n\t\t.action(async (opts: { output?: string }, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.screenshot(session.id);\n\t\t\tconst data = result.data as { screenshot?: string } | undefined;\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tsuccess: !!data?.screenshot,\n\t\t\t\t\t\t\thasScreenshot: !!data?.screenshot,\n\t\t\t\t\t\t\toutputPath: opts.output ?? null,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tif (data?.screenshot) {\n\t\t\t\t\tif (opts.output) {\n\t\t\t\t\t\tconst fs = await import(\"node:fs/promises\");\n\t\t\t\t\t\tconst buffer = Buffer.from(data.screenshot, \"base64\");\n\t\t\t\t\t\tawait fs.writeFile(opts.output, buffer);\n\t\t\t\t\t\tconsole.log(`Screenshot saved to: ${opts.output}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.log(\"Screenshot captured (use --output to save to file)\");\n\t\t\t\t\t\tconsole.log(`Base64 length: ${data.screenshot.length}`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(\"Failed to capture screenshot\");\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t// State command\n\tbrowser\n\t\t.command(\"state\")\n\t\t.description(\"Get current browser state\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst state = await client.getState(session.id);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(JSON.stringify(state, null, 2));\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Browser State:\");\n\t\t\t\tconsole.log(` URL: ${state.url}`);\n\t\t\t\tconsole.log(` Title: ${state.title}`);\n\t\t\t\tconsole.log(` Session ID: ${state.sessionId}`);\n\t\t\t}\n\t\t});\n\n\t// Solve captcha command\n\tbrowser\n\t\t.command(\"solve-captcha\")\n\t\t.description(\"Attempt to solve a captcha on the page\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = requireService(ctx);\n\t\t\tconst client = service.getClient();\n\n\t\t\tconst session = await service.getCurrentSession();\n\t\t\tif (!session) {\n\t\t\t\thandleError(\"No active browser session\");\n\t\t\t}\n\n\t\t\tconst result = await client.solveCaptcha(session.id);\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tJSON.stringify(result.data ?? { attempted: true }, null, 2),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconsole.log(\"Captcha solve attempted\");\n\t\t\t\tif (result.data) {\n\t\t\t\t\tconsole.log(JSON.stringify(result.data, null, 2));\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t// Health command\n\tbrowser\n\t\t.command(\"health\")\n\t\t.description(\"Check browser server health\")\n\t\t.action(async (_opts, cmd) => {\n\t\t\tconst parent = cmd.parent?.opts() as { json?: boolean } | undefined;\n\t\t\tconst service = getBrowserService(ctx);\n\n\t\t\tlet healthy = false;\n\t\t\tif (service) {\n\t\t\t\tconst client = service.getClient();\n\t\t\t\thealthy = await client.health();\n\t\t\t}\n\n\t\t\tif (parent?.json) {\n\t\t\t\tconsole.log(\n\t\t\t\t\tJSON.stringify({ healthy, serviceAvailable: !!service }, null, 2),\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconsole.log(`Browser server health: ${healthy ? \"OK\" : \"UNHEALTHY\"}`);\n\t\t\t\tconsole.log(`Service available: ${!!service}`);\n\t\t\t}\n\t\t});\n}\n"]}
@@ -1,4 +0,0 @@
1
- import type { Memory } from "@elizaos/core";
2
- export declare function validateActionKeywords(message: Memory, recentMessages: unknown, keywords: string[]): boolean;
3
- export declare function validateActionRegex(message: Memory, recentMessages: unknown, regex: RegExp): boolean;
4
- //# sourceMappingURL=providerRelevance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providerRelevance.d.ts","sourceRoot":"","sources":["../src/providerRelevance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAqB5C,wBAAgB,sBAAsB,CACrC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,EACvB,QAAQ,EAAE,MAAM,EAAE,GAChB,OAAO,CAIT;AAED,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,OAAO,EACvB,KAAK,EAAE,MAAM,GACX,OAAO,CAIT"}
@@ -1,33 +0,0 @@
1
- function getMessageText(message) {
2
- if (!message || typeof message !== "object")
3
- return "";
4
- const content = message.content;
5
- if (typeof content === "string")
6
- return content;
7
- if (!content || typeof content !== "object")
8
- return "";
9
- const text = content.text;
10
- return typeof text === "string" ? text : "";
11
- }
12
- function toHaystack(message, recentMessages) {
13
- const recent = Array.isArray(recentMessages) ? recentMessages : [];
14
- return [
15
- getMessageText(message),
16
- ...recent.map((entry) => getMessageText(entry)),
17
- ]
18
- .join(" ")
19
- .toLowerCase();
20
- }
21
- export function validateActionKeywords(message, recentMessages, keywords) {
22
- const haystack = toHaystack(message, recentMessages);
23
- if (!haystack.trim())
24
- return true;
25
- return keywords.some((keyword) => haystack.includes(keyword.toLowerCase()));
26
- }
27
- export function validateActionRegex(message, recentMessages, regex) {
28
- const haystack = toHaystack(message, recentMessages);
29
- if (!haystack.trim())
30
- return true;
31
- return regex.test(haystack);
32
- }
33
- //# sourceMappingURL=providerRelevance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"providerRelevance.js","sourceRoot":"","sources":["../src/providerRelevance.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,OAAgB;IACvC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,OAAO,GAAI,OAAiC,CAAC,OAAO,CAAC;IAC3D,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,OAAO,CAAC;IAChD,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACvD,MAAM,IAAI,GAAI,OAA8B,CAAC,IAAI,CAAC;IAClD,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,cAAuB;IAC3D,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;IACnE,OAAO;QACN,cAAc,CAAC,OAAO,CAAC;QACvB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;KAC/C;SACC,IAAI,CAAC,GAAG,CAAC;SACT,WAAW,EAAE,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,sBAAsB,CACrC,OAAe,EACf,cAAuB,EACvB,QAAkB;IAElB,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,mBAAmB,CAClC,OAAe,EACf,cAAuB,EACvB,KAAa;IAEb,MAAM,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAClC,OAAO,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC7B,CAAC","sourcesContent":["import type { Memory } from \"@elizaos/core\";\n\nfunction getMessageText(message: unknown): string {\n\tif (!message || typeof message !== \"object\") return \"\";\n\tconst content = (message as { content?: unknown }).content;\n\tif (typeof content === \"string\") return content;\n\tif (!content || typeof content !== \"object\") return \"\";\n\tconst text = (content as { text?: unknown }).text;\n\treturn typeof text === \"string\" ? text : \"\";\n}\n\nfunction toHaystack(message: Memory, recentMessages: unknown): string {\n\tconst recent = Array.isArray(recentMessages) ? recentMessages : [];\n\treturn [\n\t\tgetMessageText(message),\n\t\t...recent.map((entry) => getMessageText(entry)),\n\t]\n\t\t.join(\" \")\n\t\t.toLowerCase();\n}\n\nexport function validateActionKeywords(\n\tmessage: Memory,\n\trecentMessages: unknown,\n\tkeywords: string[],\n): boolean {\n\tconst haystack = toHaystack(message, recentMessages);\n\tif (!haystack.trim()) return true;\n\treturn keywords.some((keyword) => haystack.includes(keyword.toLowerCase()));\n}\n\nexport function validateActionRegex(\n\tmessage: Memory,\n\trecentMessages: unknown,\n\tregex: RegExp,\n): boolean {\n\tconst haystack = toHaystack(message, recentMessages);\n\tif (!haystack.trim()) return true;\n\treturn regex.test(haystack);\n}\n"]}
@@ -1,3 +0,0 @@
1
- import type { Provider } from "@elizaos/core";
2
- export declare const browserStateProvider: Provider;
3
- //# sourceMappingURL=browser-state.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-state.d.ts","sourceRoot":"","sources":["../../src/providers/browser-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAGX,QAAQ,EAGR,MAAM,eAAe,CAAC;AAQvB,eAAO,MAAM,oBAAoB,EAAE,QAgFlC,CAAC"}
@@ -1,72 +0,0 @@
1
- import { logger, ServiceType } from "@elizaos/core";
2
- import { validateActionKeywords, validateActionRegex, } from "../providerRelevance.js";
3
- export const browserStateProvider = {
4
- name: "BROWSER_STATE",
5
- description: "Provides current browser state information",
6
- dynamic: true,
7
- get: async (runtime, _message, _state) => {
8
- const __providerKeywords = [
9
- "browser",
10
- "state",
11
- "browserstateprovider",
12
- "plugin",
13
- "status",
14
- "context",
15
- "info",
16
- "details",
17
- "chat",
18
- "conversation",
19
- "agent",
20
- "room",
21
- "channel",
22
- "user",
23
- ];
24
- const __providerRegex = new RegExp(`\\b(${__providerKeywords.join("|")})\\b`, "i");
25
- const __recentMessages = _state?.recentMessagesData || [];
26
- const __isRelevant = validateActionKeywords(_message, __recentMessages, __providerKeywords) ||
27
- validateActionRegex(_message, __recentMessages, __providerRegex);
28
- if (!__isRelevant) {
29
- return { text: "" };
30
- }
31
- const service = runtime.getService(ServiceType.BROWSER);
32
- const session = await service?.getCurrentSession();
33
- if (!session || !service) {
34
- return {
35
- text: "No active browser session",
36
- values: {
37
- hasSession: false,
38
- },
39
- data: {},
40
- };
41
- }
42
- try {
43
- const client = service.getClient();
44
- const state = await client.getState(session.id);
45
- return {
46
- text: `Current browser page: "${state.title}" at ${state.url}`,
47
- values: {
48
- hasSession: true,
49
- url: state.url,
50
- title: state.title,
51
- },
52
- data: {
53
- sessionId: session.id,
54
- createdAt: session.createdAt.toISOString(),
55
- },
56
- };
57
- }
58
- catch (error) {
59
- const errorMessage = error instanceof Error ? error.message : String(error);
60
- logger.error(`Error getting browser state: ${errorMessage}`);
61
- return {
62
- text: "Error getting browser state",
63
- values: {
64
- hasSession: true,
65
- error: true,
66
- },
67
- data: {},
68
- };
69
- }
70
- },
71
- };
72
- //# sourceMappingURL=browser-state.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"browser-state.js","sourceRoot":"","sources":["../../src/providers/browser-state.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EACN,sBAAsB,EACtB,mBAAmB,GACnB,MAAM,yBAAyB,CAAC;AAGjC,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC7C,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,4CAA4C;IAEzD,OAAO,EAAE,IAAI;IACb,GAAG,EAAE,KAAK,EACT,OAAsB,EACtB,QAAgB,EAChB,MAAc,EACY,EAAE;QAC5B,MAAM,kBAAkB,GAAG;YAC1B,SAAS;YACT,OAAO;YACP,sBAAsB;YACtB,QAAQ;YACR,QAAQ;YACR,SAAS;YACT,MAAM;YACN,SAAS;YACT,MAAM;YACN,cAAc;YACd,OAAO;YACP,MAAM;YACN,SAAS;YACT,MAAM;SACN,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,MAAM,CACjC,OAAO,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EACzC,GAAG,CACH,CAAC;QACF,MAAM,gBAAgB,GAAG,MAAM,EAAE,kBAAkB,IAAI,EAAE,CAAC;QAC1D,MAAM,YAAY,GACjB,sBAAsB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;YACtE,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,EAAE,eAAe,CAAC,CAAC;QAClE,IAAI,CAAC,YAAY,EAAE,CAAC;YACnB,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAiB,WAAW,CAAC,OAAO,CAAC,CAAC;QACxE,MAAM,OAAO,GAAG,MAAM,OAAO,EAAE,iBAAiB,EAAE,CAAC;QAEnD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO;gBACN,IAAI,EAAE,2BAA2B;gBACjC,MAAM,EAAE;oBACP,UAAU,EAAE,KAAK;iBACjB;gBACD,IAAI,EAAE,EAAE;aACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC;YACJ,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAEhD,OAAO;gBACN,IAAI,EAAE,0BAA0B,KAAK,CAAC,KAAK,QAAQ,KAAK,CAAC,GAAG,EAAE;gBAC9D,MAAM,EAAE;oBACP,UAAU,EAAE,IAAI;oBAChB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,KAAK,EAAE,KAAK,CAAC,KAAK;iBAClB;gBACD,IAAI,EAAE;oBACL,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE;iBAC1C;aACD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,MAAM,YAAY,GACjB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxD,MAAM,CAAC,KAAK,CAAC,gCAAgC,YAAY,EAAE,CAAC,CAAC;YAC7D,OAAO;gBACN,IAAI,EAAE,6BAA6B;gBACnC,MAAM,EAAE;oBACP,UAAU,EAAE,IAAI;oBAChB,KAAK,EAAE,IAAI;iBACX;gBACD,IAAI,EAAE,EAAE;aACR,CAAC;QACH,CAAC;IACF,CAAC;CACD,CAAC","sourcesContent":["import type {\n\tIAgentRuntime,\n\tMemory,\n\tProvider,\n\tProviderResult,\n\tState,\n} from \"@elizaos/core\";\nimport { logger, ServiceType } from \"@elizaos/core\";\nimport {\n\tvalidateActionKeywords,\n\tvalidateActionRegex,\n} from \"../providerRelevance.js\";\nimport type { BrowserService } from \"../services/browser-service.js\";\n\nexport const browserStateProvider: Provider = {\n\tname: \"BROWSER_STATE\",\n\tdescription: \"Provides current browser state information\",\n\n\tdynamic: true,\n\tget: async (\n\t\truntime: IAgentRuntime,\n\t\t_message: Memory,\n\t\t_state?: State,\n\t): Promise<ProviderResult> => {\n\t\tconst __providerKeywords = [\n\t\t\t\"browser\",\n\t\t\t\"state\",\n\t\t\t\"browserstateprovider\",\n\t\t\t\"plugin\",\n\t\t\t\"status\",\n\t\t\t\"context\",\n\t\t\t\"info\",\n\t\t\t\"details\",\n\t\t\t\"chat\",\n\t\t\t\"conversation\",\n\t\t\t\"agent\",\n\t\t\t\"room\",\n\t\t\t\"channel\",\n\t\t\t\"user\",\n\t\t];\n\t\tconst __providerRegex = new RegExp(\n\t\t\t`\\\\b(${__providerKeywords.join(\"|\")})\\\\b`,\n\t\t\t\"i\",\n\t\t);\n\t\tconst __recentMessages = _state?.recentMessagesData || [];\n\t\tconst __isRelevant =\n\t\t\tvalidateActionKeywords(_message, __recentMessages, __providerKeywords) ||\n\t\t\tvalidateActionRegex(_message, __recentMessages, __providerRegex);\n\t\tif (!__isRelevant) {\n\t\t\treturn { text: \"\" };\n\t\t}\n\t\tconst service = runtime.getService<BrowserService>(ServiceType.BROWSER);\n\t\tconst session = await service?.getCurrentSession();\n\n\t\tif (!session || !service) {\n\t\t\treturn {\n\t\t\t\ttext: \"No active browser session\",\n\t\t\t\tvalues: {\n\t\t\t\t\thasSession: false,\n\t\t\t\t},\n\t\t\t\tdata: {},\n\t\t\t};\n\t\t}\n\n\t\ttry {\n\t\t\tconst client = service.getClient();\n\t\t\tconst state = await client.getState(session.id);\n\n\t\t\treturn {\n\t\t\t\ttext: `Current browser page: \"${state.title}\" at ${state.url}`,\n\t\t\t\tvalues: {\n\t\t\t\t\thasSession: true,\n\t\t\t\t\turl: state.url,\n\t\t\t\t\ttitle: state.title,\n\t\t\t\t},\n\t\t\t\tdata: {\n\t\t\t\t\tsessionId: session.id,\n\t\t\t\t\tcreatedAt: session.createdAt.toISOString(),\n\t\t\t\t},\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconst errorMessage =\n\t\t\t\terror instanceof Error ? error.message : String(error);\n\t\t\tlogger.error(`Error getting browser state: ${errorMessage}`);\n\t\t\treturn {\n\t\t\t\ttext: \"Error getting browser state\",\n\t\t\t\tvalues: {\n\t\t\t\t\thasSession: true,\n\t\t\t\t\terror: true,\n\t\t\t\t},\n\t\t\t\tdata: {},\n\t\t\t};\n\t\t}\n\t},\n};\n"]}
@@ -1,2 +0,0 @@
1
- export { browserStateProvider } from "./browser-state.js";
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,2 +0,0 @@
1
- export { browserStateProvider } from "./browser-state.js";
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export { browserStateProvider } from \"./browser-state.js\";\n"]}
@@ -1,32 +0,0 @@
1
- import { type IAgentRuntime, Service } from "@elizaos/core";
2
- import type { BrowserSession } from "../types.js";
3
- import { BrowserWebSocketClient } from "./websocket-client.js";
4
- export declare class Session implements BrowserSession {
5
- id: string;
6
- createdAt: Date;
7
- constructor(id: string, createdAt?: Date);
8
- }
9
- export declare class BrowserService extends Service {
10
- static serviceType: "browser";
11
- capabilityDescription: string;
12
- private sessions;
13
- private currentSessionId;
14
- private processManager;
15
- private client;
16
- private isInitialized;
17
- /** Whether this service is operating in sandbox remote mode. */
18
- private sandboxMode;
19
- constructor(runtime?: IAgentRuntime);
20
- static start(runtime: IAgentRuntime): Promise<BrowserService>;
21
- static stopRuntime(runtime: IAgentRuntime): Promise<void>;
22
- stop(): Promise<void>;
23
- initialize(): Promise<void>;
24
- createSession(sessionId: string): Promise<Session>;
25
- getSession(sessionId: string): Promise<Session | undefined>;
26
- getCurrentSession(): Promise<Session | undefined>;
27
- getOrCreateSession(): Promise<Session>;
28
- destroySession(sessionId: string): Promise<void>;
29
- getClient(): BrowserWebSocketClient;
30
- private waitForReady;
31
- }
32
- //# sourceMappingURL=browser-service.d.ts.map