@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"website-blocker.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/website-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"website-blocker.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/website-blocker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAoOvB,eAAO,MAAM,mBAAmB,EAAE,MAAM,GAAG;IACzC,8BAA8B,CAAC,EAAE,OAAO,CAAC;CAmO1C,CAAC;AAEF,eAAO,MAAM,2BAA2B,EAAE,MAuDzC,CAAC;AAEF,eAAO,MAAM,sCAAsC,EAAE,MA8DpD,CAAC;AAEF,eAAO,MAAM,qBAAqB,EAAE,MA6FnC,CAAC;AAEF,eAAO,MAAM,8BAA8B;qCA7bR,OAAO;CA6buB,CAAC;AAClE,eAAO,MAAM,0BAA0B,QAA8B,CAAC;AACtE,eAAO,MAAM,kCAAkC,QACP,CAAC;AACzC,eAAO,MAAM,gCAAgC,QAAwB,CAAC"}
|
|
@@ -110,14 +110,18 @@ async function resolveWebsiteBlockPlanWithLlm(args) {
|
|
|
110
110
|
"",
|
|
111
111
|
"Rules:",
|
|
112
112
|
"- Only start a block when the user is clearly asking to block websites now.",
|
|
113
|
+
"- Generic focus-block requests like 'turn on a focus block for all social media sites' belong here; do not invent a task gate for them.",
|
|
114
|
+
"- Use BLOCK_WEBSITES for fixed-duration or generic focus blocks. Do not treat them as task-gated blocks unless the user explicitly says until I finish, until I complete, or until I'm done with a task.",
|
|
113
115
|
"- If the user says not yet, later, hold off, wait, or is only discussing candidate sites, set shouldAct=false and explain that you will wait for confirmation.",
|
|
114
116
|
"- If the current request refers to previously mentioned websites, recover them from recent conversation context.",
|
|
115
117
|
"- If the websites are unclear or missing, set shouldAct=false and ask the user to name the public hostnames explicitly.",
|
|
116
118
|
"- Prefer bare public hostnames like x.com in the websites array.",
|
|
117
119
|
"- Use durationMinutes=null only when the user explicitly wants the block to last until manual removal.",
|
|
120
|
+
"- If the user gives an exact timed duration like 45, 90, or 135 minutes, preserve that exact duration instead of falling back to the default 60-minute block.",
|
|
118
121
|
"",
|
|
119
122
|
"Examples:",
|
|
120
123
|
' {"shouldAct":true,"response":null,"websites":["x.com","twitter.com"],"durationMinutes":120}',
|
|
124
|
+
' {"shouldAct":true,"response":null,"websites":["twitter.com"],"durationMinutes":90}',
|
|
121
125
|
' {"shouldAct":false,"response":"I noted those websites and will wait for your confirmation before blocking them.","websites":["x.com","twitter.com"]}',
|
|
122
126
|
' {"shouldAct":false,"response":"Tell me which public website hostnames to block, such as x.com or youtube.com.","websites":[]}',
|
|
123
127
|
"",
|
|
@@ -168,11 +172,17 @@ export const blockWebsitesAction = {
|
|
|
168
172
|
"START_FOCUS_BLOCK",
|
|
169
173
|
"BLOCK_SITE",
|
|
170
174
|
"BLOCK_DISTRACTING_SITES",
|
|
175
|
+
"FOCUS_BLOCK",
|
|
176
|
+
"BLOCK_SOCIAL_MEDIA",
|
|
177
|
+
"SOCIAL_MEDIA_BLOCK",
|
|
171
178
|
],
|
|
172
179
|
description: "Admin-only. Start a local website block by editing the system hosts file. " +
|
|
180
|
+
"Use this for fixed-duration or generic focus blocks like 'block twitter and reddit for the next 2 hours', 'turn on a focus block for all social media sites', or 'block youtube'. " +
|
|
173
181
|
"Use recent conversation context to block public websites like x.com for a fixed duration or until manually unblocked. " +
|
|
182
|
+
"Do not use this when the unblock condition is finishing a task, workout, or todo; that is BLOCK_UNTIL_TASK_COMPLETE. " +
|
|
174
183
|
"If the user confirms a block in a follow-up message without repeating the hostnames, reuse that context through the action planner.",
|
|
175
184
|
descriptionCompressed: "Admin: block websites via hosts file for set duration.",
|
|
185
|
+
suppressPostActionContinuation: true,
|
|
176
186
|
validate: async (runtime, message) => {
|
|
177
187
|
const access = await getSelfControlAccess(runtime, message);
|
|
178
188
|
return access.allowed;
|
|
@@ -304,6 +314,34 @@ export const blockWebsitesAction = {
|
|
|
304
314
|
},
|
|
305
315
|
},
|
|
306
316
|
],
|
|
317
|
+
[
|
|
318
|
+
{
|
|
319
|
+
name: "{{name1}}",
|
|
320
|
+
content: { text: "Block twitter.com for exactly 90 minutes." },
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
name: "{{agentName}}",
|
|
324
|
+
content: {
|
|
325
|
+
text: "Started a website block for twitter.com until 2026-04-04T13:44:54.000Z.",
|
|
326
|
+
action: "BLOCK_WEBSITES",
|
|
327
|
+
},
|
|
328
|
+
},
|
|
329
|
+
],
|
|
330
|
+
[
|
|
331
|
+
{
|
|
332
|
+
name: "{{name1}}",
|
|
333
|
+
content: {
|
|
334
|
+
text: "Turn on a focus block for all social media sites.",
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
name: "{{agentName}}",
|
|
339
|
+
content: {
|
|
340
|
+
text: "Started a website block for facebook.com, instagram.com, reddit.com, tiktok.com, x.com, and youtube.com until you unblock it.",
|
|
341
|
+
action: "BLOCK_WEBSITES",
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
],
|
|
307
345
|
[
|
|
308
346
|
{
|
|
309
347
|
name: "{{name1}}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"x-read.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/x-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAQP,MAAM,eAAe,CAAC;AA6MvB,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"x-read.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/actions/x-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAQP,MAAM,eAAe,CAAC;AA6MvB,eAAO,MAAM,WAAW,EAAE,MA+PzB,CAAC"}
|
|
@@ -159,9 +159,21 @@ function summarizeFeedItems(items, feedType) {
|
|
|
159
159
|
}
|
|
160
160
|
export const xReadAction = {
|
|
161
161
|
name: "X_READ",
|
|
162
|
-
similes: [
|
|
162
|
+
similes: [
|
|
163
|
+
"READ_X",
|
|
164
|
+
"READ_TWITTER",
|
|
165
|
+
"CHECK_TWITTER_DMS",
|
|
166
|
+
"TWITTER_TIMELINE",
|
|
167
|
+
"X_TIMELINE",
|
|
168
|
+
"TWITTER_MENTIONS",
|
|
169
|
+
"SEARCH_TWITTER",
|
|
170
|
+
"X_DMS",
|
|
171
|
+
"X_FEED",
|
|
172
|
+
"X_SEARCH",
|
|
173
|
+
],
|
|
163
174
|
description: "Read X/Twitter DMs, the home timeline or mentions feed, or run a recent search. " +
|
|
164
|
-
"Use this for
|
|
175
|
+
"Use this for requests like 'check my Twitter DMs', 'what's on my X timeline?', 'show me my mentions', or 'search Twitter for posts about elizaOS'. " +
|
|
176
|
+
"Use this for retrieving content from X, not posting. Do not reply that X/Twitter access is unavailable when this action is registered and visible.",
|
|
165
177
|
validate: async (runtime, message) => {
|
|
166
178
|
if (!(await hasLifeOpsAccess(runtime, message)))
|
|
167
179
|
return false;
|
|
@@ -339,6 +351,18 @@ export const xReadAction = {
|
|
|
339
351
|
},
|
|
340
352
|
},
|
|
341
353
|
],
|
|
354
|
+
[
|
|
355
|
+
{
|
|
356
|
+
name: "{{name1}}",
|
|
357
|
+
content: { text: "What's on my X timeline?" },
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
name: "{{agentName}}",
|
|
361
|
+
content: {
|
|
362
|
+
text: "X home_timeline (5):\n- @carol: great post!",
|
|
363
|
+
},
|
|
364
|
+
},
|
|
365
|
+
],
|
|
342
366
|
[
|
|
343
367
|
{
|
|
344
368
|
name: "{{name1}}",
|
|
@@ -354,7 +378,7 @@ export const xReadAction = {
|
|
|
354
378
|
[
|
|
355
379
|
{
|
|
356
380
|
name: "{{name1}}",
|
|
357
|
-
content: { text:
|
|
381
|
+
content: { text: "Search Twitter for posts about elizaOS." },
|
|
358
382
|
},
|
|
359
383
|
{
|
|
360
384
|
name: "{{agentName}}",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/dossier/action.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAgBvB,eAAO,MAAM,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/dossier/action.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,MAAM,EAOP,MAAM,eAAe,CAAC;AAgBvB,eAAO,MAAM,qBAAqB,EAAE,MA4FnC,CAAC"}
|
|
@@ -10,12 +10,13 @@ import { DossierService, getRelationshipsServiceLike, } from "./service.js";
|
|
|
10
10
|
export const generateDossierAction = {
|
|
11
11
|
name: "GENERATE_DOSSIER",
|
|
12
12
|
similes: [
|
|
13
|
-
"
|
|
14
|
-
"
|
|
15
|
-
"
|
|
16
|
-
"PREPARE_FOR_MEETING",
|
|
13
|
+
"MEETING_DOSSIER_BY_EVENT",
|
|
14
|
+
"EVENT_DOSSIER",
|
|
15
|
+
"GENERATE_DOSSIER_FROM_EVENT",
|
|
17
16
|
],
|
|
18
|
-
description: "
|
|
17
|
+
description: "Low-level event-specific dossier generation for an already identified calendar event. " +
|
|
18
|
+
"Use this only when the event id or fuzzy event title is already known from a prior workflow. " +
|
|
19
|
+
"Prefer DOSSIER for generic user requests like 'brief me', 'background on the person I'm meeting', or 'prep me for my next meeting'.",
|
|
19
20
|
validate: async (runtime, message) => hasOwnerAccess(runtime, message),
|
|
20
21
|
handler: async (runtime, _message, _state, options) => {
|
|
21
22
|
const params = (options?.parameters ??
|
|
@@ -73,12 +74,12 @@ export const generateDossierAction = {
|
|
|
73
74
|
[
|
|
74
75
|
{
|
|
75
76
|
name: "{{name1}}",
|
|
76
|
-
content: { text: "
|
|
77
|
+
content: { text: "Generate a dossier for event 'Board sync tomorrow'" },
|
|
77
78
|
},
|
|
78
79
|
{
|
|
79
80
|
name: "{{agentName}}",
|
|
80
81
|
content: {
|
|
81
|
-
text: "# Meeting Dossier —
|
|
82
|
+
text: "# Meeting Dossier — Board sync tomorrow\n...",
|
|
82
83
|
action: "GENERATE_DOSSIER",
|
|
83
84
|
},
|
|
84
85
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"listOverdueFollowups.d.ts","sourceRoot":"","sources":["../../../../../../../../apps/app-lifeops/src/followup/actions/listOverdueFollowups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAGP,MAAM,eAAe,CAAC;AAOvB,eAAO,MAAM,0BAA0B,EAAE,
|
|
1
|
+
{"version":3,"file":"listOverdueFollowups.d.ts","sourceRoot":"","sources":["../../../../../../../../apps/app-lifeops/src/followup/actions/listOverdueFollowups.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAGP,MAAM,eAAe,CAAC;AAOvB,eAAO,MAAM,0BAA0B,EAAE,MAqDxC,CAAC"}
|
|
@@ -10,6 +10,7 @@ export const listOverdueFollowupsAction = {
|
|
|
10
10
|
"FOLLOWUP_LIST",
|
|
11
11
|
],
|
|
12
12
|
description: "List contacts whose last-contacted-at timestamp exceeds their follow-up threshold. " +
|
|
13
|
+
"Use this for overdue or pending follow-up list queries, not for scheduling a new reminder. " +
|
|
13
14
|
"Returns an empty list when the RelationshipsService is not available.",
|
|
14
15
|
validate: async (runtime, message) => hasOwnerAccess(runtime, message),
|
|
15
16
|
handler: async (runtime) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"markFollowupDone.d.ts","sourceRoot":"","sources":["../../../../../../../../apps/app-lifeops/src/followup/actions/markFollowupDone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAkDvB,eAAO,MAAM,sBAAsB,EAAE,
|
|
1
|
+
{"version":3,"file":"markFollowupDone.d.ts","sourceRoot":"","sources":["../../../../../../../../apps/app-lifeops/src/followup/actions/markFollowupDone.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AAkDvB,eAAO,MAAM,sBAAsB,EAAE,MAkKpC,CAAC"}
|
|
@@ -32,7 +32,8 @@ export const markFollowupDoneAction = {
|
|
|
32
32
|
"MARK_CONTACTED",
|
|
33
33
|
"RECORD_INTERACTION",
|
|
34
34
|
],
|
|
35
|
-
description: "Mark a contact as followed-up-with (updates lastContactedAt to now). " +
|
|
35
|
+
description: "Mark a contact as already followed-up-with (updates lastContactedAt to now). " +
|
|
36
|
+
"Use this only when the interaction already happened, not for future reminders. " +
|
|
36
37
|
"Requires either an explicit contactId (UUID) or an unambiguous contactName. " +
|
|
37
38
|
"Ambiguous names return a clarifying response without modifying any contact.",
|
|
38
39
|
validate: async (runtime, message) => hasOwnerAccess(runtime, message),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setFollowupThreshold.d.ts","sourceRoot":"","sources":["../../../../../../../../apps/app-lifeops/src/followup/actions/setFollowupThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AA0BvB,eAAO,MAAM,0BAA0B,EAAE,
|
|
1
|
+
{"version":3,"file":"setFollowupThreshold.d.ts","sourceRoot":"","sources":["../../../../../../../../apps/app-lifeops/src/followup/actions/setFollowupThreshold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,MAAM,EAKP,MAAM,eAAe,CAAC;AA0BvB,eAAO,MAAM,0BAA0B,EAAE,MAiLxC,CAAC"}
|
|
@@ -16,7 +16,8 @@ export const setFollowupThresholdAction = {
|
|
|
16
16
|
"CHANGE_FOLLOWUP_INTERVAL",
|
|
17
17
|
"SET_CONTACT_FREQUENCY_DAYS",
|
|
18
18
|
],
|
|
19
|
-
description: "Set
|
|
19
|
+
description: "Set a recurring follow-up cadence threshold (in days) for a specific contact. " +
|
|
20
|
+
"Use this for durable rules like 'every 14 days', not one-off reminders like 'next week'. " +
|
|
20
21
|
"Requires a positive integer threshold and either contactId or an unambiguous contactName.",
|
|
21
22
|
validate: async (runtime, message) => hasOwnerAccess(runtime, message),
|
|
22
23
|
handler: async (runtime, _message, _state, options) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendly-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/calendly-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,qBAAa,aAAc,SAAQ,KAAK;aAGpB,MAAM,EAAE,MAAM;aACd,IAAI,CAAC,EAAE,OAAO;gBAF9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO;CAKjC;
|
|
1
|
+
{"version":3,"file":"calendly-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/calendly-client.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC9B,QAAQ,EAAE,KAAK,CAAC;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACtD;AAED,qBAAa,aAAc,SAAQ,KAAK;aAGpB,MAAM,EAAE,MAAM;aACd,IAAI,CAAC,EAAE,OAAO;gBAF9B,OAAO,EAAE,MAAM,EACC,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,OAAO;CAKjC;AAQD,wBAAgB,8BAA8B,CAC5C,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,mBAAmB,GAAG,IAAI,CAY5B;AA8HD,wBAAsB,eAAe,CACnC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CAY9E;AAQD,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAY9B;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,mBAAmB,EAC1B,IAAI,GAAE;IACJ,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GACL,OAAO,CAAC,sBAAsB,EAAE,CAAC,CA8BnC;AAeD,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,mBAAmB,EAC1B,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9D,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA0BjC;AAqBD,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,mBAAmB,EAC1B,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBpD"}
|
|
@@ -9,8 +9,10 @@ export class CalendlyError extends Error {
|
|
|
9
9
|
this.name = "CalendlyError";
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
|
-
const CALENDLY_BASE_URL = process.env.MILADY_MOCK_CALENDLY_BASE ?? "https://api.calendly.com";
|
|
13
12
|
const REQUEST_TIMEOUT_MS = 12_000;
|
|
13
|
+
function getCalendlyBaseUrl() {
|
|
14
|
+
return process.env.MILADY_MOCK_CALENDLY_BASE ?? "https://api.calendly.com";
|
|
15
|
+
}
|
|
14
16
|
export function readCalendlyCredentialsFromEnv(env = process.env) {
|
|
15
17
|
const personalAccessToken = env.ELIZA_CALENDLY_TOKEN?.trim();
|
|
16
18
|
if (!personalAccessToken) {
|
|
@@ -25,7 +27,7 @@ export function readCalendlyCredentialsFromEnv(env = process.env) {
|
|
|
25
27
|
};
|
|
26
28
|
}
|
|
27
29
|
async function calendlyRequest(creds, path, init = {}) {
|
|
28
|
-
const url = path.startsWith("http") ? path : `${
|
|
30
|
+
const url = path.startsWith("http") ? path : `${getCalendlyBaseUrl()}${path}`;
|
|
29
31
|
const response = await fetch(url, {
|
|
30
32
|
...init,
|
|
31
33
|
headers: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discord-browser-scraper.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/discord-browser-scraper.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,mCAAmC,CAAC;AAE3C,eAAO,MAAM,eAAe,qCAAqC,CAAC;AAIlE,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,EAAE,uBAAuB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,OAAO,CAAC;IAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,mBAAmB,CAAC;CAC9B;
|
|
1
|
+
{"version":3,"file":"discord-browser-scraper.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/discord-browser-scraper.ts"],"names":[],"mappings":"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"}
|
|
@@ -66,10 +66,10 @@ function discordAnchorTextParts(anchor) {
|
|
|
66
66
|
function discordAnchorLabel(anchor) {
|
|
67
67
|
const ariaLabel = normalizeDiscordText(anchor.getAttribute("aria-label"));
|
|
68
68
|
if (ariaLabel) {
|
|
69
|
-
return ariaLabel
|
|
69
|
+
return (ariaLabel
|
|
70
70
|
.split(",")
|
|
71
71
|
.map((part) => normalizeDiscordText(part))
|
|
72
|
-
.find((part) => part !== null && !/\bunread\b/i.test(part)) ?? ariaLabel;
|
|
72
|
+
.find((part) => part !== null && !/\bunread\b/i.test(part)) ?? ariaLabel);
|
|
73
73
|
}
|
|
74
74
|
const parts = discordAnchorTextParts(anchor);
|
|
75
75
|
return (parts.find((part) => !/\bunread\b/i.test(part) &&
|
|
@@ -159,7 +159,7 @@ export function probeDiscordCapturedPage(page) {
|
|
|
159
159
|
if (!isDiscordUrl(candidate.href))
|
|
160
160
|
continue;
|
|
161
161
|
const href = normalizeDiscordText(candidate.href);
|
|
162
|
-
if (!href
|
|
162
|
+
if (!href?.includes("/channels/@me/"))
|
|
163
163
|
continue;
|
|
164
164
|
const channelId = selectedDiscordDmChannelId(href);
|
|
165
165
|
const dedupeKey = channelId ?? href;
|
|
@@ -220,7 +220,8 @@ export function probeDiscordDocumentState(document, url) {
|
|
|
220
220
|
const tagEl = panel?.querySelector('[class*="nameTag"] [class*="discrim"]') ||
|
|
221
221
|
document.querySelector('[class*="nameTag"] [class*="discrim"]');
|
|
222
222
|
const username = normalizeDiscordText(nameEl?.textContent ?? null);
|
|
223
|
-
const discriminator = normalizeDiscordText(tagEl?.textContent ?? null)?.replace(/^#/, "") ??
|
|
223
|
+
const discriminator = normalizeDiscordText(tagEl?.textContent ?? null)?.replace(/^#/, "") ??
|
|
224
|
+
null;
|
|
224
225
|
const snippet = normalizeDiscordText(panel?.textContent ?? null)?.slice(0, 160) ?? null;
|
|
225
226
|
const selectedChannelId = selectedDiscordDmChannelId(safeUrl ?? null);
|
|
226
227
|
const previews = extractDiscordDmPreviews(document, selectedChannelId);
|
|
@@ -286,7 +287,7 @@ async function findTabByIdOrPartition(tabId, partition, env) {
|
|
|
286
287
|
export async function ensureDiscordTab(args) {
|
|
287
288
|
const env = args.env ?? process.env;
|
|
288
289
|
if (!discordBrowserWorkspaceAvailable(env)) {
|
|
289
|
-
throw new Error("Discord connector requires the Milady
|
|
290
|
+
throw new Error("Discord connector requires the Milady Desktop Browser workspace.");
|
|
290
291
|
}
|
|
291
292
|
const partition = discordPartitionFor(args.agentId, args.side);
|
|
292
293
|
const existing = await findTabByIdOrPartition(args.existingTabId ?? null, partition, env);
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* - Nothing is logged that could contain secret material.
|
|
11
11
|
* - All subprocess invocations use `execFile` with an args array.
|
|
12
12
|
*/
|
|
13
|
-
export type PasswordManagerBackend = "1password" | "protonpass" | "none";
|
|
13
|
+
export type PasswordManagerBackend = "1password" | "protonpass" | "fixture" | "none";
|
|
14
14
|
export interface PasswordManagerItem {
|
|
15
15
|
id: string;
|
|
16
16
|
title: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"password-manager-bridge.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/password-manager-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,MAAM,sBAAsB,
|
|
1
|
+
{"version":3,"file":"password-manager-bridge.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/password-manager-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,MAAM,MAAM,sBAAsB,GAC9B,WAAW,GACX,YAAY,GACZ,SAAS,GACT,MAAM,CAAC;AAEX,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,2BAA2B;IAC1C,gBAAgB,CAAC,EAAE,sBAAsB,CAAC;IAC1C,6EAA6E;IAC7E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,OAAO,EAAE,sBAAsB,CAAC;IACzC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;gBAGvB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,EAC/B,KAAK,CAAC,EAAE,OAAO;CAOlB;AA4HD,wBAAsB,4BAA4B,CAChD,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,sBAAsB,CAAC,CAyCjC;AAED,4DAA4D;AAC5D,wBAAgB,gCAAgC,IAAI,IAAI,CAEvD;AA8SD,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAShC;AAED,wBAAsB,iBAAiB,CACrC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACxB,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAahC;AAED,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,UAAU,GAAG,UAAU,EAC9B,MAAM,CAAC,EAAE,2BAA2B,GACnC,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,CAmDjD"}
|
|
@@ -24,6 +24,69 @@ export class PasswordManagerError extends Error {
|
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
const CLIPBOARD_TTL_SECONDS = 30;
|
|
27
|
+
const PASSWORD_MANAGER_FIXTURE_ITEMS = [
|
|
28
|
+
{
|
|
29
|
+
id: "pm-github",
|
|
30
|
+
title: "GitHub",
|
|
31
|
+
url: "https://github.com/login",
|
|
32
|
+
username: "benchmark-user",
|
|
33
|
+
hasPassword: true,
|
|
34
|
+
tags: ["dev", "github", "code"],
|
|
35
|
+
metadata: { vault: "Mocked Benchmark" },
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
id: "pm-google-workspace",
|
|
39
|
+
title: "Google Workspace",
|
|
40
|
+
url: "https://mail.google.com",
|
|
41
|
+
username: "owner@example.com",
|
|
42
|
+
hasPassword: true,
|
|
43
|
+
tags: ["google", "email"],
|
|
44
|
+
metadata: { vault: "Mocked Benchmark" },
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: "pm-aws-prod",
|
|
48
|
+
title: "AWS Console",
|
|
49
|
+
url: "https://signin.aws.amazon.com",
|
|
50
|
+
username: "infra@example.com",
|
|
51
|
+
hasPassword: true,
|
|
52
|
+
tags: ["aws", "cloud"],
|
|
53
|
+
metadata: { vault: "Mocked Benchmark" },
|
|
54
|
+
},
|
|
55
|
+
];
|
|
56
|
+
function isTruthyEnv(value) {
|
|
57
|
+
if (!value)
|
|
58
|
+
return false;
|
|
59
|
+
const normalized = value.trim().toLowerCase();
|
|
60
|
+
return (normalized === "1" ||
|
|
61
|
+
normalized === "true" ||
|
|
62
|
+
normalized === "yes" ||
|
|
63
|
+
normalized === "on" ||
|
|
64
|
+
normalized === "fixture");
|
|
65
|
+
}
|
|
66
|
+
function isFalsyEnv(value) {
|
|
67
|
+
if (!value)
|
|
68
|
+
return false;
|
|
69
|
+
const normalized = value.trim().toLowerCase();
|
|
70
|
+
return (normalized === "0" ||
|
|
71
|
+
normalized === "false" ||
|
|
72
|
+
normalized === "no" ||
|
|
73
|
+
normalized === "off");
|
|
74
|
+
}
|
|
75
|
+
function isFixturePasswordManagerEnabled() {
|
|
76
|
+
const explicit = process.env.MILADY_TEST_PASSWORD_MANAGER_BACKEND;
|
|
77
|
+
if (isFalsyEnv(explicit))
|
|
78
|
+
return false;
|
|
79
|
+
if (isTruthyEnv(explicit))
|
|
80
|
+
return true;
|
|
81
|
+
return process.env.MILADY_BENCHMARK_USE_MOCKS === "1";
|
|
82
|
+
}
|
|
83
|
+
function listItemsViaFixture() {
|
|
84
|
+
return PASSWORD_MANAGER_FIXTURE_ITEMS.map((item) => ({
|
|
85
|
+
...item,
|
|
86
|
+
tags: item.tags ? [...item.tags] : undefined,
|
|
87
|
+
metadata: item.metadata ? { ...item.metadata } : undefined,
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
27
90
|
// ---------------------------------------------------------------------------
|
|
28
91
|
// Detection
|
|
29
92
|
// ---------------------------------------------------------------------------
|
|
@@ -75,6 +138,14 @@ export async function detectPasswordManagerBackend(config) {
|
|
|
75
138
|
detectionCache.set(key, "none");
|
|
76
139
|
return "none";
|
|
77
140
|
}
|
|
141
|
+
if (preferred === "fixture") {
|
|
142
|
+
detectionCache.set(key, "fixture");
|
|
143
|
+
return "fixture";
|
|
144
|
+
}
|
|
145
|
+
if (isFixturePasswordManagerEnabled()) {
|
|
146
|
+
detectionCache.set(key, "fixture");
|
|
147
|
+
return "fixture";
|
|
148
|
+
}
|
|
78
149
|
if (preferred === "1password") {
|
|
79
150
|
const ok = await probeOp(config);
|
|
80
151
|
const result = ok ? "1password" : "none";
|
|
@@ -318,16 +389,20 @@ async function resolveActiveBackend(config) {
|
|
|
318
389
|
}
|
|
319
390
|
export async function searchPasswordItems(query, config) {
|
|
320
391
|
const backend = await resolveActiveBackend(config);
|
|
321
|
-
const items = backend === "
|
|
322
|
-
?
|
|
323
|
-
:
|
|
392
|
+
const items = backend === "fixture"
|
|
393
|
+
? listItemsViaFixture()
|
|
394
|
+
: backend === "1password"
|
|
395
|
+
? await listItemsVia1Password(config)
|
|
396
|
+
: await listItemsViaProtonPass(config);
|
|
324
397
|
return items.filter((item) => matchesQuery(item, query));
|
|
325
398
|
}
|
|
326
399
|
export async function listPasswordItems(opts, config) {
|
|
327
400
|
const backend = await resolveActiveBackend(config);
|
|
328
|
-
const items = backend === "
|
|
329
|
-
?
|
|
330
|
-
:
|
|
401
|
+
const items = backend === "fixture"
|
|
402
|
+
? listItemsViaFixture()
|
|
403
|
+
: backend === "1password"
|
|
404
|
+
? await listItemsVia1Password(config)
|
|
405
|
+
: await listItemsViaProtonPass(config);
|
|
331
406
|
const limit = opts.limit;
|
|
332
407
|
if (typeof limit === "number" && limit >= 0) {
|
|
333
408
|
return items.slice(0, limit);
|
|
@@ -339,6 +414,9 @@ export async function injectCredentialToClipboard(itemId, field, config) {
|
|
|
339
414
|
throw new PasswordManagerError("itemId is required", config?.preferredBackend ?? "none");
|
|
340
415
|
}
|
|
341
416
|
const backend = await resolveActiveBackend(config);
|
|
417
|
+
if (backend === "fixture") {
|
|
418
|
+
return { ok: true, expiresInSeconds: CLIPBOARD_TTL_SECONDS };
|
|
419
|
+
}
|
|
342
420
|
if (backend === "1password") {
|
|
343
421
|
const binary = resolveOpBinary(config);
|
|
344
422
|
const args = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-desktop.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/remote-desktop.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,MAAM,MAAM,oBAAoB,GAC5B,eAAe,GACf,eAAe,GACf,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;CAK3D;
|
|
1
|
+
{"version":3,"file":"remote-desktop.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/remote-desktop.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,MAAM,MAAM,oBAAoB,GAC5B,eAAe,GACf,eAAe,GACf,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,oBAAoB,CAAC;IAC9B,MAAM,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,CAAC;gBAC3B,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB;CAK3D;AA0HD,wBAAsB,0BAA0B,CAC9C,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CAyB/B;AAwLD,wBAAsB,kBAAkB,CACtC,MAAM,CAAC,EAAE,mBAAmB,GAC3B,OAAO,CAAC,oBAAoB,CAAC,CA2H/B;AAED,wBAAsB,gBAAgB,CACpC,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAGtC;AAED,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BhE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAM1E"}
|
|
@@ -22,6 +22,18 @@ export class RemoteDesktopError extends Error {
|
|
|
22
22
|
const sessions = new Map();
|
|
23
23
|
const DEFAULT_VNC_PORT = 5900;
|
|
24
24
|
const DEFAULT_SESSION_MINUTES = 60;
|
|
25
|
+
function isMockRemoteDesktopEnabled() {
|
|
26
|
+
const explicit = process.env.MILADY_TEST_REMOTE_DESKTOP_BACKEND?.trim();
|
|
27
|
+
if (explicit) {
|
|
28
|
+
const normalized = explicit.toLowerCase();
|
|
29
|
+
return (normalized === "1" ||
|
|
30
|
+
normalized === "true" ||
|
|
31
|
+
normalized === "yes" ||
|
|
32
|
+
normalized === "on" ||
|
|
33
|
+
normalized === "fixture");
|
|
34
|
+
}
|
|
35
|
+
return process.env.MILADY_BENCHMARK_USE_MOCKS === "1";
|
|
36
|
+
}
|
|
25
37
|
// ---------------------------------------------------------------------------
|
|
26
38
|
// Env / config resolution
|
|
27
39
|
// ---------------------------------------------------------------------------
|
|
@@ -80,6 +92,9 @@ async function probeNgrok(token) {
|
|
|
80
92
|
}
|
|
81
93
|
}
|
|
82
94
|
export async function detectRemoteDesktopBackend(config) {
|
|
95
|
+
if (isMockRemoteDesktopEnabled()) {
|
|
96
|
+
return "tailscale-vnc";
|
|
97
|
+
}
|
|
83
98
|
const resolved = resolveConfig(config);
|
|
84
99
|
if (resolved.preferredBackend === "none")
|
|
85
100
|
return "none";
|
|
@@ -218,6 +233,7 @@ async function startNgrokVncSession(args) {
|
|
|
218
233
|
// ---------------------------------------------------------------------------
|
|
219
234
|
export async function startRemoteSession(config) {
|
|
220
235
|
const resolved = resolveConfig(config);
|
|
236
|
+
const mockEnabled = isMockRemoteDesktopEnabled();
|
|
221
237
|
const backend = await detectRemoteDesktopBackend(config);
|
|
222
238
|
const now = new Date();
|
|
223
239
|
const durationMs = resolved.sessionDurationMinutes * 60_000;
|
|
@@ -243,6 +259,20 @@ export async function startRemoteSession(config) {
|
|
|
243
259
|
return failed;
|
|
244
260
|
}
|
|
245
261
|
try {
|
|
262
|
+
if (mockEnabled) {
|
|
263
|
+
const activeSession = {
|
|
264
|
+
...initialSession,
|
|
265
|
+
backend,
|
|
266
|
+
status: "active",
|
|
267
|
+
accessUrl: `vnc://127.0.0.1:${resolved.vncPort}/mock/${id}`,
|
|
268
|
+
};
|
|
269
|
+
const expiryTimer = scheduleExpiry(id, durationMs);
|
|
270
|
+
sessions.set(id, {
|
|
271
|
+
session: activeSession,
|
|
272
|
+
expiryTimer,
|
|
273
|
+
});
|
|
274
|
+
return activeSession;
|
|
275
|
+
}
|
|
246
276
|
let accessUrl;
|
|
247
277
|
let ngrokProcess;
|
|
248
278
|
if (backend === "tailscale-vnc") {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
2
|
import type { LifeOpsActivitySignal, LifeOpsAuditEvent, LifeOpsBrowserCompanionStatus, LifeOpsBrowserPageContext, LifeOpsBrowserSession, LifeOpsBrowserSettings, LifeOpsBrowserTabSummary, LifeOpsCalendarEvent, LifeOpsChannelPolicy, LifeOpsConnectorGrant, LifeOpsConnectorSide, LifeOpsDossier, LifeOpsFollowUp, LifeOpsRelationship, LifeOpsRelationshipInteraction, LifeOpsScreenTimeDaily, LifeOpsScreenTimeSession, LifeOpsGmailMessageSummary, LifeOpsGoalDefinition, LifeOpsGoalLink, LifeOpsOccurrence, LifeOpsOccurrenceView, LifeOpsReminderAttempt, LifeOpsReminderPlan, LifeOpsTaskDefinition, LifeOpsWorkflowDefinition, LifeOpsWorkflowRun, LifeOpsXDm, LifeOpsXFeedItem, LifeOpsXFeedType, LifeOpsXSyncState, LifeOpsSchedulingNegotiation, LifeOpsSchedulingProposal } from "@elizaos/shared/contracts/lifeops";
|
|
3
|
+
import type { LifeOpsSubscriptionAudit, LifeOpsSubscriptionCandidate, LifeOpsSubscriptionCancellation } from "./subscriptions-types.js";
|
|
3
4
|
type BrowserCompanionCredential = {
|
|
4
5
|
companion: LifeOpsBrowserCompanionStatus;
|
|
5
6
|
pairingTokenHash: string | null;
|
|
@@ -95,6 +96,17 @@ export declare class LifeOpsRepository {
|
|
|
95
96
|
listReminderPlansForOwners(agentId: string, ownerType: string, ownerIds: string[]): Promise<LifeOpsReminderPlan[]>;
|
|
96
97
|
createAuditEvent(event: LifeOpsAuditEvent): Promise<void>;
|
|
97
98
|
listAuditEvents(agentId: string, ownerType: string, ownerId: string): Promise<LifeOpsAuditEvent[]>;
|
|
99
|
+
createSubscriptionAudit(audit: LifeOpsSubscriptionAudit): Promise<void>;
|
|
100
|
+
updateSubscriptionAudit(audit: LifeOpsSubscriptionAudit): Promise<void>;
|
|
101
|
+
getSubscriptionAudit(agentId: string, auditId: string): Promise<LifeOpsSubscriptionAudit | null>;
|
|
102
|
+
getLatestSubscriptionAudit(agentId: string): Promise<LifeOpsSubscriptionAudit | null>;
|
|
103
|
+
createSubscriptionCandidate(candidate: LifeOpsSubscriptionCandidate): Promise<void>;
|
|
104
|
+
listSubscriptionCandidatesForAudit(agentId: string, auditId: string): Promise<LifeOpsSubscriptionCandidate[]>;
|
|
105
|
+
getSubscriptionCandidate(agentId: string, candidateId: string): Promise<LifeOpsSubscriptionCandidate | null>;
|
|
106
|
+
createSubscriptionCancellation(cancellation: LifeOpsSubscriptionCancellation): Promise<void>;
|
|
107
|
+
updateSubscriptionCancellation(cancellation: LifeOpsSubscriptionCancellation): Promise<void>;
|
|
108
|
+
getSubscriptionCancellation(agentId: string, cancellationId: string): Promise<LifeOpsSubscriptionCancellation | null>;
|
|
109
|
+
getLatestSubscriptionCancellation(agentId: string, serviceSlug?: string): Promise<LifeOpsSubscriptionCancellation | null>;
|
|
98
110
|
createActivitySignal(signal: LifeOpsActivitySignal): Promise<void>;
|
|
99
111
|
listActivitySignals(agentId: string, args?: {
|
|
100
112
|
sinceAt?: string | null;
|
|
@@ -258,6 +270,9 @@ export declare function createLifeOpsReminderPlan(params: Omit<LifeOpsReminderPl
|
|
|
258
270
|
export declare function createLifeOpsChannelPolicy(params: Omit<LifeOpsChannelPolicy, "id" | "createdAt" | "updatedAt">): LifeOpsChannelPolicy;
|
|
259
271
|
export declare function createLifeOpsWebsiteAccessGrant(params: Omit<LifeOpsWebsiteAccessGrant, "id" | "createdAt" | "updatedAt">): LifeOpsWebsiteAccessGrant;
|
|
260
272
|
export declare function createLifeOpsAuditEvent(params: Omit<LifeOpsAuditEvent, "id" | "createdAt">): LifeOpsAuditEvent;
|
|
273
|
+
export declare function createLifeOpsSubscriptionAudit(params: Omit<LifeOpsSubscriptionAudit, "id" | "createdAt" | "updatedAt">): LifeOpsSubscriptionAudit;
|
|
274
|
+
export declare function createLifeOpsSubscriptionCandidate(params: Omit<LifeOpsSubscriptionCandidate, "id" | "createdAt" | "updatedAt">): LifeOpsSubscriptionCandidate;
|
|
275
|
+
export declare function createLifeOpsSubscriptionCancellation(params: Omit<LifeOpsSubscriptionCancellation, "id" | "createdAt" | "updatedAt">): LifeOpsSubscriptionCancellation;
|
|
261
276
|
export declare function createLifeOpsActivitySignal(params: Omit<LifeOpsActivitySignal, "id" | "createdAt">): LifeOpsActivitySignal;
|
|
262
277
|
export declare function createLifeOpsConnectorGrant(params: Omit<LifeOpsConnectorGrant, "id" | "createdAt" | "updatedAt" | "side" | "executionTarget" | "sourceOfTruth" | "preferredByAgent" | "cloudConnectionId"> & Partial<Pick<LifeOpsConnectorGrant, "side" | "executionTarget" | "sourceOfTruth" | "preferredByAgent" | "cloudConnectionId">>): LifeOpsConnectorGrant;
|
|
263
278
|
export declare function createLifeOpsCalendarSyncState(params: Omit<LifeOpsCalendarSyncState, "id" | "updatedAt">): LifeOpsCalendarSyncState;
|