@dxos/plugin-thread 0.8.2-main.fbd8ed0 → 0.8.2-staging.7ac8446

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 (160) hide show
  1. package/dist/lib/browser/{ChatContainer-H4XTHM3A.mjs → ChatContainer-IOOAQW6S.mjs} +6 -6
  2. package/dist/lib/browser/ChatContainer-IOOAQW6S.mjs.map +7 -0
  3. package/dist/lib/browser/{app-graph-builder-V7UUHGUI.mjs → app-graph-builder-6W4UKJDI.mjs} +7 -10
  4. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-32EIWOAL.mjs → chunk-QDJ3Y6WF.mjs} +1 -1
  6. package/dist/lib/browser/{chunk-32EIWOAL.mjs.map → chunk-QDJ3Y6WF.mjs.map} +1 -1
  7. package/dist/lib/browser/chunk-S5ZR4FYW.mjs +17 -0
  8. package/dist/lib/browser/{chunk-I3JK6CBS.mjs → chunk-TFVPUPOO.mjs} +7 -9
  9. package/dist/lib/browser/chunk-TFVPUPOO.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-WOG72DWE.mjs +93 -0
  11. package/dist/lib/browser/chunk-WOG72DWE.mjs.map +7 -0
  12. package/dist/lib/browser/index.mjs +10 -10
  13. package/dist/lib/browser/index.mjs.map +3 -3
  14. package/dist/lib/browser/{intent-resolver-PDOLX5B7.mjs → intent-resolver-QAY4FLLM.mjs} +22 -17
  15. package/dist/lib/browser/intent-resolver-QAY4FLLM.mjs.map +7 -0
  16. package/dist/lib/browser/{markdown-XJJVUBDO.mjs → markdown-7KXBXCUS.mjs} +4 -4
  17. package/dist/lib/browser/markdown-7KXBXCUS.mjs.map +7 -0
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-7DJZKIOK.mjs → react-surface-MT3OWULR.mjs} +22 -21
  20. package/dist/lib/browser/react-surface-MT3OWULR.mjs.map +7 -0
  21. package/dist/lib/browser/{settings-K56QXNJ4.mjs → settings-4FEC7EAX.mjs} +4 -4
  22. package/dist/lib/browser/settings-4FEC7EAX.mjs.map +7 -0
  23. package/dist/lib/browser/{state-KBGI3QTR.mjs → state-PNMSLKAH.mjs} +4 -4
  24. package/dist/lib/browser/state-PNMSLKAH.mjs.map +7 -0
  25. package/dist/lib/browser/types.mjs +1 -1
  26. package/dist/lib/node/{ChatContainer-TUISUIY7.cjs → ChatContainer-4FNDRF3G.cjs} +11 -11
  27. package/dist/lib/node/ChatContainer-4FNDRF3G.cjs.map +7 -0
  28. package/dist/lib/node/{app-graph-builder-MMM26FEH.cjs → app-graph-builder-HZNWT4QU.cjs} +10 -13
  29. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-GRMB5VRN.cjs → chunk-46BSFPBV.cjs} +49 -49
  31. package/dist/lib/node/chunk-46BSFPBV.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-NO6WQR36.cjs → chunk-AKINTFBH.cjs} +4 -4
  33. package/dist/lib/node/{chunk-NO6WQR36.cjs.map → chunk-AKINTFBH.cjs.map} +1 -1
  34. package/dist/lib/node/{chunk-ETDNE4Z6.cjs → chunk-E7Z3BKRQ.cjs} +11 -13
  35. package/dist/lib/node/chunk-E7Z3BKRQ.cjs.map +7 -0
  36. package/dist/lib/node/{chunk-AZ275P4V.cjs → chunk-S2A6BXEA.cjs} +10 -10
  37. package/dist/lib/node/index.cjs +17 -17
  38. package/dist/lib/node/index.cjs.map +3 -3
  39. package/dist/lib/node/{intent-resolver-MNTL32W2.cjs → intent-resolver-S6FE5OR7.cjs} +31 -26
  40. package/dist/lib/node/intent-resolver-S6FE5OR7.cjs.map +7 -0
  41. package/dist/lib/node/{markdown-25NI6Q4Y.cjs → markdown-L2WMCQKM.cjs} +9 -9
  42. package/dist/lib/node/markdown-L2WMCQKM.cjs.map +7 -0
  43. package/dist/lib/node/meta.json +1 -1
  44. package/dist/lib/node/{react-surface-KGUZJVRL.cjs → react-surface-Z45BYECE.cjs} +32 -31
  45. package/dist/lib/node/react-surface-Z45BYECE.cjs.map +7 -0
  46. package/dist/lib/node/{settings-4WLSO726.cjs → settings-IXCPE55J.cjs} +7 -7
  47. package/dist/lib/node/settings-IXCPE55J.cjs.map +7 -0
  48. package/dist/lib/node/{state-FOHMAVSU.cjs → state-AT73KPGZ.cjs} +6 -6
  49. package/dist/lib/node/state-AT73KPGZ.cjs.map +7 -0
  50. package/dist/lib/node/types.cjs +3 -3
  51. package/dist/lib/node/types.cjs.map +1 -1
  52. package/dist/lib/node-esm/{ChatContainer-G7VTTRDN.mjs → ChatContainer-NYLCL6QA.mjs} +6 -6
  53. package/dist/lib/node-esm/ChatContainer-NYLCL6QA.mjs.map +7 -0
  54. package/dist/lib/node-esm/{app-graph-builder-QEFJ2KA4.mjs → app-graph-builder-M3KK5QJH.mjs} +7 -10
  55. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-V7HLWNAO.mjs → chunk-ADTVMESP.mjs} +7 -9
  57. package/dist/lib/node-esm/chunk-ADTVMESP.mjs.map +7 -0
  58. package/dist/lib/node-esm/chunk-E446MGLP.mjs +94 -0
  59. package/dist/lib/node-esm/chunk-E446MGLP.mjs.map +7 -0
  60. package/dist/lib/node-esm/{chunk-IZWN4KAY.mjs → chunk-J56FORYF.mjs} +1 -1
  61. package/dist/lib/node-esm/{chunk-IZWN4KAY.mjs.map → chunk-J56FORYF.mjs.map} +1 -1
  62. package/dist/lib/node-esm/chunk-WSE23GSG.mjs +19 -0
  63. package/dist/lib/node-esm/index.mjs +10 -10
  64. package/dist/lib/node-esm/index.mjs.map +3 -3
  65. package/dist/lib/node-esm/{intent-resolver-X2FNKFSK.mjs → intent-resolver-OURFRSSF.mjs} +22 -17
  66. package/dist/lib/node-esm/intent-resolver-OURFRSSF.mjs.map +7 -0
  67. package/dist/lib/node-esm/{markdown-2ERASVEO.mjs → markdown-ZKU23UVD.mjs} +4 -4
  68. package/dist/lib/node-esm/markdown-ZKU23UVD.mjs.map +7 -0
  69. package/dist/lib/node-esm/meta.json +1 -1
  70. package/dist/lib/node-esm/{react-surface-DLD2UJRM.mjs → react-surface-KIJ767JK.mjs} +22 -21
  71. package/dist/lib/node-esm/react-surface-KIJ767JK.mjs.map +7 -0
  72. package/dist/lib/node-esm/{settings-5UA6FBMW.mjs → settings-ZUJQ4LWI.mjs} +4 -4
  73. package/dist/lib/node-esm/settings-ZUJQ4LWI.mjs.map +7 -0
  74. package/dist/lib/node-esm/{state-IRLEO2SB.mjs → state-SSDX5O67.mjs} +4 -4
  75. package/dist/lib/node-esm/state-SSDX5O67.mjs.map +7 -0
  76. package/dist/lib/node-esm/types.mjs +1 -1
  77. package/dist/types/src/capabilities/app-graph-builder.d.ts +179 -2
  78. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/index.d.ts +179 -3
  80. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  82. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  84. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  85. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  86. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  87. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  88. package/dist/types/src/components/Comments.stories.d.ts +1 -1
  89. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  90. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  91. package/dist/types/src/components/MessageContainer.d.ts +4 -5
  92. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  93. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  94. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  95. package/dist/types/src/components/testing.d.ts +50 -97
  96. package/dist/types/src/components/testing.d.ts.map +1 -1
  97. package/dist/types/src/components/types.d.ts +2 -2
  98. package/dist/types/src/components/types.d.ts.map +1 -1
  99. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  100. package/dist/types/src/hooks/analytics.d.ts +3 -3
  101. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  102. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  103. package/dist/types/src/translations.d.ts +56 -2
  104. package/dist/types/src/translations.d.ts.map +1 -1
  105. package/dist/types/src/types.d.ts +61 -212
  106. package/dist/types/src/types.d.ts.map +1 -1
  107. package/dist/types/src/util.d.ts.map +1 -1
  108. package/dist/types/tsconfig.tsbuildinfo +1 -1
  109. package/package.json +33 -40
  110. package/src/ThreadPlugin.tsx +7 -7
  111. package/src/capabilities/app-graph-builder.ts +21 -31
  112. package/src/capabilities/intent-resolver.ts +14 -13
  113. package/src/capabilities/markdown.ts +4 -4
  114. package/src/capabilities/settings.ts +2 -2
  115. package/src/capabilities/state.ts +3 -3
  116. package/src/components/Chat.stories.tsx +8 -7
  117. package/src/components/ChatContainer.tsx +4 -4
  118. package/src/components/CommentContainer.tsx +49 -25
  119. package/src/components/Comments.stories.tsx +7 -9
  120. package/src/components/CommentsContainer.tsx +8 -2
  121. package/src/components/MessageContainer.tsx +50 -31
  122. package/src/components/testing.ts +4 -4
  123. package/src/components/types.ts +2 -2
  124. package/src/hooks/analytics.ts +4 -4
  125. package/src/translations.ts +2 -2
  126. package/src/types.ts +40 -40
  127. package/dist/lib/browser/ChatContainer-H4XTHM3A.mjs.map +0 -7
  128. package/dist/lib/browser/app-graph-builder-V7UUHGUI.mjs.map +0 -7
  129. package/dist/lib/browser/chunk-I3JK6CBS.mjs.map +0 -7
  130. package/dist/lib/browser/chunk-OO7PQPV5.mjs +0 -93
  131. package/dist/lib/browser/chunk-OO7PQPV5.mjs.map +0 -7
  132. package/dist/lib/browser/chunk-YRGWE35W.mjs +0 -17
  133. package/dist/lib/browser/intent-resolver-PDOLX5B7.mjs.map +0 -7
  134. package/dist/lib/browser/markdown-XJJVUBDO.mjs.map +0 -7
  135. package/dist/lib/browser/react-surface-7DJZKIOK.mjs.map +0 -7
  136. package/dist/lib/browser/settings-K56QXNJ4.mjs.map +0 -7
  137. package/dist/lib/browser/state-KBGI3QTR.mjs.map +0 -7
  138. package/dist/lib/node/ChatContainer-TUISUIY7.cjs.map +0 -7
  139. package/dist/lib/node/app-graph-builder-MMM26FEH.cjs.map +0 -7
  140. package/dist/lib/node/chunk-ETDNE4Z6.cjs.map +0 -7
  141. package/dist/lib/node/chunk-GRMB5VRN.cjs.map +0 -7
  142. package/dist/lib/node/intent-resolver-MNTL32W2.cjs.map +0 -7
  143. package/dist/lib/node/markdown-25NI6Q4Y.cjs.map +0 -7
  144. package/dist/lib/node/react-surface-KGUZJVRL.cjs.map +0 -7
  145. package/dist/lib/node/settings-4WLSO726.cjs.map +0 -7
  146. package/dist/lib/node/state-FOHMAVSU.cjs.map +0 -7
  147. package/dist/lib/node-esm/ChatContainer-G7VTTRDN.mjs.map +0 -7
  148. package/dist/lib/node-esm/app-graph-builder-QEFJ2KA4.mjs.map +0 -7
  149. package/dist/lib/node-esm/chunk-5XUQJWUG.mjs +0 -19
  150. package/dist/lib/node-esm/chunk-A7RLBTTZ.mjs +0 -94
  151. package/dist/lib/node-esm/chunk-A7RLBTTZ.mjs.map +0 -7
  152. package/dist/lib/node-esm/chunk-V7HLWNAO.mjs.map +0 -7
  153. package/dist/lib/node-esm/intent-resolver-X2FNKFSK.mjs.map +0 -7
  154. package/dist/lib/node-esm/markdown-2ERASVEO.mjs.map +0 -7
  155. package/dist/lib/node-esm/react-surface-DLD2UJRM.mjs.map +0 -7
  156. package/dist/lib/node-esm/settings-5UA6FBMW.mjs.map +0 -7
  157. package/dist/lib/node-esm/state-IRLEO2SB.mjs.map +0 -7
  158. /package/dist/lib/browser/{chunk-YRGWE35W.mjs.map → chunk-S5ZR4FYW.mjs.map} +0 -0
  159. /package/dist/lib/node/{chunk-AZ275P4V.cjs.map → chunk-S2A6BXEA.cjs.map} +0 -0
  160. /package/dist/lib/node-esm/{chunk-5XUQJWUG.mjs.map → chunk-WSE23GSG.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAGhC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMnE,yBAAiB,YAAY,CAAC;;;;;;;;;;;;;;;;;;IAG5B,MAAM,OAAO,aAAc,SAAQ,kBAQjC;KAAG;;;;;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAS1B;KAAG;;;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAK1B;KAAG;;;;;;;;;IAEL,MAAM,OAAO,cAAe,SAAQ,mBAKlC;KAAG;;;;;;;;;;0BAZ+E,CAAC;;;yCAOtE,CAAC;;gCAA2E,CAAC;;mCAI1E,CAAC;4BAGQ,CAAC;8BAA4C,CAAC;6BAGnE,CAAC;+BACmB,CAAC;;yBAIvB,CAAC;4BAEiC,CAAC;iCAA+C,CAAC;4BACpE,CAAC;4BAEX,CAAC;8BACW,CAAC;yBACO,CAAC;0BACV,CAAC;;sCAMtB,CAAC;;8BACE,CAAC;;sCAA0E,CAAC;;gCAM/D,CAAC;;sCAET,CAAC;;;oBAGR,gCAAgC;oBAChC,CADF,CAAE,gCAAgC;;2CACI,CAAC;6CAEzB,CAAC;6CAGf,CAAA;2CAAyD,CAAC;+CAA6D,CAAC;wDAAsE,CAAC;4CAA0D,CAAC;;sCAAuE,CAAC;;wBAAmE,CAAC;;sCAA0E,CAAC;;4BAAuE,CAAC;;;;;;;;;;;;IAxCvhB,MAAM,OAAO,UAAW,SAAQ,eAQ9B;KAAG;;;;;;;;;;;;;;8BAgCu5P,CAAC;;;6CAAiI,CAAC;;oCAAmF,CAAC;;uCAA4G,CAAC;gCAA8C,CAAC;kCAAgD,CAAC;iCAAkG,CAAC;mCAAiD,CAAC;;6BAA2E,CAAC;gCAA8C,CAAC;qCAAmD,CAAC;gCAA8C,CAAC;gCAA8C,CAAC;kCAAgD,CAAC;6BAA2C,CAAC;8BAA4C,CAAC;;0CAAkF,CAAC;;kCAAiF,CAAC;;0CAAkF,CAAC;;oCAAmF,CAAC;;0CAAkF,CAAC;;iCAAgF,CAAC;;+CAAiF,CAAC;iDAA+D,CAAC;iDAA+D,CAAC;+CAA6D,CAAC;mDAAiE,CAAC;4DAA0E,CAAC;gDAA8D,CAAC;;0CAA+E,CAAC;;4BAA2E,CAAC;;0CAAkF,CAAC;;gCAA+E,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA9BvnU,MAAM,OAAO,aAAc,SAAQ,kBASjC;KAAG;;CACN;AAED,eAAO,MAAM,oBAAoB,mCAAoC,CAAC;AACtE,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElF,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,MAAM,MAAM,SAAS,GAAG;IAAE,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,mBAAmB,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,EAAe,WAAW,EAAE,MAAM,cAAc,CAAC;AAIxD,yBAAiB,YAAY,CAAC;;;;;;;;;;;;IAG5B,MAAM,OAAO,aAAc,SAAQ,kBASjC;KAAG;;;;;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAS1B;KAAG;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAK1B;KAAG;;;;;;;;;IAEL,MAAM,OAAO,cAAe,SAAQ,mBAKlC;KAAG;;;;;;;;;;;IAEL,MAAM,OAAO,MAAO,SAAQ,WAO1B;KAAG;;;;;;;;yBAvCU,EAAG,QAAQ,QACxB,mBACS;;wBAGR,CAAC;;;;;;6BAKM,EAAG,QAAQ,QACjB,EAAG,MAAM;6BAEC,EAAG,QACf,QAAO,EAAG,MAAM;uBAElB,EAAA,QAED,QAAQ,EAAE,MAAM;sBAAa,EAAE,QAAQ,QAAO,EAAG,MAAM;sBAAY,EAAG,QAAQ,CAAE,EAC7E,OAAE;;;;;;IAsBJ,MAAM,OAAO,UAAW,SAAQ,eAQ9B;KAAG;;;;;;;;;;;;;IAEL,MAAM,OAAO,aAAc,SAAQ,kBASjC;KAAG;;CACN;AAED,eAAO,MAAM,oBAAoB,yBAA0B,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,KAAK,SAAS,GAAG,MAAM,CAAC;AACxB,MAAM,MAAM,SAAS,GAAG;IAAE,mBAAmB,EAAE,OAAO,CAAA;CAAE,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG;IACxB,gCAAgC;IAChC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC/C,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,MAAM,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,KAAK,eAAe,CAAC;AAEhG,eAAO,MAAM,kBAAkB,GAAI,IAAI,MAAM,EAAE,WAAW,QAAQ,KAAG,eAapE,CAAC"}
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/util.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAG7D,MAAM,MAAM,yBAAyB,GAAG,CAAC,WAAW,EAAE,SAAS,GAAG,SAAS,KAAK,eAAe,CAAC;AAEhG,eAAO,MAAM,kBAAkB,OAAQ,MAAM,aAAa,QAAQ,KAAG,eAapE,CAAC"}
@@ -1 +1 @@
1
- {"version":"5.8.3"}
1
+ {"version":"5.7.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-thread",
3
- "version": "0.8.2-main.fbd8ed0",
3
+ "version": "0.8.2-staging.7ac8446",
4
4
  "description": "DXOS Threads Surface plugin",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -39,59 +39,52 @@
39
39
  "@preact/signals-core": "^1.6.0",
40
40
  "date-fns": "^3.3.1",
41
41
  "lodash.get": "^4.4.2",
42
- "@dxos/app-framework": "0.8.2-main.fbd8ed0",
43
- "@dxos/async": "0.8.2-main.fbd8ed0",
44
- "@dxos/display-name": "0.8.2-main.fbd8ed0",
45
- "@dxos/echo": "0.8.2-main.fbd8ed0",
46
- "@dxos/echo-schema": "0.8.2-main.fbd8ed0",
47
- "@dxos/invariant": "0.8.2-main.fbd8ed0",
48
- "@dxos/local-storage": "0.8.2-main.fbd8ed0",
49
- "@dxos/live-object": "0.8.2-main.fbd8ed0",
50
- "@dxos/keys": "0.8.2-main.fbd8ed0",
51
- "@dxos/log": "0.8.2-main.fbd8ed0",
52
- "@dxos/plugin-attention": "0.8.2-main.fbd8ed0",
53
- "@dxos/plugin-client": "0.8.2-main.fbd8ed0",
54
- "@dxos/plugin-deck": "0.8.2-main.fbd8ed0",
55
- "@dxos/plugin-markdown": "0.8.2-main.fbd8ed0",
56
- "@dxos/plugin-graph": "0.8.2-main.fbd8ed0",
57
- "@dxos/plugin-observability": "0.8.2-main.fbd8ed0",
58
- "@dxos/plugin-space": "0.8.2-main.fbd8ed0",
59
- "@dxos/react-ui-attention": "0.8.2-main.fbd8ed0",
60
- "@dxos/react-client": "0.8.2-main.fbd8ed0",
61
- "@dxos/react-ui-editor": "0.8.2-main.fbd8ed0",
62
- "@dxos/react-ui-form": "0.8.2-main.fbd8ed0",
63
- "@dxos/react-ui-menu": "0.8.2-main.fbd8ed0",
64
- "@dxos/react-ui-stack": "0.8.2-main.fbd8ed0",
65
- "@dxos/react-ui-tabs": "0.8.2-main.fbd8ed0",
66
- "@dxos/react-ui-thread": "0.8.2-main.fbd8ed0",
67
- "@dxos/schema": "0.8.2-main.fbd8ed0",
68
- "@dxos/util": "0.8.2-main.fbd8ed0"
42
+ "@dxos/app-framework": "0.8.2-staging.7ac8446",
43
+ "@dxos/display-name": "0.8.2-staging.7ac8446",
44
+ "@dxos/echo-schema": "0.8.2-staging.7ac8446",
45
+ "@dxos/async": "0.8.2-staging.7ac8446",
46
+ "@dxos/invariant": "0.8.2-staging.7ac8446",
47
+ "@dxos/keys": "0.8.2-staging.7ac8446",
48
+ "@dxos/live-object": "0.8.2-staging.7ac8446",
49
+ "@dxos/local-storage": "0.8.2-staging.7ac8446",
50
+ "@dxos/log": "0.8.2-staging.7ac8446",
51
+ "@dxos/plugin-attention": "0.8.2-staging.7ac8446",
52
+ "@dxos/plugin-deck": "0.8.2-staging.7ac8446",
53
+ "@dxos/plugin-markdown": "0.8.2-staging.7ac8446",
54
+ "@dxos/plugin-client": "0.8.2-staging.7ac8446",
55
+ "@dxos/plugin-observability": "0.8.2-staging.7ac8446",
56
+ "@dxos/plugin-graph": "0.8.2-staging.7ac8446",
57
+ "@dxos/plugin-space": "0.8.2-staging.7ac8446",
58
+ "@dxos/react-client": "0.8.2-staging.7ac8446",
59
+ "@dxos/react-ui-attention": "0.8.2-staging.7ac8446",
60
+ "@dxos/react-ui-editor": "0.8.2-staging.7ac8446",
61
+ "@dxos/react-ui-form": "0.8.2-staging.7ac8446",
62
+ "@dxos/react-ui-menu": "0.8.2-staging.7ac8446",
63
+ "@dxos/react-ui-stack": "0.8.2-staging.7ac8446",
64
+ "@dxos/react-ui-thread": "0.8.2-staging.7ac8446",
65
+ "@dxos/react-ui-tabs": "0.8.2-staging.7ac8446",
66
+ "@dxos/schema": "0.8.2-staging.7ac8446",
67
+ "@dxos/util": "0.8.2-staging.7ac8446"
69
68
  },
70
69
  "devDependencies": {
71
- "@effect-rx/rx-react": "^0.34.1",
72
- "@effect/platform": "0.80.12",
73
70
  "@phosphor-icons/react": "^2.1.5",
74
71
  "@types/lodash.get": "^4.4.7",
75
72
  "@types/react": "~18.2.0",
76
73
  "@types/react-dom": "~18.2.0",
77
- "effect": "3.14.21",
78
74
  "react": "~18.2.0",
79
75
  "react-dom": "~18.2.0",
80
76
  "vite": "5.4.7",
81
- "@dxos/random": "0.8.2-main.fbd8ed0",
82
- "@dxos/react-ui": "0.8.2-main.fbd8ed0",
83
- "@dxos/storybook-utils": "0.8.2-main.fbd8ed0",
84
- "@dxos/react-ui-theme": "0.8.2-main.fbd8ed0"
77
+ "@dxos/react-ui": "0.8.2-staging.7ac8446",
78
+ "@dxos/random": "0.8.2-staging.7ac8446",
79
+ "@dxos/react-ui-theme": "0.8.2-staging.7ac8446",
80
+ "@dxos/storybook-utils": "0.8.2-staging.7ac8446"
85
81
  },
86
82
  "peerDependencies": {
87
- "@effect-rx/rx-react": "^0.34.1",
88
- "@effect/platform": "0.80.12",
89
83
  "@phosphor-icons/react": "^2.1.5",
90
- "effect": "^3.13.3",
91
84
  "react": "~18.2.0",
92
85
  "react-dom": "~18.2.0",
93
- "@dxos/react-ui": "0.8.2-main.fbd8ed0",
94
- "@dxos/react-ui-theme": "0.8.2-main.fbd8ed0"
86
+ "@dxos/react-ui": "0.8.2-staging.7ac8446",
87
+ "@dxos/react-ui-theme": "0.8.2-staging.7ac8446"
95
88
  },
96
89
  "publishConfig": {
97
90
  "access": "public"
@@ -7,9 +7,9 @@ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
7
7
  import { MarkdownEvents } from '@dxos/plugin-markdown';
8
8
  import { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';
9
9
  import { ChannelType, defineObjectForm, ThreadType } from '@dxos/plugin-space/types';
10
- import { type AnyLiveObject, RefArray } from '@dxos/react-client/echo';
10
+ import { type ReactiveEchoObject, RefArray } from '@dxos/react-client/echo';
11
11
  import { translations as threadTranslations } from '@dxos/react-ui-thread';
12
- import { DataType } from '@dxos/schema';
12
+ import { MessageType, MessageTypeV1, MessageTypeV1ToV2 } from '@dxos/schema';
13
13
 
14
14
  import { AppGraphBuilder, IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';
15
15
  import { ThreadEvents as LocalThreadEvents } from './events';
@@ -58,16 +58,16 @@ export const ThreadPlugin = () =>
58
58
  },
59
59
  }),
60
60
  contributes(Capabilities.Metadata, {
61
- id: DataType.Message.typename,
61
+ id: MessageType.typename,
62
62
  metadata: {
63
63
  // TODO(wittjosiah): Move out of metadata.
64
- loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),
64
+ loadReferences: (message: MessageType) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),
65
65
  },
66
66
  }),
67
67
  contributes(Capabilities.Metadata, {
68
68
  id: THREAD_ITEM,
69
69
  metadata: {
70
- parse: (item: AnyLiveObject<any>, type: string) => {
70
+ parse: (item: ReactiveEchoObject<any>, type: string) => {
71
71
  switch (type) {
72
72
  case 'node':
73
73
  return { id: item.id, label: item.title, data: item };
@@ -96,12 +96,12 @@ export const ThreadPlugin = () =>
96
96
  defineModule({
97
97
  id: `${meta.id}/module/schema`,
98
98
  activatesOn: ClientEvents.SetupSchema,
99
- activate: () => contributes(ClientCapabilities.Schema, [ThreadType, DataType.Message, DataType.MessageV1]),
99
+ activate: () => contributes(ClientCapabilities.Schema, [ThreadType, MessageType, MessageTypeV1]),
100
100
  }),
101
101
  defineModule({
102
102
  id: `${meta.id}/module/migration`,
103
103
  activatesOn: ClientEvents.SetupMigration,
104
- activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),
104
+ activate: () => contributes(ClientCapabilities.Migration, [MessageTypeV1ToV2]),
105
105
  }),
106
106
  defineModule({
107
107
  id: `${meta.id}/module/markdown`,
@@ -2,43 +2,33 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Rx } from '@effect-rx/rx-react';
6
- import { Option, pipe } from 'effect';
7
-
8
- import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
6
+ import { type ReactiveEchoObject } from '@dxos/client/echo';
9
7
  import { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR } from '@dxos/plugin-deck/types';
10
- import { createExtension } from '@dxos/plugin-graph';
11
- import { isLiveObject } from '@dxos/react-client/echo';
8
+ import { createExtension, type Node } from '@dxos/plugin-graph';
12
9
 
13
10
  import { meta } from '../meta';
14
11
 
15
- export default (context: PluginContext) =>
12
+ export default (context: PluginsContext) =>
16
13
  contributes(Capabilities.AppGraphBuilder, [
17
14
  createExtension({
18
15
  id: `${meta.id}/comments`,
19
- connector: (node) =>
20
- Rx.make((get) =>
21
- pipe(
22
- get(node),
23
- Option.flatMap((node) =>
24
- // TODO(wittjosiah): Support comments on any object.
25
- isLiveObject(node.data) && Array.isArray(node.data.threads) ? Option.some(node) : Option.none(),
26
- ),
27
- Option.map((node) => [
28
- {
29
- id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),
30
- type: PLANK_COMPANION_TYPE,
31
- data: 'comments',
32
- properties: {
33
- label: ['comments label', { ns: meta.id }],
34
- icon: 'ph--chat-text--regular',
35
- disposition: 'hidden',
36
- position: 'hoist',
37
- },
38
- },
39
- ]),
40
- Option.getOrElse(() => []),
41
- ),
42
- ),
16
+ // TODO(wittjosiah): Support comments on any object.
17
+ // filter: (node): node is Node<ReactiveEchoObject<any>> => isEchoObject(node.data),
18
+ filter: (node): node is Node<ReactiveEchoObject<any>> =>
19
+ !!node.data && typeof node.data === 'object' && 'threads' in node.data && Array.isArray(node.data.threads),
20
+ connector: ({ node }) => [
21
+ {
22
+ id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),
23
+ type: PLANK_COMPANION_TYPE,
24
+ data: 'comments',
25
+ properties: {
26
+ label: ['comments label', { ns: meta.id }],
27
+ icon: 'ph--chat-text--regular',
28
+ disposition: 'hidden',
29
+ position: 'hoist',
30
+ },
31
+ },
32
+ ],
43
33
  }),
44
34
  ]);
@@ -2,30 +2,31 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createIntent, createResolver, type PluginContext } from '@dxos/app-framework';
6
- import { createQueueDxn, Ref } from '@dxos/echo-schema';
5
+ import { Capabilities, contributes, createIntent, createResolver, type PluginsContext } from '@dxos/app-framework';
6
+ import { ObjectId, Ref } from '@dxos/echo-schema';
7
7
  import { invariant } from '@dxos/invariant';
8
+ import { DXN, QueueSubspaceTags } from '@dxos/keys';
8
9
  import { refFromDXN } from '@dxos/live-object';
9
10
  import { log } from '@dxos/log';
10
11
  import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';
11
12
  import { ObservabilityAction } from '@dxos/plugin-observability/types';
12
13
  import { ChannelType, ThreadType } from '@dxos/plugin-space/types';
13
- import { live, fullyQualifiedId, getSpace, makeRef } from '@dxos/react-client/echo';
14
- import { DataType } from '@dxos/schema';
14
+ import { create, fullyQualifiedId, getSpace, makeRef } from '@dxos/react-client/echo';
15
+ import { MessageType } from '@dxos/schema';
15
16
 
16
17
  import { ThreadCapabilities } from './capabilities';
17
18
  import { THREAD_PLUGIN } from '../meta';
18
19
  import { ThreadAction } from '../types';
19
20
 
20
- export default (context: PluginContext) =>
21
+ export default (context: PluginsContext) =>
21
22
  contributes(Capabilities.IntentResolver, [
22
23
  createResolver({
23
24
  intent: ThreadAction.CreateChannel,
24
25
  resolve: ({ spaceId, name }) => ({
25
26
  data: {
26
- object: live(ChannelType, {
27
+ object: create(ChannelType, {
27
28
  name,
28
- queue: refFromDXN(createQueueDxn(spaceId)),
29
+ queue: refFromDXN(new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, spaceId, ObjectId.random()])),
29
30
  }),
30
31
  },
31
32
  }),
@@ -44,9 +45,9 @@ export default (context: PluginContext) =>
44
45
  }
45
46
  }
46
47
 
47
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
48
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
48
49
  const subjectId = fullyQualifiedId(subject);
49
- const thread = live(ThreadType, { name, anchor: cursor, messages: [], status: 'staged' });
50
+ const thread = create(ThreadType, { name, anchor: cursor, messages: [], status: 'staged' });
50
51
  const draft = state.drafts[subjectId];
51
52
  if (draft) {
52
53
  draft.push(thread);
@@ -69,7 +70,7 @@ export default (context: PluginContext) =>
69
70
  createResolver({
70
71
  intent: ThreadAction.Select,
71
72
  resolve: ({ current }) => {
72
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
73
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
73
74
  state.current = current;
74
75
  },
75
76
  }),
@@ -102,7 +103,7 @@ export default (context: PluginContext) =>
102
103
  createResolver({
103
104
  intent: ThreadAction.Delete,
104
105
  resolve: ({ subject, thread }, undo) => {
105
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
106
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
106
107
  const subjectId = fullyQualifiedId(subject);
107
108
  const draft = state.drafts[subjectId];
108
109
  if (draft) {
@@ -165,13 +166,13 @@ export default (context: PluginContext) =>
165
166
  createResolver({
166
167
  intent: ThreadAction.AddMessage,
167
168
  resolve: ({ thread, subject, sender, text }) => {
168
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
169
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
169
170
  const subjectId = fullyQualifiedId(subject);
170
171
  const space = getSpace(subject);
171
172
  invariant(space, 'Space not found');
172
173
  const intents = [];
173
174
 
174
- const message = live(DataType.Message, {
175
+ const message = create(MessageType, {
175
176
  sender,
176
177
  created: new Date().toISOString(),
177
178
  blocks: [{ type: 'text', text }],
@@ -2,17 +2,17 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, type PluginContext } from '@dxos/app-framework';
5
+ import { Capabilities, contributes, type PluginsContext } from '@dxos/app-framework';
6
6
  import { MarkdownCapabilities } from '@dxos/plugin-markdown';
7
7
 
8
8
  import { ThreadCapabilities } from './capabilities';
9
9
  import { threads } from '../extensions';
10
10
 
11
- export default (context: PluginContext) =>
11
+ export default (context: PluginsContext) =>
12
12
  contributes(MarkdownCapabilities.Extensions, [
13
13
  ({ document: doc }) => {
14
- const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);
15
- const { state } = context.getCapability(ThreadCapabilities.MutableState);
14
+ const { dispatchPromise: dispatch } = context.requestCapability(Capabilities.IntentDispatcher);
15
+ const { state } = context.requestCapability(ThreadCapabilities.MutableState);
16
16
  return threads(state, doc, dispatch);
17
17
  },
18
18
  ]);
@@ -3,12 +3,12 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, contributes } from '@dxos/app-framework';
6
- import { live } from '@dxos/live-object';
6
+ import { create } from '@dxos/live-object';
7
7
 
8
8
  import { THREAD_PLUGIN } from '../meta';
9
9
  import { type ThreadSettingsProps, ThreadSettingsSchema } from '../types';
10
10
 
11
11
  export default () => {
12
- const settings = live<ThreadSettingsProps>({});
12
+ const settings = create<ThreadSettingsProps>({});
13
13
  return contributes(Capabilities.Settings, { schema: ThreadSettingsSchema, prefix: THREAD_PLUGIN, value: settings });
14
14
  };
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { contributes } from '@dxos/app-framework';
6
- import { live } from '@dxos/live-object';
6
+ import { create } from '@dxos/live-object';
7
7
 
8
8
  import { ThreadCapabilities } from './capabilities';
9
9
  import { type ThreadState, type ViewStore } from '../types';
@@ -11,8 +11,8 @@ import { type ThreadState, type ViewStore } from '../types';
11
11
  const initialViewState = { showResolvedThreads: false };
12
12
 
13
13
  export default () => {
14
- const state = live<ThreadState>({ activities: {}, drafts: {} });
15
- const viewStore = live<ViewStore>({});
14
+ const state = create<ThreadState>({ activities: {}, drafts: {} });
15
+ const viewStore = create<ViewStore>({});
16
16
 
17
17
  const getViewState = (subjectId: string) => {
18
18
  if (!viewStore[subjectId]) {
@@ -9,16 +9,17 @@ import React, { useEffect, useState } from 'react';
9
9
 
10
10
  import { Capabilities, contributes, createSurface, IntentPlugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
- import { createQueueDxn } from '@dxos/echo-schema';
12
+ import { ObjectId } from '@dxos/echo-schema';
13
+ import { DXN, QueueSubspaceTags } from '@dxos/keys';
13
14
  import { refFromDXN } from '@dxos/live-object';
14
15
  import { ChannelType, ThreadType } from '@dxos/plugin-space/types';
15
16
  import { faker } from '@dxos/random';
16
17
  import { useClient } from '@dxos/react-client';
17
- import { live, type Space } from '@dxos/react-client/echo';
18
+ import { create, type Space } from '@dxos/react-client/echo';
18
19
  import { useIdentity } from '@dxos/react-client/halo';
19
20
  import { withClientProvider } from '@dxos/react-client/testing';
20
21
  import { Thread } from '@dxos/react-ui-thread';
21
- import { DataType } from '@dxos/schema';
22
+ import { MessageType } from '@dxos/schema';
22
23
  import { withLayout, withTheme } from '@dxos/storybook-utils';
23
24
 
24
25
  import { ChatContainer } from './ChatContainer';
@@ -37,8 +38,8 @@ const Story = () => {
37
38
  setTimeout(async () => {
38
39
  const space = await client.spaces.create();
39
40
  const channel = space.db.add(
40
- live(ChannelType, {
41
- queue: refFromDXN(createQueueDxn(space.id)),
41
+ create(ChannelType, {
42
+ queue: refFromDXN(new DXN(DXN.kind.QUEUE, [QueueSubspaceTags.DATA, space.id, ObjectId.random()])),
42
43
  }),
43
44
  );
44
45
  setSpace(space);
@@ -79,8 +80,8 @@ const meta: Meta = {
79
80
  ],
80
81
  }),
81
82
  withTheme,
82
- withLayout({ fullscreen: true }),
83
- withClientProvider({ createSpace: true, types: [ThreadType, DataType.Message] }),
83
+ withLayout({ fullscreen: true, tooltips: true }),
84
+ withClientProvider({ createSpace: true, types: [ThreadType, MessageType] }),
84
85
  ],
85
86
  parameters: { translations },
86
87
  };
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
6
6
 
7
- import { create } from '@dxos/echo-schema';
7
+ import { createStatic } from '@dxos/echo-schema';
8
8
  import { type DXN } from '@dxos/keys';
9
9
  import { makeRef } from '@dxos/live-object';
10
10
  import { type Space, useMembers, useQueue } from '@dxos/react-client/echo';
@@ -14,7 +14,7 @@ import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/re
14
14
  import { StackItem } from '@dxos/react-ui-stack';
15
15
  import { mx } from '@dxos/react-ui-theme';
16
16
  import { MessageTextbox, type MessageTextboxProps, Thread, ThreadFooter, threadLayout } from '@dxos/react-ui-thread';
17
- import { DataType } from '@dxos/schema';
17
+ import { MessageType } from '@dxos/schema';
18
18
 
19
19
  import { MessageContainer } from './MessageContainer';
20
20
  import { command } from './command-extension';
@@ -44,7 +44,7 @@ export const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }
44
44
  const id = dxn.toString();
45
45
  const identity = useIdentity()!;
46
46
  const members = useMembers(space?.key);
47
- const queue = useQueue<DataType.Message>(dxn, { pollInterval: 1_000 });
47
+ const queue = useQueue<MessageType>(dxn, { pollInterval: 1_000 });
48
48
  const activity = useStatus(space, id);
49
49
  const { t } = useTranslation(THREAD_PLUGIN);
50
50
  // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.
@@ -84,7 +84,7 @@ export const ChatContainer = ({ space, dxn, context, current, autoFocusTextbox }
84
84
  }
85
85
 
86
86
  queue.append([
87
- create(DataType.Message, {
87
+ createStatic(MessageType, {
88
88
  sender: { identityDid: identity.did },
89
89
  created: new Date().toISOString(),
90
90
  blocks: [{ type: 'text', text: messageRef.current }],
@@ -42,17 +42,25 @@ const ToggleResolvedButton = ({
42
42
  const { t } = useTranslation(THREAD_PLUGIN);
43
43
  const label = t(isResolved ? 'mark as unresolved label' : 'mark as resolved label');
44
44
  return (
45
- <Tooltip.Trigger asChild content={label}>
46
- <Button
47
- variant='ghost'
48
- data-testid='thread.toggle-resolved'
49
- onClick={onResolve}
50
- classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}
51
- >
52
- <span className='sr-only'>{label}</span>
53
- {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}
54
- </Button>
55
- </Tooltip.Trigger>
45
+ <Tooltip.Root>
46
+ <Tooltip.Trigger asChild>
47
+ <Button
48
+ variant='ghost'
49
+ data-testid='thread.toggle-resolved'
50
+ onClick={onResolve}
51
+ classNames={[commentControlClassNames, !isResolved && hoverableControlItem]}
52
+ >
53
+ <span className='sr-only'>{label}</span>
54
+ {isResolved ? <CheckCircle className={sizeClass} weight='fill' /> : <CheckCircle className={sizeClass} />}
55
+ </Button>
56
+ </Tooltip.Trigger>
57
+ <Tooltip.Portal>
58
+ <Tooltip.Content>
59
+ {label}
60
+ <Tooltip.Arrow />
61
+ </Tooltip.Content>
62
+ </Tooltip.Portal>
63
+ </Tooltip.Root>
56
64
  );
57
65
  };
58
66
 
@@ -60,17 +68,25 @@ const DeleteThreadButton = ({ onDelete }: { onDelete: () => void }) => {
60
68
  const { t } = useTranslation(THREAD_PLUGIN);
61
69
  const label = t('delete thread label');
62
70
  return (
63
- <Tooltip.Trigger asChild content={label}>
64
- <Button
65
- variant='ghost'
66
- data-testid='thread.delete'
67
- onClick={onDelete}
68
- classNames={[commentControlClassNames, hoverableControlItem]}
69
- >
70
- <span className='sr-only'>{label}</span>
71
- <X className={sizeClass} />
72
- </Button>
73
- </Tooltip.Trigger>
71
+ <Tooltip.Root>
72
+ <Tooltip.Trigger asChild>
73
+ <Button
74
+ variant='ghost'
75
+ data-testid='thread.delete'
76
+ onClick={onDelete}
77
+ classNames={[commentControlClassNames, hoverableControlItem]}
78
+ >
79
+ <span className='sr-only'>{label}</span>
80
+ <X className={sizeClass} />
81
+ </Button>
82
+ </Tooltip.Trigger>
83
+ <Tooltip.Portal>
84
+ <Tooltip.Content classNames='z-30'>
85
+ {label}
86
+ <Tooltip.Arrow />
87
+ </Tooltip.Content>
88
+ </Tooltip.Portal>
89
+ </Tooltip.Root>
74
90
  );
75
91
  };
76
92
 
@@ -140,9 +156,17 @@ export const CommentContainer = ({
140
156
  )}
141
157
  >
142
158
  {detached ? (
143
- <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>
144
- <ThreadHeading detached>{thread.name}</ThreadHeading>
145
- </Tooltip.Trigger>
159
+ <Tooltip.Root>
160
+ <Tooltip.Trigger asChild>
161
+ <ThreadHeading detached>{thread.name}</ThreadHeading>
162
+ </Tooltip.Trigger>
163
+ <Tooltip.Portal>
164
+ <Tooltip.Content classNames='z-30' side='top'>
165
+ {t('detached thread label')}
166
+ <Tooltip.Arrow />
167
+ </Tooltip.Content>
168
+ </Tooltip.Portal>
169
+ </Tooltip.Root>
146
170
  ) : (
147
171
  <ThreadHeading>{thread.name}</ThreadHeading>
148
172
  )}
@@ -14,7 +14,7 @@ import { faker } from '@dxos/random';
14
14
  import { Filter, fullyQualifiedId, useQuery, useSpace } from '@dxos/react-client/echo';
15
15
  import { useIdentity } from '@dxos/react-client/halo';
16
16
  import { type ClientRepeatedComponentProps, ClientRepeater } from '@dxos/react-client/testing';
17
- import { DataType } from '@dxos/schema';
17
+ import { MessageType } from '@dxos/schema';
18
18
  import { withLayout, withTheme } from '@dxos/storybook-utils';
19
19
 
20
20
  import { CommentsContainer } from './CommentsContainer';
@@ -26,7 +26,7 @@ faker.seed(1);
26
26
  const Story = ({ spaceKey }: ClientRepeatedComponentProps) => {
27
27
  const identity = useIdentity();
28
28
  const space = useSpace(spaceKey);
29
- const threads = useQuery(space, Filter.type(ThreadType));
29
+ const threads = useQuery(space, Filter.schema(ThreadType));
30
30
  const [detached, setDetached] = useState<string[]>([]);
31
31
 
32
32
  useEffect(() => {
@@ -54,20 +54,18 @@ const Story = ({ spaceKey }: ClientRepeatedComponentProps) => {
54
54
  );
55
55
  };
56
56
 
57
+ export const Default = {};
58
+
57
59
  const meta: Meta = {
58
60
  title: 'plugins/plugin-thread/Comments',
59
61
  // TODO(wittjosiah): Use decorator.
60
- render: () => <ClientRepeater component={Story} createIdentity createSpace types={[ThreadType, DataType.Message]} />,
62
+ render: () => <ClientRepeater component={Story} createIdentity createSpace types={[ThreadType, MessageType]} />,
61
63
  decorators: [
62
64
  withTheme,
63
- withLayout({ fullscreen: true }),
64
- withPluginManager({
65
- plugins: [IntentPlugin()],
66
- }),
65
+ withLayout({ fullscreen: true, tooltips: true }),
66
+ withPluginManager({ plugins: [IntentPlugin()] }),
67
67
  ],
68
68
  parameters: { translations },
69
69
  };
70
70
 
71
71
  export default meta;
72
-
73
- export const Default = {};
@@ -8,7 +8,7 @@ import React, { useEffect } from 'react';
8
8
  import { type ThreadType } from '@dxos/plugin-space/types';
9
9
  import { fullyQualifiedId } from '@dxos/react-client/echo';
10
10
  import { useTranslation, Trans } from '@dxos/react-ui';
11
- import { descriptionMessage, mx } from '@dxos/react-ui-theme';
11
+ import { descriptionText, mx } from '@dxos/react-ui-theme';
12
12
 
13
13
  import { CommentContainer } from './CommentContainer';
14
14
  import { type ThreadContainerProps } from './types';
@@ -59,7 +59,13 @@ export const CommentsContainer = ({
59
59
  );
60
60
  })
61
61
  ) : (
62
- <div role='alert' className={mx(descriptionMessage, 'place-self-center rounded-lg text-center m-4')}>
62
+ <div
63
+ role='alert'
64
+ className={mx(
65
+ descriptionText,
66
+ 'place-self-center border border-dashed border-unAccent rounded-lg text-center p-4 m-4',
67
+ )}
68
+ >
63
69
  <h2 className='mbe-2 font-medium text-baseText'>{t('no comments title')}</h2>
64
70
  <p>
65
71
  <Trans