@elizaos/plugin-personal-assistant 2.0.3-beta.6 → 2.0.3-beta.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1317) hide show
  1. package/dist/actions/app-block.d.ts +15 -0
  2. package/dist/actions/app-block.d.ts.map +1 -0
  3. package/dist/actions/app-block.js +349 -0
  4. package/dist/actions/app-block.js.map +1 -0
  5. package/dist/actions/autofill.d.ts +20 -0
  6. package/dist/actions/autofill.d.ts.map +1 -0
  7. package/dist/actions/autofill.js +370 -0
  8. package/dist/actions/autofill.js.map +1 -0
  9. package/dist/actions/block.d.ts +30 -0
  10. package/dist/actions/block.d.ts.map +1 -0
  11. package/dist/actions/block.js +326 -0
  12. package/dist/actions/block.js.map +1 -0
  13. package/dist/actions/book-travel.d.ts +10 -0
  14. package/dist/actions/book-travel.d.ts.map +1 -0
  15. package/dist/actions/book-travel.js +467 -0
  16. package/dist/actions/book-travel.js.map +1 -0
  17. package/dist/actions/brief.d.ts +60 -0
  18. package/dist/actions/brief.d.ts.map +1 -0
  19. package/dist/actions/brief.js +485 -0
  20. package/dist/actions/brief.js.map +1 -0
  21. package/dist/actions/calendar.d.ts +22 -0
  22. package/dist/actions/calendar.d.ts.map +1 -0
  23. package/dist/actions/calendar.js +832 -0
  24. package/dist/actions/calendar.js.map +1 -0
  25. package/dist/actions/conflict-detect.d.ts +67 -0
  26. package/dist/actions/conflict-detect.d.ts.map +1 -0
  27. package/dist/actions/conflict-detect.js +310 -0
  28. package/dist/actions/conflict-detect.js.map +1 -0
  29. package/dist/actions/connector.d.ts +5 -0
  30. package/dist/actions/connector.d.ts.map +1 -0
  31. package/dist/actions/connector.js +1354 -0
  32. package/dist/actions/connector.js.map +1 -0
  33. package/dist/actions/credentials.d.ts +14 -0
  34. package/dist/actions/credentials.d.ts.map +1 -0
  35. package/dist/actions/credentials.js +191 -0
  36. package/dist/actions/credentials.js.map +1 -0
  37. package/dist/actions/document.d.ts +36 -0
  38. package/dist/actions/document.d.ts.map +1 -0
  39. package/dist/actions/document.js +613 -0
  40. package/dist/actions/document.js.map +1 -0
  41. package/dist/actions/entity.d.ts +20 -0
  42. package/dist/actions/entity.d.ts.map +1 -0
  43. package/dist/actions/entity.js +785 -0
  44. package/dist/actions/entity.js.map +1 -0
  45. package/dist/actions/health.d.ts +4 -0
  46. package/dist/actions/health.d.ts.map +1 -0
  47. package/dist/actions/health.js +37 -0
  48. package/dist/actions/health.js.map +1 -0
  49. package/dist/actions/inbox.d.ts +12 -0
  50. package/dist/actions/inbox.d.ts.map +1 -0
  51. package/dist/actions/inbox.js +13 -0
  52. package/dist/actions/inbox.js.map +1 -0
  53. package/dist/actions/lib/calendly-handler.d.ts +3 -0
  54. package/dist/actions/lib/calendly-handler.d.ts.map +1 -0
  55. package/dist/actions/lib/calendly-handler.js +506 -0
  56. package/dist/actions/lib/calendly-handler.js.map +1 -0
  57. package/dist/actions/lib/extract-goal-plan.d.ts +69 -0
  58. package/dist/actions/lib/extract-goal-plan.d.ts.map +1 -0
  59. package/dist/actions/lib/extract-goal-plan.js +488 -0
  60. package/dist/actions/lib/extract-goal-plan.js.map +1 -0
  61. package/dist/actions/lib/extract-life-operation.d.ts +18 -0
  62. package/dist/actions/lib/extract-life-operation.d.ts.map +1 -0
  63. package/dist/actions/lib/extract-life-operation.js +318 -0
  64. package/dist/actions/lib/extract-life-operation.js.map +1 -0
  65. package/dist/actions/lib/extract-task-plan.d.ts +78 -0
  66. package/dist/actions/lib/extract-task-plan.d.ts.map +1 -0
  67. package/dist/actions/lib/extract-task-plan.js +355 -0
  68. package/dist/actions/lib/extract-task-plan.js.map +1 -0
  69. package/dist/actions/lib/extract-update-fields.d.ts +27 -0
  70. package/dist/actions/lib/extract-update-fields.d.ts.map +1 -0
  71. package/dist/actions/lib/extract-update-fields.js +172 -0
  72. package/dist/actions/lib/extract-update-fields.js.map +1 -0
  73. package/dist/actions/lib/lifeops-deferred-draft.d.ts +68 -0
  74. package/dist/actions/lib/lifeops-deferred-draft.d.ts.map +1 -0
  75. package/dist/actions/lib/lifeops-deferred-draft.js +315 -0
  76. package/dist/actions/lib/lifeops-deferred-draft.js.map +1 -0
  77. package/dist/actions/lib/messaging-helpers.d.ts +20 -0
  78. package/dist/actions/lib/messaging-helpers.d.ts.map +1 -0
  79. package/dist/actions/lib/messaging-helpers.js +103 -0
  80. package/dist/actions/lib/messaging-helpers.js.map +1 -0
  81. package/dist/actions/lib/owner-policy-writes.d.ts +49 -0
  82. package/dist/actions/lib/owner-policy-writes.d.ts.map +1 -0
  83. package/dist/actions/lib/owner-policy-writes.js +157 -0
  84. package/dist/actions/lib/owner-policy-writes.js.map +1 -0
  85. package/dist/actions/lib/prompt-format.d.ts +3 -0
  86. package/dist/actions/lib/prompt-format.d.ts.map +1 -0
  87. package/dist/actions/lib/prompt-format.js +42 -0
  88. package/dist/actions/lib/prompt-format.js.map +1 -0
  89. package/dist/actions/lib/scheduling-handler.d.ts +93 -0
  90. package/dist/actions/lib/scheduling-handler.d.ts.map +1 -0
  91. package/dist/actions/lib/scheduling-handler.js +868 -0
  92. package/dist/actions/lib/scheduling-handler.js.map +1 -0
  93. package/dist/actions/life.d.ts +13 -0
  94. package/dist/actions/life.d.ts.map +1 -0
  95. package/dist/actions/life.js +2524 -0
  96. package/dist/actions/life.js.map +1 -0
  97. package/dist/actions/money.d.ts +24 -0
  98. package/dist/actions/money.d.ts.map +1 -0
  99. package/dist/actions/money.js +41 -0
  100. package/dist/actions/money.js.map +1 -0
  101. package/dist/actions/owner-surfaces.d.ts +11 -0
  102. package/dist/actions/owner-surfaces.d.ts.map +1 -0
  103. package/dist/actions/owner-surfaces.js +493 -0
  104. package/dist/actions/owner-surfaces.js.map +1 -0
  105. package/dist/actions/password-manager.d.ts +10 -0
  106. package/dist/actions/password-manager.d.ts.map +1 -0
  107. package/dist/actions/password-manager.js +195 -0
  108. package/dist/actions/password-manager.js.map +1 -0
  109. package/dist/actions/payments.d.ts +10 -0
  110. package/dist/actions/payments.d.ts.map +1 -0
  111. package/dist/actions/payments.js +5 -0
  112. package/dist/actions/payments.js.map +1 -0
  113. package/dist/actions/prioritize.d.ts +49 -0
  114. package/dist/actions/prioritize.d.ts.map +1 -0
  115. package/dist/actions/prioritize.js +313 -0
  116. package/dist/actions/prioritize.js.map +1 -0
  117. package/dist/actions/remote-desktop.d.ts +13 -0
  118. package/dist/actions/remote-desktop.d.ts.map +1 -0
  119. package/dist/actions/remote-desktop.js +11 -0
  120. package/dist/actions/remote-desktop.js.map +1 -0
  121. package/dist/actions/resolve-request.d.ts +12 -0
  122. package/dist/actions/resolve-request.d.ts.map +1 -0
  123. package/dist/actions/resolve-request.js +427 -0
  124. package/dist/actions/resolve-request.js.map +1 -0
  125. package/dist/actions/schedule.d.ts +10 -0
  126. package/dist/actions/schedule.d.ts.map +1 -0
  127. package/dist/actions/schedule.js +113 -0
  128. package/dist/actions/schedule.js.map +1 -0
  129. package/dist/actions/scheduled-task.d.ts +32 -0
  130. package/dist/actions/scheduled-task.d.ts.map +1 -0
  131. package/dist/actions/scheduled-task.js +661 -0
  132. package/dist/actions/scheduled-task.js.map +1 -0
  133. package/dist/actions/screen-time.d.ts +4 -0
  134. package/dist/actions/screen-time.d.ts.map +1 -0
  135. package/dist/actions/screen-time.js +47 -0
  136. package/dist/actions/screen-time.js.map +1 -0
  137. package/dist/actions/subscriptions.d.ts +8 -0
  138. package/dist/actions/subscriptions.d.ts.map +1 -0
  139. package/dist/actions/subscriptions.js +327 -0
  140. package/dist/actions/subscriptions.js.map +1 -0
  141. package/dist/actions/voice-call.d.ts +16 -0
  142. package/dist/actions/voice-call.d.ts.map +1 -0
  143. package/dist/actions/voice-call.js +756 -0
  144. package/dist/actions/voice-call.js.map +1 -0
  145. package/dist/actions/website-block.d.ts +15 -0
  146. package/dist/actions/website-block.d.ts.map +1 -0
  147. package/dist/actions/website-block.js +719 -0
  148. package/dist/actions/website-block.js.map +1 -0
  149. package/dist/actions/work-thread.d.ts +5 -0
  150. package/dist/actions/work-thread.d.ts.map +1 -0
  151. package/dist/actions/work-thread.js +556 -0
  152. package/dist/actions/work-thread.js.map +1 -0
  153. package/dist/activity-profile/activity-tracker-repo.d.ts +28 -0
  154. package/dist/activity-profile/activity-tracker-repo.d.ts.map +1 -0
  155. package/dist/activity-profile/activity-tracker-repo.js +61 -0
  156. package/dist/activity-profile/activity-tracker-repo.js.map +1 -0
  157. package/dist/activity-profile/activity-tracker-reporting.d.ts +52 -0
  158. package/dist/activity-profile/activity-tracker-reporting.d.ts.map +1 -0
  159. package/dist/activity-profile/activity-tracker-reporting.js +119 -0
  160. package/dist/activity-profile/activity-tracker-reporting.js.map +1 -0
  161. package/dist/activity-profile/activity-tracker-service.d.ts +36 -0
  162. package/dist/activity-profile/activity-tracker-service.d.ts.map +1 -0
  163. package/dist/activity-profile/activity-tracker-service.js +187 -0
  164. package/dist/activity-profile/activity-tracker-service.js.map +1 -0
  165. package/dist/activity-profile/analyzer.d.ts +23 -0
  166. package/dist/activity-profile/analyzer.d.ts.map +1 -0
  167. package/dist/activity-profile/analyzer.js +485 -0
  168. package/dist/activity-profile/analyzer.js.map +1 -0
  169. package/dist/activity-profile/presence-signal-bridge-service.d.ts +14 -0
  170. package/dist/activity-profile/presence-signal-bridge-service.d.ts.map +1 -0
  171. package/dist/activity-profile/presence-signal-bridge-service.js +159 -0
  172. package/dist/activity-profile/presence-signal-bridge-service.js.map +1 -0
  173. package/dist/activity-profile/proactive-inbox-digest.d.ts +3 -0
  174. package/dist/activity-profile/proactive-inbox-digest.d.ts.map +1 -0
  175. package/dist/activity-profile/proactive-inbox-digest.js +21 -0
  176. package/dist/activity-profile/proactive-inbox-digest.js.map +1 -0
  177. package/dist/activity-profile/proactive-planner.d.ts +150 -0
  178. package/dist/activity-profile/proactive-planner.d.ts.map +1 -0
  179. package/dist/activity-profile/proactive-planner.js +529 -0
  180. package/dist/activity-profile/proactive-planner.js.map +1 -0
  181. package/dist/activity-profile/proactive-worker.d.ts +33 -0
  182. package/dist/activity-profile/proactive-worker.d.ts.map +1 -0
  183. package/dist/activity-profile/proactive-worker.js +779 -0
  184. package/dist/activity-profile/proactive-worker.js.map +1 -0
  185. package/dist/activity-profile/profile-metadata.d.ts +10 -0
  186. package/dist/activity-profile/profile-metadata.d.ts.map +1 -0
  187. package/dist/activity-profile/profile-metadata.js +16 -0
  188. package/dist/activity-profile/profile-metadata.js.map +1 -0
  189. package/dist/activity-profile/redactor.d.ts +15 -0
  190. package/dist/activity-profile/redactor.d.ts.map +1 -0
  191. package/dist/activity-profile/redactor.js +22 -0
  192. package/dist/activity-profile/redactor.js.map +1 -0
  193. package/dist/activity-profile/service.d.ts +11 -0
  194. package/dist/activity-profile/service.d.ts.map +1 -0
  195. package/dist/activity-profile/service.js +272 -0
  196. package/dist/activity-profile/service.js.map +1 -0
  197. package/dist/activity-profile/types.d.ts +97 -0
  198. package/dist/activity-profile/types.d.ts.map +1 -0
  199. package/dist/activity-profile/types.js +36 -0
  200. package/dist/activity-profile/types.js.map +1 -0
  201. package/dist/agent-lifeops.d.ts +2 -0
  202. package/dist/agent-lifeops.d.ts.map +1 -0
  203. package/dist/agent-lifeops.js +2 -0
  204. package/dist/agent-lifeops.js.map +1 -0
  205. package/dist/api/client-lifeops.d.ts +319 -0
  206. package/dist/api/client-lifeops.d.ts.map +1 -0
  207. package/dist/api/client-lifeops.js +794 -0
  208. package/dist/api/client-lifeops.js.map +1 -0
  209. package/dist/automation-node-contributor.d.ts +2 -0
  210. package/dist/automation-node-contributor.d.ts.map +1 -0
  211. package/dist/automation-node-contributor.js +184 -0
  212. package/dist/automation-node-contributor.js.map +1 -0
  213. package/dist/client.d.ts +16 -0
  214. package/dist/client.d.ts.map +1 -0
  215. package/dist/client.js +18 -0
  216. package/dist/client.js.map +1 -0
  217. package/dist/components/AppBlockerSettingsCard.d.ts +3 -0
  218. package/dist/components/AppBlockerSettingsCard.d.ts.map +1 -0
  219. package/dist/components/AppBlockerSettingsCard.js +538 -0
  220. package/dist/components/AppBlockerSettingsCard.js.map +1 -0
  221. package/dist/components/WebsiteBlockerSettingsCard.d.ts +3 -0
  222. package/dist/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
  223. package/dist/components/WebsiteBlockerSettingsCard.js +148 -0
  224. package/dist/components/WebsiteBlockerSettingsCard.js.map +1 -0
  225. package/dist/contracts/index.d.ts +2 -0
  226. package/dist/contracts/index.d.ts.map +1 -0
  227. package/dist/contracts/index.js +2 -0
  228. package/dist/contracts/index.js.map +1 -0
  229. package/dist/contracts/lifeops.d.ts +2 -0
  230. package/dist/contracts/lifeops.d.ts.map +1 -0
  231. package/dist/contracts/lifeops.js +2 -0
  232. package/dist/contracts/lifeops.js.map +1 -0
  233. package/dist/default-packs/autofill-whitelist-pack.d.ts +17 -0
  234. package/dist/default-packs/autofill-whitelist-pack.d.ts.map +1 -0
  235. package/dist/default-packs/autofill-whitelist-pack.js +56 -0
  236. package/dist/default-packs/autofill-whitelist-pack.js.map +1 -0
  237. package/dist/default-packs/consolidation-policies.d.ts +14 -0
  238. package/dist/default-packs/consolidation-policies.d.ts.map +1 -0
  239. package/dist/default-packs/consolidation-policies.js +17 -0
  240. package/dist/default-packs/consolidation-policies.js.map +1 -0
  241. package/dist/default-packs/contract-types.d.ts +200 -0
  242. package/dist/default-packs/contract-types.d.ts.map +1 -0
  243. package/dist/default-packs/contract-types.js +1 -0
  244. package/dist/default-packs/contract-types.js.map +1 -0
  245. package/dist/default-packs/daily-rhythm.d.ts +28 -0
  246. package/dist/default-packs/daily-rhythm.d.ts.map +1 -0
  247. package/dist/default-packs/daily-rhythm.js +136 -0
  248. package/dist/default-packs/daily-rhythm.js.map +1 -0
  249. package/dist/default-packs/escalation-ladders.d.ts +18 -0
  250. package/dist/default-packs/escalation-ladders.d.ts.map +1 -0
  251. package/dist/default-packs/escalation-ladders.js +17 -0
  252. package/dist/default-packs/escalation-ladders.js.map +1 -0
  253. package/dist/default-packs/executive-assistant.d.ts +50 -0
  254. package/dist/default-packs/executive-assistant.d.ts.map +1 -0
  255. package/dist/default-packs/executive-assistant.js +745 -0
  256. package/dist/default-packs/executive-assistant.js.map +1 -0
  257. package/dist/default-packs/followup-starter.d.ts +49 -0
  258. package/dist/default-packs/followup-starter.d.ts.map +1 -0
  259. package/dist/default-packs/followup-starter.js +104 -0
  260. package/dist/default-packs/followup-starter.js.map +1 -0
  261. package/dist/default-packs/habit-starters.d.ts +37 -0
  262. package/dist/default-packs/habit-starters.d.ts.map +1 -0
  263. package/dist/default-packs/habit-starters.js +255 -0
  264. package/dist/default-packs/habit-starters.js.map +1 -0
  265. package/dist/default-packs/inbox-triage-starter.d.ts +23 -0
  266. package/dist/default-packs/inbox-triage-starter.d.ts.map +1 -0
  267. package/dist/default-packs/inbox-triage-starter.js +61 -0
  268. package/dist/default-packs/inbox-triage-starter.js.map +1 -0
  269. package/dist/default-packs/index.d.ts +54 -0
  270. package/dist/default-packs/index.d.ts.map +1 -0
  271. package/dist/default-packs/index.js +150 -0
  272. package/dist/default-packs/index.js.map +1 -0
  273. package/dist/default-packs/lint.d.ts +62 -0
  274. package/dist/default-packs/lint.d.ts.map +1 -0
  275. package/dist/default-packs/lint.js +161 -0
  276. package/dist/default-packs/lint.js.map +1 -0
  277. package/dist/default-packs/morning-brief.d.ts +44 -0
  278. package/dist/default-packs/morning-brief.d.ts.map +1 -0
  279. package/dist/default-packs/morning-brief.js +69 -0
  280. package/dist/default-packs/morning-brief.js.map +1 -0
  281. package/dist/default-packs/quiet-user-watcher.d.ts +49 -0
  282. package/dist/default-packs/quiet-user-watcher.d.ts.map +1 -0
  283. package/dist/default-packs/quiet-user-watcher.js +92 -0
  284. package/dist/default-packs/quiet-user-watcher.js.map +1 -0
  285. package/dist/default-packs/registry-types.d.ts +51 -0
  286. package/dist/default-packs/registry-types.d.ts.map +1 -0
  287. package/dist/default-packs/registry-types.js +1 -0
  288. package/dist/default-packs/registry-types.js.map +1 -0
  289. package/dist/default-packs/task-definitions.d.ts +88 -0
  290. package/dist/default-packs/task-definitions.d.ts.map +1 -0
  291. package/dist/default-packs/task-definitions.js +87 -0
  292. package/dist/default-packs/task-definitions.js.map +1 -0
  293. package/dist/events/index.d.ts +34 -0
  294. package/dist/events/index.d.ts.map +1 -0
  295. package/dist/events/index.js +30 -0
  296. package/dist/events/index.js.map +1 -0
  297. package/dist/followup/actions/listOverdueFollowups.d.ts +3 -0
  298. package/dist/followup/actions/listOverdueFollowups.d.ts.map +1 -0
  299. package/dist/followup/actions/listOverdueFollowups.js +90 -0
  300. package/dist/followup/actions/listOverdueFollowups.js.map +1 -0
  301. package/dist/followup/actions/markFollowupDone.d.ts +3 -0
  302. package/dist/followup/actions/markFollowupDone.d.ts.map +1 -0
  303. package/dist/followup/actions/markFollowupDone.js +171 -0
  304. package/dist/followup/actions/markFollowupDone.js.map +1 -0
  305. package/dist/followup/actions/setFollowupThreshold.d.ts +3 -0
  306. package/dist/followup/actions/setFollowupThreshold.d.ts.map +1 -0
  307. package/dist/followup/actions/setFollowupThreshold.js +171 -0
  308. package/dist/followup/actions/setFollowupThreshold.js.map +1 -0
  309. package/dist/followup/followup-tracker.d.ts +83 -0
  310. package/dist/followup/followup-tracker.d.ts.map +1 -0
  311. package/dist/followup/followup-tracker.js +311 -0
  312. package/dist/followup/followup-tracker.js.map +1 -0
  313. package/dist/followup/index.d.ts +5 -0
  314. package/dist/followup/index.d.ts.map +1 -0
  315. package/dist/followup/index.js +39 -0
  316. package/dist/followup/index.js.map +1 -0
  317. package/dist/hooks/connector-error.d.ts +2 -0
  318. package/dist/hooks/connector-error.d.ts.map +1 -0
  319. package/dist/hooks/connector-error.js +13 -0
  320. package/dist/hooks/connector-error.js.map +1 -0
  321. package/dist/hooks/useDiscordConnector.d.ts +11 -0
  322. package/dist/hooks/useDiscordConnector.d.ts.map +1 -0
  323. package/dist/hooks/useDiscordConnector.js +95 -0
  324. package/dist/hooks/useDiscordConnector.js.map +1 -0
  325. package/dist/hooks/useGoogleLifeOpsConnector.d.ts +23 -0
  326. package/dist/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
  327. package/dist/hooks/useGoogleLifeOpsConnector.js +630 -0
  328. package/dist/hooks/useGoogleLifeOpsConnector.js.map +1 -0
  329. package/dist/hooks/useIMessageConnector.d.ts +10 -0
  330. package/dist/hooks/useIMessageConnector.d.ts.map +1 -0
  331. package/dist/hooks/useIMessageConnector.js +57 -0
  332. package/dist/hooks/useIMessageConnector.js.map +1 -0
  333. package/dist/hooks/useInbox.d.ts +36 -0
  334. package/dist/hooks/useInbox.d.ts.map +1 -0
  335. package/dist/hooks/useInbox.js +96 -0
  336. package/dist/hooks/useInbox.js.map +1 -0
  337. package/dist/hooks/useLifeOpsActivitySignals.d.ts +2 -0
  338. package/dist/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
  339. package/dist/hooks/useLifeOpsActivitySignals.js +358 -0
  340. package/dist/hooks/useLifeOpsActivitySignals.js.map +1 -0
  341. package/dist/hooks/useLifeOpsAppState.d.ts +9 -0
  342. package/dist/hooks/useLifeOpsAppState.d.ts.map +1 -0
  343. package/dist/hooks/useLifeOpsAppState.js +79 -0
  344. package/dist/hooks/useLifeOpsAppState.js.map +1 -0
  345. package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
  346. package/dist/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
  347. package/dist/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
  348. package/dist/hooks/useLifeOpsCapabilitiesStatus.js.map +1 -0
  349. package/dist/hooks/useLifeOpsXConnector.d.ts +11 -0
  350. package/dist/hooks/useLifeOpsXConnector.d.ts.map +1 -0
  351. package/dist/hooks/useLifeOpsXConnector.js +92 -0
  352. package/dist/hooks/useLifeOpsXConnector.js.map +1 -0
  353. package/dist/hooks/useSignalConnector.d.ts +14 -0
  354. package/dist/hooks/useSignalConnector.d.ts.map +1 -0
  355. package/dist/hooks/useSignalConnector.js +89 -0
  356. package/dist/hooks/useSignalConnector.js.map +1 -0
  357. package/dist/hooks/useTelegramConnector.d.ts +14 -0
  358. package/dist/hooks/useTelegramConnector.d.ts.map +1 -0
  359. package/dist/hooks/useTelegramConnector.js +97 -0
  360. package/dist/hooks/useTelegramConnector.js.map +1 -0
  361. package/dist/hooks/useWhatsAppConnector.d.ts +8 -0
  362. package/dist/hooks/useWhatsAppConnector.d.ts.map +1 -0
  363. package/dist/hooks/useWhatsAppConnector.js +62 -0
  364. package/dist/hooks/useWhatsAppConnector.js.map +1 -0
  365. package/dist/inbox/message-fetcher.d.ts +11 -0
  366. package/dist/inbox/message-fetcher.d.ts.map +1 -0
  367. package/dist/inbox/message-fetcher.js +13 -0
  368. package/dist/inbox/message-fetcher.js.map +1 -0
  369. package/dist/inbox/repository.d.ts +11 -0
  370. package/dist/inbox/repository.d.ts.map +1 -0
  371. package/dist/inbox/repository.js +5 -0
  372. package/dist/inbox/repository.js.map +1 -0
  373. package/dist/inbox/types.d.ts +10 -0
  374. package/dist/inbox/types.d.ts.map +1 -0
  375. package/dist/inbox/types.js +2 -0
  376. package/dist/inbox/types.js.map +1 -0
  377. package/dist/index.d.ts +36 -0
  378. package/dist/index.d.ts.map +1 -0
  379. package/dist/index.js +188 -0
  380. package/dist/index.js.map +1 -0
  381. package/dist/lifeops/access.d.ts +29 -0
  382. package/dist/lifeops/access.d.ts.map +1 -0
  383. package/dist/lifeops/access.js +56 -0
  384. package/dist/lifeops/access.js.map +1 -0
  385. package/dist/lifeops/app-state.d.ts +22 -0
  386. package/dist/lifeops/app-state.d.ts.map +1 -0
  387. package/dist/lifeops/app-state.js +67 -0
  388. package/dist/lifeops/app-state.js.map +1 -0
  389. package/dist/lifeops/apple-reminders.d.ts +67 -0
  390. package/dist/lifeops/apple-reminders.d.ts.map +1 -0
  391. package/dist/lifeops/apple-reminders.js +396 -0
  392. package/dist/lifeops/apple-reminders.js.map +1 -0
  393. package/dist/lifeops/approval-queue.d.ts +38 -0
  394. package/dist/lifeops/approval-queue.d.ts.map +1 -0
  395. package/dist/lifeops/approval-queue.js +575 -0
  396. package/dist/lifeops/approval-queue.js.map +1 -0
  397. package/dist/lifeops/approval-queue.types.d.ts +172 -0
  398. package/dist/lifeops/approval-queue.types.d.ts.map +1 -0
  399. package/dist/lifeops/approval-queue.types.js +27 -0
  400. package/dist/lifeops/approval-queue.types.js.map +1 -0
  401. package/dist/lifeops/autofill-whitelist.d.ts +20 -0
  402. package/dist/lifeops/autofill-whitelist.d.ts.map +1 -0
  403. package/dist/lifeops/autofill-whitelist.js +59 -0
  404. package/dist/lifeops/autofill-whitelist.js.map +1 -0
  405. package/dist/lifeops/background-planner-dispatch.d.ts +60 -0
  406. package/dist/lifeops/background-planner-dispatch.d.ts.map +1 -0
  407. package/dist/lifeops/background-planner-dispatch.js +113 -0
  408. package/dist/lifeops/background-planner-dispatch.js.map +1 -0
  409. package/dist/lifeops/background-planner.d.ts +140 -0
  410. package/dist/lifeops/background-planner.d.ts.map +1 -0
  411. package/dist/lifeops/background-planner.js +359 -0
  412. package/dist/lifeops/background-planner.js.map +1 -0
  413. package/dist/lifeops/bill-extraction.d.ts +46 -0
  414. package/dist/lifeops/bill-extraction.d.ts.map +1 -0
  415. package/dist/lifeops/bill-extraction.js +325 -0
  416. package/dist/lifeops/bill-extraction.js.map +1 -0
  417. package/dist/lifeops/browser-constants.d.ts +4 -0
  418. package/dist/lifeops/browser-constants.d.ts.map +1 -0
  419. package/dist/lifeops/browser-constants.js +27 -0
  420. package/dist/lifeops/browser-constants.js.map +1 -0
  421. package/dist/lifeops/browser-extension-store.d.ts +61 -0
  422. package/dist/lifeops/browser-extension-store.d.ts.map +1 -0
  423. package/dist/lifeops/browser-extension-store.js +176 -0
  424. package/dist/lifeops/browser-extension-store.js.map +1 -0
  425. package/dist/lifeops/browser-session-lifecycle.d.ts +57 -0
  426. package/dist/lifeops/browser-session-lifecycle.d.ts.map +1 -0
  427. package/dist/lifeops/browser-session-lifecycle.js +308 -0
  428. package/dist/lifeops/browser-session-lifecycle.js.map +1 -0
  429. package/dist/lifeops/bulk-review.d.ts +333 -0
  430. package/dist/lifeops/bulk-review.d.ts.map +1 -0
  431. package/dist/lifeops/bulk-review.js +1120 -0
  432. package/dist/lifeops/bulk-review.js.map +1 -0
  433. package/dist/lifeops/calendar-gate.d.ts +20 -0
  434. package/dist/lifeops/calendar-gate.d.ts.map +1 -0
  435. package/dist/lifeops/calendar-gate.js +30 -0
  436. package/dist/lifeops/calendar-gate.js.map +1 -0
  437. package/dist/lifeops/channels/contract.d.ts +47 -0
  438. package/dist/lifeops/channels/contract.d.ts.map +1 -0
  439. package/dist/lifeops/channels/contract.js +1 -0
  440. package/dist/lifeops/channels/contract.js.map +1 -0
  441. package/dist/lifeops/channels/default-pack.d.ts +26 -0
  442. package/dist/lifeops/channels/default-pack.d.ts.map +1 -0
  443. package/dist/lifeops/channels/default-pack.js +243 -0
  444. package/dist/lifeops/channels/default-pack.js.map +1 -0
  445. package/dist/lifeops/channels/index.d.ts +5 -0
  446. package/dist/lifeops/channels/index.d.ts.map +1 -0
  447. package/dist/lifeops/channels/index.js +23 -0
  448. package/dist/lifeops/channels/index.js.map +1 -0
  449. package/dist/lifeops/channels/priority-posture.d.ts +36 -0
  450. package/dist/lifeops/channels/priority-posture.d.ts.map +1 -0
  451. package/dist/lifeops/channels/priority-posture.js +27 -0
  452. package/dist/lifeops/channels/priority-posture.js.map +1 -0
  453. package/dist/lifeops/channels/registry.d.ts +7 -0
  454. package/dist/lifeops/channels/registry.d.ts.map +1 -0
  455. package/dist/lifeops/channels/registry.js +49 -0
  456. package/dist/lifeops/channels/registry.js.map +1 -0
  457. package/dist/lifeops/checkin/checkin-service.d.ts +66 -0
  458. package/dist/lifeops/checkin/checkin-service.d.ts.map +1 -0
  459. package/dist/lifeops/checkin/checkin-service.js +1084 -0
  460. package/dist/lifeops/checkin/checkin-service.js.map +1 -0
  461. package/dist/lifeops/checkin/schedule-resolver.d.ts +17 -0
  462. package/dist/lifeops/checkin/schedule-resolver.d.ts.map +1 -0
  463. package/dist/lifeops/checkin/schedule-resolver.js +26 -0
  464. package/dist/lifeops/checkin/schedule-resolver.js.map +1 -0
  465. package/dist/lifeops/checkin/types.d.ts +106 -0
  466. package/dist/lifeops/checkin/types.d.ts.map +1 -0
  467. package/dist/lifeops/checkin/types.js +1 -0
  468. package/dist/lifeops/checkin/types.js.map +1 -0
  469. package/dist/lifeops/connectors/_helpers.d.ts +51 -0
  470. package/dist/lifeops/connectors/_helpers.d.ts.map +1 -0
  471. package/dist/lifeops/connectors/_helpers.js +104 -0
  472. package/dist/lifeops/connectors/_helpers.js.map +1 -0
  473. package/dist/lifeops/connectors/calendly.d.ts +11 -0
  474. package/dist/lifeops/connectors/calendly.d.ts.map +1 -0
  475. package/dist/lifeops/connectors/calendly.js +61 -0
  476. package/dist/lifeops/connectors/calendly.js.map +1 -0
  477. package/dist/lifeops/connectors/contract.d.ts +88 -0
  478. package/dist/lifeops/connectors/contract.d.ts.map +1 -0
  479. package/dist/lifeops/connectors/contract.js +1 -0
  480. package/dist/lifeops/connectors/contract.js.map +1 -0
  481. package/dist/lifeops/connectors/default-pack.d.ts +35 -0
  482. package/dist/lifeops/connectors/default-pack.d.ts.map +1 -0
  483. package/dist/lifeops/connectors/default-pack.js +37 -0
  484. package/dist/lifeops/connectors/default-pack.js.map +1 -0
  485. package/dist/lifeops/connectors/discord.d.ts +8 -0
  486. package/dist/lifeops/connectors/discord.d.ts.map +1 -0
  487. package/dist/lifeops/connectors/discord.js +53 -0
  488. package/dist/lifeops/connectors/discord.js.map +1 -0
  489. package/dist/lifeops/connectors/dispatch-policy.d.ts +75 -0
  490. package/dist/lifeops/connectors/dispatch-policy.d.ts.map +1 -0
  491. package/dist/lifeops/connectors/dispatch-policy.js +35 -0
  492. package/dist/lifeops/connectors/dispatch-policy.js.map +1 -0
  493. package/dist/lifeops/connectors/duffel.d.ts +11 -0
  494. package/dist/lifeops/connectors/duffel.d.ts.map +1 -0
  495. package/dist/lifeops/connectors/duffel.js +74 -0
  496. package/dist/lifeops/connectors/duffel.js.map +1 -0
  497. package/dist/lifeops/connectors/google.d.ts +27 -0
  498. package/dist/lifeops/connectors/google.d.ts.map +1 -0
  499. package/dist/lifeops/connectors/google.js +80 -0
  500. package/dist/lifeops/connectors/google.js.map +1 -0
  501. package/dist/lifeops/connectors/imessage.d.ts +11 -0
  502. package/dist/lifeops/connectors/imessage.d.ts.map +1 -0
  503. package/dist/lifeops/connectors/imessage.js +55 -0
  504. package/dist/lifeops/connectors/imessage.js.map +1 -0
  505. package/dist/lifeops/connectors/index.d.ts +5 -0
  506. package/dist/lifeops/connectors/index.d.ts.map +1 -0
  507. package/dist/lifeops/connectors/index.js +23 -0
  508. package/dist/lifeops/connectors/index.js.map +1 -0
  509. package/dist/lifeops/connectors/mockoon-redirect.d.ts +54 -0
  510. package/dist/lifeops/connectors/mockoon-redirect.d.ts.map +1 -0
  511. package/dist/lifeops/connectors/mockoon-redirect.js +71 -0
  512. package/dist/lifeops/connectors/mockoon-redirect.js.map +1 -0
  513. package/dist/lifeops/connectors/registry.d.ts +7 -0
  514. package/dist/lifeops/connectors/registry.d.ts.map +1 -0
  515. package/dist/lifeops/connectors/registry.js +55 -0
  516. package/dist/lifeops/connectors/registry.js.map +1 -0
  517. package/dist/lifeops/connectors/signal.d.ts +8 -0
  518. package/dist/lifeops/connectors/signal.d.ts.map +1 -0
  519. package/dist/lifeops/connectors/signal.js +60 -0
  520. package/dist/lifeops/connectors/signal.js.map +1 -0
  521. package/dist/lifeops/connectors/telegram.d.ts +12 -0
  522. package/dist/lifeops/connectors/telegram.d.ts.map +1 -0
  523. package/dist/lifeops/connectors/telegram.js +65 -0
  524. package/dist/lifeops/connectors/telegram.js.map +1 -0
  525. package/dist/lifeops/connectors/twilio.d.ts +15 -0
  526. package/dist/lifeops/connectors/twilio.d.ts.map +1 -0
  527. package/dist/lifeops/connectors/twilio.js +126 -0
  528. package/dist/lifeops/connectors/twilio.js.map +1 -0
  529. package/dist/lifeops/connectors/whatsapp.d.ts +10 -0
  530. package/dist/lifeops/connectors/whatsapp.d.ts.map +1 -0
  531. package/dist/lifeops/connectors/whatsapp.js +56 -0
  532. package/dist/lifeops/connectors/whatsapp.js.map +1 -0
  533. package/dist/lifeops/connectors/x.d.ts +8 -0
  534. package/dist/lifeops/connectors/x.d.ts.map +1 -0
  535. package/dist/lifeops/connectors/x.js +62 -0
  536. package/dist/lifeops/connectors/x.js.map +1 -0
  537. package/dist/lifeops/contact-route-policy.d.ts +27 -0
  538. package/dist/lifeops/contact-route-policy.d.ts.map +1 -0
  539. package/dist/lifeops/contact-route-policy.js +153 -0
  540. package/dist/lifeops/contact-route-policy.js.map +1 -0
  541. package/dist/lifeops/continuity-probe.d.ts +49 -0
  542. package/dist/lifeops/continuity-probe.d.ts.map +1 -0
  543. package/dist/lifeops/continuity-probe.js +161 -0
  544. package/dist/lifeops/continuity-probe.js.map +1 -0
  545. package/dist/lifeops/cross-channel-search.d.ts +108 -0
  546. package/dist/lifeops/cross-channel-search.d.ts.map +1 -0
  547. package/dist/lifeops/cross-channel-search.js +888 -0
  548. package/dist/lifeops/cross-channel-search.js.map +1 -0
  549. package/dist/lifeops/defaults.d.ts +30 -0
  550. package/dist/lifeops/defaults.d.ts.map +1 -0
  551. package/dist/lifeops/defaults.js +206 -0
  552. package/dist/lifeops/defaults.js.map +1 -0
  553. package/dist/lifeops/device-bus-service.d.ts +16 -0
  554. package/dist/lifeops/device-bus-service.d.ts.map +1 -0
  555. package/dist/lifeops/device-bus-service.js +20 -0
  556. package/dist/lifeops/device-bus-service.js.map +1 -0
  557. package/dist/lifeops/device-identity.d.ts +31 -0
  558. package/dist/lifeops/device-identity.d.ts.map +1 -0
  559. package/dist/lifeops/device-identity.js +94 -0
  560. package/dist/lifeops/device-identity.js.map +1 -0
  561. package/dist/lifeops/document-review.d.ts +264 -0
  562. package/dist/lifeops/document-review.d.ts.map +1 -0
  563. package/dist/lifeops/document-review.js +925 -0
  564. package/dist/lifeops/document-review.js.map +1 -0
  565. package/dist/lifeops/email-classifier.d.ts +9 -0
  566. package/dist/lifeops/email-classifier.d.ts.map +1 -0
  567. package/dist/lifeops/email-classifier.js +15 -0
  568. package/dist/lifeops/email-classifier.js.map +1 -0
  569. package/dist/lifeops/email-curation.d.ts +13 -0
  570. package/dist/lifeops/email-curation.d.ts.map +1 -0
  571. package/dist/lifeops/email-curation.js +2 -0
  572. package/dist/lifeops/email-curation.js.map +1 -0
  573. package/dist/lifeops/email-unsubscribe-types.d.ts +7 -0
  574. package/dist/lifeops/email-unsubscribe-types.d.ts.map +1 -0
  575. package/dist/lifeops/email-unsubscribe-types.js +1 -0
  576. package/dist/lifeops/email-unsubscribe-types.js.map +1 -0
  577. package/dist/lifeops/enforcement-windows.d.ts +34 -0
  578. package/dist/lifeops/enforcement-windows.d.ts.map +1 -0
  579. package/dist/lifeops/enforcement-windows.js +80 -0
  580. package/dist/lifeops/enforcement-windows.js.map +1 -0
  581. package/dist/lifeops/engine.d.ts +8 -0
  582. package/dist/lifeops/engine.d.ts.map +1 -0
  583. package/dist/lifeops/engine.js +540 -0
  584. package/dist/lifeops/engine.js.map +1 -0
  585. package/dist/lifeops/entities/index.d.ts +4 -0
  586. package/dist/lifeops/entities/index.d.ts.map +1 -0
  587. package/dist/lifeops/entities/index.js +29 -0
  588. package/dist/lifeops/entities/index.js.map +1 -0
  589. package/dist/lifeops/entities/merge.d.ts +9 -0
  590. package/dist/lifeops/entities/merge.d.ts.map +1 -0
  591. package/dist/lifeops/entities/merge.js +17 -0
  592. package/dist/lifeops/entities/merge.js.map +1 -0
  593. package/dist/lifeops/entities/store.d.ts +13 -0
  594. package/dist/lifeops/entities/store.d.ts.map +1 -0
  595. package/dist/lifeops/entities/store.js +7 -0
  596. package/dist/lifeops/entities/store.js.map +1 -0
  597. package/dist/lifeops/entities/types.d.ts +9 -0
  598. package/dist/lifeops/entities/types.d.ts.map +1 -0
  599. package/dist/lifeops/entities/types.js +13 -0
  600. package/dist/lifeops/entities/types.js.map +1 -0
  601. package/dist/lifeops/entities/voice-attribution.d.ts +70 -0
  602. package/dist/lifeops/entities/voice-attribution.d.ts.map +1 -0
  603. package/dist/lifeops/entities/voice-attribution.js +121 -0
  604. package/dist/lifeops/entities/voice-attribution.js.map +1 -0
  605. package/dist/lifeops/entities/voice-observer-bridge.d.ts +32 -0
  606. package/dist/lifeops/entities/voice-observer-bridge.d.ts.map +1 -0
  607. package/dist/lifeops/entities/voice-observer-bridge.js +68 -0
  608. package/dist/lifeops/entities/voice-observer-bridge.js.map +1 -0
  609. package/dist/lifeops/entities/voice-observer.d.ts +72 -0
  610. package/dist/lifeops/entities/voice-observer.d.ts.map +1 -0
  611. package/dist/lifeops/entities/voice-observer.js +97 -0
  612. package/dist/lifeops/entities/voice-observer.js.map +1 -0
  613. package/dist/lifeops/escalation-ladders.d.ts +28 -0
  614. package/dist/lifeops/escalation-ladders.d.ts.map +1 -0
  615. package/dist/lifeops/escalation-ladders.js +17 -0
  616. package/dist/lifeops/escalation-ladders.js.map +1 -0
  617. package/dist/lifeops/fda-probe.d.ts +23 -0
  618. package/dist/lifeops/fda-probe.d.ts.map +1 -0
  619. package/dist/lifeops/fda-probe.js +59 -0
  620. package/dist/lifeops/fda-probe.js.map +1 -0
  621. package/dist/lifeops/feature-flags.d.ts +24 -0
  622. package/dist/lifeops/feature-flags.d.ts.map +1 -0
  623. package/dist/lifeops/feature-flags.js +261 -0
  624. package/dist/lifeops/feature-flags.js.map +1 -0
  625. package/dist/lifeops/feature-flags.types.d.ts +156 -0
  626. package/dist/lifeops/feature-flags.types.d.ts.map +1 -0
  627. package/dist/lifeops/feature-flags.types.js +129 -0
  628. package/dist/lifeops/feature-flags.types.js.map +1 -0
  629. package/dist/lifeops/first-run/defaults.d.ts +57 -0
  630. package/dist/lifeops/first-run/defaults.d.ts.map +1 -0
  631. package/dist/lifeops/first-run/defaults.js +159 -0
  632. package/dist/lifeops/first-run/defaults.js.map +1 -0
  633. package/dist/lifeops/first-run/questions.d.ts +74 -0
  634. package/dist/lifeops/first-run/questions.d.ts.map +1 -0
  635. package/dist/lifeops/first-run/questions.js +184 -0
  636. package/dist/lifeops/first-run/questions.js.map +1 -0
  637. package/dist/lifeops/first-run/replay.d.ts +41 -0
  638. package/dist/lifeops/first-run/replay.d.ts.map +1 -0
  639. package/dist/lifeops/first-run/replay.js +34 -0
  640. package/dist/lifeops/first-run/replay.js.map +1 -0
  641. package/dist/lifeops/first-run/service.d.ts +147 -0
  642. package/dist/lifeops/first-run/service.d.ts.map +1 -0
  643. package/dist/lifeops/first-run/service.js +455 -0
  644. package/dist/lifeops/first-run/service.js.map +1 -0
  645. package/dist/lifeops/first-run/state.d.ts +36 -0
  646. package/dist/lifeops/first-run/state.d.ts.map +1 -0
  647. package/dist/lifeops/first-run/state.js +128 -0
  648. package/dist/lifeops/first-run/state.js.map +1 -0
  649. package/dist/lifeops/global-pause/store.d.ts +22 -0
  650. package/dist/lifeops/global-pause/store.d.ts.map +1 -0
  651. package/dist/lifeops/global-pause/store.js +18 -0
  652. package/dist/lifeops/global-pause/store.js.map +1 -0
  653. package/dist/lifeops/goal-grounding.d.ts +9 -0
  654. package/dist/lifeops/goal-grounding.d.ts.map +1 -0
  655. package/dist/lifeops/goal-grounding.js +19 -0
  656. package/dist/lifeops/goal-grounding.js.map +1 -0
  657. package/dist/lifeops/goal-semantic-evaluator.d.ts +8 -0
  658. package/dist/lifeops/goal-semantic-evaluator.d.ts.map +1 -0
  659. package/dist/lifeops/goal-semantic-evaluator.js +7 -0
  660. package/dist/lifeops/goal-semantic-evaluator.js.map +1 -0
  661. package/dist/lifeops/google/format-helpers.d.ts +63 -0
  662. package/dist/lifeops/google/format-helpers.d.ts.map +1 -0
  663. package/dist/lifeops/google/format-helpers.js +597 -0
  664. package/dist/lifeops/google/format-helpers.js.map +1 -0
  665. package/dist/lifeops/google-plugin-delegates.d.ts +59 -0
  666. package/dist/lifeops/google-plugin-delegates.d.ts.map +1 -0
  667. package/dist/lifeops/google-plugin-delegates.js +408 -0
  668. package/dist/lifeops/google-plugin-delegates.js.map +1 -0
  669. package/dist/lifeops/google-scopes.d.ts +15 -0
  670. package/dist/lifeops/google-scopes.d.ts.map +1 -0
  671. package/dist/lifeops/google-scopes.js +118 -0
  672. package/dist/lifeops/google-scopes.js.map +1 -0
  673. package/dist/lifeops/handoff/store.d.ts +23 -0
  674. package/dist/lifeops/handoff/store.d.ts.map +1 -0
  675. package/dist/lifeops/handoff/store.js +20 -0
  676. package/dist/lifeops/handoff/store.js.map +1 -0
  677. package/dist/lifeops/i18n/localized-examples-provider.d.ts +16 -0
  678. package/dist/lifeops/i18n/localized-examples-provider.d.ts.map +1 -0
  679. package/dist/lifeops/i18n/localized-examples-provider.js +33 -0
  680. package/dist/lifeops/i18n/localized-examples-provider.js.map +1 -0
  681. package/dist/lifeops/i18n/localized-examples-resolver.d.ts +32 -0
  682. package/dist/lifeops/i18n/localized-examples-resolver.d.ts.map +1 -0
  683. package/dist/lifeops/i18n/localized-examples-resolver.js +28 -0
  684. package/dist/lifeops/i18n/localized-examples-resolver.js.map +1 -0
  685. package/dist/lifeops/i18n/prompt-registry.d.ts +64 -0
  686. package/dist/lifeops/i18n/prompt-registry.d.ts.map +1 -0
  687. package/dist/lifeops/i18n/prompt-registry.js +283 -0
  688. package/dist/lifeops/i18n/prompt-registry.js.map +1 -0
  689. package/dist/lifeops/imessage-outbound-probe.d.ts +7 -0
  690. package/dist/lifeops/imessage-outbound-probe.d.ts.map +1 -0
  691. package/dist/lifeops/imessage-outbound-probe.js +81 -0
  692. package/dist/lifeops/imessage-outbound-probe.js.map +1 -0
  693. package/dist/lifeops/index.d.ts +24 -0
  694. package/dist/lifeops/index.d.ts.map +1 -0
  695. package/dist/lifeops/index.js +24 -0
  696. package/dist/lifeops/index.js.map +1 -0
  697. package/dist/lifeops/intent-sync.d.ts +64 -0
  698. package/dist/lifeops/intent-sync.d.ts.map +1 -0
  699. package/dist/lifeops/intent-sync.js +321 -0
  700. package/dist/lifeops/intent-sync.js.map +1 -0
  701. package/dist/lifeops/messaging/index.d.ts +2 -0
  702. package/dist/lifeops/messaging/index.d.ts.map +1 -0
  703. package/dist/lifeops/messaging/index.js +5 -0
  704. package/dist/lifeops/messaging/index.js.map +1 -0
  705. package/dist/lifeops/messaging/owner-send-policy.d.ts +3 -0
  706. package/dist/lifeops/messaging/owner-send-policy.d.ts.map +1 -0
  707. package/dist/lifeops/messaging/owner-send-policy.js +83 -0
  708. package/dist/lifeops/messaging/owner-send-policy.js.map +1 -0
  709. package/dist/lifeops/notifications-push.d.ts +37 -0
  710. package/dist/lifeops/notifications-push.d.ts.map +1 -0
  711. package/dist/lifeops/notifications-push.js +95 -0
  712. package/dist/lifeops/notifications-push.js.map +1 -0
  713. package/dist/lifeops/optimized-prompt-instructions.d.ts +5 -0
  714. package/dist/lifeops/optimized-prompt-instructions.d.ts.map +1 -0
  715. package/dist/lifeops/optimized-prompt-instructions.js +48 -0
  716. package/dist/lifeops/optimized-prompt-instructions.js.map +1 -0
  717. package/dist/lifeops/owner/fact-store.d.ts +143 -0
  718. package/dist/lifeops/owner/fact-store.d.ts.map +1 -0
  719. package/dist/lifeops/owner/fact-store.js +446 -0
  720. package/dist/lifeops/owner/fact-store.js.map +1 -0
  721. package/dist/lifeops/owner/profile-extraction-evaluator.d.ts +3 -0
  722. package/dist/lifeops/owner/profile-extraction-evaluator.d.ts.map +1 -0
  723. package/dist/lifeops/owner/profile-extraction-evaluator.js +241 -0
  724. package/dist/lifeops/owner/profile-extraction-evaluator.js.map +1 -0
  725. package/dist/lifeops/owner-profile.d.ts +61 -0
  726. package/dist/lifeops/owner-profile.d.ts.map +1 -0
  727. package/dist/lifeops/owner-profile.js +407 -0
  728. package/dist/lifeops/owner-profile.js.map +1 -0
  729. package/dist/lifeops/pending-prompts/store.d.ts +23 -0
  730. package/dist/lifeops/pending-prompts/store.d.ts.map +1 -0
  731. package/dist/lifeops/pending-prompts/store.js +16 -0
  732. package/dist/lifeops/pending-prompts/store.js.map +1 -0
  733. package/dist/lifeops/policy-memory.d.ts +190 -0
  734. package/dist/lifeops/policy-memory.d.ts.map +1 -0
  735. package/dist/lifeops/policy-memory.js +1026 -0
  736. package/dist/lifeops/policy-memory.js.map +1 -0
  737. package/dist/lifeops/priority-scoring.d.ts +51 -0
  738. package/dist/lifeops/priority-scoring.d.ts.map +1 -0
  739. package/dist/lifeops/priority-scoring.js +305 -0
  740. package/dist/lifeops/priority-scoring.js.map +1 -0
  741. package/dist/lifeops/privacy-egress.d.ts +92 -0
  742. package/dist/lifeops/privacy-egress.d.ts.map +1 -0
  743. package/dist/lifeops/privacy-egress.js +230 -0
  744. package/dist/lifeops/privacy-egress.js.map +1 -0
  745. package/dist/lifeops/privacy.d.ts +49 -0
  746. package/dist/lifeops/privacy.d.ts.map +1 -0
  747. package/dist/lifeops/privacy.js +66 -0
  748. package/dist/lifeops/privacy.js.map +1 -0
  749. package/dist/lifeops/redact-sensitive-data.d.ts +32 -0
  750. package/dist/lifeops/redact-sensitive-data.d.ts.map +1 -0
  751. package/dist/lifeops/redact-sensitive-data.js +98 -0
  752. package/dist/lifeops/redact-sensitive-data.js.map +1 -0
  753. package/dist/lifeops/registries/app-blocker-contribution.d.ts +13 -0
  754. package/dist/lifeops/registries/app-blocker-contribution.d.ts.map +1 -0
  755. package/dist/lifeops/registries/app-blocker-contribution.js +73 -0
  756. package/dist/lifeops/registries/app-blocker-contribution.js.map +1 -0
  757. package/dist/lifeops/registries/blocker-registry.d.ts +76 -0
  758. package/dist/lifeops/registries/blocker-registry.d.ts.map +1 -0
  759. package/dist/lifeops/registries/blocker-registry.js +40 -0
  760. package/dist/lifeops/registries/blocker-registry.js.map +1 -0
  761. package/dist/lifeops/registries/event-kind-registry.d.ts +57 -0
  762. package/dist/lifeops/registries/event-kind-registry.d.ts.map +1 -0
  763. package/dist/lifeops/registries/event-kind-registry.js +82 -0
  764. package/dist/lifeops/registries/event-kind-registry.js.map +1 -0
  765. package/dist/lifeops/registries/family-registry.d.ts +72 -0
  766. package/dist/lifeops/registries/family-registry.d.ts.map +1 -0
  767. package/dist/lifeops/registries/family-registry.js +98 -0
  768. package/dist/lifeops/registries/family-registry.js.map +1 -0
  769. package/dist/lifeops/registries/feature-flag-default-pack.d.ts +32 -0
  770. package/dist/lifeops/registries/feature-flag-default-pack.d.ts.map +1 -0
  771. package/dist/lifeops/registries/feature-flag-default-pack.js +36 -0
  772. package/dist/lifeops/registries/feature-flag-default-pack.js.map +1 -0
  773. package/dist/lifeops/registries/feature-flag-registry.d.ts +76 -0
  774. package/dist/lifeops/registries/feature-flag-registry.d.ts.map +1 -0
  775. package/dist/lifeops/registries/feature-flag-registry.js +68 -0
  776. package/dist/lifeops/registries/feature-flag-registry.js.map +1 -0
  777. package/dist/lifeops/registries/index.d.ts +24 -0
  778. package/dist/lifeops/registries/index.d.ts.map +1 -0
  779. package/dist/lifeops/registries/index.js +115 -0
  780. package/dist/lifeops/registries/index.js.map +1 -0
  781. package/dist/lifeops/registries/website-blocker-contribution.d.ts +21 -0
  782. package/dist/lifeops/registries/website-blocker-contribution.d.ts.map +1 -0
  783. package/dist/lifeops/registries/website-blocker-contribution.js +76 -0
  784. package/dist/lifeops/registries/website-blocker-contribution.js.map +1 -0
  785. package/dist/lifeops/registries/workflow-step-default-pack.d.ts +30 -0
  786. package/dist/lifeops/registries/workflow-step-default-pack.d.ts.map +1 -0
  787. package/dist/lifeops/registries/workflow-step-default-pack.js +315 -0
  788. package/dist/lifeops/registries/workflow-step-default-pack.js.map +1 -0
  789. package/dist/lifeops/registries/workflow-step-registry.d.ts +101 -0
  790. package/dist/lifeops/registries/workflow-step-registry.d.ts.map +1 -0
  791. package/dist/lifeops/registries/workflow-step-registry.js +56 -0
  792. package/dist/lifeops/registries/workflow-step-registry.js.map +1 -0
  793. package/dist/lifeops/relationships/extraction.d.ts +77 -0
  794. package/dist/lifeops/relationships/extraction.d.ts.map +1 -0
  795. package/dist/lifeops/relationships/extraction.js +146 -0
  796. package/dist/lifeops/relationships/extraction.js.map +1 -0
  797. package/dist/lifeops/relationships/index.d.ts +4 -0
  798. package/dist/lifeops/relationships/index.d.ts.map +1 -0
  799. package/dist/lifeops/relationships/index.js +19 -0
  800. package/dist/lifeops/relationships/index.js.map +1 -0
  801. package/dist/lifeops/relationships/mapping.d.ts +34 -0
  802. package/dist/lifeops/relationships/mapping.d.ts.map +1 -0
  803. package/dist/lifeops/relationships/mapping.js +87 -0
  804. package/dist/lifeops/relationships/mapping.js.map +1 -0
  805. package/dist/lifeops/relationships/store.d.ts +12 -0
  806. package/dist/lifeops/relationships/store.d.ts.map +1 -0
  807. package/dist/lifeops/relationships/store.js +5 -0
  808. package/dist/lifeops/relationships/store.js.map +1 -0
  809. package/dist/lifeops/relationships/types.d.ts +9 -0
  810. package/dist/lifeops/relationships/types.d.ts.map +1 -0
  811. package/dist/lifeops/relationships/types.js +11 -0
  812. package/dist/lifeops/relationships/types.js.map +1 -0
  813. package/dist/lifeops/relative-schedule-resolver.d.ts +13 -0
  814. package/dist/lifeops/relative-schedule-resolver.d.ts.map +1 -0
  815. package/dist/lifeops/relative-schedule-resolver.js +107 -0
  816. package/dist/lifeops/relative-schedule-resolver.js.map +1 -0
  817. package/dist/lifeops/relative-time.d.ts +15 -0
  818. package/dist/lifeops/relative-time.d.ts.map +1 -0
  819. package/dist/lifeops/relative-time.js +191 -0
  820. package/dist/lifeops/relative-time.js.map +1 -0
  821. package/dist/lifeops/repository.d.ts +638 -0
  822. package/dist/lifeops/repository.d.ts.map +1 -0
  823. package/dist/lifeops/repository.js +6289 -0
  824. package/dist/lifeops/repository.js.map +1 -0
  825. package/dist/lifeops/runtime-cache.d.ts +4 -0
  826. package/dist/lifeops/runtime-cache.d.ts.map +1 -0
  827. package/dist/lifeops/runtime-cache.js +7 -0
  828. package/dist/lifeops/runtime-cache.js.map +1 -0
  829. package/dist/lifeops/runtime-service-delegates.d.ts +236 -0
  830. package/dist/lifeops/runtime-service-delegates.d.ts.map +1 -0
  831. package/dist/lifeops/runtime-service-delegates.js +839 -0
  832. package/dist/lifeops/runtime-service-delegates.js.map +1 -0
  833. package/dist/lifeops/runtime.d.ts +13 -0
  834. package/dist/lifeops/runtime.d.ts.map +1 -0
  835. package/dist/lifeops/runtime.js +104 -0
  836. package/dist/lifeops/runtime.js.map +1 -0
  837. package/dist/lifeops/schedule-insight.d.ts +133 -0
  838. package/dist/lifeops/schedule-insight.d.ts.map +1 -0
  839. package/dist/lifeops/schedule-insight.js +726 -0
  840. package/dist/lifeops/schedule-insight.js.map +1 -0
  841. package/dist/lifeops/schedule-state.d.ts +39 -0
  842. package/dist/lifeops/schedule-state.d.ts.map +1 -0
  843. package/dist/lifeops/schedule-state.js +671 -0
  844. package/dist/lifeops/schedule-state.js.map +1 -0
  845. package/dist/lifeops/schedule-sync-config.d.ts +3 -0
  846. package/dist/lifeops/schedule-sync-config.d.ts.map +1 -0
  847. package/dist/lifeops/schedule-sync-config.js +23 -0
  848. package/dist/lifeops/schedule-sync-config.js.map +1 -0
  849. package/dist/lifeops/schedule-sync-contracts.d.ts +2 -0
  850. package/dist/lifeops/schedule-sync-contracts.d.ts.map +1 -0
  851. package/dist/lifeops/schedule-sync-contracts.js +2 -0
  852. package/dist/lifeops/schedule-sync-contracts.js.map +1 -0
  853. package/dist/lifeops/scheduled-task/index.d.ts +13 -0
  854. package/dist/lifeops/scheduled-task/index.d.ts.map +1 -0
  855. package/dist/lifeops/scheduled-task/index.js +14 -0
  856. package/dist/lifeops/scheduled-task/index.js.map +1 -0
  857. package/dist/lifeops/scheduled-task/runtime-wiring.d.ts +33 -0
  858. package/dist/lifeops/scheduled-task/runtime-wiring.d.ts.map +1 -0
  859. package/dist/lifeops/scheduled-task/runtime-wiring.js +334 -0
  860. package/dist/lifeops/scheduled-task/runtime-wiring.js.map +1 -0
  861. package/dist/lifeops/scheduled-task/scheduler.d.ts +28 -0
  862. package/dist/lifeops/scheduled-task/scheduler.d.ts.map +1 -0
  863. package/dist/lifeops/scheduled-task/scheduler.js +202 -0
  864. package/dist/lifeops/scheduled-task/scheduler.js.map +1 -0
  865. package/dist/lifeops/scheduled-task/service.d.ts +61 -0
  866. package/dist/lifeops/scheduled-task/service.d.ts.map +1 -0
  867. package/dist/lifeops/scheduled-task/service.js +64 -0
  868. package/dist/lifeops/scheduled-task/service.js.map +1 -0
  869. package/dist/lifeops/scheduler-task.d.ts +19 -0
  870. package/dist/lifeops/scheduler-task.d.ts.map +1 -0
  871. package/dist/lifeops/scheduler-task.js +201 -0
  872. package/dist/lifeops/scheduler-task.js.map +1 -0
  873. package/dist/lifeops/schema.d.ts +28068 -0
  874. package/dist/lifeops/schema.d.ts.map +1 -0
  875. package/dist/lifeops/schema.js +1689 -0
  876. package/dist/lifeops/schema.js.map +1 -0
  877. package/dist/lifeops/screen-context.d.ts +66 -0
  878. package/dist/lifeops/screen-context.d.ts.map +1 -0
  879. package/dist/lifeops/screen-context.js +347 -0
  880. package/dist/lifeops/screen-context.js.map +1 -0
  881. package/dist/lifeops/seed-routine-migration/migrator.d.ts +113 -0
  882. package/dist/lifeops/seed-routine-migration/migrator.d.ts.map +1 -0
  883. package/dist/lifeops/seed-routine-migration/migrator.js +142 -0
  884. package/dist/lifeops/seed-routine-migration/migrator.js.map +1 -0
  885. package/dist/lifeops/seed-routines.d.ts +24 -0
  886. package/dist/lifeops/seed-routines.d.ts.map +1 -0
  887. package/dist/lifeops/seed-routines.js +140 -0
  888. package/dist/lifeops/seed-routines.js.map +1 -0
  889. package/dist/lifeops/send-policy/contract.d.ts +81 -0
  890. package/dist/lifeops/send-policy/contract.d.ts.map +1 -0
  891. package/dist/lifeops/send-policy/contract.js +1 -0
  892. package/dist/lifeops/send-policy/contract.js.map +1 -0
  893. package/dist/lifeops/send-policy/index.d.ts +3 -0
  894. package/dist/lifeops/send-policy/index.d.ts.map +1 -0
  895. package/dist/lifeops/send-policy/index.js +13 -0
  896. package/dist/lifeops/send-policy/index.js.map +1 -0
  897. package/dist/lifeops/send-policy/registry.d.ts +7 -0
  898. package/dist/lifeops/send-policy/registry.d.ts.map +1 -0
  899. package/dist/lifeops/send-policy/registry.js +62 -0
  900. package/dist/lifeops/send-policy/registry.js.map +1 -0
  901. package/dist/lifeops/sensitive-request-delivery.d.ts +46 -0
  902. package/dist/lifeops/sensitive-request-delivery.d.ts.map +1 -0
  903. package/dist/lifeops/sensitive-request-delivery.js +103 -0
  904. package/dist/lifeops/sensitive-request-delivery.js.map +1 -0
  905. package/dist/lifeops/service-constants.d.ts +10 -0
  906. package/dist/lifeops/service-constants.d.ts.map +1 -0
  907. package/dist/lifeops/service-constants.js +129 -0
  908. package/dist/lifeops/service-constants.js.map +1 -0
  909. package/dist/lifeops/service-helpers-browser.d.ts +41 -0
  910. package/dist/lifeops/service-helpers-browser.d.ts.map +1 -0
  911. package/dist/lifeops/service-helpers-browser.js +290 -0
  912. package/dist/lifeops/service-helpers-browser.js.map +1 -0
  913. package/dist/lifeops/service-helpers-misc.d.ts +68 -0
  914. package/dist/lifeops/service-helpers-misc.d.ts.map +1 -0
  915. package/dist/lifeops/service-helpers-misc.js +531 -0
  916. package/dist/lifeops/service-helpers-misc.js.map +1 -0
  917. package/dist/lifeops/service-helpers-occurrence.d.ts +23 -0
  918. package/dist/lifeops/service-helpers-occurrence.d.ts.map +1 -0
  919. package/dist/lifeops/service-helpers-occurrence.js +257 -0
  920. package/dist/lifeops/service-helpers-occurrence.js.map +1 -0
  921. package/dist/lifeops/service-helpers-reminder.d.ts +260 -0
  922. package/dist/lifeops/service-helpers-reminder.d.ts.map +1 -0
  923. package/dist/lifeops/service-helpers-reminder.js +1186 -0
  924. package/dist/lifeops/service-helpers-reminder.js.map +1 -0
  925. package/dist/lifeops/service-mixin-browser.d.ts +31 -0
  926. package/dist/lifeops/service-mixin-browser.d.ts.map +1 -0
  927. package/dist/lifeops/service-mixin-browser.js +975 -0
  928. package/dist/lifeops/service-mixin-browser.js.map +1 -0
  929. package/dist/lifeops/service-mixin-calendar.d.ts +53 -0
  930. package/dist/lifeops/service-mixin-calendar.d.ts.map +1 -0
  931. package/dist/lifeops/service-mixin-calendar.js +68 -0
  932. package/dist/lifeops/service-mixin-calendar.js.map +1 -0
  933. package/dist/lifeops/service-mixin-core.d.ts +51 -0
  934. package/dist/lifeops/service-mixin-core.d.ts.map +1 -0
  935. package/dist/lifeops/service-mixin-core.js +500 -0
  936. package/dist/lifeops/service-mixin-core.js.map +1 -0
  937. package/dist/lifeops/service-mixin-definitions.d.ts +14 -0
  938. package/dist/lifeops/service-mixin-definitions.d.ts.map +1 -0
  939. package/dist/lifeops/service-mixin-definitions.js +470 -0
  940. package/dist/lifeops/service-mixin-definitions.js.map +1 -0
  941. package/dist/lifeops/service-mixin-discord.d.ts +49 -0
  942. package/dist/lifeops/service-mixin-discord.d.ts.map +1 -0
  943. package/dist/lifeops/service-mixin-discord.js +1253 -0
  944. package/dist/lifeops/service-mixin-discord.js.map +1 -0
  945. package/dist/lifeops/service-mixin-drive.d.ts +96 -0
  946. package/dist/lifeops/service-mixin-drive.d.ts.map +1 -0
  947. package/dist/lifeops/service-mixin-drive.js +213 -0
  948. package/dist/lifeops/service-mixin-drive.js.map +1 -0
  949. package/dist/lifeops/service-mixin-email-unsubscribe.d.ts +23 -0
  950. package/dist/lifeops/service-mixin-email-unsubscribe.d.ts.map +1 -0
  951. package/dist/lifeops/service-mixin-email-unsubscribe.js +27 -0
  952. package/dist/lifeops/service-mixin-email-unsubscribe.js.map +1 -0
  953. package/dist/lifeops/service-mixin-gmail.d.ts +43 -0
  954. package/dist/lifeops/service-mixin-gmail.d.ts.map +1 -0
  955. package/dist/lifeops/service-mixin-gmail.js +727 -0
  956. package/dist/lifeops/service-mixin-gmail.js.map +1 -0
  957. package/dist/lifeops/service-mixin-goals.d.ts +22 -0
  958. package/dist/lifeops/service-mixin-goals.d.ts.map +1 -0
  959. package/dist/lifeops/service-mixin-goals.js +884 -0
  960. package/dist/lifeops/service-mixin-goals.js.map +1 -0
  961. package/dist/lifeops/service-mixin-google.d.ts +13 -0
  962. package/dist/lifeops/service-mixin-google.d.ts.map +1 -0
  963. package/dist/lifeops/service-mixin-google.js +398 -0
  964. package/dist/lifeops/service-mixin-google.js.map +1 -0
  965. package/dist/lifeops/service-mixin-health.d.ts +27 -0
  966. package/dist/lifeops/service-mixin-health.d.ts.map +1 -0
  967. package/dist/lifeops/service-mixin-health.js +670 -0
  968. package/dist/lifeops/service-mixin-health.js.map +1 -0
  969. package/dist/lifeops/service-mixin-imessage.d.ts +106 -0
  970. package/dist/lifeops/service-mixin-imessage.d.ts.map +1 -0
  971. package/dist/lifeops/service-mixin-imessage.js +303 -0
  972. package/dist/lifeops/service-mixin-imessage.js.map +1 -0
  973. package/dist/lifeops/service-mixin-inbox.d.ts +55 -0
  974. package/dist/lifeops/service-mixin-inbox.d.ts.map +1 -0
  975. package/dist/lifeops/service-mixin-inbox.js +597 -0
  976. package/dist/lifeops/service-mixin-inbox.js.map +1 -0
  977. package/dist/lifeops/service-mixin-relationships.d.ts +65 -0
  978. package/dist/lifeops/service-mixin-relationships.d.ts.map +1 -0
  979. package/dist/lifeops/service-mixin-relationships.js +150 -0
  980. package/dist/lifeops/service-mixin-relationships.js.map +1 -0
  981. package/dist/lifeops/service-mixin-reminders.d.ts +62 -0
  982. package/dist/lifeops/service-mixin-reminders.d.ts.map +1 -0
  983. package/dist/lifeops/service-mixin-reminders.js +4003 -0
  984. package/dist/lifeops/service-mixin-reminders.js.map +1 -0
  985. package/dist/lifeops/service-mixin-scheduling.d.ts +53 -0
  986. package/dist/lifeops/service-mixin-scheduling.d.ts.map +1 -0
  987. package/dist/lifeops/service-mixin-scheduling.js +405 -0
  988. package/dist/lifeops/service-mixin-scheduling.js.map +1 -0
  989. package/dist/lifeops/service-mixin-screentime.d.ts +71 -0
  990. package/dist/lifeops/service-mixin-screentime.d.ts.map +1 -0
  991. package/dist/lifeops/service-mixin-screentime.js +530 -0
  992. package/dist/lifeops/service-mixin-screentime.js.map +1 -0
  993. package/dist/lifeops/service-mixin-signal.d.ts +74 -0
  994. package/dist/lifeops/service-mixin-signal.d.ts.map +1 -0
  995. package/dist/lifeops/service-mixin-signal.js +214 -0
  996. package/dist/lifeops/service-mixin-signal.js.map +1 -0
  997. package/dist/lifeops/service-mixin-sleep.d.ts +68 -0
  998. package/dist/lifeops/service-mixin-sleep.d.ts.map +1 -0
  999. package/dist/lifeops/service-mixin-sleep.js +43 -0
  1000. package/dist/lifeops/service-mixin-sleep.js.map +1 -0
  1001. package/dist/lifeops/service-mixin-status.d.ts +31 -0
  1002. package/dist/lifeops/service-mixin-status.d.ts.map +1 -0
  1003. package/dist/lifeops/service-mixin-status.js +373 -0
  1004. package/dist/lifeops/service-mixin-status.js.map +1 -0
  1005. package/dist/lifeops/service-mixin-subscriptions.d.ts +101 -0
  1006. package/dist/lifeops/service-mixin-subscriptions.d.ts.map +1 -0
  1007. package/dist/lifeops/service-mixin-subscriptions.js +50 -0
  1008. package/dist/lifeops/service-mixin-subscriptions.js.map +1 -0
  1009. package/dist/lifeops/service-mixin-telegram.d.ts +104 -0
  1010. package/dist/lifeops/service-mixin-telegram.d.ts.map +1 -0
  1011. package/dist/lifeops/service-mixin-telegram.js +280 -0
  1012. package/dist/lifeops/service-mixin-telegram.js.map +1 -0
  1013. package/dist/lifeops/service-mixin-travel.d.ts +66 -0
  1014. package/dist/lifeops/service-mixin-travel.d.ts.map +1 -0
  1015. package/dist/lifeops/service-mixin-travel.js +275 -0
  1016. package/dist/lifeops/service-mixin-travel.js.map +1 -0
  1017. package/dist/lifeops/service-mixin-whatsapp.d.ts +96 -0
  1018. package/dist/lifeops/service-mixin-whatsapp.d.ts.map +1 -0
  1019. package/dist/lifeops/service-mixin-whatsapp.js +186 -0
  1020. package/dist/lifeops/service-mixin-whatsapp.js.map +1 -0
  1021. package/dist/lifeops/service-mixin-workflows.d.ts +15 -0
  1022. package/dist/lifeops/service-mixin-workflows.d.ts.map +1 -0
  1023. package/dist/lifeops/service-mixin-workflows.js +710 -0
  1024. package/dist/lifeops/service-mixin-workflows.js.map +1 -0
  1025. package/dist/lifeops/service-mixin-x-read.d.ts +31 -0
  1026. package/dist/lifeops/service-mixin-x-read.d.ts.map +1 -0
  1027. package/dist/lifeops/service-mixin-x-read.js +267 -0
  1028. package/dist/lifeops/service-mixin-x-read.js.map +1 -0
  1029. package/dist/lifeops/service-mixin-x.d.ts +66 -0
  1030. package/dist/lifeops/service-mixin-x.d.ts.map +1 -0
  1031. package/dist/lifeops/service-mixin-x.js +501 -0
  1032. package/dist/lifeops/service-mixin-x.js.map +1 -0
  1033. package/dist/lifeops/service-normalize-connector.d.ts +19 -0
  1034. package/dist/lifeops/service-normalize-connector.d.ts.map +1 -0
  1035. package/dist/lifeops/service-normalize-connector.js +816 -0
  1036. package/dist/lifeops/service-normalize-connector.js.map +1 -0
  1037. package/dist/lifeops/service-normalize-gmail.d.ts +11 -0
  1038. package/dist/lifeops/service-normalize-gmail.d.ts.map +1 -0
  1039. package/dist/lifeops/service-normalize-gmail.js +85 -0
  1040. package/dist/lifeops/service-normalize-gmail.js.map +1 -0
  1041. package/dist/lifeops/service-normalize-task.d.ts +9 -0
  1042. package/dist/lifeops/service-normalize-task.d.ts.map +1 -0
  1043. package/dist/lifeops/service-normalize-task.js +567 -0
  1044. package/dist/lifeops/service-normalize-task.js.map +1 -0
  1045. package/dist/lifeops/service-normalize.d.ts +9 -0
  1046. package/dist/lifeops/service-normalize.d.ts.map +1 -0
  1047. package/dist/lifeops/service-normalize.js +53 -0
  1048. package/dist/lifeops/service-normalize.js.map +1 -0
  1049. package/dist/lifeops/service-types.d.ts +75 -0
  1050. package/dist/lifeops/service-types.d.ts.map +1 -0
  1051. package/dist/lifeops/service-types.js +5 -0
  1052. package/dist/lifeops/service-types.js.map +1 -0
  1053. package/dist/lifeops/service.d.ts +482 -0
  1054. package/dist/lifeops/service.d.ts.map +1 -0
  1055. package/dist/lifeops/service.js +62 -0
  1056. package/dist/lifeops/service.js.map +1 -0
  1057. package/dist/lifeops/signal-runtime-config.d.ts +13 -0
  1058. package/dist/lifeops/signal-runtime-config.d.ts.map +1 -0
  1059. package/dist/lifeops/signal-runtime-config.js +44 -0
  1060. package/dist/lifeops/signal-runtime-config.js.map +1 -0
  1061. package/dist/lifeops/signals/bus.d.ts +78 -0
  1062. package/dist/lifeops/signals/bus.d.ts.map +1 -0
  1063. package/dist/lifeops/signals/bus.js +117 -0
  1064. package/dist/lifeops/signals/bus.js.map +1 -0
  1065. package/dist/lifeops/sql.d.ts +65 -0
  1066. package/dist/lifeops/sql.d.ts.map +1 -0
  1067. package/dist/lifeops/sql.js +182 -0
  1068. package/dist/lifeops/sql.js.map +1 -0
  1069. package/dist/lifeops/stretch-decider.d.ts +73 -0
  1070. package/dist/lifeops/stretch-decider.d.ts.map +1 -0
  1071. package/dist/lifeops/stretch-decider.js +49 -0
  1072. package/dist/lifeops/stretch-decider.js.map +1 -0
  1073. package/dist/lifeops/telemetry-mapping.d.ts +14 -0
  1074. package/dist/lifeops/telemetry-mapping.d.ts.map +1 -0
  1075. package/dist/lifeops/telemetry-mapping.js +115 -0
  1076. package/dist/lifeops/telemetry-mapping.js.map +1 -0
  1077. package/dist/lifeops/telemetry-retention.d.ts +21 -0
  1078. package/dist/lifeops/telemetry-retention.d.ts.map +1 -0
  1079. package/dist/lifeops/telemetry-retention.js +13 -0
  1080. package/dist/lifeops/telemetry-retention.js.map +1 -0
  1081. package/dist/lifeops/time/timezone.d.ts +4 -0
  1082. package/dist/lifeops/time/timezone.d.ts.map +1 -0
  1083. package/dist/lifeops/time/timezone.js +154 -0
  1084. package/dist/lifeops/time/timezone.js.map +1 -0
  1085. package/dist/lifeops/time-util.d.ts +10 -0
  1086. package/dist/lifeops/time-util.d.ts.map +1 -0
  1087. package/dist/lifeops/time-util.js +14 -0
  1088. package/dist/lifeops/time-util.js.map +1 -0
  1089. package/dist/lifeops/time.d.ts +17 -0
  1090. package/dist/lifeops/time.d.ts.map +1 -0
  1091. package/dist/lifeops/time.js +152 -0
  1092. package/dist/lifeops/time.js.map +1 -0
  1093. package/dist/lifeops/travel-booking.types.d.ts +46 -0
  1094. package/dist/lifeops/travel-booking.types.d.ts.map +1 -0
  1095. package/dist/lifeops/travel-booking.types.js +1 -0
  1096. package/dist/lifeops/travel-booking.types.js.map +1 -0
  1097. package/dist/lifeops/triggers/schedule-once.d.ts +19 -0
  1098. package/dist/lifeops/triggers/schedule-once.d.ts.map +1 -0
  1099. package/dist/lifeops/triggers/schedule-once.js +99 -0
  1100. package/dist/lifeops/triggers/schedule-once.js.map +1 -0
  1101. package/dist/lifeops/validate/coding-task-request.d.ts +18 -0
  1102. package/dist/lifeops/validate/coding-task-request.d.ts.map +1 -0
  1103. package/dist/lifeops/validate/coding-task-request.js +16 -0
  1104. package/dist/lifeops/validate/coding-task-request.js.map +1 -0
  1105. package/dist/lifeops/voice/grounded-reply.d.ts +41 -0
  1106. package/dist/lifeops/voice/grounded-reply.d.ts.map +1 -0
  1107. package/dist/lifeops/voice/grounded-reply.js +24 -0
  1108. package/dist/lifeops/voice/grounded-reply.js.map +1 -0
  1109. package/dist/lifeops/voice-affect.d.ts +79 -0
  1110. package/dist/lifeops/voice-affect.d.ts.map +1 -0
  1111. package/dist/lifeops/voice-affect.js +253 -0
  1112. package/dist/lifeops/voice-affect.js.map +1 -0
  1113. package/dist/lifeops/wave1-types.d.ts +125 -0
  1114. package/dist/lifeops/wave1-types.d.ts.map +1 -0
  1115. package/dist/lifeops/wave1-types.js +1 -0
  1116. package/dist/lifeops/wave1-types.js.map +1 -0
  1117. package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts +33 -0
  1118. package/dist/lifeops/work-threads/field-evaluator-thread-ops.d.ts.map +1 -0
  1119. package/dist/lifeops/work-threads/field-evaluator-thread-ops.js +226 -0
  1120. package/dist/lifeops/work-threads/field-evaluator-thread-ops.js.map +1 -0
  1121. package/dist/lifeops/work-threads/index.d.ts +3 -0
  1122. package/dist/lifeops/work-threads/index.d.ts.map +1 -0
  1123. package/dist/lifeops/work-threads/index.js +7 -0
  1124. package/dist/lifeops/work-threads/index.js.map +1 -0
  1125. package/dist/lifeops/work-threads/store.d.ts +91 -0
  1126. package/dist/lifeops/work-threads/store.d.ts.map +1 -0
  1127. package/dist/lifeops/work-threads/store.js +245 -0
  1128. package/dist/lifeops/work-threads/store.js.map +1 -0
  1129. package/dist/lifeops/work-threads/types.d.ts +58 -0
  1130. package/dist/lifeops/work-threads/types.d.ts.map +1 -0
  1131. package/dist/lifeops/work-threads/types.js +1 -0
  1132. package/dist/lifeops/work-threads/types.js.map +1 -0
  1133. package/dist/platform/host.d.ts +16 -0
  1134. package/dist/platform/host.d.ts.map +1 -0
  1135. package/dist/platform/host.js +22 -0
  1136. package/dist/platform/host.js.map +1 -0
  1137. package/dist/platform/index.d.ts +3 -0
  1138. package/dist/platform/index.d.ts.map +1 -0
  1139. package/dist/platform/index.js +3 -0
  1140. package/dist/platform/index.js.map +1 -0
  1141. package/dist/platform/lifeops-github.d.ts +15 -0
  1142. package/dist/platform/lifeops-github.d.ts.map +1 -0
  1143. package/dist/platform/lifeops-github.js +146 -0
  1144. package/dist/platform/lifeops-github.js.map +1 -0
  1145. package/dist/plugin.d.ts +106 -0
  1146. package/dist/plugin.d.ts.map +1 -0
  1147. package/dist/plugin.js +989 -0
  1148. package/dist/plugin.js.map +1 -0
  1149. package/dist/provider.d.ts +4 -0
  1150. package/dist/provider.d.ts.map +1 -0
  1151. package/dist/provider.js +108 -0
  1152. package/dist/provider.js.map +1 -0
  1153. package/dist/providers/activity-profile.d.ts +3 -0
  1154. package/dist/providers/activity-profile.d.ts.map +1 -0
  1155. package/dist/providers/activity-profile.js +140 -0
  1156. package/dist/providers/activity-profile.js.map +1 -0
  1157. package/dist/providers/cross-channel-context.d.ts +29 -0
  1158. package/dist/providers/cross-channel-context.d.ts.map +1 -0
  1159. package/dist/providers/cross-channel-context.js +206 -0
  1160. package/dist/providers/cross-channel-context.js.map +1 -0
  1161. package/dist/providers/first-run.d.ts +22 -0
  1162. package/dist/providers/first-run.d.ts.map +1 -0
  1163. package/dist/providers/first-run.js +93 -0
  1164. package/dist/providers/first-run.js.map +1 -0
  1165. package/dist/providers/health.d.ts +2 -0
  1166. package/dist/providers/health.d.ts.map +1 -0
  1167. package/dist/providers/health.js +14 -0
  1168. package/dist/providers/health.js.map +1 -0
  1169. package/dist/providers/inbox-triage.d.ts +3 -0
  1170. package/dist/providers/inbox-triage.d.ts.map +1 -0
  1171. package/dist/providers/inbox-triage.js +134 -0
  1172. package/dist/providers/inbox-triage.js.map +1 -0
  1173. package/dist/providers/lifeops.d.ts +3 -0
  1174. package/dist/providers/lifeops.d.ts.map +1 -0
  1175. package/dist/providers/lifeops.js +548 -0
  1176. package/dist/providers/lifeops.js.map +1 -0
  1177. package/dist/providers/pending-prompts.d.ts +38 -0
  1178. package/dist/providers/pending-prompts.d.ts.map +1 -0
  1179. package/dist/providers/pending-prompts.js +81 -0
  1180. package/dist/providers/pending-prompts.js.map +1 -0
  1181. package/dist/providers/recent-task-states.d.ts +52 -0
  1182. package/dist/providers/recent-task-states.d.ts.map +1 -0
  1183. package/dist/providers/recent-task-states.js +166 -0
  1184. package/dist/providers/recent-task-states.js.map +1 -0
  1185. package/dist/providers/room-policy.d.ts +16 -0
  1186. package/dist/providers/room-policy.d.ts.map +1 -0
  1187. package/dist/providers/room-policy.js +71 -0
  1188. package/dist/providers/room-policy.js.map +1 -0
  1189. package/dist/providers/work-threads.d.ts +3 -0
  1190. package/dist/providers/work-threads.d.ts.map +1 -0
  1191. package/dist/providers/work-threads.js +97 -0
  1192. package/dist/providers/work-threads.js.map +1 -0
  1193. package/dist/public.d.ts +3 -0
  1194. package/dist/public.d.ts.map +1 -0
  1195. package/dist/public.js +17 -0
  1196. package/dist/public.js.map +1 -0
  1197. package/dist/routes/cloud-features-routes.d.ts +9 -0
  1198. package/dist/routes/cloud-features-routes.d.ts.map +1 -0
  1199. package/dist/routes/cloud-features-routes.js +164 -0
  1200. package/dist/routes/cloud-features-routes.js.map +1 -0
  1201. package/dist/routes/entities.d.ts +14 -0
  1202. package/dist/routes/entities.d.ts.map +1 -0
  1203. package/dist/routes/entities.js +203 -0
  1204. package/dist/routes/entities.js.map +1 -0
  1205. package/dist/routes/lifeops-routes.d.ts +20 -0
  1206. package/dist/routes/lifeops-routes.d.ts.map +1 -0
  1207. package/dist/routes/lifeops-routes.js +2337 -0
  1208. package/dist/routes/lifeops-routes.js.map +1 -0
  1209. package/dist/routes/plugin.d.ts +9 -0
  1210. package/dist/routes/plugin.d.ts.map +1 -0
  1211. package/dist/routes/plugin.js +568 -0
  1212. package/dist/routes/plugin.js.map +1 -0
  1213. package/dist/routes/relationships.d.ts +13 -0
  1214. package/dist/routes/relationships.d.ts.map +1 -0
  1215. package/dist/routes/relationships.js +195 -0
  1216. package/dist/routes/relationships.js.map +1 -0
  1217. package/dist/routes/scheduled-tasks.d.ts +102 -0
  1218. package/dist/routes/scheduled-tasks.d.ts.map +1 -0
  1219. package/dist/routes/scheduled-tasks.js +322 -0
  1220. package/dist/routes/scheduled-tasks.js.map +1 -0
  1221. package/dist/routes/sleep-routes.d.ts +3 -0
  1222. package/dist/routes/sleep-routes.d.ts.map +1 -0
  1223. package/dist/routes/sleep-routes.js +33 -0
  1224. package/dist/routes/sleep-routes.js.map +1 -0
  1225. package/dist/routes/travel-provider-relay-routes.d.ts +2 -0
  1226. package/dist/routes/travel-provider-relay-routes.d.ts.map +1 -0
  1227. package/dist/routes/travel-provider-relay-routes.js +7 -0
  1228. package/dist/routes/travel-provider-relay-routes.js.map +1 -0
  1229. package/dist/routes/website-blocker-routes.d.ts +6 -0
  1230. package/dist/routes/website-blocker-routes.d.ts.map +1 -0
  1231. package/dist/routes/website-blocker-routes.js +218 -0
  1232. package/dist/routes/website-blocker-routes.js.map +1 -0
  1233. package/dist/security/action-confirmation.d.ts +12 -0
  1234. package/dist/security/action-confirmation.d.ts.map +1 -0
  1235. package/dist/security/action-confirmation.js +36 -0
  1236. package/dist/security/action-confirmation.js.map +1 -0
  1237. package/dist/service.d.ts +34 -0
  1238. package/dist/service.d.ts.map +1 -0
  1239. package/dist/service.js +111 -0
  1240. package/dist/service.js.map +1 -0
  1241. package/dist/travel-time/calendar-create.d.ts +17 -0
  1242. package/dist/travel-time/calendar-create.d.ts.map +1 -0
  1243. package/dist/travel-time/calendar-create.js +28 -0
  1244. package/dist/travel-time/calendar-create.js.map +1 -0
  1245. package/dist/travel-time/service.d.ts +114 -0
  1246. package/dist/travel-time/service.d.ts.map +1 -0
  1247. package/dist/travel-time/service.js +209 -0
  1248. package/dist/travel-time/service.js.map +1 -0
  1249. package/dist/types/app-blocker-settings-card.d.ts +2 -0
  1250. package/dist/types/app-blocker-settings-card.d.ts.map +1 -0
  1251. package/dist/types/app-blocker-settings-card.js +1 -0
  1252. package/dist/types/app-blocker-settings-card.js.map +1 -0
  1253. package/dist/types/briefing.d.ts +59 -0
  1254. package/dist/types/briefing.d.ts.map +1 -0
  1255. package/dist/types/briefing.js +1 -0
  1256. package/dist/types/briefing.js.map +1 -0
  1257. package/dist/types/document-request.d.ts +41 -0
  1258. package/dist/types/document-request.d.ts.map +1 -0
  1259. package/dist/types/document-request.js +1 -0
  1260. package/dist/types/document-request.js.map +1 -0
  1261. package/dist/types/index.d.ts +5 -0
  1262. package/dist/types/index.d.ts.map +1 -0
  1263. package/dist/types/index.js +1 -0
  1264. package/dist/types/index.js.map +1 -0
  1265. package/dist/types/website-blocker-settings-card.d.ts +2 -0
  1266. package/dist/types/website-blocker-settings-card.d.ts.map +1 -0
  1267. package/dist/types/website-blocker-settings-card.js +1 -0
  1268. package/dist/types/website-blocker-settings-card.js.map +1 -0
  1269. package/dist/ui.d.ts +13 -0
  1270. package/dist/ui.d.ts.map +1 -0
  1271. package/dist/ui.js +25 -0
  1272. package/dist/ui.js.map +1 -0
  1273. package/dist/utils/format-duration.d.ts +2 -0
  1274. package/dist/utils/format-duration.d.ts.map +1 -0
  1275. package/dist/utils/format-duration.js +13 -0
  1276. package/dist/utils/format-duration.js.map +1 -0
  1277. package/dist/utils/index.d.ts +3 -0
  1278. package/dist/utils/index.d.ts.map +1 -0
  1279. package/dist/utils/index.js +3 -0
  1280. package/dist/utils/index.js.map +1 -0
  1281. package/dist/utils/lifeops-url.d.ts +3 -0
  1282. package/dist/utils/lifeops-url.d.ts.map +1 -0
  1283. package/dist/utils/lifeops-url.js +28 -0
  1284. package/dist/utils/lifeops-url.js.map +1 -0
  1285. package/dist/website-blocker/chat-integration/block-activator.d.ts +32 -0
  1286. package/dist/website-blocker/chat-integration/block-activator.d.ts.map +1 -0
  1287. package/dist/website-blocker/chat-integration/block-activator.js +30 -0
  1288. package/dist/website-blocker/chat-integration/block-activator.js.map +1 -0
  1289. package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts +7 -0
  1290. package/dist/website-blocker/chat-integration/block-rule-reconciler.d.ts.map +1 -0
  1291. package/dist/website-blocker/chat-integration/block-rule-reconciler.js +115 -0
  1292. package/dist/website-blocker/chat-integration/block-rule-reconciler.js.map +1 -0
  1293. package/dist/website-blocker/chat-integration/block-rule-schema.d.ts +39 -0
  1294. package/dist/website-blocker/chat-integration/block-rule-schema.d.ts.map +1 -0
  1295. package/dist/website-blocker/chat-integration/block-rule-schema.js +133 -0
  1296. package/dist/website-blocker/chat-integration/block-rule-schema.js.map +1 -0
  1297. package/dist/website-blocker/chat-integration/block-rule-service.d.ts +21 -0
  1298. package/dist/website-blocker/chat-integration/block-rule-service.d.ts.map +1 -0
  1299. package/dist/website-blocker/chat-integration/block-rule-service.js +230 -0
  1300. package/dist/website-blocker/chat-integration/block-rule-service.js.map +1 -0
  1301. package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts +13 -0
  1302. package/dist/website-blocker/chat-integration/harsh-mode-check.d.ts.map +1 -0
  1303. package/dist/website-blocker/chat-integration/harsh-mode-check.js +22 -0
  1304. package/dist/website-blocker/chat-integration/harsh-mode-check.js.map +1 -0
  1305. package/dist/website-blocker/chat-integration/index.d.ts +5 -0
  1306. package/dist/website-blocker/chat-integration/index.d.ts.map +1 -0
  1307. package/dist/website-blocker/chat-integration/index.js +26 -0
  1308. package/dist/website-blocker/chat-integration/index.js.map +1 -0
  1309. package/dist/website-blocker/proactive-block-bridge.d.ts +75 -0
  1310. package/dist/website-blocker/proactive-block-bridge.d.ts.map +1 -0
  1311. package/dist/website-blocker/proactive-block-bridge.js +154 -0
  1312. package/dist/website-blocker/proactive-block-bridge.js.map +1 -0
  1313. package/dist/website-blocker/public.d.ts +12 -0
  1314. package/dist/website-blocker/public.d.ts.map +1 -0
  1315. package/dist/website-blocker/public.js +51 -0
  1316. package/dist/website-blocker/public.js.map +1 -0
  1317. package/package.json +28 -28
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lifeops/service-mixin-goals.ts"],"sourcesContent":["import {\n GoalsService,\n scoreGoalSimilarity,\n} from \"@elizaos/plugin-goals/goals-service\";\nimport type {\n CreateLifeOpsGoalRequest,\n LifeOpsActivitySignal,\n LifeOpsChannelPolicy,\n LifeOpsDefinitionRecord,\n LifeOpsGoalDefinition,\n LifeOpsGoalExperienceLoop,\n LifeOpsGoalExperienceLoopMatch,\n LifeOpsGoalExperienceLoopSuggestion,\n LifeOpsGoalRecord,\n LifeOpsGoalReview,\n LifeOpsGoalSupportSuggestion,\n LifeOpsOccurrenceExplanation,\n LifeOpsOccurrenceView,\n LifeOpsOverview,\n LifeOpsOverviewSection,\n LifeOpsReminderInspection,\n LifeOpsReminderPlan,\n LifeOpsReminderPreference,\n LifeOpsReminderUrgency,\n LifeOpsTaskDefinition,\n LifeOpsWeeklyGoalReview,\n UpdateLifeOpsGoalRequest,\n} from \"../contracts/index.js\";\nimport { LIFEOPS_GOAL_SUGGESTION_KINDS } from \"../contracts/index.js\";\nimport { resolveDefaultTimeZone } from \"./defaults.js\";\nimport {\n type buildGoalSemanticReviewMetadata,\n mergeGoalSemanticReviewMetadata,\n readGoalGroundingMetadata,\n readGoalSemanticReviewMetadata,\n} from \"./goal-grounding.js\";\nimport { evaluateGoalProgressWithLlm } from \"./goal-semantic-evaluator.js\";\nimport {\n createLifeOpsAuditEvent,\n type LifeOpsScheduleMergedStateRecord,\n} from \"./repository.js\";\nimport {\n GOAL_REVIEW_LOOKBACK_DAYS,\n GOAL_SEMANTIC_REVIEW_CACHE_TTL_MS,\n MAX_OVERVIEW_REMINDERS,\n OVERVIEW_HORIZON_MINUTES,\n} from \"./service-constants.js\";\nimport {\n buildActiveCalendarEventReminders,\n buildActiveReminders,\n isRecord,\n mergeMetadata,\n priorityToUrgency,\n selectOverviewOccurrences,\n} from \"./service-helpers-misc.js\";\nimport { summarizeOverviewSection } from \"./service-helpers-occurrence.js\";\nimport { shouldDeliverReminderForIntensity } from \"./service-helpers-reminder.js\";\nimport type {\n Constructor,\n LifeOpsServiceBase,\n MixinClass,\n} from \"./service-mixin-core.js\";\nimport { fail, normalizeReminderUrgency } from \"./service-normalize.js\";\nimport { addMinutes, getZonedDateParts } from \"./time.js\";\n\nexport interface LifeOpsGoalService {\n deleteGoal(goalId: string): Promise<void>;\n listGoals(): Promise<LifeOpsGoalRecord[]>;\n getGoal(goalId: string): Promise<LifeOpsGoalRecord>;\n createGoal(request: CreateLifeOpsGoalRequest): Promise<LifeOpsGoalRecord>;\n updateGoal(\n goalId: string,\n request: UpdateLifeOpsGoalRequest,\n ): Promise<LifeOpsGoalRecord>;\n reviewGoal(goalId: string, now?: Date): Promise<LifeOpsGoalReview>;\n explainOccurrence(\n occurrenceId: string,\n ): Promise<LifeOpsOccurrenceExplanation>;\n getOverview(now?: Date): Promise<LifeOpsOverview>;\n listChannelPolicies(): Promise<LifeOpsChannelPolicy[]>;\n buildGoalExperienceLoop(\n reference: {\n goalId?: string | null;\n title: string;\n description?: string | null;\n successCriteria?: Record<string, unknown> | null;\n },\n now?: Date,\n ): Promise<LifeOpsGoalExperienceLoop>;\n reviewGoalsForWeek(now?: Date): Promise<LifeOpsWeeklyGoalReview>;\n}\n\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\n/** Days of inactivity after which a daily / interval / times-per-day goal is\n * considered stale enough to demote from \"on_track\". The cadences run at\n * least every other day, so two days without activity is the earliest\n * defensible signal. */\nconst GOAL_STALE_DAYS_FREQUENT = 2;\n/** Stale threshold for weekly cadences. Allows one full skipped week before\n * the goal flips to \"needs_attention\". */\nconst GOAL_STALE_DAYS_WEEKLY = 10;\n/** Stale threshold for goals whose cadence is anything else (manual,\n * monthly, ad-hoc). Keeps the default close to the weekly bar. */\nconst GOAL_STALE_DAYS_DEFAULT = 7;\n\ntype GoalMixinDependencies = LifeOpsServiceBase & {\n getGoalRecord(goalId: string): Promise<LifeOpsGoalRecord>;\n getDefinitionRecord(definitionId: string): Promise<LifeOpsDefinitionRecord>;\n listActivitySignals(args?: {\n sinceAt?: string | null;\n limit?: number | null;\n states?: LifeOpsActivitySignal[\"state\"][] | null;\n }): Promise<LifeOpsActivitySignal[]>;\n inspectReminder(\n ownerType: \"occurrence\" | \"calendar_event\",\n ownerId: string,\n ): Promise<LifeOpsReminderInspection>;\n refreshEffectiveScheduleState(args?: {\n timezone?: string | null;\n now?: Date;\n }): Promise<LifeOpsScheduleMergedStateRecord | null>;\n refreshDefinitionOccurrences(\n definition: LifeOpsTaskDefinition,\n now?: Date,\n ): Promise<void>;\n buildReminderPreferenceResponse(\n definition: LifeOpsTaskDefinition | null,\n policies: LifeOpsChannelPolicy[],\n ): LifeOpsReminderPreference;\n resolveEffectiveReminderPlan(\n plan: LifeOpsReminderPlan | null,\n preference: LifeOpsReminderPreference,\n ): LifeOpsReminderPlan | null;\n};\n\nexport function withGoals<TBase extends Constructor<LifeOpsServiceBase>>(\n Base: TBase,\n): MixinClass<TBase, LifeOpsGoalService> {\n const GoalsBase = Base as unknown as Constructor<GoalMixinDependencies>;\n\n class LifeOpsGoalServiceMixin extends GoalsBase {\n // The goal CRUD back-end (create/update/delete/list/get + dedup + scoring)\n // is owned by @elizaos/plugin-goals (`GoalsService`). PA keeps the\n // cross-domain goal review / overview / experience-loop logic (which\n // aggregates the definition / occurrence / reminder / calendar graph that\n // is PA-owned) and delegates the CRUD methods here so the route + view stay\n // byte-identical. recordAudit (shared `app_lifeops` audit store) and\n // normalizeOwnership (PA domain/identity rules) are passed in as hooks.\n private goalsServiceInstance: GoalsService | null = null;\n\n private goalsService(): GoalsService {\n if (!this.goalsServiceInstance) {\n this.goalsServiceInstance = new GoalsService(this.runtime, {\n recordAudit: (\n eventType,\n ownerType,\n ownerId,\n reason,\n inputs,\n decision,\n ) =>\n this.recordAudit(\n eventType,\n ownerType,\n ownerId,\n reason,\n inputs,\n decision,\n ),\n normalizeOwnership: (input, current) =>\n this.normalizeOwnership(input, current),\n });\n }\n return this.goalsServiceInstance;\n }\n\n async deleteGoal(goalId: string): Promise<void> {\n return this.goalsService().deleteGoal(goalId);\n }\n\n async listGoals(): Promise<LifeOpsGoalRecord[]> {\n return this.goalsService().listGoals();\n }\n\n async getGoal(goalId: string): Promise<LifeOpsGoalRecord> {\n return this.goalsService().getGoal(goalId);\n }\n\n async createGoal(\n request: CreateLifeOpsGoalRequest,\n ): Promise<LifeOpsGoalRecord> {\n return this.goalsService().createGoal(request);\n }\n\n async updateGoal(\n goalId: string,\n request: UpdateLifeOpsGoalRequest,\n ): Promise<LifeOpsGoalRecord> {\n return this.goalsService().updateGoal(goalId, request);\n }\n\n public async collectLinkedDefinitionsForGoal(\n goalRecord: LifeOpsGoalRecord,\n ): Promise<LifeOpsTaskDefinition[]> {\n const linkedDefinitionIds = new Set(\n goalRecord.links\n .filter((link) => link.linkedType === \"definition\")\n .map((link) => link.linkedId),\n );\n const definitions = await this.repository.listDefinitions(this.agentId());\n return definitions\n .filter(\n (definition) =>\n definition.status !== \"archived\" &&\n (definition.goalId === goalRecord.goal.id ||\n linkedDefinitionIds.has(definition.id)),\n )\n .sort((left, right) => left.title.localeCompare(right.title));\n }\n\n public async collectOccurrenceViewsForDefinitions(\n definitions: LifeOpsTaskDefinition[],\n ): Promise<LifeOpsOccurrenceView[]> {\n const views: LifeOpsOccurrenceView[] = [];\n for (const definition of definitions) {\n const occurrences = await this.repository.listOccurrencesForDefinition(\n this.agentId(),\n definition.id,\n );\n for (const occurrence of occurrences) {\n const view = await this.repository.getOccurrenceView(\n this.agentId(),\n occurrence.id,\n );\n if (view) {\n views.push(view);\n }\n }\n }\n views.sort(\n (left, right) =>\n new Date(left.updatedAt).getTime() -\n new Date(right.updatedAt).getTime(),\n );\n return views;\n }\n\n public deriveGoalReviewState(\n goal: LifeOpsGoalDefinition,\n definitions: LifeOpsTaskDefinition[],\n activeOccurrences: LifeOpsOccurrenceView[],\n overdueOccurrences: LifeOpsOccurrenceView[],\n recentCompletions: LifeOpsOccurrenceView[],\n lastActivityAt: string | null,\n now: Date,\n ): LifeOpsGoalDefinition[\"reviewState\"] {\n if (goal.status === \"satisfied\") {\n return \"on_track\";\n }\n if (goal.status !== \"active\") {\n return goal.reviewState;\n }\n if (definitions.length === 0) {\n return \"needs_attention\";\n }\n if (overdueOccurrences.length > 0) {\n return \"at_risk\";\n }\n if (!lastActivityAt) {\n return \"needs_attention\";\n }\n const cadenceKind =\n isRecord(goal.cadence) && typeof goal.cadence.kind === \"string\"\n ? goal.cadence.kind\n : null;\n const staleMs =\n cadenceKind === \"daily\" ||\n cadenceKind === \"times_per_day\" ||\n cadenceKind === \"interval\"\n ? GOAL_STALE_DAYS_FREQUENT * ONE_DAY_MS\n : cadenceKind === \"weekly\"\n ? GOAL_STALE_DAYS_WEEKLY * ONE_DAY_MS\n : GOAL_STALE_DAYS_DEFAULT * ONE_DAY_MS;\n const lastActivityTime = new Date(lastActivityAt).getTime();\n if (!Number.isFinite(lastActivityTime)) {\n return \"needs_attention\";\n }\n if (now.getTime() - lastActivityTime > staleMs) {\n return activeOccurrences.length > 0 ? \"needs_attention\" : \"at_risk\";\n }\n if (recentCompletions.length === 0 && activeOccurrences.length === 0) {\n return \"needs_attention\";\n }\n return \"on_track\";\n }\n\n public buildGoalReviewExplanation(args: {\n goal: LifeOpsGoalDefinition;\n linkedDefinitionCount: number;\n activeOccurrenceCount: number;\n overdueOccurrenceCount: number;\n completedLast7Days: number;\n reviewState: LifeOpsGoalDefinition[\"reviewState\"];\n lastActivityAt: string | null;\n }): string {\n if (args.goal.status === \"satisfied\") {\n return \"This goal is marked satisfied and currently does not need more support work.\";\n }\n if (args.linkedDefinitionCount === 0) {\n return \"This goal has no linked support tasks or routines yet, so there is nothing concrete to keep it moving.\";\n }\n if (args.overdueOccurrenceCount > 0) {\n return `This goal is at risk because ${args.overdueOccurrenceCount} linked support ${args.overdueOccurrenceCount === 1 ? \"item is\" : \"items are\"} overdue.`;\n }\n if (args.completedLast7Days > 0) {\n return `This goal is on track because ${args.completedLast7Days} linked support ${args.completedLast7Days === 1 ? \"item was\" : \"items were\"} completed in the last 7 days.`;\n }\n if (args.activeOccurrenceCount > 0) {\n return `This goal has ${args.activeOccurrenceCount} active support ${args.activeOccurrenceCount === 1 ? \"item\" : \"items\"} in flight right now.`;\n }\n if (args.lastActivityAt) {\n return `This goal has support structure, but it has been quiet since ${args.lastActivityAt}.`;\n }\n if (args.reviewState === \"needs_attention\") {\n return \"This goal needs a clearer support structure or a new check-in.\";\n }\n return \"This goal has support structure and does not currently have overdue work.\";\n }\n\n public buildGoalSupportSuggestions(args: {\n goal: LifeOpsGoalDefinition;\n linkedDefinitions: LifeOpsTaskDefinition[];\n activeOccurrences: LifeOpsOccurrenceView[];\n overdueOccurrences: LifeOpsOccurrenceView[];\n recentCompletions: LifeOpsOccurrenceView[];\n }): LifeOpsGoalSupportSuggestion[] {\n const suggestions: LifeOpsGoalSupportSuggestion[] = [];\n if (args.linkedDefinitions.length === 0) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[0],\n title: \"Create the first support routine\",\n detail:\n \"Break this goal into a recurring task, habit, or routine so the agent can track and remind against something concrete.\",\n definitionId: null,\n occurrenceId: null,\n });\n return suggestions;\n }\n for (const overdue of args.overdueOccurrences.slice(0, 2)) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[2],\n title: overdue.title,\n detail:\n \"Resolve or reschedule this overdue support item so the goal is no longer drifting.\",\n definitionId: overdue.definitionId,\n occurrenceId: overdue.id,\n });\n }\n if (suggestions.length === 0 && args.activeOccurrences.length > 0) {\n const next = args.activeOccurrences[0];\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[1],\n title: next.title,\n detail:\n \"This is the clearest current action that advances the goal right now.\",\n definitionId: next.definitionId,\n occurrenceId: next.id,\n });\n }\n if (args.recentCompletions.length === 0) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[3],\n title: \"Review progress\",\n detail:\n \"Check whether the current cadence still fits the goal, or whether the goal needs a stronger routine.\",\n definitionId: null,\n occurrenceId: null,\n });\n }\n if (\n suggestions.length < 3 &&\n args.linkedDefinitions.every((definition) => definition.kind === \"task\")\n ) {\n suggestions.push({\n kind: LIFEOPS_GOAL_SUGGESTION_KINDS[4],\n title: \"Tighten the support cadence\",\n detail:\n \"This goal only has one-off tasks linked to it. Consider adding a recurring habit or routine if progress should stay continuous.\",\n definitionId: null,\n occurrenceId: null,\n });\n }\n return suggestions.slice(0, 3);\n }\n\n public scoreGoalSimilarity(args: {\n reference: {\n title: string;\n description?: string | null;\n successCriteria?: Record<string, unknown> | null;\n };\n candidate: LifeOpsGoalDefinition;\n }): number {\n return scoreGoalSimilarity(args);\n }\n\n public buildExperienceLoopSuggestions(args: {\n goal: LifeOpsGoalDefinition;\n linkedDefinitions: LifeOpsTaskDefinition[];\n recentCompletions: LifeOpsOccurrenceView[];\n }): LifeOpsGoalExperienceLoopSuggestion[] {\n const suggestions: LifeOpsGoalExperienceLoopSuggestion[] = [];\n const seen = new Set<string>();\n const pushSuggestion = (\n suggestion: LifeOpsGoalExperienceLoopSuggestion,\n ) => {\n const key = `${suggestion.definitionId ?? \"none\"}:${suggestion.title.toLowerCase()}`;\n if (seen.has(key)) {\n return;\n }\n seen.add(key);\n suggestions.push(suggestion);\n };\n\n for (const completion of args.recentCompletions.slice(0, 2)) {\n pushSuggestion({\n sourceGoalId: args.goal.id,\n definitionId: completion.definitionId,\n title: completion.title,\n detail: `Carry forward \"${completion.title}\" because it was one of the support steps you actually completed when \"${args.goal.title}\" stayed on track.`,\n });\n }\n\n for (const definition of args.linkedDefinitions.slice(0, 3)) {\n pushSuggestion({\n sourceGoalId: args.goal.id,\n definitionId: definition.id,\n title: definition.title,\n detail: `Re-use \"${definition.title}\" if the new goal needs the same support structure that helped \"${args.goal.title}\".`,\n });\n }\n\n return suggestions.slice(0, 3);\n }\n\n public formatLocalHourMinute(\n isoValue: string | null,\n timeZone: string,\n ): string | null {\n if (!isoValue) {\n return null;\n }\n const date = new Date(isoValue);\n if (Number.isNaN(date.getTime())) {\n return null;\n }\n const parts = getZonedDateParts(date, timeZone);\n return `${String(parts.hour).padStart(2, \"0\")}:${String(\n parts.minute,\n ).padStart(2, \"0\")}`;\n }\n\n public median(values: number[]): number | null {\n if (values.length === 0) {\n return null;\n }\n const sorted = [...values].sort((left, right) => left - right);\n const middle = Math.floor(sorted.length / 2);\n if (sorted.length % 2 === 1) {\n return sorted[middle];\n }\n return (sorted[middle - 1] + sorted[middle]) / 2;\n }\n\n public async buildGoalSemanticEvidence(args: {\n activeOccurrences: LifeOpsOccurrenceView[];\n goal: LifeOpsGoalDefinition;\n lastActivityAt: string | null;\n linkedDefinitions: LifeOpsTaskDefinition[];\n overdueOccurrences: LifeOpsOccurrenceView[];\n recentCompletions: LifeOpsOccurrenceView[];\n reviewState: LifeOpsGoalDefinition[\"reviewState\"];\n summary: LifeOpsGoalReview[\"summary\"];\n now: Date;\n }): Promise<Record<string, unknown>> {\n const timeZone = resolveDefaultTimeZone();\n const linkedDefinitionSummaries = args.linkedDefinitions\n .slice(0, 8)\n .map((definition) => ({\n id: definition.id,\n kind: definition.kind,\n title: definition.title,\n cadence: definition.cadence,\n status: definition.status,\n }));\n const sleepSignals = (\n await this.listActivitySignals({\n sinceAt: new Date(\n args.now.getTime() - 30 * 24 * 60 * 60 * 1000,\n ).toISOString(),\n limit: 80,\n })\n )\n .filter((signal) => signal.health?.sleep)\n .slice(0, 30);\n const sleepSessions = sleepSignals\n .map((signal) => {\n const sleep = signal.health?.sleep;\n if (!sleep) {\n return null;\n }\n return {\n observedAt: signal.observedAt,\n asleepAt: sleep.asleepAt,\n awakeAt: sleep.awakeAt,\n durationMinutes: sleep.durationMinutes,\n localBedtime: this.formatLocalHourMinute(sleep.asleepAt, timeZone),\n localWakeTime: this.formatLocalHourMinute(sleep.awakeAt, timeZone),\n stage: sleep.stage,\n };\n })\n .filter(\n (session): session is NonNullable<typeof session> => session !== null,\n )\n .slice(0, 14);\n const sleepStartHours = sleepSessions\n .map((session) => {\n const localBedtime = session.localBedtime;\n if (!localBedtime) {\n return null;\n }\n const [hour, minute] = localBedtime.split(\":\").map(Number);\n if (!Number.isFinite(hour) || !Number.isFinite(minute)) {\n return null;\n }\n return hour + minute / 60;\n })\n .filter((value): value is number => value !== null);\n const wakeHours = sleepSessions\n .map((session) => {\n const localWakeTime = session.localWakeTime;\n if (!localWakeTime) {\n return null;\n }\n const [hour, minute] = localWakeTime.split(\":\").map(Number);\n if (!Number.isFinite(hour) || !Number.isFinite(minute)) {\n return null;\n }\n return hour + minute / 60;\n })\n .filter((value): value is number => value !== null);\n const durations = sleepSessions\n .map((session) => session.durationMinutes)\n .filter((value): value is number => typeof value === \"number\");\n return {\n now: args.now.toISOString(),\n timeZone,\n goalGrounding: readGoalGroundingMetadata(args.goal.metadata),\n deterministicSummary: args.summary,\n reviewState: args.reviewState,\n linkedDefinitions: linkedDefinitionSummaries,\n activeOccurrences: args.activeOccurrences\n .slice(0, 8)\n .map((occurrence) => ({\n id: occurrence.id,\n title: occurrence.title,\n dueAt: occurrence.dueAt,\n state: occurrence.state,\n })),\n overdueOccurrences: args.overdueOccurrences\n .slice(0, 8)\n .map((occurrence) => ({\n id: occurrence.id,\n title: occurrence.title,\n dueAt: occurrence.dueAt,\n state: occurrence.state,\n })),\n recentCompletions: args.recentCompletions\n .slice(0, 8)\n .map((occurrence) => ({\n id: occurrence.id,\n title: occurrence.title,\n updatedAt: occurrence.updatedAt,\n })),\n lastActivityAt: args.lastActivityAt,\n sleepSummary: {\n sampleCount: sleepSessions.length,\n typicalBedtimeHour: this.median(sleepStartHours),\n typicalWakeHour: this.median(wakeHours),\n typicalSleepDurationMinutes:\n durations.length > 0\n ? Math.round(\n durations.reduce((sum, value) => sum + value, 0) /\n durations.length,\n )\n : null,\n },\n sleepSessions,\n };\n }\n\n public getCachedSemanticGoalReview(args: {\n goal: LifeOpsGoalDefinition;\n now: Date;\n }) {\n const cached = readGoalSemanticReviewMetadata(args.goal.metadata);\n if (!cached) {\n return null;\n }\n const reviewedAtMs = new Date(cached.reviewedAt).getTime();\n if (!Number.isFinite(reviewedAtMs)) {\n return null;\n }\n if (\n args.now.getTime() - reviewedAtMs >\n GOAL_SEMANTIC_REVIEW_CACHE_TTL_MS\n ) {\n return null;\n }\n return cached;\n }\n\n public async syncComputedGoalReviewState(\n goal: LifeOpsGoalDefinition,\n reviewState: LifeOpsGoalDefinition[\"reviewState\"],\n summary: LifeOpsGoalReview[\"summary\"],\n semanticReview: ReturnType<typeof buildGoalSemanticReviewMetadata> | null,\n now: Date,\n ): Promise<LifeOpsGoalDefinition> {\n const currentSemanticReview = readGoalSemanticReviewMetadata(\n goal.metadata,\n );\n const semanticUnchanged =\n !semanticReview ||\n (currentSemanticReview &&\n semanticReview &&\n currentSemanticReview.reviewedAt === semanticReview.reviewedAt &&\n currentSemanticReview.reviewState === semanticReview.reviewState &&\n currentSemanticReview.explanation === semanticReview.explanation);\n if (goal.reviewState === reviewState && semanticUnchanged) {\n return goal;\n }\n const mergedMetadata = mergeMetadata(goal.metadata, {\n computedGoalReview: {\n reviewedAt: now.toISOString(),\n reviewState,\n summary,\n },\n });\n const nextGoal: LifeOpsGoalDefinition = {\n ...goal,\n reviewState,\n metadata: semanticReview\n ? mergeGoalSemanticReviewMetadata(mergedMetadata, semanticReview)\n : mergedMetadata,\n updatedAt: now.toISOString(),\n };\n await this.repository.updateGoal(nextGoal);\n await this.repository.createAuditEvent(\n createLifeOpsAuditEvent({\n agentId: this.agentId(),\n eventType: \"goal_reviewed\",\n ownerType: \"goal\",\n ownerId: goal.id,\n reason: \"goal review recomputed\",\n inputs: {\n previousReviewState: goal.reviewState,\n },\n decision: {\n reviewState,\n summary,\n },\n actor: \"agent\",\n }),\n );\n return nextGoal;\n }\n\n public async buildGoalReview(\n goalRecord: LifeOpsGoalRecord,\n now: Date,\n options: { allowSemanticEvaluation?: boolean } = {},\n ): Promise<LifeOpsGoalReview> {\n const linkedDefinitions =\n await this.collectLinkedDefinitionsForGoal(goalRecord);\n const allOccurrenceViews =\n await this.collectOccurrenceViewsForDefinitions(linkedDefinitions);\n const lookbackStart = new Date(\n now.getTime() - GOAL_REVIEW_LOOKBACK_DAYS * 24 * 60 * 60 * 1000,\n );\n const activeOccurrences = allOccurrenceViews.filter(\n (occurrence) =>\n occurrence.state === \"visible\" || occurrence.state === \"snoozed\",\n );\n const overdueOccurrences = activeOccurrences.filter((occurrence) => {\n if (!occurrence.dueAt) {\n return false;\n }\n return new Date(occurrence.dueAt).getTime() < now.getTime();\n });\n const recentCompletions = allOccurrenceViews.filter(\n (occurrence) =>\n occurrence.state === \"completed\" &&\n new Date(occurrence.updatedAt).getTime() >= lookbackStart.getTime(),\n );\n const lastActivityAt = allOccurrenceViews.reduce<string | null>(\n (latest, occurrence) => {\n const currentTime = new Date(occurrence.updatedAt).getTime();\n if (!Number.isFinite(currentTime)) {\n return latest;\n }\n if (!latest) {\n return occurrence.updatedAt;\n }\n return currentTime > new Date(latest).getTime()\n ? occurrence.updatedAt\n : latest;\n },\n null,\n );\n const derivedReviewState = this.deriveGoalReviewState(\n goalRecord.goal,\n linkedDefinitions,\n activeOccurrences,\n overdueOccurrences,\n recentCompletions,\n lastActivityAt,\n now,\n );\n const summary: LifeOpsGoalReview[\"summary\"] = {\n linkedDefinitionCount: linkedDefinitions.length,\n activeOccurrenceCount: activeOccurrences.length,\n overdueOccurrenceCount: overdueOccurrences.length,\n completedLast7Days: recentCompletions.length,\n lastActivityAt,\n reviewState: derivedReviewState,\n explanation: this.buildGoalReviewExplanation({\n goal: goalRecord.goal,\n linkedDefinitionCount: linkedDefinitions.length,\n activeOccurrenceCount: activeOccurrences.length,\n overdueOccurrenceCount: overdueOccurrences.length,\n completedLast7Days: recentCompletions.length,\n reviewState: derivedReviewState,\n lastActivityAt,\n }),\n };\n const cachedSemanticReview = this.getCachedSemanticGoalReview({\n goal: goalRecord.goal,\n now,\n });\n const semanticEvidence = readGoalGroundingMetadata(\n goalRecord.goal.metadata,\n )\n ? await this.buildGoalSemanticEvidence({\n activeOccurrences,\n goal: goalRecord.goal,\n lastActivityAt,\n linkedDefinitions,\n overdueOccurrences,\n recentCompletions,\n reviewState: derivedReviewState,\n summary,\n now,\n })\n : null;\n const semanticReview =\n cachedSemanticReview ??\n (options.allowSemanticEvaluation && semanticEvidence\n ? await evaluateGoalProgressWithLlm({\n runtime: this.runtime,\n evidence: semanticEvidence,\n goal: goalRecord.goal,\n nowIso: now.toISOString(),\n })\n : null);\n const effectiveReviewState =\n semanticReview?.reviewState ?? derivedReviewState;\n const effectiveSummary: LifeOpsGoalReview[\"summary\"] = {\n ...summary,\n reviewState: effectiveReviewState,\n explanation: semanticReview?.explanation ?? summary.explanation,\n progressScore: semanticReview?.progressScore ?? null,\n confidence: semanticReview?.confidence ?? null,\n evidenceSummary: semanticReview?.evidenceSummary ?? null,\n missingEvidence: semanticReview?.missingEvidence ?? [],\n groundingState:\n readGoalGroundingMetadata(goalRecord.goal.metadata)?.groundingState ??\n null,\n groundingSummary:\n readGoalGroundingMetadata(goalRecord.goal.metadata)?.summary ?? null,\n semanticReviewedAt: semanticReview?.reviewedAt ?? null,\n };\n const goal = await this.syncComputedGoalReviewState(\n goalRecord.goal,\n effectiveReviewState,\n effectiveSummary,\n semanticReview,\n now,\n );\n const suggestions = semanticReview?.suggestions.length\n ? semanticReview.suggestions.map((suggestion) => ({\n kind:\n (suggestion.kind as LifeOpsGoalSupportSuggestion[\"kind\"]) ??\n \"review_progress\",\n title: suggestion.title,\n detail: suggestion.detail,\n definitionId: null,\n occurrenceId: null,\n }))\n : this.buildGoalSupportSuggestions({\n goal,\n linkedDefinitions,\n activeOccurrences,\n overdueOccurrences,\n recentCompletions,\n });\n return {\n goal,\n links: goalRecord.links,\n linkedDefinitions,\n activeOccurrences,\n overdueOccurrences,\n recentCompletions,\n suggestions,\n audits: await this.repository.listAuditEvents(\n this.agentId(),\n \"goal\",\n goal.id,\n ),\n summary: {\n ...effectiveSummary,\n reviewState: goal.reviewState,\n },\n };\n }\n\n async reviewGoal(\n goalId: string,\n now = new Date(),\n ): Promise<LifeOpsGoalReview> {\n const goalRecord = await this.getGoalRecord(goalId);\n return this.buildGoalReview(goalRecord, now, {\n allowSemanticEvaluation: true,\n });\n }\n\n async buildGoalExperienceLoop(\n reference: {\n goalId?: string | null;\n title: string;\n description?: string | null;\n successCriteria?: Record<string, unknown> | null;\n },\n now = new Date(),\n ): Promise<LifeOpsGoalExperienceLoop> {\n const goalRecords = await this.listGoals();\n const matches: Array<\n LifeOpsGoalExperienceLoopMatch & { readonly scoreSort: number }\n > = [];\n for (const record of goalRecords) {\n if (record.goal.id === reference.goalId) {\n continue;\n }\n if (record.goal.status !== \"satisfied\") {\n continue;\n }\n const score = this.scoreGoalSimilarity({\n reference,\n candidate: record.goal,\n });\n if (score < 0.34) {\n continue;\n }\n const review = await this.buildGoalReview(record, now, {\n allowSemanticEvaluation: false,\n });\n matches.push({\n goalId: review.goal.id,\n title: review.goal.title,\n description: review.goal.description,\n score: Number(score.toFixed(3)),\n scoreSort: score,\n status: review.goal.status,\n reviewState: review.summary.reviewState,\n linkedDefinitionCount: review.summary.linkedDefinitionCount,\n completedLast7Days: review.summary.completedLast7Days,\n lastActivityAt: review.summary.lastActivityAt,\n explanation: review.summary.explanation,\n carryForwardSuggestions: this.buildExperienceLoopSuggestions({\n goal: review.goal,\n linkedDefinitions: review.linkedDefinitions,\n recentCompletions: review.recentCompletions,\n }),\n });\n }\n\n matches.sort((left, right) => right.scoreSort - left.scoreSort);\n const similarGoals = matches\n .slice(0, 3)\n .map(({ scoreSort: _scoreSort, ...match }) => match);\n const carryForwardSeen = new Set<string>();\n const suggestedCarryForward: LifeOpsGoalExperienceLoopSuggestion[] = [];\n for (const match of similarGoals) {\n for (const suggestion of match.carryForwardSuggestions) {\n const key = `${suggestion.sourceGoalId}:${suggestion.definitionId ?? \"none\"}:${suggestion.title.toLowerCase()}`;\n if (carryForwardSeen.has(key)) {\n continue;\n }\n carryForwardSeen.add(key);\n suggestedCarryForward.push(suggestion);\n }\n }\n const topMatch = similarGoals[0] ?? null;\n\n return {\n referenceGoalId: reference.goalId ?? null,\n referenceTitle: reference.title,\n similarGoals,\n suggestedCarryForward: suggestedCarryForward.slice(0, 4),\n summary: topMatch\n ? `A similar completed goal, \"${topMatch.title}\", is the best carry-forward reference for \"${reference.title}\".`\n : null,\n };\n }\n\n async reviewGoalsForWeek(\n now = new Date(),\n ): Promise<LifeOpsWeeklyGoalReview> {\n const goals = (await this.repository.listGoals(this.agentId())).filter(\n (goal) => goal.status === \"active\",\n );\n const reviews: LifeOpsGoalReview[] = [];\n for (const goal of goals) {\n reviews.push(\n await this.buildGoalReview(\n {\n goal,\n links: await this.repository.listGoalLinksForGoal(\n this.agentId(),\n goal.id,\n ),\n },\n now,\n { allowSemanticEvaluation: false },\n ),\n );\n }\n const onTrack = reviews.filter(\n (review) => review.summary.reviewState === \"on_track\",\n );\n const atRisk = reviews.filter(\n (review) => review.summary.reviewState === \"at_risk\",\n );\n const needsAttention = reviews.filter(\n (review) => review.summary.reviewState === \"needs_attention\",\n );\n const idle = reviews.filter(\n (review) => review.summary.reviewState === \"idle\",\n );\n\n return {\n generatedAt: now.toISOString(),\n reviewWindow: \"this_week\",\n summary: {\n totalGoals: reviews.length,\n onTrackCount: onTrack.length,\n atRiskCount: atRisk.length,\n needsAttentionCount: needsAttention.length,\n idleCount: idle.length,\n },\n onTrack,\n atRisk,\n needsAttention,\n idle,\n };\n }\n\n async explainOccurrence(\n occurrenceId: string,\n ): Promise<LifeOpsOccurrenceExplanation> {\n const occurrence = await this.repository.getOccurrenceView(\n this.agentId(),\n occurrenceId,\n );\n if (!occurrence) {\n fail(404, \"life-ops occurrence not found\");\n }\n const definitionRecord = await this.getDefinitionRecord(\n occurrence.definitionId,\n );\n const linkedGoal = definitionRecord.definition.goalId\n ? await this.getGoalRecord(definitionRecord.definition.goalId)\n : null;\n const reminderInspection = await this.inspectReminder(\n \"occurrence\",\n occurrence.id,\n );\n const definitionAudits = await this.repository.listAuditEvents(\n this.agentId(),\n \"definition\",\n definitionRecord.definition.id,\n );\n const lastReminderAttempt = reminderInspection.attempts[0] ?? null;\n const lastOccurrenceAudit = reminderInspection.audits[0] ?? null;\n const whyVisible =\n occurrence.state === \"snoozed\" && occurrence.snoozedUntil\n ? `This item is still visible because it was snoozed until ${occurrence.snoozedUntil}.`\n : occurrence.dueAt\n ? `This item is visible because it is due at ${occurrence.dueAt} and its current relevance window started at ${occurrence.relevanceStartAt}.`\n : `This item is visible because its current relevance window started at ${occurrence.relevanceStartAt}.`;\n return {\n occurrence,\n definition: definitionRecord.definition,\n definitionPerformance: definitionRecord.performance,\n reminderPlan: definitionRecord.reminderPlan,\n linkedGoal,\n reminderInspection,\n definitionAudits,\n summary: {\n originalIntent: definitionRecord.definition.originalIntent,\n source: definitionRecord.definition.source,\n whyVisible,\n lastReminderAt: lastReminderAttempt?.attemptedAt ?? null,\n lastReminderChannel: lastReminderAttempt?.channel,\n lastReminderOutcome: lastReminderAttempt?.outcome,\n lastActionSummary: lastOccurrenceAudit\n ? `${lastOccurrenceAudit.reason} at ${lastOccurrenceAudit.createdAt}`\n : null,\n },\n };\n }\n\n public async refreshGoalReviewStates(\n now: Date,\n ): Promise<LifeOpsGoalDefinition[]> {\n const goals = (await this.repository.listGoals(this.agentId())).filter(\n (goal) => goal.status === \"active\",\n );\n const refreshed: LifeOpsGoalDefinition[] = [];\n for (const goal of goals) {\n const review = await this.buildGoalReview(\n {\n goal,\n links: await this.repository.listGoalLinksForGoal(\n this.agentId(),\n goal.id,\n ),\n },\n now,\n { allowSemanticEvaluation: false },\n );\n refreshed.push(review.goal);\n }\n return refreshed;\n }\n\n async getOverview(now = new Date()): Promise<LifeOpsOverview> {\n const schedule = await this.refreshEffectiveScheduleState({\n timezone: resolveDefaultTimeZone(),\n now,\n });\n const definitions = await this.repository.listActiveDefinitions(\n this.agentId(),\n );\n for (const definition of definitions) {\n await this.refreshDefinitionOccurrences(definition, now);\n }\n const definitionsById = new Map(\n definitions.map((definition) => [definition.id, definition]),\n );\n const horizon = addMinutes(now, OVERVIEW_HORIZON_MINUTES).toISOString();\n const overviewOccurrences =\n await this.repository.listOccurrenceViewsForOverview(\n this.agentId(),\n horizon,\n );\n const reminderPlans = await this.repository.listReminderPlansForOwners(\n this.agentId(),\n \"definition\",\n overviewOccurrences.map((occurrence) => occurrence.definitionId),\n );\n const policies = await this.repository.listChannelPolicies(\n this.agentId(),\n );\n const definitionPreferencesById = new Map<\n string,\n LifeOpsReminderPreference\n >();\n const plansByDefinitionId = new Map<string, LifeOpsReminderPlan>();\n for (const plan of reminderPlans) {\n const definition = definitionsById.get(plan.ownerId) ?? null;\n const preference = this.buildReminderPreferenceResponse(\n definition,\n policies,\n );\n definitionPreferencesById.set(plan.ownerId, preference);\n const effectivePlan = this.resolveEffectiveReminderPlan(\n plan,\n preference,\n );\n if (effectivePlan) {\n plansByDefinitionId.set(plan.ownerId, effectivePlan);\n }\n }\n const calendarEvents = await this.repository.listCalendarEvents(\n this.agentId(),\n \"google\",\n now.toISOString(),\n addMinutes(now, OVERVIEW_HORIZON_MINUTES).toISOString(),\n );\n const calendarReminderPlans =\n await this.repository.listReminderPlansForOwners(\n this.agentId(),\n \"calendar_event\",\n calendarEvents.map((event) => event.id),\n );\n const globalReminderPreference = this.buildReminderPreferenceResponse(\n null,\n policies,\n );\n const occurrenceUrgencies = new Map<string, LifeOpsReminderUrgency>();\n for (const occurrence of overviewOccurrences) {\n occurrenceUrgencies.set(\n occurrence.id,\n typeof occurrence.metadata.urgency === \"string\"\n ? normalizeReminderUrgency(occurrence.metadata.urgency)\n : priorityToUrgency(occurrence.priority),\n );\n }\n const eventUrgencies = new Map<string, LifeOpsReminderUrgency>();\n for (const event of calendarEvents) {\n eventUrgencies.set(\n event.id,\n typeof event.metadata.urgency === \"string\"\n ? normalizeReminderUrgency(event.metadata.urgency)\n : \"medium\",\n );\n }\n const plansByEventId = new Map<string, LifeOpsReminderPlan>();\n for (const plan of calendarReminderPlans) {\n const effectivePlan = this.resolveEffectiveReminderPlan(\n plan,\n globalReminderPreference,\n );\n if (effectivePlan) {\n plansByEventId.set(plan.ownerId, effectivePlan);\n }\n }\n const goals = await this.refreshGoalReviewStates(now);\n const allReminders = [\n ...buildActiveReminders(\n overviewOccurrences,\n plansByDefinitionId,\n now,\n ).filter((reminder) =>\n shouldDeliverReminderForIntensity(\n definitionPreferencesById.get(reminder.definitionId ?? \"\")\n ?.effective?.intensity ??\n globalReminderPreference.effective.intensity,\n occurrenceUrgencies.get(reminder.ownerId) ?? \"medium\",\n ),\n ),\n ...buildActiveCalendarEventReminders(\n calendarEvents,\n plansByEventId,\n this.ownerEntityId(),\n now,\n ).filter((reminder) =>\n shouldDeliverReminderForIntensity(\n globalReminderPreference.effective.intensity,\n eventUrgencies.get(reminder.ownerId) ?? \"medium\",\n ),\n ),\n ].sort(\n (left, right) =>\n new Date(left.scheduledFor).getTime() -\n new Date(right.scheduledFor).getTime(),\n );\n const ownerSectionBase = {\n occurrences: selectOverviewOccurrences(\n overviewOccurrences.filter(\n (occurrence) => occurrence.subjectType === \"owner\",\n ),\n ),\n goals: goals.filter((goal) => goal.subjectType === \"owner\"),\n reminders: allReminders\n .filter((reminder) => reminder.subjectType === \"owner\")\n .slice(0, MAX_OVERVIEW_REMINDERS),\n };\n const agentSectionBase = {\n occurrences: selectOverviewOccurrences(\n overviewOccurrences.filter(\n (occurrence) => occurrence.subjectType === \"agent\",\n ),\n ),\n goals: goals.filter((goal) => goal.subjectType === \"agent\"),\n reminders: allReminders\n .filter((reminder) => reminder.subjectType === \"agent\")\n .slice(0, MAX_OVERVIEW_REMINDERS),\n };\n const owner: LifeOpsOverviewSection = {\n ...ownerSectionBase,\n summary: summarizeOverviewSection(ownerSectionBase, now),\n };\n const agentOps: LifeOpsOverviewSection = {\n ...agentSectionBase,\n summary: summarizeOverviewSection(agentSectionBase, now),\n };\n return {\n occurrences: owner.occurrences,\n goals: owner.goals,\n reminders: owner.reminders,\n summary: owner.summary,\n owner,\n agentOps,\n schedule,\n };\n }\n\n async listChannelPolicies(): Promise<LifeOpsChannelPolicy[]> {\n return this.repository.listChannelPolicies(this.agentId());\n }\n }\n\n return LifeOpsGoalServiceMixin as unknown as MixinClass<\n TBase,\n LifeOpsGoalService\n >;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,13 @@
1
+ import type { DisconnectLifeOpsGoogleConnectorRequest, LifeOpsConnectorMode, LifeOpsConnectorSide, LifeOpsGoogleConnectorStatus, StartLifeOpsGoogleConnectorRequest, StartLifeOpsGoogleConnectorResponse } from "../contracts/index.js";
2
+ import type { Constructor, LifeOpsServiceBase, MixinClass } from "./service-mixin-core.js";
3
+ export interface LifeOpsGoogleService {
4
+ getGoogleConnectorStatus(requestUrl: URL, requestedMode?: LifeOpsConnectorMode, requestedSide?: LifeOpsConnectorSide, grantId?: string): Promise<LifeOpsGoogleConnectorStatus>;
5
+ getGoogleConnectorAccounts(requestUrl: URL, requestedSide?: LifeOpsConnectorSide): Promise<LifeOpsGoogleConnectorStatus[]>;
6
+ selectGoogleConnectorMode(requestUrl: URL, preferredModeInput: LifeOpsConnectorMode | undefined, requestedSide?: LifeOpsConnectorSide): Promise<LifeOpsGoogleConnectorStatus>;
7
+ startGoogleConnector(request: StartLifeOpsGoogleConnectorRequest, requestUrl: URL): Promise<StartLifeOpsGoogleConnectorResponse>;
8
+ completeGoogleConnectorCallback(callbackUrl: URL): Promise<LifeOpsGoogleConnectorStatus>;
9
+ disconnectGoogleConnector(request: DisconnectLifeOpsGoogleConnectorRequest, requestUrl: URL): Promise<LifeOpsGoogleConnectorStatus>;
10
+ }
11
+ /** @internal */
12
+ export declare function withGoogle<TBase extends Constructor<LifeOpsServiceBase>>(Base: TBase): MixinClass<TBase, LifeOpsGoogleService>;
13
+ //# sourceMappingURL=service-mixin-google.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-mixin-google.d.ts","sourceRoot":"","sources":["../../src/lifeops/service-mixin-google.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,uCAAuC,EAEvC,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,kCAAkC,EAClC,mCAAmC,EACpC,MAAM,uBAAuB,CAAC;AAY/B,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,UAAU,EACX,MAAM,yBAAyB,CAAC;AAQjC,MAAM,WAAW,oBAAoB;IACnC,wBAAwB,CACtB,UAAU,EAAE,GAAG,EACf,aAAa,CAAC,EAAE,oBAAoB,EACpC,aAAa,CAAC,EAAE,oBAAoB,EACpC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,0BAA0B,CACxB,UAAU,EAAE,GAAG,EACf,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,4BAA4B,EAAE,CAAC,CAAC;IAC3C,yBAAyB,CACvB,UAAU,EAAE,GAAG,EACf,kBAAkB,EAAE,oBAAoB,GAAG,SAAS,EACpD,aAAa,CAAC,EAAE,oBAAoB,GACnC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,oBAAoB,CAClB,OAAO,EAAE,kCAAkC,EAC3C,UAAU,EAAE,GAAG,GACd,OAAO,CAAC,mCAAmC,CAAC,CAAC;IAChD,+BAA+B,CAC7B,WAAW,EAAE,GAAG,GACf,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,yBAAyB,CACvB,OAAO,EAAE,uCAAuC,EAChD,UAAU,EAAE,GAAG,GACd,OAAO,CAAC,4BAA4B,CAAC,CAAC;CAC1C;AA4DD,gBAAgB;AAChB,wBAAgB,UAAU,CAAC,KAAK,SAAS,WAAW,CAAC,kBAAkB,CAAC,EACtE,IAAI,EAAE,KAAK,GACV,UAAU,CAAC,KAAK,EAAE,oBAAoB,CAAC,CAoazC"}
@@ -0,0 +1,398 @@
1
+ import {
2
+ getConnectorAccountManager
3
+ } from "@elizaos/core";
4
+ import {
5
+ disconnectedGoogleStatus,
6
+ googleAccountIdFromGrantId,
7
+ googleGrantFromAccount,
8
+ googleGrantIdForAccount,
9
+ googleScopesForAccount,
10
+ googleSideForAccount,
11
+ googleStatusFromAccount,
12
+ listGoogleConnectorAccounts,
13
+ resolveGoogleConnectorAccount
14
+ } from "./google-plugin-delegates.js";
15
+ import { fail, normalizeOptionalString } from "./service-normalize.js";
16
+ import {
17
+ normalizeGoogleCapabilityRequest,
18
+ normalizeOptionalConnectorMode,
19
+ normalizeOptionalConnectorSide
20
+ } from "./service-normalize-connector.js";
21
+ function roleForSide(side) {
22
+ return side === "agent" ? "AGENT" : "OWNER";
23
+ }
24
+ function sideFromMetadata(value) {
25
+ return value === "agent" ? "agent" : "owner";
26
+ }
27
+ function requestedScopesForCapabilities(capabilities) {
28
+ if (!capabilities || capabilities.length === 0) {
29
+ return void 0;
30
+ }
31
+ return googleScopesForAccount(
32
+ {
33
+ id: "requested",
34
+ provider: "google",
35
+ role: "OWNER",
36
+ purpose: [],
37
+ accessGate: "owner_binding",
38
+ status: "pending",
39
+ createdAt: Date.now(),
40
+ updatedAt: Date.now(),
41
+ metadata: { grantedCapabilities: [...capabilities] }
42
+ },
43
+ capabilities
44
+ );
45
+ }
46
+ function assertLocalMode(mode) {
47
+ if (mode && mode !== "local") {
48
+ fail(
49
+ 410,
50
+ "LifeOps no longer manages cloud or legacy Google modes. Use @elizaos/plugin-google connector accounts."
51
+ );
52
+ }
53
+ }
54
+ function googlePluginUnavailableStatus(side) {
55
+ return {
56
+ ...disconnectedGoogleStatus(side),
57
+ configured: false,
58
+ reason: "config_missing",
59
+ degradations: [
60
+ {
61
+ axis: "disconnected",
62
+ code: "google_plugin_unavailable",
63
+ message: "@elizaos/plugin-google is required for Google accounts. LifeOps no longer stores Google OAuth tokens directly.",
64
+ retryable: true
65
+ }
66
+ ]
67
+ };
68
+ }
69
+ function withGoogle(Base) {
70
+ const GoogleBase = Base;
71
+ class LifeOpsGoogleServiceMixin extends GoogleBase {
72
+ googleConnectorManager() {
73
+ try {
74
+ return getConnectorAccountManager(this.runtime);
75
+ } catch {
76
+ return null;
77
+ }
78
+ }
79
+ googleAccountStatus(account) {
80
+ return googleStatusFromAccount({
81
+ account,
82
+ agentId: this.agentId(),
83
+ defaultMode: "local",
84
+ availableModes: ["local"]
85
+ });
86
+ }
87
+ async withGoogleGrantOperation(_grant, operation) {
88
+ return operation();
89
+ }
90
+ async runManagedGoogleOperation(_grant, _operation) {
91
+ fail(
92
+ 410,
93
+ "Cloud-managed Google operations were removed from LifeOps. Use @elizaos/plugin-google connector accounts."
94
+ );
95
+ }
96
+ async clearGoogleConnectorData(side) {
97
+ const calendarEvents = await this.repository.listCalendarEvents(
98
+ this.agentId(),
99
+ "google",
100
+ void 0,
101
+ void 0,
102
+ side
103
+ );
104
+ await this.deleteCalendarReminderPlansForEvents(
105
+ calendarEvents.map((event) => event.id)
106
+ );
107
+ await this.repository.deleteCalendarEventsForProvider(
108
+ this.agentId(),
109
+ "google",
110
+ void 0,
111
+ side
112
+ );
113
+ await this.repository.deleteCalendarSyncState(
114
+ this.agentId(),
115
+ "google",
116
+ void 0,
117
+ side
118
+ );
119
+ await this.repository.deleteGmailMessagesForProvider(
120
+ this.agentId(),
121
+ "google",
122
+ side
123
+ );
124
+ await this.repository.deleteGmailSpamReviewItemsForProvider(
125
+ this.agentId(),
126
+ "google",
127
+ side
128
+ );
129
+ await this.repository.deleteGmailSyncState(
130
+ this.agentId(),
131
+ "google",
132
+ void 0,
133
+ side
134
+ );
135
+ }
136
+ async clearGoogleGrantData(grant) {
137
+ await this.deleteCalendarReminderPlansForEvents(
138
+ (await this.repository.listCalendarEvents(
139
+ this.agentId(),
140
+ "google",
141
+ void 0,
142
+ void 0,
143
+ grant.side
144
+ )).filter((event) => event.grantId === grant.id).map((event) => event.id)
145
+ );
146
+ await this.repository.deleteCalendarEventsForProvider(
147
+ this.agentId(),
148
+ "google",
149
+ grant.id,
150
+ grant.side
151
+ );
152
+ await this.repository.deleteCalendarSyncState(
153
+ this.agentId(),
154
+ "google",
155
+ grant.id,
156
+ grant.side
157
+ );
158
+ await this.repository.deleteGmailMessagesForProvider(
159
+ this.agentId(),
160
+ "google",
161
+ grant.side,
162
+ grant.id
163
+ );
164
+ await this.repository.deleteGmailSpamReviewItemsForProvider(
165
+ this.agentId(),
166
+ "google",
167
+ grant.side,
168
+ grant.id
169
+ );
170
+ await this.repository.deleteGmailSyncState(
171
+ this.agentId(),
172
+ "google",
173
+ grant.id,
174
+ grant.side
175
+ );
176
+ }
177
+ async deleteCalendarReminderPlansForEvents(_eventIds) {
178
+ }
179
+ async setPreferredGoogleConnectorMode(_mode, _side) {
180
+ return null;
181
+ }
182
+ async requireGoogleCalendarGrant(requestUrl, requestedMode, requestedSide, grantId) {
183
+ assertLocalMode(normalizeOptionalConnectorMode(requestedMode, "mode"));
184
+ const status = await this.getGoogleConnectorStatus(
185
+ requestUrl,
186
+ "local",
187
+ requestedSide,
188
+ grantId
189
+ );
190
+ const grant = status.grant;
191
+ if (!status.connected || !grant) {
192
+ fail(409, "Google Calendar is not connected.");
193
+ }
194
+ if (!grant.capabilities.includes("google.calendar.read")) {
195
+ fail(403, "Google Calendar read access has not been granted.");
196
+ }
197
+ return grant;
198
+ }
199
+ async requireGoogleCalendarWriteGrant(requestUrl, requestedMode, requestedSide, grantId) {
200
+ const grant = await this.requireGoogleCalendarGrant(
201
+ requestUrl,
202
+ requestedMode,
203
+ requestedSide,
204
+ grantId
205
+ );
206
+ if (!grant.capabilities.includes("google.calendar.write")) {
207
+ fail(403, "Google Calendar write access has not been granted.");
208
+ }
209
+ return grant;
210
+ }
211
+ async requireGoogleGmailGrant(requestUrl, requestedMode, requestedSide, grantId) {
212
+ assertLocalMode(normalizeOptionalConnectorMode(requestedMode, "mode"));
213
+ const status = await this.getGoogleConnectorStatus(
214
+ requestUrl,
215
+ "local",
216
+ requestedSide,
217
+ grantId
218
+ );
219
+ const grant = status.grant;
220
+ if (!status.connected || !grant) {
221
+ fail(409, "Google Gmail is not connected.");
222
+ }
223
+ if (!grant.capabilities.includes("google.gmail.triage")) {
224
+ fail(403, "Google Gmail triage access has not been granted.");
225
+ }
226
+ return grant;
227
+ }
228
+ async requireGoogleGmailSendGrant(requestUrl, requestedMode, requestedSide, grantId) {
229
+ const grant = await this.requireGoogleGmailGrant(
230
+ requestUrl,
231
+ requestedMode,
232
+ requestedSide,
233
+ grantId
234
+ );
235
+ if (!grant.capabilities.includes("google.gmail.send")) {
236
+ fail(403, "Google Gmail send access has not been granted.");
237
+ }
238
+ return grant;
239
+ }
240
+ async getGoogleConnectorStatus(_requestUrl, requestedMode, requestedSide, grantId) {
241
+ const mode = normalizeOptionalConnectorMode(requestedMode, "mode");
242
+ assertLocalMode(mode);
243
+ const side = normalizeOptionalConnectorSide(requestedSide, "side") ?? "owner";
244
+ const manager = this.googleConnectorManager();
245
+ if (!manager?.getProvider?.("google")) {
246
+ return googlePluginUnavailableStatus(side);
247
+ }
248
+ const account = await resolveGoogleConnectorAccount({
249
+ runtime: this.runtime,
250
+ requestedSide: side,
251
+ grantId
252
+ });
253
+ return account ? this.googleAccountStatus(account) : disconnectedGoogleStatus(side);
254
+ }
255
+ async getGoogleConnectorAccounts(_requestUrl, requestedSide) {
256
+ const side = normalizeOptionalConnectorSide(requestedSide, "side");
257
+ const manager = this.googleConnectorManager();
258
+ if (!manager?.getProvider?.("google")) {
259
+ return side ? [googlePluginUnavailableStatus(side)] : [
260
+ googlePluginUnavailableStatus("owner"),
261
+ googlePluginUnavailableStatus("agent")
262
+ ];
263
+ }
264
+ const accounts = await listGoogleConnectorAccounts({
265
+ runtime: this.runtime,
266
+ requestedSide: side
267
+ });
268
+ if (accounts.length === 0) {
269
+ return side ? [disconnectedGoogleStatus(side)] : [];
270
+ }
271
+ return accounts.map((account) => this.googleAccountStatus(account));
272
+ }
273
+ async selectGoogleConnectorMode(requestUrl, preferredModeInput, requestedSide) {
274
+ const preferredMode = normalizeOptionalConnectorMode(
275
+ preferredModeInput,
276
+ "mode"
277
+ );
278
+ assertLocalMode(preferredMode);
279
+ return this.getGoogleConnectorStatus(requestUrl, "local", requestedSide);
280
+ }
281
+ async startGoogleConnector(request, requestUrl) {
282
+ const mode = normalizeOptionalConnectorMode(request.mode, "mode");
283
+ assertLocalMode(mode);
284
+ const requestedSide = normalizeOptionalConnectorSide(request.side, "side") ?? "owner";
285
+ const requestedCapabilities = normalizeGoogleCapabilityRequest(
286
+ request.capabilities
287
+ );
288
+ const manager = this.googleConnectorManager();
289
+ if (!manager?.getProvider?.("google")) {
290
+ fail(
291
+ 503,
292
+ "@elizaos/plugin-google is required before starting Google OAuth."
293
+ );
294
+ }
295
+ const requestedAccountId = googleAccountIdFromGrantId(request.grantId);
296
+ const redirectUri = new URL(
297
+ "/api/connectors/google/oauth/callback",
298
+ requestUrl.origin
299
+ ).toString();
300
+ const flow = await manager.startOAuth("google", {
301
+ redirectUri,
302
+ accountId: requestedAccountId ?? void 0,
303
+ scopes: requestedScopesForCapabilities(requestedCapabilities),
304
+ metadata: {
305
+ lifeops: true,
306
+ side: requestedSide,
307
+ role: roleForSide(requestedSide),
308
+ requestedRole: roleForSide(requestedSide),
309
+ requestedCapabilities,
310
+ privacy: "owner_only",
311
+ redirectUrl: normalizeOptionalString(request.redirectUrl)
312
+ }
313
+ });
314
+ return {
315
+ provider: "google",
316
+ side: requestedSide,
317
+ mode: "local",
318
+ requestedCapabilities: requestedCapabilities ?? [],
319
+ redirectUri: flow.redirectUri ?? redirectUri,
320
+ authUrl: flow.authUrl ?? ""
321
+ };
322
+ }
323
+ async completeGoogleConnectorCallback(callbackUrl) {
324
+ const manager = this.googleConnectorManager();
325
+ if (!manager?.getProvider?.("google")) {
326
+ fail(
327
+ 503,
328
+ "@elizaos/plugin-google is required before completing Google OAuth."
329
+ );
330
+ }
331
+ const state = callbackUrl.searchParams.get("state") ?? "";
332
+ const completed = await manager.completeOAuth("google", {
333
+ state,
334
+ code: callbackUrl.searchParams.get("code") ?? void 0,
335
+ error: callbackUrl.searchParams.get("error") ?? void 0,
336
+ errorDescription: callbackUrl.searchParams.get("error_description") ?? void 0,
337
+ query: Object.fromEntries(callbackUrl.searchParams.entries())
338
+ });
339
+ const side = sideFromMetadata(completed.flow.metadata?.side);
340
+ const accountId = completed.account?.id ?? completed.flow.accountId ?? void 0;
341
+ return this.getGoogleConnectorStatus(
342
+ callbackUrl,
343
+ "local",
344
+ side,
345
+ accountId ? googleGrantIdForAccount(accountId) : void 0
346
+ );
347
+ }
348
+ async disconnectGoogleConnector(request, requestUrl) {
349
+ const mode = normalizeOptionalConnectorMode(request.mode, "mode");
350
+ assertLocalMode(mode);
351
+ const side = normalizeOptionalConnectorSide(request.side, "side");
352
+ const manager = this.googleConnectorManager();
353
+ if (!manager?.getProvider?.("google")) {
354
+ fail(
355
+ 503,
356
+ "@elizaos/plugin-google is required before disconnecting Google accounts."
357
+ );
358
+ }
359
+ const requestedGrantId = normalizeOptionalString(request.grantId);
360
+ const account = await resolveGoogleConnectorAccount({
361
+ runtime: this.runtime,
362
+ requestedSide: side,
363
+ grantId: requestedGrantId
364
+ });
365
+ if (!account) {
366
+ if (requestedGrantId) {
367
+ fail(404, "Google connector account not found.");
368
+ }
369
+ return this.getGoogleConnectorStatus(requestUrl, "local", side);
370
+ }
371
+ const grant = googleGrantFromAccount({
372
+ account,
373
+ agentId: this.agentId()
374
+ });
375
+ await manager.deleteAccount("google", account.id);
376
+ await this.clearGoogleGrantData(grant);
377
+ await this.recordConnectorAudit(
378
+ "google:connector-account",
379
+ "google connector account disconnected",
380
+ {
381
+ connectorAccountId: account.id,
382
+ side: googleSideForAccount(account)
383
+ },
384
+ { disconnected: true }
385
+ );
386
+ return this.getGoogleConnectorStatus(
387
+ requestUrl,
388
+ "local",
389
+ side ?? googleSideForAccount(account)
390
+ );
391
+ }
392
+ }
393
+ return LifeOpsGoogleServiceMixin;
394
+ }
395
+ export {
396
+ withGoogle
397
+ };
398
+ //# sourceMappingURL=service-mixin-google.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/lifeops/service-mixin-google.ts"],"sourcesContent":["import {\n type ConnectorAccount,\n getConnectorAccountManager,\n} from \"@elizaos/core\";\nimport type {\n DisconnectLifeOpsGoogleConnectorRequest,\n LifeOpsConnectorGrant,\n LifeOpsConnectorMode,\n LifeOpsConnectorSide,\n LifeOpsGoogleConnectorStatus,\n StartLifeOpsGoogleConnectorRequest,\n StartLifeOpsGoogleConnectorResponse,\n} from \"../contracts/index.js\";\nimport {\n disconnectedGoogleStatus,\n googleAccountIdFromGrantId,\n googleGrantFromAccount,\n googleGrantIdForAccount,\n googleScopesForAccount,\n googleSideForAccount,\n googleStatusFromAccount,\n listGoogleConnectorAccounts,\n resolveGoogleConnectorAccount,\n} from \"./google-plugin-delegates.js\";\nimport type {\n Constructor,\n LifeOpsServiceBase,\n MixinClass,\n} from \"./service-mixin-core.js\";\nimport { fail, normalizeOptionalString } from \"./service-normalize.js\";\nimport {\n normalizeGoogleCapabilityRequest,\n normalizeOptionalConnectorMode,\n normalizeOptionalConnectorSide,\n} from \"./service-normalize-connector.js\";\n\nexport interface LifeOpsGoogleService {\n getGoogleConnectorStatus(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n getGoogleConnectorAccounts(\n requestUrl: URL,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus[]>;\n selectGoogleConnectorMode(\n requestUrl: URL,\n preferredModeInput: LifeOpsConnectorMode | undefined,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n startGoogleConnector(\n request: StartLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<StartLifeOpsGoogleConnectorResponse>;\n completeGoogleConnectorCallback(\n callbackUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n disconnectGoogleConnector(\n request: DisconnectLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus>;\n}\n\nfunction roleForSide(side: LifeOpsConnectorSide): \"OWNER\" | \"AGENT\" {\n return side === \"agent\" ? \"AGENT\" : \"OWNER\";\n}\n\nfunction sideFromMetadata(value: unknown): LifeOpsConnectorSide {\n return value === \"agent\" ? \"agent\" : \"owner\";\n}\n\nfunction requestedScopesForCapabilities(\n capabilities: readonly string[] | undefined,\n): string[] | undefined {\n if (!capabilities || capabilities.length === 0) {\n return undefined;\n }\n return googleScopesForAccount(\n {\n id: \"requested\",\n provider: \"google\",\n role: \"OWNER\",\n purpose: [],\n accessGate: \"owner_binding\",\n status: \"pending\",\n createdAt: Date.now(),\n updatedAt: Date.now(),\n metadata: { grantedCapabilities: [...capabilities] },\n } as ConnectorAccount,\n capabilities as never,\n );\n}\n\nfunction assertLocalMode(mode?: LifeOpsConnectorMode): void {\n if (mode && mode !== \"local\") {\n fail(\n 410,\n \"LifeOps no longer manages cloud or legacy Google modes. Use @elizaos/plugin-google connector accounts.\",\n );\n }\n}\n\nfunction googlePluginUnavailableStatus(\n side: LifeOpsConnectorSide,\n): LifeOpsGoogleConnectorStatus {\n return {\n ...disconnectedGoogleStatus(side),\n configured: false,\n reason: \"config_missing\",\n degradations: [\n {\n axis: \"disconnected\",\n code: \"google_plugin_unavailable\",\n message:\n \"@elizaos/plugin-google is required for Google accounts. LifeOps no longer stores Google OAuth tokens directly.\",\n retryable: true,\n },\n ],\n };\n}\n\n/** @internal */\nexport function withGoogle<TBase extends Constructor<LifeOpsServiceBase>>(\n Base: TBase,\n): MixinClass<TBase, LifeOpsGoogleService> {\n const GoogleBase = Base as unknown as Constructor<LifeOpsServiceBase>;\n\n class LifeOpsGoogleServiceMixin extends GoogleBase {\n private googleConnectorManager() {\n try {\n return getConnectorAccountManager(this.runtime);\n } catch {\n return null;\n }\n }\n\n private googleAccountStatus(\n account: ConnectorAccount,\n ): LifeOpsGoogleConnectorStatus {\n return googleStatusFromAccount({\n account,\n agentId: this.agentId(),\n defaultMode: \"local\",\n availableModes: [\"local\"],\n });\n }\n\n public async withGoogleGrantOperation<T>(\n _grant: LifeOpsConnectorGrant,\n operation: () => Promise<T>,\n ): Promise<T> {\n return operation();\n }\n\n public async runManagedGoogleOperation<T>(\n _grant: LifeOpsConnectorGrant,\n _operation: () => Promise<T>,\n ): Promise<T> {\n fail(\n 410,\n \"Cloud-managed Google operations were removed from LifeOps. Use @elizaos/plugin-google connector accounts.\",\n );\n }\n\n public async clearGoogleConnectorData(\n side?: LifeOpsConnectorSide,\n ): Promise<void> {\n const calendarEvents = await this.repository.listCalendarEvents(\n this.agentId(),\n \"google\",\n undefined,\n undefined,\n side,\n );\n await this.deleteCalendarReminderPlansForEvents(\n calendarEvents.map((event) => event.id),\n );\n await this.repository.deleteCalendarEventsForProvider(\n this.agentId(),\n \"google\",\n undefined,\n side,\n );\n await this.repository.deleteCalendarSyncState(\n this.agentId(),\n \"google\",\n undefined,\n side,\n );\n await this.repository.deleteGmailMessagesForProvider(\n this.agentId(),\n \"google\",\n side,\n );\n await this.repository.deleteGmailSpamReviewItemsForProvider(\n this.agentId(),\n \"google\",\n side,\n );\n await this.repository.deleteGmailSyncState(\n this.agentId(),\n \"google\",\n undefined,\n side,\n );\n }\n\n public async clearGoogleGrantData(\n grant: LifeOpsConnectorGrant,\n ): Promise<void> {\n await this.deleteCalendarReminderPlansForEvents(\n (\n await this.repository.listCalendarEvents(\n this.agentId(),\n \"google\",\n undefined,\n undefined,\n grant.side,\n )\n )\n .filter((event) => event.grantId === grant.id)\n .map((event) => event.id),\n );\n await this.repository.deleteCalendarEventsForProvider(\n this.agentId(),\n \"google\",\n grant.id,\n grant.side,\n );\n await this.repository.deleteCalendarSyncState(\n this.agentId(),\n \"google\",\n grant.id,\n grant.side,\n );\n await this.repository.deleteGmailMessagesForProvider(\n this.agentId(),\n \"google\",\n grant.side,\n grant.id,\n );\n await this.repository.deleteGmailSpamReviewItemsForProvider(\n this.agentId(),\n \"google\",\n grant.side,\n grant.id,\n );\n await this.repository.deleteGmailSyncState(\n this.agentId(),\n \"google\",\n grant.id,\n grant.side,\n );\n }\n\n public async deleteCalendarReminderPlansForEvents(\n _eventIds: string[],\n ): Promise<void> {\n // Implemented by withCalendar; this no-op fallback keeps withGoogle\n // independently usable in unit tests that compose only connector status\n // methods.\n }\n\n public async setPreferredGoogleConnectorMode(\n _mode: LifeOpsConnectorMode | null,\n _side?: LifeOpsConnectorSide,\n ): Promise<LifeOpsConnectorGrant | null> {\n return null;\n }\n\n public async requireGoogleCalendarGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n assertLocalMode(normalizeOptionalConnectorMode(requestedMode, \"mode\"));\n const status = await this.getGoogleConnectorStatus(\n requestUrl,\n \"local\",\n requestedSide,\n grantId,\n );\n const grant = status.grant;\n if (!status.connected || !grant) {\n fail(409, \"Google Calendar is not connected.\");\n }\n if (!grant.capabilities.includes(\"google.calendar.read\")) {\n fail(403, \"Google Calendar read access has not been granted.\");\n }\n return grant;\n }\n\n public async requireGoogleCalendarWriteGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n const grant = await this.requireGoogleCalendarGrant(\n requestUrl,\n requestedMode,\n requestedSide,\n grantId,\n );\n if (!grant.capabilities.includes(\"google.calendar.write\")) {\n fail(403, \"Google Calendar write access has not been granted.\");\n }\n return grant;\n }\n\n public async requireGoogleGmailGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n assertLocalMode(normalizeOptionalConnectorMode(requestedMode, \"mode\"));\n const status = await this.getGoogleConnectorStatus(\n requestUrl,\n \"local\",\n requestedSide,\n grantId,\n );\n const grant = status.grant;\n if (!status.connected || !grant) {\n fail(409, \"Google Gmail is not connected.\");\n }\n if (!grant.capabilities.includes(\"google.gmail.triage\")) {\n fail(403, \"Google Gmail triage access has not been granted.\");\n }\n return grant;\n }\n\n public async requireGoogleGmailSendGrant(\n requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsConnectorGrant> {\n const grant = await this.requireGoogleGmailGrant(\n requestUrl,\n requestedMode,\n requestedSide,\n grantId,\n );\n if (!grant.capabilities.includes(\"google.gmail.send\")) {\n fail(403, \"Google Gmail send access has not been granted.\");\n }\n return grant;\n }\n\n async getGoogleConnectorStatus(\n _requestUrl: URL,\n requestedMode?: LifeOpsConnectorMode,\n requestedSide?: LifeOpsConnectorSide,\n grantId?: string,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const mode = normalizeOptionalConnectorMode(requestedMode, \"mode\");\n assertLocalMode(mode);\n const side =\n normalizeOptionalConnectorSide(requestedSide, \"side\") ?? \"owner\";\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n return googlePluginUnavailableStatus(side);\n }\n const account = await resolveGoogleConnectorAccount({\n runtime: this.runtime,\n requestedSide: side,\n grantId,\n });\n return account\n ? this.googleAccountStatus(account)\n : disconnectedGoogleStatus(side);\n }\n\n async getGoogleConnectorAccounts(\n _requestUrl: URL,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus[]> {\n const side = normalizeOptionalConnectorSide(requestedSide, \"side\");\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n return side\n ? [googlePluginUnavailableStatus(side)]\n : [\n googlePluginUnavailableStatus(\"owner\"),\n googlePluginUnavailableStatus(\"agent\"),\n ];\n }\n const accounts = await listGoogleConnectorAccounts({\n runtime: this.runtime,\n requestedSide: side,\n });\n if (accounts.length === 0) {\n return side ? [disconnectedGoogleStatus(side)] : [];\n }\n return accounts.map((account) => this.googleAccountStatus(account));\n }\n\n async selectGoogleConnectorMode(\n requestUrl: URL,\n preferredModeInput: LifeOpsConnectorMode | undefined,\n requestedSide?: LifeOpsConnectorSide,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const preferredMode = normalizeOptionalConnectorMode(\n preferredModeInput,\n \"mode\",\n );\n assertLocalMode(preferredMode);\n return this.getGoogleConnectorStatus(requestUrl, \"local\", requestedSide);\n }\n\n async startGoogleConnector(\n request: StartLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<StartLifeOpsGoogleConnectorResponse> {\n const mode = normalizeOptionalConnectorMode(request.mode, \"mode\");\n assertLocalMode(mode);\n const requestedSide =\n normalizeOptionalConnectorSide(request.side, \"side\") ?? \"owner\";\n const requestedCapabilities = normalizeGoogleCapabilityRequest(\n request.capabilities,\n );\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n fail(\n 503,\n \"@elizaos/plugin-google is required before starting Google OAuth.\",\n );\n }\n\n const requestedAccountId = googleAccountIdFromGrantId(request.grantId);\n const redirectUri = new URL(\n \"/api/connectors/google/oauth/callback\",\n requestUrl.origin,\n ).toString();\n const flow = await manager.startOAuth(\"google\", {\n redirectUri,\n accountId: requestedAccountId ?? undefined,\n scopes: requestedScopesForCapabilities(requestedCapabilities),\n metadata: {\n lifeops: true,\n side: requestedSide,\n role: roleForSide(requestedSide),\n requestedRole: roleForSide(requestedSide),\n requestedCapabilities,\n privacy: \"owner_only\",\n redirectUrl: normalizeOptionalString(request.redirectUrl),\n },\n });\n return {\n provider: \"google\",\n side: requestedSide,\n mode: \"local\",\n requestedCapabilities: requestedCapabilities ?? [],\n redirectUri: flow.redirectUri ?? redirectUri,\n authUrl: flow.authUrl ?? \"\",\n };\n }\n\n async completeGoogleConnectorCallback(\n callbackUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n fail(\n 503,\n \"@elizaos/plugin-google is required before completing Google OAuth.\",\n );\n }\n const state = callbackUrl.searchParams.get(\"state\") ?? \"\";\n const completed = await manager.completeOAuth(\"google\", {\n state,\n code: callbackUrl.searchParams.get(\"code\") ?? undefined,\n error: callbackUrl.searchParams.get(\"error\") ?? undefined,\n errorDescription:\n callbackUrl.searchParams.get(\"error_description\") ?? undefined,\n query: Object.fromEntries(callbackUrl.searchParams.entries()),\n });\n const side = sideFromMetadata(completed.flow.metadata?.side);\n const accountId =\n completed.account?.id ?? completed.flow.accountId ?? undefined;\n return this.getGoogleConnectorStatus(\n callbackUrl,\n \"local\",\n side,\n accountId ? googleGrantIdForAccount(accountId) : undefined,\n );\n }\n\n async disconnectGoogleConnector(\n request: DisconnectLifeOpsGoogleConnectorRequest,\n requestUrl: URL,\n ): Promise<LifeOpsGoogleConnectorStatus> {\n const mode = normalizeOptionalConnectorMode(request.mode, \"mode\");\n assertLocalMode(mode);\n const side = normalizeOptionalConnectorSide(request.side, \"side\");\n const manager = this.googleConnectorManager();\n if (!manager?.getProvider?.(\"google\")) {\n fail(\n 503,\n \"@elizaos/plugin-google is required before disconnecting Google accounts.\",\n );\n }\n const requestedGrantId = normalizeOptionalString(request.grantId);\n const account = await resolveGoogleConnectorAccount({\n runtime: this.runtime,\n requestedSide: side,\n grantId: requestedGrantId,\n });\n if (!account) {\n if (requestedGrantId) {\n fail(404, \"Google connector account not found.\");\n }\n return this.getGoogleConnectorStatus(requestUrl, \"local\", side);\n }\n const grant = googleGrantFromAccount({\n account,\n agentId: this.agentId(),\n });\n await manager.deleteAccount(\"google\", account.id);\n await this.clearGoogleGrantData(grant);\n await this.recordConnectorAudit(\n \"google:connector-account\",\n \"google connector account disconnected\",\n {\n connectorAccountId: account.id,\n side: googleSideForAccount(account),\n },\n { disconnected: true },\n );\n return this.getGoogleConnectorStatus(\n requestUrl,\n \"local\",\n side ?? googleSideForAccount(account),\n );\n }\n }\n\n return LifeOpsGoogleServiceMixin as unknown as MixinClass<\n TBase,\n LifeOpsGoogleService\n >;\n}\n"],"mappings":"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","names":[]}