@elizaos/ui 2.0.0-alpha.385 → 2.0.0-alpha.392

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 (369) hide show
  1. package/apps/app-companion/src/components/companion/CompanionAppView.d.ts.map +1 -1
  2. package/apps/app-companion/src/components/companion/CompanionAppView.js +6 -4
  3. package/apps/app-companion/src/components/companion/CompanionView.d.ts.map +1 -1
  4. package/apps/app-companion/src/components/companion/CompanionView.js +6 -4
  5. package/apps/app-lifeops/src/api/client-lifeops.js +6 -0
  6. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts +3 -0
  7. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.d.ts.map +1 -0
  8. package/apps/app-lifeops/src/components/AppBlockerSettingsCard.js +189 -0
  9. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts +2 -0
  10. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.d.ts.map +1 -0
  11. package/apps/app-lifeops/src/components/BrowserBridgeSetupPanel.js +1065 -0
  12. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts +7 -0
  13. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.d.ts.map +1 -0
  14. package/apps/app-lifeops/src/components/BrowserBridgeStatusChip.js +71 -0
  15. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts +14 -0
  16. package/apps/app-lifeops/src/components/DataSourcesStrip.d.ts.map +1 -0
  17. package/apps/app-lifeops/src/components/DataSourcesStrip.js +36 -0
  18. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts +23 -0
  19. package/apps/app-lifeops/src/components/EventEditorDrawer.d.ts.map +1 -0
  20. package/apps/app-lifeops/src/components/EventEditorDrawer.js +514 -0
  21. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts +2 -0
  22. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.d.ts.map +1 -0
  23. package/apps/app-lifeops/src/components/LifeOpsActivitySignalsEffect.js +10 -0
  24. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts +15 -0
  25. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.d.ts.map +1 -0
  26. package/apps/app-lifeops/src/components/LifeOpsCalendarSection.js +515 -0
  27. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts +34 -0
  28. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.d.ts.map +1 -0
  29. package/apps/app-lifeops/src/components/LifeOpsChatAdapter.js +175 -0
  30. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts +2 -0
  31. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.d.ts.map +1 -0
  32. package/apps/app-lifeops/src/components/LifeOpsFeatureTogglesSection.js +99 -0
  33. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts +37 -0
  34. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.d.ts.map +1 -0
  35. package/apps/app-lifeops/src/components/LifeOpsHabitVisuals.js +88 -0
  36. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts +13 -0
  37. package/apps/app-lifeops/src/components/LifeOpsInboxSection.d.ts.map +1 -0
  38. package/apps/app-lifeops/src/components/LifeOpsInboxSection.js +490 -0
  39. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts +12 -0
  40. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.d.ts.map +1 -0
  41. package/apps/app-lifeops/src/components/LifeOpsLinkBankButton.js +92 -0
  42. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts +12 -0
  43. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.d.ts.map +1 -0
  44. package/apps/app-lifeops/src/components/LifeOpsLinkPaypalButton.js +160 -0
  45. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts +3 -0
  46. package/apps/app-lifeops/src/components/LifeOpsMoneySection.d.ts.map +1 -0
  47. package/apps/app-lifeops/src/components/LifeOpsMoneySection.js +373 -0
  48. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts +9 -0
  49. package/apps/app-lifeops/src/components/LifeOpsNavRail.d.ts.map +1 -0
  50. package/apps/app-lifeops/src/components/LifeOpsNavRail.js +93 -0
  51. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts +4 -0
  52. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.d.ts.map +1 -0
  53. package/apps/app-lifeops/src/components/LifeOpsOperationalPanels.js +274 -0
  54. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts +7 -0
  55. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.d.ts.map +1 -0
  56. package/apps/app-lifeops/src/components/LifeOpsOverviewSection.js +657 -0
  57. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts +42 -0
  58. package/apps/app-lifeops/src/components/LifeOpsPageSections.d.ts.map +1 -0
  59. package/apps/app-lifeops/src/components/LifeOpsPageSections.js +166 -0
  60. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts +2 -0
  61. package/apps/app-lifeops/src/components/LifeOpsPageView.d.ts.map +1 -0
  62. package/apps/app-lifeops/src/components/LifeOpsPageView.js +566 -0
  63. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts +2 -0
  64. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.d.ts.map +1 -0
  65. package/apps/app-lifeops/src/components/LifeOpsRemindersSection.js +749 -0
  66. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts +27 -0
  67. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.d.ts.map +1 -0
  68. package/apps/app-lifeops/src/components/LifeOpsResizableSidebar.js +106 -0
  69. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts +2 -0
  70. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.d.ts.map +1 -0
  71. package/apps/app-lifeops/src/components/LifeOpsScreenTimeSection.js +373 -0
  72. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts +10 -0
  73. package/apps/app-lifeops/src/components/LifeOpsSectionContent.d.ts.map +1 -0
  74. package/apps/app-lifeops/src/components/LifeOpsSectionContent.js +30 -0
  75. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts +21 -0
  76. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.d.ts.map +1 -0
  77. package/apps/app-lifeops/src/components/LifeOpsSelectionContext.js +30 -0
  78. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts +20 -0
  79. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.d.ts.map +1 -0
  80. package/apps/app-lifeops/src/components/LifeOpsSettingsSection.js +597 -0
  81. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts +13 -0
  82. package/apps/app-lifeops/src/components/LifeOpsSetupGate.d.ts.map +1 -0
  83. package/apps/app-lifeops/src/components/LifeOpsSetupGate.js +134 -0
  84. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts +10 -0
  85. package/apps/app-lifeops/src/components/LifeOpsSleepSection.d.ts.map +1 -0
  86. package/apps/app-lifeops/src/components/LifeOpsSleepSection.js +425 -0
  87. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts +11 -0
  88. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.d.ts.map +1 -0
  89. package/apps/app-lifeops/src/components/LifeOpsWorkspaceShell.js +49 -0
  90. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts +2 -0
  91. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.d.ts.map +1 -0
  92. package/apps/app-lifeops/src/components/LifeOpsWorkspaceView.js +1041 -0
  93. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts +7 -0
  94. package/apps/app-lifeops/src/components/MessagingConnectorCards.d.ts.map +1 -0
  95. package/apps/app-lifeops/src/components/MessagingConnectorCards.js +643 -0
  96. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts +9 -0
  97. package/apps/app-lifeops/src/components/MissingSourceCard.d.ts.map +1 -0
  98. package/apps/app-lifeops/src/components/MissingSourceCard.js +5 -0
  99. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts +2 -0
  100. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.d.ts.map +1 -0
  101. package/apps/app-lifeops/src/components/MobileSignalsSetupCard.js +163 -0
  102. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts +8 -0
  103. package/apps/app-lifeops/src/components/SleepInspectionPanel.d.ts.map +1 -0
  104. package/apps/app-lifeops/src/components/SleepInspectionPanel.js +59 -0
  105. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts +3 -0
  106. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.d.ts.map +1 -0
  107. package/apps/app-lifeops/src/components/WebsiteBlockerSettingsCard.js +75 -0
  108. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts +8 -0
  109. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.d.ts.map +1 -0
  110. package/apps/app-lifeops/src/components/WhatsAppQrOverlay.js +48 -0
  111. package/apps/app-lifeops/src/components/lifeops-labels.d.ts +2 -0
  112. package/apps/app-lifeops/src/components/lifeops-labels.d.ts.map +1 -0
  113. package/apps/app-lifeops/src/components/lifeops-labels.js +5 -0
  114. package/apps/app-lifeops/src/events/index.d.ts +34 -0
  115. package/apps/app-lifeops/src/events/index.d.ts.map +1 -0
  116. package/apps/app-lifeops/src/events/index.js +23 -0
  117. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts +28 -0
  118. package/apps/app-lifeops/src/hooks/useCalendarWeek.d.ts.map +1 -0
  119. package/apps/app-lifeops/src/hooks/useCalendarWeek.js +93 -0
  120. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts +14 -0
  121. package/apps/app-lifeops/src/hooks/useDiscordConnector.d.ts.map +1 -0
  122. package/apps/app-lifeops/src/hooks/useDiscordConnector.js +126 -0
  123. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts +29 -0
  124. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.d.ts.map +1 -0
  125. package/apps/app-lifeops/src/hooks/useGoogleLifeOpsConnector.js +481 -0
  126. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts +10 -0
  127. package/apps/app-lifeops/src/hooks/useIMessageConnector.d.ts.map +1 -0
  128. package/apps/app-lifeops/src/hooks/useIMessageConnector.js +50 -0
  129. package/apps/app-lifeops/src/hooks/useInbox.d.ts +34 -0
  130. package/apps/app-lifeops/src/hooks/useInbox.d.ts.map +1 -0
  131. package/apps/app-lifeops/src/hooks/useInbox.js +98 -0
  132. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts +2 -0
  133. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.d.ts.map +1 -0
  134. package/apps/app-lifeops/src/hooks/useLifeOpsActivitySignals.js +383 -0
  135. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts +9 -0
  136. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.d.ts.map +1 -0
  137. package/apps/app-lifeops/src/hooks/useLifeOpsAppState.js +83 -0
  138. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts +8 -0
  139. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.d.ts.map +1 -0
  140. package/apps/app-lifeops/src/hooks/useLifeOpsCapabilitiesStatus.js +60 -0
  141. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts +18 -0
  142. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.d.ts.map +1 -0
  143. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleInspection.js +66 -0
  144. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts +14 -0
  145. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.d.ts.map +1 -0
  146. package/apps/app-lifeops/src/hooks/useLifeOpsScheduleState.js +79 -0
  147. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts +18 -0
  148. package/apps/app-lifeops/src/hooks/useLifeOpsSection.d.ts.map +1 -0
  149. package/apps/app-lifeops/src/hooks/useLifeOpsSection.js +78 -0
  150. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts +14 -0
  151. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.d.ts.map +1 -0
  152. package/apps/app-lifeops/src/hooks/useLifeOpsXConnector.js +160 -0
  153. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts +16 -0
  154. package/apps/app-lifeops/src/hooks/useSignalConnector.d.ts.map +1 -0
  155. package/apps/app-lifeops/src/hooks/useSignalConnector.js +198 -0
  156. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts +21 -0
  157. package/apps/app-lifeops/src/hooks/useTelegramConnector.d.ts.map +1 -0
  158. package/apps/app-lifeops/src/hooks/useTelegramConnector.js +177 -0
  159. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts +8 -0
  160. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.d.ts.map +1 -0
  161. package/apps/app-lifeops/src/hooks/useWhatsAppConnector.js +58 -0
  162. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts +12 -0
  163. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.d.ts.map +1 -0
  164. package/apps/app-lifeops/src/hooks/useWhatsAppPairing.js +152 -0
  165. package/apps/app-lifeops/src/lifeops/discord-browser-scraper.js +1 -1
  166. package/apps/app-lifeops/src/lifeops/google-gmail.d.ts.map +1 -1
  167. package/apps/app-lifeops/src/lifeops/google-gmail.js +74 -26
  168. package/apps/app-lifeops/src/lifeops/google-managed-client.d.ts.map +1 -1
  169. package/apps/app-lifeops/src/lifeops/google-managed-client.js +4 -5
  170. package/apps/app-lifeops/src/lifeops/google-oauth.d.ts.map +1 -1
  171. package/apps/app-lifeops/src/lifeops/google-oauth.js +2 -2
  172. package/apps/app-lifeops/src/lifeops/owner-profile.d.ts.map +1 -1
  173. package/apps/app-lifeops/src/lifeops/owner-profile.js +1 -1
  174. package/apps/app-lifeops/src/lifeops/paypal-managed-client.d.ts.map +1 -1
  175. package/apps/app-lifeops/src/lifeops/paypal-managed-client.js +4 -5
  176. package/apps/app-lifeops/src/lifeops/plaid-managed-client.d.ts.map +1 -1
  177. package/apps/app-lifeops/src/lifeops/plaid-managed-client.js +4 -5
  178. package/apps/app-lifeops/src/lifeops/schedule-sync-client.js +2 -2
  179. package/apps/app-lifeops/src/lifeops/service-constants.d.ts +1 -0
  180. package/apps/app-lifeops/src/lifeops/service-constants.d.ts.map +1 -1
  181. package/apps/app-lifeops/src/lifeops/service-constants.js +1 -0
  182. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts +1 -1
  183. package/apps/app-lifeops/src/lifeops/service-mixin-core.d.ts.map +1 -1
  184. package/apps/app-lifeops/src/lifeops/service-mixin-core.js +2 -1
  185. package/apps/app-lifeops/src/lifeops/service-mixin-imessage.js +1 -1
  186. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts +3 -1
  187. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.d.ts.map +1 -1
  188. package/apps/app-lifeops/src/lifeops/service-mixin-inbox.js +42 -13
  189. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.d.ts.map +1 -1
  190. package/apps/app-lifeops/src/lifeops/service-mixin-reminders.js +3 -2
  191. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.d.ts.map +1 -1
  192. package/apps/app-lifeops/src/lifeops/service-mixin-workflows.js +1 -1
  193. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.d.ts.map +1 -1
  194. package/apps/app-lifeops/src/lifeops/service-normalize-calendar.js +3 -3
  195. package/apps/app-lifeops/src/lifeops/service-normalize-connector.d.ts +1 -1
  196. package/apps/app-lifeops/src/lifeops/service-normalize-connector.d.ts.map +1 -1
  197. package/apps/app-lifeops/src/lifeops/service-normalize-connector.js +2 -2
  198. package/apps/app-lifeops/src/lifeops/signal-auth.d.ts.map +1 -1
  199. package/apps/app-lifeops/src/lifeops/signal-auth.js +6 -3
  200. package/apps/app-lifeops/src/lifeops/telegram-auth.js +1 -1
  201. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.d.ts.map +1 -1
  202. package/apps/app-lifeops/src/lifeops/travel-adapters/duffel.js +31 -6
  203. package/apps/app-lifeops/src/lifeops/twilio.js +1 -1
  204. package/apps/app-lifeops/src/lifeops/x-poster.d.ts.map +1 -1
  205. package/apps/app-lifeops/src/lifeops/x-poster.js +13 -3
  206. package/apps/app-lifeops/src/lifeops-route.d.ts +74 -0
  207. package/apps/app-lifeops/src/lifeops-route.d.ts.map +1 -0
  208. package/apps/app-lifeops/src/lifeops-route.js +204 -0
  209. package/apps/app-lifeops/src/platform/lifeops-github.d.ts +15 -0
  210. package/apps/app-lifeops/src/platform/lifeops-github.d.ts.map +1 -0
  211. package/apps/app-lifeops/src/platform/lifeops-github.js +135 -0
  212. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts +2 -2
  213. package/apps/app-lifeops/src/routes/cloud-features-routes.d.ts.map +1 -1
  214. package/apps/app-lifeops/src/routes/cloud-features-routes.js +5 -3
  215. package/apps/app-lifeops/src/routes/lifeops-routes.d.ts.map +1 -1
  216. package/apps/app-lifeops/src/routes/lifeops-routes.js +15 -3
  217. package/apps/app-lifeops/src/routes/plugin.d.ts.map +1 -1
  218. package/apps/app-lifeops/src/routes/plugin.js +10 -1
  219. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts +1 -1
  220. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.d.ts.map +1 -1
  221. package/apps/app-lifeops/src/routes/travel-provider-relay-routes.js +4 -2
  222. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts +1 -1
  223. package/apps/app-lifeops/src/routes/website-blocker-routes.d.ts.map +1 -1
  224. package/apps/app-lifeops/src/ui.d.ts +11 -0
  225. package/apps/app-lifeops/src/ui.d.ts.map +1 -0
  226. package/apps/app-lifeops/src/ui.js +9 -0
  227. package/apps/app-lifeops/src/utils/lifeops-url.d.ts +5 -0
  228. package/apps/app-lifeops/src/utils/lifeops-url.d.ts.map +1 -0
  229. package/apps/app-lifeops/src/utils/lifeops-url.js +35 -0
  230. package/apps/app-lifeops/src/website-blocker/access.d.ts.map +1 -1
  231. package/apps/app-lifeops/src/website-blocker/access.js +1 -1
  232. package/apps/app-steward/src/routes/steward-compat-routes.d.ts +1 -1
  233. package/apps/app-steward/src/routes/steward-compat-routes.d.ts.map +1 -1
  234. package/apps/app-steward/src/routes/steward-compat-routes.js +3 -1
  235. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts +1 -1
  236. package/apps/app-steward/src/routes/wallet-browser-compat-routes.d.ts.map +1 -1
  237. package/apps/app-steward/src/routes/wallet-browser-compat-routes.js +3 -1
  238. package/apps/app-steward/src/routes/wallet-bsc-core-routes.d.ts.map +1 -1
  239. package/apps/app-steward/src/routes/wallet-bsc-core-routes.js +2 -1
  240. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts +1 -1
  241. package/apps/app-steward/src/routes/wallet-compat-routes.d.ts.map +1 -1
  242. package/apps/app-steward/src/routes/wallet-compat-routes.js +3 -1
  243. package/apps/app-steward/src/routes/wallet-core-routes.d.ts.map +1 -1
  244. package/apps/app-steward/src/routes/wallet-core-routes.js +2 -1
  245. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts +1 -1
  246. package/apps/app-steward/src/routes/wallet-trade-compat-routes.d.ts.map +1 -1
  247. package/apps/app-steward/src/routes/wallet-trade-compat-routes.js +3 -1
  248. package/apps/app-training/src/core/dataset-generator.d.ts +1 -1
  249. package/apps/app-training/src/core/dataset-generator.d.ts.map +1 -1
  250. package/apps/app-training/src/core/roleplay-executor.d.ts +1 -1
  251. package/apps/app-training/src/core/roleplay-executor.d.ts.map +1 -1
  252. package/apps/app-training/src/core/trajectory-task-datasets.d.ts +1 -1
  253. package/apps/app-training/src/core/trajectory-task-datasets.d.ts.map +1 -1
  254. package/apps/app-training/src/index.d.ts +1 -2
  255. package/apps/app-training/src/index.d.ts.map +1 -1
  256. package/apps/app-training/src/index.js +1 -2
  257. package/apps/app-training/src/routes/training-routes.d.ts +1 -1
  258. package/apps/app-training/src/routes/training-routes.d.ts.map +1 -1
  259. package/apps/app-training/src/routes/training-routes.js +1 -1
  260. package/apps/app-training/src/routes/trajectory-routes.d.ts +1 -1
  261. package/apps/app-training/src/routes/trajectory-routes.d.ts.map +1 -1
  262. package/apps/app-training/src/routes/trajectory-routes.js +3 -1
  263. package/apps/app-training/src/services/training-service-like.d.ts +1 -1
  264. package/apps/app-training/src/services/training-service-like.d.ts.map +1 -1
  265. package/apps/app-training/src/services/training-service.d.ts +1 -1
  266. package/apps/app-training/src/services/training-service.d.ts.map +1 -1
  267. package/package.json +1 -1
  268. package/packages/agent/src/api/provider-switch-config.js +1 -1
  269. package/packages/agent/src/api/server-helpers-auth.d.ts.map +1 -1
  270. package/packages/agent/src/api/server-helpers-auth.js +5 -4
  271. package/packages/agent/src/providers/media-provider.d.ts +1 -1
  272. package/packages/agent/src/providers/media-provider.d.ts.map +1 -1
  273. package/packages/app-core/src/App.d.ts.map +1 -1
  274. package/packages/app-core/src/App.js +20 -12
  275. package/packages/app-core/src/api/auth.d.ts.map +1 -1
  276. package/packages/app-core/src/api/auth.js +5 -5
  277. package/packages/app-core/src/api/client-types-experience.d.ts +7 -0
  278. package/packages/app-core/src/api/client-types-experience.d.ts.map +1 -1
  279. package/packages/app-core/src/components/apps/helpers.d.ts +1 -1
  280. package/packages/app-core/src/components/apps/helpers.d.ts.map +1 -1
  281. package/packages/app-core/src/components/apps/helpers.js +1 -0
  282. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts +11 -0
  283. package/packages/app-core/src/components/apps/internal-tool-apps.d.ts.map +1 -1
  284. package/packages/app-core/src/components/apps/internal-tool-apps.js +31 -0
  285. package/packages/app-core/src/components/apps/launch-history.d.ts +16 -0
  286. package/packages/app-core/src/components/apps/launch-history.d.ts.map +1 -0
  287. package/packages/app-core/src/components/apps/launch-history.js +77 -0
  288. package/packages/app-core/src/components/apps/per-app-config.d.ts +19 -0
  289. package/packages/app-core/src/components/apps/per-app-config.d.ts.map +1 -0
  290. package/packages/app-core/src/components/apps/per-app-config.js +99 -0
  291. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts +14 -0
  292. package/packages/app-core/src/components/apps/useRegistryCatalog.d.ts.map +1 -0
  293. package/packages/app-core/src/components/apps/useRegistryCatalog.js +52 -0
  294. package/packages/app-core/src/components/auth/LoginView.d.ts +1 -19
  295. package/packages/app-core/src/components/auth/LoginView.d.ts.map +1 -1
  296. package/packages/app-core/src/components/auth/LoginView.js +4 -99
  297. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.d.ts.map +1 -1
  298. package/packages/app-core/src/components/character/CharacterExperienceWorkspace.js +14 -2
  299. package/packages/app-core/src/components/character/character-hub-helpers.d.ts.map +1 -1
  300. package/packages/app-core/src/components/character/character-hub-helpers.js +7 -0
  301. package/packages/app-core/src/components/character/character-hub-types.d.ts +7 -0
  302. package/packages/app-core/src/components/character/character-hub-types.d.ts.map +1 -1
  303. package/packages/app-core/src/components/onboarding/BootstrapStep.d.ts.map +1 -1
  304. package/packages/app-core/src/components/onboarding/BootstrapStep.js +3 -2
  305. package/packages/app-core/src/components/pages/AppDetailsView.d.ts +36 -0
  306. package/packages/app-core/src/components/pages/AppDetailsView.d.ts.map +1 -0
  307. package/packages/app-core/src/components/pages/AppDetailsView.js +289 -0
  308. package/packages/app-core/src/components/pages/AppsView.d.ts.map +1 -1
  309. package/packages/app-core/src/components/pages/AppsView.js +134 -42
  310. package/packages/app-core/src/components/shell/StartupShell.d.ts.map +1 -1
  311. package/packages/app-core/src/components/shell/StartupShell.js +2 -5
  312. package/packages/app-core/src/i18n/locales/en.json +256 -205
  313. package/packages/app-core/src/i18n/locales/es.json +256 -205
  314. package/packages/app-core/src/i18n/locales/ko.json +256 -205
  315. package/packages/app-core/src/i18n/locales/pt.json +256 -205
  316. package/packages/app-core/src/i18n/locales/tl.json +256 -205
  317. package/packages/app-core/src/i18n/locales/vi.json +256 -205
  318. package/packages/app-core/src/i18n/locales/zh-CN.json +256 -205
  319. package/packages/app-core/src/navigation/index.d.ts.map +1 -1
  320. package/packages/app-core/src/navigation/index.js +6 -0
  321. package/packages/app-core/src/shell/AppWindowRenderer.d.ts +17 -0
  322. package/packages/app-core/src/shell/AppWindowRenderer.d.ts.map +1 -0
  323. package/packages/app-core/src/shell/AppWindowRenderer.js +337 -0
  324. package/packages/app-core/src/shell/DetachedShellRoot.js +4 -1
  325. package/packages/app-core/src/shell/index.d.ts +1 -0
  326. package/packages/app-core/src/shell/index.d.ts.map +1 -1
  327. package/packages/app-core/src/shell/index.js +1 -0
  328. package/packages/app-core/src/state/startup-coordinator.d.ts.map +1 -1
  329. package/packages/app-core/src/state/startup-coordinator.js +0 -3
  330. package/packages/app-core/src/state/startup-phase-poll.d.ts.map +1 -1
  331. package/packages/app-core/src/state/startup-phase-poll.js +2 -4
  332. package/packages/app-core/src/state/usePluginsSkillsState.d.ts +6 -6
  333. package/packages/native-plugins/mobile-signals/src/definitions.d.ts +162 -0
  334. package/packages/native-plugins/mobile-signals/src/definitions.d.ts.map +1 -0
  335. package/packages/native-plugins/mobile-signals/src/definitions.js +1 -0
  336. package/packages/native-plugins/mobile-signals/src/index.d.ts +4 -0
  337. package/packages/native-plugins/mobile-signals/src/index.d.ts.map +1 -0
  338. package/packages/native-plugins/mobile-signals/src/index.js +6 -0
  339. package/packages/native-plugins/mobile-signals/src/web.d.ts +29 -0
  340. package/packages/native-plugins/mobile-signals/src/web.d.ts.map +1 -0
  341. package/packages/native-plugins/mobile-signals/src/web.js +269 -0
  342. package/packages/shared/src/app-hero-art.d.ts.map +1 -1
  343. package/packages/shared/src/app-hero-art.js +13 -0
  344. package/packages/shared/src/contracts/lifeops.d.ts +10 -0
  345. package/packages/shared/src/contracts/lifeops.d.ts.map +1 -1
  346. package/packages/shared/src/contracts/lifeops.js +5 -0
  347. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.d.ts.map +1 -1
  348. package/packages/typescript/src/features/advanced-capabilities/experience/actions/record-experience.js +46 -4
  349. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.d.ts.map +1 -1
  350. package/packages/typescript/src/features/advanced-capabilities/experience/evaluators/experienceEvaluator.js +34 -124
  351. package/packages/typescript/src/features/advanced-capabilities/experience/service.d.ts.map +1 -1
  352. package/packages/typescript/src/features/advanced-capabilities/experience/service.js +56 -0
  353. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts +7 -0
  354. package/packages/typescript/src/features/advanced-capabilities/experience/types.d.ts.map +1 -1
  355. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts +7 -0
  356. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.d.ts.map +1 -0
  357. package/packages/typescript/src/features/advanced-capabilities/experience/utils/experienceText.js +123 -0
  358. package/apps/app-training/src/ui/FineTuningView.d.ts +0 -5
  359. package/apps/app-training/src/ui/FineTuningView.d.ts.map +0 -1
  360. package/apps/app-training/src/ui/FineTuningView.js +0 -388
  361. package/apps/app-training/src/ui/fine-tuning-panels.d.ts +0 -111
  362. package/apps/app-training/src/ui/fine-tuning-panels.d.ts.map +0 -1
  363. package/apps/app-training/src/ui/fine-tuning-panels.js +0 -130
  364. package/apps/app-training/src/ui/index.d.ts +0 -3
  365. package/apps/app-training/src/ui/index.d.ts.map +0 -1
  366. package/apps/app-training/src/ui/index.js +0 -2
  367. package/packages/app-core/src/api/trusted-local-request.d.ts +0 -4
  368. package/packages/app-core/src/api/trusted-local-request.d.ts.map +0 -1
  369. package/packages/app-core/src/api/trusted-local-request.js +0 -176
@@ -3,11 +3,8 @@ import { ModelType } from "../../../../types/model.js";
3
3
  import { composePrompt } from "../../../../utils.js";
4
4
  import { EXTRACT_EXPERIENCES_TEMPLATE } from "../generated/prompts/typescript/prompts.js";
5
5
  import { ExperienceType, OutcomeType } from "../types";
6
+ import { detectExperienceDomain, findDuplicateExperienceByLearning, sanitizeExperienceText, } from "../utils/experienceText.js";
6
7
  const EXISTING_EXPERIENCE_LIMIT = 5;
7
- const DUPLICATE_EXPERIENCE_LIMIT = 5;
8
- const DUPLICATE_JACCARD_THRESHOLD = 0.45;
9
- const DUPLICATE_CONTAINMENT_THRESHOLD = 0.65;
10
- const DUPLICATE_SHARED_TERM_THRESHOLD = 4;
11
8
  const PASSIVE_ACTIONS = new Set([
12
9
  "REPLY",
13
10
  "NONE",
@@ -15,25 +12,6 @@ const PASSIVE_ACTIONS = new Set([
15
12
  "IGNORE",
16
13
  "WAIT",
17
14
  ]);
18
- const STOP_WORDS = new Set([
19
- "about",
20
- "after",
21
- "again",
22
- "before",
23
- "being",
24
- "from",
25
- "into",
26
- "that",
27
- "their",
28
- "them",
29
- "then",
30
- "there",
31
- "these",
32
- "this",
33
- "when",
34
- "with",
35
- "without",
36
- ]);
37
15
  export const experienceEvaluator = {
38
16
  name: "EXPERIENCE_EVALUATOR",
39
17
  similes: ["experience recorder", "learning evaluator", "self-reflection"],
@@ -128,6 +106,7 @@ export const experienceEvaluator = {
128
106
  .map((m) => m.content.text)
129
107
  .filter(Boolean)
130
108
  .join(" ");
109
+ const provenance = buildExperienceProvenance(message, recentMessages);
131
110
  const existingExperiences = await experienceService.findSimilarExperiences(conversationContext, EXISTING_EXPERIENCE_LIMIT);
132
111
  const extractionPrompt = composePrompt({
133
112
  state: {
@@ -162,7 +141,7 @@ export const experienceEvaluator = {
162
141
  continue;
163
142
  }
164
143
  const sanitizedLearning = sanitizeContext(rawLearning);
165
- const duplicate = await findDuplicateExperience(experienceService, sanitizedLearning);
144
+ const duplicate = await findDuplicateExperienceByLearning(experienceService, sanitizedLearning);
166
145
  if (duplicate) {
167
146
  skippedDuplicateCount++;
168
147
  logger.debug(`[experienceEvaluator] Skipping duplicate experience: "${sanitizedLearning.substring(0, 80)}..."`);
@@ -172,6 +151,9 @@ export const experienceEvaluator = {
172
151
  const experienceType = experienceTypeMap[normalizedType] ?? ExperienceType.LEARNING;
173
152
  const experienceTag = experienceType;
174
153
  const sanitizedContext = sanitizeContext(exp.context || "Conversation analysis");
154
+ const sanitizedReason = typeof exp.reasoning === "string" && exp.reasoning.trim().length > 0
155
+ ? sanitizeContext(exp.reasoning)
156
+ : undefined;
175
157
  await experienceService.recordExperience({
176
158
  type: experienceType,
177
159
  outcome: experienceType === ExperienceType.CORRECTION
@@ -181,10 +163,17 @@ export const experienceEvaluator = {
181
163
  action: "pattern_recognition",
182
164
  result: sanitizedLearning,
183
165
  learning: sanitizedLearning,
184
- domain: detectDomain(sanitizedLearning),
166
+ domain: detectExperienceDomain(sanitizedLearning),
185
167
  tags: ["extracted", "novel", experienceTag],
186
168
  confidence: Math.min(exp.confidence, 0.9), // Cap confidence
187
169
  importance: 0.8, // High importance for extracted experiences
170
+ sourceMessageIds: provenance.sourceMessageIds,
171
+ sourceRoomId: provenance.sourceRoomId,
172
+ sourceTriggerMessageId: provenance.sourceTriggerMessageId,
173
+ sourceTrajectoryId: provenance.sourceTrajectoryId,
174
+ sourceTrajectoryStepId: provenance.sourceTrajectoryStepId,
175
+ extractionMethod: "experience_evaluator",
176
+ extractionReason: sanitizedReason,
188
177
  });
189
178
  recordedCount++;
190
179
  logger.info(`[experienceEvaluator] Recorded novel experience: ${sanitizedLearning.substring(0, 100)}...`);
@@ -248,55 +237,12 @@ function formatExistingExperiences(experiences) {
248
237
  }
249
238
  return experiences
250
239
  .map((experience, index) => {
251
- const learning = sanitizeContext(experience.learning);
252
- const context = sanitizeContext(experience.context);
240
+ const learning = sanitizeExperienceText(experience.learning);
241
+ const context = sanitizeExperienceText(experience.context);
253
242
  return `${index + 1}. (${experience.type}/${experience.domain}, confidence ${experience.confidence.toFixed(2)}) When ${context}, learned: ${learning}`;
254
243
  })
255
244
  .join("\n");
256
245
  }
257
- async function findDuplicateExperience(experienceService, learning) {
258
- const similar = await experienceService.findSimilarExperiences(learning, DUPLICATE_EXPERIENCE_LIMIT);
259
- return (similar.find((experience) => isDuplicateLearning(learning, experience.learning)) ?? null);
260
- }
261
- function isDuplicateLearning(a, b) {
262
- const normalizedA = normalizeTextForDuplicateComparison(a);
263
- const normalizedB = normalizeTextForDuplicateComparison(b);
264
- if (!normalizedA || !normalizedB) {
265
- return false;
266
- }
267
- if (normalizedA === normalizedB) {
268
- return true;
269
- }
270
- if (Math.min(normalizedA.length, normalizedB.length) >= 24 &&
271
- (normalizedA.includes(normalizedB) || normalizedB.includes(normalizedA))) {
272
- return true;
273
- }
274
- const aTokens = tokenizeForDuplicateComparison(normalizedA);
275
- const bTokens = tokenizeForDuplicateComparison(normalizedB);
276
- if (aTokens.size < 4 || bTokens.size < 4) {
277
- return false;
278
- }
279
- const overlap = [...aTokens].filter((token) => bTokens.has(token)).length;
280
- const union = new Set([...aTokens, ...bTokens]).size;
281
- const jaccard = union > 0 ? overlap / union : 0;
282
- const containment = overlap / Math.min(aTokens.size, bTokens.size);
283
- return (jaccard >= DUPLICATE_JACCARD_THRESHOLD ||
284
- containment >= DUPLICATE_CONTAINMENT_THRESHOLD ||
285
- (overlap >= DUPLICATE_SHARED_TERM_THRESHOLD && containment >= 0.4));
286
- }
287
- function normalizeTextForDuplicateComparison(text) {
288
- return text
289
- .toLowerCase()
290
- .replace(/[^a-z0-9]+/g, " ")
291
- .replace(/\s+/g, " ")
292
- .trim();
293
- }
294
- function tokenizeForDuplicateComparison(text) {
295
- return new Set(text
296
- .split(" ")
297
- .map((token) => token.trim())
298
- .filter((token) => token.length > 3 && !STOP_WORDS.has(token)));
299
- }
300
246
  function parseExtractedExperiences(response) {
301
247
  const jsonMatch = response.match(/\[[\s\S]*\]/);
302
248
  if (!jsonMatch)
@@ -322,60 +268,24 @@ function getNumberSetting(runtime, key, fallback) {
322
268
  return fallback;
323
269
  }
324
270
  function sanitizeContext(text) {
325
- if (!text)
326
- return "Unknown context";
327
- // Remove user-specific details while preserving technical context
328
- return text
329
- .replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, "[EMAIL]") // emails
330
- .replace(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g, "[IP]") // IP addresses
331
- .replace(/\/Users\/[^/\s]+/g, "/Users/[USER]") // user directories
332
- .replace(/\/home\/[^/\s]+/g, "/home/[USER]") // home directories
333
- .replace(/\b(?:sk|pk|rk|gsk|ghp|gho|ghu|ghs|github_pat|xox[baprs])-?[A-Za-z0-9_-]{12,}\b/gi, "[TOKEN]") // common API keys/tokens
334
- .replace(/\b[A-Za-z0-9_-]{32,}\b/g, "[TOKEN]") // long opaque tokens
335
- .replace(/\b(user|person|someone|they)\s+(said|asked|told|mentioned)/gi, "when asked") // personal references
336
- .substring(0, 200); // limit length
271
+ return sanitizeExperienceText(text);
337
272
  }
338
- function detectDomain(text) {
339
- const domains = {
340
- shell: ["command", "terminal", "bash", "shell", "execute", "script", "cli"],
341
- coding: [
342
- "code",
343
- "function",
344
- "variable",
345
- "syntax",
346
- "programming",
347
- "debug",
348
- "typescript",
349
- "javascript",
350
- ],
351
- system: [
352
- "file",
353
- "directory",
354
- "process",
355
- "memory",
356
- "cpu",
357
- "system",
358
- "install",
359
- "package",
360
- ],
361
- network: [
362
- "http",
363
- "api",
364
- "request",
365
- "response",
366
- "url",
367
- "network",
368
- "fetch",
369
- "curl",
370
- ],
371
- data: ["json", "csv", "database", "query", "data", "sql", "table"],
372
- ai: ["model", "llm", "embedding", "prompt", "token", "inference"],
273
+ function buildExperienceProvenance(triggerMessage, recentMessages) {
274
+ const sourceMessageIds = recentMessages
275
+ .map((recentMessage) => recentMessage.id)
276
+ .filter((id) => typeof id === "string");
277
+ return {
278
+ sourceMessageIds: sourceMessageIds.length > 0 ? sourceMessageIds : undefined,
279
+ sourceRoomId: triggerMessage.roomId,
280
+ sourceTriggerMessageId: triggerMessage.id,
281
+ sourceTrajectoryId: readMetadataString(triggerMessage, "trajectoryId"),
282
+ sourceTrajectoryStepId: readMetadataString(triggerMessage, "trajectoryStepId"),
373
283
  };
374
- const lowerText = text.toLowerCase();
375
- for (const [domain, keywords] of Object.entries(domains)) {
376
- if (keywords.some((keyword) => lowerText.includes(keyword))) {
377
- return domain;
378
- }
379
- }
380
- return "general";
284
+ }
285
+ function readMetadataString(message, key) {
286
+ const metadata = asRecord(message.metadata);
287
+ const value = metadata?.[key];
288
+ return typeof value === "string" && value.trim().length > 0
289
+ ? value.trim()
290
+ : undefined;
381
291
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../../../../typescript/src/features/advanced-capabilities/experience/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACN,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEpB,cAAc,EAEd,MAAM,YAAY,CAAC;AAIpB,qBAAa,iBAAkB,SAAQ,OAAO;IAC7C,OAAgB,WAAW,EAAE,eAAe,CACS;IAC5C,qBAAqB,SACiE;IAE/F,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,mBAAmB,CAAqC;IAChE,OAAO,CAAC,iBAAiB,CAA6C;IACtE,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,OAAO,EAAE,aAAa;WAarB,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMtE,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,qBAAqB;YA4Ff,iBAAiB;IAiC/B,OAAO,CAAC,qBAAqB;IAkD7B,OAAO,CAAC,gBAAgB;YASV,eAAe;IAmBvB,gBAAgB,CACrB,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC;YAmER,sBAAsB;YAOtB,uBAAuB;IAyB/B,aAAa,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKnD,eAAe,CAAC,KAAK,GAAE,eAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAInE,gBAAgB,CACrB,EAAE,EAAE,IAAI,EACR,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA8DvB,gBAAgB,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5C,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAIvD,kBAAkB;IAgEhC,4FAA4F;IAC5F,OAAO,CAAC,YAAY;IAiDpB;;;;;;;;;;;OAWG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAoF5E,yFAAyF;IACzF,OAAO,CAAC,YAAY;IAUd,kBAAkB,CACvB,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,kBAAkB,CAAC;IA4C9B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,uBAAuB;IAyDzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B3B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../../../../../../typescript/src/features/advanced-capabilities/experience/service.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAa,IAAI,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC1E,OAAO,EACN,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,eAAe,EAEpB,cAAc,EAEd,MAAM,YAAY,CAAC;AAIpB,qBAAa,iBAAkB,SAAQ,OAAO;IAC7C,OAAgB,WAAW,EAAE,eAAe,CACS;IAC5C,qBAAqB,SACiE;IAE/F,OAAO,CAAC,WAAW,CAAoC;IACvD,OAAO,CAAC,mBAAmB,CAAqC;IAChE,OAAO,CAAC,iBAAiB,CAA6C;IACtE,OAAO,CAAC,gBAAgB,CAAwB;IAChD,OAAO,CAAC,YAAY,CAA+C;IACnE,OAAO,CAAC,YAAY,CAAyB;IAC7C,OAAO,CAAC,mBAAmB,CAAgC;gBAE/C,OAAO,EAAE,aAAa;WAarB,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAMtE,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,qBAAqB;YAqHf,iBAAiB;IAiC/B,OAAO,CAAC,qBAAqB;IAuE7B,OAAO,CAAC,gBAAgB;YASV,eAAe;IAmBvB,gBAAgB,CACrB,cAAc,EAAE,OAAO,CAAC,UAAU,CAAC,GACjC,OAAO,CAAC,UAAU,CAAC;YA4ER,sBAAsB;YAOtB,uBAAuB;IAyB/B,aAAa,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAKnD,eAAe,CAAC,KAAK,GAAE,eAAoB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAInE,gBAAgB,CACrB,EAAE,EAAE,IAAI,EACR,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAsEvB,gBAAgB,CAAC,EAAE,EAAE,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;IAc5C,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;YAIvD,kBAAkB;IAgEhC,4FAA4F;IAC5F,OAAO,CAAC,YAAY;IAiDpB;;;;;;;;;;;OAWG;IACG,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAoF5E,yFAAyF;IACzF,OAAO,CAAC,YAAY;IAUd,kBAAkB,CACvB,MAAM,CAAC,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,kBAAkB,CAAC;IA4C9B,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,2BAA2B;IAYnC,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,uBAAuB;IAyDzB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CA2B3B"}
@@ -180,6 +180,25 @@ export class ExperienceService extends Service {
180
180
  correctedBelief: typeof rawData?.correctedBelief === "string"
181
181
  ? rawData.correctedBelief
182
182
  : undefined,
183
+ sourceMessageIds: this.asOptionalUuidArray(rawData?.sourceMessageIds),
184
+ sourceRoomId: typeof rawData?.sourceRoomId === "string"
185
+ ? rawData.sourceRoomId
186
+ : undefined,
187
+ sourceTriggerMessageId: typeof rawData?.sourceTriggerMessageId === "string"
188
+ ? rawData.sourceTriggerMessageId
189
+ : undefined,
190
+ sourceTrajectoryId: typeof rawData?.sourceTrajectoryId === "string"
191
+ ? rawData.sourceTrajectoryId
192
+ : undefined,
193
+ sourceTrajectoryStepId: typeof rawData?.sourceTrajectoryStepId === "string"
194
+ ? rawData.sourceTrajectoryStepId
195
+ : undefined,
196
+ extractionMethod: typeof rawData?.extractionMethod === "string"
197
+ ? rawData.extractionMethod
198
+ : undefined,
199
+ extractionReason: typeof rawData?.extractionReason === "string"
200
+ ? rawData.extractionReason
201
+ : undefined,
183
202
  };
184
203
  }
185
204
  async generateEmbedding(experienceData) {
@@ -234,6 +253,27 @@ export class ExperienceService extends Service {
234
253
  if (experience.correctedBelief !== undefined) {
235
254
  data.correctedBelief = experience.correctedBelief;
236
255
  }
256
+ if (experience.sourceMessageIds !== undefined) {
257
+ data.sourceMessageIds = experience.sourceMessageIds;
258
+ }
259
+ if (experience.sourceRoomId !== undefined) {
260
+ data.sourceRoomId = experience.sourceRoomId;
261
+ }
262
+ if (experience.sourceTriggerMessageId !== undefined) {
263
+ data.sourceTriggerMessageId = experience.sourceTriggerMessageId;
264
+ }
265
+ if (experience.sourceTrajectoryId !== undefined) {
266
+ data.sourceTrajectoryId = experience.sourceTrajectoryId;
267
+ }
268
+ if (experience.sourceTrajectoryStepId !== undefined) {
269
+ data.sourceTrajectoryStepId = experience.sourceTrajectoryStepId;
270
+ }
271
+ if (experience.extractionMethod !== undefined) {
272
+ data.extractionMethod = experience.extractionMethod;
273
+ }
274
+ if (experience.extractionReason !== undefined) {
275
+ data.extractionReason = experience.extractionReason;
276
+ }
237
277
  return {
238
278
  id: experience.id,
239
279
  unique: true,
@@ -307,6 +347,15 @@ export class ExperienceService extends Service {
307
347
  supersedes: experienceData.supersedes,
308
348
  previousBelief: experienceData.previousBelief,
309
349
  correctedBelief: experienceData.correctedBelief,
350
+ sourceMessageIds: experienceData.sourceMessageIds
351
+ ? [...experienceData.sourceMessageIds]
352
+ : undefined,
353
+ sourceRoomId: experienceData.sourceRoomId,
354
+ sourceTriggerMessageId: experienceData.sourceTriggerMessageId,
355
+ sourceTrajectoryId: experienceData.sourceTrajectoryId,
356
+ sourceTrajectoryStepId: experienceData.sourceTrajectoryStepId,
357
+ extractionMethod: experienceData.extractionMethod,
358
+ extractionReason: experienceData.extractionReason,
310
359
  };
311
360
  this.setExperience(experience);
312
361
  // Save to memory service
@@ -401,6 +450,13 @@ export class ExperienceService extends Service {
401
450
  : existing.relatedExperiences
402
451
  ? [...existing.relatedExperiences]
403
452
  : undefined,
453
+ sourceMessageIds: "sourceMessageIds" in updates
454
+ ? updates.sourceMessageIds
455
+ ? [...updates.sourceMessageIds]
456
+ : undefined
457
+ : existing.sourceMessageIds
458
+ ? [...existing.sourceMessageIds]
459
+ : undefined,
404
460
  embedding,
405
461
  updatedAt: Date.now(),
406
462
  };
@@ -54,6 +54,13 @@ export interface Experience {
54
54
  correctedBelief?: string;
55
55
  embedding?: number[];
56
56
  memoryIds?: UUID[];
57
+ sourceMessageIds?: UUID[];
58
+ sourceRoomId?: UUID;
59
+ sourceTriggerMessageId?: UUID;
60
+ sourceTrajectoryId?: string;
61
+ sourceTrajectoryStepId?: string;
62
+ extractionMethod?: string;
63
+ extractionReason?: string;
57
64
  }
58
65
  export interface ExperienceQuery {
59
66
  query?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../typescript/src/features/advanced-capabilities/experience/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../../typescript/src/features/advanced-capabilities/experience/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { ExperienceService } from "../service.ts";
2
+ import type { Experience } from "../types.ts";
3
+ export declare function sanitizeExperienceText(text: string): string;
4
+ export declare function detectExperienceDomain(text: string): string;
5
+ export declare function findDuplicateExperienceByLearning(experienceService: ExperienceService, learning: string): Promise<Experience | null>;
6
+ export declare function isDuplicateLearning(a: string, b: string): boolean;
7
+ //# sourceMappingURL=experienceText.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"experienceText.d.ts","sourceRoot":"","sources":["../../../../../../../../../typescript/src/features/advanced-capabilities/experience/utils/experienceText.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AA0B9C,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB3D;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA8C3D;AAED,wBAAsB,iCAAiC,CACtD,iBAAiB,EAAE,iBAAiB,EACpC,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAW5B;AAED,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,OAAO,CAgCjE"}
@@ -0,0 +1,123 @@
1
+ const DUPLICATE_EXPERIENCE_LIMIT = 5;
2
+ const DUPLICATE_JACCARD_THRESHOLD = 0.45;
3
+ const DUPLICATE_CONTAINMENT_THRESHOLD = 0.65;
4
+ const DUPLICATE_SHARED_TERM_THRESHOLD = 4;
5
+ const STOP_WORDS = new Set([
6
+ "about",
7
+ "after",
8
+ "again",
9
+ "before",
10
+ "being",
11
+ "from",
12
+ "into",
13
+ "that",
14
+ "their",
15
+ "them",
16
+ "then",
17
+ "there",
18
+ "these",
19
+ "this",
20
+ "when",
21
+ "with",
22
+ "without",
23
+ ]);
24
+ export function sanitizeExperienceText(text) {
25
+ if (!text)
26
+ return "Unknown context";
27
+ return text
28
+ .replace(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b/g, "[EMAIL]")
29
+ .replace(/\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b/g, "[IP]")
30
+ .replace(/\/Users\/[^/\s]+/g, "/Users/[USER]")
31
+ .replace(/\/home\/[^/\s]+/g, "/home/[USER]")
32
+ .replace(/\b(?:sk|pk|rk|gsk|ghp|gho|ghu|ghs|github_pat|xox[baprs])-?[A-Za-z0-9_-]{12,}\b/gi, "[TOKEN]")
33
+ .replace(/\b[A-Za-z0-9_-]{32,}\b/g, "[TOKEN]")
34
+ .replace(/\b(user|person|someone|they)\s+(said|asked|told|mentioned)/gi, "when asked")
35
+ .substring(0, 200);
36
+ }
37
+ export function detectExperienceDomain(text) {
38
+ const domains = {
39
+ shell: ["command", "terminal", "bash", "shell", "execute", "script", "cli"],
40
+ coding: [
41
+ "code",
42
+ "function",
43
+ "variable",
44
+ "syntax",
45
+ "programming",
46
+ "debug",
47
+ "typescript",
48
+ "javascript",
49
+ ],
50
+ system: [
51
+ "file",
52
+ "directory",
53
+ "process",
54
+ "memory",
55
+ "cpu",
56
+ "system",
57
+ "install",
58
+ "package",
59
+ ],
60
+ network: [
61
+ "http",
62
+ "api",
63
+ "request",
64
+ "response",
65
+ "url",
66
+ "network",
67
+ "fetch",
68
+ "curl",
69
+ ],
70
+ data: ["json", "csv", "database", "query", "data", "sql", "table"],
71
+ ai: ["model", "llm", "embedding", "prompt", "token", "inference"],
72
+ };
73
+ const lowerText = text.toLowerCase();
74
+ for (const [domain, keywords] of Object.entries(domains)) {
75
+ if (keywords.some((keyword) => lowerText.includes(keyword))) {
76
+ return domain;
77
+ }
78
+ }
79
+ return "general";
80
+ }
81
+ export async function findDuplicateExperienceByLearning(experienceService, learning) {
82
+ const similar = await experienceService.findSimilarExperiences(learning, DUPLICATE_EXPERIENCE_LIMIT);
83
+ return (similar.find((experience) => isDuplicateLearning(learning, experience.learning)) ?? null);
84
+ }
85
+ export function isDuplicateLearning(a, b) {
86
+ const normalizedA = normalizeTextForDuplicateComparison(a);
87
+ const normalizedB = normalizeTextForDuplicateComparison(b);
88
+ if (!normalizedA || !normalizedB) {
89
+ return false;
90
+ }
91
+ if (normalizedA === normalizedB) {
92
+ return true;
93
+ }
94
+ if (Math.min(normalizedA.length, normalizedB.length) >= 24 &&
95
+ (normalizedA.includes(normalizedB) || normalizedB.includes(normalizedA))) {
96
+ return true;
97
+ }
98
+ const aTokens = tokenizeForDuplicateComparison(normalizedA);
99
+ const bTokens = tokenizeForDuplicateComparison(normalizedB);
100
+ if (aTokens.size < 4 || bTokens.size < 4) {
101
+ return false;
102
+ }
103
+ const overlap = [...aTokens].filter((token) => bTokens.has(token)).length;
104
+ const union = new Set([...aTokens, ...bTokens]).size;
105
+ const jaccard = union > 0 ? overlap / union : 0;
106
+ const containment = overlap / Math.min(aTokens.size, bTokens.size);
107
+ return (jaccard >= DUPLICATE_JACCARD_THRESHOLD ||
108
+ containment >= DUPLICATE_CONTAINMENT_THRESHOLD ||
109
+ (overlap >= DUPLICATE_SHARED_TERM_THRESHOLD && containment >= 0.4));
110
+ }
111
+ function normalizeTextForDuplicateComparison(text) {
112
+ return text
113
+ .toLowerCase()
114
+ .replace(/[^a-z0-9]+/g, " ")
115
+ .replace(/\s+/g, " ")
116
+ .trim();
117
+ }
118
+ function tokenizeForDuplicateComparison(text) {
119
+ return new Set(text
120
+ .split(" ")
121
+ .map((token) => token.trim())
122
+ .filter((token) => token.length > 3 && !STOP_WORDS.has(token)));
123
+ }
@@ -1,5 +0,0 @@
1
- import { type ReactNode } from "react";
2
- export declare function FineTuningView({ contentHeader, }?: {
3
- contentHeader?: ReactNode;
4
- }): import("react/jsx-runtime").JSX.Element;
5
- //# sourceMappingURL=FineTuningView.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FineTuningView.d.ts","sourceRoot":"","sources":["../../../../../../../apps/app-training/src/ui/FineTuningView.tsx"],"names":[],"mappings":"AAiBA,OAAO,EACL,KAAK,SAAS,EAKf,MAAM,OAAO,CAAC;AAoBf,wBAAgB,cAAc,CAAC,EAC7B,aAAa,GACd,GAAE;IACD,aAAa,CAAC,EAAE,SAAS,CAAC;CACtB,2CAwoBL"}