@burdenoff/fe-libs 2026.926.4 → 2026.927.1

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 (121) hide show
  1. package/dist/chrome/ProductPickerSheet.d.ts.map +1 -1
  2. package/dist/chrome/ProductPickerSheet.js +45 -44
  3. package/dist/chrome/ProductSwitcher.d.ts.map +1 -1
  4. package/dist/chrome/ProductSwitcher.js +83 -82
  5. package/dist/shared/assistant/conversation.d.ts +91 -3
  6. package/dist/shared/assistant/conversation.d.ts.map +1 -1
  7. package/dist/shared/assistant/gatewayClient.d.ts +15 -0
  8. package/dist/shared/assistant/gatewayClient.d.ts.map +1 -1
  9. package/dist/shared/assistant/gatewayClient.js +1 -1
  10. package/dist/shared/assistant/guardedStorage.d.ts +4 -2
  11. package/dist/shared/assistant/guardedStorage.d.ts.map +1 -1
  12. package/dist/shared/assistant/guardedStorage.js +1 -1
  13. package/dist/shared/assistant/history/historyApi.d.ts +38 -0
  14. package/dist/shared/assistant/history/historyApi.d.ts.map +1 -0
  15. package/dist/shared/assistant/history/historyApi.js +153 -0
  16. package/dist/shared/assistant/history/historyEngine.d.ts +96 -0
  17. package/dist/shared/assistant/history/historyEngine.d.ts.map +1 -0
  18. package/dist/shared/assistant/history/historyEngine.js +774 -0
  19. package/dist/shared/assistant/history/historyErrors.d.ts +72 -0
  20. package/dist/shared/assistant/history/historyErrors.d.ts.map +1 -0
  21. package/dist/shared/assistant/history/historyErrors.js +74 -0
  22. package/dist/shared/assistant/history/historyList.d.ts +115 -0
  23. package/dist/shared/assistant/history/historyList.d.ts.map +1 -0
  24. package/dist/shared/assistant/history/historyList.js +116 -0
  25. package/dist/shared/assistant/history/historyMapping.d.ts +65 -0
  26. package/dist/shared/assistant/history/historyMapping.d.ts.map +1 -0
  27. package/dist/shared/assistant/history/historyMapping.js +383 -0
  28. package/dist/shared/assistant/history/historyMerge.d.ts +65 -0
  29. package/dist/shared/assistant/history/historyMerge.d.ts.map +1 -0
  30. package/dist/shared/assistant/history/historyMerge.js +97 -0
  31. package/dist/shared/assistant/history/historyOperations.d.ts +24 -0
  32. package/dist/shared/assistant/history/historyOperations.d.ts.map +1 -0
  33. package/dist/shared/assistant/history/historyOperations.js +125 -0
  34. package/dist/shared/assistant/history/historyResume.d.ts +56 -0
  35. package/dist/shared/assistant/history/historyResume.d.ts.map +1 -0
  36. package/dist/shared/assistant/history/historyResume.js +55 -0
  37. package/dist/shared/assistant/history/historyStatus.d.ts +76 -0
  38. package/dist/shared/assistant/history/historyStatus.d.ts.map +1 -0
  39. package/dist/shared/assistant/history/historyStatus.js +47 -0
  40. package/dist/shared/assistant/history/historyStore.d.ts +192 -0
  41. package/dist/shared/assistant/history/historyStore.d.ts.map +1 -0
  42. package/dist/shared/assistant/history/historyStore.js +503 -0
  43. package/dist/shared/assistant/history/historyTimestamps.d.ts +11 -0
  44. package/dist/shared/assistant/history/historyTimestamps.d.ts.map +1 -0
  45. package/dist/shared/assistant/history/historyTimestamps.js +9 -0
  46. package/dist/shared/assistant/history/historyTypes.d.ts +256 -0
  47. package/dist/shared/assistant/history/historyTypes.d.ts.map +1 -0
  48. package/dist/shared/assistant/history/historyTypes.js +20 -0
  49. package/dist/shared/assistant/history/profileBoundStorage.d.ts +36 -0
  50. package/dist/shared/assistant/history/profileBoundStorage.d.ts.map +1 -0
  51. package/dist/shared/assistant/history/profileBoundStorage.js +74 -0
  52. package/dist/shared/assistant/history/stampRegistry.d.ts +84 -0
  53. package/dist/shared/assistant/history/stampRegistry.d.ts.map +1 -0
  54. package/dist/shared/assistant/history/stampRegistry.js +58 -0
  55. package/dist/shared/assistant/history/useAssistantServerHistory.d.ts +18 -0
  56. package/dist/shared/assistant/history/useAssistantServerHistory.d.ts.map +1 -0
  57. package/dist/shared/assistant/history/useAssistantServerHistory.js +12 -0
  58. package/dist/shared/assistant/i18nManifest.d.ts +18 -0
  59. package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
  60. package/dist/shared/assistant/i18nManifest.js +18 -0
  61. package/dist/shared/assistant/index.d.ts +16 -0
  62. package/dist/shared/assistant/index.d.ts.map +1 -1
  63. package/dist/shared/assistant/liveTurns.d.ts +7 -0
  64. package/dist/shared/assistant/liveTurns.d.ts.map +1 -1
  65. package/dist/shared/assistant/liveTurns.js +35 -32
  66. package/dist/shared/assistant/spokenTurns.d.ts +20 -0
  67. package/dist/shared/assistant/spokenTurns.d.ts.map +1 -1
  68. package/dist/shared/assistant/spokenTurns.js +13 -8
  69. package/dist/shared/assistant/store.d.ts +35 -1
  70. package/dist/shared/assistant/store.d.ts.map +1 -1
  71. package/dist/shared/assistant/store.js +93 -24
  72. package/dist/shared/assistant/ui/AIAssistantPanel.d.ts +16 -0
  73. package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
  74. package/dist/shared/assistant/ui/AIAssistantPanel.js +63 -60
  75. package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
  76. package/dist/shared/assistant/ui/AssistantChatArea.js +730 -672
  77. package/dist/shared/assistant/ui/AssistantConversationList.d.ts +17 -0
  78. package/dist/shared/assistant/ui/AssistantConversationList.d.ts.map +1 -1
  79. package/dist/shared/assistant/ui/AssistantConversationList.js +252 -145
  80. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts +36 -0
  81. package/dist/shared/assistant/ui/AssistantHistoryNotices.d.ts.map +1 -0
  82. package/dist/shared/assistant/ui/AssistantHistoryNotices.js +103 -0
  83. package/dist/shared/assistant/ui/AssistantOverlay.d.ts +4 -0
  84. package/dist/shared/assistant/ui/AssistantOverlay.d.ts.map +1 -1
  85. package/dist/shared/assistant/ui/AssistantOverlay.js +97 -94
  86. package/dist/shared/assistant/ui/AssistantSpokenTurnsNotice.d.ts +5 -3
  87. package/dist/shared/assistant/ui/AssistantSpokenTurnsNotice.d.ts.map +1 -1
  88. package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts +6 -0
  89. package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts.map +1 -1
  90. package/dist/shared/assistant/ui/composer/AssistantComposer.js +54 -54
  91. package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts +9 -0
  92. package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
  93. package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +37 -32
  94. package/dist/shared/assistant/voice/turnVisibility.d.ts +7 -5
  95. package/dist/shared/assistant/voice/turnVisibility.d.ts.map +1 -1
  96. package/dist/shared/assistant/voice/voiceTranscript.d.ts +3 -2
  97. package/dist/shared/assistant/voice/voiceTranscript.d.ts.map +1 -1
  98. package/dist/shared/config/index.d.ts +3 -1
  99. package/dist/shared/config/index.d.ts.map +1 -1
  100. package/dist/shared/config/productSlug.d.ts +36 -0
  101. package/dist/shared/config/productSlug.d.ts.map +1 -0
  102. package/dist/shared/config/productSlug.js +23 -0
  103. package/dist/shared/config/products.d.ts +8 -1
  104. package/dist/shared/config/products.d.ts.map +1 -1
  105. package/dist/shared/config/products.js +21 -14
  106. package/dist/shared/hooks/shell/useProducts.d.ts +8 -0
  107. package/dist/shared/hooks/shell/useProducts.d.ts.map +1 -1
  108. package/dist/shared/hooks/shell/useProducts.js +46 -42
  109. package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
  110. package/dist/shared/providers/AppShellProvider.js +228 -227
  111. package/dist/shared/providers/shell/ThemeProvider.d.ts +1 -1
  112. package/dist/shared/providers/shell/ThemeProvider.d.ts.map +1 -1
  113. package/dist/shared/providers/shell/ThemeProvider.js +58 -57
  114. package/dist/shared/providers/shell/brandAttribute.d.ts +11 -0
  115. package/dist/shared/providers/shell/brandAttribute.d.ts.map +1 -0
  116. package/dist/shared/providers/shell/brandAttribute.js +7 -0
  117. package/dist/shared-assistant.js +153 -137
  118. package/dist/shared-config.js +11 -10
  119. package/dist/shared.js +121 -120
  120. package/package.json +2 -2
  121. package/src/vite/types.ts +4 -1
@@ -144,7 +144,23 @@ export * from './ui/AssistantMoreMenu';
144
144
  export * from './ui/AssistantHeader';
145
145
  export * from './ui/AssistantConversationList';
146
146
  export * from './ui/AssistantEmptyState';
147
+ export * from './ui/AssistantHistoryNotices';
147
148
  export * from './exportConversation';
149
+ export * from './history/historyTypes';
150
+ export * from './history/historyTimestamps';
151
+ export * from './history/historyOperations';
152
+ export * from './history/historyApi';
153
+ export * from './history/historyErrors';
154
+ export * from './history/historyMapping';
155
+ export * from './history/profileBoundStorage';
156
+ export * from './history/historyStore';
157
+ export * from './history/historyStatus';
158
+ export * from './history/stampRegistry';
159
+ export * from './history/historyMerge';
160
+ export * from './history/historyList';
161
+ export * from './history/historyEngine';
162
+ export * from './history/historyResume';
163
+ export * from './history/useAssistantServerHistory';
148
164
  export * from './ui/AssistantMessageItem';
149
165
  export * from './ui/AssistantMessageList';
150
166
  export * from './ui/AssistantTurnActivity';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAGH,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AAGxB,cAAc,wBAAwB,CAAC;AAKvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,+BAA+B,CAAC;AAG9C,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AAGpC,cAAc,gBAAgB,CAAC;AAE/B,cAAc,aAAa,CAAC;AAK5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAG3C,cAAc,QAAQ,CAAC;AAIvB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,oBAAoB,CAAC;AAEnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AAGvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,SAAS,CAAC;AACxB,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAG/B,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AAGrC,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qCAAqC,CAAC;AACpD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAChD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,0CAA0C,CAAC;AACzD,cAAc,6BAA6B,CAAC;AAC5C,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,yCAAyC,CAAC;AACxD,cAAc,oBAAoB,CAAC;AACnC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,yCAAyC,CAAC;AACxD,cAAc,qCAAqC,CAAC;AACpD,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,wCAAwC,CAAC;AACvD,cAAc,yBAAyB,CAAC;AACxC,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,kCAAkC,CAAC;AACjD,cAAc,0BAA0B,CAAC;AAGzC,cAAc,WAAW,CAAC;AAE1B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AAErC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAE3C,cAAc,kCAAkC,CAAC;AAEjD,cAAc,yBAAyB,CAAC;AACxC,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAElC,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,WAAW,CAAC;AAC1B,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,2BAA2B,CAAC;AAE1C,cAAc,mBAAmB,CAAC;AAClC,cAAc,2BAA2B,CAAC;AAE1C,cAAc,iCAAiC,CAAC;AAGhD,cAAc,OAAO,CAAC;AACtB,cAAc,yBAAyB,CAAC;AACxC,cAAc,iCAAiC,CAAC;AAChD,cAAc,qCAAqC,CAAC;AACpD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AAGtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,13 @@ import { Message } from './conversation';
3
3
  export declare function markLiveTurn(messageId: string): void;
4
4
  /** Did this page load start the turn whose reply is `messageId`? */
5
5
  export declare function isLiveTurn(messageId: string): boolean;
6
+ /**
7
+ * Forget these replies' turns: their conversation left this device's store
8
+ * (evicted, or deleted elsewhere). Should it be opened again in this page
9
+ * load, its replies are read back from the server under the same ids — as
10
+ * records, like every other reopened reply (BOFF-7335).
11
+ */
12
+ export declare function forgetLiveTurns(messageIds: Iterable<string>): void;
6
13
  /** An approval the page is recording with the sandbox right now. */
7
14
  export interface ApprovalInFlight {
8
15
  /** The conversation whose card was approved. */
@@ -1 +1 @@
1
- {"version":3,"file":"liveTurns.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/liveTurns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA0B9C,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB;AAwBD,sDAAsD;AACtD,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAE7D;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAK1E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAKzE;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAIpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,gCAAgC,QAAiB,CAAC;AAoB/D;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,WAAW,CAAC,MAAM,CAAC,CASrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,WAAW,CAAC,MAAM,CAAC,CAWrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,WAAW,CAAC,MAAM,CAAC,CAYrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,MAAM,GAAG,IAAI,CAEf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAoB,GAClD,MAAM,GAAG,IAAI,CAKf;AA4CD,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE;IACJ,iDAAiD;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,yCAAyC;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC,GACA,sBAAsB,GAAG,IAAI,CAe/B"}
1
+ {"version":3,"file":"liveTurns.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/liveTurns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AA0B9C,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEpD;AAED,oEAAoE;AACpE,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAElE;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,cAAc,EAAE,MAAM,CAAC;IACvB,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;CACnB;AAwBD,sDAAsD;AACtD,wBAAgB,mBAAmB,IAAI,gBAAgB,GAAG,IAAI,CAE7D;AAED,gFAAgF;AAChF,wBAAgB,yBAAyB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAK1E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,OAAO,CAKzE;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,IAAI,CAIpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,gCAAgC,QAAiB,CAAC;AAoB/D;;;;;;;;;;GAUG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,WAAW,CAAC,MAAM,CAAC,CASrB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,WAAW,CAAC,MAAM,CAAC,CAWrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,WAAW,CAAC,MAAM,CAAC,CAYrB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,MAAM,GAAG,IAAI,CAEf;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,MAAM,GAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAoB,GAClD,MAAM,GAAG,IAAI,CAKf;AA4CD,4DAA4D;AAC5D,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,SAAS,OAAO,EAAE,EAC5B,IAAI,EAAE;IACJ,iDAAiD;IACjD,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,yCAAyC;IACzC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;CACzC,GACA,sBAAsB,GAAG,IAAI,CAe/B"}
@@ -6,49 +6,52 @@ function t(t) {
6
6
  function n(t) {
7
7
  return e.has(t);
8
8
  }
9
- var r = null, i = /* @__PURE__ */ new Set();
10
- function a() {
11
- return r;
9
+ function r(t) {
10
+ for (let n of t) e.delete(n);
12
11
  }
13
- function o(e) {
14
- return i.add(e), () => {
15
- i.delete(e);
16
- };
12
+ var i = null, a = /* @__PURE__ */ new Set();
13
+ function o() {
14
+ return i;
17
15
  }
18
16
  function s(e) {
19
- if (r !== null) return !1;
20
- r = e;
21
- for (let e of i) e();
22
- return !0;
17
+ return a.add(e), () => {
18
+ a.delete(e);
19
+ };
23
20
  }
24
21
  function c(e) {
25
- if (r === e) {
26
- r = null;
27
- for (let e of i) e();
22
+ if (i !== null) return !1;
23
+ i = e;
24
+ for (let e of a) e();
25
+ return !0;
26
+ }
27
+ function l(e) {
28
+ if (i === e) {
29
+ i = null;
30
+ for (let e of a) e();
28
31
  }
29
32
  }
30
- var l = 900 * 1e3;
31
- function u(e) {
33
+ var u = 900 * 1e3;
34
+ function d(e) {
32
35
  return e.role !== "system" && !e.metadata?.localAction;
33
36
  }
34
- function d(e) {
37
+ function f(e) {
35
38
  for (let t = e.length - 1; t >= 0; --t) {
36
39
  let n = e[t];
37
40
  if (n.role === "assistant" && !n.metadata?.localAction) return n;
38
41
  }
39
42
  return null;
40
43
  }
41
- function f(e) {
44
+ function p(e) {
42
45
  let t = /* @__PURE__ */ new Set(), n = null;
43
- for (let r of e) u(r) && (r.role === "user" ? n = r : n?.metadata?.approvalFollowUp && t.add(r.id));
46
+ for (let r of e) d(r) && (r.role === "user" ? n = r : n?.metadata?.approvalFollowUp && t.add(r.id));
44
47
  return t;
45
48
  }
46
- function p(e) {
49
+ function m(e) {
47
50
  let t = /* @__PURE__ */ new Set();
48
51
  for (let n of e) n.role === "assistant" && n.metadata?.pendingWrite && n.metadata.pendingWriteApprovedAt && t.add(n.id);
49
52
  return t;
50
53
  }
51
- function m(e) {
54
+ function h(e) {
52
55
  let t = /* @__PURE__ */ new Set();
53
56
  for (let n of e) {
54
57
  let e = n.metadata?.approvedReplyId;
@@ -56,14 +59,14 @@ function m(e) {
56
59
  }
57
60
  return t;
58
61
  }
59
- function h(e) {
60
- return d(e)?.id ?? null;
62
+ function g(e) {
63
+ return f(e)?.id ?? null;
61
64
  }
62
- function g(e, t = n) {
63
- let r = d(e);
64
- return !r || !t(r.id) || f(e).has(r.id) ? null : r.id;
65
+ function _(e, t = n) {
66
+ let r = f(e);
67
+ return !r || !t(r.id) || p(e).has(r.id) ? null : r.id;
65
68
  }
66
- function _(e, t, n) {
69
+ function v(e, t, n) {
67
70
  let r = Date.parse(t.timestamp);
68
71
  if (!Number.isFinite(r)) return NaN;
69
72
  let i = t.metadata?.sandboxId, a = null;
@@ -79,16 +82,16 @@ function _(e, t, n) {
79
82
  }
80
83
  return a ?? r;
81
84
  }
82
- function v(e, t) {
83
- let r = d(e), i = r?.metadata?.pendingWrite?.reference;
85
+ function y(e, t) {
86
+ let r = f(e), i = r?.metadata?.pendingWrite?.reference;
84
87
  if (!r || !i || r.metadata?.pendingWriteApprovedAt || !(t.isLive ?? n)(r.id)) return null;
85
88
  let a = r.metadata?.sessionId;
86
89
  if (!a || a !== t.sessionId) return null;
87
90
  let o = r.metadata?.sandboxId;
88
91
  if (!o || o !== t.sandboxId) return null;
89
- let s = _(e, r, i);
92
+ let s = v(e, r, i);
90
93
  if (!Number.isFinite(s)) return null;
91
- let c = s + l;
94
+ let c = s + u;
92
95
  return t.nowMs >= c ? null : {
93
96
  messageId: r.id,
94
97
  reference: i,
@@ -96,4 +99,4 @@ function v(e, t) {
96
99
  };
97
100
  }
98
101
  //#endregion
99
- export { l as PENDING_WRITE_APPROVAL_WINDOW_MS, f as approvalFollowUpReplyIds, p as approvedPendingWriteIds, s as beginApprovalInFlight, c as endApprovalInFlight, a as getApprovalInFlight, m as goAheadSentReplyIds, n as isLiveTurn, t as markLiveTurn, h as newestModelReplyId, v as resolveApprovablePendingWrite, g as resolveRetryableMessageId, o as subscribeApprovalInFlight };
102
+ export { u as PENDING_WRITE_APPROVAL_WINDOW_MS, p as approvalFollowUpReplyIds, m as approvedPendingWriteIds, c as beginApprovalInFlight, l as endApprovalInFlight, r as forgetLiveTurns, o as getApprovalInFlight, h as goAheadSentReplyIds, n as isLiveTurn, t as markLiveTurn, g as newestModelReplyId, y as resolveApprovablePendingWrite, _ as resolveRetryableMessageId, s as subscribeApprovalInFlight };
@@ -22,4 +22,24 @@ export declare function spokenTurnText(message: Message, processing: AssistantCo
22
22
  * agree for every turn that is listed.
23
23
  */
24
24
  export declare function countSpokenTurns(voiceMessages: readonly Message[], processing: AssistantConversationProcessing | null | undefined, tr: AssistantTr): number;
25
+ /**
26
+ * The spoken messages not yet carried into the typed thread: those AFTER the
27
+ * newest "Continue in chat" note (the system message carrying
28
+ * `continuedVoiceTurns`). "Continue in chat" is offered while any of them
29
+ * counts (`countSpokenTurns`), and its note names only them.
30
+ *
31
+ * ★★ By POSITION, never by the note's number (BOFF-7335). That number is how
32
+ * many spoken turns the WRITING device held, and it travels with the note in
33
+ * server history — but a device that reads the conversation back holds only
34
+ * its newest page. There the number overshot what was held: the action was
35
+ * withheld though turns after the note had never been carried, and once
36
+ * offered it cut the list at the wrong turn and wrote its own smaller count
37
+ * back, so the device holding everything offered its turns again. Messages are
38
+ * held in order, and what is read from the server is always a contiguous run
39
+ * ending at the newest, so "after the newest note" is the same set everywhere.
40
+ *
41
+ * The note is still WRITTEN with the count (`continuedVoiceTurns`): an older
42
+ * build of the panel reads that, and a note is known by it.
43
+ */
44
+ export declare function spokenMessagesSinceContinueNote(messages: readonly Message[]): Message[];
25
45
  //# sourceMappingURL=spokenTurns.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spokenTurns.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/spokenTurns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAI1C;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,EAC9D,EAAE,EAAE,WAAW,GACd,MAAM,CAIR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,SAAS,OAAO,EAAE,EACjC,UAAU,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,EAC9D,EAAE,EAAE,WAAW,GACd,MAAM,CAOR"}
1
+ {"version":3,"file":"spokenTurns.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/spokenTurns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAK1C;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,OAAO,EAChB,UAAU,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,EAC9D,EAAE,EAAE,WAAW,GACd,MAAM,CAIR;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAC9B,aAAa,EAAE,SAAS,OAAO,EAAE,EACjC,UAAU,EAAE,+BAA+B,GAAG,IAAI,GAAG,SAAS,EAC9D,EAAE,EAAE,WAAW,GACd,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,+BAA+B,CAC7C,QAAQ,EAAE,SAAS,OAAO,EAAE,GAC3B,OAAO,EAAE,CAOX"}
@@ -1,12 +1,17 @@
1
- import { isTurnInFlight as e } from "./turnState.js";
2
- import { getAssistantDisplayContent as t } from "./displayContent.js";
3
- import { parseToolActivity as n } from "./ui/AssistantToolActivity.js";
1
+ import { voiceTurnsOnly as e } from "./voice/turnVisibility.js";
2
+ import { isTurnInFlight as t } from "./turnState.js";
3
+ import { getAssistantDisplayContent as n } from "./displayContent.js";
4
+ import { parseToolActivity as r } from "./ui/AssistantToolActivity.js";
4
5
  //#region src/shared/assistant/spokenTurns.ts
5
- function r(e, r, i) {
6
- return n(t(e, r, i).text).text.trim();
6
+ function i(e, t, i) {
7
+ return r(n(e, t, i).text).text.trim();
7
8
  }
8
- function i(t, n, i) {
9
- return t.filter((t) => t.role !== "user" && t.role !== "assistant" ? !1 : n?.messageId === t.id && e(n.status) || r(t, n, i).length > 0).length;
9
+ function a(e, n, r) {
10
+ return e.filter((e) => e.role !== "user" && e.role !== "assistant" ? !1 : n?.messageId === e.id && t(n.status) || i(e, n, r).length > 0).length;
11
+ }
12
+ function o(t) {
13
+ for (let n = t.length - 1; n >= 0; --n) if (typeof t[n]?.metadata?.continuedVoiceTurns == "number") return e(t.slice(n + 1));
14
+ return e(t);
10
15
  }
11
16
  //#endregion
12
- export { i as countSpokenTurns, r as spokenTurnText };
17
+ export { a as countSpokenTurns, o as spokenMessagesSinceContinueNote, i as spokenTurnText };
@@ -1,4 +1,4 @@
1
- import { AssistantConversationProcessing, AssistantConversationStatus, AssistantMessageMetadata, AssistantSandboxRuntime, AssistantSandboxStatus, AssistantTurnStage, Conversation, ConversationRouting, Message } from './conversation';
1
+ import { AssistantConversationProcessing, AssistantConversationStatus, AssistantMessageMetadata, AssistantSandboxRuntime, AssistantSandboxStatus, AssistantTurnStage, Conversation, ConversationRouting, ConversationSyncStamp, Message, MessageHistoryState } from './conversation';
2
2
  import { AssistantMode } from './types';
3
3
  interface AssistantState {
4
4
  conversations: Conversation[];
@@ -140,6 +140,40 @@ interface AssistantState {
140
140
  setReplyLanguage: (code: string | null) => void;
141
141
  /** `null` clears the pick for that language, restoring the ranked default. */
142
142
  setPreferredVoice: (languageCode: string, voiceName: string | null) => void;
143
+ /**
144
+ * Add a conversation read from the server (a header being opened). A
145
+ * conversation already here is left exactly as it is: its local messages
146
+ * are the richer copy.
147
+ */
148
+ upsertRemoteConversation: (conversation: Conversation) => void;
149
+ /**
150
+ * Replace a server-backed conversation's messages with a merge the engine
151
+ * built (`mergeHistoryMessages`), and patch its stamp — in one set. A
152
+ * conversation that is gone, or has no stamp, is left alone.
153
+ */
154
+ applyHistoryEntries: (conversationId: string, messages: readonly Message[], syncPatch: Partial<ConversationSyncStamp>) => void;
155
+ /** Record where these messages stand with the server, and their server positions once known. */
156
+ markHistoryState: (conversationId: string, messageIds: readonly string[], state: MessageHistoryState, seqs?: Readonly<Record<string, number>>) => void;
157
+ /**
158
+ * Rewrite a stamped conversation's stamp. With `title`, the server's title
159
+ * is adopted too — unless it was renamed here (`titleLocked`).
160
+ */
161
+ patchConversationSync: (conversationId: string, patch: (sync: ConversationSyncStamp) => ConversationSyncStamp, options?: {
162
+ title?: string | null;
163
+ }) => void;
164
+ /**
165
+ * Remove conversations deleted ELSEWHERE (another tab, another device): no
166
+ * tombstone, nothing queued — the delete has already happened. The open
167
+ * conversation is replaced the way `deleteConversation` replaces it: by one
168
+ * that may open here (`historyOpenFilter`).
169
+ */
170
+ removeConversationsSilently: (ids: readonly string[]) => void;
171
+ /**
172
+ * Drop server-backed conversations from this device's cache. NOT a delete:
173
+ * the server keeps them and the list still shows them (from their headers).
174
+ * The open conversation is never evicted.
175
+ */
176
+ evictConversations: (ids: readonly string[]) => void;
143
177
  }
144
178
  /** The sandbox a request addresses, with the mode it was provisioned for. */
145
179
  export interface AssistantModeSandboxTarget {
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EACV,+BAA+B,EAC/B,2BAA2B,EAC3B,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,OAAO,EACR,MAAM,gBAAgB,CAAC;AAKxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAO7C,UAAU,cAAc;IACtB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,IAAI,EAAE,aAAa,CAAC;IACpB;;;;;;;;;;OAUG;IACH,WAAW,EAAE,OAAO,CAAC;IACrB,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,+BAA+B,CAAC,CAAC;IAC5E,oBAAoB,EAAE,OAAO,CAAC;IAC9B,+CAA+C;IAC/C,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,CAAC;IACzE;;;;;OAKG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,sBAAsB,EAAE,SAAS,aAAa,EAAE,CAAC;IACjD;;;;;;;OAOG;IACH,gBAAgB,EAAE,OAAO,CAAC;IAC1B;;;;;OAKG;IACH,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC;;;;OAIG;IACH,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B;;;;;;;;;;OAUG;IACH,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGxC;;;;;OAKG;IACH,kBAAkB,EAAE,CAClB,KAAK,CAAC,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,mBAAmB,CAAA;KAAE,KACzC,MAAM,CAAC;IACZ,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,kBAAkB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,qBAAqB,EAAE,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,OAAO,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACvC,6EAA6E;IAC7E,mBAAmB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3E,yDAAyD;IACzD,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C;;;;;OAKG;IACH,iBAAiB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACzE,UAAU,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/D,aAAa,EAAE,CACb,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,KACZ,IAAI,CAAC;IACV,YAAY,EAAE,CACZ,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,KACpB,IAAI,CAAC;IACV;;;;;;;;OAQG;IACH,oBAAoB,EAAE,CACpB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,CAAC,wBAAwB,CAAC,KACrC,IAAI,CAAC;IACV;;;;;;;OAOG;IACH,yBAAyB,EAAE,CACzB,cAAc,EAAE,MAAM,EACtB,MAAM,EAAE,2BAA2B,EACnC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,EACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,EACrB,KAAK,CAAC,EAAE,kBAAkB,GAAG,IAAI,KAC9B,IAAI,CAAC;IACV,2BAA2B,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9D,sBAAsB,EAAE,MAAM,IAAI,CAAC;IACnC,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACjD,iBAAiB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,mBAAmB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACzE,qBAAqB,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;IACxD,UAAU,EAAE,CACV,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,MAAM,EAAE,sBAAsB,KAC3B,IAAI,CAAC;IACV,YAAY,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,oEAAoE;IACpE,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,4CAA4C;IAC5C,oBAAoB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IAC1C,yEAAyE;IACzE,oBAAoB,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IACpD,sEAAsE;IACtE,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,8FAA8F;IAC9F,oBAAoB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAChD,8EAA8E;IAC9E,iBAAiB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC7E;AAMD,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,IAAI,EAAE,aAAa,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC,CAAC,CAAC;CAC1E,GAAG,0BAA0B,GAAG,IAAI,CAGpC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,4BAA4B,CAAC,CAAC,SAAS,MAAM,EAC3D,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,CAAC,GACT,CAAC,CAeH;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAua7B,CAAC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/store.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,56 @@
1
1
  import { createProfileScopedStorage as e } from "../utils/profileScopedStorage.js";
2
2
  import "../../shared-utils.js";
3
- import { LEGACY_WRITE_CONSENT_KEY as t, restoreAcknowledgedWriteModes as n, withWriteModeAcknowledged as r } from "./writeModeConsent.js";
4
- import { restoreAutoRouting as i } from "./autoRouting.js";
5
- import { createGuardedAssistantStorage as a } from "./guardedStorage.js";
6
- import { create as o } from "zustand";
7
- import { persist as s } from "zustand/middleware";
3
+ import { forgetLiveTurns as t } from "./liveTurns.js";
4
+ import { LEGACY_WRITE_CONSENT_KEY as n, restoreAcknowledgedWriteModes as r, withWriteModeAcknowledged as i } from "./writeModeConsent.js";
5
+ import { restoreAutoRouting as a } from "./autoRouting.js";
6
+ import { createGuardedAssistantStorage as o } from "./guardedStorage.js";
7
+ import { getHistoryStamp as s, historyOpenFilter as c, notifyAssistantStorageFull as l } from "./history/stampRegistry.js";
8
+ import { create as u } from "zustand";
9
+ import { persist as d } from "zustand/middleware";
8
10
  //#region src/shared/assistant/store.ts
9
- function c() {
11
+ function f() {
10
12
  return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
11
13
  }
12
- function l(e) {
14
+ function p(e) {
13
15
  let t = e.sandboxesByMode[e.mode]?.sandboxId;
14
16
  return t ? {
15
17
  sandboxId: t,
16
18
  mode: e.mode
17
19
  } : null;
18
20
  }
19
- function u(e, r) {
20
- let a = typeof e == "object" && e ? Object.fromEntries(Object.entries(e).filter(([e]) => e !== t)) : {};
21
+ function m(e, t) {
22
+ let i = typeof e == "object" && e ? Object.fromEntries(Object.entries(e).filter(([e]) => e !== n)) : {};
21
23
  return {
22
- ...r,
23
- ...a,
24
- acknowledgedWriteModes: n(e),
25
- autoRouting: i(e)
24
+ ...t,
25
+ ...i,
26
+ acknowledgedWriteModes: r(e),
27
+ autoRouting: a(e)
26
28
  };
27
29
  }
28
- var d = o()(s((e, t) => ({
30
+ function h(e, n, r) {
31
+ let i = new Set(n);
32
+ r && e.activeConversationId !== null && i.delete(e.activeConversationId);
33
+ let a = e.conversations.filter((e) => i.has(e.id));
34
+ if (a.length === 0) return {};
35
+ t(a.flatMap((e) => e.messages.map((e) => e.id)));
36
+ let o = e.conversations.filter((e) => !i.has(e.id)), s = { ...e.processingByConversationId };
37
+ for (let e of i) delete s[e];
38
+ if (e.activeConversationId === null || !i.has(e.activeConversationId)) return {
39
+ conversations: o,
40
+ processingByConversationId: s
41
+ };
42
+ let l = o.find(c());
43
+ return {
44
+ conversations: o,
45
+ processingByConversationId: s,
46
+ activeConversationId: l?.id ?? null,
47
+ ...l ? {
48
+ mode: l.mode,
49
+ autoRouting: l.routedBy === "auto"
50
+ } : {}
51
+ };
52
+ }
53
+ var g = u()(d((e, t) => ({
29
54
  conversations: [],
30
55
  activeConversationId: null,
31
56
  mode: "assistant",
@@ -40,7 +65,7 @@ var d = o()(s((e, t) => ({
40
65
  replyLanguage: null,
41
66
  preferredVoices: {},
42
67
  createConversation: (n, r, i) => {
43
- let a = c(), o = (/* @__PURE__ */ new Date()).toISOString(), s = r === void 0 && t().autoRouting, l = i?.routedBy ?? (s ? "auto" : void 0), u = r ?? (s ? "assistant" : t().mode), d = {
68
+ let a = f(), o = (/* @__PURE__ */ new Date()).toISOString(), c = r === void 0 && t().autoRouting, l = i?.routedBy ?? (c ? "auto" : void 0), u = r ?? (c ? "assistant" : t().mode), d = s(), p = {
44
69
  id: a,
45
70
  title: n || "New conversation",
46
71
  mode: u,
@@ -48,10 +73,15 @@ var d = o()(s((e, t) => ({
48
73
  backendSessionId: null,
49
74
  createdAt: o,
50
75
  updatedAt: o,
51
- ...l ? { routedBy: l } : {}
76
+ ...l ? { routedBy: l } : {},
77
+ ...d ? { sync: {
78
+ v: 1,
79
+ ...d,
80
+ origin: "created"
81
+ } } : {}
52
82
  };
53
83
  return e((e) => ({
54
- conversations: [d, ...e.conversations],
84
+ conversations: [p, ...e.conversations],
55
85
  activeConversationId: a,
56
86
  conversationListOpen: !1,
57
87
  mode: u,
@@ -64,7 +94,7 @@ var d = o()(s((e, t) => ({
64
94
  conversations: n,
65
95
  processingByConversationId: r
66
96
  };
67
- let i = n[0];
97
+ let i = n.find(c());
68
98
  return {
69
99
  conversations: n,
70
100
  processingByConversationId: r,
@@ -78,7 +108,11 @@ var d = o()(s((e, t) => ({
78
108
  renameConversation: (t, n) => e((e) => ({ conversations: e.conversations.map((e) => e.id === t ? {
79
109
  ...e,
80
110
  title: n,
81
- updatedAt: (/* @__PURE__ */ new Date()).toISOString()
111
+ updatedAt: (/* @__PURE__ */ new Date()).toISOString(),
112
+ ...e.sync ? { sync: {
113
+ ...e.sync,
114
+ titleLocked: !0
115
+ } } : {}
82
116
  } : e) })),
83
117
  setActiveConversation: (t) => e((e) => {
84
118
  let n = e.conversations.find((e) => e.id === t);
@@ -234,17 +268,52 @@ var d = o()(s((e, t) => ({
234
268
  let n = t().pendingPrompt;
235
269
  return n !== null && e({ pendingPrompt: null }), n;
236
270
  },
237
- acknowledgeWriteMode: (t) => e((e) => ({ acknowledgedWriteModes: r(e.acknowledgedWriteModes, t) })),
271
+ acknowledgeWriteMode: (t) => e((e) => ({ acknowledgedWriteModes: i(e.acknowledgedWriteModes, t) })),
238
272
  setAutoSpeak: (t) => e({ autoSpeakEnabled: t }),
239
273
  setAssistantLanguage: (t) => e({ assistantLanguage: t }),
240
274
  setReplyLanguage: (t) => e({ replyLanguage: t }),
241
275
  setPreferredVoice: (t, n) => e((e) => {
242
276
  let r = { ...e.preferredVoices };
243
277
  return n === null ? delete r[t] : r[t] = n, { preferredVoices: r };
244
- })
278
+ }),
279
+ upsertRemoteConversation: (t) => e((e) => e.conversations.some((e) => e.id === t.id) ? {} : { conversations: [...e.conversations, t] }),
280
+ applyHistoryEntries: (t, n, r) => e((e) => ({ conversations: e.conversations.map((e) => e.id === t && e.sync ? {
281
+ ...e,
282
+ messages: [...n],
283
+ sync: {
284
+ ...e.sync,
285
+ ...r
286
+ }
287
+ } : e) })),
288
+ markHistoryState: (t, n, r, i) => e((e) => {
289
+ let a = new Set(n);
290
+ return { conversations: e.conversations.map((e) => e.id === t ? {
291
+ ...e,
292
+ messages: e.messages.map((e) => {
293
+ if (!a.has(e.id)) return e;
294
+ let t = i?.[e.id];
295
+ return {
296
+ ...e,
297
+ historyState: r,
298
+ ...typeof t == "number" ? { historySeq: t } : {}
299
+ };
300
+ })
301
+ } : e) };
302
+ }),
303
+ patchConversationSync: (t, n, r) => e((e) => ({ conversations: e.conversations.map((e) => {
304
+ if (e.id !== t || !e.sync) return e;
305
+ let i = n(e.sync), a = r?.title;
306
+ return {
307
+ ...e,
308
+ sync: i,
309
+ ...a && !i.titleLocked ? { title: a } : {}
310
+ };
311
+ }) })),
312
+ removeConversationsSilently: (t) => e((e) => h(e, t, !1)),
313
+ evictConversations: (t) => e((e) => h(e, t, !0))
245
314
  }), {
246
315
  name: "hb-ai-assistant",
247
- storage: a(e()),
316
+ storage: o(e(), (e, t, n) => l(n)),
248
317
  partialize: (e) => ({
249
318
  conversations: e.conversations.map(({ ...e }) => e),
250
319
  activeConversationId: e.activeConversationId,
@@ -257,7 +326,7 @@ var d = o()(s((e, t) => ({
257
326
  replyLanguage: e.replyLanguage,
258
327
  preferredVoices: e.preferredVoices
259
328
  }),
260
- merge: u
329
+ merge: m
261
330
  }));
262
331
  //#endregion
263
- export { u as mergePersistedAssistantState, l as resolveActiveModeSandbox, d as useAssistantStore };
332
+ export { m as mergePersistedAssistantState, p as resolveActiveModeSandbox, g as useAssistantStore };
@@ -62,6 +62,22 @@ export type AIAssistantPanelProps = PanelProps & {
62
62
  * runs none for the same controller (BOFF-7367, see `bridgeHost.tsx`).
63
63
  */
64
64
  preview?: AssistantPreviewController;
65
+ /**
66
+ * Keep this product's conversations in server history (BOFF-7335): saved for
67
+ * the workspace, listed and reopened on any device, deleted everywhere.
68
+ *
69
+ * ★★ Off by default, and off means exactly the panel as it was: nothing is
70
+ * saved, pulled or read, and the list is the device's own. Conversations
71
+ * already on this device stay there ("On this device") and are never
72
+ * uploaded.
73
+ *
74
+ * ★ A prop, like `writeAccess`, not a field on the product seam: the product
75
+ * id the server stores is the provider's `product` already, and turning the
76
+ * feature on is the product's own call. Passed through `AssistantOverlay`'s
77
+ * `panelProps`, it stays on while the panel is closed, so saves and deletes
78
+ * made in it still go out.
79
+ */
80
+ serverHistory?: boolean;
65
81
  };
66
82
  /**
67
83
  * The panel.
@@ -1 +1 @@
1
- {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAGnE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;CACtC,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAqOtD,CAAC"}
1
+ {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAInE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAyOtD,CAAC"}