@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
|
@@ -52,6 +52,115 @@ function redactUserSegments(filepath) {
|
|
|
52
52
|
function sanitizePluginCacheSegment(value) {
|
|
53
53
|
return value.replace(/[^a-zA-Z0-9._-]+/g, "_");
|
|
54
54
|
}
|
|
55
|
+
function packageNodeModulesEntryPath(nodeModulesDir, packageName) {
|
|
56
|
+
return path.join(nodeModulesDir, ...packageName.split("/"));
|
|
57
|
+
}
|
|
58
|
+
async function pathEntryExists(targetPath) {
|
|
59
|
+
try {
|
|
60
|
+
await fs.lstat(targetPath);
|
|
61
|
+
return true;
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
if (error.code === "ENOENT") {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
throw error;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
async function readPluginPackageManifest(packageRoot) {
|
|
71
|
+
try {
|
|
72
|
+
return JSON.parse(await fs.readFile(path.join(packageRoot, "package.json"), "utf8"));
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
if (error.code === "ENOENT") {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
throw error;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
function collectDeclaredPluginDependencies(manifest) {
|
|
82
|
+
const collected = new Map();
|
|
83
|
+
for (const name of Object.keys(manifest.dependencies ?? {})) {
|
|
84
|
+
collected.set(name, { name, optional: false });
|
|
85
|
+
}
|
|
86
|
+
for (const name of Object.keys(manifest.optionalDependencies ?? {})) {
|
|
87
|
+
if (!collected.has(name)) {
|
|
88
|
+
collected.set(name, { name, optional: true });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
for (const name of Object.keys(manifest.peerDependencies ?? {})) {
|
|
92
|
+
if (collected.has(name)) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const optional = manifest.peerDependenciesMeta?.[name]?.optional === true;
|
|
96
|
+
collected.set(name, { name, optional });
|
|
97
|
+
}
|
|
98
|
+
return [...collected.values()].sort((left, right) => left.name.localeCompare(right.name));
|
|
99
|
+
}
|
|
100
|
+
async function stageDependencyIntoNodeModules(params) {
|
|
101
|
+
const sourcePath = packageNodeModulesEntryPath(params.sourceNodeModulesDir, params.dependencyName);
|
|
102
|
+
if (!(await pathEntryExists(sourcePath))) {
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
105
|
+
const targetPath = packageNodeModulesEntryPath(params.targetNodeModulesDir, params.dependencyName);
|
|
106
|
+
if (await pathEntryExists(targetPath)) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
109
|
+
await fs.mkdir(path.dirname(targetPath), { recursive: true });
|
|
110
|
+
const stat = await fs.lstat(sourcePath);
|
|
111
|
+
if (stat.isSymbolicLink()) {
|
|
112
|
+
await fs.symlink(await fs.realpath(sourcePath), targetPath);
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
if (!stat.isDirectory()) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
await fs.cp(sourcePath, targetPath, {
|
|
119
|
+
recursive: true,
|
|
120
|
+
force: true,
|
|
121
|
+
dereference: true,
|
|
122
|
+
});
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
async function ensureStagedPackageDependencies(params) {
|
|
126
|
+
const stagedNodeModulesPath = path.join(params.stagedPackageRoot, "node_modules");
|
|
127
|
+
if (!(await pathEntryExists(stagedNodeModulesPath))) {
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
const manifest = await readPluginPackageManifest(params.packageRoot);
|
|
131
|
+
if (!manifest) {
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
const dependencies = collectDeclaredPluginDependencies(manifest);
|
|
135
|
+
if (dependencies.length === 0) {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const sourceNodeModulesDirs = uniquePaths([
|
|
139
|
+
path.join(params.packageRoot, "node_modules"),
|
|
140
|
+
path.join(params.installRoot, "node_modules"),
|
|
141
|
+
...(await findAncestorNodeModulesDirs(params.packageRoot)),
|
|
142
|
+
]);
|
|
143
|
+
for (const dependency of dependencies) {
|
|
144
|
+
const stagedDependencyPath = packageNodeModulesEntryPath(stagedNodeModulesPath, dependency.name);
|
|
145
|
+
if (await pathEntryExists(stagedDependencyPath)) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
let staged = false;
|
|
149
|
+
for (const sourceNodeModulesDir of sourceNodeModulesDirs) {
|
|
150
|
+
staged = await stageDependencyIntoNodeModules({
|
|
151
|
+
dependencyName: dependency.name,
|
|
152
|
+
sourceNodeModulesDir,
|
|
153
|
+
targetNodeModulesDir: stagedNodeModulesPath,
|
|
154
|
+
});
|
|
155
|
+
if (staged) {
|
|
156
|
+
break;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (!staged && !dependency.optional) {
|
|
160
|
+
logger.warn(`[eliza] Staged plugin ${params.packageName} is missing declared dependency ${dependency.name}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
55
164
|
// ---------------------------------------------------------------------------
|
|
56
165
|
// Workspace plugin overrides
|
|
57
166
|
// ---------------------------------------------------------------------------
|
|
@@ -478,6 +587,12 @@ async function stagePluginImportRoot(params) {
|
|
|
478
587
|
packageRoot: params.packageRoot,
|
|
479
588
|
stagedPackageRoot,
|
|
480
589
|
});
|
|
590
|
+
await ensureStagedPackageDependencies({
|
|
591
|
+
installRoot: params.installRoot,
|
|
592
|
+
packageName: params.packageName,
|
|
593
|
+
packageRoot: params.packageRoot,
|
|
594
|
+
stagedPackageRoot,
|
|
595
|
+
});
|
|
481
596
|
return stagedPackageRoot;
|
|
482
597
|
}
|
|
483
598
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { JSDOM } from "jsdom";
|
|
2
|
-
export type BrowserWorkspaceMode = "desktop" | "web";
|
|
2
|
+
export type BrowserWorkspaceMode = "cloud" | "desktop" | "web";
|
|
3
3
|
export type BrowserWorkspaceOperation = "list" | "open" | "navigate" | "show" | "hide" | "close" | "eval" | "screenshot";
|
|
4
4
|
export type BrowserWorkspaceSubaction = BrowserWorkspaceOperation | "back" | "batch" | "check" | "clipboard" | "click" | "fill" | "find" | "focus" | "forward" | "frame" | "get" | "hover" | "inspect" | "keydown" | "keyup" | "keyboardinserttext" | "keyboardtype" | "console" | "cookies" | "diff" | "dialog" | "press" | "drag" | "errors" | "highlight" | "mouse" | "network" | "pdf" | "profiler" | "reload" | "scroll" | "scrollinto" | "select" | "set" | "snapshot" | "state" | "storage" | "tab" | "trace" | "type" | "dblclick" | "upload" | "uncheck" | "wait" | "window";
|
|
5
5
|
export type BrowserWorkspaceGetMode = "attr" | "box" | "checked" | "count" | "enabled" | "html" | "styles" | "text" | "title" | "url" | "value" | "visible";
|
|
@@ -33,6 +33,10 @@ export interface BrowserWorkspaceTab {
|
|
|
33
33
|
createdAt: string;
|
|
34
34
|
updatedAt: string;
|
|
35
35
|
lastFocusedAt: string | null;
|
|
36
|
+
liveViewUrl?: string | null;
|
|
37
|
+
interactiveLiveViewUrl?: string | null;
|
|
38
|
+
status?: string | null;
|
|
39
|
+
provider?: string | null;
|
|
36
40
|
}
|
|
37
41
|
export interface BrowserWorkspaceSnapshot {
|
|
38
42
|
mode: BrowserWorkspaceMode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-workspace-types.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/services/browser-workspace-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-workspace-types.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/services/browser-workspace-types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser-workspace.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/services/browser-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,YAAY,EACV,4BAA4B,EAC5B,+BAA+B,EAC/B,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,iCAAiC,EACjC,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,kCAAkC,EAClC,kCAAkC,EAClC,8BAA8B,GAC/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,kCAAkC,EAClC,kCAAkC,EAClC,8BAA8B,EAE/B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;AAGpF,OAAO,EAML,qCAAqC,EAGrC,kCAAkC,EAGlC,mCAAmC,EAIpC,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EACL,qCAAqC,EACrC,kCAAkC,EAClC,mCAAmC,GACpC,CAAC;
|
|
1
|
+
{"version":3,"file":"browser-workspace.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/services/browser-workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,YAAY,EACV,4BAA4B,EAC5B,+BAA+B,EAC/B,uBAAuB,EACvB,6BAA6B,EAC7B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,0BAA0B,EAC1B,iCAAiC,EACjC,0BAA0B,EAC1B,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,oBAAoB,EACpB,2BAA2B,EAC3B,2BAA2B,EAC3B,6BAA6B,EAC7B,yBAAyB,EACzB,8BAA8B,EAC9B,+BAA+B,EAC/B,yBAAyB,EACzB,wBAAwB,EACxB,2BAA2B,EAC3B,6BAA6B,EAC7B,2BAA2B,EAC3B,yBAAyB,EACzB,mBAAmB,EACnB,yBAAyB,EACzB,2BAA2B,EAC3B,yBAAyB,EACzB,4BAA4B,EAC5B,kCAAkC,EAClC,kCAAkC,EAClC,8BAA8B,GAC/B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,kCAAkC,EAClC,kCAAkC,EAClC,8BAA8B,EAE/B,MAAM,8BAA8B,CAAC;AAGtC,OAAO,EAAE,oCAAoC,EAAE,MAAM,8BAA8B,CAAC;AAGpF,OAAO,EAML,qCAAqC,EAGrC,kCAAkC,EAGlC,mCAAmC,EAIpC,MAAM,gCAAgC,CAAC;AAaxC,OAAO,EACL,qCAAqC,EACrC,kCAAkC,EAClC,mCAAmC,GACpC,CAAC;AA0DF,wBAAgB,uBAAuB,CACrC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,oBAAoB,CAQtB;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,wBAAwB,CAAC,CAKnC;AAED,wBAAsB,wBAAwB,CAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAwBhC;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,8BAA8B,EACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA+D9B;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kCAAkC,EAC3C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAsD9B;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,MAAM,EACV,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CA6B9B;AAED,wBAAsB,uBAAuB,CAC3C,EAAE,EAAE,MAAM,EACV,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,mBAAmB,CAAC,CAmC9B;AAED,wBAAsB,wBAAwB,CAC5C,EAAE,EAAE,MAAM,EACV,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,OAAO,CAAC,CAyBlB;AAED,wBAAsB,2BAA2B,CAC/C,OAAO,EAAE,kCAAkC,EAC3C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,OAAO,CAAC,CAclB;AAED,wBAAsB,2BAA2B,CAC/C,EAAE,EAAE,MAAM,EACV,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAK3B;AAoKD,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,uBAAuB,EAChC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAAC,6BAA6B,CAAC,CA6gBxC"}
|
|
@@ -36,11 +36,18 @@ import { createBrowserWorkspacePdfBuffer, createBrowserWorkspaceSnapshotRecord,
|
|
|
36
36
|
import { clearBrowserWorkspaceElementRefs, clearBrowserWorkspaceRuntimeState, getBrowserWorkspaceRuntimeState, getBrowserWorkspaceTimestamp, resetBrowserWorkspaceRuntimeNavigationState, webWorkspaceState, withWebStateLock, } from "./browser-workspace-state.js";
|
|
37
37
|
// ── Re-export web ────────────────────────────────────────────────────
|
|
38
38
|
import { executeWebBrowserWorkspaceDomCommand, executeWebBrowserWorkspaceUtilityCommand, findWebBrowserWorkspaceTargetTabId, getWebBrowserWorkspaceTabIndex, getWebBrowserWorkspaceTabState, } from "./browser-workspace-web.js";
|
|
39
|
+
import { createHostedCloudBrowserSession, deleteHostedCloudBrowserSession, executeHostedCloudBrowserCommand, getHostedCloudBrowserSession, isHostedCloudToolingConfigured, listHostedCloudBrowserSessions, navigateHostedCloudBrowserSession, snapshotHostedCloudBrowserSession, } from "./hosted-tools.js";
|
|
39
40
|
// ────────────────────────────────────────────────────────────────────
|
|
40
41
|
// Public API functions
|
|
41
42
|
// ────────────────────────────────────────────────────────────────────
|
|
42
43
|
export function getBrowserWorkspaceMode(env = process.env) {
|
|
43
|
-
|
|
44
|
+
if (isBrowserWorkspaceBridgeConfigured(env)) {
|
|
45
|
+
return "desktop";
|
|
46
|
+
}
|
|
47
|
+
if (isHostedCloudToolingConfigured(env)) {
|
|
48
|
+
return "cloud";
|
|
49
|
+
}
|
|
50
|
+
return "web";
|
|
44
51
|
}
|
|
45
52
|
export async function getBrowserWorkspaceSnapshot(env = process.env) {
|
|
46
53
|
return {
|
|
@@ -49,7 +56,11 @@ export async function getBrowserWorkspaceSnapshot(env = process.env) {
|
|
|
49
56
|
};
|
|
50
57
|
}
|
|
51
58
|
export async function listBrowserWorkspaceTabs(env = process.env) {
|
|
52
|
-
|
|
59
|
+
const mode = getBrowserWorkspaceMode(env);
|
|
60
|
+
if (mode === "cloud") {
|
|
61
|
+
return listHostedCloudBrowserSessions(env);
|
|
62
|
+
}
|
|
63
|
+
if (mode === "web") {
|
|
53
64
|
return webWorkspaceState.tabs.map((tab) => ({
|
|
54
65
|
id: tab.id,
|
|
55
66
|
title: tab.title,
|
|
@@ -65,7 +76,15 @@ export async function listBrowserWorkspaceTabs(env = process.env) {
|
|
|
65
76
|
return Array.isArray(payload.tabs) ? payload.tabs : [];
|
|
66
77
|
}
|
|
67
78
|
export async function openBrowserWorkspaceTab(request, env = process.env) {
|
|
68
|
-
|
|
79
|
+
const mode = getBrowserWorkspaceMode(env);
|
|
80
|
+
if (mode === "cloud") {
|
|
81
|
+
return createHostedCloudBrowserSession({
|
|
82
|
+
show: request.show,
|
|
83
|
+
title: request.title,
|
|
84
|
+
url: request.url,
|
|
85
|
+
}, env);
|
|
86
|
+
}
|
|
87
|
+
if (mode === "web") {
|
|
69
88
|
return withWebStateLock(() => {
|
|
70
89
|
const now = getBrowserWorkspaceTimestamp();
|
|
71
90
|
const url = assertBrowserWorkspaceUrl(request.url?.trim() || "about:blank");
|
|
@@ -109,7 +128,11 @@ export async function openBrowserWorkspaceTab(request, env = process.env) {
|
|
|
109
128
|
}
|
|
110
129
|
export async function navigateBrowserWorkspaceTab(request, env = process.env) {
|
|
111
130
|
const nextUrl = assertBrowserWorkspaceUrl(request.url);
|
|
112
|
-
|
|
131
|
+
const mode = getBrowserWorkspaceMode(env);
|
|
132
|
+
if (mode === "cloud") {
|
|
133
|
+
return navigateHostedCloudBrowserSession(request.id, nextUrl, env);
|
|
134
|
+
}
|
|
135
|
+
if (mode === "web") {
|
|
113
136
|
return withWebStateLock(() => {
|
|
114
137
|
const index = getWebBrowserWorkspaceTabIndex(request.id);
|
|
115
138
|
if (index < 0) {
|
|
@@ -149,7 +172,11 @@ export async function navigateBrowserWorkspaceTab(request, env = process.env) {
|
|
|
149
172
|
return payload.tab;
|
|
150
173
|
}
|
|
151
174
|
export async function showBrowserWorkspaceTab(id, env = process.env) {
|
|
152
|
-
|
|
175
|
+
const mode = getBrowserWorkspaceMode(env);
|
|
176
|
+
if (mode === "cloud") {
|
|
177
|
+
return getHostedCloudBrowserSession(id, env);
|
|
178
|
+
}
|
|
179
|
+
if (mode === "web") {
|
|
153
180
|
return withWebStateLock(() => {
|
|
154
181
|
getWebBrowserWorkspaceTabState(id);
|
|
155
182
|
const lastFocusedAt = getBrowserWorkspaceTimestamp();
|
|
@@ -166,7 +193,11 @@ export async function showBrowserWorkspaceTab(id, env = process.env) {
|
|
|
166
193
|
return payload.tab;
|
|
167
194
|
}
|
|
168
195
|
export async function hideBrowserWorkspaceTab(id, env = process.env) {
|
|
169
|
-
|
|
196
|
+
const mode = getBrowserWorkspaceMode(env);
|
|
197
|
+
if (mode === "cloud") {
|
|
198
|
+
return getHostedCloudBrowserSession(id, env);
|
|
199
|
+
}
|
|
200
|
+
if (mode === "web") {
|
|
170
201
|
return withWebStateLock(() => {
|
|
171
202
|
const index = getWebBrowserWorkspaceTabIndex(id);
|
|
172
203
|
if (index < 0) {
|
|
@@ -190,7 +221,11 @@ export async function hideBrowserWorkspaceTab(id, env = process.env) {
|
|
|
190
221
|
return payload.tab;
|
|
191
222
|
}
|
|
192
223
|
export async function closeBrowserWorkspaceTab(id, env = process.env) {
|
|
193
|
-
|
|
224
|
+
const mode = getBrowserWorkspaceMode(env);
|
|
225
|
+
if (mode === "cloud") {
|
|
226
|
+
return deleteHostedCloudBrowserSession(id, env);
|
|
227
|
+
}
|
|
228
|
+
if (mode === "web") {
|
|
194
229
|
return withWebStateLock(() => {
|
|
195
230
|
const initialLength = webWorkspaceState.tabs.length;
|
|
196
231
|
clearWebBrowserWorkspaceTabElementRefs(id);
|
|
@@ -203,16 +238,152 @@ export async function closeBrowserWorkspaceTab(id, env = process.env) {
|
|
|
203
238
|
return payload.closed === true;
|
|
204
239
|
}
|
|
205
240
|
export async function evaluateBrowserWorkspaceTab(request, env = process.env) {
|
|
241
|
+
if (getBrowserWorkspaceMode(env) === "cloud") {
|
|
242
|
+
const result = await executeHostedCloudBrowserCommand(request.id, {
|
|
243
|
+
id: request.id,
|
|
244
|
+
script: request.script,
|
|
245
|
+
subaction: "eval",
|
|
246
|
+
}, env);
|
|
247
|
+
return result.output;
|
|
248
|
+
}
|
|
206
249
|
return evaluateBrowserWorkspaceTabDesktop(request, env);
|
|
207
250
|
}
|
|
208
251
|
export async function snapshotBrowserWorkspaceTab(id, env = process.env) {
|
|
252
|
+
if (getBrowserWorkspaceMode(env) === "cloud") {
|
|
253
|
+
return snapshotHostedCloudBrowserSession(id, env);
|
|
254
|
+
}
|
|
209
255
|
return snapshotBrowserWorkspaceTabDesktop(id, env);
|
|
210
256
|
}
|
|
257
|
+
async function resolveHostedCloudBrowserTargetTabId(command, env) {
|
|
258
|
+
const explicitId = command.id?.trim();
|
|
259
|
+
if (explicitId) {
|
|
260
|
+
return explicitId;
|
|
261
|
+
}
|
|
262
|
+
const tabs = await listHostedCloudBrowserSessions(env);
|
|
263
|
+
const fallbackId = tabs.find((tab) => tab.visible)?.id ?? tabs[0]?.id;
|
|
264
|
+
if (!fallbackId) {
|
|
265
|
+
throw new Error("Eliza browser workspace command requires an active cloud browser session.");
|
|
266
|
+
}
|
|
267
|
+
return fallbackId;
|
|
268
|
+
}
|
|
269
|
+
async function executeHostedCloudBrowserWorkspaceCommand(command, env) {
|
|
270
|
+
if (command.subaction === "list") {
|
|
271
|
+
return {
|
|
272
|
+
mode: "cloud",
|
|
273
|
+
subaction: command.subaction,
|
|
274
|
+
tabs: await listHostedCloudBrowserSessions(env),
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
if (command.subaction === "open" || command.subaction === "window") {
|
|
278
|
+
return {
|
|
279
|
+
mode: "cloud",
|
|
280
|
+
subaction: command.subaction,
|
|
281
|
+
tab: await createHostedCloudBrowserSession({
|
|
282
|
+
show: command.show ?? true,
|
|
283
|
+
title: command.title,
|
|
284
|
+
url: command.url,
|
|
285
|
+
}, env),
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
if (command.subaction === "tab") {
|
|
289
|
+
const action = command.tabAction ?? "list";
|
|
290
|
+
if (action === "list") {
|
|
291
|
+
return {
|
|
292
|
+
mode: "cloud",
|
|
293
|
+
subaction: command.subaction,
|
|
294
|
+
tabs: await listHostedCloudBrowserSessions(env),
|
|
295
|
+
};
|
|
296
|
+
}
|
|
297
|
+
if (action === "new") {
|
|
298
|
+
return {
|
|
299
|
+
mode: "cloud",
|
|
300
|
+
subaction: command.subaction,
|
|
301
|
+
tab: await createHostedCloudBrowserSession({
|
|
302
|
+
show: command.show ?? true,
|
|
303
|
+
title: command.title,
|
|
304
|
+
url: command.url,
|
|
305
|
+
}, env),
|
|
306
|
+
};
|
|
307
|
+
}
|
|
308
|
+
if (action === "switch") {
|
|
309
|
+
const targetId = await resolveHostedCloudBrowserTargetTabId(command, env);
|
|
310
|
+
return {
|
|
311
|
+
mode: "cloud",
|
|
312
|
+
subaction: command.subaction,
|
|
313
|
+
tab: await getHostedCloudBrowserSession(targetId, env),
|
|
314
|
+
};
|
|
315
|
+
}
|
|
316
|
+
const targetId = await resolveHostedCloudBrowserTargetTabId(command, env);
|
|
317
|
+
return {
|
|
318
|
+
mode: "cloud",
|
|
319
|
+
subaction: command.subaction,
|
|
320
|
+
closed: await deleteHostedCloudBrowserSession(targetId, env),
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
if (command.subaction === "show" || command.subaction === "hide") {
|
|
324
|
+
const targetId = await resolveHostedCloudBrowserTargetTabId(command, env);
|
|
325
|
+
return {
|
|
326
|
+
mode: "cloud",
|
|
327
|
+
subaction: command.subaction,
|
|
328
|
+
tab: await getHostedCloudBrowserSession(targetId, env),
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
if (command.subaction === "close") {
|
|
332
|
+
const targetId = await resolveHostedCloudBrowserTargetTabId(command, env);
|
|
333
|
+
return {
|
|
334
|
+
mode: "cloud",
|
|
335
|
+
subaction: command.subaction,
|
|
336
|
+
closed: await deleteHostedCloudBrowserSession(targetId, env),
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
if (command.subaction === "navigate" && !command.id?.trim()) {
|
|
340
|
+
return {
|
|
341
|
+
mode: "cloud",
|
|
342
|
+
subaction: command.subaction,
|
|
343
|
+
tab: await createHostedCloudBrowserSession({
|
|
344
|
+
show: command.show ?? true,
|
|
345
|
+
title: command.title,
|
|
346
|
+
url: command.url,
|
|
347
|
+
}, env),
|
|
348
|
+
};
|
|
349
|
+
}
|
|
350
|
+
const targetId = await resolveHostedCloudBrowserTargetTabId(command, env);
|
|
351
|
+
if (command.subaction === "navigate") {
|
|
352
|
+
return {
|
|
353
|
+
mode: "cloud",
|
|
354
|
+
subaction: command.subaction,
|
|
355
|
+
tab: await navigateHostedCloudBrowserSession(targetId, command.url ?? "", env),
|
|
356
|
+
};
|
|
357
|
+
}
|
|
358
|
+
if (command.subaction === "screenshot" || command.subaction === "snapshot") {
|
|
359
|
+
return {
|
|
360
|
+
mode: "cloud",
|
|
361
|
+
subaction: command.subaction,
|
|
362
|
+
snapshot: await snapshotHostedCloudBrowserSession(targetId, env),
|
|
363
|
+
tab: await getHostedCloudBrowserSession(targetId, env),
|
|
364
|
+
};
|
|
365
|
+
}
|
|
366
|
+
const result = await executeHostedCloudBrowserCommand(targetId, {
|
|
367
|
+
...command,
|
|
368
|
+
id: targetId,
|
|
369
|
+
}, env);
|
|
370
|
+
return {
|
|
371
|
+
mode: "cloud",
|
|
372
|
+
subaction: command.subaction,
|
|
373
|
+
snapshot: result.snapshot,
|
|
374
|
+
tab: result.session,
|
|
375
|
+
value: result.output,
|
|
376
|
+
};
|
|
377
|
+
}
|
|
211
378
|
// ────────────────────────────────────────────────────────────────────
|
|
212
379
|
// Main command router
|
|
213
380
|
// ────────────────────────────────────────────────────────────────────
|
|
214
381
|
export async function executeBrowserWorkspaceCommand(command, env = process.env) {
|
|
215
382
|
command = normalizeBrowserWorkspaceCommand(command);
|
|
383
|
+
if (getBrowserWorkspaceMode(env) === "cloud" &&
|
|
384
|
+
command.subaction !== "batch") {
|
|
385
|
+
return executeHostedCloudBrowserWorkspaceCommand(command, env);
|
|
386
|
+
}
|
|
216
387
|
switch (command.subaction) {
|
|
217
388
|
case "batch": {
|
|
218
389
|
const steps = Array.isArray(command.steps) ? command.steps : [];
|
|
@@ -28,19 +28,8 @@ export declare class EscalationService {
|
|
|
28
28
|
static resolveEscalation(escalationId: string, runtime?: IAgentRuntime): Promise<void>;
|
|
29
29
|
static getActiveEscalationSync(): EscalationState | null;
|
|
30
30
|
static getActiveEscalation(runtime: IAgentRuntime): Promise<EscalationState | null>;
|
|
31
|
-
/**
|
|
32
|
-
* Rehydrate unresolved escalations from DB into the in-memory cache.
|
|
33
|
-
*
|
|
34
|
-
* Call during agent startup so that escalations created before a restart
|
|
35
|
-
* are visible to `getActiveEscalationSync()` and can be detected by
|
|
36
|
-
* the next `processReminders` cycle.
|
|
37
|
-
*
|
|
38
|
-
* Timers are intentionally NOT recreated -- the periodic reminder loop
|
|
39
|
-
* will pick up stale unresolved escalations and advance them.
|
|
40
|
-
*/
|
|
41
31
|
static rehydrateFromDb(runtime: IAgentRuntime): Promise<void>;
|
|
42
32
|
static _reset(): void;
|
|
43
|
-
/** Clear DB state for a given agent. Use in tests alongside `_reset()`. */
|
|
44
33
|
static _resetDb(runtime: IAgentRuntime): Promise<void>;
|
|
45
34
|
}
|
|
46
35
|
//# sourceMappingURL=escalation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/services/escalation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"escalation.d.ts","sourceRoot":"","sources":["../../../../../../agent/src/services/escalation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAQ,MAAM,eAAe,CAAC;AAoBzD,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA8DD;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAsDtE;AAyLD,qBAAa,iBAAiB;WACf,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,eAAe,CAAC;WAoEd,eAAe,CAC1B,OAAO,EAAE,aAAa,EACtB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC;WAgEH,iBAAiB,CAC5B,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,IAAI,CAAC;IAoBhB,MAAM,CAAC,uBAAuB,IAAI,eAAe,GAAG,IAAI;WAO3C,mBAAmB,CAC9B,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;WAYrB,eAAe,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,MAAM,CAAC,MAAM,IAAI,IAAI;WAOR,QAAQ,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAO7D"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { LifeOpsRepository, } from "@elizaos/app-lifeops/lifeops/repository";
|
|
2
1
|
import { logger } from "@elizaos/core";
|
|
3
2
|
import { loadElizaConfig, saveElizaConfig } from "../config/config.js";
|
|
4
3
|
import { loadOwnerContactRoutingHints, loadOwnerContactsConfig, resolveOwnerContactWithFallback, } from "../config/owner-contacts.js";
|
|
@@ -7,59 +6,34 @@ import { hasRuntimeSendHandler, logMissingSendHandlerOnce, } from "./send-handle
|
|
|
7
6
|
const DEFAULT_CHANNELS = ["client_chat"];
|
|
8
7
|
const DEFAULT_WAIT_MINUTES = 5;
|
|
9
8
|
const DEFAULT_MAX_RETRIES = 3;
|
|
9
|
+
const ESCALATION_CACHE_KEY_PREFIX = "agent:escalation:active";
|
|
10
10
|
const activeEscalations = new Map();
|
|
11
11
|
const pendingTimers = new Map();
|
|
12
12
|
// ---------------------------------------------------------------------------
|
|
13
|
-
//
|
|
13
|
+
// Persistence helpers -- owned by agent state instead of app-lifeops storage.
|
|
14
14
|
// ---------------------------------------------------------------------------
|
|
15
|
-
function
|
|
16
|
-
return {
|
|
17
|
-
id: state.id,
|
|
18
|
-
agentId,
|
|
19
|
-
reason: state.reason,
|
|
20
|
-
text: state.text,
|
|
21
|
-
currentStep: state.currentStep,
|
|
22
|
-
channelsSent: state.channelsSent,
|
|
23
|
-
startedAt: new Date(state.startedAt).toISOString(),
|
|
24
|
-
lastSentAt: new Date(state.lastSentAt).toISOString(),
|
|
25
|
-
resolved: state.resolved,
|
|
26
|
-
resolvedAt: state.resolvedAt
|
|
27
|
-
? new Date(state.resolvedAt).toISOString()
|
|
28
|
-
: null,
|
|
29
|
-
};
|
|
15
|
+
function escalationCacheKey(runtime) {
|
|
16
|
+
return `${ESCALATION_CACHE_KEY_PREFIX}:${runtime.agentId}`;
|
|
30
17
|
}
|
|
31
|
-
function dbRowToState(row) {
|
|
32
|
-
return {
|
|
33
|
-
id: row.id,
|
|
34
|
-
reason: row.reason,
|
|
35
|
-
text: row.text,
|
|
36
|
-
currentStep: row.currentStep,
|
|
37
|
-
channelsSent: row.channelsSent,
|
|
38
|
-
startedAt: new Date(row.startedAt).getTime(),
|
|
39
|
-
lastSentAt: new Date(row.lastSentAt).getTime(),
|
|
40
|
-
resolved: row.resolved,
|
|
41
|
-
resolvedAt: row.resolvedAt ? new Date(row.resolvedAt).getTime() : undefined,
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
/** Best-effort persist -- never let DB failures break the escalation flow. */
|
|
45
18
|
async function persistState(runtime, state) {
|
|
46
19
|
try {
|
|
47
|
-
|
|
48
|
-
|
|
20
|
+
if (state.resolved) {
|
|
21
|
+
await runtime.deleteCache(escalationCacheKey(runtime));
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await runtime.setCache(escalationCacheKey(runtime), state);
|
|
49
25
|
}
|
|
50
26
|
catch (err) {
|
|
51
|
-
logger.debug("[escalation] Failed to persist escalation state to
|
|
27
|
+
logger.debug("[escalation] Failed to persist escalation state to cache", err instanceof Error ? err.message : String(err));
|
|
52
28
|
}
|
|
53
29
|
}
|
|
54
|
-
|
|
55
|
-
async function loadActiveFromDb(runtime) {
|
|
30
|
+
async function loadActiveFromCache(runtime) {
|
|
56
31
|
try {
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
return row ? dbRowToState(row) : null;
|
|
32
|
+
const state = await runtime.getCache(escalationCacheKey(runtime));
|
|
33
|
+
return state ?? null;
|
|
60
34
|
}
|
|
61
35
|
catch (err) {
|
|
62
|
-
logger.debug("[escalation] Failed to load escalation state from
|
|
36
|
+
logger.debug("[escalation] Failed to load escalation state from cache", err instanceof Error ? err.message : String(err));
|
|
63
37
|
return null;
|
|
64
38
|
}
|
|
65
39
|
}
|
|
@@ -370,29 +344,18 @@ export class EscalationService {
|
|
|
370
344
|
const cached = EscalationService.getActiveEscalationSync();
|
|
371
345
|
if (cached)
|
|
372
346
|
return cached;
|
|
373
|
-
|
|
374
|
-
const persisted = await loadActiveFromDb(runtime);
|
|
347
|
+
const persisted = await loadActiveFromCache(runtime);
|
|
375
348
|
if (persisted) {
|
|
376
349
|
activeEscalations.set(persisted.id, persisted);
|
|
377
350
|
return persisted;
|
|
378
351
|
}
|
|
379
352
|
return null;
|
|
380
353
|
}
|
|
381
|
-
/**
|
|
382
|
-
* Rehydrate unresolved escalations from DB into the in-memory cache.
|
|
383
|
-
*
|
|
384
|
-
* Call during agent startup so that escalations created before a restart
|
|
385
|
-
* are visible to `getActiveEscalationSync()` and can be detected by
|
|
386
|
-
* the next `processReminders` cycle.
|
|
387
|
-
*
|
|
388
|
-
* Timers are intentionally NOT recreated -- the periodic reminder loop
|
|
389
|
-
* will pick up stale unresolved escalations and advance them.
|
|
390
|
-
*/
|
|
391
354
|
static async rehydrateFromDb(runtime) {
|
|
392
|
-
const persisted = await
|
|
355
|
+
const persisted = await loadActiveFromCache(runtime);
|
|
393
356
|
if (persisted && !activeEscalations.has(persisted.id)) {
|
|
394
357
|
activeEscalations.set(persisted.id, persisted);
|
|
395
|
-
logger.info(`[escalation] Rehydrated unresolved escalation ${persisted.id} from
|
|
358
|
+
logger.info(`[escalation] Rehydrated unresolved escalation ${persisted.id} from cache`);
|
|
396
359
|
}
|
|
397
360
|
}
|
|
398
361
|
static _reset() {
|
|
@@ -402,14 +365,12 @@ export class EscalationService {
|
|
|
402
365
|
activeEscalations.clear();
|
|
403
366
|
idCounter = 0;
|
|
404
367
|
}
|
|
405
|
-
/** Clear DB state for a given agent. Use in tests alongside `_reset()`. */
|
|
406
368
|
static async _resetDb(runtime) {
|
|
407
369
|
try {
|
|
408
|
-
|
|
409
|
-
await repo.deleteAllEscalationStates(runtime.agentId);
|
|
370
|
+
await runtime.deleteCache(escalationCacheKey(runtime));
|
|
410
371
|
}
|
|
411
372
|
catch {
|
|
412
|
-
// Best-effort -- test runtimes may not have a real
|
|
373
|
+
// Best-effort -- test runtimes may not have a real cache adapter
|
|
413
374
|
}
|
|
414
375
|
}
|
|
415
376
|
}
|