@elizaos/agent 2.0.0-alpha.353 → 2.0.0-alpha.358

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 (431) hide show
  1. package/apps/app-lifeops/src/inbox/message-fetcher.d.ts +6 -2
  2. package/apps/app-lifeops/src/inbox/message-fetcher.d.ts.map +1 -1
  3. package/apps/app-lifeops/src/inbox/message-fetcher.js +55 -1
  4. package/apps/app-lifeops/src/inbox/types.d.ts +20 -0
  5. package/apps/app-lifeops/src/inbox/types.d.ts.map +1 -1
  6. package/apps/app-lifeops/src/lifeops/payment-types.d.ts +20 -0
  7. package/apps/app-lifeops/src/lifeops/payment-types.d.ts.map +1 -1
  8. package/apps/app-lifeops/src/lifeops/paypal-managed-client.d.ts +110 -0
  9. package/apps/app-lifeops/src/lifeops/paypal-managed-client.d.ts.map +1 -0
  10. package/apps/app-lifeops/src/lifeops/paypal-managed-client.js +148 -0
  11. package/apps/app-lifeops/src/lifeops/plaid-managed-client.d.ts +86 -0
  12. package/apps/app-lifeops/src/lifeops/plaid-managed-client.d.ts.map +1 -0
  13. package/apps/app-lifeops/src/lifeops/plaid-managed-client.js +134 -0
  14. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts +17 -4
  15. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts.map +1 -1
  16. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.js +204 -12
  17. package/apps/app-lifeops/src/lifeops/service-mixin-payments.js +465 -0
  18. package/apps/app-lifeops/src/lifeops/service-mixin-sleep.d.ts +2 -0
  19. package/apps/app-lifeops/src/lifeops/service-mixin-sleep.d.ts.map +1 -0
  20. package/apps/app-lifeops/src/lifeops/service-mixin-sleep.js +144 -0
  21. package/apps/app-lifeops/src/lifeops/service-mixin-subscriptions.js +18 -0
  22. package/apps/app-lifeops/src/lifeops/service.d.ts +188 -77
  23. package/apps/app-lifeops/src/lifeops/service.d.ts.map +1 -1
  24. package/apps/app-lifeops/src/lifeops/service.js +2 -1
  25. package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
  26. package/apps/app-lifeops/src/routes/lifeops-routes.js +163 -9
  27. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
  28. package/apps/app-lifeops/src/routes/plugin.js +41 -8
  29. package/apps/app-lifeops/src/routes/sleep-routes.d.ts +3 -0
  30. package/apps/app-lifeops/src/routes/sleep-routes.d.ts.map +1 -0
  31. package/apps/app-lifeops/src/routes/sleep-routes.js +109 -0
  32. package/package.json +9 -8
  33. package/packages/agent/src/actions/manage-tasks.d.ts +0 -1
  34. package/packages/agent/src/actions/manage-tasks.d.ts.map +1 -1
  35. package/packages/agent/src/actions/manage-tasks.js +5 -50
  36. package/packages/agent/src/api/index.d.ts +1 -0
  37. package/packages/agent/src/api/index.d.ts.map +1 -1
  38. package/packages/agent/src/api/index.js +1 -0
  39. package/packages/agent/src/api/runtime-plugin-routes.d.ts.map +1 -1
  40. package/packages/agent/src/api/runtime-plugin-routes.js +8 -2
  41. package/packages/agent/src/api/server-helpers-config.d.ts.map +1 -1
  42. package/packages/agent/src/api/server-helpers-config.js +1 -1
  43. package/packages/agent/src/api/server.d.ts.map +1 -1
  44. package/packages/agent/src/api/server.js +24 -0
  45. package/packages/agent/src/config/plugin-auto-enable.d.ts.map +1 -1
  46. package/packages/agent/src/middleware/x402/index.d.ts +43 -0
  47. package/packages/agent/src/middleware/x402/index.d.ts.map +1 -0
  48. package/packages/agent/src/middleware/x402/index.js +40 -0
  49. package/packages/agent/src/middleware/x402/payment-config.d.ts +251 -0
  50. package/packages/agent/src/middleware/x402/payment-config.d.ts.map +1 -0
  51. package/packages/agent/src/middleware/x402/payment-config.js +568 -0
  52. package/packages/agent/src/middleware/x402/payment-wrapper.d.ts +42 -0
  53. package/packages/agent/src/middleware/x402/payment-wrapper.d.ts.map +1 -0
  54. package/packages/agent/src/middleware/x402/payment-wrapper.js +1342 -0
  55. package/packages/agent/src/middleware/x402/startup-validator.d.ts +28 -0
  56. package/packages/agent/src/middleware/x402/startup-validator.d.ts.map +1 -0
  57. package/packages/agent/src/middleware/x402/startup-validator.js +225 -0
  58. package/packages/agent/src/middleware/x402/types.d.ts +158 -0
  59. package/packages/agent/src/middleware/x402/types.d.ts.map +1 -0
  60. package/packages/agent/src/middleware/x402/types.js +5 -0
  61. package/packages/agent/src/middleware/x402/x402-facilitator-binding.d.ts +9 -0
  62. package/packages/agent/src/middleware/x402/x402-facilitator-binding.d.ts.map +1 -0
  63. package/packages/agent/src/middleware/x402/x402-facilitator-binding.js +74 -0
  64. package/packages/agent/src/middleware/x402/x402-replay-durable.d.ts +30 -0
  65. package/packages/agent/src/middleware/x402/x402-replay-durable.d.ts.map +1 -0
  66. package/packages/agent/src/middleware/x402/x402-replay-durable.js +202 -0
  67. package/packages/agent/src/middleware/x402/x402-replay-guard.d.ts +28 -0
  68. package/packages/agent/src/middleware/x402/x402-replay-guard.d.ts.map +1 -0
  69. package/packages/agent/src/middleware/x402/x402-replay-guard.js +134 -0
  70. package/packages/agent/src/middleware/x402/x402-replay-keys.d.ts +21 -0
  71. package/packages/agent/src/middleware/x402/x402-replay-keys.d.ts.map +1 -0
  72. package/packages/agent/src/middleware/x402/x402-replay-keys.js +141 -0
  73. package/packages/agent/src/middleware/x402/x402-resolve.d.ts +6 -0
  74. package/packages/agent/src/middleware/x402/x402-resolve.d.ts.map +1 -0
  75. package/packages/agent/src/middleware/x402/x402-resolve.js +31 -0
  76. package/packages/agent/src/middleware/x402/x402-standard-payment.d.ts +130 -0
  77. package/packages/agent/src/middleware/x402/x402-standard-payment.d.ts.map +1 -0
  78. package/packages/agent/src/middleware/x402/x402-standard-payment.js +387 -0
  79. package/packages/agent/src/middleware/x402/x402-types.d.ts +130 -0
  80. package/packages/agent/src/middleware/x402/x402-types.d.ts.map +1 -0
  81. package/packages/agent/src/middleware/x402/x402-types.js +189 -0
  82. package/packages/agent/src/runtime/eliza.d.ts.map +1 -1
  83. package/packages/agent/src/runtime/eliza.js +16 -5
  84. package/packages/agent/src/runtime/task-heartbeat.d.ts +22 -0
  85. package/packages/agent/src/runtime/task-heartbeat.d.ts.map +1 -0
  86. package/packages/agent/src/runtime/task-heartbeat.js +84 -0
  87. package/packages/app-core/src/navigation/index.js +2 -2
  88. package/packages/shared/src/contracts/lifeops.d.ts +108 -0
  89. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  90. package/packages/shared/src/i18n/generated/validation-keyword-data.d.ts +24 -0
  91. package/packages/shared/src/i18n/generated/validation-keyword-data.d.ts.map +1 -1
  92. package/packages/shared/src/i18n/generated/validation-keyword-data.js +24 -0
  93. package/packages/typescript/src/features/advanced-capabilities/providers/facts.d.ts +3 -5
  94. package/packages/typescript/src/features/advanced-capabilities/providers/facts.d.ts.map +1 -1
  95. package/packages/typescript/src/features/advanced-capabilities/providers/facts.js +178 -70
  96. package/packages/typescript/src/i18n/generated/validation-keyword-data.d.ts +24 -0
  97. package/packages/typescript/src/i18n/generated/validation-keyword-data.d.ts.map +1 -1
  98. package/packages/typescript/src/i18n/generated/validation-keyword-data.js +24 -0
  99. package/packages/typescript/src/prompts.d.ts +2 -0
  100. package/packages/typescript/src/prompts.d.ts.map +1 -1
  101. package/packages/typescript/src/prompts.js +113 -0
  102. package/packages/typescript/src/types/memory.d.ts +78 -0
  103. package/packages/typescript/src/types/memory.d.ts.map +1 -1
  104. package/packages/typescript/src/types/payment.d.ts +23 -1
  105. package/packages/typescript/src/types/payment.d.ts.map +1 -1
  106. package/packages/typescript/src/types/plugin.d.ts +38 -0
  107. package/packages/typescript/src/types/plugin.d.ts.map +1 -1
  108. package/apps/app-companion/src/actions/emote.d.ts +0 -10
  109. package/apps/app-companion/src/actions/emote.d.ts.map +0 -1
  110. package/apps/app-companion/src/actions/emote.js +0 -80
  111. package/apps/app-companion/src/plugin.d.ts +0 -9
  112. package/apps/app-companion/src/plugin.d.ts.map +0 -1
  113. package/apps/app-companion/src/plugin.js +0 -15
  114. package/apps/app-lifeops/src/action.d.ts +0 -3
  115. package/apps/app-lifeops/src/action.d.ts.map +0 -1
  116. package/apps/app-lifeops/src/action.js +0 -351
  117. package/apps/app-lifeops/src/actions/activity-report.d.ts +0 -13
  118. package/apps/app-lifeops/src/actions/activity-report.d.ts.map +0 -1
  119. package/apps/app-lifeops/src/actions/activity-report.js +0 -313
  120. package/apps/app-lifeops/src/actions/app-blocker.d.ts +0 -7
  121. package/apps/app-lifeops/src/actions/app-blocker.d.ts.map +0 -1
  122. package/apps/app-lifeops/src/actions/app-blocker.js +0 -454
  123. package/apps/app-lifeops/src/actions/approval.d.ts +0 -21
  124. package/apps/app-lifeops/src/actions/approval.d.ts.map +0 -1
  125. package/apps/app-lifeops/src/actions/approval.js +0 -342
  126. package/apps/app-lifeops/src/actions/autofill.d.ts +0 -35
  127. package/apps/app-lifeops/src/actions/autofill.d.ts.map +0 -1
  128. package/apps/app-lifeops/src/actions/autofill.js +0 -455
  129. package/apps/app-lifeops/src/actions/book-travel-executor.d.ts +0 -9
  130. package/apps/app-lifeops/src/actions/book-travel-executor.d.ts.map +0 -1
  131. package/apps/app-lifeops/src/actions/book-travel-executor.js +0 -65
  132. package/apps/app-lifeops/src/actions/book-travel.d.ts +0 -5
  133. package/apps/app-lifeops/src/actions/book-travel.d.ts.map +0 -1
  134. package/apps/app-lifeops/src/actions/book-travel.js +0 -491
  135. package/apps/app-lifeops/src/actions/calendar.d.ts +0 -19
  136. package/apps/app-lifeops/src/actions/calendar.d.ts.map +0 -1
  137. package/apps/app-lifeops/src/actions/calendar.js +0 -3221
  138. package/apps/app-lifeops/src/actions/calendly.d.ts +0 -3
  139. package/apps/app-lifeops/src/actions/calendly.d.ts.map +0 -1
  140. package/apps/app-lifeops/src/actions/calendly.js +0 -361
  141. package/apps/app-lifeops/src/actions/chat-thread-control.d.ts +0 -3
  142. package/apps/app-lifeops/src/actions/chat-thread-control.d.ts.map +0 -1
  143. package/apps/app-lifeops/src/actions/chat-thread-control.js +0 -260
  144. package/apps/app-lifeops/src/actions/checkin.d.ts +0 -8
  145. package/apps/app-lifeops/src/actions/checkin.d.ts.map +0 -1
  146. package/apps/app-lifeops/src/actions/checkin.js +0 -230
  147. package/apps/app-lifeops/src/actions/computer-use.d.ts +0 -14
  148. package/apps/app-lifeops/src/actions/computer-use.d.ts.map +0 -1
  149. package/apps/app-lifeops/src/actions/computer-use.js +0 -408
  150. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts +0 -34
  151. package/apps/app-lifeops/src/actions/cross-channel-send.d.ts.map +0 -1
  152. package/apps/app-lifeops/src/actions/cross-channel-send.js +0 -964
  153. package/apps/app-lifeops/src/actions/device-bus.d.ts +0 -19
  154. package/apps/app-lifeops/src/actions/device-bus.d.ts.map +0 -1
  155. package/apps/app-lifeops/src/actions/device-bus.js +0 -376
  156. package/apps/app-lifeops/src/actions/dossier.d.ts +0 -5
  157. package/apps/app-lifeops/src/actions/dossier.d.ts.map +0 -1
  158. package/apps/app-lifeops/src/actions/dossier.js +0 -217
  159. package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts +0 -5
  160. package/apps/app-lifeops/src/actions/email-unsubscribe.d.ts.map +0 -1
  161. package/apps/app-lifeops/src/actions/email-unsubscribe.js +0 -172
  162. package/apps/app-lifeops/src/actions/gmail.d.ts +0 -41
  163. package/apps/app-lifeops/src/actions/gmail.d.ts.map +0 -1
  164. package/apps/app-lifeops/src/actions/gmail.js +0 -2277
  165. package/apps/app-lifeops/src/actions/health.d.ts +0 -9
  166. package/apps/app-lifeops/src/actions/health.d.ts.map +0 -1
  167. package/apps/app-lifeops/src/actions/health.js +0 -398
  168. package/apps/app-lifeops/src/actions/inbox.d.ts +0 -5
  169. package/apps/app-lifeops/src/actions/inbox.d.ts.map +0 -1
  170. package/apps/app-lifeops/src/actions/inbox.js +0 -1249
  171. package/apps/app-lifeops/src/actions/intent-sync.d.ts +0 -5
  172. package/apps/app-lifeops/src/actions/intent-sync.d.ts.map +0 -1
  173. package/apps/app-lifeops/src/actions/intent-sync.js +0 -320
  174. package/apps/app-lifeops/src/actions/life-goal-extractor.d.ts +0 -69
  175. package/apps/app-lifeops/src/actions/life-goal-extractor.d.ts.map +0 -1
  176. package/apps/app-lifeops/src/actions/life-goal-extractor.js +0 -420
  177. package/apps/app-lifeops/src/actions/life-param-extractor.d.ts +0 -78
  178. package/apps/app-lifeops/src/actions/life-param-extractor.d.ts.map +0 -1
  179. package/apps/app-lifeops/src/actions/life-param-extractor.js +0 -431
  180. package/apps/app-lifeops/src/actions/life-recent-context.d.ts +0 -9
  181. package/apps/app-lifeops/src/actions/life-recent-context.d.ts.map +0 -1
  182. package/apps/app-lifeops/src/actions/life-recent-context.js +0 -78
  183. package/apps/app-lifeops/src/actions/life-update-extractor.d.ts +0 -27
  184. package/apps/app-lifeops/src/actions/life-update-extractor.d.ts.map +0 -1
  185. package/apps/app-lifeops/src/actions/life-update-extractor.js +0 -195
  186. package/apps/app-lifeops/src/actions/life.d.ts +0 -5
  187. package/apps/app-lifeops/src/actions/life.d.ts.map +0 -1
  188. package/apps/app-lifeops/src/actions/life.extractor.d.ts +0 -18
  189. package/apps/app-lifeops/src/actions/life.extractor.d.ts.map +0 -1
  190. package/apps/app-lifeops/src/actions/life.extractor.js +0 -363
  191. package/apps/app-lifeops/src/actions/life.js +0 -3402
  192. package/apps/app-lifeops/src/actions/lifeops-extraction-config.d.ts +0 -16
  193. package/apps/app-lifeops/src/actions/lifeops-extraction-config.d.ts.map +0 -1
  194. package/apps/app-lifeops/src/actions/lifeops-extraction-config.js +0 -25
  195. package/apps/app-lifeops/src/actions/lifeops-google-helpers.d.ts +0 -64
  196. package/apps/app-lifeops/src/actions/lifeops-google-helpers.d.ts.map +0 -1
  197. package/apps/app-lifeops/src/actions/lifeops-google-helpers.js +0 -671
  198. package/apps/app-lifeops/src/actions/list-remote-sessions.d.ts +0 -6
  199. package/apps/app-lifeops/src/actions/list-remote-sessions.d.ts.map +0 -1
  200. package/apps/app-lifeops/src/actions/list-remote-sessions.js +0 -45
  201. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts +0 -20
  202. package/apps/app-lifeops/src/actions/non-actionable-request.d.ts.map +0 -1
  203. package/apps/app-lifeops/src/actions/non-actionable-request.js +0 -58
  204. package/apps/app-lifeops/src/actions/owner-app-block.d.ts +0 -12
  205. package/apps/app-lifeops/src/actions/owner-app-block.d.ts.map +0 -1
  206. package/apps/app-lifeops/src/actions/owner-app-block.js +0 -136
  207. package/apps/app-lifeops/src/actions/owner-calendar.d.ts +0 -57
  208. package/apps/app-lifeops/src/actions/owner-calendar.d.ts.map +0 -1
  209. package/apps/app-lifeops/src/actions/owner-calendar.js +0 -924
  210. package/apps/app-lifeops/src/actions/owner-inbox.d.ts +0 -5
  211. package/apps/app-lifeops/src/actions/owner-inbox.d.ts.map +0 -1
  212. package/apps/app-lifeops/src/actions/owner-inbox.js +0 -652
  213. package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts +0 -12
  214. package/apps/app-lifeops/src/actions/owner-remote-desktop.d.ts.map +0 -1
  215. package/apps/app-lifeops/src/actions/owner-remote-desktop.js +0 -163
  216. package/apps/app-lifeops/src/actions/owner-schedule.d.ts +0 -3
  217. package/apps/app-lifeops/src/actions/owner-schedule.d.ts.map +0 -1
  218. package/apps/app-lifeops/src/actions/owner-schedule.js +0 -174
  219. package/apps/app-lifeops/src/actions/owner-screen-time.d.ts +0 -10
  220. package/apps/app-lifeops/src/actions/owner-screen-time.d.ts.map +0 -1
  221. package/apps/app-lifeops/src/actions/owner-screen-time.js +0 -209
  222. package/apps/app-lifeops/src/actions/owner-website-block.d.ts +0 -12
  223. package/apps/app-lifeops/src/actions/owner-website-block.d.ts.map +0 -1
  224. package/apps/app-lifeops/src/actions/owner-website-block.js +0 -397
  225. package/apps/app-lifeops/src/actions/password-manager.d.ts +0 -5
  226. package/apps/app-lifeops/src/actions/password-manager.d.ts.map +0 -1
  227. package/apps/app-lifeops/src/actions/password-manager.js +0 -257
  228. package/apps/app-lifeops/src/actions/payments.d.ts +0 -5
  229. package/apps/app-lifeops/src/actions/payments.d.ts.map +0 -1
  230. package/apps/app-lifeops/src/actions/payments.js +0 -236
  231. package/apps/app-lifeops/src/actions/relationships.d.ts +0 -12
  232. package/apps/app-lifeops/src/actions/relationships.d.ts.map +0 -1
  233. package/apps/app-lifeops/src/actions/relationships.js +0 -869
  234. package/apps/app-lifeops/src/actions/remote-desktop.d.ts +0 -5
  235. package/apps/app-lifeops/src/actions/remote-desktop.d.ts.map +0 -1
  236. package/apps/app-lifeops/src/actions/remote-desktop.js +0 -304
  237. package/apps/app-lifeops/src/actions/revoke-remote-session.d.ts +0 -6
  238. package/apps/app-lifeops/src/actions/revoke-remote-session.d.ts.map +0 -1
  239. package/apps/app-lifeops/src/actions/revoke-remote-session.js +0 -73
  240. package/apps/app-lifeops/src/actions/schedule-x-dm-reply.d.ts +0 -3
  241. package/apps/app-lifeops/src/actions/schedule-x-dm-reply.d.ts.map +0 -1
  242. package/apps/app-lifeops/src/actions/schedule-x-dm-reply.js +0 -134
  243. package/apps/app-lifeops/src/actions/scheduled-trigger-task.d.ts +0 -19
  244. package/apps/app-lifeops/src/actions/scheduled-trigger-task.d.ts.map +0 -1
  245. package/apps/app-lifeops/src/actions/scheduled-trigger-task.js +0 -83
  246. package/apps/app-lifeops/src/actions/scheduling.d.ts +0 -70
  247. package/apps/app-lifeops/src/actions/scheduling.d.ts.map +0 -1
  248. package/apps/app-lifeops/src/actions/scheduling.js +0 -1076
  249. package/apps/app-lifeops/src/actions/screen-time.d.ts +0 -8
  250. package/apps/app-lifeops/src/actions/screen-time.d.ts.map +0 -1
  251. package/apps/app-lifeops/src/actions/screen-time.js +0 -256
  252. package/apps/app-lifeops/src/actions/search-across-channels.d.ts +0 -13
  253. package/apps/app-lifeops/src/actions/search-across-channels.d.ts.map +0 -1
  254. package/apps/app-lifeops/src/actions/search-across-channels.js +0 -338
  255. package/apps/app-lifeops/src/actions/start-remote-session.d.ts +0 -14
  256. package/apps/app-lifeops/src/actions/start-remote-session.d.ts.map +0 -1
  257. package/apps/app-lifeops/src/actions/start-remote-session.js +0 -139
  258. package/apps/app-lifeops/src/actions/subscriptions.d.ts +0 -5
  259. package/apps/app-lifeops/src/actions/subscriptions.d.ts.map +0 -1
  260. package/apps/app-lifeops/src/actions/subscriptions.js +0 -404
  261. package/apps/app-lifeops/src/actions/timezone-normalization.d.ts +0 -4
  262. package/apps/app-lifeops/src/actions/timezone-normalization.d.ts.map +0 -1
  263. package/apps/app-lifeops/src/actions/timezone-normalization.js +0 -159
  264. package/apps/app-lifeops/src/actions/twilio-call.d.ts +0 -20
  265. package/apps/app-lifeops/src/actions/twilio-call.d.ts.map +0 -1
  266. package/apps/app-lifeops/src/actions/twilio-call.js +0 -805
  267. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts +0 -5
  268. package/apps/app-lifeops/src/actions/update-owner-profile.d.ts.map +0 -1
  269. package/apps/app-lifeops/src/actions/update-owner-profile.js +0 -181
  270. package/apps/app-lifeops/src/actions/x-read.d.ts +0 -5
  271. package/apps/app-lifeops/src/actions/x-read.d.ts.map +0 -1
  272. package/apps/app-lifeops/src/actions/x-read.js +0 -561
  273. package/apps/app-lifeops/src/activity-profile/activity-tracker-service.d.ts +0 -36
  274. package/apps/app-lifeops/src/activity-profile/activity-tracker-service.d.ts.map +0 -1
  275. package/apps/app-lifeops/src/activity-profile/activity-tracker-service.js +0 -160
  276. package/apps/app-lifeops/src/activity-profile/analyzer.d.ts +0 -23
  277. package/apps/app-lifeops/src/activity-profile/analyzer.d.ts.map +0 -1
  278. package/apps/app-lifeops/src/activity-profile/analyzer.js +0 -555
  279. package/apps/app-lifeops/src/activity-profile/presence-signal-bridge-service.d.ts +0 -14
  280. package/apps/app-lifeops/src/activity-profile/presence-signal-bridge-service.d.ts.map +0 -1
  281. package/apps/app-lifeops/src/activity-profile/presence-signal-bridge-service.js +0 -133
  282. package/apps/app-lifeops/src/activity-profile/proactive-planner.d.ts +0 -71
  283. package/apps/app-lifeops/src/activity-profile/proactive-planner.d.ts.map +0 -1
  284. package/apps/app-lifeops/src/activity-profile/proactive-planner.js +0 -567
  285. package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts +0 -32
  286. package/apps/app-lifeops/src/activity-profile/proactive-worker.d.ts.map +0 -1
  287. package/apps/app-lifeops/src/activity-profile/proactive-worker.js +0 -677
  288. package/apps/app-lifeops/src/activity-profile/service.d.ts +0 -11
  289. package/apps/app-lifeops/src/activity-profile/service.d.ts.map +0 -1
  290. package/apps/app-lifeops/src/activity-profile/service.js +0 -246
  291. package/apps/app-lifeops/src/app-blocker/access.d.ts +0 -8
  292. package/apps/app-lifeops/src/app-blocker/access.d.ts.map +0 -1
  293. package/apps/app-lifeops/src/app-blocker/access.js +0 -28
  294. package/apps/app-lifeops/src/app-blocker/engine.d.ts +0 -10
  295. package/apps/app-lifeops/src/app-blocker/engine.d.ts.map +0 -1
  296. package/apps/app-lifeops/src/app-blocker/engine.js +0 -43
  297. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts +0 -3
  298. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.d.ts.map +0 -1
  299. package/apps/app-lifeops/src/followup/actions/listOverdueFollowups.js +0 -48
  300. package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts +0 -3
  301. package/apps/app-lifeops/src/followup/actions/markFollowupDone.d.ts.map +0 -1
  302. package/apps/app-lifeops/src/followup/actions/markFollowupDone.js +0 -173
  303. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts +0 -3
  304. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.d.ts.map +0 -1
  305. package/apps/app-lifeops/src/followup/actions/setFollowupThreshold.js +0 -172
  306. package/apps/app-lifeops/src/followup/followup-tracker.d.ts +0 -82
  307. package/apps/app-lifeops/src/followup/followup-tracker.d.ts.map +0 -1
  308. package/apps/app-lifeops/src/followup/followup-tracker.js +0 -279
  309. package/apps/app-lifeops/src/followup/index.d.ts +0 -5
  310. package/apps/app-lifeops/src/followup/index.d.ts.map +0 -1
  311. package/apps/app-lifeops/src/followup/index.js +0 -4
  312. package/apps/app-lifeops/src/inbox/config.d.ts +0 -7
  313. package/apps/app-lifeops/src/inbox/config.d.ts.map +0 -1
  314. package/apps/app-lifeops/src/inbox/config.js +0 -67
  315. package/apps/app-lifeops/src/inbox/reflection.d.ts +0 -40
  316. package/apps/app-lifeops/src/inbox/reflection.d.ts.map +0 -1
  317. package/apps/app-lifeops/src/inbox/reflection.js +0 -115
  318. package/apps/app-lifeops/src/inbox/repository.d.ts +0 -52
  319. package/apps/app-lifeops/src/inbox/repository.d.ts.map +0 -1
  320. package/apps/app-lifeops/src/inbox/repository.js +0 -262
  321. package/apps/app-lifeops/src/inbox/triage-classifier.d.ts +0 -15
  322. package/apps/app-lifeops/src/inbox/triage-classifier.d.ts.map +0 -1
  323. package/apps/app-lifeops/src/inbox/triage-classifier.js +0 -179
  324. package/apps/app-lifeops/src/lifeops/approval-queue.d.ts +0 -24
  325. package/apps/app-lifeops/src/lifeops/approval-queue.d.ts.map +0 -1
  326. package/apps/app-lifeops/src/lifeops/approval-queue.js +0 -500
  327. package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts +0 -166
  328. package/apps/app-lifeops/src/lifeops/approval-queue.types.d.ts.map +0 -1
  329. package/apps/app-lifeops/src/lifeops/approval-queue.types.js +0 -22
  330. package/apps/app-lifeops/src/lifeops/autofill-whitelist.d.ts +0 -15
  331. package/apps/app-lifeops/src/lifeops/autofill-whitelist.d.ts.map +0 -1
  332. package/apps/app-lifeops/src/lifeops/autofill-whitelist.js +0 -116
  333. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts +0 -60
  334. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.d.ts.map +0 -1
  335. package/apps/app-lifeops/src/lifeops/background-planner-dispatch.js +0 -134
  336. package/apps/app-lifeops/src/lifeops/background-planner.d.ts +0 -141
  337. package/apps/app-lifeops/src/lifeops/background-planner.d.ts.map +0 -1
  338. package/apps/app-lifeops/src/lifeops/background-planner.js +0 -377
  339. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts +0 -61
  340. package/apps/app-lifeops/src/lifeops/calendly-client.d.ts.map +0 -1
  341. package/apps/app-lifeops/src/lifeops/calendly-client.js +0 -234
  342. package/apps/app-lifeops/src/lifeops/checkin/schedule-resolver.d.ts +0 -14
  343. package/apps/app-lifeops/src/lifeops/checkin/schedule-resolver.d.ts.map +0 -1
  344. package/apps/app-lifeops/src/lifeops/checkin/schedule-resolver.js +0 -27
  345. package/apps/app-lifeops/src/lifeops/cross-channel-search.d.ts +0 -88
  346. package/apps/app-lifeops/src/lifeops/cross-channel-search.d.ts.map +0 -1
  347. package/apps/app-lifeops/src/lifeops/cross-channel-search.js +0 -443
  348. package/apps/app-lifeops/src/lifeops/intent-sync.d.ts +0 -59
  349. package/apps/app-lifeops/src/lifeops/intent-sync.d.ts.map +0 -1
  350. package/apps/app-lifeops/src/lifeops/intent-sync.js +0 -305
  351. package/apps/app-lifeops/src/lifeops/notifications-push.d.ts +0 -37
  352. package/apps/app-lifeops/src/lifeops/notifications-push.d.ts.map +0 -1
  353. package/apps/app-lifeops/src/lifeops/notifications-push.js +0 -92
  354. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts +0 -50
  355. package/apps/app-lifeops/src/lifeops/password-manager-bridge.d.ts.map +0 -1
  356. package/apps/app-lifeops/src/lifeops/password-manager-bridge.js +0 -448
  357. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts +0 -38
  358. package/apps/app-lifeops/src/lifeops/remote-desktop.d.ts.map +0 -1
  359. package/apps/app-lifeops/src/lifeops/remote-desktop.js +0 -372
  360. package/apps/app-lifeops/src/lifeops/runtime.d.ts +0 -11
  361. package/apps/app-lifeops/src/lifeops/runtime.d.ts.map +0 -1
  362. package/apps/app-lifeops/src/lifeops/runtime.js +0 -57
  363. package/apps/app-lifeops/src/lifeops/screen-context.d.ts +0 -52
  364. package/apps/app-lifeops/src/lifeops/screen-context.d.ts.map +0 -1
  365. package/apps/app-lifeops/src/lifeops/screen-context.js +0 -349
  366. package/apps/app-lifeops/src/plugin.d.ts +0 -30
  367. package/apps/app-lifeops/src/plugin.d.ts.map +0 -1
  368. package/apps/app-lifeops/src/plugin.js +0 -340
  369. package/apps/app-lifeops/src/provider.d.ts +0 -4
  370. package/apps/app-lifeops/src/provider.d.ts.map +0 -1
  371. package/apps/app-lifeops/src/provider.js +0 -77
  372. package/apps/app-lifeops/src/providers/activity-profile.d.ts +0 -3
  373. package/apps/app-lifeops/src/providers/activity-profile.d.ts.map +0 -1
  374. package/apps/app-lifeops/src/providers/activity-profile.js +0 -140
  375. package/apps/app-lifeops/src/providers/app-blocker.d.ts +0 -3
  376. package/apps/app-lifeops/src/providers/app-blocker.d.ts.map +0 -1
  377. package/apps/app-lifeops/src/providers/app-blocker.js +0 -86
  378. package/apps/app-lifeops/src/providers/cross-channel-context.d.ts +0 -29
  379. package/apps/app-lifeops/src/providers/cross-channel-context.d.ts.map +0 -1
  380. package/apps/app-lifeops/src/providers/cross-channel-context.js +0 -182
  381. package/apps/app-lifeops/src/providers/inbox-triage.d.ts +0 -3
  382. package/apps/app-lifeops/src/providers/inbox-triage.d.ts.map +0 -1
  383. package/apps/app-lifeops/src/providers/inbox-triage.js +0 -90
  384. package/apps/app-lifeops/src/providers/lifeops.d.ts +0 -3
  385. package/apps/app-lifeops/src/providers/lifeops.d.ts.map +0 -1
  386. package/apps/app-lifeops/src/providers/lifeops.js +0 -197
  387. package/apps/app-lifeops/src/remote/pairing-code.d.ts +0 -39
  388. package/apps/app-lifeops/src/remote/pairing-code.d.ts.map +0 -1
  389. package/apps/app-lifeops/src/remote/pairing-code.js +0 -76
  390. package/apps/app-lifeops/src/remote/remote-session-service.d.ts +0 -107
  391. package/apps/app-lifeops/src/remote/remote-session-service.d.ts.map +0 -1
  392. package/apps/app-lifeops/src/remote/remote-session-service.js +0 -253
  393. package/apps/app-lifeops/src/service.d.ts +0 -33
  394. package/apps/app-lifeops/src/service.d.ts.map +0 -1
  395. package/apps/app-lifeops/src/service.js +0 -67
  396. package/apps/app-lifeops/src/travel-time/calendar-create.d.ts +0 -17
  397. package/apps/app-lifeops/src/travel-time/calendar-create.d.ts.map +0 -1
  398. package/apps/app-lifeops/src/travel-time/calendar-create.js +0 -21
  399. package/apps/app-lifeops/src/travel-time/service.d.ts +0 -60
  400. package/apps/app-lifeops/src/travel-time/service.d.ts.map +0 -1
  401. package/apps/app-lifeops/src/travel-time/service.js +0 -142
  402. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts +0 -3
  403. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.d.ts.map +0 -1
  404. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/blockUntilTaskComplete.js +0 -246
  405. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.d.ts +0 -3
  406. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.d.ts.map +0 -1
  407. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/listActiveBlocks.js +0 -83
  408. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/releaseBlock.d.ts +0 -3
  409. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/releaseBlock.d.ts.map +0 -1
  410. package/apps/app-lifeops/src/website-blocker/chat-integration/actions/releaseBlock.js +0 -98
  411. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-reconciler.d.ts +0 -7
  412. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-reconciler.d.ts.map +0 -1
  413. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-reconciler.js +0 -111
  414. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-schema.d.ts +0 -39
  415. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-schema.d.ts.map +0 -1
  416. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-schema.js +0 -123
  417. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.d.ts +0 -21
  418. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.d.ts.map +0 -1
  419. package/apps/app-lifeops/src/website-blocker/chat-integration/block-rule-service.js +0 -258
  420. package/apps/app-lifeops/src/website-blocker/chat-integration/index.d.ts +0 -8
  421. package/apps/app-lifeops/src/website-blocker/chat-integration/index.d.ts.map +0 -1
  422. package/apps/app-lifeops/src/website-blocker/chat-integration/index.js +0 -6
  423. package/packages/agent/src/onboarding-presets.d.ts +0 -2
  424. package/packages/agent/src/onboarding-presets.d.ts.map +0 -1
  425. package/packages/agent/src/onboarding-presets.js +0 -1
  426. package/packages/app-core/src/bridge/native-plugins.d.ts +0 -504
  427. package/packages/app-core/src/bridge/native-plugins.d.ts.map +0 -1
  428. package/packages/app-core/src/bridge/native-plugins.js +0 -67
  429. package/packages/native-plugins/activity-tracker/src/index.d.ts +0 -69
  430. package/packages/native-plugins/activity-tracker/src/index.d.ts.map +0 -1
  431. package/packages/native-plugins/activity-tracker/src/index.js +0 -147
@@ -1,9 +1,9 @@
1
1
  import type { IAgentRuntime } from "@elizaos/core";
2
- import type { LifeOpsGmailTriageFeed, LifeOpsGoogleConnectorStatus, LifeOpsXConnectorStatus, LifeOpsXDm } from "@elizaos/shared/contracts/lifeops";
2
+ import type { GetLifeOpsGmailTriageRequest, LifeOpsGmailTriageFeed, LifeOpsGoogleConnectorStatus, LifeOpsXConnectorStatus, LifeOpsXDm } from "@elizaos/shared/contracts/lifeops";
3
3
  import type { InboundMessage } from "./types.js";
4
4
  export interface GmailInboxSource {
5
5
  getGoogleConnectorStatus(requestUrl: URL): Promise<LifeOpsGoogleConnectorStatus>;
6
- getGmailTriage(requestUrl: URL): Promise<LifeOpsGmailTriageFeed>;
6
+ getGmailTriage(requestUrl: URL, request?: GetLifeOpsGmailTriageRequest): Promise<LifeOpsGmailTriageFeed>;
7
7
  }
8
8
  export interface XDmInboxSource {
9
9
  getXConnectorStatus(): Promise<LifeOpsXConnectorStatus>;
@@ -27,6 +27,8 @@ export declare function fetchChatMessages(runtime: IAgentRuntime, opts: {
27
27
  export declare function fetchGmailMessages(source: GmailInboxSource, opts: {
28
28
  sinceIso?: string;
29
29
  limit?: number;
30
+ /** Filter to a single Gmail account by Google grant id. */
31
+ grantId?: string;
30
32
  }): Promise<InboundMessage[]>;
31
33
  export declare function fetchXDmMessages(source: XDmInboxSource, opts: {
32
34
  sinceIso?: string;
@@ -39,5 +41,7 @@ export declare function fetchAllMessages(runtime: IAgentRuntime, opts: {
39
41
  includeGmail?: boolean;
40
42
  gmailSource?: GmailInboxSource;
41
43
  xDmSource?: XDmInboxSource;
44
+ /** Filter Gmail to a single account by Google grant id. */
45
+ gmailGrantId?: string;
42
46
  }): Promise<InboundMessage[]>;
43
47
  //# sourceMappingURL=message-fetcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"message-fetcher.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/inbox/message-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAA6B,MAAM,eAAe,CAAC;AAK9E,OAAO,KAAK,EACV,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,UAAU,EACX,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAkBjD,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,CACtB,UAAU,EAAE,GAAG,GACd,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,cAAc,CAAC,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CAClE;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAC3D;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IACJ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CAmH3B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CA0C3B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CA4C3B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IACJ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,SAAS,CAAC,EAAE,cAAc,CAAC;CAC5B,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CAqC3B"}
1
+ {"version":3,"file":"message-fetcher.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/inbox/message-fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAA6B,MAAM,eAAe,CAAC;AAK9E,OAAO,KAAK,EACV,4BAA4B,EAC5B,sBAAsB,EACtB,4BAA4B,EAC5B,uBAAuB,EACvB,UAAU,EACX,MAAM,mCAAmC,CAAC;AAE3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAyBjD,MAAM,WAAW,gBAAgB;IAC/B,wBAAwB,CACtB,UAAU,EAAE,GAAG,GACd,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACzC,cAAc,CACZ,UAAU,EAAE,GAAG,EACf,OAAO,CAAC,EAAE,4BAA4B,GACrC,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,mBAAmB,IAAI,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACxD,QAAQ,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACjE,OAAO,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;CAC3D;AAED,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IACJ,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CAkI3B;AAED,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CAqD3B;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,cAAc,EACtB,IAAI,EAAE;IACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CAgD3B;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE;IACJ,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GACA,OAAO,CAAC,cAAc,EAAE,CAAC,CAsC3B"}
@@ -1,5 +1,11 @@
1
1
  import { expandConnectorSourceFilter, normalizeConnectorSource, } from "@elizaos/shared/connectors";
2
2
  import { buildDeepLink, resolveChannelName } from "./channel-deep-links.js";
3
+ /**
4
+ * Discord public channels are typically larger than DMs / threads. We use this
5
+ * threshold both to treat sufficiently-large groups as broadcast channels and
6
+ * to drive the v1 small-group filter in the Messages section.
7
+ */
8
+ const PUBLIC_CHANNEL_PARTICIPANT_THRESHOLD = 15;
3
9
  const DEFAULT_SOURCES = [
4
10
  "discord",
5
11
  "telegram",
@@ -71,6 +77,13 @@ export async function fetchChatMessages(runtime, opts) {
71
77
  arr.push(m);
72
78
  messagesByRoom.set(m.roomId, arr);
73
79
  }
80
+ // Fetch participant counts per room exactly once. Used to classify groups
81
+ // vs public channels and to filter out >15-person rooms in the inbox.
82
+ const participantCountByRoom = new Map();
83
+ await Promise.all(sourceRooms.map(async (room) => {
84
+ const ids = await runtime.getParticipantsForRoom(room.id);
85
+ participantCountByRoom.set(room.id, ids.length);
86
+ }));
74
87
  const results = [];
75
88
  for (const memory of filtered.slice(0, limit)) {
76
89
  const room = roomMap.get(memory.roomId);
@@ -81,6 +94,8 @@ export async function fetchChatMessages(runtime, opts) {
81
94
  const senderName = extractSenderName(memory) ?? "Unknown";
82
95
  const channelName = resolveChannelName(source, room?.name, senderName);
83
96
  const channelType = detectChannelType(room);
97
+ const participantCount = participantCountByRoom.get(memory.roomId);
98
+ const chatType = classifyChatType(room, channelType, participantCount);
84
99
  const world = room?.worldId ? worldMap.get(room.worldId) : undefined;
85
100
  const deepLink = await buildDeepLink(runtime, source, {
86
101
  roomId: memory.roomId,
@@ -110,6 +125,9 @@ export async function fetchChatMessages(runtime, opts) {
110
125
  timestamp: memory.createdAt ?? Date.now(),
111
126
  deepLink: deepLink ?? undefined,
112
127
  threadMessages: threadMessages.length > 0 ? threadMessages : undefined,
128
+ threadId: memory.roomId,
129
+ chatType,
130
+ participantCount,
113
131
  });
114
132
  }
115
133
  return results;
@@ -121,7 +139,11 @@ export async function fetchGmailMessages(source, opts) {
121
139
  const capabilities = status.grantedCapabilities ?? [];
122
140
  if (!capabilities.includes("google.gmail.triage"))
123
141
  return [];
124
- const triageFeed = await source.getGmailTriage(INTERNAL_URL);
142
+ // When no grantId is supplied, the service-side getGmailTriage already
143
+ // aggregates across every Google grant and tags each summary with grantId
144
+ // and accountEmail. We forward those onto the InboundMessage so the inbox
145
+ // mixin can group by account and render account chips.
146
+ const triageFeed = await source.getGmailTriage(INTERNAL_URL, opts.grantId ? { grantId: opts.grantId } : undefined);
125
147
  if (triageFeed.messages.length === 0)
126
148
  return [];
127
149
  const limit = opts.limit ?? 50;
@@ -150,6 +172,10 @@ export async function fetchGmailMessages(source, opts) {
150
172
  gmailMessageId: msg.externalId || msg.id,
151
173
  gmailIsImportant: msg.isImportant ?? false,
152
174
  gmailLikelyReplyNeeded: msg.likelyReplyNeeded ?? false,
175
+ threadId: msg.threadId,
176
+ chatType: "dm",
177
+ gmailAccountId: msg.grantId,
178
+ gmailAccountEmail: msg.accountEmail ?? undefined,
153
179
  });
154
180
  }
155
181
  return results;
@@ -179,6 +205,7 @@ export async function fetchXDmMessages(source, opts) {
179
205
  ? metadata.participantId.trim()
180
206
  : dm.senderId;
181
207
  const isGroup = participantIds.length > 2;
208
+ const xParticipantCount = participantIds.length || (isGroup ? undefined : 2);
182
209
  results.push({
183
210
  id: dm.id,
184
211
  source: "x_dm",
@@ -191,6 +218,9 @@ export async function fetchXDmMessages(source, opts) {
191
218
  text: dm.text,
192
219
  snippet: dm.text.slice(0, SNIPPET_MAX_LENGTH),
193
220
  timestamp: Number.isFinite(receivedMs) ? receivedMs : Date.now(),
221
+ threadId: dm.conversationId,
222
+ chatType: isGroup ? "group" : "dm",
223
+ participantCount: xParticipantCount,
194
224
  });
195
225
  }
196
226
  return results;
@@ -203,6 +233,7 @@ export async function fetchAllMessages(runtime, opts) {
203
233
  ? fetchGmailMessages(opts.gmailSource, {
204
234
  sinceIso: opts.sinceIso,
205
235
  limit: opts.limit,
236
+ grantId: opts.gmailGrantId,
206
237
  })
207
238
  : Promise.reject(new Error("fetchAllMessages requires gmailSource when Gmail is included"))
208
239
  : Promise.resolve([]);
@@ -284,3 +315,26 @@ function detectChannelType(room) {
284
315
  }
285
316
  return "dm";
286
317
  }
318
+ /**
319
+ * Classify a room as DM, small group, or public channel/broadcast.
320
+ * Discord text channels (`GUILD_TEXT`, `voice`, etc.) are treated as channels.
321
+ * Anything with more than {@link PUBLIC_CHANNEL_PARTICIPANT_THRESHOLD}
322
+ * participants is also treated as a channel so the inbox can hide it.
323
+ */
324
+ function classifyChatType(room, channelType, participantCount) {
325
+ const rawType = typeof room?.type === "string" ? room.type.toLowerCase() : "";
326
+ const isLikelyPublicChannel = rawType.includes("guild") ||
327
+ rawType.includes("voice") ||
328
+ rawType.includes("forum") ||
329
+ rawType.includes("public") ||
330
+ rawType.includes("broadcast");
331
+ if (channelType === "dm") {
332
+ return "dm";
333
+ }
334
+ if (isLikelyPublicChannel ||
335
+ (typeof participantCount === "number" &&
336
+ participantCount > PUBLIC_CHANNEL_PARTICIPANT_THRESHOLD)) {
337
+ return "channel";
338
+ }
339
+ return "group";
340
+ }
@@ -36,6 +36,26 @@ export interface InboundMessage {
36
36
  gmailMessageId?: string;
37
37
  gmailIsImportant?: boolean;
38
38
  gmailLikelyReplyNeeded?: boolean;
39
+ /** Stable per-conversation key. For chat: roomId. For Gmail: thread id. */
40
+ threadId?: string;
41
+ /** Identifies which Google grant the message came from when multiple Gmail accounts exist. */
42
+ gmailAccountId?: string;
43
+ /** Display label for the Gmail account (e.g., `work@example.com`). */
44
+ gmailAccountEmail?: string;
45
+ /** ISO timestamp of when the user last viewed this thread. */
46
+ lastSeenAt?: string;
47
+ /** ISO timestamp if the user has replied since this message arrived. */
48
+ repliedAt?: string;
49
+ /** 0–100 score; higher = more important. */
50
+ priorityScore?: number;
51
+ /**
52
+ * DM, small/medium group chat, or public channel/broadcast.
53
+ * Mirrors the existing `channelType` field but with broader coverage; downstream
54
+ * code will migrate from `channelType` to `chatType` over time.
55
+ */
56
+ chatType?: "dm" | "group" | "channel";
57
+ /** For groups, number of participants. */
58
+ participantCount?: number;
39
59
  }
40
60
  export interface TriageEntry {
41
61
  id: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/inbox/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/inbox/types.ts"],"names":[],"mappings":"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"}
@@ -70,9 +70,22 @@ export interface LifeOpsSpendingSummary {
70
70
  transactionCount: number;
71
71
  }>;
72
72
  }
73
+ export interface LifeOpsRecurringChargePlaybookHit {
74
+ merchantNormalized: string;
75
+ playbookKey: string;
76
+ serviceName: string;
77
+ managementUrl: string;
78
+ executorPreference: "user_browser" | "agent_browser" | "desktop_native";
79
+ }
73
80
  export interface LifeOpsPaymentsDashboard {
74
81
  sources: LifeOpsPaymentSource[];
75
82
  recurring: LifeOpsRecurringCharge[];
83
+ /**
84
+ * For every recurring charge whose merchant matches a known cancellation
85
+ * playbook (Netflix, Spotify, NYT, etc.), this map carries the playbook
86
+ * descriptor. UI shows a deep-link "Cancel" button only when there is a hit.
87
+ */
88
+ recurringPlaybookHits: LifeOpsRecurringChargePlaybookHit[];
76
89
  spending: LifeOpsSpendingSummary;
77
90
  gmailSubscriptionAuditId: string | null;
78
91
  generatedAt: string;
@@ -113,4 +126,11 @@ export interface SpendingSummaryRequest {
113
126
  windowDays?: number | null;
114
127
  sourceId?: string | null;
115
128
  }
129
+ export type LifeOpsMoneyDashboard = LifeOpsPaymentsDashboard;
130
+ export type LifeOpsMoneySource = LifeOpsPaymentSource;
131
+ export type LifeOpsMoneySourceKind = LifeOpsPaymentSourceKind;
132
+ export type LifeOpsMoneySourceStatus = LifeOpsPaymentSourceStatus;
133
+ export type LifeOpsMoneyTransaction = LifeOpsPaymentTransaction;
134
+ export type LifeOpsMoneyDirection = LifeOpsPaymentDirection;
135
+ export type AddMoneySourceRequest = AddPaymentSourceRequest;
116
136
  //# sourceMappingURL=payment-types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payment-types.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/payment-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"payment-types.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/payment-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Milady-runtime client for Eliza Cloud's PayPal bridge endpoints.
3
+ *
4
+ * Same pattern as PlaidManagedClient: cloud holds the PAYPAL_* secrets,
5
+ * we just authenticate with the user's Eliza Cloud API key and forward
6
+ * the OAuth + Reporting API calls.
7
+ *
8
+ * The Reporting API (transaction sync) is only available to merchant-tier
9
+ * PayPal accounts. Personal accounts can authorize Login but the API
10
+ * returns 403; the cloud surfaces this as
11
+ * `{ error, fallback: "csv_export" }` so we can route the user to CSV
12
+ * import instead.
13
+ */
14
+ export declare class PaypalManagedClientError extends Error {
15
+ readonly status: number;
16
+ readonly fallback: "csv_export" | null;
17
+ constructor(status: number, message: string, fallback?: "csv_export" | null);
18
+ }
19
+ interface ResolvedCloudConfig {
20
+ configured: boolean;
21
+ apiKey: string | null;
22
+ apiBaseUrl: string;
23
+ siteUrl: string;
24
+ }
25
+ export interface PaypalAuthorizeUrlResponse {
26
+ url: string;
27
+ scope: string;
28
+ environment: "live" | "sandbox";
29
+ }
30
+ export interface PaypalCallbackResponse {
31
+ accessToken: string;
32
+ refreshToken: string | null;
33
+ expiresIn: number;
34
+ scope: string;
35
+ capability: {
36
+ hasReporting: boolean;
37
+ hasIdentity: boolean;
38
+ };
39
+ identity: {
40
+ payerId: string;
41
+ emails: string[];
42
+ name: string | null;
43
+ } | null;
44
+ }
45
+ export interface PaypalTransactionDto {
46
+ transaction_info: {
47
+ transaction_id: string;
48
+ transaction_initiation_date: string;
49
+ transaction_updated_date: string | null;
50
+ transaction_amount: {
51
+ currency_code: string;
52
+ value: string;
53
+ };
54
+ transaction_status: string;
55
+ transaction_subject: string | null;
56
+ transaction_note: string | null;
57
+ };
58
+ payer_info?: {
59
+ email_address?: string;
60
+ payer_name?: {
61
+ alternate_full_name?: string;
62
+ };
63
+ };
64
+ shipping_info?: {
65
+ name?: string;
66
+ };
67
+ cart_info?: {
68
+ item_details?: Array<{
69
+ item_name?: string;
70
+ item_amount?: {
71
+ currency_code: string;
72
+ value: string;
73
+ };
74
+ }>;
75
+ };
76
+ }
77
+ export interface PaypalTransactionsResponse {
78
+ transactions: PaypalTransactionDto[];
79
+ totalItems: number;
80
+ totalPages: number;
81
+ page: number;
82
+ }
83
+ export declare class PaypalManagedClient {
84
+ private readonly configSource;
85
+ constructor(configSource?: () => ResolvedCloudConfig);
86
+ private requireConfig;
87
+ get configured(): boolean;
88
+ buildAuthorizeUrl(args: {
89
+ state: string;
90
+ }): Promise<PaypalAuthorizeUrlResponse>;
91
+ exchangeCode(args: {
92
+ code: string;
93
+ }): Promise<PaypalCallbackResponse>;
94
+ refreshAccessToken(args: {
95
+ refreshToken: string;
96
+ }): Promise<{
97
+ accessToken: string;
98
+ refreshToken: string | null;
99
+ expiresIn: number;
100
+ scope: string;
101
+ }>;
102
+ searchTransactions(args: {
103
+ accessToken: string;
104
+ startDate: string;
105
+ endDate: string;
106
+ page?: number;
107
+ }): Promise<PaypalTransactionsResponse>;
108
+ }
109
+ export {};
110
+ //# sourceMappingURL=paypal-managed-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paypal-managed-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/paypal-managed-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * Milady-runtime client for Eliza Cloud's PayPal bridge endpoints.
3
+ *
4
+ * Same pattern as PlaidManagedClient: cloud holds the PAYPAL_* secrets,
5
+ * we just authenticate with the user's Eliza Cloud API key and forward
6
+ * the OAuth + Reporting API calls.
7
+ *
8
+ * The Reporting API (transaction sync) is only available to merchant-tier
9
+ * PayPal accounts. Personal accounts can authorize Login but the API
10
+ * returns 403; the cloud surfaces this as
11
+ * `{ error, fallback: "csv_export" }` so we can route the user to CSV
12
+ * import instead.
13
+ */
14
+ import { normalizeCloudSiteUrl, resolveCloudApiBaseUrl, } from "@elizaos/agent/cloud/base-url";
15
+ import { loadElizaConfig } from "@elizaos/agent/config/config";
16
+ const PAYPAL_REQUEST_TIMEOUT_MS = 30_000;
17
+ export class PaypalManagedClientError extends Error {
18
+ status;
19
+ fallback;
20
+ constructor(status, message, fallback = null) {
21
+ super(message);
22
+ this.status = status;
23
+ this.fallback = fallback;
24
+ this.name = "PaypalManagedClientError";
25
+ }
26
+ }
27
+ function normalizeApiKey(value) {
28
+ const trimmed = value?.trim();
29
+ if (!trimmed)
30
+ return null;
31
+ return trimmed.toUpperCase() === "[REDACTED]" ? null : trimmed;
32
+ }
33
+ function resolveCloudConfig() {
34
+ let configKey = null;
35
+ let configBase = null;
36
+ try {
37
+ const config = loadElizaConfig();
38
+ const cloud = config.cloud && typeof config.cloud === "object"
39
+ ? config.cloud
40
+ : null;
41
+ if (cloud) {
42
+ if (typeof cloud.apiKey === "string") {
43
+ configKey = normalizeApiKey(cloud.apiKey);
44
+ }
45
+ if (typeof cloud.baseUrl === "string" && cloud.baseUrl.trim().length) {
46
+ configBase = cloud.baseUrl.trim();
47
+ }
48
+ }
49
+ }
50
+ catch {
51
+ // Fall through to env.
52
+ }
53
+ const apiKey = configKey ?? normalizeApiKey(process.env.ELIZAOS_CLOUD_API_KEY);
54
+ const baseUrl = configBase ?? process.env.ELIZAOS_CLOUD_BASE_URL ?? undefined;
55
+ return {
56
+ configured: Boolean(apiKey),
57
+ apiKey,
58
+ apiBaseUrl: resolveCloudApiBaseUrl(baseUrl),
59
+ siteUrl: normalizeCloudSiteUrl(baseUrl),
60
+ };
61
+ }
62
+ async function readJson(response) {
63
+ if (!response.ok) {
64
+ let detail = `${response.status} ${response.statusText}`.trim();
65
+ let fallback = null;
66
+ const text = await response.text();
67
+ if (text.trim().length > 0) {
68
+ try {
69
+ const parsed = JSON.parse(text);
70
+ detail = parsed.message ?? parsed.error ?? text.slice(0, 240);
71
+ fallback = parsed.fallback ?? null;
72
+ }
73
+ catch {
74
+ detail = text.slice(0, 240);
75
+ }
76
+ }
77
+ throw new PaypalManagedClientError(response.status, detail, fallback);
78
+ }
79
+ return (await response.json());
80
+ }
81
+ export class PaypalManagedClient {
82
+ configSource;
83
+ constructor(configSource = resolveCloudConfig) {
84
+ this.configSource = configSource;
85
+ }
86
+ requireConfig() {
87
+ const config = this.configSource();
88
+ if (!config.apiKey) {
89
+ throw new PaypalManagedClientError(409, "Eliza Cloud is not connected.");
90
+ }
91
+ return { ...config, apiKey: config.apiKey };
92
+ }
93
+ get configured() {
94
+ return this.configSource().configured;
95
+ }
96
+ async buildAuthorizeUrl(args) {
97
+ const config = this.requireConfig();
98
+ const response = await fetch(`${config.apiBaseUrl}/v1/milady/paypal/authorize`, {
99
+ method: "POST",
100
+ headers: {
101
+ Authorization: `Bearer ${config.apiKey}`,
102
+ "Content-Type": "application/json",
103
+ },
104
+ body: JSON.stringify({ state: args.state }),
105
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS),
106
+ });
107
+ return readJson(response);
108
+ }
109
+ async exchangeCode(args) {
110
+ const config = this.requireConfig();
111
+ const response = await fetch(`${config.apiBaseUrl}/v1/milady/paypal/callback`, {
112
+ method: "POST",
113
+ headers: {
114
+ Authorization: `Bearer ${config.apiKey}`,
115
+ "Content-Type": "application/json",
116
+ },
117
+ body: JSON.stringify({ code: args.code }),
118
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS),
119
+ });
120
+ return readJson(response);
121
+ }
122
+ async refreshAccessToken(args) {
123
+ const config = this.requireConfig();
124
+ const response = await fetch(`${config.apiBaseUrl}/v1/milady/paypal/refresh`, {
125
+ method: "POST",
126
+ headers: {
127
+ Authorization: `Bearer ${config.apiKey}`,
128
+ "Content-Type": "application/json",
129
+ },
130
+ body: JSON.stringify({ refreshToken: args.refreshToken }),
131
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS),
132
+ });
133
+ return readJson(response);
134
+ }
135
+ async searchTransactions(args) {
136
+ const config = this.requireConfig();
137
+ const response = await fetch(`${config.apiBaseUrl}/v1/milady/paypal/transactions`, {
138
+ method: "POST",
139
+ headers: {
140
+ Authorization: `Bearer ${config.apiKey}`,
141
+ "Content-Type": "application/json",
142
+ },
143
+ body: JSON.stringify(args),
144
+ signal: AbortSignal.timeout(PAYPAL_REQUEST_TIMEOUT_MS * 2),
145
+ });
146
+ return readJson(response);
147
+ }
148
+ }
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Milady-runtime client for Eliza Cloud's Plaid bridge endpoints.
3
+ *
4
+ * Pattern matches GoogleManagedClient: read the cloud apiKey from
5
+ * loadElizaConfig() / ELIZAOS_CLOUD_API_KEY, hit the cloud at
6
+ * /api/v1/milady/plaid/*, and surface a typed PlaidManagedClientError on
7
+ * non-2xx responses so callers can show actionable messages.
8
+ *
9
+ * The cloud API holds the long-lived Plaid `access_token` for transaction
10
+ * sync. The Milady runtime never sees Plaid client secrets, only the cloud
11
+ * api key.
12
+ */
13
+ export declare class PlaidManagedClientError extends Error {
14
+ readonly status: number;
15
+ constructor(status: number, message: string);
16
+ }
17
+ interface ResolvedCloudConfig {
18
+ configured: boolean;
19
+ apiKey: string | null;
20
+ apiBaseUrl: string;
21
+ siteUrl: string;
22
+ }
23
+ export interface PlaidLinkTokenResponse {
24
+ linkToken: string;
25
+ expiration: string;
26
+ environment: "sandbox" | "development" | "production";
27
+ }
28
+ export interface PlaidExchangeResponse {
29
+ accessToken: string;
30
+ itemId: string;
31
+ institution: {
32
+ institutionId: string;
33
+ institutionName: string;
34
+ primaryAccountMask: string | null;
35
+ accounts: Array<{
36
+ accountId: string;
37
+ name: string;
38
+ mask: string | null;
39
+ type: string;
40
+ subtype: string | null;
41
+ }>;
42
+ };
43
+ }
44
+ export interface PlaidSyncResponse {
45
+ added: PlaidTransactionDto[];
46
+ modified: PlaidTransactionDto[];
47
+ removed: Array<{
48
+ transaction_id: string;
49
+ }>;
50
+ nextCursor: string;
51
+ hasMore: boolean;
52
+ }
53
+ export interface PlaidTransactionDto {
54
+ transaction_id: string;
55
+ account_id: string;
56
+ amount: number;
57
+ iso_currency_code: string | null;
58
+ unofficial_currency_code: string | null;
59
+ date: string;
60
+ authorized_date: string | null;
61
+ name: string;
62
+ merchant_name: string | null;
63
+ pending: boolean;
64
+ category: string[] | null;
65
+ personal_finance_category: {
66
+ primary: string;
67
+ detailed: string;
68
+ } | null;
69
+ }
70
+ export declare class PlaidManagedClient {
71
+ private readonly configSource;
72
+ constructor(configSource?: () => ResolvedCloudConfig);
73
+ private requireConfig;
74
+ get configured(): boolean;
75
+ createLinkToken(): Promise<PlaidLinkTokenResponse>;
76
+ exchangePublicToken(args: {
77
+ publicToken: string;
78
+ }): Promise<PlaidExchangeResponse>;
79
+ syncTransactions(args: {
80
+ accessToken: string;
81
+ cursor?: string;
82
+ count?: number;
83
+ }): Promise<PlaidSyncResponse>;
84
+ }
85
+ export {};
86
+ //# sourceMappingURL=plaid-managed-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plaid-managed-client.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-lifeops/src/lifeops/plaid-managed-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAUH,qBAAa,uBAAwB,SAAQ,KAAK;aAE9B,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAC9B,OAAO,EAAE,MAAM;CAKlB;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB;AA0DD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,SAAS,GAAG,aAAa,GAAG,YAAY,CAAC;CACvD;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;QAClC,QAAQ,EAAE,KAAK,CAAC;YACd,SAAS,EAAE,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;YACpB,IAAI,EAAE,MAAM,CAAC;YACb,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;SACxB,CAAC,CAAC;KACJ,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,mBAAmB,EAAE,CAAC;IAC7B,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,OAAO,EAAE,KAAK,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAC1B,yBAAyB,EAAE;QACzB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,CAAC;KAClB,GAAG,IAAI,CAAC;CACV;AAED,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,GAAE,MAAM,mBAAwC;IAG/E,OAAO,CAAC,aAAa;IAQrB,IAAI,UAAU,IAAI,OAAO,CAExB;IAEK,eAAe,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAiBlD,mBAAmB,CAAC,IAAI,EAAE;QAC9B,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAiB5B,gBAAgB,CAAC,IAAI,EAAE;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAiB/B"}