@elizaos/agent 2.0.0-alpha.192 → 2.0.0-alpha.196

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 (240) hide show
  1. package/apps/app-lifeops/src/action.d.ts.map +1 -1
  2. package/apps/app-lifeops/src/action.js +21 -2
  3. package/apps/app-lifeops/src/actions/app-blocker.d.ts +3 -1
  4. package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +1 -1
  5. package/apps/app-lifeops/src/actions/app-blocker.js +2 -0
  6. package/apps/app-lifeops/src/actions/calendar.d.ts.map +1 -1
  7. package/apps/app-lifeops/src/actions/calendar.js +140 -7
  8. package/apps/app-lifeops/src/actions/computer-use.d.ts.map +1 -1
  9. package/apps/app-lifeops/src/actions/computer-use.js +248 -17
  10. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +3 -1
  11. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +1 -1
  12. package/apps/app-lifeops/src/actions/cross-channel-send.js +1 -0
  13. package/apps/app-lifeops/src/actions/dossier.d.ts.map +1 -1
  14. package/apps/app-lifeops/src/actions/dossier.js +51 -34
  15. package/apps/app-lifeops/src/actions/gmail.d.ts.map +1 -1
  16. package/apps/app-lifeops/src/actions/gmail.js +5 -0
  17. package/apps/app-lifeops/src/actions/inbox.d.ts.map +1 -1
  18. package/apps/app-lifeops/src/actions/inbox.js +8 -1
  19. package/apps/app-lifeops/src/actions/life.d.ts.map +1 -1
  20. package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +1 -1
  21. package/apps/app-lifeops/src/actions/life.extractor.js +103 -4
  22. package/apps/app-lifeops/src/actions/life.js +8 -0
  23. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +6 -0
  24. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +1 -0
  25. package/apps/app-lifeops/src/actions/non-actionable-request.js +33 -0
  26. package/apps/app-lifeops/src/actions/password-manager.d.ts.map +1 -1
  27. package/apps/app-lifeops/src/actions/password-manager.js +11 -2
  28. package/apps/app-lifeops/src/actions/relationships.d.ts +3 -1
  29. package/apps/app-lifeops/src/actions/relationships.d.ts.map +1 -1
  30. package/apps/app-lifeops/src/actions/relationships.js +167 -11
  31. package/apps/app-lifeops/src/actions/remote-desktop.js +1 -1
  32. package/apps/app-lifeops/src/actions/screen-time.d.ts.map +1 -1
  33. package/apps/app-lifeops/src/actions/screen-time.js +8 -2
  34. package/apps/app-lifeops/src/actions/start-remote-session.js +1 -1
  35. package/apps/app-lifeops/src/actions/subscriptions.d.ts +5 -0
  36. package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +1 -0
  37. package/apps/app-lifeops/src/actions/subscriptions.js +251 -0
  38. package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +1 -1
  39. package/apps/app-lifeops/src/actions/twilio-call.js +48 -3
  40. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +1 -1
  41. package/apps/app-lifeops/src/actions/update-owner-profile.js +2 -1
  42. package/apps/app-lifeops/src/actions/website-blocker.d.ts +6 -2
  43. package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
  44. package/apps/app-lifeops/src/actions/website-blocker.js +38 -0
  45. package/apps/app-lifeops/src/actions/x-read.d.ts.map +1 -1
  46. package/apps/app-lifeops/src/actions/x-read.js +27 -3
  47. package/apps/app-lifeops/src/dossier/action.d.ts.map +1 -1
  48. package/apps/app-lifeops/src/dossier/action.js +8 -7
  49. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts.map +1 -1
  50. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +1 -0
  51. package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts.map +1 -1
  52. package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +2 -1
  53. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts.map +1 -1
  54. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +2 -1
  55. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +1 -1
  56. package/apps/app-lifeops/src/lifeops/calendly-client.js +4 -2
  57. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.d.ts.map +1 -1
  58. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +6 -5
  59. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +1 -1
  60. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +1 -1
  61. package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +84 -6
  62. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +1 -1
  63. package/apps/app-lifeops/src/lifeops/remote-desktop.js +30 -0
  64. package/apps/app-lifeops/src/lifeops/repository.d.ts +15 -0
  65. package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
  66. package/apps/app-lifeops/src/lifeops/repository.js +330 -1
  67. package/apps/app-lifeops/src/lifeops/service-mixin-discord.js +222 -42
  68. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.d.ts +2 -0
  69. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
  70. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +763 -0
  71. package/apps/app-lifeops/src/lifeops/service.d.ts +63 -0
  72. package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
  73. package/apps/app-lifeops/src/lifeops/service.js +2 -1
  74. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts +54 -0
  75. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts.map +1 -0
  76. package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.js +213 -0
  77. package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts +80 -0
  78. package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts.map +1 -0
  79. package/apps/app-lifeops/src/lifeops/twilio.d.ts.map +1 -1
  80. package/apps/app-lifeops/src/lifeops/twilio.js +4 -2
  81. package/apps/app-lifeops/src/lifeops/whatsapp-client.d.ts.map +1 -1
  82. package/apps/app-lifeops/src/lifeops/whatsapp-client.js +4 -2
  83. package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
  84. package/apps/app-lifeops/src/lifeops/x-poster.js +12 -6
  85. package/apps/app-lifeops/src/lifeops/x-reader.d.ts.map +1 -1
  86. package/apps/app-lifeops/src/lifeops/x-reader.js +7 -5
  87. package/apps/app-lifeops/src/plugin.d.ts.map +1 -1
  88. package/apps/app-lifeops/src/plugin.js +31 -24
  89. package/apps/app-lifeops/src/provider.d.ts.map +1 -1
  90. package/apps/app-lifeops/src/provider.js +4 -4
  91. package/apps/app-lifeops/src/providers/inbox-triage.js +2 -2
  92. package/apps/app-lifeops/src/providers/lifeops.d.ts.map +1 -1
  93. package/apps/app-lifeops/src/providers/lifeops.js +19 -10
  94. package/apps/app-lifeops/src/providers/website-blocker.js +1 -1
  95. package/apps/app-lifeops/src/public.d.ts +4 -0
  96. package/apps/app-lifeops/src/public.d.ts.map +1 -0
  97. package/apps/app-lifeops/src/public.js +3 -0
  98. package/apps/app-lifeops/src/routes/plugin.d.ts +18 -0
  99. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -0
  100. package/apps/app-lifeops/src/routes/plugin.js +270 -0
  101. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +1 -1
  102. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +18 -2
  103. package/apps/app-training/src/core/training-orchestrator.d.ts.map +1 -1
  104. package/apps/app-training/src/core/training-orchestrator.js +4 -0
  105. package/apps/app-training/src/services/training-trigger.d.ts +32 -18
  106. package/apps/app-training/src/services/training-trigger.d.ts.map +1 -1
  107. package/apps/app-training/src/services/training-trigger.js +10 -1
  108. package/package.json +4 -4
  109. package/packages/agent/src/actions/browser-session.d.ts +3 -0
  110. package/packages/agent/src/actions/browser-session.d.ts.map +1 -0
  111. package/packages/agent/src/actions/browser-session.js +207 -0
  112. package/packages/agent/src/actions/context-signal.d.ts +1 -1
  113. package/packages/agent/src/actions/context-signal.d.ts.map +1 -1
  114. package/packages/agent/src/actions/context-signal.js +1 -1
  115. package/packages/agent/src/actions/extract-page.d.ts +3 -0
  116. package/packages/agent/src/actions/extract-page.d.ts.map +1 -0
  117. package/packages/agent/src/actions/extract-page.js +124 -0
  118. package/packages/agent/src/actions/grounded-action-reply.js +1 -1
  119. package/packages/agent/src/actions/recent-conversation-texts.d.ts +9 -0
  120. package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -0
  121. package/packages/agent/src/actions/recent-conversation-texts.js +81 -0
  122. package/packages/agent/src/actions/set-user-name.js +1 -1
  123. package/packages/agent/src/actions/web-search.d.ts +4 -10
  124. package/packages/agent/src/actions/web-search.d.ts.map +1 -1
  125. package/packages/agent/src/actions/web-search.js +89 -19
  126. package/packages/agent/src/api/binance-skill-helpers.d.ts.map +1 -1
  127. package/packages/agent/src/api/binance-skill-helpers.js +1 -1
  128. package/packages/agent/src/api/chat-augmentation.d.ts +1 -20
  129. package/packages/agent/src/api/chat-augmentation.d.ts.map +1 -1
  130. package/packages/agent/src/api/chat-augmentation.js +2 -110
  131. package/packages/agent/src/api/conversation-metadata.d.ts +9 -0
  132. package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -0
  133. package/packages/agent/src/api/conversation-metadata.js +98 -0
  134. package/packages/agent/src/api/conversation-routes.d.ts.map +1 -1
  135. package/packages/agent/src/api/conversation-routes.js +40 -9
  136. package/packages/agent/src/api/lifeops-browser-packaging.d.ts +1 -1
  137. package/packages/agent/src/api/lifeops-browser-packaging.d.ts.map +1 -1
  138. package/packages/agent/src/api/lifeops-browser-packaging.js +1 -1
  139. package/packages/agent/src/api/permissions-routes.js +1 -1
  140. package/packages/agent/src/api/server-helpers-auth.js +1 -1
  141. package/packages/agent/src/api/server-helpers.d.ts +2 -1
  142. package/packages/agent/src/api/server-helpers.d.ts.map +1 -1
  143. package/packages/agent/src/api/server-helpers.js +2 -110
  144. package/packages/agent/src/api/server-types.d.ts +14 -0
  145. package/packages/agent/src/api/server-types.d.ts.map +1 -1
  146. package/packages/agent/src/api/server.d.ts.map +1 -1
  147. package/packages/agent/src/api/server.js +3 -13
  148. package/packages/agent/src/api/workbench-routes.d.ts.map +1 -1
  149. package/packages/agent/src/api/workbench-routes.js +0 -14
  150. package/packages/agent/src/auth/credentials.d.ts.map +1 -1
  151. package/packages/agent/src/auth/credentials.js +8 -0
  152. package/packages/agent/src/config/zod-schema.d.ts +2 -2
  153. package/packages/agent/src/config/zod-schema.providers-core.d.ts +3 -3
  154. package/packages/agent/src/providers/automation-terminal-bridge.d.ts +3 -0
  155. package/packages/agent/src/providers/automation-terminal-bridge.d.ts.map +1 -0
  156. package/packages/agent/src/providers/automation-terminal-bridge.js +71 -0
  157. package/packages/agent/src/providers/index.d.ts +1 -0
  158. package/packages/agent/src/providers/index.d.ts.map +1 -1
  159. package/packages/agent/src/providers/index.js +1 -0
  160. package/packages/agent/src/providers/recent-conversations.d.ts.map +1 -1
  161. package/packages/agent/src/providers/recent-conversations.js +5 -0
  162. package/packages/agent/src/providers/relevant-conversations.d.ts.map +1 -1
  163. package/packages/agent/src/providers/relevant-conversations.js +5 -0
  164. package/packages/agent/src/providers/user-name.d.ts.map +1 -1
  165. package/packages/agent/src/providers/user-name.js +1 -1
  166. package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
  167. package/packages/agent/src/runtime/eliza-plugin.js +6 -0
  168. package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -1
  169. package/packages/agent/src/runtime/plugin-resolver.js +115 -0
  170. package/packages/agent/src/services/browser-workspace-types.d.ts +5 -1
  171. package/packages/agent/src/services/browser-workspace-types.d.ts.map +1 -1
  172. package/packages/agent/src/services/browser-workspace.d.ts.map +1 -1
  173. package/packages/agent/src/services/browser-workspace.js +178 -7
  174. package/packages/agent/src/services/coding-agent-context.d.ts +4 -4
  175. package/packages/agent/src/services/escalation.d.ts +0 -11
  176. package/packages/agent/src/services/escalation.d.ts.map +1 -1
  177. package/packages/agent/src/services/escalation.js +19 -58
  178. package/packages/agent/src/services/hosted-tools.d.ts +70 -0
  179. package/packages/agent/src/services/hosted-tools.d.ts.map +1 -0
  180. package/packages/agent/src/services/hosted-tools.js +87 -0
  181. package/packages/agent/src/services/owner-name.d.ts +4 -0
  182. package/packages/agent/src/services/owner-name.d.ts.map +1 -0
  183. package/packages/agent/src/services/owner-name.js +46 -0
  184. package/packages/agent/src/services/registry-client-queries.d.ts +1 -1
  185. package/packages/agent/src/services/registry-client-queries.js +1 -1
  186. package/packages/agent/src/services/registry-client-types.d.ts +1 -1
  187. package/packages/agent/src/services/stream-manager.d.ts +1 -1
  188. package/packages/app-core/src/config/boot-config-store.d.ts +1 -1
  189. package/packages/app-core/src/config/boot-config-store.d.ts.map +1 -1
  190. package/packages/shared/src/contracts/lifeops.d.ts +26 -0
  191. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  192. package/packages/shared/src/contracts/lifeops.js +28 -0
  193. package/packages/typescript/src/actions.d.ts.map +1 -1
  194. package/packages/typescript/src/actions.js +12 -0
  195. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.d.ts.map +1 -1
  196. package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.js +8 -2
  197. package/packages/typescript/src/features/advanced-capabilities/providers/settings.d.ts.map +1 -1
  198. package/packages/typescript/src/features/advanced-capabilities/providers/settings.js +11 -3
  199. package/packages/typescript/src/features/basic-capabilities/providers/actions.d.ts.map +1 -1
  200. package/packages/typescript/src/features/basic-capabilities/providers/actions.js +23 -1
  201. package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.d.ts +5 -0
  202. package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.d.ts.map +1 -0
  203. package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.js +22 -0
  204. package/packages/typescript/src/features/basic-capabilities/providers/providers.d.ts.map +1 -1
  205. package/packages/typescript/src/features/basic-capabilities/providers/providers.js +10 -5
  206. package/packages/typescript/src/features/knowledge/documents-provider.d.ts.map +1 -1
  207. package/packages/typescript/src/features/knowledge/documents-provider.js +1 -0
  208. package/packages/typescript/src/features/shared/schedule-follow-up-response.d.ts +10 -0
  209. package/packages/typescript/src/features/shared/schedule-follow-up-response.d.ts.map +1 -0
  210. package/packages/typescript/src/features/shared/schedule-follow-up-response.js +49 -0
  211. package/packages/typescript/src/features/trajectories/TrajectoriesService.d.ts +1 -0
  212. package/packages/typescript/src/features/trajectories/TrajectoriesService.d.ts.map +1 -1
  213. package/packages/typescript/src/features/trajectories/TrajectoriesService.js +21 -2
  214. package/packages/typescript/src/features/trust/providers/settings.d.ts.map +1 -1
  215. package/packages/typescript/src/features/trust/providers/settings.js +11 -1
  216. package/packages/typescript/src/prompts.d.ts +4 -4
  217. package/packages/typescript/src/prompts.d.ts.map +1 -1
  218. package/packages/typescript/src/prompts.js +10 -2
  219. package/packages/typescript/src/schemas/character.d.ts +3 -3
  220. package/packages/typescript/src/services/message.d.ts +1 -0
  221. package/packages/typescript/src/services/message.d.ts.map +1 -1
  222. package/packages/typescript/src/services/message.js +483 -18
  223. package/packages/typescript/src/types/components.d.ts +6 -0
  224. package/packages/typescript/src/types/components.d.ts.map +1 -1
  225. package/packages/typescript/src/utils/context-routing.d.ts.map +1 -1
  226. package/packages/typescript/src/utils/context-routing.js +5 -1
  227. package/packages/typescript/src/utils/toon.d.ts.map +1 -1
  228. package/packages/typescript/src/utils/toon.js +23 -2
  229. package/packages/typescript/src/utils.d.ts +1 -0
  230. package/packages/typescript/src/utils.d.ts.map +1 -1
  231. package/packages/typescript/src/utils.js +1 -0
  232. package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts +0 -2
  233. package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts.map +0 -1
  234. package/apps/app-lifeops/src/types/index.d.ts +0 -3
  235. package/apps/app-lifeops/src/types/index.d.ts.map +0 -1
  236. package/apps/app-lifeops/src/types/index.js +0 -1
  237. package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts +0 -2
  238. package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts.map +0 -1
  239. package/apps/app-lifeops/src/types/website-blocker-settings-card.js +0 -1
  240. /package/apps/app-lifeops/src/{types/app-blocker-settings-card.js → lifeops/subscriptions-types.js} +0 -0
@@ -100,9 +100,12 @@ export const blockUntilTaskCompleteAction = {
100
100
  "BLOCK_SITES_UNTIL_TODO_DONE",
101
101
  "BLOCK_WEBSITE_UNTIL_TASK",
102
102
  "CONDITIONAL_WEBSITE_BLOCK",
103
+ "BLOCK_UNTIL_DONE",
104
+ "FOCUS_UNTIL_TASK_DONE",
103
105
  ],
104
- description: "Block websites until a specific todo is marked complete. Creates a block rule whose release is gated on todo completion. " +
105
- "If todoName is provided with no matching active todo, the todo is created first.",
106
+ description: "Block websites until a specific todo is marked complete. Use this only when the unblock condition is finishing a task, workout, assignment, or todo, like 'block x.com until I finish my workout'. " +
107
+ "Creates a block rule whose release is gated on todo completion. If todoName is provided with no matching active todo, the todo is created first. " +
108
+ "Do not use this for fixed-duration blocks like 'for 2 hours' or generic focus blocks like 'turn on social media blocking' — those are BLOCK_WEBSITES.",
106
109
  descriptionCompressed: "Block websites until a named todo is completed.",
107
110
  validate: async () => true,
108
111
  handler: async (runtime, _message, _state, options) => {
@@ -208,5 +211,18 @@ export const blockUntilTaskCompleteAction = {
208
211
  },
209
212
  },
210
213
  ],
214
+ [
215
+ {
216
+ name: "{{name1}}",
217
+ content: { text: "Block youtube until I finish this report." },
218
+ },
219
+ {
220
+ name: "{{agentName}}",
221
+ content: {
222
+ text: "Block rule created for youtube.com until todo report is completed.",
223
+ action: "BLOCK_UNTIL_TASK_COMPLETE",
224
+ },
225
+ },
226
+ ],
211
227
  ],
212
228
  };
@@ -1 +1 @@
1
- {"version":3,"file":"training-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-training/src/core/training-orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"training-orchestrator.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-training/src/core/training-orchestrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAKH,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,2BAA2B,EAChC,KAAK,sBAAsB,EAC5B,MAAM,+BAA+B,CAAC;AAEvC,UAAU,aAAa;IACrB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,UAAU,WAAW;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AASD,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE5D,MAAM,MAAM,iBAAiB,GACzB,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,CAAC;AAEd,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,sBAAsB,CAAC;IAC9B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,MAAM,EAAE,aAAa,CAAC;IACtB,qFAAqF;IACrF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+DAA+D;IAC/D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kDAAkD;IAClD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,0CAA0C;IAC1C,MAAM,CAAC,EAAE,cAAc,CAAC;CACzB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACpC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAkB,SAAQ,qBAAqB;IAC9D,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,2BAA2B,CAAC,OAAO,CAAC,CAAC;IACpD,aAAa,CAAC,EAAE,2BAA2B,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,sBAAsB,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,oBAAoB,KACxB,OAAO,CAAC,qBAAqB,CAAC,CAAC;AAoPpC,wBAAsB,SAAS,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAM1E;AAED,wBAAsB,OAAO,CAC3B,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAKnC;AAED,wBAAsB,QAAQ,CAAC,KAAK,SAAK,GAAG,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAevE;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,sBAAsB,GAC9B,OAAO,CAAC,iBAAiB,CAAC,CAsM5B"}
@@ -283,11 +283,15 @@ export async function triggerTraining(runtime, options) {
283
283
  if (detail)
284
284
  trajectories.push(detail);
285
285
  }
286
+ // Privacy filter is REQUIRED here — the downstream export writes JSONL to
287
+ // disk, and those files must never contain raw user secrets or un-anonymized
288
+ // handles. Filtering happens before any write path below runs.
286
289
  const filtered = applyPrivacyFilter(trajectories, {
287
290
  anonymizer: options.anonymizer,
288
291
  });
289
292
  const outputDir = join(trainingStateRoot(), "runs", runId, "datasets");
290
293
  await mkdir(outputDir, { recursive: true });
294
+ // privacy filter applied above
291
295
  const dataset = await exportTrajectoryTaskDatasets(filtered.trajectories, outputDir);
292
296
  const task = selectTask(config, options.task, dataset.counts);
293
297
  if (!task) {
@@ -15,16 +15,27 @@
15
15
  * trajectory transitions to `completed`. The service looks up the trajectory
16
16
  * detail, infers the tasks it touches, and increments those counters.
17
17
  */
18
+ import type { IAgentRuntime, ServiceTypeName } from "@elizaos/core";
18
19
  import type { AnonymizerLookup } from "../core/privacy-filter.js";
19
20
  import { type TrainingBackend, type TrainingConfig } from "../core/training-config.js";
20
21
  import { type TrainingRunRecord, triggerTraining } from "../core/training-orchestrator.js";
21
22
  import type { TrajectoryTrainingTask } from "../core/trajectory-task-datasets.js";
22
- export declare const TRAINING_TRIGGER_SERVICE = "TRAINING_TRIGGER_SERVICE";
23
+ declare module "@elizaos/core" {
24
+ interface ServiceTypeRegistry {
25
+ TRAINING_TRIGGER_SERVICE: "training_trigger_service";
26
+ }
27
+ }
28
+ export declare const TRAINING_TRIGGER_SERVICE: ServiceTypeName;
23
29
  interface MinimalLogger {
24
30
  info: (message: string) => void;
25
31
  warn: (message: string) => void;
26
32
  error: (message: string) => void;
27
33
  }
34
+ /**
35
+ * Minimal runtime shape the trigger service + bootstrap helpers depend on.
36
+ * Structurally a subset of `IAgentRuntime`, so full runtimes satisfy it
37
+ * without casts. Tests pass a small shim that matches this shape.
38
+ */
28
39
  interface RuntimeLike {
29
40
  getService: (name: string) => unknown;
30
41
  logger?: MinimalLogger;
@@ -103,6 +114,24 @@ export declare class TrainingTriggerService {
103
114
  private maybeFire;
104
115
  private recordCompletion;
105
116
  }
117
+ /**
118
+ * Registered entry shape — kept as a standalone interface so callers that
119
+ * `getService(TRAINING_TRIGGER_SERVICE)` can type the result without
120
+ * importing the concrete class.
121
+ */
122
+ export interface RegisteredTrainingTriggerEntry {
123
+ notifyTrajectoryCompleted: (trajectoryId: string) => Promise<void>;
124
+ getStatus: () => TriggerStatusSnapshot;
125
+ runManually: (input: {
126
+ task?: TrajectoryTrainingTask;
127
+ backend?: TrainingBackend;
128
+ dryRun?: boolean;
129
+ }) => Promise<TrainingRunRecord>;
130
+ resetCounters: (task?: TrajectoryTrainingTask) => void;
131
+ stop: () => Promise<void>;
132
+ capabilityDescription: string;
133
+ instance: TrainingTriggerService;
134
+ }
106
135
  /**
107
136
  * Register the service against a runtime's services map. Mirrors the
108
137
  * n8n-dispatch pattern in `packages/app-core/src/runtime/eliza.ts`: we
@@ -111,9 +140,7 @@ export declare class TrainingTriggerService {
111
140
  *
112
141
  * Safe to call multiple times — subsequent calls replace the entry.
113
142
  */
114
- export declare function registerTrainingTriggerService(runtime: RuntimeLike & {
115
- services: Map<string, unknown[]>;
116
- }, options?: TrainingTriggerServiceOptions): TrainingTriggerService;
143
+ export declare function registerTrainingTriggerService(runtime: IAgentRuntime, options?: TrainingTriggerServiceOptions): TrainingTriggerService;
117
144
  interface UserNotifier {
118
145
  notify: (message: string) => void;
119
146
  }
@@ -148,19 +175,6 @@ export interface BootstrapOptimizationOptions {
148
175
  * an LLM-driven optimization round. Errors propagate so the boot logger
149
176
  * surfaces them rather than swallowing them silently.
150
177
  */
151
- export declare function bootstrapOptimizationFromAccumulatedTrajectories(runtime: RuntimeLike, service: TrainingTriggerService, options?: BootstrapOptimizationOptions): Promise<TrajectoryTrainingTask[]>;
152
- export interface RegisteredTrainingTriggerEntry {
153
- notifyTrajectoryCompleted: (trajectoryId: string) => Promise<void>;
154
- getStatus: () => TriggerStatusSnapshot;
155
- runManually: (input: {
156
- task?: TrajectoryTrainingTask;
157
- backend?: TrainingBackend;
158
- dryRun?: boolean;
159
- }) => Promise<TrainingRunRecord>;
160
- resetCounters: (task?: TrajectoryTrainingTask) => void;
161
- stop: () => Promise<void>;
162
- capabilityDescription: string;
163
- instance: TrainingTriggerService;
164
- }
178
+ export declare function bootstrapOptimizationFromAccumulatedTrajectories(runtime: IAgentRuntime, service: TrainingTriggerService, options?: BootstrapOptimizationOptions): Promise<TrajectoryTrainingTask[]>;
165
179
  export {};
166
180
  //# sourceMappingURL=training-trigger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"training-trigger.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-training/src/services/training-trigger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"training-trigger.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-training/src/services/training-trigger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAW,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,KAAK,EACV,gBAAgB,EAEjB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,cAAc,EAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,KAAK,iBAAiB,EACtB,eAAe,EAChB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAKlF,OAAO,QAAQ,eAAe,CAAC;IAC7B,UAAU,mBAAmB;QAC3B,wBAAwB,EAAE,0BAA0B,CAAC;KACtD;CACF;AAED,eAAO,MAAM,wBAAwB,EACL,eAAe,CAAC;AAEhD,UAAU,aAAa;IACrB,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,IAAI,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAMD;;;;GAIG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;IACtC,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAcD,MAAM,WAAW,qBAAqB;IACpC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACjD,SAAS,EAAE,OAAO,CAChB,MAAM,CACJ,sBAAsB,EACtB;QACE,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CACF,CACF,CAAC;IACF,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1D,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;CAC3D;AA+ID,MAAM,WAAW,6BAA6B;IAC5C,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,YAAY,CAAC,EAAE,MAAM,cAAc,CAAC;IACpC,2CAA2C;IAC3C,WAAW,CAAC,EAAE,OAAO,eAAe,CAAC;IACrC,gDAAgD;IAChD,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,+BAA+B;IAC/B,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,sBAAsB;IACjC,QAAQ,CAAC,qBAAqB,gHACiF;IAE/G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuB;IACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAqC;IAC9D,OAAO,CAAC,KAAK,CAAwB;gBAGnC,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,6BAAkC;IAY7C;;;OAGG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,SAAS,IAAI,qBAAqB;IAgClC;;;;;;;;OAQG;IACG,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCpE,qEAAqE;IAC/D,WAAW,CAAC,KAAK,EAAE;QACvB,IAAI,CAAC,EAAE,sBAAsB,CAAC;QAC9B,OAAO,CAAC,EAAE,eAAe,CAAC;QAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAY9B;;;;OAIG;IACH,aAAa,CAAC,IAAI,CAAC,EAAE,sBAAsB,GAAG,IAAI;YASpC,SAAS;IAuCvB,OAAO,CAAC,gBAAgB;CAWzB;AAED;;;;GAIG;AACH,MAAM,WAAW,8BAA8B;IAC7C,yBAAyB,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,SAAS,EAAE,MAAM,qBAAqB,CAAC;IACvC,WAAW,EAAE,CAAC,KAAK,EAAE;QACnB,IAAI,CAAC,EAAE,sBAAsB,CAAC;QAC9B,OAAO,CAAC,EAAE,eAAe,CAAC;QAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjC,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,sBAAsB,KAAK,IAAI,CAAC;IACvD,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,sBAAsB,CAAC;CAClC;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,EAAE,aAAa,EACtB,OAAO,GAAE,6BAAkC,GAC1C,sBAAsB,CAkBxB;AAWD,UAAU,YAAY;IACpB,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,4BAA4B;IAC3C,YAAY,CAAC,EAAE,MAAM,cAAc,CAAC;IACpC,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE;QACxB,IAAI,EAAE,sBAAsB,CAAC;QAC7B,OAAO,EAAE,eAAe,CAAC;KAC1B,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,gDAAgD,CACpE,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,sBAAsB,EAC/B,OAAO,GAAE,4BAAiC,GACzC,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAqCnC"}
@@ -19,7 +19,7 @@ import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
19
19
  import { dirname, join } from "node:path";
20
20
  import { ALL_TRAINING_TASKS, loadTrainingConfig, resolveTaskPolicy, trainingStateRoot, } from "../core/training-config.js";
21
21
  import { triggerTraining, } from "../core/training-orchestrator.js";
22
- export const TRAINING_TRIGGER_SERVICE = "TRAINING_TRIGGER_SERVICE";
22
+ export const TRAINING_TRIGGER_SERVICE = "training_trigger_service";
23
23
  function emptyCounters() {
24
24
  return {
25
25
  should_respond: 0,
@@ -318,6 +318,11 @@ export function registerTrainingTriggerService(runtime, options = {}) {
318
318
  capabilityDescription: service.capabilityDescription,
319
319
  instance: service,
320
320
  };
321
+ // The runtime's services map is typed Map<ServiceTypeName, Service[]>. Our
322
+ // entry is structurally Service-compatible (stop + capabilityDescription)
323
+ // plus extra methods consumed via the registered entry interface. Use a
324
+ // single explicit cast at the boundary rather than `as never` — the entry
325
+ // does satisfy the minimum Service contract that callers rely on.
321
326
  runtime.services.set(TRAINING_TRIGGER_SERVICE, [entry]);
322
327
  return service;
323
328
  }
@@ -352,6 +357,10 @@ export async function bootstrapOptimizationFromAccumulatedTrajectories(runtime,
352
357
  return [];
353
358
  if (!config.backends.includes("native"))
354
359
  return [];
360
+ // IAgentRuntime.getService returns a typed Service subclass. The
361
+ // OptimizedPromptService shape we consume is structurally compatible but
362
+ // not exposed as a named type from core, so we cross the nominal type
363
+ // boundary via unknown once.
355
364
  const optimizedPromptService = runtime.getService("optimized_prompt");
356
365
  const status = service.getStatus();
357
366
  const fired = [];
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elizaos/agent",
3
- "version": "2.0.0-alpha.192",
3
+ "version": "2.0.0-alpha.196",
4
4
  "description": "Standalone elizaOS-based agent and backend server package.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -457,14 +457,14 @@
457
457
  "@elizaos/app-steward": "^0.0.0",
458
458
  "@elizaos/app-task-coordinator": "^0.0.0",
459
459
  "@elizaos/app-training": "^0.0.1",
460
- "@elizaos/core": "^2.0.0-alpha.192",
460
+ "@elizaos/core": "^2.0.0-alpha.196",
461
461
  "@elizaos/plugin-agent-orchestrator": "^0.6.2-alpha.0",
462
462
  "@elizaos/plugin-ollama": "^2.0.0-alpha.14",
463
463
  "@elizaos/plugin-pdf": "^2.0.0-alpha.18",
464
464
  "@elizaos/plugin-solana": "1.2.6",
465
465
  "@elizaos/plugin-sql": "^2.0.0-alpha.19",
466
- "@elizaos/shared": "^2.0.0-alpha.192",
467
- "@elizaos/skills": "^2.0.0-alpha.192",
466
+ "@elizaos/shared": "^2.0.0-alpha.196",
467
+ "@elizaos/skills": "^2.0.0-alpha.196",
468
468
  "@hapi/boom": "^10.0.1",
469
469
  "@noble/curves": "^2.0.1",
470
470
  "@whiskeysockets/baileys": "7.0.0-rc.9",
@@ -0,0 +1,3 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const browserSessionAction: Action;
3
+ //# sourceMappingURL=browser-session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../../../../src/actions/browser-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgD,MAAM,eAAe,CAAC;AAmH1F,eAAO,MAAM,oBAAoB,EAAE,MAgKlC,CAAC"}
@@ -0,0 +1,207 @@
1
+ import { logger } from "@elizaos/core";
2
+ import { hasRoleAccess } from "../security/access.js";
3
+ import { executeBrowserWorkspaceCommand, getBrowserWorkspaceMode, } from "../services/browser-workspace.js";
4
+ function getMessageText(message) {
5
+ const content = message?.content;
6
+ if (typeof content === "string") {
7
+ return content;
8
+ }
9
+ return typeof content?.text === "string" ? content.text : "";
10
+ }
11
+ function extractFirstUrl(value) {
12
+ const match = value.match(/https?:\/\/[^\s<>"'`]+/i);
13
+ return match?.[0] ?? null;
14
+ }
15
+ function inferBrowserSubaction(params, messageText) {
16
+ if (params?.subaction) {
17
+ return params.subaction;
18
+ }
19
+ if (params?.tabAction) {
20
+ return "tab";
21
+ }
22
+ if (params?.selector && params?.text) {
23
+ return "type";
24
+ }
25
+ if (params?.selector) {
26
+ return "click";
27
+ }
28
+ if (params?.url?.trim() || extractFirstUrl(messageText)) {
29
+ return params?.id ? "navigate" : "open";
30
+ }
31
+ return "state";
32
+ }
33
+ function formatBrowserSessionResult(command, result) {
34
+ if (result.tabs) {
35
+ const labels = result.tabs
36
+ .map((tab) => `- ${tab.title} (${tab.url})`)
37
+ .join("\n");
38
+ return labels
39
+ ? `Browser session tabs (${result.mode}):\n${labels}`
40
+ : `No browser session tabs are open (${result.mode}).`;
41
+ }
42
+ if (result.closed) {
43
+ return `Browser session closed (${result.mode}).`;
44
+ }
45
+ if (result.tab) {
46
+ return `${command.subaction} completed in ${result.mode} mode.\n${result.tab.title}\n${result.tab.url}`;
47
+ }
48
+ if (result.value !== undefined) {
49
+ const serialized = typeof result.value === "string"
50
+ ? result.value
51
+ : JSON.stringify(result.value, null, 2);
52
+ return `Browser session ${command.subaction} result (${result.mode}):\n${serialized}`;
53
+ }
54
+ if (result.snapshot?.data) {
55
+ return `Browser session ${command.subaction} captured a preview in ${result.mode} mode.`;
56
+ }
57
+ return `Browser session ${command.subaction} completed in ${result.mode} mode.`;
58
+ }
59
+ export const browserSessionAction = {
60
+ name: "BROWSER_SESSION",
61
+ similes: [
62
+ "BROWSE_SITE",
63
+ "CONTROL_BROWSER_SESSION",
64
+ "NAVIGATE_SITE",
65
+ "OPEN_SITE",
66
+ "USE_BROWSER",
67
+ ],
68
+ description: "Control the Eliza browser workspace through one session surface. Uses the real desktop browser bridge or hosted Eliza Cloud browser when available, and falls back to the limited embedded web mode only when no real browser session backend is configured.",
69
+ validate: async (runtime, message, _state) => {
70
+ return hasRoleAccess(runtime, message, "USER");
71
+ },
72
+ handler: async (_runtime, message, _state, options) => {
73
+ const params = options?.parameters;
74
+ const messageText = getMessageText(message);
75
+ const url = params?.url?.trim() || extractFirstUrl(messageText) || undefined;
76
+ const subaction = inferBrowserSubaction(params, messageText);
77
+ const command = {
78
+ id: params?.id?.trim(),
79
+ key: params?.key?.trim(),
80
+ pixels: params?.pixels,
81
+ script: params?.script,
82
+ selector: params?.selector?.trim(),
83
+ subaction,
84
+ tabAction: params?.tabAction,
85
+ text: params?.text,
86
+ timeoutMs: params?.timeoutMs,
87
+ url,
88
+ };
89
+ try {
90
+ logger.info(`[browser-session] ${command.subaction} via ${getBrowserWorkspaceMode(process.env)}`);
91
+ const result = await executeBrowserWorkspaceCommand(command);
92
+ return {
93
+ text: formatBrowserSessionResult(command, result),
94
+ success: true,
95
+ values: {
96
+ success: true,
97
+ mode: result.mode,
98
+ subaction: result.subaction,
99
+ },
100
+ data: {
101
+ actionName: "BROWSER_SESSION",
102
+ command,
103
+ result,
104
+ },
105
+ };
106
+ }
107
+ catch (error) {
108
+ const messageText = error instanceof Error ? error.message : "Browser session failed";
109
+ logger.warn(`[browser-session] Failed: ${messageText}`);
110
+ return {
111
+ text: `Browser session failed: ${messageText}`,
112
+ success: false,
113
+ values: { success: false, error: "BROWSER_SESSION_FAILED" },
114
+ data: {
115
+ actionName: "BROWSER_SESSION",
116
+ command,
117
+ },
118
+ };
119
+ }
120
+ },
121
+ parameters: [
122
+ {
123
+ name: "subaction",
124
+ description: "Browser session action to perform",
125
+ required: false,
126
+ schema: {
127
+ type: "string",
128
+ enum: [
129
+ "back",
130
+ "click",
131
+ "close",
132
+ "forward",
133
+ "get",
134
+ "hide",
135
+ "navigate",
136
+ "open",
137
+ "press",
138
+ "reload",
139
+ "screenshot",
140
+ "show",
141
+ "snapshot",
142
+ "state",
143
+ "tab",
144
+ "type",
145
+ "wait",
146
+ ],
147
+ },
148
+ },
149
+ {
150
+ name: "tabAction",
151
+ description: "Tab operation when subaction is tab",
152
+ required: false,
153
+ schema: {
154
+ type: "string",
155
+ enum: ["close", "list", "new", "switch"],
156
+ },
157
+ },
158
+ {
159
+ name: "id",
160
+ description: "Session or tab id to target",
161
+ required: false,
162
+ schema: { type: "string" },
163
+ },
164
+ {
165
+ name: "url",
166
+ description: "URL for open or navigate",
167
+ required: false,
168
+ schema: { type: "string" },
169
+ },
170
+ {
171
+ name: "selector",
172
+ description: "Selector for click, type, or wait",
173
+ required: false,
174
+ schema: { type: "string" },
175
+ },
176
+ {
177
+ name: "text",
178
+ description: "Text for type",
179
+ required: false,
180
+ schema: { type: "string" },
181
+ },
182
+ {
183
+ name: "key",
184
+ description: "Keyboard key for press",
185
+ required: false,
186
+ schema: { type: "string" },
187
+ },
188
+ {
189
+ name: "pixels",
190
+ description: "Scroll distance in pixels",
191
+ required: false,
192
+ schema: { type: "number" },
193
+ },
194
+ {
195
+ name: "timeoutMs",
196
+ description: "Command timeout in milliseconds",
197
+ required: false,
198
+ schema: { type: "number" },
199
+ },
200
+ {
201
+ name: "script",
202
+ description: "Script for eval",
203
+ required: false,
204
+ schema: { type: "string" },
205
+ },
206
+ ],
207
+ };
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @module actions/context-signal
13
13
  */
14
- import { recentConversationTexts as collectRecentConversationTexts } from "@elizaos/app-lifeops/actions/life-recent-context.js";
14
+ import { recentConversationTexts as collectRecentConversationTexts } from "./recent-conversation-texts.js";
15
15
  import type { Memory, State } from "@elizaos/core";
16
16
  import { collectKeywordTermMatches, textIncludesKeywordTerm } from "@elizaos/shared/validation-keywords";
17
17
  import { type ContextSignalKey } from "./context-signal-lexicon.js";
@@ -1 +1 @@
1
- {"version":3,"file":"context-signal.d.ts","sourceRoot":"","sources":["../../../../../src/actions/context-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,uBAAuB,IAAI,8BAA8B,EAE1D,MAAM,qDAAqD,CAAC;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,CAAC;AA6D9D,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC9B,GACA,GAAG,CAAC,MAAM,CAAC,CAMb;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,YAAY,SAAI,GACf,OAAO,CAuBT;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAYT;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACxE,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,YAAY,SAAI,GACf,OAAO,CAAC,OAAO,CAAC,CAkClB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACxE,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
1
+ {"version":3,"file":"context-signal.d.ts","sourceRoot":"","sources":["../../../../../src/actions/context-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,uBAAuB,IAAI,8BAA8B,EAE1D,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EACL,KAAK,gBAAgB,EAGtB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,CAAC;AA6D9D,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,MAAM,EAAE,EACf,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IACR,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;CAC9B,GACA,GAAG,CAAC,MAAM,CAAC,CAMb;AAID,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAKnD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,YAAY,SAAI,GACf,OAAO,CAuBT;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAYT;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACxE,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,WAAW,EAAE,SAAS,MAAM,EAAE,EAC9B,SAAS,GAAE,SAAS,MAAM,EAAO,EACjC,YAAY,SAAI,GACf,OAAO,CAAC,OAAO,CAAC,CAkClB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,UAAU,CAAC,OAAO,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EACxE,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,GAAG,EAAE,gBAAgB,EACrB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GACA,OAAO,CAAC,OAAO,CAAC,CAiBlB"}
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * @module actions/context-signal
13
13
  */
14
- import { recentConversationTexts as collectRecentConversationTexts, recentConversationTextsFromState, } from "@elizaos/app-lifeops/actions/life-recent-context.js";
14
+ import { recentConversationTexts as collectRecentConversationTexts, recentConversationTextsFromState, } from "./recent-conversation-texts.js";
15
15
  import { collectKeywordTermMatches, textIncludesKeywordTerm, } from "@elizaos/shared/validation-keywords";
16
16
  import { getContextSignalTerms, resolveContextSignalSpec, } from "./context-signal-lexicon.js";
17
17
  export { collectKeywordTermMatches, textIncludesKeywordTerm };
@@ -0,0 +1,3 @@
1
+ import type { Action } from "@elizaos/core";
2
+ export declare const extractPageAction: Action;
3
+ //# sourceMappingURL=extract-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extract-page.d.ts","sourceRoot":"","sources":["../../../../../src/actions/extract-page.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgD,MAAM,eAAe,CAAC;AAqC1F,eAAO,MAAM,iBAAiB,EAAE,MAiH/B,CAAC"}
@@ -0,0 +1,124 @@
1
+ import { logger } from "@elizaos/core";
2
+ import { hasRoleAccess } from "../security/access.js";
3
+ import { extractHostedCloudPage, isHostedCloudToolingConfigured, } from "../services/hosted-tools.js";
4
+ function getMessageText(message) {
5
+ const content = message?.content;
6
+ if (typeof content === "string") {
7
+ return content;
8
+ }
9
+ return typeof content?.text === "string" ? content.text : "";
10
+ }
11
+ function extractFirstUrl(value) {
12
+ const match = value.match(/https?:\/\/[^\s<>"'`]+/i);
13
+ return match?.[0] ?? null;
14
+ }
15
+ function formatExtractPreview(markdown, html) {
16
+ const source = markdown?.trim() || html?.trim() || "";
17
+ if (!source) {
18
+ return "No page content was returned.";
19
+ }
20
+ return source.slice(0, 1_500);
21
+ }
22
+ export const extractPageAction = {
23
+ name: "EXTRACT_PAGE",
24
+ similes: ["SCRAPE_PAGE", "FETCH_PAGE", "READ_WEB_PAGE", "EXTRACT_WEB_PAGE"],
25
+ description: "Extract page content through Eliza Cloud hosted tools. Returns cleaned markdown plus optional HTML, links, screenshot data, and page metadata.",
26
+ validate: async (runtime, message, _state) => {
27
+ if (!(await hasRoleAccess(runtime, message, "USER"))) {
28
+ return false;
29
+ }
30
+ return isHostedCloudToolingConfigured(process.env);
31
+ },
32
+ handler: async (_runtime, message, _state, options) => {
33
+ if (!isHostedCloudToolingConfigured(process.env)) {
34
+ return {
35
+ text: "Page extraction requires Eliza Cloud hosted tools to be configured.",
36
+ success: false,
37
+ values: { success: false, error: "CLOUD_TOOLS_NOT_CONFIGURED" },
38
+ data: { actionName: "EXTRACT_PAGE" },
39
+ };
40
+ }
41
+ const params = options?.parameters;
42
+ const messageText = getMessageText(message);
43
+ const url = params?.url?.trim() || extractFirstUrl(messageText) || "";
44
+ if (!url) {
45
+ return {
46
+ text: "Please provide a page URL to extract.",
47
+ success: false,
48
+ values: { success: false, error: "EMPTY_URL" },
49
+ data: { actionName: "EXTRACT_PAGE" },
50
+ };
51
+ }
52
+ try {
53
+ logger.info(`[extract-page] Hosted extract: "${url}"`);
54
+ const result = await extractHostedCloudPage({
55
+ formats: params?.formats,
56
+ onlyMainContent: params?.onlyMainContent,
57
+ timeoutMs: params?.timeoutMs,
58
+ url,
59
+ waitFor: params?.waitFor,
60
+ });
61
+ return {
62
+ text: `Extracted ${result.url}\n\n${formatExtractPreview(result.markdown, result.html)}`,
63
+ success: true,
64
+ values: {
65
+ success: true,
66
+ linkCount: result.links.length,
67
+ provider: result.provider,
68
+ },
69
+ data: {
70
+ actionName: "EXTRACT_PAGE",
71
+ ...result,
72
+ },
73
+ };
74
+ }
75
+ catch (error) {
76
+ const messageText = error instanceof Error ? error.message : "Hosted extraction failed";
77
+ logger.warn(`[extract-page] Hosted extract failed: ${messageText}`);
78
+ return {
79
+ text: `Page extraction failed: ${messageText}`,
80
+ success: false,
81
+ values: { success: false, error: "EXTRACT_FAILED" },
82
+ data: { actionName: "EXTRACT_PAGE", url },
83
+ };
84
+ }
85
+ },
86
+ parameters: [
87
+ {
88
+ name: "url",
89
+ description: "Page URL to extract",
90
+ required: true,
91
+ schema: { type: "string" },
92
+ },
93
+ {
94
+ name: "formats",
95
+ description: "Requested output formats",
96
+ required: false,
97
+ schema: {
98
+ type: "array",
99
+ items: {
100
+ type: "string",
101
+ enum: ["html", "links", "markdown", "screenshot"],
102
+ },
103
+ },
104
+ },
105
+ {
106
+ name: "onlyMainContent",
107
+ description: "Prefer primary page content only",
108
+ required: false,
109
+ schema: { type: "boolean" },
110
+ },
111
+ {
112
+ name: "waitFor",
113
+ description: "Wait before extracting, in milliseconds",
114
+ required: false,
115
+ schema: { type: "number" },
116
+ },
117
+ {
118
+ name: "timeoutMs",
119
+ description: "Maximum extraction timeout in milliseconds",
120
+ required: false,
121
+ schema: { type: "number" },
122
+ },
123
+ ],
124
+ };
@@ -1,4 +1,4 @@
1
- import { recentConversationTexts } from "@elizaos/app-lifeops/actions/life-recent-context.js";
1
+ import { recentConversationTexts } from "./recent-conversation-texts.js";
2
2
  import { getTrajectoryContext, ModelType, parseJSONObjectFromText, parseKeyValueXml, } from "@elizaos/core";
3
3
  import { loadTrajectoryByStepId } from "../runtime/trajectory-internals.js";
4
4
  function asRecord(value) {
@@ -0,0 +1,9 @@
1
+ import type { IAgentRuntime, Memory, State } from "@elizaos/core";
2
+ export declare function recentConversationTextsFromState(state: State | undefined, limit?: number): string[];
3
+ export declare function recentConversationTexts(args: {
4
+ runtime: IAgentRuntime;
5
+ message?: Memory;
6
+ state: State | undefined;
7
+ limit?: number;
8
+ }): Promise<string[]>;
9
+ //# sourceMappingURL=recent-conversation-texts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recent-conversation-texts.d.ts","sourceRoot":"","sources":["../../../../../src/actions/recent-conversation-texts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AA6BlE,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,KAAK,SAAI,GACR,MAAM,EAAE,CAqCV;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE;IAClD,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAiCpB"}