@elizaos/plugin-personal-assistant 2.0.3-beta.6 → 2.0.3-beta.7
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/dist/actions/app-block.d.ts +15 -0
- package/dist/actions/app-block.d.ts.map +1 -0
- package/dist/actions/app-block.js +349 -0
- package/dist/actions/app-block.js.map +1 -0
- package/dist/actions/autofill.d.ts +20 -0
- package/dist/actions/autofill.d.ts.map +1 -0
- package/dist/actions/autofill.js +370 -0
- package/dist/actions/autofill.js.map +1 -0
- package/dist/actions/block.d.ts +30 -0
- package/dist/actions/block.d.ts.map +1 -0
- package/dist/actions/block.js +326 -0
- package/dist/actions/block.js.map +1 -0
- package/dist/actions/book-travel.d.ts +10 -0
- package/dist/actions/book-travel.d.ts.map +1 -0
- package/dist/actions/book-travel.js +467 -0
- package/dist/actions/book-travel.js.map +1 -0
- package/dist/actions/brief.d.ts +60 -0
- package/dist/actions/brief.d.ts.map +1 -0
- package/dist/actions/brief.js +485 -0
- package/dist/actions/brief.js.map +1 -0
- package/dist/actions/calendar.d.ts +22 -0
- package/dist/actions/calendar.d.ts.map +1 -0
- package/dist/actions/calendar.js +832 -0
- package/dist/actions/calendar.js.map +1 -0
- package/dist/actions/conflict-detect.d.ts +67 -0
- package/dist/actions/conflict-detect.d.ts.map +1 -0
- package/dist/actions/conflict-detect.js +310 -0
- package/dist/actions/conflict-detect.js.map +1 -0
- package/dist/actions/connector.d.ts +5 -0
- package/dist/actions/connector.d.ts.map +1 -0
- package/dist/actions/connector.js +1354 -0
- package/dist/actions/connector.js.map +1 -0
- package/dist/actions/credentials.d.ts +14 -0
- package/dist/actions/credentials.d.ts.map +1 -0
- package/dist/actions/credentials.js +191 -0
- package/dist/actions/credentials.js.map +1 -0
- package/dist/actions/document.d.ts +36 -0
- package/dist/actions/document.d.ts.map +1 -0
- package/dist/actions/document.js +613 -0
- package/dist/actions/document.js.map +1 -0
- package/dist/actions/entity.d.ts +20 -0
- package/dist/actions/entity.d.ts.map +1 -0
- package/dist/actions/entity.js +785 -0
- package/dist/actions/entity.js.map +1 -0
- package/dist/actions/health.d.ts +4 -0
- package/dist/actions/health.d.ts.map +1 -0
- package/dist/actions/health.js +37 -0
- package/dist/actions/health.js.map +1 -0
- package/dist/actions/inbox.d.ts +12 -0
- package/dist/actions/inbox.d.ts.map +1 -0
- package/dist/actions/inbox.js +13 -0
- package/dist/actions/inbox.js.map +1 -0
- package/dist/actions/lib/calendly-handler.d.ts +3 -0
- package/dist/actions/lib/calendly-handler.d.ts.map +1 -0
- package/dist/actions/lib/calendly-handler.js +506 -0
- package/dist/actions/lib/calendly-handler.js.map +1 -0
- package/dist/actions/lib/extract-goal-plan.d.ts +69 -0
- package/dist/actions/lib/extract-goal-plan.d.ts.map +1 -0
- package/dist/actions/lib/extract-goal-plan.js +488 -0
- package/dist/actions/lib/extract-goal-plan.js.map +1 -0
- package/dist/actions/lib/extract-life-operation.d.ts +18 -0
- package/dist/actions/lib/extract-life-operation.d.ts.map +1 -0
- package/dist/actions/lib/extract-life-operation.js +318 -0
- package/dist/actions/lib/extract-life-operation.js.map +1 -0
- package/dist/actions/lib/extract-task-plan.d.ts +78 -0
- package/dist/actions/lib/extract-task-plan.d.ts.map +1 -0
- package/dist/actions/lib/extract-task-plan.js +355 -0
- package/dist/actions/lib/extract-task-plan.js.map +1 -0
- package/dist/actions/lib/extract-update-fields.d.ts +27 -0
- package/dist/actions/lib/extract-update-fields.d.ts.map +1 -0
- package/dist/actions/lib/extract-update-fields.js +172 -0
- package/dist/actions/lib/extract-update-fields.js.map +1 -0
- package/dist/actions/lib/lifeops-deferred-draft.d.ts +68 -0
- package/dist/actions/lib/lifeops-deferred-draft.d.ts.map +1 -0
- package/dist/actions/lib/lifeops-deferred-draft.js +315 -0
- package/dist/actions/lib/lifeops-deferred-draft.js.map +1 -0
- package/dist/actions/lib/messaging-helpers.d.ts +20 -0
- package/dist/actions/lib/messaging-helpers.d.ts.map +1 -0
- package/dist/actions/lib/messaging-helpers.js +103 -0
- package/dist/actions/lib/messaging-helpers.js.map +1 -0
- package/dist/actions/lib/owner-policy-writes.d.ts +49 -0
- package/dist/actions/lib/owner-policy-writes.d.ts.map +1 -0
- package/dist/actions/lib/owner-policy-writes.js +157 -0
- package/dist/actions/lib/owner-policy-writes.js.map +1 -0
- package/dist/actions/lib/prompt-format.d.ts +3 -0
- package/dist/actions/lib/prompt-format.d.ts.map +1 -0
- package/dist/actions/lib/prompt-format.js +42 -0
- package/dist/actions/lib/prompt-format.js.map +1 -0
- package/dist/actions/lib/scheduling-handler.d.ts +93 -0
- package/dist/actions/lib/scheduling-handler.d.ts.map +1 -0
- package/dist/actions/lib/scheduling-handler.js +868 -0
- package/dist/actions/lib/scheduling-handler.js.map +1 -0
- package/dist/actions/life.d.ts +13 -0
- package/dist/actions/life.d.ts.map +1 -0
- package/dist/actions/life.js +2524 -0
- package/dist/actions/life.js.map +1 -0
- package/dist/actions/money.d.ts +24 -0
- package/dist/actions/money.d.ts.map +1 -0
- package/dist/actions/money.js +41 -0
- package/dist/actions/money.js.map +1 -0
- package/dist/actions/owner-surfaces.d.ts +11 -0
- package/dist/actions/owner-surfaces.d.ts.map +1 -0
- package/dist/actions/owner-surfaces.js +493 -0
- package/dist/actions/owner-surfaces.js.map +1 -0
- package/dist/actions/password-manager.d.ts +10 -0
- package/dist/actions/password-manager.d.ts.map +1 -0
- package/dist/actions/password-manager.js +195 -0
- package/dist/actions/password-manager.js.map +1 -0
- package/dist/actions/payments.d.ts +10 -0
- package/dist/actions/payments.d.ts.map +1 -0
- package/dist/actions/payments.js +5 -0
- package/dist/actions/payments.js.map +1 -0
- package/dist/actions/prioritize.d.ts +49 -0
- package/dist/actions/prioritize.d.ts.map +1 -0
- package/dist/actions/prioritize.js +313 -0
- package/dist/actions/prioritize.js.map +1 -0
- package/dist/actions/remote-desktop.d.ts +13 -0
- package/dist/actions/remote-desktop.d.ts.map +1 -0
- package/dist/actions/remote-desktop.js +11 -0
- package/dist/actions/remote-desktop.js.map +1 -0
- package/dist/actions/resolve-request.d.ts +12 -0
- package/dist/actions/resolve-request.d.ts.map +1 -0
- package/dist/actions/resolve-request.js +427 -0
- package/dist/actions/resolve-request.js.map +1 -0
- package/dist/actions/schedule.d.ts +10 -0
- package/dist/actions/schedule.d.ts.map +1 -0
- package/dist/actions/schedule.js +113 -0
- package/dist/actions/schedule.js.map +1 -0
- package/dist/actions/scheduled-task.d.ts +32 -0
- package/dist/actions/scheduled-task.d.ts.map +1 -0
- package/dist/actions/scheduled-task.js +661 -0
- package/dist/actions/scheduled-task.js.map +1 -0
- package/dist/actions/screen-time.d.ts +4 -0
- package/dist/actions/screen-time.d.ts.map +1 -0
- package/dist/actions/screen-time.js +47 -0
- package/dist/actions/screen-time.js.map +1 -0
- package/dist/actions/subscriptions.d.ts +8 -0
- package/dist/actions/subscriptions.d.ts.map +1 -0
- package/dist/actions/subscriptions.js +327 -0
- package/dist/actions/subscriptions.js.map +1 -0
- package/dist/actions/voice-call.d.ts +16 -0
- package/dist/actions/voice-call.d.ts.map +1 -0
- package/dist/actions/voice-call.js +756 -0
- package/dist/actions/voice-call.js.map +1 -0
- package/dist/actions/website-block.d.ts +15 -0
- package/dist/actions/website-block.d.ts.map +1 -0
- package/dist/actions/website-block.js +719 -0
- package/dist/actions/website-block.js.map +1 -0
- package/dist/actions/work-thread.d.ts +5 -0
- package/dist/actions/work-thread.d.ts.map +1 -0
- package/dist/actions/work-thread.js +556 -0
- package/dist/actions/work-thread.js.map +1 -0
- package/dist/activity-profile/activity-tracker-repo.d.ts +28 -0
- package/dist/activity-profile/activity-tracker-repo.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-repo.js +61 -0
- package/dist/activity-profile/activity-tracker-repo.js.map +1 -0
- package/dist/activity-profile/activity-tracker-reporting.d.ts +52 -0
- package/dist/activity-profile/activity-tracker-reporting.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-reporting.js +119 -0
- package/dist/activity-profile/activity-tracker-reporting.js.map +1 -0
- package/dist/activity-profile/activity-tracker-service.d.ts +36 -0
- package/dist/activity-profile/activity-tracker-service.d.ts.map +1 -0
- package/dist/activity-profile/activity-tracker-service.js +187 -0
- package/dist/activity-profile/activity-tracker-service.js.map +1 -0
- package/dist/activity-profile/analyzer.d.ts +23 -0
- package/dist/activity-profile/analyzer.d.ts.map +1 -0
- package/dist/activity-profile/analyzer.js +485 -0
- package/dist/activity-profile/analyzer.js.map +1 -0
- package/dist/activity-profile/presence-signal-bridge-service.d.ts +14 -0
- package/dist/activity-profile/presence-signal-bridge-service.d.ts.map +1 -0
- package/dist/activity-profile/presence-signal-bridge-service.js +159 -0
- package/dist/activity-profile/presence-signal-bridge-service.js.map +1 -0
- package/dist/activity-profile/proactive-inbox-digest.d.ts +3 -0
- package/dist/activity-profile/proactive-inbox-digest.d.ts.map +1 -0
- package/dist/activity-profile/proactive-inbox-digest.js +21 -0
- package/dist/activity-profile/proactive-inbox-digest.js.map +1 -0
- package/dist/activity-profile/proactive-planner.d.ts +150 -0
- package/dist/activity-profile/proactive-planner.d.ts.map +1 -0
- package/dist/activity-profile/proactive-planner.js +529 -0
- package/dist/activity-profile/proactive-planner.js.map +1 -0
- package/dist/activity-profile/proactive-worker.d.ts +33 -0
- package/dist/activity-profile/proactive-worker.d.ts.map +1 -0
- package/dist/activity-profile/proactive-worker.js +779 -0
- package/dist/activity-profile/proactive-worker.js.map +1 -0
- package/dist/activity-profile/profile-metadata.d.ts +10 -0
- package/dist/activity-profile/profile-metadata.d.ts.map +1 -0
- package/dist/activity-profile/profile-metadata.js +16 -0
- package/dist/activity-profile/profile-metadata.js.map +1 -0
- package/dist/activity-profile/redactor.d.ts +15 -0
- package/dist/activity-profile/redactor.d.ts.map +1 -0
- package/dist/activity-profile/redactor.js +22 -0
- package/dist/activity-profile/redactor.js.map +1 -0
- package/dist/activity-profile/service.d.ts +11 -0
- package/dist/activity-profile/service.d.ts.map +1 -0
- package/dist/activity-profile/service.js +272 -0
- package/dist/activity-profile/service.js.map +1 -0
- package/dist/activity-profile/types.d.ts +97 -0
- package/dist/activity-profile/types.d.ts.map +1 -0
- package/dist/activity-profile/types.js +36 -0
- package/dist/activity-profile/types.js.map +1 -0
- package/dist/agent-lifeops.d.ts +2 -0
- package/dist/agent-lifeops.d.ts.map +1 -0
- package/dist/agent-lifeops.js +2 -0
- package/dist/agent-lifeops.js.map +1 -0
- package/dist/api/client-lifeops.d.ts +319 -0
- package/dist/api/client-lifeops.d.ts.map +1 -0
- package/dist/api/client-lifeops.js +794 -0
- package/dist/api/client-lifeops.js.map +1 -0
- package/dist/automation-node-contributor.d.ts +2 -0
- package/dist/automation-node-contributor.d.ts.map +1 -0
- package/dist/automation-node-contributor.js +184 -0
- package/dist/automation-node-contributor.js.map +1 -0
- package/dist/client.d.ts +16 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +18 -0
- package/dist/client.js.map +1 -0
- package/dist/components/AppBlockerSettingsCard.d.ts +3 -0
- package/dist/components/AppBlockerSettingsCard.d.ts.map +1 -0
- package/dist/components/AppBlockerSettingsCard.js +538 -0
- package/dist/components/AppBlockerSettingsCard.js.map +1 -0
- package/dist/components/WebsiteBlockerSettingsCard.d.ts +3 -0
- package/dist/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
- package/dist/components/WebsiteBlockerSettingsCard.js +148 -0
- package/dist/components/WebsiteBlockerSettingsCard.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/lifeops.d.ts +2 -0
- package/dist/contracts/lifeops.d.ts.map +1 -0
- package/dist/contracts/lifeops.js +2 -0
- package/dist/contracts/lifeops.js.map +1 -0
- package/dist/default-packs/autofill-whitelist-pack.d.ts +17 -0
- package/dist/default-packs/autofill-whitelist-pack.d.ts.map +1 -0
- package/dist/default-packs/autofill-whitelist-pack.js +56 -0
- package/dist/default-packs/autofill-whitelist-pack.js.map +1 -0
- package/dist/default-packs/consolidation-policies.d.ts +14 -0
- package/dist/default-packs/consolidation-policies.d.ts.map +1 -0
- package/dist/default-packs/consolidation-policies.js +17 -0
- package/dist/default-packs/consolidation-policies.js.map +1 -0
- package/dist/default-packs/contract-types.d.ts +200 -0
- package/dist/default-packs/contract-types.d.ts.map +1 -0
- package/dist/default-packs/contract-types.js +1 -0
- package/dist/default-packs/contract-types.js.map +1 -0
- package/dist/default-packs/daily-rhythm.d.ts +28 -0
- package/dist/default-packs/daily-rhythm.d.ts.map +1 -0
- package/dist/default-packs/daily-rhythm.js +136 -0
- package/dist/default-packs/daily-rhythm.js.map +1 -0
- package/dist/default-packs/escalation-ladders.d.ts +18 -0
- package/dist/default-packs/escalation-ladders.d.ts.map +1 -0
- package/dist/default-packs/escalation-ladders.js +17 -0
- package/dist/default-packs/escalation-ladders.js.map +1 -0
- package/dist/default-packs/executive-assistant.d.ts +50 -0
- package/dist/default-packs/executive-assistant.d.ts.map +1 -0
- package/dist/default-packs/executive-assistant.js +745 -0
- package/dist/default-packs/executive-assistant.js.map +1 -0
- package/dist/default-packs/followup-starter.d.ts +49 -0
- package/dist/default-packs/followup-starter.d.ts.map +1 -0
- package/dist/default-packs/followup-starter.js +104 -0
- package/dist/default-packs/followup-starter.js.map +1 -0
- package/dist/default-packs/habit-starters.d.ts +37 -0
- package/dist/default-packs/habit-starters.d.ts.map +1 -0
- package/dist/default-packs/habit-starters.js +255 -0
- package/dist/default-packs/habit-starters.js.map +1 -0
- package/dist/default-packs/inbox-triage-starter.d.ts +23 -0
- package/dist/default-packs/inbox-triage-starter.d.ts.map +1 -0
- package/dist/default-packs/inbox-triage-starter.js +61 -0
- package/dist/default-packs/inbox-triage-starter.js.map +1 -0
- package/dist/default-packs/index.d.ts +54 -0
- package/dist/default-packs/index.d.ts.map +1 -0
- package/dist/default-packs/index.js +150 -0
- package/dist/default-packs/index.js.map +1 -0
- package/dist/default-packs/lint.d.ts +62 -0
- package/dist/default-packs/lint.d.ts.map +1 -0
- package/dist/default-packs/lint.js +161 -0
- package/dist/default-packs/lint.js.map +1 -0
- package/dist/default-packs/morning-brief.d.ts +44 -0
- package/dist/default-packs/morning-brief.d.ts.map +1 -0
- package/dist/default-packs/morning-brief.js +69 -0
- package/dist/default-packs/morning-brief.js.map +1 -0
- package/dist/default-packs/quiet-user-watcher.d.ts +49 -0
- package/dist/default-packs/quiet-user-watcher.d.ts.map +1 -0
- package/dist/default-packs/quiet-user-watcher.js +92 -0
- package/dist/default-packs/quiet-user-watcher.js.map +1 -0
- package/dist/default-packs/registry-types.d.ts +51 -0
- package/dist/default-packs/registry-types.d.ts.map +1 -0
- package/dist/default-packs/registry-types.js +1 -0
- package/dist/default-packs/registry-types.js.map +1 -0
- package/dist/default-packs/task-definitions.d.ts +88 -0
- package/dist/default-packs/task-definitions.d.ts.map +1 -0
- package/dist/default-packs/task-definitions.js +87 -0
- package/dist/default-packs/task-definitions.js.map +1 -0
- package/dist/events/index.d.ts +34 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +30 -0
- package/dist/events/index.js.map +1 -0
- package/dist/followup/actions/listOverdueFollowups.d.ts +3 -0
- package/dist/followup/actions/listOverdueFollowups.d.ts.map +1 -0
- package/dist/followup/actions/listOverdueFollowups.js +90 -0
- package/dist/followup/actions/listOverdueFollowups.js.map +1 -0
- package/dist/followup/actions/markFollowupDone.d.ts +3 -0
- package/dist/followup/actions/markFollowupDone.d.ts.map +1 -0
- package/dist/followup/actions/markFollowupDone.js +171 -0
- package/dist/followup/actions/markFollowupDone.js.map +1 -0
- package/dist/followup/actions/setFollowupThreshold.d.ts +3 -0
- package/dist/followup/actions/setFollowupThreshold.d.ts.map +1 -0
- package/dist/followup/actions/setFollowupThreshold.js +171 -0
- package/dist/followup/actions/setFollowupThreshold.js.map +1 -0
- package/dist/followup/followup-tracker.d.ts +83 -0
- package/dist/followup/followup-tracker.d.ts.map +1 -0
- package/dist/followup/followup-tracker.js +311 -0
- package/dist/followup/followup-tracker.js.map +1 -0
- package/dist/followup/index.d.ts +5 -0
- package/dist/followup/index.d.ts.map +1 -0
- package/dist/followup/index.js +39 -0
- package/dist/followup/index.js.map +1 -0
- package/dist/hooks/connector-error.d.ts +2 -0
- package/dist/hooks/connector-error.d.ts.map +1 -0
- package/dist/hooks/connector-error.js +13 -0
- package/dist/hooks/connector-error.js.map +1 -0
- package/dist/hooks/useDiscordConnector.d.ts +11 -0
- package/dist/hooks/useDiscordConnector.d.ts.map +1 -0
- package/dist/hooks/useDiscordConnector.js +95 -0
- package/dist/hooks/useDiscordConnector.js.map +1 -0
- package/dist/hooks/useGoogleLifeOpsConnector.d.ts +23 -0
- package/dist/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
- package/dist/hooks/useGoogleLifeOpsConnector.js +630 -0
- package/dist/hooks/useGoogleLifeOpsConnector.js.map +1 -0
- package/dist/hooks/useIMessageConnector.d.ts +10 -0
- package/dist/hooks/useIMessageConnector.d.ts.map +1 -0
- package/dist/hooks/useIMessageConnector.js +57 -0
- package/dist/hooks/useIMessageConnector.js.map +1 -0
- package/dist/hooks/useInbox.d.ts +36 -0
- package/dist/hooks/useInbox.d.ts.map +1 -0
- package/dist/hooks/useInbox.js +96 -0
- package/dist/hooks/useInbox.js.map +1 -0
- package/dist/hooks/useLifeOpsActivitySignals.d.ts +2 -0
- package/dist/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsActivitySignals.js +358 -0
- package/dist/hooks/useLifeOpsActivitySignals.js.map +1 -0
- package/dist/hooks/useLifeOpsAppState.d.ts +9 -0
- package/dist/hooks/useLifeOpsAppState.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsAppState.js +79 -0
- package/dist/hooks/useLifeOpsAppState.js.map +1 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
- package/dist/hooks/useLifeOpsCapabilitiesStatus.js.map +1 -0
- package/dist/hooks/useLifeOpsXConnector.d.ts +11 -0
- package/dist/hooks/useLifeOpsXConnector.d.ts.map +1 -0
- package/dist/hooks/useLifeOpsXConnector.js +92 -0
- package/dist/hooks/useLifeOpsXConnector.js.map +1 -0
- package/dist/hooks/useSignalConnector.d.ts +14 -0
- package/dist/hooks/useSignalConnector.d.ts.map +1 -0
- package/dist/hooks/useSignalConnector.js +89 -0
- package/dist/hooks/useSignalConnector.js.map +1 -0
- package/dist/hooks/useTelegramConnector.d.ts +14 -0
- package/dist/hooks/useTelegramConnector.d.ts.map +1 -0
- package/dist/hooks/useTelegramConnector.js +97 -0
- package/dist/hooks/useTelegramConnector.js.map +1 -0
- package/dist/hooks/useWhatsAppConnector.d.ts +8 -0
- package/dist/hooks/useWhatsAppConnector.d.ts.map +1 -0
- package/dist/hooks/useWhatsAppConnector.js +62 -0
- package/dist/hooks/useWhatsAppConnector.js.map +1 -0
- package/dist/inbox/message-fetcher.d.ts +11 -0
- package/dist/inbox/message-fetcher.d.ts.map +1 -0
- package/dist/inbox/message-fetcher.js +13 -0
- package/dist/inbox/message-fetcher.js.map +1 -0
- package/dist/inbox/repository.d.ts +11 -0
- package/dist/inbox/repository.d.ts.map +1 -0
- package/dist/inbox/repository.js +5 -0
- package/dist/inbox/repository.js.map +1 -0
- package/dist/inbox/types.d.ts +10 -0
- package/dist/inbox/types.d.ts.map +1 -0
- package/dist/inbox/types.js +2 -0
- package/dist/inbox/types.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +188 -0
- package/dist/index.js.map +1 -0
- package/dist/lifeops/access.d.ts +29 -0
- package/dist/lifeops/access.d.ts.map +1 -0
- package/dist/lifeops/access.js +56 -0
- package/dist/lifeops/access.js.map +1 -0
- package/dist/lifeops/app-state.d.ts +22 -0
- package/dist/lifeops/app-state.d.ts.map +1 -0
- package/dist/lifeops/app-state.js +67 -0
- package/dist/lifeops/app-state.js.map +1 -0
- package/dist/lifeops/apple-reminders.d.ts +67 -0
- package/dist/lifeops/apple-reminders.d.ts.map +1 -0
- package/dist/lifeops/apple-reminders.js +396 -0
- package/dist/lifeops/apple-reminders.js.map +1 -0
- package/dist/lifeops/approval-queue.d.ts +38 -0
- package/dist/lifeops/approval-queue.d.ts.map +1 -0
- package/dist/lifeops/approval-queue.js +575 -0
- package/dist/lifeops/approval-queue.js.map +1 -0
- package/dist/lifeops/approval-queue.types.d.ts +172 -0
- package/dist/lifeops/approval-queue.types.d.ts.map +1 -0
- package/dist/lifeops/approval-queue.types.js +27 -0
- package/dist/lifeops/approval-queue.types.js.map +1 -0
- package/dist/lifeops/autofill-whitelist.d.ts +20 -0
- package/dist/lifeops/autofill-whitelist.d.ts.map +1 -0
- package/dist/lifeops/autofill-whitelist.js +59 -0
- package/dist/lifeops/autofill-whitelist.js.map +1 -0
- package/dist/lifeops/background-planner-dispatch.d.ts +60 -0
- package/dist/lifeops/background-planner-dispatch.d.ts.map +1 -0
- package/dist/lifeops/background-planner-dispatch.js +113 -0
- package/dist/lifeops/background-planner-dispatch.js.map +1 -0
- package/dist/lifeops/background-planner.d.ts +140 -0
- package/dist/lifeops/background-planner.d.ts.map +1 -0
- package/dist/lifeops/background-planner.js +359 -0
- package/dist/lifeops/background-planner.js.map +1 -0
- package/dist/lifeops/bill-extraction.d.ts +46 -0
- package/dist/lifeops/bill-extraction.d.ts.map +1 -0
- package/dist/lifeops/bill-extraction.js +325 -0
- package/dist/lifeops/bill-extraction.js.map +1 -0
- package/dist/lifeops/browser-constants.d.ts +4 -0
- package/dist/lifeops/browser-constants.d.ts.map +1 -0
- package/dist/lifeops/browser-constants.js +27 -0
- package/dist/lifeops/browser-constants.js.map +1 -0
- package/dist/lifeops/browser-extension-store.d.ts +61 -0
- package/dist/lifeops/browser-extension-store.d.ts.map +1 -0
- package/dist/lifeops/browser-extension-store.js +176 -0
- package/dist/lifeops/browser-extension-store.js.map +1 -0
- package/dist/lifeops/browser-session-lifecycle.d.ts +57 -0
- package/dist/lifeops/browser-session-lifecycle.d.ts.map +1 -0
- package/dist/lifeops/browser-session-lifecycle.js +308 -0
- package/dist/lifeops/browser-session-lifecycle.js.map +1 -0
- package/dist/lifeops/bulk-review.d.ts +333 -0
- package/dist/lifeops/bulk-review.d.ts.map +1 -0
- package/dist/lifeops/bulk-review.js +1120 -0
- package/dist/lifeops/bulk-review.js.map +1 -0
- package/dist/lifeops/calendar-gate.d.ts +20 -0
- package/dist/lifeops/calendar-gate.d.ts.map +1 -0
- package/dist/lifeops/calendar-gate.js +30 -0
- package/dist/lifeops/calendar-gate.js.map +1 -0
- package/dist/lifeops/channels/contract.d.ts +47 -0
- package/dist/lifeops/channels/contract.d.ts.map +1 -0
- package/dist/lifeops/channels/contract.js +1 -0
- package/dist/lifeops/channels/contract.js.map +1 -0
- package/dist/lifeops/channels/default-pack.d.ts +26 -0
- package/dist/lifeops/channels/default-pack.d.ts.map +1 -0
- package/dist/lifeops/channels/default-pack.js +243 -0
- package/dist/lifeops/channels/default-pack.js.map +1 -0
- package/dist/lifeops/channels/index.d.ts +5 -0
- package/dist/lifeops/channels/index.d.ts.map +1 -0
- package/dist/lifeops/channels/index.js +23 -0
- package/dist/lifeops/channels/index.js.map +1 -0
- package/dist/lifeops/channels/priority-posture.d.ts +36 -0
- package/dist/lifeops/channels/priority-posture.d.ts.map +1 -0
- package/dist/lifeops/channels/priority-posture.js +27 -0
- package/dist/lifeops/channels/priority-posture.js.map +1 -0
- package/dist/lifeops/channels/registry.d.ts +7 -0
- package/dist/lifeops/channels/registry.d.ts.map +1 -0
- package/dist/lifeops/channels/registry.js +49 -0
- package/dist/lifeops/channels/registry.js.map +1 -0
- package/dist/lifeops/checkin/checkin-service.d.ts +66 -0
- package/dist/lifeops/checkin/checkin-service.d.ts.map +1 -0
- package/dist/lifeops/checkin/checkin-service.js +1084 -0
- package/dist/lifeops/checkin/checkin-service.js.map +1 -0
- package/dist/lifeops/checkin/schedule-resolver.d.ts +17 -0
- package/dist/lifeops/checkin/schedule-resolver.d.ts.map +1 -0
- package/dist/lifeops/checkin/schedule-resolver.js +26 -0
- package/dist/lifeops/checkin/schedule-resolver.js.map +1 -0
- package/dist/lifeops/checkin/types.d.ts +106 -0
- package/dist/lifeops/checkin/types.d.ts.map +1 -0
- package/dist/lifeops/checkin/types.js +1 -0
- package/dist/lifeops/checkin/types.js.map +1 -0
- package/dist/lifeops/connectors/_helpers.d.ts +51 -0
- package/dist/lifeops/connectors/_helpers.d.ts.map +1 -0
- package/dist/lifeops/connectors/_helpers.js +104 -0
- package/dist/lifeops/connectors/_helpers.js.map +1 -0
- package/dist/lifeops/connectors/calendly.d.ts +11 -0
- package/dist/lifeops/connectors/calendly.d.ts.map +1 -0
- package/dist/lifeops/connectors/calendly.js +61 -0
- package/dist/lifeops/connectors/calendly.js.map +1 -0
- package/dist/lifeops/connectors/contract.d.ts +88 -0
- package/dist/lifeops/connectors/contract.d.ts.map +1 -0
- package/dist/lifeops/connectors/contract.js +1 -0
- package/dist/lifeops/connectors/contract.js.map +1 -0
- package/dist/lifeops/connectors/default-pack.d.ts +35 -0
- package/dist/lifeops/connectors/default-pack.d.ts.map +1 -0
- package/dist/lifeops/connectors/default-pack.js +37 -0
- package/dist/lifeops/connectors/default-pack.js.map +1 -0
- package/dist/lifeops/connectors/discord.d.ts +8 -0
- package/dist/lifeops/connectors/discord.d.ts.map +1 -0
- package/dist/lifeops/connectors/discord.js +53 -0
- package/dist/lifeops/connectors/discord.js.map +1 -0
- package/dist/lifeops/connectors/dispatch-policy.d.ts +75 -0
- package/dist/lifeops/connectors/dispatch-policy.d.ts.map +1 -0
- package/dist/lifeops/connectors/dispatch-policy.js +35 -0
- package/dist/lifeops/connectors/dispatch-policy.js.map +1 -0
- package/dist/lifeops/connectors/duffel.d.ts +11 -0
- package/dist/lifeops/connectors/duffel.d.ts.map +1 -0
- package/dist/lifeops/connectors/duffel.js +74 -0
- package/dist/lifeops/connectors/duffel.js.map +1 -0
- package/dist/lifeops/connectors/google.d.ts +27 -0
- package/dist/lifeops/connectors/google.d.ts.map +1 -0
- package/dist/lifeops/connectors/google.js +80 -0
- package/dist/lifeops/connectors/google.js.map +1 -0
- package/dist/lifeops/connectors/imessage.d.ts +11 -0
- package/dist/lifeops/connectors/imessage.d.ts.map +1 -0
- package/dist/lifeops/connectors/imessage.js +55 -0
- package/dist/lifeops/connectors/imessage.js.map +1 -0
- package/dist/lifeops/connectors/index.d.ts +5 -0
- package/dist/lifeops/connectors/index.d.ts.map +1 -0
- package/dist/lifeops/connectors/index.js +23 -0
- package/dist/lifeops/connectors/index.js.map +1 -0
- package/dist/lifeops/connectors/mockoon-redirect.d.ts +54 -0
- package/dist/lifeops/connectors/mockoon-redirect.d.ts.map +1 -0
- package/dist/lifeops/connectors/mockoon-redirect.js +71 -0
- package/dist/lifeops/connectors/mockoon-redirect.js.map +1 -0
- package/dist/lifeops/connectors/registry.d.ts +7 -0
- package/dist/lifeops/connectors/registry.d.ts.map +1 -0
- package/dist/lifeops/connectors/registry.js +55 -0
- package/dist/lifeops/connectors/registry.js.map +1 -0
- package/dist/lifeops/connectors/signal.d.ts +8 -0
- package/dist/lifeops/connectors/signal.d.ts.map +1 -0
- package/dist/lifeops/connectors/signal.js +60 -0
- package/dist/lifeops/connectors/signal.js.map +1 -0
- package/dist/lifeops/connectors/telegram.d.ts +12 -0
- package/dist/lifeops/connectors/telegram.d.ts.map +1 -0
- package/dist/lifeops/connectors/telegram.js +65 -0
- package/dist/lifeops/connectors/telegram.js.map +1 -0
- package/dist/lifeops/connectors/twilio.d.ts +15 -0
- package/dist/lifeops/connectors/twilio.d.ts.map +1 -0
- package/dist/lifeops/connectors/twilio.js +126 -0
- package/dist/lifeops/connectors/twilio.js.map +1 -0
- package/dist/lifeops/connectors/whatsapp.d.ts +10 -0
- package/dist/lifeops/connectors/whatsapp.d.ts.map +1 -0
- package/dist/lifeops/connectors/whatsapp.js +56 -0
- package/dist/lifeops/connectors/whatsapp.js.map +1 -0
- package/dist/lifeops/connectors/x.d.ts +8 -0
- package/dist/lifeops/connectors/x.d.ts.map +1 -0
- package/dist/lifeops/connectors/x.js +62 -0
- package/dist/lifeops/connectors/x.js.map +1 -0
- package/dist/lifeops/contact-route-policy.d.ts +27 -0
- package/dist/lifeops/contact-route-policy.d.ts.map +1 -0
- package/dist/lifeops/contact-route-policy.js +153 -0
- package/dist/lifeops/contact-route-policy.js.map +1 -0
- package/dist/lifeops/continuity-probe.d.ts +49 -0
- package/dist/lifeops/continuity-probe.d.ts.map +1 -0
- package/dist/lifeops/continuity-probe.js +161 -0
- package/dist/lifeops/continuity-probe.js.map +1 -0
- package/dist/lifeops/cross-channel-search.d.ts +108 -0
- package/dist/lifeops/cross-channel-search.d.ts.map +1 -0
- package/dist/lifeops/cross-channel-search.js +888 -0
- package/dist/lifeops/cross-channel-search.js.map +1 -0
- package/dist/lifeops/defaults.d.ts +30 -0
- package/dist/lifeops/defaults.d.ts.map +1 -0
- package/dist/lifeops/defaults.js +206 -0
- package/dist/lifeops/defaults.js.map +1 -0
- package/dist/lifeops/device-bus-service.d.ts +16 -0
- package/dist/lifeops/device-bus-service.d.ts.map +1 -0
- package/dist/lifeops/device-bus-service.js +20 -0
- package/dist/lifeops/device-bus-service.js.map +1 -0
- package/dist/lifeops/device-identity.d.ts +31 -0
- package/dist/lifeops/device-identity.d.ts.map +1 -0
- package/dist/lifeops/device-identity.js +94 -0
- package/dist/lifeops/device-identity.js.map +1 -0
- package/dist/lifeops/document-review.d.ts +264 -0
- package/dist/lifeops/document-review.d.ts.map +1 -0
- package/dist/lifeops/document-review.js +925 -0
- package/dist/lifeops/document-review.js.map +1 -0
- package/dist/lifeops/email-classifier.d.ts +9 -0
- package/dist/lifeops/email-classifier.d.ts.map +1 -0
- package/dist/lifeops/email-classifier.js +15 -0
- package/dist/lifeops/email-classifier.js.map +1 -0
- package/dist/lifeops/email-curation.d.ts +13 -0
- package/dist/lifeops/email-curation.d.ts.map +1 -0
- package/dist/lifeops/email-curation.js +2 -0
- package/dist/lifeops/email-curation.js.map +1 -0
- package/dist/lifeops/email-unsubscribe-types.d.ts +7 -0
- package/dist/lifeops/email-unsubscribe-types.d.ts.map +1 -0
- package/dist/lifeops/email-unsubscribe-types.js +1 -0
- package/dist/lifeops/email-unsubscribe-types.js.map +1 -0
- package/dist/lifeops/enforcement-windows.d.ts +34 -0
- package/dist/lifeops/enforcement-windows.d.ts.map +1 -0
- package/dist/lifeops/enforcement-windows.js +80 -0
- package/dist/lifeops/enforcement-windows.js.map +1 -0
- package/dist/lifeops/engine.d.ts +8 -0
- package/dist/lifeops/engine.d.ts.map +1 -0
- package/dist/lifeops/engine.js +540 -0
- package/dist/lifeops/engine.js.map +1 -0
- package/dist/lifeops/entities/index.d.ts +4 -0
- package/dist/lifeops/entities/index.d.ts.map +1 -0
- package/dist/lifeops/entities/index.js +29 -0
- package/dist/lifeops/entities/index.js.map +1 -0
- package/dist/lifeops/entities/merge.d.ts +9 -0
- package/dist/lifeops/entities/merge.d.ts.map +1 -0
- package/dist/lifeops/entities/merge.js +17 -0
- package/dist/lifeops/entities/merge.js.map +1 -0
- package/dist/lifeops/entities/store.d.ts +13 -0
- package/dist/lifeops/entities/store.d.ts.map +1 -0
- package/dist/lifeops/entities/store.js +7 -0
- package/dist/lifeops/entities/store.js.map +1 -0
- package/dist/lifeops/entities/types.d.ts +9 -0
- package/dist/lifeops/entities/types.d.ts.map +1 -0
- package/dist/lifeops/entities/types.js +13 -0
- package/dist/lifeops/entities/types.js.map +1 -0
- package/dist/lifeops/entities/voice-attribution.d.ts +70 -0
- package/dist/lifeops/entities/voice-attribution.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-attribution.js +121 -0
- package/dist/lifeops/entities/voice-attribution.js.map +1 -0
- package/dist/lifeops/entities/voice-observer-bridge.d.ts +32 -0
- package/dist/lifeops/entities/voice-observer-bridge.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-observer-bridge.js +68 -0
- package/dist/lifeops/entities/voice-observer-bridge.js.map +1 -0
- package/dist/lifeops/entities/voice-observer.d.ts +72 -0
- package/dist/lifeops/entities/voice-observer.d.ts.map +1 -0
- package/dist/lifeops/entities/voice-observer.js +97 -0
- package/dist/lifeops/entities/voice-observer.js.map +1 -0
- package/dist/lifeops/escalation-ladders.d.ts +28 -0
- package/dist/lifeops/escalation-ladders.d.ts.map +1 -0
- package/dist/lifeops/escalation-ladders.js +17 -0
- package/dist/lifeops/escalation-ladders.js.map +1 -0
- package/dist/lifeops/fda-probe.d.ts +23 -0
- package/dist/lifeops/fda-probe.d.ts.map +1 -0
- package/dist/lifeops/fda-probe.js +59 -0
- package/dist/lifeops/fda-probe.js.map +1 -0
- package/dist/lifeops/feature-flags.d.ts +24 -0
- package/dist/lifeops/feature-flags.d.ts.map +1 -0
- package/dist/lifeops/feature-flags.js +261 -0
- package/dist/lifeops/feature-flags.js.map +1 -0
- package/dist/lifeops/feature-flags.types.d.ts +156 -0
- package/dist/lifeops/feature-flags.types.d.ts.map +1 -0
- package/dist/lifeops/feature-flags.types.js +129 -0
- package/dist/lifeops/feature-flags.types.js.map +1 -0
- package/dist/lifeops/first-run/defaults.d.ts +57 -0
- package/dist/lifeops/first-run/defaults.d.ts.map +1 -0
- package/dist/lifeops/first-run/defaults.js +159 -0
- package/dist/lifeops/first-run/defaults.js.map +1 -0
- package/dist/lifeops/first-run/questions.d.ts +74 -0
- package/dist/lifeops/first-run/questions.d.ts.map +1 -0
- package/dist/lifeops/first-run/questions.js +184 -0
- package/dist/lifeops/first-run/questions.js.map +1 -0
- package/dist/lifeops/first-run/replay.d.ts +41 -0
- package/dist/lifeops/first-run/replay.d.ts.map +1 -0
- package/dist/lifeops/first-run/replay.js +34 -0
- package/dist/lifeops/first-run/replay.js.map +1 -0
- package/dist/lifeops/first-run/service.d.ts +147 -0
- package/dist/lifeops/first-run/service.d.ts.map +1 -0
- package/dist/lifeops/first-run/service.js +455 -0
- package/dist/lifeops/first-run/service.js.map +1 -0
- package/dist/lifeops/first-run/state.d.ts +36 -0
- package/dist/lifeops/first-run/state.d.ts.map +1 -0
- package/dist/lifeops/first-run/state.js +128 -0
- package/dist/lifeops/first-run/state.js.map +1 -0
- package/dist/lifeops/global-pause/store.d.ts +22 -0
- package/dist/lifeops/global-pause/store.d.ts.map +1 -0
- package/dist/lifeops/global-pause/store.js +18 -0
- package/dist/lifeops/global-pause/store.js.map +1 -0
- package/dist/lifeops/goal-grounding.d.ts +9 -0
- package/dist/lifeops/goal-grounding.d.ts.map +1 -0
- package/dist/lifeops/goal-grounding.js +19 -0
- package/dist/lifeops/goal-grounding.js.map +1 -0
- package/dist/lifeops/goal-semantic-evaluator.d.ts +8 -0
- package/dist/lifeops/goal-semantic-evaluator.d.ts.map +1 -0
- package/dist/lifeops/goal-semantic-evaluator.js +7 -0
- package/dist/lifeops/goal-semantic-evaluator.js.map +1 -0
- package/dist/lifeops/google/format-helpers.d.ts +63 -0
- package/dist/lifeops/google/format-helpers.d.ts.map +1 -0
- package/dist/lifeops/google/format-helpers.js +597 -0
- package/dist/lifeops/google/format-helpers.js.map +1 -0
- package/dist/lifeops/google-plugin-delegates.d.ts +59 -0
- package/dist/lifeops/google-plugin-delegates.d.ts.map +1 -0
- package/dist/lifeops/google-plugin-delegates.js +408 -0
- package/dist/lifeops/google-plugin-delegates.js.map +1 -0
- package/dist/lifeops/google-scopes.d.ts +15 -0
- package/dist/lifeops/google-scopes.d.ts.map +1 -0
- package/dist/lifeops/google-scopes.js +118 -0
- package/dist/lifeops/google-scopes.js.map +1 -0
- package/dist/lifeops/handoff/store.d.ts +23 -0
- package/dist/lifeops/handoff/store.d.ts.map +1 -0
- package/dist/lifeops/handoff/store.js +20 -0
- package/dist/lifeops/handoff/store.js.map +1 -0
- package/dist/lifeops/i18n/localized-examples-provider.d.ts +16 -0
- package/dist/lifeops/i18n/localized-examples-provider.d.ts.map +1 -0
- package/dist/lifeops/i18n/localized-examples-provider.js +33 -0
- package/dist/lifeops/i18n/localized-examples-provider.js.map +1 -0
- package/dist/lifeops/i18n/localized-examples-resolver.d.ts +32 -0
- package/dist/lifeops/i18n/localized-examples-resolver.d.ts.map +1 -0
- package/dist/lifeops/i18n/localized-examples-resolver.js +28 -0
- package/dist/lifeops/i18n/localized-examples-resolver.js.map +1 -0
- package/dist/lifeops/i18n/prompt-registry.d.ts +64 -0
- package/dist/lifeops/i18n/prompt-registry.d.ts.map +1 -0
- package/dist/lifeops/i18n/prompt-registry.js +283 -0
- package/dist/lifeops/i18n/prompt-registry.js.map +1 -0
- package/dist/lifeops/imessage-outbound-probe.d.ts +7 -0
- package/dist/lifeops/imessage-outbound-probe.d.ts.map +1 -0
- package/dist/lifeops/imessage-outbound-probe.js +81 -0
- package/dist/lifeops/imessage-outbound-probe.js.map +1 -0
- package/dist/lifeops/index.d.ts +24 -0
- package/dist/lifeops/index.d.ts.map +1 -0
- package/dist/lifeops/index.js +24 -0
- package/dist/lifeops/index.js.map +1 -0
- package/dist/lifeops/intent-sync.d.ts +64 -0
- package/dist/lifeops/intent-sync.d.ts.map +1 -0
- package/dist/lifeops/intent-sync.js +321 -0
- package/dist/lifeops/intent-sync.js.map +1 -0
- package/dist/lifeops/messaging/index.d.ts +2 -0
- package/dist/lifeops/messaging/index.d.ts.map +1 -0
- package/dist/lifeops/messaging/index.js +5 -0
- package/dist/lifeops/messaging/index.js.map +1 -0
- package/dist/lifeops/messaging/owner-send-policy.d.ts +3 -0
- package/dist/lifeops/messaging/owner-send-policy.d.ts.map +1 -0
- package/dist/lifeops/messaging/owner-send-policy.js +83 -0
- package/dist/lifeops/messaging/owner-send-policy.js.map +1 -0
- package/dist/lifeops/notifications-push.d.ts +37 -0
- package/dist/lifeops/notifications-push.d.ts.map +1 -0
- package/dist/lifeops/notifications-push.js +95 -0
- package/dist/lifeops/notifications-push.js.map +1 -0
- package/dist/lifeops/optimized-prompt-instructions.d.ts +5 -0
- package/dist/lifeops/optimized-prompt-instructions.d.ts.map +1 -0
- package/dist/lifeops/optimized-prompt-instructions.js +48 -0
- package/dist/lifeops/optimized-prompt-instructions.js.map +1 -0
- package/dist/lifeops/owner/fact-store.d.ts +143 -0
- package/dist/lifeops/owner/fact-store.d.ts.map +1 -0
- package/dist/lifeops/owner/fact-store.js +446 -0
- package/dist/lifeops/owner/fact-store.js.map +1 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.d.ts +3 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.d.ts.map +1 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.js +241 -0
- package/dist/lifeops/owner/profile-extraction-evaluator.js.map +1 -0
- package/dist/lifeops/owner-profile.d.ts +61 -0
- package/dist/lifeops/owner-profile.d.ts.map +1 -0
- package/dist/lifeops/owner-profile.js +407 -0
- package/dist/lifeops/owner-profile.js.map +1 -0
- package/dist/lifeops/pending-prompts/store.d.ts +23 -0
- package/dist/lifeops/pending-prompts/store.d.ts.map +1 -0
- package/dist/lifeops/pending-prompts/store.js +16 -0
- package/dist/lifeops/pending-prompts/store.js.map +1 -0
- package/dist/lifeops/policy-memory.d.ts +190 -0
- package/dist/lifeops/policy-memory.d.ts.map +1 -0
- package/dist/lifeops/policy-memory.js +1026 -0
- package/dist/lifeops/policy-memory.js.map +1 -0
- package/dist/lifeops/priority-scoring.d.ts +51 -0
- package/dist/lifeops/priority-scoring.d.ts.map +1 -0
- package/dist/lifeops/priority-scoring.js +305 -0
- package/dist/lifeops/priority-scoring.js.map +1 -0
- package/dist/lifeops/privacy-egress.d.ts +92 -0
- package/dist/lifeops/privacy-egress.d.ts.map +1 -0
- package/dist/lifeops/privacy-egress.js +230 -0
- package/dist/lifeops/privacy-egress.js.map +1 -0
- package/dist/lifeops/privacy.d.ts +49 -0
- package/dist/lifeops/privacy.d.ts.map +1 -0
- package/dist/lifeops/privacy.js +66 -0
- package/dist/lifeops/privacy.js.map +1 -0
- package/dist/lifeops/redact-sensitive-data.d.ts +32 -0
- package/dist/lifeops/redact-sensitive-data.d.ts.map +1 -0
- package/dist/lifeops/redact-sensitive-data.js +98 -0
- package/dist/lifeops/redact-sensitive-data.js.map +1 -0
- package/dist/lifeops/registries/app-blocker-contribution.d.ts +13 -0
- package/dist/lifeops/registries/app-blocker-contribution.d.ts.map +1 -0
- package/dist/lifeops/registries/app-blocker-contribution.js +73 -0
- package/dist/lifeops/registries/app-blocker-contribution.js.map +1 -0
- package/dist/lifeops/registries/blocker-registry.d.ts +76 -0
- package/dist/lifeops/registries/blocker-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/blocker-registry.js +40 -0
- package/dist/lifeops/registries/blocker-registry.js.map +1 -0
- package/dist/lifeops/registries/event-kind-registry.d.ts +57 -0
- package/dist/lifeops/registries/event-kind-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/event-kind-registry.js +82 -0
- package/dist/lifeops/registries/event-kind-registry.js.map +1 -0
- package/dist/lifeops/registries/family-registry.d.ts +72 -0
- package/dist/lifeops/registries/family-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/family-registry.js +98 -0
- package/dist/lifeops/registries/family-registry.js.map +1 -0
- package/dist/lifeops/registries/feature-flag-default-pack.d.ts +32 -0
- package/dist/lifeops/registries/feature-flag-default-pack.d.ts.map +1 -0
- package/dist/lifeops/registries/feature-flag-default-pack.js +36 -0
- package/dist/lifeops/registries/feature-flag-default-pack.js.map +1 -0
- package/dist/lifeops/registries/feature-flag-registry.d.ts +76 -0
- package/dist/lifeops/registries/feature-flag-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/feature-flag-registry.js +68 -0
- package/dist/lifeops/registries/feature-flag-registry.js.map +1 -0
- package/dist/lifeops/registries/index.d.ts +24 -0
- package/dist/lifeops/registries/index.d.ts.map +1 -0
- package/dist/lifeops/registries/index.js +115 -0
- package/dist/lifeops/registries/index.js.map +1 -0
- package/dist/lifeops/registries/website-blocker-contribution.d.ts +21 -0
- package/dist/lifeops/registries/website-blocker-contribution.d.ts.map +1 -0
- package/dist/lifeops/registries/website-blocker-contribution.js +76 -0
- package/dist/lifeops/registries/website-blocker-contribution.js.map +1 -0
- package/dist/lifeops/registries/workflow-step-default-pack.d.ts +30 -0
- package/dist/lifeops/registries/workflow-step-default-pack.d.ts.map +1 -0
- package/dist/lifeops/registries/workflow-step-default-pack.js +315 -0
- package/dist/lifeops/registries/workflow-step-default-pack.js.map +1 -0
- package/dist/lifeops/registries/workflow-step-registry.d.ts +101 -0
- package/dist/lifeops/registries/workflow-step-registry.d.ts.map +1 -0
- package/dist/lifeops/registries/workflow-step-registry.js +56 -0
- package/dist/lifeops/registries/workflow-step-registry.js.map +1 -0
- package/dist/lifeops/relationships/extraction.d.ts +77 -0
- package/dist/lifeops/relationships/extraction.d.ts.map +1 -0
- package/dist/lifeops/relationships/extraction.js +146 -0
- package/dist/lifeops/relationships/extraction.js.map +1 -0
- package/dist/lifeops/relationships/index.d.ts +4 -0
- package/dist/lifeops/relationships/index.d.ts.map +1 -0
- package/dist/lifeops/relationships/index.js +19 -0
- package/dist/lifeops/relationships/index.js.map +1 -0
- package/dist/lifeops/relationships/mapping.d.ts +34 -0
- package/dist/lifeops/relationships/mapping.d.ts.map +1 -0
- package/dist/lifeops/relationships/mapping.js +87 -0
- package/dist/lifeops/relationships/mapping.js.map +1 -0
- package/dist/lifeops/relationships/store.d.ts +12 -0
- package/dist/lifeops/relationships/store.d.ts.map +1 -0
- package/dist/lifeops/relationships/store.js +5 -0
- package/dist/lifeops/relationships/store.js.map +1 -0
- package/dist/lifeops/relationships/types.d.ts +9 -0
- package/dist/lifeops/relationships/types.d.ts.map +1 -0
- package/dist/lifeops/relationships/types.js +11 -0
- package/dist/lifeops/relationships/types.js.map +1 -0
- package/dist/lifeops/relative-schedule-resolver.d.ts +13 -0
- package/dist/lifeops/relative-schedule-resolver.d.ts.map +1 -0
- package/dist/lifeops/relative-schedule-resolver.js +107 -0
- package/dist/lifeops/relative-schedule-resolver.js.map +1 -0
- package/dist/lifeops/relative-time.d.ts +15 -0
- package/dist/lifeops/relative-time.d.ts.map +1 -0
- package/dist/lifeops/relative-time.js +191 -0
- package/dist/lifeops/relative-time.js.map +1 -0
- package/dist/lifeops/repository.d.ts +638 -0
- package/dist/lifeops/repository.d.ts.map +1 -0
- package/dist/lifeops/repository.js +6289 -0
- package/dist/lifeops/repository.js.map +1 -0
- package/dist/lifeops/runtime-cache.d.ts +4 -0
- package/dist/lifeops/runtime-cache.d.ts.map +1 -0
- package/dist/lifeops/runtime-cache.js +7 -0
- package/dist/lifeops/runtime-cache.js.map +1 -0
- package/dist/lifeops/runtime-service-delegates.d.ts +236 -0
- package/dist/lifeops/runtime-service-delegates.d.ts.map +1 -0
- package/dist/lifeops/runtime-service-delegates.js +839 -0
- package/dist/lifeops/runtime-service-delegates.js.map +1 -0
- package/dist/lifeops/runtime.d.ts +13 -0
- package/dist/lifeops/runtime.d.ts.map +1 -0
- package/dist/lifeops/runtime.js +104 -0
- package/dist/lifeops/runtime.js.map +1 -0
- package/dist/lifeops/schedule-insight.d.ts +133 -0
- package/dist/lifeops/schedule-insight.d.ts.map +1 -0
- package/dist/lifeops/schedule-insight.js +726 -0
- package/dist/lifeops/schedule-insight.js.map +1 -0
- package/dist/lifeops/schedule-state.d.ts +39 -0
- package/dist/lifeops/schedule-state.d.ts.map +1 -0
- package/dist/lifeops/schedule-state.js +671 -0
- package/dist/lifeops/schedule-state.js.map +1 -0
- package/dist/lifeops/schedule-sync-config.d.ts +3 -0
- package/dist/lifeops/schedule-sync-config.d.ts.map +1 -0
- package/dist/lifeops/schedule-sync-config.js +23 -0
- package/dist/lifeops/schedule-sync-config.js.map +1 -0
- package/dist/lifeops/schedule-sync-contracts.d.ts +2 -0
- package/dist/lifeops/schedule-sync-contracts.d.ts.map +1 -0
- package/dist/lifeops/schedule-sync-contracts.js +2 -0
- package/dist/lifeops/schedule-sync-contracts.js.map +1 -0
- package/dist/lifeops/scheduled-task/index.d.ts +13 -0
- package/dist/lifeops/scheduled-task/index.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/index.js +14 -0
- package/dist/lifeops/scheduled-task/index.js.map +1 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.d.ts +33 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.js +334 -0
- package/dist/lifeops/scheduled-task/runtime-wiring.js.map +1 -0
- package/dist/lifeops/scheduled-task/scheduler.d.ts +28 -0
- package/dist/lifeops/scheduled-task/scheduler.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/scheduler.js +202 -0
- package/dist/lifeops/scheduled-task/scheduler.js.map +1 -0
- package/dist/lifeops/scheduled-task/service.d.ts +61 -0
- package/dist/lifeops/scheduled-task/service.d.ts.map +1 -0
- package/dist/lifeops/scheduled-task/service.js +64 -0
- package/dist/lifeops/scheduled-task/service.js.map +1 -0
- package/dist/lifeops/scheduler-task.d.ts +19 -0
- package/dist/lifeops/scheduler-task.d.ts.map +1 -0
- package/dist/lifeops/scheduler-task.js +201 -0
- package/dist/lifeops/scheduler-task.js.map +1 -0
- package/dist/lifeops/schema.d.ts +28068 -0
- package/dist/lifeops/schema.d.ts.map +1 -0
- package/dist/lifeops/schema.js +1689 -0
- package/dist/lifeops/schema.js.map +1 -0
- package/dist/lifeops/screen-context.d.ts +66 -0
- package/dist/lifeops/screen-context.d.ts.map +1 -0
- package/dist/lifeops/screen-context.js +347 -0
- package/dist/lifeops/screen-context.js.map +1 -0
- package/dist/lifeops/seed-routine-migration/migrator.d.ts +113 -0
- package/dist/lifeops/seed-routine-migration/migrator.d.ts.map +1 -0
- package/dist/lifeops/seed-routine-migration/migrator.js +142 -0
- package/dist/lifeops/seed-routine-migration/migrator.js.map +1 -0
- package/dist/lifeops/seed-routines.d.ts +24 -0
- package/dist/lifeops/seed-routines.d.ts.map +1 -0
- package/dist/lifeops/seed-routines.js +140 -0
- package/dist/lifeops/seed-routines.js.map +1 -0
- package/dist/lifeops/send-policy/contract.d.ts +81 -0
- package/dist/lifeops/send-policy/contract.d.ts.map +1 -0
- package/dist/lifeops/send-policy/contract.js +1 -0
- package/dist/lifeops/send-policy/contract.js.map +1 -0
- package/dist/lifeops/send-policy/index.d.ts +3 -0
- package/dist/lifeops/send-policy/index.d.ts.map +1 -0
- package/dist/lifeops/send-policy/index.js +13 -0
- package/dist/lifeops/send-policy/index.js.map +1 -0
- package/dist/lifeops/send-policy/registry.d.ts +7 -0
- package/dist/lifeops/send-policy/registry.d.ts.map +1 -0
- package/dist/lifeops/send-policy/registry.js +62 -0
- package/dist/lifeops/send-policy/registry.js.map +1 -0
- package/dist/lifeops/sensitive-request-delivery.d.ts +46 -0
- package/dist/lifeops/sensitive-request-delivery.d.ts.map +1 -0
- package/dist/lifeops/sensitive-request-delivery.js +103 -0
- package/dist/lifeops/sensitive-request-delivery.js.map +1 -0
- package/dist/lifeops/service-constants.d.ts +10 -0
- package/dist/lifeops/service-constants.d.ts.map +1 -0
- package/dist/lifeops/service-constants.js +129 -0
- package/dist/lifeops/service-constants.js.map +1 -0
- package/dist/lifeops/service-helpers-browser.d.ts +41 -0
- package/dist/lifeops/service-helpers-browser.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-browser.js +290 -0
- package/dist/lifeops/service-helpers-browser.js.map +1 -0
- package/dist/lifeops/service-helpers-misc.d.ts +68 -0
- package/dist/lifeops/service-helpers-misc.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-misc.js +531 -0
- package/dist/lifeops/service-helpers-misc.js.map +1 -0
- package/dist/lifeops/service-helpers-occurrence.d.ts +23 -0
- package/dist/lifeops/service-helpers-occurrence.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-occurrence.js +257 -0
- package/dist/lifeops/service-helpers-occurrence.js.map +1 -0
- package/dist/lifeops/service-helpers-reminder.d.ts +260 -0
- package/dist/lifeops/service-helpers-reminder.d.ts.map +1 -0
- package/dist/lifeops/service-helpers-reminder.js +1186 -0
- package/dist/lifeops/service-helpers-reminder.js.map +1 -0
- package/dist/lifeops/service-mixin-browser.d.ts +31 -0
- package/dist/lifeops/service-mixin-browser.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-browser.js +975 -0
- package/dist/lifeops/service-mixin-browser.js.map +1 -0
- package/dist/lifeops/service-mixin-calendar.d.ts +53 -0
- package/dist/lifeops/service-mixin-calendar.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-calendar.js +68 -0
- package/dist/lifeops/service-mixin-calendar.js.map +1 -0
- package/dist/lifeops/service-mixin-core.d.ts +51 -0
- package/dist/lifeops/service-mixin-core.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-core.js +500 -0
- package/dist/lifeops/service-mixin-core.js.map +1 -0
- package/dist/lifeops/service-mixin-definitions.d.ts +14 -0
- package/dist/lifeops/service-mixin-definitions.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-definitions.js +470 -0
- package/dist/lifeops/service-mixin-definitions.js.map +1 -0
- package/dist/lifeops/service-mixin-discord.d.ts +49 -0
- package/dist/lifeops/service-mixin-discord.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-discord.js +1253 -0
- package/dist/lifeops/service-mixin-discord.js.map +1 -0
- package/dist/lifeops/service-mixin-drive.d.ts +96 -0
- package/dist/lifeops/service-mixin-drive.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-drive.js +213 -0
- package/dist/lifeops/service-mixin-drive.js.map +1 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.d.ts +23 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.js +27 -0
- package/dist/lifeops/service-mixin-email-unsubscribe.js.map +1 -0
- package/dist/lifeops/service-mixin-gmail.d.ts +43 -0
- package/dist/lifeops/service-mixin-gmail.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-gmail.js +727 -0
- package/dist/lifeops/service-mixin-gmail.js.map +1 -0
- package/dist/lifeops/service-mixin-goals.d.ts +22 -0
- package/dist/lifeops/service-mixin-goals.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-goals.js +884 -0
- package/dist/lifeops/service-mixin-goals.js.map +1 -0
- package/dist/lifeops/service-mixin-google.d.ts +13 -0
- package/dist/lifeops/service-mixin-google.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-google.js +398 -0
- package/dist/lifeops/service-mixin-google.js.map +1 -0
- package/dist/lifeops/service-mixin-health.d.ts +27 -0
- package/dist/lifeops/service-mixin-health.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-health.js +670 -0
- package/dist/lifeops/service-mixin-health.js.map +1 -0
- package/dist/lifeops/service-mixin-imessage.d.ts +106 -0
- package/dist/lifeops/service-mixin-imessage.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-imessage.js +303 -0
- package/dist/lifeops/service-mixin-imessage.js.map +1 -0
- package/dist/lifeops/service-mixin-inbox.d.ts +55 -0
- package/dist/lifeops/service-mixin-inbox.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-inbox.js +597 -0
- package/dist/lifeops/service-mixin-inbox.js.map +1 -0
- package/dist/lifeops/service-mixin-relationships.d.ts +65 -0
- package/dist/lifeops/service-mixin-relationships.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-relationships.js +150 -0
- package/dist/lifeops/service-mixin-relationships.js.map +1 -0
- package/dist/lifeops/service-mixin-reminders.d.ts +62 -0
- package/dist/lifeops/service-mixin-reminders.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-reminders.js +4003 -0
- package/dist/lifeops/service-mixin-reminders.js.map +1 -0
- package/dist/lifeops/service-mixin-scheduling.d.ts +53 -0
- package/dist/lifeops/service-mixin-scheduling.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-scheduling.js +405 -0
- package/dist/lifeops/service-mixin-scheduling.js.map +1 -0
- package/dist/lifeops/service-mixin-screentime.d.ts +71 -0
- package/dist/lifeops/service-mixin-screentime.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-screentime.js +530 -0
- package/dist/lifeops/service-mixin-screentime.js.map +1 -0
- package/dist/lifeops/service-mixin-signal.d.ts +74 -0
- package/dist/lifeops/service-mixin-signal.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-signal.js +214 -0
- package/dist/lifeops/service-mixin-signal.js.map +1 -0
- package/dist/lifeops/service-mixin-sleep.d.ts +68 -0
- package/dist/lifeops/service-mixin-sleep.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-sleep.js +43 -0
- package/dist/lifeops/service-mixin-sleep.js.map +1 -0
- package/dist/lifeops/service-mixin-status.d.ts +31 -0
- package/dist/lifeops/service-mixin-status.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-status.js +373 -0
- package/dist/lifeops/service-mixin-status.js.map +1 -0
- package/dist/lifeops/service-mixin-subscriptions.d.ts +101 -0
- package/dist/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-subscriptions.js +50 -0
- package/dist/lifeops/service-mixin-subscriptions.js.map +1 -0
- package/dist/lifeops/service-mixin-telegram.d.ts +104 -0
- package/dist/lifeops/service-mixin-telegram.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-telegram.js +280 -0
- package/dist/lifeops/service-mixin-telegram.js.map +1 -0
- package/dist/lifeops/service-mixin-travel.d.ts +66 -0
- package/dist/lifeops/service-mixin-travel.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-travel.js +275 -0
- package/dist/lifeops/service-mixin-travel.js.map +1 -0
- package/dist/lifeops/service-mixin-whatsapp.d.ts +96 -0
- package/dist/lifeops/service-mixin-whatsapp.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-whatsapp.js +186 -0
- package/dist/lifeops/service-mixin-whatsapp.js.map +1 -0
- package/dist/lifeops/service-mixin-workflows.d.ts +15 -0
- package/dist/lifeops/service-mixin-workflows.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-workflows.js +710 -0
- package/dist/lifeops/service-mixin-workflows.js.map +1 -0
- package/dist/lifeops/service-mixin-x-read.d.ts +31 -0
- package/dist/lifeops/service-mixin-x-read.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-x-read.js +267 -0
- package/dist/lifeops/service-mixin-x-read.js.map +1 -0
- package/dist/lifeops/service-mixin-x.d.ts +66 -0
- package/dist/lifeops/service-mixin-x.d.ts.map +1 -0
- package/dist/lifeops/service-mixin-x.js +501 -0
- package/dist/lifeops/service-mixin-x.js.map +1 -0
- package/dist/lifeops/service-normalize-connector.d.ts +19 -0
- package/dist/lifeops/service-normalize-connector.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-connector.js +816 -0
- package/dist/lifeops/service-normalize-connector.js.map +1 -0
- package/dist/lifeops/service-normalize-gmail.d.ts +11 -0
- package/dist/lifeops/service-normalize-gmail.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-gmail.js +85 -0
- package/dist/lifeops/service-normalize-gmail.js.map +1 -0
- package/dist/lifeops/service-normalize-task.d.ts +9 -0
- package/dist/lifeops/service-normalize-task.d.ts.map +1 -0
- package/dist/lifeops/service-normalize-task.js +567 -0
- package/dist/lifeops/service-normalize-task.js.map +1 -0
- package/dist/lifeops/service-normalize.d.ts +9 -0
- package/dist/lifeops/service-normalize.d.ts.map +1 -0
- package/dist/lifeops/service-normalize.js +53 -0
- package/dist/lifeops/service-normalize.js.map +1 -0
- package/dist/lifeops/service-types.d.ts +75 -0
- package/dist/lifeops/service-types.d.ts.map +1 -0
- package/dist/lifeops/service-types.js +5 -0
- package/dist/lifeops/service-types.js.map +1 -0
- package/dist/lifeops/service.d.ts +482 -0
- package/dist/lifeops/service.d.ts.map +1 -0
- package/dist/lifeops/service.js +62 -0
- package/dist/lifeops/service.js.map +1 -0
- package/dist/lifeops/signal-runtime-config.d.ts +13 -0
- package/dist/lifeops/signal-runtime-config.d.ts.map +1 -0
- package/dist/lifeops/signal-runtime-config.js +44 -0
- package/dist/lifeops/signal-runtime-config.js.map +1 -0
- package/dist/lifeops/signals/bus.d.ts +78 -0
- package/dist/lifeops/signals/bus.d.ts.map +1 -0
- package/dist/lifeops/signals/bus.js +117 -0
- package/dist/lifeops/signals/bus.js.map +1 -0
- package/dist/lifeops/sql.d.ts +65 -0
- package/dist/lifeops/sql.d.ts.map +1 -0
- package/dist/lifeops/sql.js +182 -0
- package/dist/lifeops/sql.js.map +1 -0
- package/dist/lifeops/stretch-decider.d.ts +73 -0
- package/dist/lifeops/stretch-decider.d.ts.map +1 -0
- package/dist/lifeops/stretch-decider.js +49 -0
- package/dist/lifeops/stretch-decider.js.map +1 -0
- package/dist/lifeops/telemetry-mapping.d.ts +14 -0
- package/dist/lifeops/telemetry-mapping.d.ts.map +1 -0
- package/dist/lifeops/telemetry-mapping.js +115 -0
- package/dist/lifeops/telemetry-mapping.js.map +1 -0
- package/dist/lifeops/telemetry-retention.d.ts +21 -0
- package/dist/lifeops/telemetry-retention.d.ts.map +1 -0
- package/dist/lifeops/telemetry-retention.js +13 -0
- package/dist/lifeops/telemetry-retention.js.map +1 -0
- package/dist/lifeops/time/timezone.d.ts +4 -0
- package/dist/lifeops/time/timezone.d.ts.map +1 -0
- package/dist/lifeops/time/timezone.js +154 -0
- package/dist/lifeops/time/timezone.js.map +1 -0
- package/dist/lifeops/time-util.d.ts +10 -0
- package/dist/lifeops/time-util.d.ts.map +1 -0
- package/dist/lifeops/time-util.js +14 -0
- package/dist/lifeops/time-util.js.map +1 -0
- package/dist/lifeops/time.d.ts +17 -0
- package/dist/lifeops/time.d.ts.map +1 -0
- package/dist/lifeops/time.js +152 -0
- package/dist/lifeops/time.js.map +1 -0
- package/dist/lifeops/travel-booking.types.d.ts +46 -0
- package/dist/lifeops/travel-booking.types.d.ts.map +1 -0
- package/dist/lifeops/travel-booking.types.js +1 -0
- package/dist/lifeops/travel-booking.types.js.map +1 -0
- package/dist/lifeops/triggers/schedule-once.d.ts +19 -0
- package/dist/lifeops/triggers/schedule-once.d.ts.map +1 -0
- package/dist/lifeops/triggers/schedule-once.js +99 -0
- package/dist/lifeops/triggers/schedule-once.js.map +1 -0
- package/dist/lifeops/validate/coding-task-request.d.ts +18 -0
- package/dist/lifeops/validate/coding-task-request.d.ts.map +1 -0
- package/dist/lifeops/validate/coding-task-request.js +16 -0
- package/dist/lifeops/validate/coding-task-request.js.map +1 -0
- package/dist/lifeops/voice/grounded-reply.d.ts +41 -0
- package/dist/lifeops/voice/grounded-reply.d.ts.map +1 -0
- package/dist/lifeops/voice/grounded-reply.js +24 -0
- package/dist/lifeops/voice/grounded-reply.js.map +1 -0
- package/dist/lifeops/voice-affect.d.ts +79 -0
- package/dist/lifeops/voice-affect.d.ts.map +1 -0
- package/dist/lifeops/voice-affect.js +253 -0
- package/dist/lifeops/voice-affect.js.map +1 -0
- package/dist/lifeops/wave1-types.d.ts +125 -0
- package/dist/lifeops/wave1-types.d.ts.map +1 -0
- package/dist/lifeops/wave1-types.js +1 -0
- package/dist/lifeops/wave1-types.js.map +1 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts +33 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts.map +1 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.js +226 -0
- package/dist/lifeops/work-threads/field-evaluator-thread-ops.js.map +1 -0
- package/dist/lifeops/work-threads/index.d.ts +3 -0
- package/dist/lifeops/work-threads/index.d.ts.map +1 -0
- package/dist/lifeops/work-threads/index.js +7 -0
- package/dist/lifeops/work-threads/index.js.map +1 -0
- package/dist/lifeops/work-threads/store.d.ts +91 -0
- package/dist/lifeops/work-threads/store.d.ts.map +1 -0
- package/dist/lifeops/work-threads/store.js +245 -0
- package/dist/lifeops/work-threads/store.js.map +1 -0
- package/dist/lifeops/work-threads/types.d.ts +58 -0
- package/dist/lifeops/work-threads/types.d.ts.map +1 -0
- package/dist/lifeops/work-threads/types.js +1 -0
- package/dist/lifeops/work-threads/types.js.map +1 -0
- package/dist/platform/host.d.ts +16 -0
- package/dist/platform/host.d.ts.map +1 -0
- package/dist/platform/host.js +22 -0
- package/dist/platform/host.js.map +1 -0
- package/dist/platform/index.d.ts +3 -0
- package/dist/platform/index.d.ts.map +1 -0
- package/dist/platform/index.js +3 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/lifeops-github.d.ts +15 -0
- package/dist/platform/lifeops-github.d.ts.map +1 -0
- package/dist/platform/lifeops-github.js +146 -0
- package/dist/platform/lifeops-github.js.map +1 -0
- package/dist/plugin.d.ts +106 -0
- package/dist/plugin.d.ts.map +1 -0
- package/dist/plugin.js +989 -0
- package/dist/plugin.js.map +1 -0
- package/dist/provider.d.ts +4 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +108 -0
- package/dist/provider.js.map +1 -0
- package/dist/providers/activity-profile.d.ts +3 -0
- package/dist/providers/activity-profile.d.ts.map +1 -0
- package/dist/providers/activity-profile.js +140 -0
- package/dist/providers/activity-profile.js.map +1 -0
- package/dist/providers/cross-channel-context.d.ts +29 -0
- package/dist/providers/cross-channel-context.d.ts.map +1 -0
- package/dist/providers/cross-channel-context.js +206 -0
- package/dist/providers/cross-channel-context.js.map +1 -0
- package/dist/providers/first-run.d.ts +22 -0
- package/dist/providers/first-run.d.ts.map +1 -0
- package/dist/providers/first-run.js +93 -0
- package/dist/providers/first-run.js.map +1 -0
- package/dist/providers/health.d.ts +2 -0
- package/dist/providers/health.d.ts.map +1 -0
- package/dist/providers/health.js +14 -0
- package/dist/providers/health.js.map +1 -0
- package/dist/providers/inbox-triage.d.ts +3 -0
- package/dist/providers/inbox-triage.d.ts.map +1 -0
- package/dist/providers/inbox-triage.js +134 -0
- package/dist/providers/inbox-triage.js.map +1 -0
- package/dist/providers/lifeops.d.ts +3 -0
- package/dist/providers/lifeops.d.ts.map +1 -0
- package/dist/providers/lifeops.js +548 -0
- package/dist/providers/lifeops.js.map +1 -0
- package/dist/providers/pending-prompts.d.ts +38 -0
- package/dist/providers/pending-prompts.d.ts.map +1 -0
- package/dist/providers/pending-prompts.js +81 -0
- package/dist/providers/pending-prompts.js.map +1 -0
- package/dist/providers/recent-task-states.d.ts +52 -0
- package/dist/providers/recent-task-states.d.ts.map +1 -0
- package/dist/providers/recent-task-states.js +166 -0
- package/dist/providers/recent-task-states.js.map +1 -0
- package/dist/providers/room-policy.d.ts +16 -0
- package/dist/providers/room-policy.d.ts.map +1 -0
- package/dist/providers/room-policy.js +71 -0
- package/dist/providers/room-policy.js.map +1 -0
- package/dist/providers/work-threads.d.ts +3 -0
- package/dist/providers/work-threads.d.ts.map +1 -0
- package/dist/providers/work-threads.js +97 -0
- package/dist/providers/work-threads.js.map +1 -0
- package/dist/public.d.ts +3 -0
- package/dist/public.d.ts.map +1 -0
- package/dist/public.js +17 -0
- package/dist/public.js.map +1 -0
- package/dist/routes/cloud-features-routes.d.ts +9 -0
- package/dist/routes/cloud-features-routes.d.ts.map +1 -0
- package/dist/routes/cloud-features-routes.js +164 -0
- package/dist/routes/cloud-features-routes.js.map +1 -0
- package/dist/routes/entities.d.ts +14 -0
- package/dist/routes/entities.d.ts.map +1 -0
- package/dist/routes/entities.js +203 -0
- package/dist/routes/entities.js.map +1 -0
- package/dist/routes/lifeops-routes.d.ts +20 -0
- package/dist/routes/lifeops-routes.d.ts.map +1 -0
- package/dist/routes/lifeops-routes.js +2337 -0
- package/dist/routes/lifeops-routes.js.map +1 -0
- package/dist/routes/plugin.d.ts +9 -0
- package/dist/routes/plugin.d.ts.map +1 -0
- package/dist/routes/plugin.js +568 -0
- package/dist/routes/plugin.js.map +1 -0
- package/dist/routes/relationships.d.ts +13 -0
- package/dist/routes/relationships.d.ts.map +1 -0
- package/dist/routes/relationships.js +195 -0
- package/dist/routes/relationships.js.map +1 -0
- package/dist/routes/scheduled-tasks.d.ts +102 -0
- package/dist/routes/scheduled-tasks.d.ts.map +1 -0
- package/dist/routes/scheduled-tasks.js +322 -0
- package/dist/routes/scheduled-tasks.js.map +1 -0
- package/dist/routes/sleep-routes.d.ts +3 -0
- package/dist/routes/sleep-routes.d.ts.map +1 -0
- package/dist/routes/sleep-routes.js +33 -0
- package/dist/routes/sleep-routes.js.map +1 -0
- package/dist/routes/travel-provider-relay-routes.d.ts +2 -0
- package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
- package/dist/routes/travel-provider-relay-routes.js +7 -0
- package/dist/routes/travel-provider-relay-routes.js.map +1 -0
- package/dist/routes/website-blocker-routes.d.ts +6 -0
- package/dist/routes/website-blocker-routes.d.ts.map +1 -0
- package/dist/routes/website-blocker-routes.js +218 -0
- package/dist/routes/website-blocker-routes.js.map +1 -0
- package/dist/security/action-confirmation.d.ts +12 -0
- package/dist/security/action-confirmation.d.ts.map +1 -0
- package/dist/security/action-confirmation.js +36 -0
- package/dist/security/action-confirmation.js.map +1 -0
- package/dist/service.d.ts +34 -0
- package/dist/service.d.ts.map +1 -0
- package/dist/service.js +111 -0
- package/dist/service.js.map +1 -0
- package/dist/travel-time/calendar-create.d.ts +17 -0
- package/dist/travel-time/calendar-create.d.ts.map +1 -0
- package/dist/travel-time/calendar-create.js +28 -0
- package/dist/travel-time/calendar-create.js.map +1 -0
- package/dist/travel-time/service.d.ts +114 -0
- package/dist/travel-time/service.d.ts.map +1 -0
- package/dist/travel-time/service.js +209 -0
- package/dist/travel-time/service.js.map +1 -0
- package/dist/types/app-blocker-settings-card.d.ts +2 -0
- package/dist/types/app-blocker-settings-card.d.ts.map +1 -0
- package/dist/types/app-blocker-settings-card.js +1 -0
- package/dist/types/app-blocker-settings-card.js.map +1 -0
- package/dist/types/briefing.d.ts +59 -0
- package/dist/types/briefing.d.ts.map +1 -0
- package/dist/types/briefing.js +1 -0
- package/dist/types/briefing.js.map +1 -0
- package/dist/types/document-request.d.ts +41 -0
- package/dist/types/document-request.d.ts.map +1 -0
- package/dist/types/document-request.js +1 -0
- package/dist/types/document-request.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/website-blocker-settings-card.d.ts +2 -0
- package/dist/types/website-blocker-settings-card.d.ts.map +1 -0
- package/dist/types/website-blocker-settings-card.js +1 -0
- package/dist/types/website-blocker-settings-card.js.map +1 -0
- package/dist/ui.d.ts +13 -0
- package/dist/ui.d.ts.map +1 -0
- package/dist/ui.js +25 -0
- package/dist/ui.js.map +1 -0
- package/dist/utils/format-duration.d.ts +2 -0
- package/dist/utils/format-duration.d.ts.map +1 -0
- package/dist/utils/format-duration.js +13 -0
- package/dist/utils/format-duration.js.map +1 -0
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/lifeops-url.d.ts +3 -0
- package/dist/utils/lifeops-url.d.ts.map +1 -0
- package/dist/utils/lifeops-url.js +28 -0
- package/dist/utils/lifeops-url.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-activator.d.ts +32 -0
- package/dist/website-blocker/chat-integration/block-activator.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-activator.js +30 -0
- package/dist/website-blocker/chat-integration/block-activator.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts +7 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.js +115 -0
- package/dist/website-blocker/chat-integration/block-rule-reconciler.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.d.ts +39 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.js +133 -0
- package/dist/website-blocker/chat-integration/block-rule-schema.js.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-service.d.ts +21 -0
- package/dist/website-blocker/chat-integration/block-rule-service.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/block-rule-service.js +230 -0
- package/dist/website-blocker/chat-integration/block-rule-service.js.map +1 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts +13 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.js +22 -0
- package/dist/website-blocker/chat-integration/harsh-mode-check.js.map +1 -0
- package/dist/website-blocker/chat-integration/index.d.ts +5 -0
- package/dist/website-blocker/chat-integration/index.d.ts.map +1 -0
- package/dist/website-blocker/chat-integration/index.js +26 -0
- package/dist/website-blocker/chat-integration/index.js.map +1 -0
- package/dist/website-blocker/proactive-block-bridge.d.ts +75 -0
- package/dist/website-blocker/proactive-block-bridge.d.ts.map +1 -0
- package/dist/website-blocker/proactive-block-bridge.js +154 -0
- package/dist/website-blocker/proactive-block-bridge.js.map +1 -0
- package/dist/website-blocker/public.d.ts +12 -0
- package/dist/website-blocker/public.d.ts.map +1 -0
- package/dist/website-blocker/public.js +51 -0
- package/dist/website-blocker/public.js.map +1 -0
- package/package.json +28 -28
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ModelType,
|
|
3
|
+
parseJsonModelRecord,
|
|
4
|
+
recentConversationTexts,
|
|
5
|
+
runExtractorPipeline,
|
|
6
|
+
runWithTrajectoryContext
|
|
7
|
+
} from "@elizaos/core";
|
|
8
|
+
import {
|
|
9
|
+
LIFEOPS_REMINDER_INTENSITIES
|
|
10
|
+
} from "../../contracts/index.js";
|
|
11
|
+
import { resolveContextWindow } from "../../lifeops/defaults.js";
|
|
12
|
+
import { normalizeExplicitTimeZoneToken } from "../../lifeops/time/timezone.js";
|
|
13
|
+
const VALID_CADENCE_KINDS = /* @__PURE__ */ new Set([
|
|
14
|
+
"once",
|
|
15
|
+
"daily",
|
|
16
|
+
"weekly",
|
|
17
|
+
"times_per_day",
|
|
18
|
+
"interval"
|
|
19
|
+
]);
|
|
20
|
+
const VALID_REQUEST_KINDS = /* @__PURE__ */ new Set(["alarm", "reminder"]);
|
|
21
|
+
const VALID_CREATE_PLAN_MODES = /* @__PURE__ */ new Set(["create", "respond"]);
|
|
22
|
+
const ALARM_CONTEXT_RE = /\b(alarm|wake(?:-|\s)?up|wake me up)\b/i;
|
|
23
|
+
const REMINDER_CONTEXT_RE = /\b(remind(?: me)?|reminder|set (?:a )?reminder|create (?:a )?reminder|nudge me|ping me)\b/i;
|
|
24
|
+
const REQUEST_KIND_VALIDATION_WINDOW = 6;
|
|
25
|
+
const DEFAULT_CREATE_PLAN_RESPONSE = "Restate the reminder in one sentence with the task and timing.";
|
|
26
|
+
const EMPTY_TASK_CREATE_PLAN = {
|
|
27
|
+
mode: "respond",
|
|
28
|
+
response: DEFAULT_CREATE_PLAN_RESPONSE,
|
|
29
|
+
requestKind: null,
|
|
30
|
+
title: null,
|
|
31
|
+
description: null,
|
|
32
|
+
cadenceKind: null,
|
|
33
|
+
windows: null,
|
|
34
|
+
weekdays: null,
|
|
35
|
+
timeOfDay: null,
|
|
36
|
+
timeZone: null,
|
|
37
|
+
everyMinutes: null,
|
|
38
|
+
timesPerDay: null,
|
|
39
|
+
priority: null,
|
|
40
|
+
durationMinutes: null
|
|
41
|
+
};
|
|
42
|
+
function promptText(value) {
|
|
43
|
+
const trimmed = value.trim();
|
|
44
|
+
return trimmed.length > 0 ? trimmed : "(empty)";
|
|
45
|
+
}
|
|
46
|
+
function parseStructuredRecord(raw) {
|
|
47
|
+
return parseJsonModelRecord(raw);
|
|
48
|
+
}
|
|
49
|
+
function buildExtractionPrompt(intent, recentConversation) {
|
|
50
|
+
return [
|
|
51
|
+
"Plan the next step for a LifeOps create_definition request.",
|
|
52
|
+
"Use the full current user request plus recent conversation.",
|
|
53
|
+
"The user may speak informally, formally, code-switched, or in another language.",
|
|
54
|
+
"Do not strip acknowledgements, fillers, or language-footer text. Interpret the whole request in context.",
|
|
55
|
+
"Infer practical reminder windows from natural phrases when needed: wake up or before work -> morning, lunch or after lunch -> afternoon, after work or dinner -> evening, before bed or before sleep -> night.",
|
|
56
|
+
"Return ONLY a JSON object with these fields (use null for unknown):",
|
|
57
|
+
"",
|
|
58
|
+
'- mode: "create" when the request is specific enough to create or preview a LifeOps item now, "respond" when you should reply without creating anything yet',
|
|
59
|
+
` Choose mode="create" whenever the user gives a title and cadence, even if they say "preview the plan", "don't save yet", "just show it first", or similar \u2014 the handler (not you) controls whether it is saved or previewed. Only use mode="respond" when the user hasn't specified what to track or when.`,
|
|
60
|
+
"- response: short natural-language reply when mode is respond, otherwise null",
|
|
61
|
+
'- requestKind: "alarm" when this is explicitly an alarm/wake-up request, "reminder" when it is explicitly a reminder request, otherwise null',
|
|
62
|
+
"- title: short name for the task (2-5 words)",
|
|
63
|
+
"- description: brief description if the user provided context",
|
|
64
|
+
'- cadenceKind: one of "once", "daily", "weekly", "times_per_day", "interval"',
|
|
65
|
+
' - "once" \u2014 a specific dated and/or timed event that happens a single time (e.g. "april 17 at 8pm", "tomorrow at 9", "set an alarm for 7am")',
|
|
66
|
+
' - "daily" \u2014 happens every day, typically with one time or window (e.g. "every morning", "every night")',
|
|
67
|
+
' - "weekly" \u2014 happens on specific weekdays (e.g. "every Sunday", "Mon/Wed/Fri")',
|
|
68
|
+
' - "times_per_day" \u2014 happens multiple times on the SAME recurring day, with multiple times or windows (e.g. "morning and night", "three times a day")',
|
|
69
|
+
' - "interval" \u2014 happens every N minutes/hours (e.g. "every 2 hours")',
|
|
70
|
+
' If the request names a specific calendar date OR a specific wall-clock time without a recurrence word, pick "once".',
|
|
71
|
+
"- windows: list of time windows like [morning, night, afternoon, evening]",
|
|
72
|
+
"- weekdays: list of weekday numbers (0=Sun, 1=Mon, ..., 6=Sat) for weekly tasks",
|
|
73
|
+
'- timeOfDay: specific time in HH:MM 24h format like "15:00" or "08:30" if mentioned',
|
|
74
|
+
'- timeZone: IANA timezone like "America/Denver" when the user explicitly gives one',
|
|
75
|
+
'- everyMinutes: interval in minutes for recurring tasks (e.g., 120 for "every 2 hours")',
|
|
76
|
+
'- timesPerDay: number of times per day if mentioned (e.g., 4 for "four times a day")',
|
|
77
|
+
"- priority: 1-5 (1=critical, 2=high, 3=medium, 4-5=low) based on urgency/importance language",
|
|
78
|
+
"- durationMinutes: how long the activity takes if mentioned",
|
|
79
|
+
"",
|
|
80
|
+
'Example create: {"mode":"create","response":null,"requestKind":"reminder","title":"Brush teeth","description":null,"cadenceKind":"daily","windows":["morning","night"],"weekdays":null,"timeOfDay":null,"timeZone":null,"everyMinutes":null,"timesPerDay":null,"priority":null,"durationMinutes":null}',
|
|
81
|
+
'Example respond: {"mode":"respond","response":"What do you want the todo to be, and when should it happen?","requestKind":null,"title":null,"description":null,"cadenceKind":null,"windows":null,"weekdays":null,"timeOfDay":null,"timeZone":null,"everyMinutes":null,"timesPerDay":null,"priority":null,"durationMinutes":null}',
|
|
82
|
+
"",
|
|
83
|
+
"Use recent conversation only to resolve short follow-ups. Do not emit requestKind='alarm' or requestKind='reminder' unless the current request or recent conversation explicitly supports it.",
|
|
84
|
+
"If the user has not actually specified the todo/habit yet, choose mode='respond' and ask a concise clarifying question instead of inventing a task.",
|
|
85
|
+
"",
|
|
86
|
+
"Return ONLY valid JSON. No prose, markdown, code fences, or any other format.",
|
|
87
|
+
"",
|
|
88
|
+
`User request: ${promptText(intent)}`,
|
|
89
|
+
"Recent conversation:",
|
|
90
|
+
promptText(recentConversation)
|
|
91
|
+
].join("\n");
|
|
92
|
+
}
|
|
93
|
+
function validateTitle(value) {
|
|
94
|
+
if (typeof value !== "string") return null;
|
|
95
|
+
const trimmed = value.trim();
|
|
96
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
97
|
+
}
|
|
98
|
+
function validateRequestKind(value) {
|
|
99
|
+
if (typeof value !== "string") return null;
|
|
100
|
+
const normalized = value.trim().toLowerCase();
|
|
101
|
+
return VALID_REQUEST_KINDS.has(normalized) ? normalized : null;
|
|
102
|
+
}
|
|
103
|
+
function validateCreatePlanMode(value) {
|
|
104
|
+
if (typeof value !== "string") return null;
|
|
105
|
+
const normalized = value.trim().toLowerCase();
|
|
106
|
+
return VALID_CREATE_PLAN_MODES.has(normalized) ? normalized : null;
|
|
107
|
+
}
|
|
108
|
+
function validateResponse(value) {
|
|
109
|
+
if (typeof value !== "string") return null;
|
|
110
|
+
const trimmed = value.trim();
|
|
111
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
112
|
+
}
|
|
113
|
+
function validateCadenceKind(value) {
|
|
114
|
+
if (typeof value !== "string") return null;
|
|
115
|
+
return VALID_CADENCE_KINDS.has(value) ? value : null;
|
|
116
|
+
}
|
|
117
|
+
function validateWindows(value) {
|
|
118
|
+
if (!Array.isArray(value)) return null;
|
|
119
|
+
const filtered = value.filter(
|
|
120
|
+
(w) => typeof w === "string" && w.trim().length > 0
|
|
121
|
+
);
|
|
122
|
+
return filtered.length > 0 ? filtered : null;
|
|
123
|
+
}
|
|
124
|
+
function validateWeekdays(value) {
|
|
125
|
+
if (!Array.isArray(value)) return null;
|
|
126
|
+
const filtered = value.filter(
|
|
127
|
+
(d) => typeof d === "number" && Number.isInteger(d) && d >= 0 && d <= 6
|
|
128
|
+
);
|
|
129
|
+
return filtered.length > 0 ? filtered : null;
|
|
130
|
+
}
|
|
131
|
+
function validateTimeOfDay(value) {
|
|
132
|
+
if (typeof value !== "string") return null;
|
|
133
|
+
const trimmed = value.trim();
|
|
134
|
+
if (/^\d{1,2}:\d{2}$/.test(trimmed)) return trimmed;
|
|
135
|
+
return null;
|
|
136
|
+
}
|
|
137
|
+
function validateTimeZone(value) {
|
|
138
|
+
if (typeof value !== "string") {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
return normalizeExplicitTimeZoneToken(value);
|
|
142
|
+
}
|
|
143
|
+
function validatePositiveNumber(value) {
|
|
144
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
return value;
|
|
148
|
+
}
|
|
149
|
+
function validatePriority(value) {
|
|
150
|
+
if (typeof value !== "number" || !Number.isFinite(value)) return null;
|
|
151
|
+
return Math.max(1, Math.min(5, Math.round(value)));
|
|
152
|
+
}
|
|
153
|
+
function validateRequestKindAgainstContext(value, currentText, recentWindow) {
|
|
154
|
+
if (!value) {
|
|
155
|
+
return null;
|
|
156
|
+
}
|
|
157
|
+
const texts = [currentText, ...recentWindow];
|
|
158
|
+
const pattern = value === "alarm" ? ALARM_CONTEXT_RE : REMINDER_CONTEXT_RE;
|
|
159
|
+
return texts.some((text) => pattern.test(text)) ? value : null;
|
|
160
|
+
}
|
|
161
|
+
function buildTaskCreatePlan(args) {
|
|
162
|
+
const { parsed, intent, recentWindow } = args;
|
|
163
|
+
const mode = validateCreatePlanMode(parsed.mode);
|
|
164
|
+
if (!mode) {
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
return {
|
|
168
|
+
mode,
|
|
169
|
+
response: mode === "respond" ? validateResponse(parsed.response) ?? DEFAULT_CREATE_PLAN_RESPONSE : null,
|
|
170
|
+
requestKind: validateRequestKindAgainstContext(
|
|
171
|
+
validateRequestKind(parsed.requestKind),
|
|
172
|
+
intent,
|
|
173
|
+
recentWindow.slice(-REQUEST_KIND_VALIDATION_WINDOW)
|
|
174
|
+
),
|
|
175
|
+
title: validateTitle(parsed.title),
|
|
176
|
+
description: validateTitle(parsed.description),
|
|
177
|
+
cadenceKind: validateCadenceKind(parsed.cadenceKind),
|
|
178
|
+
windows: validateWindows(parsed.windows),
|
|
179
|
+
weekdays: validateWeekdays(parsed.weekdays),
|
|
180
|
+
timeOfDay: validateTimeOfDay(parsed.timeOfDay),
|
|
181
|
+
timeZone: validateTimeZone(parsed.timeZone),
|
|
182
|
+
everyMinutes: validatePositiveNumber(parsed.everyMinutes),
|
|
183
|
+
timesPerDay: validatePositiveNumber(parsed.timesPerDay),
|
|
184
|
+
priority: validatePriority(parsed.priority),
|
|
185
|
+
durationMinutes: validatePositiveNumber(parsed.durationMinutes)
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
function buildRepairPrompt(args) {
|
|
189
|
+
return [
|
|
190
|
+
"Your last reply for the LifeOps create-definition planner was invalid.",
|
|
191
|
+
"Return ONLY valid JSON with these exact fields:",
|
|
192
|
+
"mode, response, requestKind, title, description, cadenceKind, windows, weekdays, timeOfDay, timeZone, everyMinutes, timesPerDay, priority, durationMinutes",
|
|
193
|
+
"",
|
|
194
|
+
'mode must be "create" or "respond".',
|
|
195
|
+
"If mode is respond, include a short clarifying response.",
|
|
196
|
+
"If mode is create, response must be null.",
|
|
197
|
+
"",
|
|
198
|
+
`User request: ${promptText(args.intent)}`,
|
|
199
|
+
"Recent conversation:",
|
|
200
|
+
promptText(args.recentConversation),
|
|
201
|
+
"Previous invalid output:",
|
|
202
|
+
promptText(args.rawResponse)
|
|
203
|
+
].join("\n");
|
|
204
|
+
}
|
|
205
|
+
function buildExtractionFailurePlan() {
|
|
206
|
+
return {
|
|
207
|
+
...EMPTY_TASK_CREATE_PLAN
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
async function extractTaskCreatePlanWithLlm(args) {
|
|
211
|
+
const { runtime, intent } = args;
|
|
212
|
+
if (!intent || intent.trim().length === 0) {
|
|
213
|
+
return buildExtractionFailurePlan();
|
|
214
|
+
}
|
|
215
|
+
const recentWindow = await recentConversationTexts({
|
|
216
|
+
runtime,
|
|
217
|
+
message: args.message,
|
|
218
|
+
state: args.state,
|
|
219
|
+
limit: Math.max(resolveContextWindow(), REQUEST_KIND_VALIDATION_WINDOW)
|
|
220
|
+
});
|
|
221
|
+
const recentConversation = recentWindow.slice(-resolveContextWindow()).join("\n");
|
|
222
|
+
const prompt = buildExtractionPrompt(intent, recentConversation);
|
|
223
|
+
const { parsed } = await runExtractorPipeline({
|
|
224
|
+
runtime,
|
|
225
|
+
prompt,
|
|
226
|
+
parser: (raw) => {
|
|
227
|
+
const parsedObject = parseStructuredRecord(raw);
|
|
228
|
+
return parsedObject ? buildTaskCreatePlan({
|
|
229
|
+
parsed: parsedObject,
|
|
230
|
+
intent,
|
|
231
|
+
recentWindow
|
|
232
|
+
}) : null;
|
|
233
|
+
},
|
|
234
|
+
buildRepairPrompt: (rawFirstPass) => buildRepairPrompt({
|
|
235
|
+
intent,
|
|
236
|
+
recentConversation,
|
|
237
|
+
rawResponse: rawFirstPass
|
|
238
|
+
})
|
|
239
|
+
});
|
|
240
|
+
return parsed ?? buildExtractionFailurePlan();
|
|
241
|
+
}
|
|
242
|
+
async function extractTaskParamsWithLlm(args) {
|
|
243
|
+
const plan = await extractTaskCreatePlanWithLlm(args);
|
|
244
|
+
const { mode: _mode, response: _response, ...params } = plan;
|
|
245
|
+
return params;
|
|
246
|
+
}
|
|
247
|
+
const VALID_REMINDER_INTENSITIES = new Set(LIFEOPS_REMINDER_INTENSITIES);
|
|
248
|
+
function isLifeOpsReminderIntensity(value) {
|
|
249
|
+
return VALID_REMINDER_INTENSITIES.has(value);
|
|
250
|
+
}
|
|
251
|
+
const EMPTY_REMINDER_INTENSITY_PLAN = {
|
|
252
|
+
intensity: "unknown"
|
|
253
|
+
};
|
|
254
|
+
function parseReminderIntensityPlan(raw) {
|
|
255
|
+
const normalized = raw.trim().toLowerCase();
|
|
256
|
+
if (isLifeOpsReminderIntensity(normalized)) {
|
|
257
|
+
return {
|
|
258
|
+
intensity: normalized
|
|
259
|
+
};
|
|
260
|
+
}
|
|
261
|
+
const parsed = parseStructuredRecord(raw);
|
|
262
|
+
if (!parsed || typeof parsed.intensity !== "string") {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
const parsedIntensity = parsed.intensity.trim().toLowerCase();
|
|
266
|
+
if (!isLifeOpsReminderIntensity(parsedIntensity)) {
|
|
267
|
+
return null;
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
intensity: parsedIntensity
|
|
271
|
+
};
|
|
272
|
+
}
|
|
273
|
+
function buildReminderIntensityRepairPrompt(args) {
|
|
274
|
+
return [
|
|
275
|
+
"Your last reply for the LifeOps reminder-intensity extractor was invalid.",
|
|
276
|
+
'Return ONLY valid JSON like {"intensity":"minimal"}.',
|
|
277
|
+
'Allowed intensity values: "minimal", "normal", "persistent", "high_priority_only".',
|
|
278
|
+
"",
|
|
279
|
+
`User said: ${promptText(args.intent)}`,
|
|
280
|
+
"Previous invalid output:",
|
|
281
|
+
promptText(args.rawResponse)
|
|
282
|
+
].join("\n");
|
|
283
|
+
}
|
|
284
|
+
async function extractReminderIntensityWithLlm(args) {
|
|
285
|
+
const prompt = [
|
|
286
|
+
"The user is requesting a change to their reminder frequency.",
|
|
287
|
+
"Classify into exactly one of these values:",
|
|
288
|
+
"- minimal: user wants fewer/less reminders",
|
|
289
|
+
"- normal: user wants default/standard reminders",
|
|
290
|
+
"- persistent: user wants more/frequent reminders",
|
|
291
|
+
"- high_priority_only: user wants to pause or mute most reminders",
|
|
292
|
+
"",
|
|
293
|
+
'Return ONLY valid JSON like {"intensity":"minimal"}.',
|
|
294
|
+
"No prose, markdown, code fences, or any other format.",
|
|
295
|
+
"",
|
|
296
|
+
`User said: ${promptText(args.intent)}`
|
|
297
|
+
].join("\n");
|
|
298
|
+
const { parsed } = await runExtractorPipeline({
|
|
299
|
+
runtime: args.runtime,
|
|
300
|
+
prompt,
|
|
301
|
+
modelType: ModelType.TEXT_SMALL,
|
|
302
|
+
parser: parseReminderIntensityPlan,
|
|
303
|
+
buildRepairPrompt: (rawFirstPass) => buildReminderIntensityRepairPrompt({
|
|
304
|
+
intent: args.intent,
|
|
305
|
+
rawResponse: rawFirstPass
|
|
306
|
+
})
|
|
307
|
+
});
|
|
308
|
+
return parsed ?? { ...EMPTY_REMINDER_INTENSITY_PLAN };
|
|
309
|
+
}
|
|
310
|
+
const VALID_UNLOCK_MODES = /* @__PURE__ */ new Set([
|
|
311
|
+
"fixed_duration",
|
|
312
|
+
"until_manual_lock",
|
|
313
|
+
"until_callback"
|
|
314
|
+
]);
|
|
315
|
+
async function extractUnlockModeWithLlm(args) {
|
|
316
|
+
if (typeof args.runtime.useModel !== "function") return null;
|
|
317
|
+
const prompt = [
|
|
318
|
+
"The user is configuring website blocking. Determine the unlock mode:",
|
|
319
|
+
"- fixed_duration: unlock for a specific time period (extract durationMinutes)",
|
|
320
|
+
"- until_manual_lock: unlock until user manually re-locks",
|
|
321
|
+
"- until_callback: unlock until a specific event/task completes (extract callbackKey as a slug)",
|
|
322
|
+
"",
|
|
323
|
+
"Return a JSON object with fields: mode, durationMinutes, callbackKey.",
|
|
324
|
+
"Use mode: null if no unlock mode is detectable.",
|
|
325
|
+
"",
|
|
326
|
+
`User said: ${promptText(args.intent)}`
|
|
327
|
+
].join("\n");
|
|
328
|
+
try {
|
|
329
|
+
const result = await runWithTrajectoryContext(
|
|
330
|
+
{ purpose: "lifeops-extract-task-plan-unlock" },
|
|
331
|
+
() => args.runtime.useModel(ModelType.TEXT_SMALL, {
|
|
332
|
+
prompt
|
|
333
|
+
})
|
|
334
|
+
);
|
|
335
|
+
const raw = typeof result === "string" ? result : "";
|
|
336
|
+
const parsed = parseStructuredRecord(raw);
|
|
337
|
+
if (!parsed?.mode) return null;
|
|
338
|
+
if (!VALID_UNLOCK_MODES.has(parsed.mode)) return null;
|
|
339
|
+
return {
|
|
340
|
+
mode: parsed.mode,
|
|
341
|
+
callbackKey: typeof parsed.callbackKey === "string" ? parsed.callbackKey.trim() || void 0 : void 0,
|
|
342
|
+
durationMinutes: typeof parsed.durationMinutes === "number" && Number.isFinite(parsed.durationMinutes) && parsed.durationMinutes > 0 ? parsed.durationMinutes : void 0
|
|
343
|
+
};
|
|
344
|
+
} catch {
|
|
345
|
+
return null;
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
export {
|
|
349
|
+
buildExtractionPrompt,
|
|
350
|
+
extractReminderIntensityWithLlm,
|
|
351
|
+
extractTaskCreatePlanWithLlm,
|
|
352
|
+
extractTaskParamsWithLlm,
|
|
353
|
+
extractUnlockModeWithLlm
|
|
354
|
+
};
|
|
355
|
+
//# sourceMappingURL=extract-task-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/lib/extract-task-plan.ts"],"sourcesContent":["/**\n * LLM planning and structured extraction for LifeOps task creation.\n *\n * Performs a second LLM call (TEXT_LARGE) after operation classification\n * to decide whether the current create_definition request should:\n * 1. create or preview a LifeOps item now, or\n * 2. reply/clarify without creating anything yet.\n *\n * When creation is appropriate, the same response also extracts structured\n * fields — title, cadence, priority, time-of-day, etc. — from natural\n * language so life.ts can stay on an LLM-driven extraction path.\n */\n\nimport type { IAgentRuntime, Memory, State } from \"@elizaos/core\";\nimport {\n ModelType,\n parseJsonModelRecord,\n recentConversationTexts,\n runExtractorPipeline,\n runWithTrajectoryContext,\n} from \"@elizaos/core\";\nimport {\n LIFEOPS_REMINDER_INTENSITIES,\n type LifeOpsReminderIntensity,\n} from \"../../contracts/index.js\";\nimport { resolveContextWindow } from \"../../lifeops/defaults.js\";\nimport { normalizeExplicitTimeZoneToken } from \"../../lifeops/time/timezone.js\";\n\n// ── Types ─────────────────────────────────────────────\n\nexport interface ExtractedTaskParams {\n requestKind: \"alarm\" | \"reminder\" | null;\n title: string | null;\n description: string | null;\n cadenceKind:\n | \"once\"\n | \"daily\"\n | \"weekly\"\n | \"times_per_day\"\n | \"interval\"\n | null;\n windows: string[] | null;\n weekdays: number[] | null;\n timeOfDay: string | null;\n timeZone: string | null;\n everyMinutes: number | null;\n timesPerDay: number | null;\n priority: number | null;\n durationMinutes: number | null;\n}\n\nexport interface ExtractedTaskCreatePlan extends ExtractedTaskParams {\n mode: \"create\" | \"respond\";\n response: string | null;\n}\n\nconst VALID_CADENCE_KINDS = new Set([\n \"once\",\n \"daily\",\n \"weekly\",\n \"times_per_day\",\n \"interval\",\n]);\nconst VALID_REQUEST_KINDS = new Set([\"alarm\", \"reminder\"]);\nconst VALID_CREATE_PLAN_MODES = new Set([\"create\", \"respond\"]);\nconst ALARM_CONTEXT_RE = /\\b(alarm|wake(?:-|\\s)?up|wake me up)\\b/i;\nconst REMINDER_CONTEXT_RE =\n /\\b(remind(?: me)?|reminder|set (?:a )?reminder|create (?:a )?reminder|nudge me|ping me)\\b/i;\nconst REQUEST_KIND_VALIDATION_WINDOW = 6;\nconst DEFAULT_CREATE_PLAN_RESPONSE =\n \"Restate the reminder in one sentence with the task and timing.\";\n\nconst EMPTY_TASK_CREATE_PLAN: ExtractedTaskCreatePlan = {\n mode: \"respond\",\n response: DEFAULT_CREATE_PLAN_RESPONSE,\n requestKind: null,\n title: null,\n description: null,\n cadenceKind: null,\n windows: null,\n weekdays: null,\n timeOfDay: null,\n timeZone: null,\n everyMinutes: null,\n timesPerDay: null,\n priority: null,\n durationMinutes: null,\n};\n\nfunction promptText(value: string): string {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : \"(empty)\";\n}\n\nfunction parseStructuredRecord(raw: string): Record<string, unknown> | null {\n return parseJsonModelRecord<Record<string, unknown>>(raw);\n}\n\n// ── Prompt ────────────────────────────────────────────\n\nfunction buildExtractionPrompt(\n intent: string,\n recentConversation: string,\n): string {\n return [\n \"Plan the next step for a LifeOps create_definition request.\",\n \"Use the full current user request plus recent conversation.\",\n \"The user may speak informally, formally, code-switched, or in another language.\",\n \"Do not strip acknowledgements, fillers, or language-footer text. Interpret the whole request in context.\",\n \"Infer practical reminder windows from natural phrases when needed: wake up or before work -> morning, lunch or after lunch -> afternoon, after work or dinner -> evening, before bed or before sleep -> night.\",\n \"Return ONLY a JSON object with these fields (use null for unknown):\",\n \"\",\n '- mode: \"create\" when the request is specific enough to create or preview a LifeOps item now, \"respond\" when you should reply without creating anything yet',\n ' Choose mode=\"create\" whenever the user gives a title and cadence, even if they say \"preview the plan\", \"don\\'t save yet\", \"just show it first\", or similar — the handler (not you) controls whether it is saved or previewed. Only use mode=\"respond\" when the user hasn\\'t specified what to track or when.',\n \"- response: short natural-language reply when mode is respond, otherwise null\",\n '- requestKind: \"alarm\" when this is explicitly an alarm/wake-up request, \"reminder\" when it is explicitly a reminder request, otherwise null',\n \"- title: short name for the task (2-5 words)\",\n \"- description: brief description if the user provided context\",\n '- cadenceKind: one of \"once\", \"daily\", \"weekly\", \"times_per_day\", \"interval\"',\n ' - \"once\" — a specific dated and/or timed event that happens a single time (e.g. \"april 17 at 8pm\", \"tomorrow at 9\", \"set an alarm for 7am\")',\n ' - \"daily\" — happens every day, typically with one time or window (e.g. \"every morning\", \"every night\")',\n ' - \"weekly\" — happens on specific weekdays (e.g. \"every Sunday\", \"Mon/Wed/Fri\")',\n ' - \"times_per_day\" — happens multiple times on the SAME recurring day, with multiple times or windows (e.g. \"morning and night\", \"three times a day\")',\n ' - \"interval\" — happens every N minutes/hours (e.g. \"every 2 hours\")',\n ' If the request names a specific calendar date OR a specific wall-clock time without a recurrence word, pick \"once\".',\n \"- windows: list of time windows like [morning, night, afternoon, evening]\",\n \"- weekdays: list of weekday numbers (0=Sun, 1=Mon, ..., 6=Sat) for weekly tasks\",\n '- timeOfDay: specific time in HH:MM 24h format like \"15:00\" or \"08:30\" if mentioned',\n '- timeZone: IANA timezone like \"America/Denver\" when the user explicitly gives one',\n '- everyMinutes: interval in minutes for recurring tasks (e.g., 120 for \"every 2 hours\")',\n '- timesPerDay: number of times per day if mentioned (e.g., 4 for \"four times a day\")',\n \"- priority: 1-5 (1=critical, 2=high, 3=medium, 4-5=low) based on urgency/importance language\",\n \"- durationMinutes: how long the activity takes if mentioned\",\n \"\",\n 'Example create: {\"mode\":\"create\",\"response\":null,\"requestKind\":\"reminder\",\"title\":\"Brush teeth\",\"description\":null,\"cadenceKind\":\"daily\",\"windows\":[\"morning\",\"night\"],\"weekdays\":null,\"timeOfDay\":null,\"timeZone\":null,\"everyMinutes\":null,\"timesPerDay\":null,\"priority\":null,\"durationMinutes\":null}',\n 'Example respond: {\"mode\":\"respond\",\"response\":\"What do you want the todo to be, and when should it happen?\",\"requestKind\":null,\"title\":null,\"description\":null,\"cadenceKind\":null,\"windows\":null,\"weekdays\":null,\"timeOfDay\":null,\"timeZone\":null,\"everyMinutes\":null,\"timesPerDay\":null,\"priority\":null,\"durationMinutes\":null}',\n \"\",\n \"Use recent conversation only to resolve short follow-ups. Do not emit requestKind='alarm' or requestKind='reminder' unless the current request or recent conversation explicitly supports it.\",\n \"If the user has not actually specified the todo/habit yet, choose mode='respond' and ask a concise clarifying question instead of inventing a task.\",\n \"\",\n \"Return ONLY valid JSON. No prose, markdown, code fences, or any other format.\",\n \"\",\n `User request: ${promptText(intent)}`,\n \"Recent conversation:\",\n promptText(recentConversation),\n ].join(\"\\n\");\n}\n\n// ── Validators ────────────────────────────────────────\n\nfunction validateTitle(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction validateRequestKind(\n value: unknown,\n): ExtractedTaskParams[\"requestKind\"] {\n if (typeof value !== \"string\") return null;\n const normalized = value.trim().toLowerCase();\n return VALID_REQUEST_KINDS.has(normalized)\n ? (normalized as ExtractedTaskParams[\"requestKind\"])\n : null;\n}\n\nfunction validateCreatePlanMode(\n value: unknown,\n): ExtractedTaskCreatePlan[\"mode\"] | null {\n if (typeof value !== \"string\") return null;\n const normalized = value.trim().toLowerCase();\n return VALID_CREATE_PLAN_MODES.has(normalized)\n ? (normalized as ExtractedTaskCreatePlan[\"mode\"])\n : null;\n}\n\nfunction validateResponse(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction validateCadenceKind(\n value: unknown,\n): ExtractedTaskParams[\"cadenceKind\"] {\n if (typeof value !== \"string\") return null;\n return VALID_CADENCE_KINDS.has(value)\n ? (value as ExtractedTaskParams[\"cadenceKind\"])\n : null;\n}\n\nfunction validateWindows(value: unknown): string[] | null {\n if (!Array.isArray(value)) return null;\n const filtered = value.filter(\n (w: unknown) => typeof w === \"string\" && w.trim().length > 0,\n );\n return filtered.length > 0 ? filtered : null;\n}\n\nfunction validateWeekdays(value: unknown): number[] | null {\n if (!Array.isArray(value)) return null;\n const filtered = value.filter(\n (d: unknown) =>\n typeof d === \"number\" && Number.isInteger(d) && d >= 0 && d <= 6,\n );\n return filtered.length > 0 ? filtered : null;\n}\n\nfunction validateTimeOfDay(value: unknown): string | null {\n if (typeof value !== \"string\") return null;\n const trimmed = value.trim();\n // Accept HH:MM format\n if (/^\\d{1,2}:\\d{2}$/.test(trimmed)) return trimmed;\n return null;\n}\n\nfunction validateTimeZone(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n return normalizeExplicitTimeZoneToken(value);\n}\n\nfunction validatePositiveNumber(value: unknown): number | null {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n return null;\n }\n return value;\n}\n\nfunction validatePriority(value: unknown): number | null {\n if (typeof value !== \"number\" || !Number.isFinite(value)) return null;\n return Math.max(1, Math.min(5, Math.round(value)));\n}\n\nfunction validateRequestKindAgainstContext(\n value: ExtractedTaskParams[\"requestKind\"],\n currentText: string,\n recentWindow: string[],\n): ExtractedTaskParams[\"requestKind\"] {\n if (!value) {\n return null;\n }\n const texts = [currentText, ...recentWindow];\n const pattern = value === \"alarm\" ? ALARM_CONTEXT_RE : REMINDER_CONTEXT_RE;\n return texts.some((text) => pattern.test(text)) ? value : null;\n}\n\nfunction buildTaskCreatePlan(args: {\n parsed: Record<string, unknown>;\n intent: string;\n recentWindow: string[];\n}): ExtractedTaskCreatePlan | null {\n const { parsed, intent, recentWindow } = args;\n const mode = validateCreatePlanMode(parsed.mode);\n if (!mode) {\n return null;\n }\n return {\n mode,\n response:\n mode === \"respond\"\n ? (validateResponse(parsed.response) ?? DEFAULT_CREATE_PLAN_RESPONSE)\n : null,\n requestKind: validateRequestKindAgainstContext(\n validateRequestKind(parsed.requestKind),\n intent,\n recentWindow.slice(-REQUEST_KIND_VALIDATION_WINDOW),\n ),\n title: validateTitle(parsed.title),\n description: validateTitle(parsed.description),\n cadenceKind: validateCadenceKind(parsed.cadenceKind),\n windows: validateWindows(parsed.windows),\n weekdays: validateWeekdays(parsed.weekdays),\n timeOfDay: validateTimeOfDay(parsed.timeOfDay),\n timeZone: validateTimeZone(parsed.timeZone),\n everyMinutes: validatePositiveNumber(parsed.everyMinutes),\n timesPerDay: validatePositiveNumber(parsed.timesPerDay),\n priority: validatePriority(parsed.priority),\n durationMinutes: validatePositiveNumber(parsed.durationMinutes),\n };\n}\n\nfunction buildRepairPrompt(args: {\n intent: string;\n recentConversation: string;\n rawResponse: string;\n}): string {\n return [\n \"Your last reply for the LifeOps create-definition planner was invalid.\",\n \"Return ONLY valid JSON with these exact fields:\",\n \"mode, response, requestKind, title, description, cadenceKind, windows, weekdays, timeOfDay, timeZone, everyMinutes, timesPerDay, priority, durationMinutes\",\n \"\",\n 'mode must be \"create\" or \"respond\".',\n \"If mode is respond, include a short clarifying response.\",\n \"If mode is create, response must be null.\",\n \"\",\n `User request: ${promptText(args.intent)}`,\n \"Recent conversation:\",\n promptText(args.recentConversation),\n \"Previous invalid output:\",\n promptText(args.rawResponse),\n ].join(\"\\n\");\n}\n\nfunction buildExtractionFailurePlan(): ExtractedTaskCreatePlan {\n return {\n ...EMPTY_TASK_CREATE_PLAN,\n };\n}\n\n// ── Extractor ─────────────────────────────────────────\n\n/**\n * Call the LLM to plan whether a create_definition request should create\n * a task draft now or reply first, while also extracting structured\n * task parameters for the create path.\n */\nexport async function extractTaskCreatePlanWithLlm(args: {\n runtime: IAgentRuntime;\n intent: string;\n state: State | undefined;\n message?: Memory;\n}): Promise<ExtractedTaskCreatePlan> {\n const { runtime, intent } = args;\n\n if (!intent || intent.trim().length === 0) {\n return buildExtractionFailurePlan();\n }\n\n const recentWindow = await recentConversationTexts({\n runtime,\n message: args.message,\n state: args.state,\n limit: Math.max(resolveContextWindow(), REQUEST_KIND_VALIDATION_WINDOW),\n });\n const recentConversation = recentWindow\n .slice(-resolveContextWindow())\n .join(\"\\n\");\n const prompt = buildExtractionPrompt(intent, recentConversation);\n\n const { parsed } = await runExtractorPipeline({\n runtime,\n prompt,\n parser: (raw) => {\n const parsedObject = parseStructuredRecord(raw);\n return parsedObject\n ? buildTaskCreatePlan({\n parsed: parsedObject,\n intent,\n recentWindow,\n })\n : null;\n },\n buildRepairPrompt: (rawFirstPass) =>\n buildRepairPrompt({\n intent,\n recentConversation,\n rawResponse: rawFirstPass,\n }),\n });\n\n return parsed ?? buildExtractionFailurePlan();\n}\n\nexport async function extractTaskParamsWithLlm(args: {\n runtime: IAgentRuntime;\n intent: string;\n state: State | undefined;\n message?: Memory;\n}): Promise<ExtractedTaskParams> {\n const plan = await extractTaskCreatePlanWithLlm(args);\n const { mode: _mode, response: _response, ...params } = plan;\n return params;\n}\n\n// ── Reminder intensity extractor ─────────────────────\n\nconst VALID_REMINDER_INTENSITIES: ReadonlySet<LifeOpsReminderIntensity> =\n new Set(LIFEOPS_REMINDER_INTENSITIES);\n\nfunction isLifeOpsReminderIntensity(\n value: string,\n): value is LifeOpsReminderIntensity {\n return VALID_REMINDER_INTENSITIES.has(value as LifeOpsReminderIntensity);\n}\n\nexport interface ExtractedReminderIntensityPlan {\n intensity:\n | \"minimal\"\n | \"normal\"\n | \"persistent\"\n | \"high_priority_only\"\n | \"unknown\";\n}\n\nconst EMPTY_REMINDER_INTENSITY_PLAN: ExtractedReminderIntensityPlan = {\n intensity: \"unknown\",\n};\n\nfunction parseReminderIntensityPlan(\n raw: string,\n): ExtractedReminderIntensityPlan | null {\n const normalized = raw.trim().toLowerCase();\n if (isLifeOpsReminderIntensity(normalized)) {\n return {\n intensity: normalized,\n };\n }\n\n const parsed = parseStructuredRecord(raw);\n if (!parsed || typeof parsed.intensity !== \"string\") {\n return null;\n }\n const parsedIntensity = parsed.intensity.trim().toLowerCase();\n if (!isLifeOpsReminderIntensity(parsedIntensity)) {\n return null;\n }\n return {\n intensity: parsedIntensity,\n };\n}\n\nfunction buildReminderIntensityRepairPrompt(args: {\n intent: string;\n rawResponse: string;\n}): string {\n return [\n \"Your last reply for the LifeOps reminder-intensity extractor was invalid.\",\n 'Return ONLY valid JSON like {\"intensity\":\"minimal\"}.',\n 'Allowed intensity values: \"minimal\", \"normal\", \"persistent\", \"high_priority_only\".',\n \"\",\n `User said: ${promptText(args.intent)}`,\n \"Previous invalid output:\",\n promptText(args.rawResponse),\n ].join(\"\\n\");\n}\n\n/**\n * Ask a small text model to classify the user's intent into a reminder\n * intensity value. Returns an explicit \"unknown\" result when the model is\n * unavailable or the response is invalid so callers do not need regex\n * fallbacks.\n */\nexport async function extractReminderIntensityWithLlm(args: {\n runtime: IAgentRuntime;\n intent: string;\n}): Promise<ExtractedReminderIntensityPlan> {\n const prompt = [\n \"The user is requesting a change to their reminder frequency.\",\n \"Classify into exactly one of these values:\",\n \"- minimal: user wants fewer/less reminders\",\n \"- normal: user wants default/standard reminders\",\n \"- persistent: user wants more/frequent reminders\",\n \"- high_priority_only: user wants to pause or mute most reminders\",\n \"\",\n 'Return ONLY valid JSON like {\"intensity\":\"minimal\"}.',\n \"No prose, markdown, code fences, or any other format.\",\n \"\",\n `User said: ${promptText(args.intent)}`,\n ].join(\"\\n\");\n\n const { parsed } = await runExtractorPipeline({\n runtime: args.runtime,\n prompt,\n modelType: ModelType.TEXT_SMALL,\n parser: parseReminderIntensityPlan,\n buildRepairPrompt: (rawFirstPass) =>\n buildReminderIntensityRepairPrompt({\n intent: args.intent,\n rawResponse: rawFirstPass,\n }),\n });\n\n return parsed ?? { ...EMPTY_REMINDER_INTENSITY_PLAN };\n}\n\n// ── Website unlock mode extractor ────────────────────\n\n/** Valid unlock modes (mirrors shared/contracts/lifeops). */\nconst VALID_UNLOCK_MODES = new Set([\n \"fixed_duration\",\n \"until_manual_lock\",\n \"until_callback\",\n]);\n\nexport interface ExtractedUnlockMode {\n mode: \"fixed_duration\" | \"until_manual_lock\" | \"until_callback\";\n callbackKey?: string;\n durationMinutes?: number;\n}\n\n/**\n * Ask a small text model to determine the website unlock mode from the\n * user's intent. Returns null when the model is unavailable, throws, or\n * returns an invalid value — callers should fall back to regex.\n */\nexport async function extractUnlockModeWithLlm(args: {\n runtime: IAgentRuntime;\n intent: string;\n}): Promise<ExtractedUnlockMode | null> {\n if (typeof args.runtime.useModel !== \"function\") return null;\n\n const prompt = [\n \"The user is configuring website blocking. Determine the unlock mode:\",\n \"- fixed_duration: unlock for a specific time period (extract durationMinutes)\",\n \"- until_manual_lock: unlock until user manually re-locks\",\n \"- until_callback: unlock until a specific event/task completes (extract callbackKey as a slug)\",\n \"\",\n \"Return a JSON object with fields: mode, durationMinutes, callbackKey.\",\n \"Use mode: null if no unlock mode is detectable.\",\n \"\",\n `User said: ${promptText(args.intent)}`,\n ].join(\"\\n\");\n\n try {\n const result = await runWithTrajectoryContext(\n { purpose: \"lifeops-extract-task-plan-unlock\" },\n () =>\n args.runtime.useModel(ModelType.TEXT_SMALL, {\n prompt,\n }),\n );\n const raw = typeof result === \"string\" ? result : \"\";\n const parsed = parseStructuredRecord(raw);\n if (!parsed?.mode) return null;\n if (!VALID_UNLOCK_MODES.has(parsed.mode as string)) return null;\n return {\n mode: parsed.mode as ExtractedUnlockMode[\"mode\"],\n callbackKey:\n typeof parsed.callbackKey === \"string\"\n ? parsed.callbackKey.trim() || undefined\n : undefined,\n durationMinutes:\n typeof parsed.durationMinutes === \"number\" &&\n Number.isFinite(parsed.durationMinutes) &&\n parsed.durationMinutes > 0\n ? parsed.durationMinutes\n : undefined,\n };\n } catch {\n return null;\n }\n}\n\n// Re-export for tests\nexport { buildExtractionPrompt };\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
export interface ExtractedUpdateFields {
|
|
3
|
+
title: string | null;
|
|
4
|
+
cadenceKind: string | null;
|
|
5
|
+
windows: string[] | null;
|
|
6
|
+
weekdays: number[] | null;
|
|
7
|
+
timeOfDay: string | null;
|
|
8
|
+
everyMinutes: number | null;
|
|
9
|
+
priority: number | null;
|
|
10
|
+
description: string | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* When the LLM caller passes an update_definition intent without pre-parsed
|
|
14
|
+
* structured fields (e.g. "change my workout to 6am"), this function asks
|
|
15
|
+
* a large text model to extract which fields the user actually wants to change.
|
|
16
|
+
*
|
|
17
|
+
* Returns an explicit empty update object when the model is unavailable or the
|
|
18
|
+
* response is unparseable, so callers do not need heuristic fallbacks.
|
|
19
|
+
*/
|
|
20
|
+
export declare function extractUpdateFieldsWithLlm(args: {
|
|
21
|
+
runtime: IAgentRuntime;
|
|
22
|
+
intent: string;
|
|
23
|
+
currentTitle: string;
|
|
24
|
+
currentCadenceKind: string;
|
|
25
|
+
currentWindows: string[];
|
|
26
|
+
}): Promise<ExtractedUpdateFields>;
|
|
27
|
+
//# sourceMappingURL=extract-update-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract-update-fields.d.ts","sourceRoot":"","sources":["../../../src/actions/lib/extract-update-fields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAWnD,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAkKD;;;;;;;GAOG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE;IACrD,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CA+CjC"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { parseJsonModelRecord, runExtractorPipeline } from "@elizaos/core";
|
|
2
|
+
const VALID_CADENCE_KINDS = /* @__PURE__ */ new Set([
|
|
3
|
+
"once",
|
|
4
|
+
"daily",
|
|
5
|
+
"weekly",
|
|
6
|
+
"times_per_day",
|
|
7
|
+
"interval"
|
|
8
|
+
]);
|
|
9
|
+
const EMPTY_UPDATE_FIELDS = {
|
|
10
|
+
title: null,
|
|
11
|
+
cadenceKind: null,
|
|
12
|
+
windows: null,
|
|
13
|
+
weekdays: null,
|
|
14
|
+
timeOfDay: null,
|
|
15
|
+
everyMinutes: null,
|
|
16
|
+
priority: null,
|
|
17
|
+
description: null
|
|
18
|
+
};
|
|
19
|
+
function promptText(value) {
|
|
20
|
+
const trimmed = value.trim();
|
|
21
|
+
return trimmed.length > 0 ? trimmed : "(empty)";
|
|
22
|
+
}
|
|
23
|
+
function parseStructuredRecord(raw) {
|
|
24
|
+
return parseJsonModelRecord(raw);
|
|
25
|
+
}
|
|
26
|
+
function parseTimeOfDay(value) {
|
|
27
|
+
const normalized = value.trim().toLowerCase();
|
|
28
|
+
const hhmmMatch = normalized.match(/\b(\d{1,2}):(\d{2})\b/);
|
|
29
|
+
if (hhmmMatch) {
|
|
30
|
+
const hour2 = Number(hhmmMatch[1]);
|
|
31
|
+
const minute2 = Number(hhmmMatch[2]);
|
|
32
|
+
if (Number.isFinite(hour2) && Number.isFinite(minute2) && hour2 >= 0 && hour2 <= 23 && minute2 >= 0 && minute2 < 60) {
|
|
33
|
+
return `${String(hour2).padStart(2, "0")}:${String(minute2).padStart(2, "0")}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const clockMatch = normalized.match(
|
|
37
|
+
/\b(\d{1,2})(?::(\d{2}))?\s*(am|pm)\b|\b(noon|midnight)\b/
|
|
38
|
+
);
|
|
39
|
+
if (!clockMatch) {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
if (clockMatch[4] === "noon") {
|
|
43
|
+
return "12:00";
|
|
44
|
+
}
|
|
45
|
+
if (clockMatch[4] === "midnight") {
|
|
46
|
+
return "00:00";
|
|
47
|
+
}
|
|
48
|
+
const rawHour = Number(clockMatch[1]);
|
|
49
|
+
const minute = Number(clockMatch[2] ?? "0");
|
|
50
|
+
const meridiem = clockMatch[3];
|
|
51
|
+
const hour = meridiem === "am" ? rawHour % 12 : rawHour % 12 === 0 ? 12 : rawHour % 12 + 12;
|
|
52
|
+
return `${String(hour).padStart(2, "0")}:${String(minute).padStart(2, "0")}`;
|
|
53
|
+
}
|
|
54
|
+
function validateTitle(value) {
|
|
55
|
+
if (typeof value !== "string") {
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
const trimmed = value.trim();
|
|
59
|
+
return trimmed.length > 0 ? trimmed : null;
|
|
60
|
+
}
|
|
61
|
+
function validateCadenceKind(value) {
|
|
62
|
+
if (typeof value !== "string") {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const normalized = value.trim().toLowerCase();
|
|
66
|
+
return VALID_CADENCE_KINDS.has(normalized) ? normalized : null;
|
|
67
|
+
}
|
|
68
|
+
function validateWindows(value) {
|
|
69
|
+
if (!Array.isArray(value)) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
const normalized = value.filter((item) => typeof item === "string").map((item) => item.trim()).filter((item) => item.length > 0);
|
|
73
|
+
return normalized.length > 0 ? normalized : null;
|
|
74
|
+
}
|
|
75
|
+
function validateWeekdays(value) {
|
|
76
|
+
if (!Array.isArray(value)) {
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
const normalized = value.filter(
|
|
80
|
+
(item) => typeof item === "number" && Number.isInteger(item) && item >= 0 && item <= 6
|
|
81
|
+
);
|
|
82
|
+
return normalized.length > 0 ? normalized : null;
|
|
83
|
+
}
|
|
84
|
+
function validatePositiveNumber(value) {
|
|
85
|
+
if (typeof value !== "number" || !Number.isFinite(value) || value <= 0) {
|
|
86
|
+
return null;
|
|
87
|
+
}
|
|
88
|
+
return value;
|
|
89
|
+
}
|
|
90
|
+
function validatePriority(value) {
|
|
91
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
return Math.max(1, Math.min(5, Math.round(value)));
|
|
95
|
+
}
|
|
96
|
+
function buildUpdateFields(parsed) {
|
|
97
|
+
return {
|
|
98
|
+
title: validateTitle(parsed.title),
|
|
99
|
+
cadenceKind: validateCadenceKind(parsed.cadenceKind),
|
|
100
|
+
windows: validateWindows(parsed.windows),
|
|
101
|
+
weekdays: validateWeekdays(parsed.weekdays),
|
|
102
|
+
timeOfDay: typeof parsed.timeOfDay === "string" ? parseTimeOfDay(parsed.timeOfDay) : null,
|
|
103
|
+
everyMinutes: validatePositiveNumber(parsed.everyMinutes),
|
|
104
|
+
priority: validatePriority(parsed.priority),
|
|
105
|
+
description: validateTitle(parsed.description)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
function buildRepairPrompt(args) {
|
|
109
|
+
return [
|
|
110
|
+
"Your last reply for the LifeOps update extractor was invalid.",
|
|
111
|
+
"Return ONLY a valid JSON object with exactly these fields:",
|
|
112
|
+
"title, cadenceKind, windows, weekdays, timeOfDay, everyMinutes, priority, description",
|
|
113
|
+
"",
|
|
114
|
+
"Use null for any field the user did not ask to change.",
|
|
115
|
+
"cadenceKind must be one of: once, daily, weekly, times_per_day, interval.",
|
|
116
|
+
'timeOfDay must be HH:MM 24h format like "06:00" when present.',
|
|
117
|
+
"",
|
|
118
|
+
`Current task: ${promptText(args.currentTitle)}`,
|
|
119
|
+
`Current cadence kind: ${promptText(args.currentCadenceKind)}`,
|
|
120
|
+
`Current windows: [${args.currentWindows.join(", ")}]`,
|
|
121
|
+
`User request: ${promptText(args.intent)}`,
|
|
122
|
+
"Previous invalid output:",
|
|
123
|
+
promptText(args.rawResponse)
|
|
124
|
+
].join("\n");
|
|
125
|
+
}
|
|
126
|
+
async function extractUpdateFieldsWithLlm(args) {
|
|
127
|
+
const { runtime, intent, currentTitle, currentCadenceKind, currentWindows } = args;
|
|
128
|
+
const prompt = [
|
|
129
|
+
"The user wants to update an existing task/habit. Extract ONLY the fields they want to change.",
|
|
130
|
+
"Return null for fields the user did NOT mention changing.",
|
|
131
|
+
"",
|
|
132
|
+
`Current task: "${currentTitle}"`,
|
|
133
|
+
`Current schedule: ${currentCadenceKind}, windows: [${currentWindows.join(", ")}]`,
|
|
134
|
+
"",
|
|
135
|
+
"Return a JSON object with these fields (null = no change requested):",
|
|
136
|
+
"- title: new name if user wants to rename",
|
|
137
|
+
"- cadenceKind: new schedule type if changing (once/daily/weekly/times_per_day/interval)",
|
|
138
|
+
"- windows: new time windows if changing (morning/afternoon/evening/night)",
|
|
139
|
+
"- weekdays: new weekday numbers if changing (0=Sun..6=Sat)",
|
|
140
|
+
'- timeOfDay: new specific time like "06:00" if changing time',
|
|
141
|
+
"- everyMinutes: new interval if changing",
|
|
142
|
+
"- priority: new priority 1-5 if changing",
|
|
143
|
+
"- description: new description if changing",
|
|
144
|
+
"",
|
|
145
|
+
'Example time change: {"title":null,"cadenceKind":null,"windows":null,"weekdays":null,"timeOfDay":"06:00","everyMinutes":null,"priority":null,"description":null}',
|
|
146
|
+
'Example rename: {"title":"Morning run","cadenceKind":null,"windows":null,"weekdays":null,"timeOfDay":null,"everyMinutes":null,"priority":null,"description":null}',
|
|
147
|
+
"",
|
|
148
|
+
"Return ONLY valid JSON. No prose, markdown, code fences, or any other format.",
|
|
149
|
+
"",
|
|
150
|
+
`User request: ${promptText(intent)}`
|
|
151
|
+
].join("\n");
|
|
152
|
+
const { parsed } = await runExtractorPipeline({
|
|
153
|
+
runtime,
|
|
154
|
+
prompt,
|
|
155
|
+
parser: (raw) => {
|
|
156
|
+
const parsedObject = parseStructuredRecord(raw);
|
|
157
|
+
return parsedObject ? buildUpdateFields(parsedObject) : null;
|
|
158
|
+
},
|
|
159
|
+
buildRepairPrompt: (rawFirstPass) => buildRepairPrompt({
|
|
160
|
+
intent,
|
|
161
|
+
currentTitle,
|
|
162
|
+
currentCadenceKind,
|
|
163
|
+
currentWindows,
|
|
164
|
+
rawResponse: rawFirstPass
|
|
165
|
+
})
|
|
166
|
+
});
|
|
167
|
+
return parsed ?? { ...EMPTY_UPDATE_FIELDS };
|
|
168
|
+
}
|
|
169
|
+
export {
|
|
170
|
+
extractUpdateFieldsWithLlm
|
|
171
|
+
};
|
|
172
|
+
//# sourceMappingURL=extract-update-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/lib/extract-update-fields.ts"],"sourcesContent":["import type { IAgentRuntime } from \"@elizaos/core\";\nimport { parseJsonModelRecord, runExtractorPipeline } from \"@elizaos/core\";\n\nconst VALID_CADENCE_KINDS = new Set([\n \"once\",\n \"daily\",\n \"weekly\",\n \"times_per_day\",\n \"interval\",\n]);\n\nexport interface ExtractedUpdateFields {\n title: string | null;\n cadenceKind: string | null;\n windows: string[] | null;\n weekdays: number[] | null;\n timeOfDay: string | null;\n everyMinutes: number | null;\n priority: number | null;\n description: string | null;\n}\n\nconst EMPTY_UPDATE_FIELDS: ExtractedUpdateFields = {\n title: null,\n cadenceKind: null,\n windows: null,\n weekdays: null,\n timeOfDay: null,\n everyMinutes: null,\n priority: null,\n description: null,\n};\n\nfunction promptText(value: string): string {\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : \"(empty)\";\n}\n\nfunction parseStructuredRecord(raw: string): Record<string, unknown> | null {\n return parseJsonModelRecord<Record<string, unknown>>(raw);\n}\n\nfunction parseTimeOfDay(value: string): string | null {\n const normalized = value.trim().toLowerCase();\n const hhmmMatch = normalized.match(/\\b(\\d{1,2}):(\\d{2})\\b/);\n if (hhmmMatch) {\n const hour = Number(hhmmMatch[1]);\n const minute = Number(hhmmMatch[2]);\n if (\n Number.isFinite(hour) &&\n Number.isFinite(minute) &&\n hour >= 0 &&\n hour <= 23 &&\n minute >= 0 &&\n minute < 60\n ) {\n return `${String(hour).padStart(2, \"0\")}:${String(minute).padStart(2, \"0\")}`;\n }\n }\n\n const clockMatch = normalized.match(\n /\\b(\\d{1,2})(?::(\\d{2}))?\\s*(am|pm)\\b|\\b(noon|midnight)\\b/,\n );\n if (!clockMatch) {\n return null;\n }\n if (clockMatch[4] === \"noon\") {\n return \"12:00\";\n }\n if (clockMatch[4] === \"midnight\") {\n return \"00:00\";\n }\n const rawHour = Number(clockMatch[1]);\n const minute = Number(clockMatch[2] ?? \"0\");\n const meridiem = clockMatch[3];\n const hour =\n meridiem === \"am\"\n ? rawHour % 12\n : rawHour % 12 === 0\n ? 12\n : (rawHour % 12) + 12;\n return `${String(hour).padStart(2, \"0\")}:${String(minute).padStart(2, \"0\")}`;\n}\n\nfunction validateTitle(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const trimmed = value.trim();\n return trimmed.length > 0 ? trimmed : null;\n}\n\nfunction validateCadenceKind(value: unknown): string | null {\n if (typeof value !== \"string\") {\n return null;\n }\n const normalized = value.trim().toLowerCase();\n return VALID_CADENCE_KINDS.has(normalized) ? normalized : null;\n}\n\nfunction validateWindows(value: unknown): string[] | null {\n if (!Array.isArray(value)) {\n return null;\n }\n const normalized = value\n .filter((item: unknown) => typeof item === \"string\")\n .map((item) => item.trim())\n .filter((item) => item.length > 0);\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction validateWeekdays(value: unknown): number[] | null {\n if (!Array.isArray(value)) {\n return null;\n }\n const normalized = value.filter(\n (item: unknown) =>\n typeof item === \"number\" &&\n Number.isInteger(item) &&\n item >= 0 &&\n item <= 6,\n );\n return normalized.length > 0 ? normalized : null;\n}\n\nfunction validatePositiveNumber(value: unknown): number | null {\n if (typeof value !== \"number\" || !Number.isFinite(value) || value <= 0) {\n return null;\n }\n return value;\n}\n\nfunction validatePriority(value: unknown): number | null {\n if (typeof value !== \"number\" || !Number.isFinite(value)) {\n return null;\n }\n return Math.max(1, Math.min(5, Math.round(value)));\n}\n\nfunction buildUpdateFields(\n parsed: Record<string, unknown>,\n): ExtractedUpdateFields {\n return {\n title: validateTitle(parsed.title),\n cadenceKind: validateCadenceKind(parsed.cadenceKind),\n windows: validateWindows(parsed.windows),\n weekdays: validateWeekdays(parsed.weekdays),\n timeOfDay:\n typeof parsed.timeOfDay === \"string\"\n ? parseTimeOfDay(parsed.timeOfDay)\n : null,\n everyMinutes: validatePositiveNumber(parsed.everyMinutes),\n priority: validatePriority(parsed.priority),\n description: validateTitle(parsed.description),\n };\n}\n\nfunction buildRepairPrompt(args: {\n intent: string;\n currentTitle: string;\n currentCadenceKind: string;\n currentWindows: string[];\n rawResponse: string;\n}): string {\n return [\n \"Your last reply for the LifeOps update extractor was invalid.\",\n \"Return ONLY a valid JSON object with exactly these fields:\",\n \"title, cadenceKind, windows, weekdays, timeOfDay, everyMinutes, priority, description\",\n \"\",\n \"Use null for any field the user did not ask to change.\",\n \"cadenceKind must be one of: once, daily, weekly, times_per_day, interval.\",\n 'timeOfDay must be HH:MM 24h format like \"06:00\" when present.',\n \"\",\n `Current task: ${promptText(args.currentTitle)}`,\n `Current cadence kind: ${promptText(args.currentCadenceKind)}`,\n `Current windows: [${args.currentWindows.join(\", \")}]`,\n `User request: ${promptText(args.intent)}`,\n \"Previous invalid output:\",\n promptText(args.rawResponse),\n ].join(\"\\n\");\n}\n\n/**\n * When the LLM caller passes an update_definition intent without pre-parsed\n * structured fields (e.g. \"change my workout to 6am\"), this function asks\n * a large text model to extract which fields the user actually wants to change.\n *\n * Returns an explicit empty update object when the model is unavailable or the\n * response is unparseable, so callers do not need heuristic fallbacks.\n */\nexport async function extractUpdateFieldsWithLlm(args: {\n runtime: IAgentRuntime;\n intent: string;\n currentTitle: string;\n currentCadenceKind: string;\n currentWindows: string[];\n}): Promise<ExtractedUpdateFields> {\n const { runtime, intent, currentTitle, currentCadenceKind, currentWindows } =\n args;\n\n const prompt = [\n \"The user wants to update an existing task/habit. Extract ONLY the fields they want to change.\",\n \"Return null for fields the user did NOT mention changing.\",\n \"\",\n `Current task: \"${currentTitle}\"`,\n `Current schedule: ${currentCadenceKind}, windows: [${currentWindows.join(\", \")}]`,\n \"\",\n \"Return a JSON object with these fields (null = no change requested):\",\n \"- title: new name if user wants to rename\",\n \"- cadenceKind: new schedule type if changing (once/daily/weekly/times_per_day/interval)\",\n \"- windows: new time windows if changing (morning/afternoon/evening/night)\",\n \"- weekdays: new weekday numbers if changing (0=Sun..6=Sat)\",\n '- timeOfDay: new specific time like \"06:00\" if changing time',\n \"- everyMinutes: new interval if changing\",\n \"- priority: new priority 1-5 if changing\",\n \"- description: new description if changing\",\n \"\",\n 'Example time change: {\"title\":null,\"cadenceKind\":null,\"windows\":null,\"weekdays\":null,\"timeOfDay\":\"06:00\",\"everyMinutes\":null,\"priority\":null,\"description\":null}',\n 'Example rename: {\"title\":\"Morning run\",\"cadenceKind\":null,\"windows\":null,\"weekdays\":null,\"timeOfDay\":null,\"everyMinutes\":null,\"priority\":null,\"description\":null}',\n \"\",\n \"Return ONLY valid JSON. No prose, markdown, code fences, or any other format.\",\n \"\",\n `User request: ${promptText(intent)}`,\n ].join(\"\\n\");\n\n const { parsed } = await runExtractorPipeline({\n runtime,\n prompt,\n parser: (raw) => {\n const parsedObject = parseStructuredRecord(raw);\n return parsedObject ? buildUpdateFields(parsedObject) : null;\n },\n buildRepairPrompt: (rawFirstPass) =>\n buildRepairPrompt({\n intent,\n currentTitle,\n currentCadenceKind,\n currentWindows,\n rawResponse: rawFirstPass,\n }),\n });\n\n return parsed ?? { ...EMPTY_UPDATE_FIELDS };\n}\n"],"mappings":"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","names":["hour","minute"]}
|