@elizaos/ui 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.
- package/apps/app-companion/src/components/companion/companion-app.js +2 -2
- package/apps/app-lifeops/src/action.d.ts.map +1 -1
- package/apps/app-lifeops/src/action.js +21 -2
- package/apps/app-lifeops/src/actions/app-blocker.d.ts +3 -1
- package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/app-blocker.js +2 -0
- package/apps/app-lifeops/src/actions/calendar.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/calendar.js +140 -7
- package/apps/app-lifeops/src/actions/computer-use.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/computer-use.js +248 -17
- package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +3 -1
- package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/cross-channel-send.js +1 -0
- package/apps/app-lifeops/src/actions/dossier.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/dossier.js +51 -34
- package/apps/app-lifeops/src/actions/gmail.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/gmail.js +5 -0
- package/apps/app-lifeops/src/actions/inbox.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/inbox.js +8 -1
- package/apps/app-lifeops/src/actions/life.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/life.extractor.js +103 -4
- package/apps/app-lifeops/src/actions/life.js +8 -0
- package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +6 -0
- package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/non-actionable-request.js +33 -0
- package/apps/app-lifeops/src/actions/password-manager.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/password-manager.js +11 -2
- package/apps/app-lifeops/src/actions/relationships.d.ts +3 -1
- package/apps/app-lifeops/src/actions/relationships.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/relationships.js +167 -11
- package/apps/app-lifeops/src/actions/remote-desktop.js +1 -1
- package/apps/app-lifeops/src/actions/screen-time.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/screen-time.js +8 -2
- package/apps/app-lifeops/src/actions/start-remote-session.js +1 -1
- package/apps/app-lifeops/src/actions/subscriptions.d.ts +5 -0
- package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +1 -0
- package/apps/app-lifeops/src/actions/subscriptions.js +251 -0
- package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/twilio-call.js +48 -3
- package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/update-owner-profile.js +2 -1
- package/apps/app-lifeops/src/actions/website-blocker.d.ts +6 -2
- package/apps/app-lifeops/src/actions/website-blocker.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/website-blocker.js +38 -0
- package/apps/app-lifeops/src/actions/x-read.d.ts.map +1 -1
- package/apps/app-lifeops/src/actions/x-read.js +27 -3
- package/apps/app-lifeops/src/dossier/action.d.ts.map +1 -1
- package/apps/app-lifeops/src/dossier/action.js +8 -7
- package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts.map +1 -1
- package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +1 -0
- package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts.map +1 -1
- package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +2 -1
- package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts.map +1 -1
- package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +2 -1
- package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/calendly-client.js +4 -2
- package/apps/app-lifeops/src/lifeops/discord-browser-scraper.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +6 -5
- package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +1 -1
- package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +84 -6
- package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/remote-desktop.js +30 -0
- package/apps/app-lifeops/src/lifeops/repository.d.ts +15 -0
- package/apps/app-lifeops/src/lifeops/repository.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/repository.js +330 -1
- package/apps/app-lifeops/src/lifeops/service-mixin-discord.js +222 -42
- package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.d.ts +2 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +763 -0
- package/apps/app-lifeops/src/lifeops/service.d.ts +64 -1
- package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/service.js +2 -1
- package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts +54 -0
- package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/subscriptions-playbooks.js +213 -0
- package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts +80 -0
- package/apps/app-lifeops/src/lifeops/subscriptions-types.d.ts.map +1 -0
- package/apps/app-lifeops/src/lifeops/twilio.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/twilio.js +4 -2
- package/apps/app-lifeops/src/lifeops/whatsapp-client.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/whatsapp-client.js +4 -2
- package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/x-poster.js +12 -6
- package/apps/app-lifeops/src/lifeops/x-reader.d.ts.map +1 -1
- package/apps/app-lifeops/src/lifeops/x-reader.js +7 -5
- package/apps/app-lifeops/src/plugin.d.ts.map +1 -1
- package/apps/app-lifeops/src/plugin.js +31 -24
- package/apps/app-lifeops/src/provider.d.ts.map +1 -1
- package/apps/app-lifeops/src/provider.js +4 -4
- package/apps/app-lifeops/src/providers/inbox-triage.js +2 -2
- package/apps/app-lifeops/src/providers/lifeops.d.ts.map +1 -1
- package/apps/app-lifeops/src/providers/lifeops.js +19 -10
- package/apps/app-lifeops/src/providers/website-blocker.js +1 -1
- package/apps/app-lifeops/src/public.d.ts +4 -0
- package/apps/app-lifeops/src/public.d.ts.map +1 -0
- package/apps/app-lifeops/src/public.js +3 -0
- package/apps/app-lifeops/src/routes/plugin.d.ts +18 -0
- package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -0
- package/apps/app-lifeops/src/routes/plugin.js +270 -0
- package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +1 -1
- package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +18 -2
- package/package.json +1 -1
- package/packages/agent/src/actions/browser-session.d.ts +3 -0
- package/packages/agent/src/actions/browser-session.d.ts.map +1 -0
- package/packages/agent/src/actions/browser-session.js +207 -0
- package/packages/agent/src/actions/context-signal.d.ts +1 -1
- package/packages/agent/src/actions/context-signal.d.ts.map +1 -1
- package/packages/agent/src/actions/context-signal.js +1 -1
- package/packages/agent/src/actions/extract-page.d.ts +3 -0
- package/packages/agent/src/actions/extract-page.d.ts.map +1 -0
- package/packages/agent/src/actions/extract-page.js +124 -0
- package/packages/agent/src/actions/grounded-action-reply.js +1 -1
- package/packages/agent/src/actions/recent-conversation-texts.d.ts +9 -0
- package/packages/agent/src/actions/recent-conversation-texts.d.ts.map +1 -0
- package/packages/agent/src/actions/recent-conversation-texts.js +81 -0
- package/packages/agent/src/actions/set-user-name.js +1 -1
- package/packages/agent/src/actions/web-search.d.ts +4 -10
- package/packages/agent/src/actions/web-search.d.ts.map +1 -1
- package/packages/agent/src/actions/web-search.js +89 -19
- package/packages/agent/src/api/binance-skill-helpers.d.ts.map +1 -1
- package/packages/agent/src/api/binance-skill-helpers.js +1 -1
- package/packages/agent/src/api/chat-augmentation.d.ts +1 -20
- package/packages/agent/src/api/chat-augmentation.d.ts.map +1 -1
- package/packages/agent/src/api/chat-augmentation.js +2 -110
- package/packages/agent/src/api/conversation-metadata.d.ts +9 -0
- package/packages/agent/src/api/conversation-metadata.d.ts.map +1 -0
- package/packages/agent/src/api/conversation-metadata.js +98 -0
- package/packages/agent/src/api/conversation-routes.d.ts.map +1 -1
- package/packages/agent/src/api/conversation-routes.js +40 -9
- package/packages/agent/src/api/permissions-routes.js +1 -1
- package/packages/agent/src/api/server-helpers-auth.js +1 -1
- package/packages/agent/src/api/server-helpers.d.ts +2 -1
- package/packages/agent/src/api/server-helpers.d.ts.map +1 -1
- package/packages/agent/src/api/server-helpers.js +2 -110
- package/packages/agent/src/api/server-types.d.ts +14 -0
- package/packages/agent/src/api/server-types.d.ts.map +1 -1
- package/packages/agent/src/api/server.d.ts.map +1 -1
- package/packages/agent/src/api/server.js +3 -13
- package/packages/agent/src/api/workbench-routes.d.ts.map +1 -1
- package/packages/agent/src/api/workbench-routes.js +0 -14
- package/packages/agent/src/auth/credentials.d.ts.map +1 -1
- package/packages/agent/src/auth/credentials.js +8 -0
- package/packages/agent/src/providers/automation-terminal-bridge.d.ts +3 -0
- package/packages/agent/src/providers/automation-terminal-bridge.d.ts.map +1 -0
- package/packages/agent/src/providers/automation-terminal-bridge.js +71 -0
- package/packages/agent/src/providers/recent-conversations.d.ts.map +1 -1
- package/packages/agent/src/providers/recent-conversations.js +5 -0
- package/packages/agent/src/providers/relevant-conversations.d.ts.map +1 -1
- package/packages/agent/src/providers/relevant-conversations.js +5 -0
- package/packages/agent/src/providers/user-name.d.ts.map +1 -1
- package/packages/agent/src/providers/user-name.js +1 -1
- package/packages/agent/src/runtime/eliza-plugin.d.ts.map +1 -1
- package/packages/agent/src/runtime/eliza-plugin.js +6 -0
- package/packages/agent/src/runtime/plugin-resolver.d.ts.map +1 -1
- package/packages/agent/src/runtime/plugin-resolver.js +115 -0
- package/packages/agent/src/services/browser-workspace-types.d.ts +5 -1
- package/packages/agent/src/services/browser-workspace-types.d.ts.map +1 -1
- package/packages/agent/src/services/browser-workspace.d.ts.map +1 -1
- package/packages/agent/src/services/browser-workspace.js +178 -7
- package/packages/agent/src/services/escalation.d.ts +0 -11
- package/packages/agent/src/services/escalation.d.ts.map +1 -1
- package/packages/agent/src/services/escalation.js +19 -58
- package/packages/agent/src/services/hosted-tools.d.ts +70 -0
- package/packages/agent/src/services/hosted-tools.d.ts.map +1 -0
- package/packages/agent/src/services/hosted-tools.js +87 -0
- package/packages/agent/src/services/owner-name.d.ts +4 -0
- package/packages/agent/src/services/owner-name.d.ts.map +1 -0
- package/packages/agent/src/services/owner-name.js +46 -0
- package/packages/agent/src/services/registry-client-queries.d.ts +1 -1
- package/packages/agent/src/services/registry-client-queries.js +1 -1
- package/packages/agent/src/services/registry-client-types.d.ts +1 -1
- package/packages/app-core/src/api/client-automations.d.ts +8 -0
- package/packages/app-core/src/api/client-automations.d.ts.map +1 -0
- package/packages/app-core/src/api/client-automations.js +7 -0
- package/packages/app-core/src/api/client-browser-workspace.d.ts +3 -0
- package/packages/app-core/src/api/client-browser-workspace.d.ts.map +1 -1
- package/packages/app-core/src/api/client-browser-workspace.js +3 -0
- package/packages/app-core/src/api/client-chat.d.ts +8 -2
- package/packages/app-core/src/api/client-chat.d.ts.map +1 -1
- package/packages/app-core/src/api/client-chat.js +14 -1
- package/packages/app-core/src/api/client-types-chat.d.ts +4 -0
- package/packages/app-core/src/api/client-types-chat.d.ts.map +1 -1
- package/packages/app-core/src/api/client-types-config.d.ts +67 -2
- package/packages/app-core/src/api/client-types-config.d.ts.map +1 -1
- package/packages/app-core/src/api/client.d.ts +1 -0
- package/packages/app-core/src/api/client.d.ts.map +1 -1
- package/packages/app-core/src/api/client.js +1 -0
- package/packages/app-core/src/components/apps/helpers.d.ts +1 -1
- package/packages/app-core/src/components/apps/helpers.d.ts.map +1 -1
- package/packages/app-core/src/components/apps/helpers.js +5 -9
- package/packages/app-core/src/components/apps/internal-tool-apps.d.ts.map +1 -1
- package/packages/app-core/src/components/apps/internal-tool-apps.js +10 -1
- package/packages/app-core/src/components/conversations/conversation-sidebar-model.d.ts.map +1 -1
- package/packages/app-core/src/components/conversations/conversation-sidebar-model.js +6 -0
- package/packages/app-core/src/components/pages/AutomationRoomChatPane.d.ts +16 -0
- package/packages/app-core/src/components/pages/AutomationRoomChatPane.d.ts.map +1 -0
- package/packages/app-core/src/components/pages/AutomationRoomChatPane.js +202 -0
- package/packages/app-core/src/components/pages/AutomationsView.d.ts +1 -4
- package/packages/app-core/src/components/pages/AutomationsView.d.ts.map +1 -1
- package/packages/app-core/src/components/pages/AutomationsView.js +565 -265
- package/packages/app-core/src/components/pages/BrowserWorkspaceView.d.ts.map +1 -1
- package/packages/app-core/src/components/pages/BrowserWorkspaceView.js +118 -24
- package/packages/app-core/src/components/pages/automation-conversations.d.ts +15 -0
- package/packages/app-core/src/components/pages/automation-conversations.d.ts.map +1 -0
- package/packages/app-core/src/components/pages/automation-conversations.js +190 -0
- package/packages/app-core/src/components/pages/plugin-list-utils.js +4 -4
- package/packages/app-core/src/config/boot-config-store.d.ts +1 -1
- package/packages/app-core/src/config/boot-config-store.d.ts.map +1 -1
- package/packages/app-core/src/state/useOnboardingCallbacks.d.ts +14 -0
- package/packages/app-core/src/state/useOnboardingCallbacks.d.ts.map +1 -1
- package/packages/app-core/src/state/useOnboardingCallbacks.js +1 -1
- package/packages/app-core/src/state/usePluginsSkillsState.d.ts +2 -2
- package/packages/app-core/src/utils/desktop-workspace.d.ts +2 -2
- package/packages/app-core/src/utils/desktop-workspace.d.ts.map +1 -1
- package/packages/app-core/src/utils/desktop-workspace.js +7 -2
- package/packages/shared/src/contracts/lifeops.d.ts +26 -0
- package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
- package/packages/shared/src/contracts/lifeops.js +28 -0
- package/packages/typescript/src/actions.d.ts.map +1 -1
- package/packages/typescript/src/actions.js +12 -0
- package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.d.ts.map +1 -1
- package/packages/typescript/src/features/advanced-capabilities/actions/scheduleFollowUp.js +8 -2
- package/packages/typescript/src/features/advanced-capabilities/providers/settings.d.ts.map +1 -1
- package/packages/typescript/src/features/advanced-capabilities/providers/settings.js +11 -3
- package/packages/typescript/src/features/basic-capabilities/providers/actions.d.ts.map +1 -1
- package/packages/typescript/src/features/basic-capabilities/providers/actions.js +23 -1
- package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.d.ts +5 -0
- package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.d.ts.map +1 -0
- package/packages/typescript/src/features/basic-capabilities/providers/non-actionable-chatter.js +22 -0
- package/packages/typescript/src/features/basic-capabilities/providers/providers.d.ts.map +1 -1
- package/packages/typescript/src/features/basic-capabilities/providers/providers.js +10 -5
- package/packages/typescript/src/features/knowledge/documents-provider.d.ts.map +1 -1
- package/packages/typescript/src/features/knowledge/documents-provider.js +1 -0
- package/packages/typescript/src/features/shared/schedule-follow-up-response.d.ts +10 -0
- package/packages/typescript/src/features/shared/schedule-follow-up-response.d.ts.map +1 -0
- package/packages/typescript/src/features/shared/schedule-follow-up-response.js +49 -0
- package/packages/typescript/src/features/trajectories/TrajectoriesService.d.ts +1 -0
- package/packages/typescript/src/features/trajectories/TrajectoriesService.d.ts.map +1 -1
- package/packages/typescript/src/features/trajectories/TrajectoriesService.js +21 -2
- package/packages/typescript/src/features/trust/providers/settings.d.ts.map +1 -1
- package/packages/typescript/src/features/trust/providers/settings.js +11 -1
- package/packages/typescript/src/prompts.d.ts +4 -4
- package/packages/typescript/src/prompts.d.ts.map +1 -1
- package/packages/typescript/src/prompts.js +10 -2
- package/packages/typescript/src/services/message.d.ts +1 -0
- package/packages/typescript/src/services/message.d.ts.map +1 -1
- package/packages/typescript/src/services/message.js +483 -18
- package/packages/typescript/src/types/components.d.ts +6 -0
- package/packages/typescript/src/types/components.d.ts.map +1 -1
- package/packages/typescript/src/utils/context-routing.d.ts.map +1 -1
- package/packages/typescript/src/utils/context-routing.js +5 -1
- package/packages/typescript/src/utils/toon.d.ts.map +1 -1
- package/packages/typescript/src/utils/toon.js +23 -2
- package/packages/typescript/src/utils.d.ts +1 -0
- package/packages/typescript/src/utils.d.ts.map +1 -1
- package/packages/typescript/src/utils.js +1 -0
- package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts +0 -2
- package/apps/app-lifeops/src/types/app-blocker-settings-card.d.ts.map +0 -1
- package/apps/app-lifeops/src/types/index.d.ts +0 -3
- package/apps/app-lifeops/src/types/index.d.ts.map +0 -1
- package/apps/app-lifeops/src/types/index.js +0 -1
- package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts +0 -2
- package/apps/app-lifeops/src/types/website-blocker-settings-card.d.ts.map +0 -1
- package/apps/app-lifeops/src/types/website-blocker-settings-card.js +0 -1
- package/packages/agent/src/contracts/lifeops.d.ts +0 -2
- package/packages/agent/src/contracts/lifeops.d.ts.map +0 -1
- package/packages/agent/src/contracts/lifeops.js +0 -1
- package/packages/app-core/src/components/pages/N8nWorkflowsPanel.d.ts +0 -18
- package/packages/app-core/src/components/pages/N8nWorkflowsPanel.d.ts.map +0 -1
- package/packages/app-core/src/components/pages/N8nWorkflowsPanel.js +0 -542
- /package/apps/app-lifeops/src/{types/app-blocker-settings-card.js → lifeops/subscriptions-types.js} +0 -0
package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js
CHANGED
|
@@ -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.
|
|
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
|
};
|
package/package.json
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"browser-session.d.ts","sourceRoot":"","sources":["../../../../../../agent/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 "
|
|
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":["../../../../../../agent/src/actions/context-signal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,uBAAuB,IAAI,8BAA8B,EAE1D,MAAM,
|
|
1
|
+
{"version":3,"file":"context-signal.d.ts","sourceRoot":"","sources":["../../../../../../agent/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 "
|
|
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 @@
|
|
|
1
|
+
{"version":3,"file":"extract-page.d.ts","sourceRoot":"","sources":["../../../../../../agent/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 "
|
|
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":["../../../../../../agent/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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
const STATE_SPEAKER_PREFIX_RE = /^[a-zA-Z\u00C0-\u024F\u0400-\u04FF\u3000-\u9FFF]{1,20}\s*:\s*/;
|
|
2
|
+
function normalizeConversationLine(value) {
|
|
3
|
+
return value.replace(STATE_SPEAKER_PREFIX_RE, "").trim();
|
|
4
|
+
}
|
|
5
|
+
function splitConversationText(value) {
|
|
6
|
+
return value
|
|
7
|
+
.split(/\n+/)
|
|
8
|
+
.map((line) => normalizeConversationLine(line))
|
|
9
|
+
.filter((line) => line.length > 0);
|
|
10
|
+
}
|
|
11
|
+
function dedupePreservingOrder(values) {
|
|
12
|
+
const seen = new Set();
|
|
13
|
+
const deduped = [];
|
|
14
|
+
for (const value of values) {
|
|
15
|
+
if (seen.has(value)) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
seen.add(value);
|
|
19
|
+
deduped.push(value);
|
|
20
|
+
}
|
|
21
|
+
return deduped;
|
|
22
|
+
}
|
|
23
|
+
export function recentConversationTextsFromState(state, limit = 6) {
|
|
24
|
+
if (!state || typeof state !== "object") {
|
|
25
|
+
return [];
|
|
26
|
+
}
|
|
27
|
+
const stateRecord = state;
|
|
28
|
+
const values = stateRecord.values && typeof stateRecord.values === "object"
|
|
29
|
+
? stateRecord.values
|
|
30
|
+
: undefined;
|
|
31
|
+
const collected = [];
|
|
32
|
+
const pushText = (value) => {
|
|
33
|
+
if (typeof value === "string" && value.trim().length > 0) {
|
|
34
|
+
collected.push(...splitConversationText(value));
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
pushText(values?.recentMessages);
|
|
38
|
+
pushText(stateRecord.text);
|
|
39
|
+
const recentMessagesData = stateRecord.recentMessagesData ?? stateRecord.recentMessages;
|
|
40
|
+
if (Array.isArray(recentMessagesData)) {
|
|
41
|
+
for (const item of recentMessagesData) {
|
|
42
|
+
if (!item || typeof item !== "object") {
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
const content = item.content;
|
|
46
|
+
if (!content || typeof content !== "object") {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
pushText(content.text);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return dedupePreservingOrder(collected.slice(-Math.max(1, limit)));
|
|
53
|
+
}
|
|
54
|
+
export async function recentConversationTexts(args) {
|
|
55
|
+
const limit = Math.max(1, args.limit ?? 6);
|
|
56
|
+
const stateTexts = recentConversationTextsFromState(args.state, limit);
|
|
57
|
+
const roomId = typeof args.message?.roomId === "string" ? args.message.roomId : "";
|
|
58
|
+
if (stateTexts.length >= limit ||
|
|
59
|
+
!roomId ||
|
|
60
|
+
typeof args.runtime.getMemories !== "function") {
|
|
61
|
+
return stateTexts;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
const memories = await args.runtime.getMemories({
|
|
65
|
+
roomId,
|
|
66
|
+
tableName: "messages",
|
|
67
|
+
limit,
|
|
68
|
+
});
|
|
69
|
+
const memoryTexts = Array.isArray(memories)
|
|
70
|
+
? memories
|
|
71
|
+
.map((memory) => typeof memory?.content?.text === "string"
|
|
72
|
+
? normalizeConversationLine(memory.content.text)
|
|
73
|
+
: "")
|
|
74
|
+
.filter((text) => text.length > 0)
|
|
75
|
+
: [];
|
|
76
|
+
return dedupePreservingOrder([...memoryTexts, ...stateTexts].slice(-limit));
|
|
77
|
+
}
|
|
78
|
+
catch {
|
|
79
|
+
return stateTexts;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* The handler PUTs `{ ui: { ownerName } }` to `/api/config` so the name is
|
|
9
9
|
* persisted to disk and immediately visible to `resolveAppUserName`.
|
|
10
10
|
*/
|
|
11
|
-
import { fetchConfiguredOwnerName, OWNER_NAME_MAX_LENGTH, persistConfiguredOwnerName, } from "
|
|
11
|
+
import { fetchConfiguredOwnerName, OWNER_NAME_MAX_LENGTH, persistConfiguredOwnerName, } from "../services/owner-name.js";
|
|
12
12
|
import { getValidationKeywordTerms, textIncludesKeywordTerm, } from "@elizaos/shared/validation-keywords";
|
|
13
13
|
import { hasOwnerAccess } from "../security/access.js";
|
|
14
14
|
const SET_USER_NAME_CONTEXT_TERMS = getValidationKeywordTerms("action.setUserName.recentContext", {
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Hosted web search action.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* - Fallback when Anthropic server-side search is insufficient
|
|
8
|
-
*
|
|
9
|
-
* Configuration:
|
|
10
|
-
* BRAVE_API_KEY env var OR tools.web.search.apiKey in agent config
|
|
11
|
-
*
|
|
12
|
-
* This action is registered as WEB_SEARCH in the ElizaOS action system.
|
|
4
|
+
* Prefers Eliza Cloud hosted Google-grounded Gemini search when cloud tooling
|
|
5
|
+
* is configured. Falls back to the Brave Search API when cloud search is not
|
|
6
|
+
* available locally.
|
|
13
7
|
*/
|
|
14
8
|
import type { Action } from "@elizaos/core";
|
|
15
9
|
export declare const webSearchAction: Action;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/web-search.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/actions/web-search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,eAAe,CAAC;AAmI3E,eAAO,MAAM,eAAe,EAAE,MAqM7B,CAAC"}
|