@elizaos/plugin-personal-assistant 2.0.3-beta.5 → 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,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default escalation ladders. The runner injects one of these ladders when a
|
|
3
|
+
* `ScheduledTask` lacks an explicit `escalation` block, keyed off the task's
|
|
4
|
+
* `priority`:
|
|
5
|
+
* - `priority_low_default` — single attempt, no ladder.
|
|
6
|
+
* - `priority_medium_default` — 1 retry after 30 min.
|
|
7
|
+
* - `priority_high_default` — 3 steps across channels (in_app → push → imessage).
|
|
8
|
+
*
|
|
9
|
+
* Channel keys (`in_app`, `push`, `imessage`) reference
|
|
10
|
+
* {@link import("./channels/contract.js").ChannelContribution.kind}; the
|
|
11
|
+
* channel registry is responsible for resolving them at dispatch time.
|
|
12
|
+
*/
|
|
13
|
+
export type EscalationIntensity = "soft" | "normal" | "urgent";
|
|
14
|
+
export interface EscalationStep {
|
|
15
|
+
delayMinutes: number;
|
|
16
|
+
channelKey: string;
|
|
17
|
+
intensity?: EscalationIntensity;
|
|
18
|
+
}
|
|
19
|
+
export interface EscalationLadder {
|
|
20
|
+
steps: EscalationStep[];
|
|
21
|
+
}
|
|
22
|
+
export declare const DEFAULT_ESCALATION_LADDERS: Readonly<{
|
|
23
|
+
priority_low_default: EscalationLadder;
|
|
24
|
+
priority_medium_default: EscalationLadder;
|
|
25
|
+
priority_high_default: EscalationLadder;
|
|
26
|
+
}>;
|
|
27
|
+
export type DefaultEscalationLadderKey = keyof typeof DEFAULT_ESCALATION_LADDERS;
|
|
28
|
+
//# sourceMappingURL=escalation-ladders.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"escalation-ladders.d.ts","sourceRoot":"","sources":["../../src/lifeops/escalation-ladders.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,mBAAmB,CAAC;CACjC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC;IAChD,oBAAoB,EAAE,gBAAgB,CAAC;IACvC,uBAAuB,EAAE,gBAAgB,CAAC;IAC1C,qBAAqB,EAAE,gBAAgB,CAAC;CACzC,CAYS,CAAC;AAEX,MAAM,MAAM,0BAA0B,GACpC,MAAM,OAAO,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
const DEFAULT_ESCALATION_LADDERS = {
|
|
2
|
+
priority_low_default: { steps: [] },
|
|
3
|
+
priority_medium_default: {
|
|
4
|
+
steps: [{ delayMinutes: 30, channelKey: "in_app", intensity: "normal" }]
|
|
5
|
+
},
|
|
6
|
+
priority_high_default: {
|
|
7
|
+
steps: [
|
|
8
|
+
{ delayMinutes: 0, channelKey: "in_app", intensity: "soft" },
|
|
9
|
+
{ delayMinutes: 15, channelKey: "push", intensity: "normal" },
|
|
10
|
+
{ delayMinutes: 45, channelKey: "imessage", intensity: "urgent" }
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
};
|
|
14
|
+
export {
|
|
15
|
+
DEFAULT_ESCALATION_LADDERS
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=escalation-ladders.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/escalation-ladders.ts"],"sourcesContent":["/**\n * Default escalation ladders. The runner injects one of these ladders when a\n * `ScheduledTask` lacks an explicit `escalation` block, keyed off the task's\n * `priority`:\n * - `priority_low_default` — single attempt, no ladder.\n * - `priority_medium_default` — 1 retry after 30 min.\n * - `priority_high_default` — 3 steps across channels (in_app → push → imessage).\n *\n * Channel keys (`in_app`, `push`, `imessage`) reference\n * {@link import(\"./channels/contract.js\").ChannelContribution.kind}; the\n * channel registry is responsible for resolving them at dispatch time.\n */\n\nexport type EscalationIntensity = \"soft\" | \"normal\" | \"urgent\";\n\nexport interface EscalationStep {\n delayMinutes: number;\n channelKey: string;\n intensity?: EscalationIntensity;\n}\n\nexport interface EscalationLadder {\n steps: EscalationStep[];\n}\n\nexport const DEFAULT_ESCALATION_LADDERS: Readonly<{\n priority_low_default: EscalationLadder;\n priority_medium_default: EscalationLadder;\n priority_high_default: EscalationLadder;\n}> = {\n priority_low_default: { steps: [] },\n priority_medium_default: {\n steps: [{ delayMinutes: 30, channelKey: \"in_app\", intensity: \"normal\" }],\n },\n priority_high_default: {\n steps: [\n { delayMinutes: 0, channelKey: \"in_app\", intensity: \"soft\" },\n { delayMinutes: 15, channelKey: \"push\", intensity: \"normal\" },\n { delayMinutes: 45, channelKey: \"imessage\", intensity: \"urgent\" },\n ],\n },\n} as const;\n\nexport type DefaultEscalationLadderKey =\n keyof typeof DEFAULT_ESCALATION_LADDERS;\n"],"mappings":"AAyBO,MAAM,6BAIR;AAAA,EACH,sBAAsB,EAAE,OAAO,CAAC,EAAE;AAAA,EAClC,yBAAyB;AAAA,IACvB,OAAO,CAAC,EAAE,cAAc,IAAI,YAAY,UAAU,WAAW,SAAS,CAAC;AAAA,EACzE;AAAA,EACA,uBAAuB;AAAA,IACrB,OAAO;AAAA,MACL,EAAE,cAAc,GAAG,YAAY,UAAU,WAAW,OAAO;AAAA,MAC3D,EAAE,cAAc,IAAI,YAAY,QAAQ,WAAW,SAAS;AAAA,MAC5D,EAAE,cAAc,IAAI,YAAY,YAAY,WAAW,SAAS;AAAA,IAClE;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Probe macOS Full Disk Access (FDA) availability by attempting to open the
|
|
3
|
+
* user's `chat.db`. Used by the permissions panel to show whether the
|
|
4
|
+
* iMessage outbound probe is actually running or silently disabled.
|
|
5
|
+
*
|
|
6
|
+
* Status semantics:
|
|
7
|
+
* - "granted": the chat.db file opened successfully.
|
|
8
|
+
* - "revoked": file exists but OS denied read (EPERM / EACCES).
|
|
9
|
+
* - "not_applicable": not darwin, or chat.db is missing (user never used
|
|
10
|
+
* iMessage on this mac).
|
|
11
|
+
* - "unknown": probe threw an unclassified error.
|
|
12
|
+
*/
|
|
13
|
+
export type FullDiskAccessStatus = "granted" | "revoked" | "not_applicable" | "unknown";
|
|
14
|
+
export interface FullDiskAccessProbeResult {
|
|
15
|
+
status: FullDiskAccessStatus;
|
|
16
|
+
checkedAt: string;
|
|
17
|
+
chatDbPath: string;
|
|
18
|
+
reason: string | null;
|
|
19
|
+
}
|
|
20
|
+
export declare function probeFullDiskAccess(overrides?: {
|
|
21
|
+
chatDbPath?: string | null;
|
|
22
|
+
}): Promise<FullDiskAccessProbeResult>;
|
|
23
|
+
//# sourceMappingURL=fda-probe.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fda-probe.d.ts","sourceRoot":"","sources":["../../src/lifeops/fda-probe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,MAAM,MAAM,oBAAoB,GAC5B,SAAS,GACT,SAAS,GACT,gBAAgB,GAChB,SAAS,CAAC;AAEd,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAcD,wBAAsB,mBAAmB,CAAC,SAAS,CAAC,EAAE;IACpD,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAmDrC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { promises as fs } from "node:fs";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { join } from "node:path";
|
|
4
|
+
const DEFAULT_CHAT_DB_PATH = join(homedir(), "Library", "Messages", "chat.db");
|
|
5
|
+
function isNodeErrno(value) {
|
|
6
|
+
return value instanceof Error && typeof value.code === "string";
|
|
7
|
+
}
|
|
8
|
+
async function probeFullDiskAccess(overrides) {
|
|
9
|
+
const checkedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
10
|
+
if (process.platform !== "darwin") {
|
|
11
|
+
return {
|
|
12
|
+
status: "not_applicable",
|
|
13
|
+
checkedAt,
|
|
14
|
+
chatDbPath: "",
|
|
15
|
+
reason: "FDA is only meaningful on macOS"
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
const chatDbPath = (overrides?.chatDbPath?.trim() || null) ?? process.env.IMESSAGE_DB_PATH?.trim() ?? DEFAULT_CHAT_DB_PATH;
|
|
19
|
+
try {
|
|
20
|
+
const handle = await fs.open(chatDbPath, "r");
|
|
21
|
+
await handle.close();
|
|
22
|
+
return { status: "granted", checkedAt, chatDbPath, reason: null };
|
|
23
|
+
} catch (error) {
|
|
24
|
+
if (isNodeErrno(error)) {
|
|
25
|
+
if (error.code === "ENOENT") {
|
|
26
|
+
return {
|
|
27
|
+
status: "not_applicable",
|
|
28
|
+
checkedAt,
|
|
29
|
+
chatDbPath,
|
|
30
|
+
reason: "chat.db not present (user may never have used iMessage)"
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (error.code === "EPERM" || error.code === "EACCES") {
|
|
34
|
+
return {
|
|
35
|
+
status: "revoked",
|
|
36
|
+
checkedAt,
|
|
37
|
+
chatDbPath,
|
|
38
|
+
reason: "Full Disk Access is required to read chat.db. Grant it to the app running Eliza, such as Eliza.app, Terminal, iTerm, or Cursor, then relaunch."
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
status: "unknown",
|
|
43
|
+
checkedAt,
|
|
44
|
+
chatDbPath,
|
|
45
|
+
reason: `${error.code}: ${error.message}`
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
return {
|
|
49
|
+
status: "unknown",
|
|
50
|
+
checkedAt,
|
|
51
|
+
chatDbPath,
|
|
52
|
+
reason: error instanceof Error ? error.message : String(error)
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export {
|
|
57
|
+
probeFullDiskAccess
|
|
58
|
+
};
|
|
59
|
+
//# sourceMappingURL=fda-probe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/fda-probe.ts"],"sourcesContent":["/**\n * Probe macOS Full Disk Access (FDA) availability by attempting to open the\n * user's `chat.db`. Used by the permissions panel to show whether the\n * iMessage outbound probe is actually running or silently disabled.\n *\n * Status semantics:\n * - \"granted\": the chat.db file opened successfully.\n * - \"revoked\": file exists but OS denied read (EPERM / EACCES).\n * - \"not_applicable\": not darwin, or chat.db is missing (user never used\n * iMessage on this mac).\n * - \"unknown\": probe threw an unclassified error.\n */\n\nimport { promises as fs } from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\n\nexport type FullDiskAccessStatus =\n | \"granted\"\n | \"revoked\"\n | \"not_applicable\"\n | \"unknown\";\n\nexport interface FullDiskAccessProbeResult {\n status: FullDiskAccessStatus;\n checkedAt: string;\n chatDbPath: string;\n reason: string | null;\n}\n\nconst DEFAULT_CHAT_DB_PATH = join(homedir(), \"Library\", \"Messages\", \"chat.db\");\n\ninterface NodeErrno extends Error {\n code?: string;\n}\n\nfunction isNodeErrno(value: unknown): value is NodeErrno {\n return (\n value instanceof Error && typeof (value as NodeErrno).code === \"string\"\n );\n}\n\nexport async function probeFullDiskAccess(overrides?: {\n chatDbPath?: string | null;\n}): Promise<FullDiskAccessProbeResult> {\n const checkedAt = new Date().toISOString();\n if (process.platform !== \"darwin\") {\n return {\n status: \"not_applicable\",\n checkedAt,\n chatDbPath: \"\",\n reason: \"FDA is only meaningful on macOS\",\n };\n }\n const chatDbPath =\n (overrides?.chatDbPath?.trim() || null) ??\n process.env.IMESSAGE_DB_PATH?.trim() ??\n DEFAULT_CHAT_DB_PATH;\n try {\n const handle = await fs.open(chatDbPath, \"r\");\n await handle.close();\n return { status: \"granted\", checkedAt, chatDbPath, reason: null };\n } catch (error) {\n if (isNodeErrno(error)) {\n if (error.code === \"ENOENT\") {\n return {\n status: \"not_applicable\",\n checkedAt,\n chatDbPath,\n reason: \"chat.db not present (user may never have used iMessage)\",\n };\n }\n if (error.code === \"EPERM\" || error.code === \"EACCES\") {\n return {\n status: \"revoked\",\n checkedAt,\n chatDbPath,\n reason:\n \"Full Disk Access is required to read chat.db. Grant it to the app running Eliza, such as Eliza.app, Terminal, iTerm, or Cursor, then relaunch.\",\n };\n }\n return {\n status: \"unknown\",\n checkedAt,\n chatDbPath,\n reason: `${error.code}: ${error.message}`,\n };\n }\n return {\n status: \"unknown\",\n checkedAt,\n chatDbPath,\n reason: error instanceof Error ? error.message : String(error),\n };\n }\n}\n"],"mappings":"AAaA,SAAS,YAAY,UAAU;AAC/B,SAAS,eAAe;AACxB,SAAS,YAAY;AAerB,MAAM,uBAAuB,KAAK,QAAQ,GAAG,WAAW,YAAY,SAAS;AAM7E,SAAS,YAAY,OAAoC;AACvD,SACE,iBAAiB,SAAS,OAAQ,MAAoB,SAAS;AAEnE;AAEA,eAAsB,oBAAoB,WAEH;AACrC,QAAM,aAAY,oBAAI,KAAK,GAAE,YAAY;AACzC,MAAI,QAAQ,aAAa,UAAU;AACjC,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA,YAAY;AAAA,MACZ,QAAQ;AAAA,IACV;AAAA,EACF;AACA,QAAM,cACH,WAAW,YAAY,KAAK,KAAK,SAClC,QAAQ,IAAI,kBAAkB,KAAK,KACnC;AACF,MAAI;AACF,UAAM,SAAS,MAAM,GAAG,KAAK,YAAY,GAAG;AAC5C,UAAM,OAAO,MAAM;AACnB,WAAO,EAAE,QAAQ,WAAW,WAAW,YAAY,QAAQ,KAAK;AAAA,EAClE,SAAS,OAAO;AACd,QAAI,YAAY,KAAK,GAAG;AACtB,UAAI,MAAM,SAAS,UAAU;AAC3B,eAAO;AAAA,UACL,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV;AAAA,MACF;AACA,UAAI,MAAM,SAAS,WAAW,MAAM,SAAS,UAAU;AACrD,eAAO;AAAA,UACL,QAAQ;AAAA,UACR;AAAA,UACA;AAAA,UACA,QACE;AAAA,QACJ;AAAA,MACF;AACA,aAAO;AAAA,QACL,QAAQ;AAAA,QACR;AAAA,QACA;AAAA,QACA,QAAQ,GAAG,MAAM,IAAI,KAAK,MAAM,OAAO;AAAA,MACzC;AAAA,IACF;AACA,WAAO;AAAA,MACL,QAAQ;AAAA,MACR;AAAA,MACA;AAAA,MACA,QAAQ,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;AAAA,IAC/D;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type IAgentRuntime } from "@elizaos/core";
|
|
2
|
+
import { type FeatureFlagService, type LifeOpsFeatureFlagKey } from "./feature-flags.types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Cached factory — returns the same service instance per runtime so
|
|
5
|
+
* `subscribeChanges` listeners stay attached across action invocations.
|
|
6
|
+
*/
|
|
7
|
+
export declare function createFeatureFlagService(runtime: IAgentRuntime): FeatureFlagService;
|
|
8
|
+
/**
|
|
9
|
+
* Convenience guard for action handlers. Throws `FeatureNotEnabledError`
|
|
10
|
+
* when the feature is off, with Cloud-aware messaging so the planner can
|
|
11
|
+
* suggest signing in to Eliza Cloud as the easiest path.
|
|
12
|
+
*
|
|
13
|
+
* Accepts both built-in `LifeOpsFeatureKey` values (compile-time safety
|
|
14
|
+
* preserved for first-party callers like `requireFeatureEnabled(runtime,
|
|
15
|
+
* "travel.book_flight")`) and any registered 3rd-party `LifeOpsFeatureFlagKey`.
|
|
16
|
+
*/
|
|
17
|
+
export declare function requireFeatureEnabled(runtime: IAgentRuntime, key: LifeOpsFeatureFlagKey): Promise<void>;
|
|
18
|
+
/**
|
|
19
|
+
* Re-export of the baseline. Most callers should use
|
|
20
|
+
* `resolveFeatureDefaults({cloudLinked})` instead — this constant exists
|
|
21
|
+
* for descriptions/labels that do not vary with Cloud-link state.
|
|
22
|
+
*/
|
|
23
|
+
export { BASE_FEATURE_DEFAULTS } from "./feature-flags.types.js";
|
|
24
|
+
//# sourceMappingURL=feature-flags.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.d.ts","sourceRoot":"","sources":["../../src/lifeops/feature-flags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAwB,MAAM,eAAe,CAAC;AACzE,OAAO,EAGL,KAAK,kBAAkB,EAIvB,KAAK,qBAAqB,EAE3B,MAAM,0BAA0B,CAAC;AAyUlC;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,OAAO,EAAE,aAAa,GACrB,kBAAkB,CAMpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,aAAa,EACtB,GAAG,EAAE,qBAAqB,GACzB,OAAO,CAAC,IAAI,CAAC,CAaf;AAED;;;;GAIG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
import { logger } from "@elizaos/core";
|
|
2
|
+
import {
|
|
3
|
+
ALL_FEATURE_KEYS,
|
|
4
|
+
isLifeOpsFeatureKey,
|
|
5
|
+
resolveFeatureDefaults
|
|
6
|
+
} from "./feature-flags.types.js";
|
|
7
|
+
import {
|
|
8
|
+
getFeatureFlagRegistry,
|
|
9
|
+
UnknownFeatureFlagError
|
|
10
|
+
} from "./registries/feature-flag-registry.js";
|
|
11
|
+
import {
|
|
12
|
+
executeRawSql,
|
|
13
|
+
parseJsonRecord,
|
|
14
|
+
sqlBoolean,
|
|
15
|
+
sqlJson,
|
|
16
|
+
sqlText,
|
|
17
|
+
toBoolean,
|
|
18
|
+
toText
|
|
19
|
+
} from "./sql.js";
|
|
20
|
+
const SELECT_COLUMNS = "feature_key, enabled, source, enabled_at, enabled_by, metadata, created_at, updated_at";
|
|
21
|
+
const ALLOWED_SOURCES = /* @__PURE__ */ new Set([
|
|
22
|
+
"local",
|
|
23
|
+
"cloud"
|
|
24
|
+
]);
|
|
25
|
+
function isCloudAuthService(service) {
|
|
26
|
+
return service !== null && typeof service.isAuthenticated === "function";
|
|
27
|
+
}
|
|
28
|
+
function readCloudLinked(runtime) {
|
|
29
|
+
const getService = runtime.getService;
|
|
30
|
+
const service = typeof getService === "function" ? getService.call(runtime, "CLOUD_AUTH") : null;
|
|
31
|
+
if (!isCloudAuthService(service)) {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
return service.isAuthenticated() === true;
|
|
35
|
+
}
|
|
36
|
+
function resolveDescriptor(runtime, key, cloudLinked) {
|
|
37
|
+
if (isLifeOpsFeatureKey(key)) {
|
|
38
|
+
const def = resolveFeatureDefaults({ cloudLinked })[key];
|
|
39
|
+
return {
|
|
40
|
+
enabled: def.enabled,
|
|
41
|
+
label: def.label,
|
|
42
|
+
description: def.description,
|
|
43
|
+
costsMoney: def.costsMoney
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
const registry = getFeatureFlagRegistry(runtime);
|
|
47
|
+
const contribution = registry?.get(key) ?? null;
|
|
48
|
+
if (!contribution) {
|
|
49
|
+
const known = registry?.list().map((c) => c.key) ?? [];
|
|
50
|
+
throw new UnknownFeatureFlagError(key, known);
|
|
51
|
+
}
|
|
52
|
+
const costsMoney = contribution.metadata?.costsMoney === "true";
|
|
53
|
+
return {
|
|
54
|
+
enabled: contribution.defaultEnabled,
|
|
55
|
+
label: contribution.label,
|
|
56
|
+
description: contribution.description,
|
|
57
|
+
costsMoney
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function rowToState(runtime, row, fallback, cloudLinked) {
|
|
61
|
+
const featureKey = toText(row.feature_key);
|
|
62
|
+
const descriptor = resolveDescriptor(runtime, featureKey, cloudLinked);
|
|
63
|
+
const sourceText = toText(row.source);
|
|
64
|
+
if (!ALLOWED_SOURCES.has(sourceText)) {
|
|
65
|
+
throw new Error(`[FeatureFlags] unknown source from db: ${sourceText}`);
|
|
66
|
+
}
|
|
67
|
+
const enabledAtRaw = row.enabled_at;
|
|
68
|
+
let enabledAt = null;
|
|
69
|
+
if (enabledAtRaw instanceof Date) {
|
|
70
|
+
enabledAt = enabledAtRaw;
|
|
71
|
+
} else if (typeof enabledAtRaw === "string" && enabledAtRaw.length > 0) {
|
|
72
|
+
const parsed = new Date(enabledAtRaw);
|
|
73
|
+
if (Number.isNaN(parsed.getTime())) {
|
|
74
|
+
throw new Error(
|
|
75
|
+
`[FeatureFlags] invalid enabled_at for ${fallback}: ${enabledAtRaw}`
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
enabledAt = parsed;
|
|
79
|
+
}
|
|
80
|
+
const enabledByText = toText(row.enabled_by);
|
|
81
|
+
return {
|
|
82
|
+
featureKey,
|
|
83
|
+
enabled: toBoolean(row.enabled),
|
|
84
|
+
source: sourceText,
|
|
85
|
+
enabledAt,
|
|
86
|
+
enabledBy: enabledByText.length > 0 ? enabledByText : null,
|
|
87
|
+
label: descriptor.label,
|
|
88
|
+
description: descriptor.description,
|
|
89
|
+
costsMoney: descriptor.costsMoney,
|
|
90
|
+
metadata: parseJsonRecord(row.metadata)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
function defaultState(runtime, key, cloudLinked) {
|
|
94
|
+
const descriptor = resolveDescriptor(runtime, key, cloudLinked);
|
|
95
|
+
return {
|
|
96
|
+
featureKey: key,
|
|
97
|
+
enabled: descriptor.enabled,
|
|
98
|
+
source: "default",
|
|
99
|
+
enabledAt: null,
|
|
100
|
+
enabledBy: null,
|
|
101
|
+
label: descriptor.label,
|
|
102
|
+
description: descriptor.description,
|
|
103
|
+
costsMoney: descriptor.costsMoney,
|
|
104
|
+
metadata: {}
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
class PgFeatureFlagService {
|
|
108
|
+
runtime;
|
|
109
|
+
listeners = /* @__PURE__ */ new Set();
|
|
110
|
+
/**
|
|
111
|
+
* Per-request cache of the Cloud-link state. Service instances live for
|
|
112
|
+
* the runtime's lifetime; we re-resolve on every entrypoint call so that
|
|
113
|
+
* sign-in/sign-out flips are picked up without restarting the runtime.
|
|
114
|
+
* The cache exists only to dedupe within a single high-level call (e.g.
|
|
115
|
+
* `list()` resolves once even though it composes many rows).
|
|
116
|
+
*/
|
|
117
|
+
cloudLinkedSnapshot = null;
|
|
118
|
+
constructor(runtime) {
|
|
119
|
+
this.runtime = runtime;
|
|
120
|
+
}
|
|
121
|
+
snapshotCloudLinked() {
|
|
122
|
+
if (this.cloudLinkedSnapshot !== null) {
|
|
123
|
+
return this.cloudLinkedSnapshot;
|
|
124
|
+
}
|
|
125
|
+
const linked = readCloudLinked(this.runtime);
|
|
126
|
+
this.cloudLinkedSnapshot = linked;
|
|
127
|
+
return linked;
|
|
128
|
+
}
|
|
129
|
+
clearCloudSnapshot() {
|
|
130
|
+
this.cloudLinkedSnapshot = null;
|
|
131
|
+
}
|
|
132
|
+
async isEnabled(key) {
|
|
133
|
+
const state = await this.get(key);
|
|
134
|
+
return state.enabled;
|
|
135
|
+
}
|
|
136
|
+
async get(key) {
|
|
137
|
+
const cloudLinked = this.snapshotCloudLinked();
|
|
138
|
+
try {
|
|
139
|
+
const sql = `SELECT ${SELECT_COLUMNS} FROM app_lifeops.lifeops_features
|
|
140
|
+
WHERE feature_key = ${sqlText(key)}
|
|
141
|
+
LIMIT 1`;
|
|
142
|
+
const rows = await executeRawSql(this.runtime, sql);
|
|
143
|
+
if (rows.length === 0) {
|
|
144
|
+
return defaultState(this.runtime, key, cloudLinked);
|
|
145
|
+
}
|
|
146
|
+
return rowToState(this.runtime, rows[0], key, cloudLinked);
|
|
147
|
+
} finally {
|
|
148
|
+
this.clearCloudSnapshot();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async list() {
|
|
152
|
+
const cloudLinked = this.snapshotCloudLinked();
|
|
153
|
+
try {
|
|
154
|
+
const sql = `SELECT ${SELECT_COLUMNS} FROM app_lifeops.lifeops_features`;
|
|
155
|
+
const rows = await executeRawSql(this.runtime, sql);
|
|
156
|
+
const byKey = /* @__PURE__ */ new Map();
|
|
157
|
+
for (const row of rows) {
|
|
158
|
+
const text = toText(row.feature_key);
|
|
159
|
+
byKey.set(text, rowToState(this.runtime, row, text, cloudLinked));
|
|
160
|
+
}
|
|
161
|
+
const registry = getFeatureFlagRegistry(this.runtime);
|
|
162
|
+
const known = new Set(ALL_FEATURE_KEYS);
|
|
163
|
+
if (registry) {
|
|
164
|
+
for (const contribution of registry.list()) {
|
|
165
|
+
known.add(contribution.key);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return Array.from(known).map(
|
|
169
|
+
(key) => byKey.get(key) ?? defaultState(this.runtime, key, cloudLinked)
|
|
170
|
+
);
|
|
171
|
+
} finally {
|
|
172
|
+
this.clearCloudSnapshot();
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
enable(key, source, enabledBy, metadata) {
|
|
176
|
+
return this.upsert(key, true, source, enabledBy, metadata);
|
|
177
|
+
}
|
|
178
|
+
disable(key, source, enabledBy) {
|
|
179
|
+
return this.upsert(key, false, source, enabledBy, void 0);
|
|
180
|
+
}
|
|
181
|
+
subscribeChanges(handler) {
|
|
182
|
+
this.listeners.add(handler);
|
|
183
|
+
return () => {
|
|
184
|
+
this.listeners.delete(handler);
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
async upsert(key, enabled, source, enabledBy, metadata) {
|
|
188
|
+
if (source === "default") {
|
|
189
|
+
throw new Error(
|
|
190
|
+
"[FeatureFlags] refusing to write a row with source='default'"
|
|
191
|
+
);
|
|
192
|
+
}
|
|
193
|
+
const cloudLinked = this.snapshotCloudLinked();
|
|
194
|
+
try {
|
|
195
|
+
const enabledAtSql = enabled ? `(${sqlText((/* @__PURE__ */ new Date()).toISOString())}::timestamptz)` : "NULL";
|
|
196
|
+
const enabledBySql = enabledBy ? sqlText(enabledBy) : "NULL";
|
|
197
|
+
const metadataSql = sqlJson(metadata ?? {});
|
|
198
|
+
const sql = `INSERT INTO app_lifeops.lifeops_features (
|
|
199
|
+
feature_key, enabled, source, enabled_at, enabled_by, metadata, created_at, updated_at
|
|
200
|
+
) VALUES (
|
|
201
|
+
${sqlText(key)},
|
|
202
|
+
${sqlBoolean(enabled)},
|
|
203
|
+
${sqlText(source)},
|
|
204
|
+
${enabledAtSql},
|
|
205
|
+
${enabledBySql},
|
|
206
|
+
${metadataSql},
|
|
207
|
+
now(),
|
|
208
|
+
now()
|
|
209
|
+
)
|
|
210
|
+
ON CONFLICT (feature_key) DO UPDATE SET
|
|
211
|
+
enabled = EXCLUDED.enabled,
|
|
212
|
+
source = EXCLUDED.source,
|
|
213
|
+
enabled_at = EXCLUDED.enabled_at,
|
|
214
|
+
enabled_by = EXCLUDED.enabled_by,
|
|
215
|
+
metadata = EXCLUDED.metadata,
|
|
216
|
+
updated_at = now()
|
|
217
|
+
RETURNING ${SELECT_COLUMNS}`;
|
|
218
|
+
const rows = await executeRawSql(this.runtime, sql);
|
|
219
|
+
if (rows.length === 0) {
|
|
220
|
+
throw new Error(`[FeatureFlags] upsert returned no rows for ${key}`);
|
|
221
|
+
}
|
|
222
|
+
const state = rowToState(this.runtime, rows[0], key, cloudLinked);
|
|
223
|
+
logger.info(
|
|
224
|
+
`[FeatureFlags] ${key} ${enabled ? "enabled" : "disabled"} via ${source}` + (enabledBy ? ` by ${enabledBy}` : "")
|
|
225
|
+
);
|
|
226
|
+
for (const listener of this.listeners) {
|
|
227
|
+
listener(state);
|
|
228
|
+
}
|
|
229
|
+
return state;
|
|
230
|
+
} finally {
|
|
231
|
+
this.clearCloudSnapshot();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
const RUNTIME_CACHE = /* @__PURE__ */ new WeakMap();
|
|
236
|
+
function createFeatureFlagService(runtime) {
|
|
237
|
+
const existing = RUNTIME_CACHE.get(runtime);
|
|
238
|
+
if (existing) return existing;
|
|
239
|
+
const service = new PgFeatureFlagService(runtime);
|
|
240
|
+
RUNTIME_CACHE.set(runtime, service);
|
|
241
|
+
return service;
|
|
242
|
+
}
|
|
243
|
+
async function requireFeatureEnabled(runtime, key) {
|
|
244
|
+
const service = createFeatureFlagService(runtime);
|
|
245
|
+
if (await service.isEnabled(key)) return;
|
|
246
|
+
const { FeatureNotEnabledError } = await import("./feature-flags.types.js");
|
|
247
|
+
const registry = getFeatureFlagRegistry(runtime);
|
|
248
|
+
const contribution = registry?.get(key) ?? null;
|
|
249
|
+
const costsMoney = contribution?.metadata?.costsMoney === "true";
|
|
250
|
+
throw new FeatureNotEnabledError(key, {
|
|
251
|
+
cloudLinked: readCloudLinked(runtime),
|
|
252
|
+
costsMoney
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
import { BASE_FEATURE_DEFAULTS } from "./feature-flags.types.js";
|
|
256
|
+
export {
|
|
257
|
+
BASE_FEATURE_DEFAULTS,
|
|
258
|
+
createFeatureFlagService,
|
|
259
|
+
requireFeatureEnabled
|
|
260
|
+
};
|
|
261
|
+
//# sourceMappingURL=feature-flags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lifeops/feature-flags.ts"],"sourcesContent":["import { type IAgentRuntime, logger, type Service } from \"@elizaos/core\";\nimport {\n ALL_FEATURE_KEYS,\n type FeatureFlagChangeListener,\n type FeatureFlagService,\n type FeatureFlagSource,\n type FeatureFlagState,\n isLifeOpsFeatureKey,\n type LifeOpsFeatureFlagKey,\n resolveFeatureDefaults,\n} from \"./feature-flags.types.js\";\nimport {\n getFeatureFlagRegistry,\n UnknownFeatureFlagError,\n} from \"./registries/feature-flag-registry.js\";\nimport {\n executeRawSql,\n parseJsonRecord,\n sqlBoolean,\n sqlJson,\n sqlText,\n toBoolean,\n toText,\n} from \"./sql.js\";\n\n/**\n * SQL-backed FeatureFlagService.\n *\n * Reads & writes the `app_lifeops.lifeops_features` table owned by `app-lifeops` and\n * migrated via the plugin's `schema` export.\n * Compile-time defaults (`FEATURE_DEFAULTS`) are the authority when no row\n * exists. The runtime never writes a row with `source = 'default'` —\n * absence is the canonical representation of an unmodified default\n * (Commandment 7).\n */\n\nconst SELECT_COLUMNS =\n \"feature_key, enabled, source, enabled_at, enabled_by, metadata, created_at, updated_at\";\n\nconst ALLOWED_SOURCES: ReadonlySet<FeatureFlagSource> = new Set([\n \"local\",\n \"cloud\",\n]);\n\ninterface CloudAuthService extends Service {\n isAuthenticated(): boolean;\n}\n\nfunction isCloudAuthService(\n service: Service | null,\n): service is Service & CloudAuthService {\n return (\n service !== null &&\n typeof (service as Partial<CloudAuthService>).isAuthenticated === \"function\"\n );\n}\n\nfunction readCloudLinked(runtime: IAgentRuntime): boolean {\n const getService = (\n runtime as IAgentRuntime & {\n getService?: (serviceType: string) => Service | null;\n }\n ).getService;\n const service =\n typeof getService === \"function\"\n ? getService.call(runtime, \"CLOUD_AUTH\")\n : null;\n if (!isCloudAuthService(service)) {\n return false;\n }\n return service.isAuthenticated() === true;\n}\n\ninterface FeatureFlagDescriptor {\n readonly enabled: boolean;\n readonly label: string;\n readonly description: string;\n readonly costsMoney: boolean;\n}\n\n/**\n * Resolve label/description/baseline-enabled/costsMoney for a feature key.\n *\n * Built-in keys (`isLifeOpsFeatureKey`) read from the Cloud-aware\n * `resolveFeatureDefaults`. Registered 3rd-party keys read from the\n * `FeatureFlagRegistry` contribution. Unknown keys throw\n * `UnknownFeatureFlagError`.\n */\nfunction resolveDescriptor(\n runtime: IAgentRuntime,\n key: LifeOpsFeatureFlagKey,\n cloudLinked: boolean,\n): FeatureFlagDescriptor {\n if (isLifeOpsFeatureKey(key)) {\n const def = resolveFeatureDefaults({ cloudLinked })[key];\n return {\n enabled: def.enabled,\n label: def.label,\n description: def.description,\n costsMoney: def.costsMoney,\n };\n }\n const registry = getFeatureFlagRegistry(runtime);\n const contribution = registry?.get(key) ?? null;\n if (!contribution) {\n const known = registry?.list().map((c) => c.key) ?? [];\n throw new UnknownFeatureFlagError(key, known);\n }\n const costsMoney = contribution.metadata?.costsMoney === \"true\";\n return {\n enabled: contribution.defaultEnabled,\n label: contribution.label,\n description: contribution.description,\n costsMoney,\n };\n}\n\nfunction rowToState(\n runtime: IAgentRuntime,\n row: Record<string, unknown>,\n fallback: LifeOpsFeatureFlagKey,\n cloudLinked: boolean,\n): FeatureFlagState {\n const featureKey = toText(row.feature_key);\n const descriptor = resolveDescriptor(runtime, featureKey, cloudLinked);\n const sourceText = toText(row.source);\n if (!ALLOWED_SOURCES.has(sourceText as FeatureFlagSource)) {\n throw new Error(`[FeatureFlags] unknown source from db: ${sourceText}`);\n }\n const enabledAtRaw = row.enabled_at;\n let enabledAt: Date | null = null;\n if (enabledAtRaw instanceof Date) {\n enabledAt = enabledAtRaw;\n } else if (typeof enabledAtRaw === \"string\" && enabledAtRaw.length > 0) {\n const parsed = new Date(enabledAtRaw);\n if (Number.isNaN(parsed.getTime())) {\n throw new Error(\n `[FeatureFlags] invalid enabled_at for ${fallback}: ${enabledAtRaw}`,\n );\n }\n enabledAt = parsed;\n }\n const enabledByText = toText(row.enabled_by);\n return {\n featureKey,\n enabled: toBoolean(row.enabled),\n source: sourceText as FeatureFlagSource,\n enabledAt,\n enabledBy: enabledByText.length > 0 ? enabledByText : null,\n label: descriptor.label,\n description: descriptor.description,\n costsMoney: descriptor.costsMoney,\n metadata: parseJsonRecord(row.metadata),\n };\n}\n\nfunction defaultState(\n runtime: IAgentRuntime,\n key: LifeOpsFeatureFlagKey,\n cloudLinked: boolean,\n): FeatureFlagState {\n const descriptor = resolveDescriptor(runtime, key, cloudLinked);\n return {\n featureKey: key,\n enabled: descriptor.enabled,\n source: \"default\",\n enabledAt: null,\n enabledBy: null,\n label: descriptor.label,\n description: descriptor.description,\n costsMoney: descriptor.costsMoney,\n metadata: {},\n };\n}\n\nclass PgFeatureFlagService implements FeatureFlagService {\n private readonly runtime: IAgentRuntime;\n private readonly listeners = new Set<FeatureFlagChangeListener>();\n /**\n * Per-request cache of the Cloud-link state. Service instances live for\n * the runtime's lifetime; we re-resolve on every entrypoint call so that\n * sign-in/sign-out flips are picked up without restarting the runtime.\n * The cache exists only to dedupe within a single high-level call (e.g.\n * `list()` resolves once even though it composes many rows).\n */\n private cloudLinkedSnapshot: boolean | null = null;\n\n constructor(runtime: IAgentRuntime) {\n this.runtime = runtime;\n }\n\n private snapshotCloudLinked(): boolean {\n if (this.cloudLinkedSnapshot !== null) {\n return this.cloudLinkedSnapshot;\n }\n const linked = readCloudLinked(this.runtime);\n this.cloudLinkedSnapshot = linked;\n return linked;\n }\n\n private clearCloudSnapshot(): void {\n this.cloudLinkedSnapshot = null;\n }\n\n async isEnabled(key: LifeOpsFeatureFlagKey): Promise<boolean> {\n const state = await this.get(key);\n return state.enabled;\n }\n\n async get(key: LifeOpsFeatureFlagKey): Promise<FeatureFlagState> {\n const cloudLinked = this.snapshotCloudLinked();\n try {\n const sql = `SELECT ${SELECT_COLUMNS} FROM app_lifeops.lifeops_features\n WHERE feature_key = ${sqlText(key)}\n LIMIT 1`;\n const rows = await executeRawSql(this.runtime, sql);\n if (rows.length === 0) {\n return defaultState(this.runtime, key, cloudLinked);\n }\n return rowToState(this.runtime, rows[0], key, cloudLinked);\n } finally {\n this.clearCloudSnapshot();\n }\n }\n\n async list(): Promise<ReadonlyArray<FeatureFlagState>> {\n const cloudLinked = this.snapshotCloudLinked();\n try {\n const sql = `SELECT ${SELECT_COLUMNS} FROM app_lifeops.lifeops_features`;\n const rows = await executeRawSql(this.runtime, sql);\n const byKey = new Map<LifeOpsFeatureFlagKey, FeatureFlagState>();\n for (const row of rows) {\n const text = toText(row.feature_key);\n byKey.set(text, rowToState(this.runtime, row, text, cloudLinked));\n }\n // The registry is the source of truth for \"which flags exist\". Built-in\n // keys are always included (for back-compat with `ALL_FEATURE_KEYS`\n // callers); 3rd-party registered keys are surfaced too. DB-only rows\n // for keys the registry doesn't know about are dropped (caller likely\n // un-registered them).\n const registry = getFeatureFlagRegistry(this.runtime);\n const known = new Set<LifeOpsFeatureFlagKey>(ALL_FEATURE_KEYS);\n if (registry) {\n for (const contribution of registry.list()) {\n known.add(contribution.key);\n }\n }\n return Array.from(known).map(\n (key) => byKey.get(key) ?? defaultState(this.runtime, key, cloudLinked),\n );\n } finally {\n this.clearCloudSnapshot();\n }\n }\n\n enable(\n key: LifeOpsFeatureFlagKey,\n source: FeatureFlagSource,\n enabledBy: string | null,\n metadata?: Readonly<Record<string, unknown>>,\n ): Promise<FeatureFlagState> {\n return this.upsert(key, true, source, enabledBy, metadata);\n }\n\n disable(\n key: LifeOpsFeatureFlagKey,\n source: FeatureFlagSource,\n enabledBy: string | null,\n ): Promise<FeatureFlagState> {\n return this.upsert(key, false, source, enabledBy, undefined);\n }\n\n subscribeChanges(handler: FeatureFlagChangeListener): () => void {\n this.listeners.add(handler);\n return () => {\n this.listeners.delete(handler);\n };\n }\n\n private async upsert(\n key: LifeOpsFeatureFlagKey,\n enabled: boolean,\n source: FeatureFlagSource,\n enabledBy: string | null,\n metadata: Readonly<Record<string, unknown>> | undefined,\n ): Promise<FeatureFlagState> {\n if (source === \"default\") {\n throw new Error(\n \"[FeatureFlags] refusing to write a row with source='default'\",\n );\n }\n const cloudLinked = this.snapshotCloudLinked();\n try {\n const enabledAtSql = enabled\n ? `(${sqlText(new Date().toISOString())}::timestamptz)`\n : \"NULL\";\n const enabledBySql = enabledBy ? sqlText(enabledBy) : \"NULL\";\n const metadataSql = sqlJson(metadata ?? {});\n const sql = `INSERT INTO app_lifeops.lifeops_features (\n feature_key, enabled, source, enabled_at, enabled_by, metadata, created_at, updated_at\n ) VALUES (\n ${sqlText(key)},\n ${sqlBoolean(enabled)},\n ${sqlText(source)},\n ${enabledAtSql},\n ${enabledBySql},\n ${metadataSql},\n now(),\n now()\n )\n ON CONFLICT (feature_key) DO UPDATE SET\n enabled = EXCLUDED.enabled,\n source = EXCLUDED.source,\n enabled_at = EXCLUDED.enabled_at,\n enabled_by = EXCLUDED.enabled_by,\n metadata = EXCLUDED.metadata,\n updated_at = now()\n RETURNING ${SELECT_COLUMNS}`;\n const rows = await executeRawSql(this.runtime, sql);\n if (rows.length === 0) {\n throw new Error(`[FeatureFlags] upsert returned no rows for ${key}`);\n }\n const state = rowToState(this.runtime, rows[0], key, cloudLinked);\n logger.info(\n `[FeatureFlags] ${key} ${enabled ? \"enabled\" : \"disabled\"} via ${source}` +\n (enabledBy ? ` by ${enabledBy}` : \"\"),\n );\n for (const listener of this.listeners) {\n listener(state);\n }\n return state;\n } finally {\n this.clearCloudSnapshot();\n }\n }\n}\n\nconst RUNTIME_CACHE = new WeakMap<IAgentRuntime, FeatureFlagService>();\n\n/**\n * Cached factory — returns the same service instance per runtime so\n * `subscribeChanges` listeners stay attached across action invocations.\n */\nexport function createFeatureFlagService(\n runtime: IAgentRuntime,\n): FeatureFlagService {\n const existing = RUNTIME_CACHE.get(runtime);\n if (existing) return existing;\n const service = new PgFeatureFlagService(runtime);\n RUNTIME_CACHE.set(runtime, service);\n return service;\n}\n\n/**\n * Convenience guard for action handlers. Throws `FeatureNotEnabledError`\n * when the feature is off, with Cloud-aware messaging so the planner can\n * suggest signing in to Eliza Cloud as the easiest path.\n *\n * Accepts both built-in `LifeOpsFeatureKey` values (compile-time safety\n * preserved for first-party callers like `requireFeatureEnabled(runtime,\n * \"travel.book_flight\")`) and any registered 3rd-party `LifeOpsFeatureFlagKey`.\n */\nexport async function requireFeatureEnabled(\n runtime: IAgentRuntime,\n key: LifeOpsFeatureFlagKey,\n): Promise<void> {\n const service = createFeatureFlagService(runtime);\n if (await service.isEnabled(key)) return;\n const { FeatureNotEnabledError } = await import(\"./feature-flags.types.js\");\n // Carry costsMoney from the registry contribution so 3rd-party flags get\n // the same Cloud opt-in suggestion treatment as built-ins.\n const registry = getFeatureFlagRegistry(runtime);\n const contribution = registry?.get(key) ?? null;\n const costsMoney = contribution?.metadata?.costsMoney === \"true\";\n throw new FeatureNotEnabledError(key, {\n cloudLinked: readCloudLinked(runtime),\n costsMoney,\n });\n}\n\n/**\n * Re-export of the baseline. Most callers should use\n * `resolveFeatureDefaults({cloudLinked})` instead — this constant exists\n * for descriptions/labels that do not vary with Cloud-link state.\n */\nexport { BASE_FEATURE_DEFAULTS } from \"./feature-flags.types.js\";\n"],"mappings":"AAAA,SAA6B,cAA4B;AACzD;AAAA,EACE;AAAA,EAKA;AAAA,EAEA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAaP,MAAM,iBACJ;AAEF,MAAM,kBAAkD,oBAAI,IAAI;AAAA,EAC9D;AAAA,EACA;AACF,CAAC;AAMD,SAAS,mBACP,SACuC;AACvC,SACE,YAAY,QACZ,OAAQ,QAAsC,oBAAoB;AAEtE;AAEA,SAAS,gBAAgB,SAAiC;AACxD,QAAM,aACJ,QAGA;AACF,QAAM,UACJ,OAAO,eAAe,aAClB,WAAW,KAAK,SAAS,YAAY,IACrC;AACN,MAAI,CAAC,mBAAmB,OAAO,GAAG;AAChC,WAAO;AAAA,EACT;AACA,SAAO,QAAQ,gBAAgB,MAAM;AACvC;AAiBA,SAAS,kBACP,SACA,KACA,aACuB;AACvB,MAAI,oBAAoB,GAAG,GAAG;AAC5B,UAAM,MAAM,uBAAuB,EAAE,YAAY,CAAC,EAAE,GAAG;AACvD,WAAO;AAAA,MACL,SAAS,IAAI;AAAA,MACb,OAAO,IAAI;AAAA,MACX,aAAa,IAAI;AAAA,MACjB,YAAY,IAAI;AAAA,IAClB;AAAA,EACF;AACA,QAAM,WAAW,uBAAuB,OAAO;AAC/C,QAAM,eAAe,UAAU,IAAI,GAAG,KAAK;AAC3C,MAAI,CAAC,cAAc;AACjB,UAAM,QAAQ,UAAU,KAAK,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC;AACrD,UAAM,IAAI,wBAAwB,KAAK,KAAK;AAAA,EAC9C;AACA,QAAM,aAAa,aAAa,UAAU,eAAe;AACzD,SAAO;AAAA,IACL,SAAS,aAAa;AAAA,IACtB,OAAO,aAAa;AAAA,IACpB,aAAa,aAAa;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,SAAS,WACP,SACA,KACA,UACA,aACkB;AAClB,QAAM,aAAa,OAAO,IAAI,WAAW;AACzC,QAAM,aAAa,kBAAkB,SAAS,YAAY,WAAW;AACrE,QAAM,aAAa,OAAO,IAAI,MAAM;AACpC,MAAI,CAAC,gBAAgB,IAAI,UAA+B,GAAG;AACzD,UAAM,IAAI,MAAM,0CAA0C,UAAU,EAAE;AAAA,EACxE;AACA,QAAM,eAAe,IAAI;AACzB,MAAI,YAAyB;AAC7B,MAAI,wBAAwB,MAAM;AAChC,gBAAY;AAAA,EACd,WAAW,OAAO,iBAAiB,YAAY,aAAa,SAAS,GAAG;AACtE,UAAM,SAAS,IAAI,KAAK,YAAY;AACpC,QAAI,OAAO,MAAM,OAAO,QAAQ,CAAC,GAAG;AAClC,YAAM,IAAI;AAAA,QACR,yCAAyC,QAAQ,KAAK,YAAY;AAAA,MACpE;AAAA,IACF;AACA,gBAAY;AAAA,EACd;AACA,QAAM,gBAAgB,OAAO,IAAI,UAAU;AAC3C,SAAO;AAAA,IACL;AAAA,IACA,SAAS,UAAU,IAAI,OAAO;AAAA,IAC9B,QAAQ;AAAA,IACR;AAAA,IACA,WAAW,cAAc,SAAS,IAAI,gBAAgB;AAAA,IACtD,OAAO,WAAW;AAAA,IAClB,aAAa,WAAW;AAAA,IACxB,YAAY,WAAW;AAAA,IACvB,UAAU,gBAAgB,IAAI,QAAQ;AAAA,EACxC;AACF;AAEA,SAAS,aACP,SACA,KACA,aACkB;AAClB,QAAM,aAAa,kBAAkB,SAAS,KAAK,WAAW;AAC9D,SAAO;AAAA,IACL,YAAY;AAAA,IACZ,SAAS,WAAW;AAAA,IACpB,QAAQ;AAAA,IACR,WAAW;AAAA,IACX,WAAW;AAAA,IACX,OAAO,WAAW;AAAA,IAClB,aAAa,WAAW;AAAA,IACxB,YAAY,WAAW;AAAA,IACvB,UAAU,CAAC;AAAA,EACb;AACF;AAEA,MAAM,qBAAmD;AAAA,EACtC;AAAA,EACA,YAAY,oBAAI,IAA+B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQxD,sBAAsC;AAAA,EAE9C,YAAY,SAAwB;AAClC,SAAK,UAAU;AAAA,EACjB;AAAA,EAEQ,sBAA+B;AACrC,QAAI,KAAK,wBAAwB,MAAM;AACrC,aAAO,KAAK;AAAA,IACd;AACA,UAAM,SAAS,gBAAgB,KAAK,OAAO;AAC3C,SAAK,sBAAsB;AAC3B,WAAO;AAAA,EACT;AAAA,EAEQ,qBAA2B;AACjC,SAAK,sBAAsB;AAAA,EAC7B;AAAA,EAEA,MAAM,UAAU,KAA8C;AAC5D,UAAM,QAAQ,MAAM,KAAK,IAAI,GAAG;AAChC,WAAO,MAAM;AAAA,EACf;AAAA,EAEA,MAAM,IAAI,KAAuD;AAC/D,UAAM,cAAc,KAAK,oBAAoB;AAC7C,QAAI;AACF,YAAM,MAAM,UAAU,cAAc;AAAA,8BACZ,QAAQ,GAAG,CAAC;AAAA;AAEpC,YAAM,OAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAClD,UAAI,KAAK,WAAW,GAAG;AACrB,eAAO,aAAa,KAAK,SAAS,KAAK,WAAW;AAAA,MACpD;AACA,aAAO,WAAW,KAAK,SAAS,KAAK,CAAC,GAAG,KAAK,WAAW;AAAA,IAC3D,UAAE;AACA,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,MAAM,OAAiD;AACrD,UAAM,cAAc,KAAK,oBAAoB;AAC7C,QAAI;AACF,YAAM,MAAM,UAAU,cAAc;AACpC,YAAM,OAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAClD,YAAM,QAAQ,oBAAI,IAA6C;AAC/D,iBAAW,OAAO,MAAM;AACtB,cAAM,OAAO,OAAO,IAAI,WAAW;AACnC,cAAM,IAAI,MAAM,WAAW,KAAK,SAAS,KAAK,MAAM,WAAW,CAAC;AAAA,MAClE;AAMA,YAAM,WAAW,uBAAuB,KAAK,OAAO;AACpD,YAAM,QAAQ,IAAI,IAA2B,gBAAgB;AAC7D,UAAI,UAAU;AACZ,mBAAW,gBAAgB,SAAS,KAAK,GAAG;AAC1C,gBAAM,IAAI,aAAa,GAAG;AAAA,QAC5B;AAAA,MACF;AACA,aAAO,MAAM,KAAK,KAAK,EAAE;AAAA,QACvB,CAAC,QAAQ,MAAM,IAAI,GAAG,KAAK,aAAa,KAAK,SAAS,KAAK,WAAW;AAAA,MACxE;AAAA,IACF,UAAE;AACA,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AAAA,EAEA,OACE,KACA,QACA,WACA,UAC2B;AAC3B,WAAO,KAAK,OAAO,KAAK,MAAM,QAAQ,WAAW,QAAQ;AAAA,EAC3D;AAAA,EAEA,QACE,KACA,QACA,WAC2B;AAC3B,WAAO,KAAK,OAAO,KAAK,OAAO,QAAQ,WAAW,MAAS;AAAA,EAC7D;AAAA,EAEA,iBAAiB,SAAgD;AAC/D,SAAK,UAAU,IAAI,OAAO;AAC1B,WAAO,MAAM;AACX,WAAK,UAAU,OAAO,OAAO;AAAA,IAC/B;AAAA,EACF;AAAA,EAEA,MAAc,OACZ,KACA,SACA,QACA,WACA,UAC2B;AAC3B,QAAI,WAAW,WAAW;AACxB,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF;AACA,UAAM,cAAc,KAAK,oBAAoB;AAC7C,QAAI;AACF,YAAM,eAAe,UACjB,IAAI,SAAQ,oBAAI,KAAK,GAAE,YAAY,CAAC,CAAC,mBACrC;AACJ,YAAM,eAAe,YAAY,QAAQ,SAAS,IAAI;AACtD,YAAM,cAAc,QAAQ,YAAY,CAAC,CAAC;AAC1C,YAAM,MAAM;AAAA;AAAA;AAAA,YAGN,QAAQ,GAAG,CAAC;AAAA,YACZ,WAAW,OAAO,CAAC;AAAA,YACnB,QAAQ,MAAM,CAAC;AAAA,YACf,YAAY;AAAA,YACZ,YAAY;AAAA,YACZ,WAAW;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAWH,cAAc;AAC5B,YAAM,OAAO,MAAM,cAAc,KAAK,SAAS,GAAG;AAClD,UAAI,KAAK,WAAW,GAAG;AACrB,cAAM,IAAI,MAAM,8CAA8C,GAAG,EAAE;AAAA,MACrE;AACA,YAAM,QAAQ,WAAW,KAAK,SAAS,KAAK,CAAC,GAAG,KAAK,WAAW;AAChE,aAAO;AAAA,QACL,kBAAkB,GAAG,IAAI,UAAU,YAAY,UAAU,QAAQ,MAAM,MACpE,YAAY,OAAO,SAAS,KAAK;AAAA,MACtC;AACA,iBAAW,YAAY,KAAK,WAAW;AACrC,iBAAS,KAAK;AAAA,MAChB;AACA,aAAO;AAAA,IACT,UAAE;AACA,WAAK,mBAAmB;AAAA,IAC1B;AAAA,EACF;AACF;AAEA,MAAM,gBAAgB,oBAAI,QAA2C;AAM9D,SAAS,yBACd,SACoB;AACpB,QAAM,WAAW,cAAc,IAAI,OAAO;AAC1C,MAAI,SAAU,QAAO;AACrB,QAAM,UAAU,IAAI,qBAAqB,OAAO;AAChD,gBAAc,IAAI,SAAS,OAAO;AAClC,SAAO;AACT;AAWA,eAAsB,sBACpB,SACA,KACe;AACf,QAAM,UAAU,yBAAyB,OAAO;AAChD,MAAI,MAAM,QAAQ,UAAU,GAAG,EAAG;AAClC,QAAM,EAAE,uBAAuB,IAAI,MAAM,OAAO,0BAA0B;AAG1E,QAAM,WAAW,uBAAuB,OAAO;AAC/C,QAAM,eAAe,UAAU,IAAI,GAAG,KAAK;AAC3C,QAAM,aAAa,cAAc,UAAU,eAAe;AAC1D,QAAM,IAAI,uBAAuB,KAAK;AAAA,IACpC,aAAa,gBAAgB,OAAO;AAAA,IACpC;AAAA,EACF,CAAC;AACH;AAOA,SAAS,6BAA6B;","names":[]}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LifeOps feature opt-in framework — closed enums + typed envelope.
|
|
3
|
+
*
|
|
4
|
+
* Source of truth (Commandment 7):
|
|
5
|
+
* - The literal union `LifeOpsFeatureKey` enumerates every gateable
|
|
6
|
+
* capability.
|
|
7
|
+
* - `BASE_FEATURE_DEFAULTS` declares the compile-time baseline. The DB
|
|
8
|
+
* table only stores *overrides* — never used to discover new keys.
|
|
9
|
+
* - The actions/services that gate on these keys must throw
|
|
10
|
+
* `FeatureNotEnabledError` before they touch the network or spend
|
|
11
|
+
* money. Silent fallbacks are not allowed (Commandment 8).
|
|
12
|
+
*
|
|
13
|
+
* Source rules:
|
|
14
|
+
* - `default` — the row is absent in the DB; `enabled` reflects the
|
|
15
|
+
* resolved compile-time default for the current Cloud-link context.
|
|
16
|
+
* The runtime never *writes* a `default` row.
|
|
17
|
+
* - `local` — toggled from the desktop UI / chat command.
|
|
18
|
+
* - `cloud` — auto-provisioned by an Eliza Cloud package sync.
|
|
19
|
+
*
|
|
20
|
+
* Cloud rows are read-only from the local UI: a Cloud-managed enable
|
|
21
|
+
* cannot be revoked locally, only by removing the Cloud package.
|
|
22
|
+
*
|
|
23
|
+
* Cloud-default policy:
|
|
24
|
+
* - When the user is signed into Eliza Cloud, travel features and the
|
|
25
|
+
* cloud-managed travel-billing flag flip ON by default. Cost is
|
|
26
|
+
* metered Cloud-side; the local code never recomputes that markup
|
|
27
|
+
* (Commandment 2).
|
|
28
|
+
* - Without Cloud, paid features stay OFF until the user opts in
|
|
29
|
+
* locally (which then requires them to bring their own travel-provider
|
|
30
|
+
* API credentials via `ELIZA_DUFFEL_DIRECT=1` + `DUFFEL_API_KEY`).
|
|
31
|
+
*/
|
|
32
|
+
export type LifeOpsFeatureKey = "travel.search_flight" | "travel.search_hotel" | "travel.book_flight" | "travel.book_hotel" | "notifications.push" | "cross_channel.escalate" | "browser.automation" | "email.draft" | "email.send" | "cloud.duffel";
|
|
33
|
+
/**
|
|
34
|
+
* Open-key sibling of `LifeOpsFeatureKey`. The closed union remains the
|
|
35
|
+
* compile-time authority for the built-in 10 flags (Cloud-default policy,
|
|
36
|
+
* `BASE_FEATURE_DEFAULTS`, typed gate calls). The runtime
|
|
37
|
+
* `FeatureFlagRegistry` is the source of truth for what flags exist —
|
|
38
|
+
* including 3rd-party plugin contributions — so anywhere that ingests a
|
|
39
|
+
* key from outside (chat input, REST routes, dev-registries view) uses
|
|
40
|
+
* `LifeOpsFeatureFlagKey`. Parallel to
|
|
41
|
+
* `LifeOpsBusFamily = LifeOpsTelemetryFamily | string`.
|
|
42
|
+
*/
|
|
43
|
+
export type LifeOpsFeatureFlagKey = LifeOpsFeatureKey | string;
|
|
44
|
+
export type FeatureFlagSource = "default" | "local" | "cloud";
|
|
45
|
+
export interface FeatureFlagDefault {
|
|
46
|
+
/** Compile-time baseline — applies until a row overrides it. May be
|
|
47
|
+
* flipped by `resolveFeatureDefaults` based on Cloud-link state. */
|
|
48
|
+
readonly enabled: boolean;
|
|
49
|
+
/** Short user-facing label shown in settings and confirmations. */
|
|
50
|
+
readonly label: string;
|
|
51
|
+
/** One-line user-facing description shown in the settings UI. */
|
|
52
|
+
readonly description: string;
|
|
53
|
+
/**
|
|
54
|
+
* True when toggling the feature on commits the user to recurring spend
|
|
55
|
+
* or external billing (e.g. live flight booking, paid SMS). Surfaced in
|
|
56
|
+
* the UI so the user understands the implication.
|
|
57
|
+
*/
|
|
58
|
+
readonly costsMoney: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Compile-time baseline. Conservative — assumes no Cloud account.
|
|
62
|
+
*
|
|
63
|
+
* `resolveFeatureDefaults({cloudLinked})` is the only function callers
|
|
64
|
+
* should use to read effective defaults. Direct reads of this constant
|
|
65
|
+
* skip the Cloud-aware policy and will under-report enablement for
|
|
66
|
+
* Cloud-linked users.
|
|
67
|
+
*/
|
|
68
|
+
export declare const BASE_FEATURE_DEFAULTS: Readonly<Record<LifeOpsFeatureKey, FeatureFlagDefault>>;
|
|
69
|
+
/**
|
|
70
|
+
* Feature keys that default to ON when the user is signed into Eliza
|
|
71
|
+
* Cloud. Service fees are applied Cloud-side (Commandment 2/4 — no client
|
|
72
|
+
* math), so flipping these on locally is purely a default-policy decision:
|
|
73
|
+
* it does not change billing.
|
|
74
|
+
*/
|
|
75
|
+
export declare const CLOUD_LINKED_DEFAULT_ON: ReadonlySet<LifeOpsFeatureKey>;
|
|
76
|
+
export declare function isCloudLinkedDefaultOnFeatureKey(key: LifeOpsFeatureKey): boolean;
|
|
77
|
+
export interface ResolveFeatureDefaultsArgs {
|
|
78
|
+
readonly cloudLinked: boolean;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Resolve effective compile-time defaults for the given Cloud-link state.
|
|
82
|
+
*
|
|
83
|
+
* - `cloudLinked: true` → travel + `cloud.duffel` ON, billed via
|
|
84
|
+
* Eliza Cloud's managed travel-provider billing.
|
|
85
|
+
* - `cloudLinked: false` → baseline (paid features OFF) until the user
|
|
86
|
+
* opts in locally and supplies their own travel-provider credentials.
|
|
87
|
+
*/
|
|
88
|
+
export declare function resolveFeatureDefaults(args: ResolveFeatureDefaultsArgs): Readonly<Record<LifeOpsFeatureKey, FeatureFlagDefault>>;
|
|
89
|
+
export declare const ALL_FEATURE_KEYS: ReadonlyArray<LifeOpsFeatureKey>;
|
|
90
|
+
export declare function isLifeOpsFeatureKey(value: unknown): value is LifeOpsFeatureKey;
|
|
91
|
+
export interface FeatureFlagState {
|
|
92
|
+
readonly featureKey: LifeOpsFeatureFlagKey;
|
|
93
|
+
readonly enabled: boolean;
|
|
94
|
+
readonly source: FeatureFlagSource;
|
|
95
|
+
readonly enabledAt: Date | null;
|
|
96
|
+
readonly enabledBy: string | null;
|
|
97
|
+
readonly label: string;
|
|
98
|
+
readonly description: string;
|
|
99
|
+
readonly costsMoney: boolean;
|
|
100
|
+
readonly metadata: Readonly<Record<string, unknown>>;
|
|
101
|
+
}
|
|
102
|
+
export interface LifeOpsFeatureFlagRowDto {
|
|
103
|
+
readonly featureKey: LifeOpsFeatureFlagKey;
|
|
104
|
+
readonly enabled: boolean;
|
|
105
|
+
readonly source: FeatureFlagSource;
|
|
106
|
+
readonly label: string;
|
|
107
|
+
readonly description: string;
|
|
108
|
+
readonly costsMoney: boolean;
|
|
109
|
+
readonly enabledAt: string | null;
|
|
110
|
+
readonly enabledBy: string | null;
|
|
111
|
+
readonly packageId: string | null;
|
|
112
|
+
readonly cloudDefaultOn: boolean;
|
|
113
|
+
}
|
|
114
|
+
export interface LifeOpsFeatureFlagsResponse {
|
|
115
|
+
readonly features: ReadonlyArray<LifeOpsFeatureFlagRowDto>;
|
|
116
|
+
}
|
|
117
|
+
export interface LifeOpsFeatureFlagsSyncResponse extends LifeOpsFeatureFlagsResponse {
|
|
118
|
+
readonly synced: number;
|
|
119
|
+
}
|
|
120
|
+
export interface LifeOpsFeatureToggleResponse {
|
|
121
|
+
readonly feature: LifeOpsFeatureFlagRowDto;
|
|
122
|
+
}
|
|
123
|
+
export interface FeatureToggleRequest {
|
|
124
|
+
readonly featureKey: LifeOpsFeatureFlagKey;
|
|
125
|
+
readonly enabled: boolean;
|
|
126
|
+
readonly source: FeatureFlagSource;
|
|
127
|
+
readonly enabledBy: string | null;
|
|
128
|
+
readonly metadata?: Readonly<Record<string, unknown>>;
|
|
129
|
+
}
|
|
130
|
+
export type FeatureFlagChangeListener = (state: FeatureFlagState) => void;
|
|
131
|
+
export interface FeatureFlagService {
|
|
132
|
+
isEnabled(key: LifeOpsFeatureFlagKey): Promise<boolean>;
|
|
133
|
+
get(key: LifeOpsFeatureFlagKey): Promise<FeatureFlagState>;
|
|
134
|
+
list(): Promise<ReadonlyArray<FeatureFlagState>>;
|
|
135
|
+
enable(key: LifeOpsFeatureFlagKey, source: FeatureFlagSource, enabledBy: string | null, metadata?: Readonly<Record<string, unknown>>): Promise<FeatureFlagState>;
|
|
136
|
+
disable(key: LifeOpsFeatureFlagKey, source: FeatureFlagSource, enabledBy: string | null): Promise<FeatureFlagState>;
|
|
137
|
+
subscribeChanges(handler: FeatureFlagChangeListener): () => void;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Thrown by gated actions before they perform any side effect when the
|
|
141
|
+
* required feature key is disabled. Carries enough context for the LLM
|
|
142
|
+
* planner to surface a useful "enable this" message back to the owner —
|
|
143
|
+
* including a Cloud-aware suggestion when the user is not signed in.
|
|
144
|
+
*/
|
|
145
|
+
export declare class FeatureNotEnabledError extends Error {
|
|
146
|
+
readonly code: "FEATURE_NOT_ENABLED";
|
|
147
|
+
readonly featureKey: LifeOpsFeatureFlagKey;
|
|
148
|
+
readonly cloudOptIn: boolean;
|
|
149
|
+
readonly cloudLinked: boolean;
|
|
150
|
+
constructor(featureKey: LifeOpsFeatureFlagKey, args?: {
|
|
151
|
+
cloudLinked?: boolean;
|
|
152
|
+
message?: string;
|
|
153
|
+
costsMoney?: boolean;
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=feature-flags.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feature-flags.types.d.ts","sourceRoot":"","sources":["../../src/lifeops/feature-flags.types.ts"],"names":[],"mappings":"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"}
|