@elizaos/agent 2.0.0-alpha.192 → 2.0.0-alpha.196
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +63 -0
- 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/apps/app-training/src/core/training-orchestrator.d.ts.map +1 -1
- package/apps/app-training/src/core/training-orchestrator.js +4 -0
- package/apps/app-training/src/services/training-trigger.d.ts +32 -18
- package/apps/app-training/src/services/training-trigger.d.ts.map +1 -1
- package/apps/app-training/src/services/training-trigger.js +10 -1
- package/package.json +4 -4
- 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/lifeops-browser-packaging.d.ts +1 -1
- package/packages/agent/src/api/lifeops-browser-packaging.d.ts.map +1 -1
- package/packages/agent/src/api/lifeops-browser-packaging.js +1 -1
- 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/config/zod-schema.d.ts +2 -2
- package/packages/agent/src/config/zod-schema.providers-core.d.ts +3 -3
- 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/index.d.ts +1 -0
- package/packages/agent/src/providers/index.d.ts.map +1 -1
- package/packages/agent/src/providers/index.js +1 -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/coding-agent-context.d.ts +4 -4
- 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/agent/src/services/stream-manager.d.ts +1 -1
- 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/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/schemas/character.d.ts +3 -3
- 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/apps/app-lifeops/src/{types/app-blocker-settings-card.js → lifeops/subscriptions-types.js} +0 -0
|
@@ -28,6 +28,10 @@ export const dossierAction = {
|
|
|
28
28
|
"MEETING_BRIEFING",
|
|
29
29
|
"PREPARE_FOR_MEETING",
|
|
30
30
|
"BRIEF_ME",
|
|
31
|
+
"BACKGROUND_BRIEF",
|
|
32
|
+
"PERSON_BACKGROUND",
|
|
33
|
+
"NEXT_MEETING_BRIEF",
|
|
34
|
+
"WHO_AM_I_MEETING",
|
|
31
35
|
],
|
|
32
36
|
tags: [
|
|
33
37
|
"always-include",
|
|
@@ -37,7 +41,9 @@ export const dossierAction = {
|
|
|
37
41
|
"next event",
|
|
38
42
|
"meeting prep",
|
|
39
43
|
],
|
|
40
|
-
description: "Generate a pre-meeting briefing dossier with context about attendees, recent interactions, and upcoming event details.
|
|
44
|
+
description: "Generate a pre-meeting or person-background briefing dossier with context about attendees, recent interactions, and upcoming event details. " +
|
|
45
|
+
"Use this for requests like 'pull up a dossier on Satya Nadella', 'give me the background on the person I'm meeting next: Julia Chen', or 'brief me for my next meeting'. " +
|
|
46
|
+
"If the user explicitly wants a brief, backgrounder, prep sheet, or dossier, use this action instead of replying from ENTITIES, FACTS, or memory alone.",
|
|
41
47
|
descriptionCompressed: "Pre-meeting briefing dossier with attendees, recent context, and event details. Admin only.",
|
|
42
48
|
suppressPostActionContinuation: true,
|
|
43
49
|
validate: async (runtime, message) => hasAdminAccess(runtime, message),
|
|
@@ -72,40 +78,25 @@ export const dossierAction = {
|
|
|
72
78
|
data: { actionName: ACTION_NAME },
|
|
73
79
|
};
|
|
74
80
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
81
|
+
const dossier = await service.generateDossier({
|
|
82
|
+
subject,
|
|
83
|
+
calendarEventId: params.calendarEventId ?? null,
|
|
84
|
+
attendeeHandles: coerceHandles(params.attendeeHandles),
|
|
85
|
+
generatedForAt: params.generatedForAt,
|
|
86
|
+
});
|
|
87
|
+
return {
|
|
88
|
+
text: dossier.contentMd || `Dossier generated for "${subject}".`,
|
|
89
|
+
success: true,
|
|
90
|
+
values: {
|
|
84
91
|
success: true,
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
},
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
catch (error) {
|
|
97
|
-
return {
|
|
98
|
-
text: error instanceof Error && /\bno calendar event matched\b/i.test(error.message)
|
|
99
|
-
? "I couldn't resolve which meeting or event you mean from that wording. Ask for your next meeting/event explicitly or name the meeting."
|
|
100
|
-
: "I couldn't generate that dossier right now.",
|
|
101
|
-
success: false,
|
|
102
|
-
values: {
|
|
103
|
-
success: false,
|
|
104
|
-
error: error instanceof Error ? error.message : String(error),
|
|
105
|
-
},
|
|
106
|
-
data: { actionName: ACTION_NAME },
|
|
107
|
-
};
|
|
108
|
-
}
|
|
92
|
+
dossierId: dossier.id,
|
|
93
|
+
subject: dossier.subject,
|
|
94
|
+
},
|
|
95
|
+
data: {
|
|
96
|
+
actionName: ACTION_NAME,
|
|
97
|
+
dossier,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
109
100
|
},
|
|
110
101
|
parameters: [
|
|
111
102
|
{
|
|
@@ -143,6 +134,32 @@ export const dossierAction = {
|
|
|
143
134
|
},
|
|
144
135
|
],
|
|
145
136
|
examples: [
|
|
137
|
+
[
|
|
138
|
+
{
|
|
139
|
+
name: "{{name1}}",
|
|
140
|
+
content: { text: "Pull up a dossier on Satya Nadella" },
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
name: "{{agentName}}",
|
|
144
|
+
content: {
|
|
145
|
+
text: "# Satya Nadella Briefing\n\n## Summary\n...",
|
|
146
|
+
},
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
[
|
|
150
|
+
{
|
|
151
|
+
name: "{{name1}}",
|
|
152
|
+
content: {
|
|
153
|
+
text: "Give me the background on the person I'm meeting next: Julia Chen",
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
{
|
|
157
|
+
name: "{{agentName}}",
|
|
158
|
+
content: {
|
|
159
|
+
text: "# Julia Chen Briefing\n\n## Summary\n...\n## Recent Context\n...",
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
],
|
|
146
163
|
[
|
|
147
164
|
{
|
|
148
165
|
name: "{{name1}}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/gmail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"gmail.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/gmail.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKN,aAAa,EACb,MAAM,EACN,KAAK,EACN,MAAM,eAAe,CAAC;AA8CvB,KAAK,cAAc,GACf,QAAQ,GACR,gBAAgB,GAChB,QAAQ,GACR,MAAM,GACN,aAAa,GACb,qBAAqB,GACrB,YAAY,GACZ,oBAAoB,GACpB,cAAc,CAAC;AAEnB,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,uBAAuB,GAAG,uBAAuB,GAAG,MAAM,CAAC;AAEhE,KAAK,iBAAiB,GAAG;IACvB,SAAS,EAAE,cAAc,CAAC;IAC1B,MAAM,EAAE,uBAAuB,CAAC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AA8qBF,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,KAAK,GAAG,SAAS,EACxB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAC5C,OAAO,CAAC,YAAY,CAAC,CAkMvB;AAqRD,eAAO,MAAM,WAAW,EAAE,MAAM,GAAG;IACjC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAyhC1C,CAAC"}
|
|
@@ -5,6 +5,7 @@ import { hasContextSignalForKey } from "@elizaos/agent/actions/context-signal";
|
|
|
5
5
|
import { extractActionResultsFromState, extractRecentMessageEntriesFromState, extractStateDataRecords, renderGroundedActionReply, summarizeActiveTrajectory, summarizeRecentActionHistory, } from "@elizaos/agent/actions/grounded-action-reply";
|
|
6
6
|
import { recentConversationTexts as collectRecentConversationTexts } from "./life-recent-context.js";
|
|
7
7
|
import { detailArray, detailBoolean, detailNumber, detailString, formatEmailNeedsResponse, formatEmailRead, formatEmailSearch, formatEmailTriage, formatGmailBatchReplyDrafts, formatGmailReplyDraft, getGoogleCapabilityStatus, gmailReadUnavailableMessage, gmailSendUnavailableMessage, hasLifeOpsAccess, INTERNAL_URL, messageText, toActionData, } from "./lifeops-google-helpers.js";
|
|
8
|
+
import { looksLikeEmailVenting } from "./non-actionable-request.js";
|
|
8
9
|
const GMAIL_CONTEXT_WINDOW = 12;
|
|
9
10
|
const GMAIL_DETAIL_ALIASES = {
|
|
10
11
|
forceSync: ["forcesync", "force_sync"],
|
|
@@ -936,12 +937,16 @@ export const gmailAction = {
|
|
|
936
937
|
"drafting reply text for one or more emails; sending confirmed replies; " +
|
|
937
938
|
"requests like 'triage my Gmail inbox', 'summarize my unread emails', 'draft a reply to the latest email from Sarah', or 'send a reply to the last email from finance'. " +
|
|
938
939
|
"If the request explicitly says Gmail, email, unread emails, sender, subject, or reply to a specific email, use GMAIL_ACTION instead of INBOX. " +
|
|
940
|
+
"DO NOT use this action when the user is only venting or making a general observation like 'I hate email' unless they actually ask you to triage, search, read, draft, or send. " +
|
|
939
941
|
"DO NOT use this action for calendar events, meetings, or scheduling — use CALENDAR_ACTION instead. " +
|
|
940
942
|
"DO NOT use this action for personal habits, goals, routines, or reminders — use LIFE instead. " +
|
|
941
943
|
"This action provides the final grounded reply; do not pair it with a speculative REPLY action.",
|
|
942
944
|
descriptionCompressed: "Gmail via LifeOps: inbox triage, search, read, draft/send replies. Not for calendar or habits.",
|
|
943
945
|
suppressPostActionContinuation: true,
|
|
944
946
|
validate: async (runtime, message, state) => {
|
|
947
|
+
if (looksLikeEmailVenting(messageText(message))) {
|
|
948
|
+
return false;
|
|
949
|
+
}
|
|
945
950
|
if (!(await hasLifeOpsAccess(runtime, message)))
|
|
946
951
|
return false;
|
|
947
952
|
return hasContextSignalForKey(runtime, message, state, "gmail", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAQP,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"inbox.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/inbox.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAQP,MAAM,eAAe,CAAC;AAuNvB,eAAO,MAAM,WAAW,EAAE,MAAM,GAAG;IACjC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAuP1C,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { classifyMessages } from "../inbox/triage-classifier.js";
|
|
|
7
7
|
import { hasAdminAccess } from "@elizaos/agent/security/access";
|
|
8
8
|
import { resolveAdminEntityId } from "@elizaos/agent/actions/send-message";
|
|
9
9
|
import { INTERNAL_URL } from "./lifeops-google-helpers.js";
|
|
10
|
+
import { looksLikeEmailVenting } from "./non-actionable-request.js";
|
|
10
11
|
function inboxRecentConversation(state, limit = 10) {
|
|
11
12
|
if (!state || typeof state !== "object") {
|
|
12
13
|
return [];
|
|
@@ -172,11 +173,17 @@ export const inboxAction = {
|
|
|
172
173
|
"priority inbox ranking, unread summaries, drafts awaiting sign-off, " +
|
|
173
174
|
"missed-call repair follow-up, and group-chat handoff coordination. " +
|
|
174
175
|
"Examples: 'triage my inbox', 'give me my inbox digest', or 'respond to the messages that need an answer in my inbox'. " +
|
|
176
|
+
"DO NOT use this action when the user is only complaining about email or messages without asking for triage, a digest, or a reply workflow. " +
|
|
175
177
|
"If the request is explicitly Gmail or email-specific, about unread emails, or about drafting or sending a reply to a specific email, use GMAIL_ACTION instead. " +
|
|
176
178
|
"Subactions: triage, digest, respond. Admin/owner only.",
|
|
177
179
|
descriptionCompressed: "Unified inbox: triage messages, daily digest, draft/send responses. Admin only.",
|
|
178
180
|
suppressPostActionContinuation: true,
|
|
179
|
-
validate: async (runtime, message) =>
|
|
181
|
+
validate: async (runtime, message) => {
|
|
182
|
+
if (looksLikeEmailVenting(extractText(message))) {
|
|
183
|
+
return false;
|
|
184
|
+
}
|
|
185
|
+
return hasAdminAccess(runtime, message);
|
|
186
|
+
},
|
|
180
187
|
handler: async (runtime, message, state, options) => {
|
|
181
188
|
if (!(await hasAdminAccess(runtime, message))) {
|
|
182
189
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"life.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/life.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"life.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/life.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AAm4EvB,eAAO,MAAM,UAAU,EAAE,MAAM,GAAG;IAChC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAisD1C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"life.extractor.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/life.extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQlE,eAAO,MAAM,qBAAqB,yVAkBxB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,yBAAyB,GACjC,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,cAAc,GACd,oBAAoB,GACpB,SAAS,CAAC;AAEd,KAAK,0BAA0B,GAAG;IAChC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;
|
|
1
|
+
{"version":3,"file":"life.extractor.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/life.extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAQlE,eAAO,MAAM,qBAAqB,yVAkBxB,CAAC;AAEX,MAAM,MAAM,sBAAsB,GAAG,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC5E,MAAM,MAAM,yBAAyB,GACjC,OAAO,GACP,UAAU,GACV,QAAQ,GACR,MAAM,GACN,cAAc,GACd,oBAAoB,GACpB,SAAS,CAAC;AAEd,KAAK,0BAA0B,GAAG;IAChC,SAAS,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAyRF,wBAAsB,2BAA2B,CAAC,IAAI,EAAE;IACtD,OAAO,EAAE,aAAa,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,KAAK,GAAG,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAsItC"}
|
|
@@ -131,7 +131,9 @@ const REPLY_ONLY_OPERATION_PLAN = {
|
|
|
131
131
|
};
|
|
132
132
|
function normalizeOperationPlan(parsed) {
|
|
133
133
|
const operation = normalizeOperation(parsed.operation);
|
|
134
|
-
const
|
|
134
|
+
const missing = normalizeMissingFields(parsed.missing);
|
|
135
|
+
const shouldAct = normalizeShouldAct(parsed.shouldAct) ??
|
|
136
|
+
(operation ? missing.length === 0 : null);
|
|
135
137
|
if (shouldAct === null) {
|
|
136
138
|
return null;
|
|
137
139
|
}
|
|
@@ -142,7 +144,7 @@ function normalizeOperationPlan(parsed) {
|
|
|
142
144
|
return {
|
|
143
145
|
operation,
|
|
144
146
|
confidence: normalizeConfidence(parsed.confidence) ?? 0,
|
|
145
|
-
missing
|
|
147
|
+
missing,
|
|
146
148
|
shouldAct,
|
|
147
149
|
};
|
|
148
150
|
}
|
|
@@ -164,6 +166,80 @@ function buildRepairPrompt(args) {
|
|
|
164
166
|
`Previous invalid output: ${JSON.stringify(args.rawResponse)}`,
|
|
165
167
|
].join("\n");
|
|
166
168
|
}
|
|
169
|
+
function normalizeCoreLifeOperation(value) {
|
|
170
|
+
switch (value) {
|
|
171
|
+
case "create_definition":
|
|
172
|
+
case "complete_occurrence":
|
|
173
|
+
case "snooze_occurrence":
|
|
174
|
+
case "query_overview":
|
|
175
|
+
return value;
|
|
176
|
+
default:
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
function normalizeCoreLifeOperationPlan(parsed) {
|
|
181
|
+
const operation = normalizeCoreLifeOperation(parsed.operation);
|
|
182
|
+
const missing = normalizeMissingFields(parsed.missing);
|
|
183
|
+
const shouldAct = normalizeShouldAct(parsed.shouldAct) ??
|
|
184
|
+
(operation ? missing.length === 0 : null);
|
|
185
|
+
if (shouldAct === null) {
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
if (shouldAct && operation === null) {
|
|
189
|
+
return null;
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
operation,
|
|
193
|
+
confidence: normalizeConfidence(parsed.confidence) ?? 0,
|
|
194
|
+
missing,
|
|
195
|
+
shouldAct,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
async function recoverCoreLifeOperationWithLlm(args) {
|
|
199
|
+
const prompt = [
|
|
200
|
+
"Recover the core LifeOps intent for this request.",
|
|
201
|
+
"The user may speak in any language.",
|
|
202
|
+
"Choose the closest operation from: create_definition, complete_occurrence, snooze_occurrence, query_overview, or null.",
|
|
203
|
+
"create_definition is for creating a reminder, alarm, routine, or recurring task.",
|
|
204
|
+
"complete_occurrence is for saying the user already did something.",
|
|
205
|
+
"snooze_occurrence is for deferring or postponing something to later.",
|
|
206
|
+
"query_overview is for asking what is still left, active, or remaining today.",
|
|
207
|
+
"Use null only when the request is casual chat or not a core LifeOps action.",
|
|
208
|
+
"",
|
|
209
|
+
"Return ONLY valid JSON with exactly these fields:",
|
|
210
|
+
" operation: create_definition, complete_occurrence, snooze_occurrence, query_overview, or null",
|
|
211
|
+
" confidence: number from 0 to 1",
|
|
212
|
+
" shouldAct: boolean",
|
|
213
|
+
' missing: array of missing fields from ["title","schedule","target","goal","phone_number","reminder_intensity","details"]',
|
|
214
|
+
"",
|
|
215
|
+
"Examples:",
|
|
216
|
+
' "remind me to brush my teeth every night" -> {"operation":"create_definition","confidence":0.95,"shouldAct":true,"missing":[]}',
|
|
217
|
+
' "Je viens de me brosser les dents" -> {"operation":"complete_occurrence","confidence":0.95,"shouldAct":true,"missing":[]}',
|
|
218
|
+
' "remind me later" -> {"operation":"snooze_occurrence","confidence":0.9,"shouldAct":true,"missing":[]}',
|
|
219
|
+
' "¿Qué me queda por hacer hoy?" -> {"operation":"query_overview","confidence":0.88,"shouldAct":true,"missing":[]}',
|
|
220
|
+
' "yeah lol" -> {"operation":null,"confidence":0.6,"shouldAct":false,"missing":[]}',
|
|
221
|
+
"",
|
|
222
|
+
`Current request: ${JSON.stringify(args.currentMessage)}`,
|
|
223
|
+
`Resolved intent: ${JSON.stringify(args.intent)}`,
|
|
224
|
+
`Recent conversation: ${JSON.stringify(args.recentConversation.join("\\n"))}`,
|
|
225
|
+
].join("\n");
|
|
226
|
+
try {
|
|
227
|
+
const result = await args.runtime.useModel(ModelType.TEXT_LARGE, {
|
|
228
|
+
prompt,
|
|
229
|
+
});
|
|
230
|
+
const rawResponse = typeof result === "string" ? result : "";
|
|
231
|
+
const parsed = parseKeyValueXml(rawResponse) ??
|
|
232
|
+
parseJSONObjectFromText(rawResponse);
|
|
233
|
+
return parsed ? normalizeCoreLifeOperationPlan(parsed) : null;
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
args.runtime.logger?.warn?.({
|
|
237
|
+
src: "action:life",
|
|
238
|
+
error: error instanceof Error ? error.message : String(error),
|
|
239
|
+
}, "Core LifeOps recovery model call failed");
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
167
243
|
export async function extractLifeOperationWithLlm(args) {
|
|
168
244
|
const { runtime, message, state, intent } = args;
|
|
169
245
|
const recentConversation = stateTextCandidates(state).slice(-resolveContextWindow());
|
|
@@ -221,6 +297,7 @@ export async function extractLifeOperationWithLlm(args) {
|
|
|
221
297
|
' "make sure I brush my teeth when I wake up and before bed" -> {"operation":"create_definition","confidence":0.95,"shouldAct":true,"missing":[]}',
|
|
222
298
|
' "how am I doing on my reading goal" -> {"operation":"review_goal","confidence":0.9,"shouldAct":true,"missing":[]}',
|
|
223
299
|
' "what\'s still left for today" -> {"operation":"query_overview","confidence":0.88,"shouldAct":true,"missing":[]}',
|
|
300
|
+
' "¿Qué me queda por hacer hoy?" -> {"operation":"query_overview","confidence":0.88,"shouldAct":true,"missing":[]}',
|
|
224
301
|
' "lol yeah. can you help me add a todo for my life?" -> {"operation":"create_definition","confidence":0.82,"shouldAct":false,"missing":["title","schedule"]}',
|
|
225
302
|
' "yeah lol" -> {"operation":null,"confidence":0.62,"shouldAct":false,"missing":[]}',
|
|
226
303
|
"",
|
|
@@ -241,7 +318,16 @@ export async function extractLifeOperationWithLlm(args) {
|
|
|
241
318
|
const rawResponse = typeof result === "string" ? result : "";
|
|
242
319
|
const parsedPlan = parseResponse(rawResponse);
|
|
243
320
|
if (parsedPlan) {
|
|
244
|
-
|
|
321
|
+
if (parsedPlan.operation !== null) {
|
|
322
|
+
return parsedPlan;
|
|
323
|
+
}
|
|
324
|
+
const recoveredPlan = await recoverCoreLifeOperationWithLlm({
|
|
325
|
+
runtime,
|
|
326
|
+
currentMessage,
|
|
327
|
+
intent,
|
|
328
|
+
recentConversation,
|
|
329
|
+
});
|
|
330
|
+
return recoveredPlan ?? parsedPlan;
|
|
245
331
|
}
|
|
246
332
|
const repairResult = await runtime.useModel(ModelType.TEXT_LARGE, {
|
|
247
333
|
prompt: buildRepairPrompt({
|
|
@@ -252,7 +338,20 @@ export async function extractLifeOperationWithLlm(args) {
|
|
|
252
338
|
}),
|
|
253
339
|
});
|
|
254
340
|
const repairedRawResponse = typeof repairResult === "string" ? repairResult : "";
|
|
255
|
-
|
|
341
|
+
const repairedPlan = parseResponse(repairedRawResponse);
|
|
342
|
+
if (repairedPlan && repairedPlan.operation !== null) {
|
|
343
|
+
return repairedPlan;
|
|
344
|
+
}
|
|
345
|
+
const recoveredPlan = await recoverCoreLifeOperationWithLlm({
|
|
346
|
+
runtime,
|
|
347
|
+
currentMessage,
|
|
348
|
+
intent,
|
|
349
|
+
recentConversation,
|
|
350
|
+
});
|
|
351
|
+
if (recoveredPlan) {
|
|
352
|
+
return recoveredPlan;
|
|
353
|
+
}
|
|
354
|
+
return repairedPlan ?? REPLY_ONLY_OPERATION_PLAN;
|
|
256
355
|
}
|
|
257
356
|
catch (error) {
|
|
258
357
|
runtime.logger?.warn?.({
|
|
@@ -11,6 +11,7 @@ import { extractReminderIntensityWithLlm, extractTaskCreatePlanWithLlm, } from "
|
|
|
11
11
|
import { recentConversationTexts } from "./life-recent-context.js";
|
|
12
12
|
import { extractUpdateFieldsWithLlm } from "./life-update-extractor.js";
|
|
13
13
|
import { calendarReadUnavailableMessage, dayRange, detailArray, detailBoolean, detailNumber, detailObject, detailString, formatCalendarFeed, formatNextEventContext, formatOverviewForQuery, getGoogleCapabilityStatus, hasLifeOpsAccess, INTERNAL_URL, messageText, toActionData, weekRange, } from "./lifeops-google-helpers.js";
|
|
14
|
+
import { looksLikeGoalAdviceOnly, looksLikeRelationshipFollowUpRequest, } from "./non-actionable-request.js";
|
|
14
15
|
import { extractExplicitTimeZoneFromText, normalizeExplicitTimeZoneToken, } from "./timezone-normalization.js";
|
|
15
16
|
const ACTION_TO_OPERATION = {
|
|
16
17
|
create: "create_definition",
|
|
@@ -1785,6 +1786,8 @@ export const lifeAction = {
|
|
|
1785
1786
|
"These are executable LifeOps items, not profile facts or bio updates. " +
|
|
1786
1787
|
"ALWAYS use LIFE for dynamic status questions like 'what's still left for today', 'what do i still need to do today', or 'anything else in my LifeOps list', even when the conversation already mentioned tasks, because their status may have changed after a completion, snooze, or reminder. " +
|
|
1787
1788
|
"Do not fall back to REPLY, UPDATE_ENTITY, or UPDATE_OWNER_PROFILE when the user is asking to create or inspect a todo, habit, goal, reminder, or alarm. " +
|
|
1789
|
+
"DO NOT use this action for generic coaching or advice questions like 'any tips on setting better goals?' unless the user is also asking you to create, update, review, or track a concrete goal, task, reminder, or routine. " +
|
|
1790
|
+
"DO NOT use this action for person-specific follow-ups like 'remind me to follow up with David next week about the project' — use RELATIONSHIP instead. " +
|
|
1788
1791
|
"DO NOT use this action for Gmail inbox triage, email search, drafting or sending emails — use GMAIL_ACTION instead. " +
|
|
1789
1792
|
"DO NOT use this action for daily briefs, unread summaries, drafts awaiting sign-off, or cross-channel inbox review — use INBOX, GMAIL_ACTION, or SEARCH_ACROSS_CHANNELS instead. " +
|
|
1790
1793
|
"DO NOT use this action for calendar lookups, scheduling meetings, searching events, or travel itineraries — use CALENDAR_ACTION instead. " +
|
|
@@ -1795,6 +1798,11 @@ export const lifeAction = {
|
|
|
1795
1798
|
descriptionCompressed: "LifeOps: manage habits, goals, reminders, alarms, escalation. Create/edit/complete/snooze items. Query active status.",
|
|
1796
1799
|
suppressPostActionContinuation: true,
|
|
1797
1800
|
validate: async (runtime, message) => {
|
|
1801
|
+
const text = messageText(message);
|
|
1802
|
+
if (looksLikeGoalAdviceOnly(text) ||
|
|
1803
|
+
looksLikeRelationshipFollowUpRequest(text)) {
|
|
1804
|
+
return false;
|
|
1805
|
+
}
|
|
1798
1806
|
return hasLifeOpsAccess(runtime, message);
|
|
1799
1807
|
},
|
|
1800
1808
|
handler: async (runtime, message, state, options) => {
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function looksLikeEmailVenting(text: string): boolean;
|
|
2
|
+
export declare function looksLikeCalendarObservation(text: string): boolean;
|
|
3
|
+
export declare function looksLikeGoalAdviceOnly(text: string): boolean;
|
|
4
|
+
export declare function looksLikeScreenTimeReflection(text: string): boolean;
|
|
5
|
+
export declare function looksLikeRelationshipFollowUpRequest(text: string): boolean;
|
|
6
|
+
//# sourceMappingURL=non-actionable-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"non-actionable-request.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/non-actionable-request.ts"],"names":[],"mappings":"AAIA,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU3D;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMlE;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAM7D;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAOnE;AAED,wBAAgB,oCAAoC,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAW1E"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
function normalizeRequestText(text) {
|
|
2
|
+
return text.toLowerCase().replace(/\s+/g, " ").trim();
|
|
3
|
+
}
|
|
4
|
+
export function looksLikeEmailVenting(text) {
|
|
5
|
+
const normalized = normalizeRequestText(text);
|
|
6
|
+
if (!/\b(email|gmail|inbox|mailbox|mail)\b/.test(normalized)) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return (/\bi hate\b/.test(normalized) ||
|
|
10
|
+
/\btime sink\b/.test(normalized) ||
|
|
11
|
+
/\boverwhelm(?:ing|ed)\b/.test(normalized));
|
|
12
|
+
}
|
|
13
|
+
export function looksLikeCalendarObservation(text) {
|
|
14
|
+
const normalized = normalizeRequestText(text);
|
|
15
|
+
return (/^my calendar has been\b/.test(normalized) ||
|
|
16
|
+
/\bmy calendar\b.*\b(crazy|chaotic|packed|insane|nuts)\b/.test(normalized));
|
|
17
|
+
}
|
|
18
|
+
export function looksLikeGoalAdviceOnly(text) {
|
|
19
|
+
const normalized = normalizeRequestText(text);
|
|
20
|
+
return (/\bgoal/.test(normalized) &&
|
|
21
|
+
/\b(any )?(tips|advice|suggestions?)\b/.test(normalized));
|
|
22
|
+
}
|
|
23
|
+
export function looksLikeScreenTimeReflection(text) {
|
|
24
|
+
const normalized = normalizeRequestText(text);
|
|
25
|
+
return (/\bi think i spend\b.*\btoo much time\b.*\b(phone|screen)\b/.test(normalized) || /\bi spend\b.*\btoo much time\b.*\bon my phone\b/.test(normalized));
|
|
26
|
+
}
|
|
27
|
+
export function looksLikeRelationshipFollowUpRequest(text) {
|
|
28
|
+
const normalized = normalizeRequestText(text);
|
|
29
|
+
if (!/\bfollow up with\b/.test(normalized)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
return (/\b(next\s+(week|month)|tomorrow|today|tonight|this\s+week|on\s+(monday|tuesday|wednesday|thursday|friday|saturday|sunday)|at\s+\d)\b/.test(normalized) && !/\bevery\b/.test(normalized));
|
|
33
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-manager.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/password-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AAyGvB,eAAO,MAAM,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"password-manager.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/password-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EAMZ,MAAM,eAAe,CAAC;AAyGvB,eAAO,MAAM,qBAAqB,EAAE,MAgJnC,CAAC"}
|
|
@@ -68,8 +68,17 @@ const examples = [
|
|
|
68
68
|
];
|
|
69
69
|
export const passwordManagerAction = {
|
|
70
70
|
name: "PASSWORD_MANAGER",
|
|
71
|
-
similes: [
|
|
72
|
-
|
|
71
|
+
similes: [
|
|
72
|
+
"ONEPASSWORD",
|
|
73
|
+
"CREDENTIAL_LOOKUP",
|
|
74
|
+
"COPY_CREDENTIAL",
|
|
75
|
+
"LOOK_UP_PASSWORD",
|
|
76
|
+
"SHOW_SAVED_LOGINS",
|
|
77
|
+
"LIST_LOGINS",
|
|
78
|
+
],
|
|
79
|
+
description: "Look up or copy credentials from your password manager (1Password CLI or ProtonPass). " +
|
|
80
|
+
"Use this for requests like 'look up my GitHub password' or 'show me my saved logins for github.com'. " +
|
|
81
|
+
"Subactions: search, list, inject_username, inject_password. Credentials are NEVER displayed in chat — injection only copies to the OS clipboard briefly.",
|
|
73
82
|
validate: async (runtime, message) => hasOwnerAccess(runtime, message),
|
|
74
83
|
handler: async (runtime, message, _state, options) => {
|
|
75
84
|
if (!(await hasOwnerAccess(runtime, message))) {
|
|
@@ -5,5 +5,7 @@
|
|
|
5
5
|
* complete_follow_up, follow_up_list, days_since.
|
|
6
6
|
*/
|
|
7
7
|
import type { Action } from "@elizaos/core";
|
|
8
|
-
export declare const relationshipAction: Action
|
|
8
|
+
export declare const relationshipAction: Action & {
|
|
9
|
+
suppressPostActionContinuation?: boolean;
|
|
10
|
+
};
|
|
9
11
|
//# sourceMappingURL=relationships.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/relationships.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"relationships.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/relationships.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,MAAM,EAMP,MAAM,eAAe,CAAC;AA+XvB,eAAO,MAAM,kBAAkB,EAAE,MAAM,GAAG;IACxC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAia1C,CAAC"}
|