@dxos/plugin-transcription 0.8.4-main.2e9d522 → 0.8.4-main.406dc2a

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 (170) hide show
  1. package/dist/lib/browser/TranscriptContainer-QN5WUMWJ.mjs +11 -0
  2. package/dist/lib/browser/blueprint-definition-GO6GTEBT.mjs +150 -0
  3. package/dist/lib/browser/blueprint-definition-GO6GTEBT.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-4FJIYH7T.mjs → chunk-77NWYLC6.mjs} +2 -2
  5. package/dist/lib/browser/{chunk-5WH45KBY.mjs → chunk-7LNCQDTT.mjs} +9 -4
  6. package/dist/lib/browser/chunk-7LNCQDTT.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-FFEPEPCU.mjs → chunk-COBQIZ6B.mjs} +85 -94
  8. package/dist/lib/browser/chunk-COBQIZ6B.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-GGHMOEKZ.mjs +63 -0
  10. package/dist/lib/browser/chunk-GGHMOEKZ.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-U6QBOGTN.mjs → chunk-LCK3YRQF.mjs} +5 -5
  12. package/dist/lib/browser/chunk-LCK3YRQF.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-5KPYIC3N.mjs → chunk-ZS2FXKEF.mjs} +410 -418
  14. package/dist/lib/browser/chunk-ZS2FXKEF.mjs.map +7 -0
  15. package/dist/lib/browser/index.mjs +22 -18
  16. package/dist/lib/browser/index.mjs.map +3 -3
  17. package/dist/lib/browser/intent-resolver-52EPFRMR.mjs +25 -0
  18. package/dist/lib/browser/intent-resolver-52EPFRMR.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-E5D5AE3F.mjs → react-surface-LCP2D2MF.mjs} +10 -10
  21. package/dist/lib/browser/react-surface-LCP2D2MF.mjs.map +7 -0
  22. package/dist/lib/browser/{transcriber-PXT4QBFY.mjs → transcriber-NG5MRCP6.mjs} +7 -7
  23. package/dist/lib/browser/transcriber-NG5MRCP6.mjs.map +7 -0
  24. package/dist/lib/browser/types/index.mjs +6 -8
  25. package/dist/lib/node-esm/{TranscriptContainer-VBAOM5DG.mjs → TranscriptContainer-WCUWVVSD.mjs} +4 -4
  26. package/dist/lib/node-esm/blueprint-definition-6SU7GLBR.mjs +151 -0
  27. package/dist/lib/node-esm/blueprint-definition-6SU7GLBR.mjs.map +7 -0
  28. package/dist/lib/node-esm/{chunk-HT3W7LDP.mjs → chunk-A6SB234F.mjs} +85 -94
  29. package/dist/lib/node-esm/chunk-A6SB234F.mjs.map +7 -0
  30. package/dist/lib/node-esm/chunk-FTTZ4YSX.mjs +64 -0
  31. package/dist/lib/node-esm/chunk-FTTZ4YSX.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-XMUCZBP3.mjs → chunk-KLTPFUKN.mjs} +8 -4
  33. package/dist/lib/node-esm/chunk-KLTPFUKN.mjs.map +7 -0
  34. package/dist/lib/node-esm/{chunk-Y2B4HWSS.mjs → chunk-N5Z4SKPH.mjs} +2 -2
  35. package/dist/lib/node-esm/{chunk-TJKAO7VR.mjs → chunk-PEZRQYKO.mjs} +410 -418
  36. package/dist/lib/node-esm/chunk-PEZRQYKO.mjs.map +7 -0
  37. package/dist/lib/node-esm/{chunk-RHF2ALML.mjs → chunk-RWRG3S2O.mjs} +5 -5
  38. package/dist/lib/node-esm/chunk-RWRG3S2O.mjs.map +7 -0
  39. package/dist/lib/node-esm/index.mjs +22 -18
  40. package/dist/lib/node-esm/index.mjs.map +3 -3
  41. package/dist/lib/node-esm/intent-resolver-DZBQQRHN.mjs +26 -0
  42. package/dist/lib/node-esm/intent-resolver-DZBQQRHN.mjs.map +7 -0
  43. package/dist/lib/node-esm/meta.json +1 -1
  44. package/dist/lib/node-esm/{react-surface-QRDJOHN5.mjs → react-surface-7UC2YXX2.mjs} +10 -10
  45. package/dist/lib/node-esm/react-surface-7UC2YXX2.mjs.map +7 -0
  46. package/dist/lib/node-esm/{transcriber-YUTEVANE.mjs → transcriber-SMU7HD6F.mjs} +7 -7
  47. package/dist/lib/node-esm/transcriber-SMU7HD6F.mjs.map +7 -0
  48. package/dist/lib/node-esm/types/index.mjs +6 -8
  49. package/dist/types/src/TranscriptionPlugin.d.ts +1 -1
  50. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  51. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  52. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  53. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  54. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  55. package/dist/types/src/capabilities/index.d.ts +3 -2
  56. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  57. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  58. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  59. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  60. package/dist/types/src/capabilities/transcriber.d.ts +1 -1
  61. package/dist/types/src/capabilities/transcriber.d.ts.map +1 -1
  62. package/dist/types/src/components/Transcript/Transcript.d.ts +5 -5
  63. package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
  64. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +31 -16
  65. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  66. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +3 -3
  67. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -1
  68. package/dist/types/src/components/Transcript/transcript-extension.d.ts +1 -5
  69. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -1
  70. package/dist/types/src/components/TranscriptContainer.d.ts +2 -2
  71. package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
  72. package/dist/types/src/components/stories/FileTranscription.stories.d.ts +8 -4
  73. package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +13 -6
  75. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +10 -6
  77. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +1 -1
  78. package/dist/types/src/components/stories/TranscriptionStory.d.ts +2 -1
  79. package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +1 -1
  80. package/dist/types/src/functions/index.d.ts +3 -0
  81. package/dist/types/src/functions/index.d.ts.map +1 -0
  82. package/dist/types/src/functions/open.d.ts +7 -0
  83. package/dist/types/src/functions/open.d.ts.map +1 -0
  84. package/dist/types/src/functions/summarize.d.ts +11 -0
  85. package/dist/types/src/functions/summarize.d.ts.map +1 -0
  86. package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
  87. package/dist/types/src/hooks/useVoiceInput.d.ts.map +1 -1
  88. package/dist/types/src/meta.d.ts +0 -1
  89. package/dist/types/src/meta.d.ts.map +1 -1
  90. package/dist/types/src/segments-normalization/normalization.d.ts +376 -325
  91. package/dist/types/src/segments-normalization/normalization.d.ts.map +1 -1
  92. package/dist/types/src/testing/testing.d.ts +2 -2
  93. package/dist/types/src/testing/testing.d.ts.map +1 -1
  94. package/dist/types/src/transcriber/media-stream-recorder.d.ts +1 -1
  95. package/dist/types/src/transcriber/media-stream-recorder.d.ts.map +1 -1
  96. package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
  97. package/dist/types/src/transcriber/transcription-manager.d.ts +3 -7
  98. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  99. package/dist/types/src/types/Transcript.d.ts +30 -0
  100. package/dist/types/src/types/Transcript.d.ts.map +1 -0
  101. package/dist/types/src/types/TranscriptAction.d.ts +23 -0
  102. package/dist/types/src/types/TranscriptAction.d.ts.map +1 -0
  103. package/dist/types/src/types/index.d.ts +2 -1
  104. package/dist/types/src/types/index.d.ts.map +1 -1
  105. package/dist/types/src/types/types.d.ts +0 -26
  106. package/dist/types/src/types/types.d.ts.map +1 -1
  107. package/dist/types/tsconfig.tsbuildinfo +1 -1
  108. package/package.json +63 -62
  109. package/src/TranscriptionPlugin.tsx +57 -53
  110. package/src/capabilities/blueprint-definition.ts +31 -0
  111. package/src/capabilities/capabilities.ts +6 -6
  112. package/src/capabilities/index.ts +1 -0
  113. package/src/capabilities/intent-resolver.ts +5 -11
  114. package/src/capabilities/react-surface.tsx +2 -2
  115. package/src/capabilities/transcriber.ts +3 -2
  116. package/src/components/Transcript/Transcript.stories.tsx +34 -31
  117. package/src/components/Transcript/Transcript.tsx +20 -27
  118. package/src/components/Transcript/deprecated/OldTranscript.tsx +9 -9
  119. package/src/components/Transcript/transcript-extension.ts +2 -39
  120. package/src/components/TranscriptContainer.tsx +7 -6
  121. package/src/components/stories/FileTranscription.stories.tsx +49 -36
  122. package/src/components/stories/KeyWordRecognition.stories.tsx +17 -10
  123. package/src/components/stories/MicrophoneTranscription.stories.tsx +43 -38
  124. package/src/components/stories/TranscriptionStory.tsx +10 -6
  125. package/src/functions/index.ts +6 -0
  126. package/src/functions/open.ts +39 -0
  127. package/src/functions/summarize.ts +103 -0
  128. package/src/hooks/useAudioFile.ts +49 -53
  129. package/src/hooks/useVoiceInput.ts +3 -2
  130. package/src/meta.ts +1 -3
  131. package/src/model/model.test.ts +1 -1
  132. package/src/segments-normalization/message-normalizer.ts +1 -1
  133. package/src/segments-normalization/normalization.test.ts +5 -5
  134. package/src/segments-normalization/normalization.ts +38 -37
  135. package/src/testing/testing.ts +7 -7
  136. package/src/transcriber/media-stream-recorder.ts +1 -1
  137. package/src/transcriber/transcriber.browser.test.ts +2 -1
  138. package/src/transcriber/transcriber.ts +2 -1
  139. package/src/transcriber/transcription-manager.ts +17 -38
  140. package/src/types/{schema.ts → Transcript.ts} +12 -9
  141. package/src/types/TranscriptAction.ts +24 -0
  142. package/src/types/index.ts +2 -1
  143. package/src/types/types.ts +0 -23
  144. package/dist/lib/browser/TranscriptContainer-6WCKCXQ6.mjs +0 -11
  145. package/dist/lib/browser/chunk-5KPYIC3N.mjs.map +0 -7
  146. package/dist/lib/browser/chunk-5WH45KBY.mjs.map +0 -7
  147. package/dist/lib/browser/chunk-FFEPEPCU.mjs.map +0 -7
  148. package/dist/lib/browser/chunk-R7INNNUQ.mjs +0 -55
  149. package/dist/lib/browser/chunk-R7INNNUQ.mjs.map +0 -7
  150. package/dist/lib/browser/chunk-U6QBOGTN.mjs.map +0 -7
  151. package/dist/lib/browser/intent-resolver-3O33MMP5.mjs +0 -30
  152. package/dist/lib/browser/intent-resolver-3O33MMP5.mjs.map +0 -7
  153. package/dist/lib/browser/react-surface-E5D5AE3F.mjs.map +0 -7
  154. package/dist/lib/browser/transcriber-PXT4QBFY.mjs.map +0 -7
  155. package/dist/lib/node-esm/chunk-HT3W7LDP.mjs.map +0 -7
  156. package/dist/lib/node-esm/chunk-RHF2ALML.mjs.map +0 -7
  157. package/dist/lib/node-esm/chunk-TJKAO7VR.mjs.map +0 -7
  158. package/dist/lib/node-esm/chunk-U65ZWK3L.mjs +0 -56
  159. package/dist/lib/node-esm/chunk-U65ZWK3L.mjs.map +0 -7
  160. package/dist/lib/node-esm/chunk-XMUCZBP3.mjs.map +0 -7
  161. package/dist/lib/node-esm/intent-resolver-YMN5SXNC.mjs +0 -31
  162. package/dist/lib/node-esm/intent-resolver-YMN5SXNC.mjs.map +0 -7
  163. package/dist/lib/node-esm/react-surface-QRDJOHN5.mjs.map +0 -7
  164. package/dist/lib/node-esm/transcriber-YUTEVANE.mjs.map +0 -7
  165. package/dist/types/src/types/schema.d.ts +0 -41
  166. package/dist/types/src/types/schema.d.ts.map +0 -1
  167. /package/dist/lib/browser/{TranscriptContainer-6WCKCXQ6.mjs.map → TranscriptContainer-QN5WUMWJ.mjs.map} +0 -0
  168. /package/dist/lib/browser/{chunk-4FJIYH7T.mjs.map → chunk-77NWYLC6.mjs.map} +0 -0
  169. /package/dist/lib/node-esm/{TranscriptContainer-VBAOM5DG.mjs.map → TranscriptContainer-WCUWVVSD.mjs.map} +0 -0
  170. /package/dist/lib/node-esm/{chunk-Y2B4HWSS.mjs.map → chunk-N5Z4SKPH.mjs.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/plugin-transcription",
3
- "version": "0.8.4-main.2e9d522",
3
+ "version": "0.8.4-main.406dc2a",
4
4
  "description": "Voice transcription.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -9,11 +9,13 @@
9
9
  "type": "module",
10
10
  "exports": {
11
11
  ".": {
12
+ "source": "./src/index.ts",
12
13
  "types": "./dist/types/src/index.d.ts",
13
14
  "browser": "./dist/lib/browser/index.mjs",
14
15
  "node": "./dist/lib/node-esm/index.mjs"
15
16
  },
16
17
  "./types": {
18
+ "source": "./src/types/index.ts",
17
19
  "types": "./dist/types/src/types/index.d.ts",
18
20
  "browser": "./dist/lib/browser/types/index.mjs",
19
21
  "node": "./dist/lib/node-esm/types/index.mjs"
@@ -32,10 +34,10 @@
32
34
  "src"
33
35
  ],
34
36
  "dependencies": {
35
- "@codemirror/state": "^6.4.1",
36
- "@codemirror/view": "^6.34.1",
37
+ "@codemirror/state": "^6.5.2",
38
+ "@codemirror/view": "^6.38.4",
37
39
  "@preact-signals/safe-react": "^0.9.0",
38
- "@preact/signals-core": "^1.9.0",
40
+ "@preact/signals-core": "^1.12.1",
39
41
  "date-fns": "^3.3.1",
40
42
  "extendable-media-recorder": "^9.2.19",
41
43
  "extendable-media-recorder-wav-encoder": "^7.0.123",
@@ -44,73 +46,72 @@
44
46
  "react-router-dom": "^6.4.0",
45
47
  "react-use": "^17.5.1",
46
48
  "wavefile": "^11.0.0",
47
- "@dxos/ai": "0.8.4-main.2e9d522",
48
- "@dxos/app-framework": "0.8.4-main.2e9d522",
49
- "@dxos/assistant": "0.8.4-main.2e9d522",
50
- "@dxos/async": "0.8.4-main.2e9d522",
51
- "@dxos/blueprints": "0.8.4-main.2e9d522",
52
- "@dxos/client": "0.8.4-main.2e9d522",
53
- "@dxos/codec-protobuf": "0.8.4-main.2e9d522",
54
- "@dxos/context": "0.8.4-main.2e9d522",
55
- "@dxos/display-name": "0.8.4-main.2e9d522",
56
- "@dxos/echo": "0.8.4-main.2e9d522",
57
- "@dxos/debug": "0.8.4-main.2e9d522",
58
- "@dxos/echo-db": "0.8.4-main.2e9d522",
59
- "@dxos/echo-schema": "0.8.4-main.2e9d522",
60
- "@dxos/functions": "0.8.4-main.2e9d522",
61
- "@dxos/invariant": "0.8.4-main.2e9d522",
62
- "@dxos/keys": "0.8.4-main.2e9d522",
63
- "@dxos/live-object": "0.8.4-main.2e9d522",
64
- "@dxos/local-storage": "0.8.4-main.2e9d522",
65
- "@dxos/log": "0.8.4-main.2e9d522",
66
- "@dxos/plugin-client": "0.8.4-main.2e9d522",
67
- "@dxos/plugin-deck": "0.8.4-main.2e9d522",
68
- "@dxos/plugin-graph": "0.8.4-main.2e9d522",
69
- "@dxos/plugin-markdown": "0.8.4-main.2e9d522",
70
- "@dxos/plugin-space": "0.8.4-main.2e9d522",
71
- "@dxos/plugin-thread": "0.8.4-main.2e9d522",
72
- "@dxos/protocols": "0.8.4-main.2e9d522",
73
- "@dxos/react-client": "0.8.4-main.2e9d522",
74
- "@dxos/react-ui-attention": "0.8.4-main.2e9d522",
75
- "@dxos/react-edge-client": "0.8.4-main.2e9d522",
76
- "@dxos/react-ui-components": "0.8.4-main.2e9d522",
77
- "@dxos/react-ui-editor": "0.8.4-main.2e9d522",
78
- "@dxos/react-ui-form": "0.8.4-main.2e9d522",
79
- "@dxos/react-ui-sfx": "0.8.4-main.2e9d522",
80
- "@dxos/react-ui-grid": "0.8.4-main.2e9d522",
81
- "@dxos/react-ui-stack": "0.8.4-main.2e9d522",
82
- "@dxos/schema": "0.8.4-main.2e9d522",
83
- "@dxos/tracing": "0.8.4-main.2e9d522",
84
- "@dxos/util": "0.8.4-main.2e9d522"
49
+ "@dxos/ai": "0.8.4-main.406dc2a",
50
+ "@dxos/app-framework": "0.8.4-main.406dc2a",
51
+ "@dxos/assistant": "0.8.4-main.406dc2a",
52
+ "@dxos/async": "0.8.4-main.406dc2a",
53
+ "@dxos/codec-protobuf": "0.8.4-main.406dc2a",
54
+ "@dxos/client": "0.8.4-main.406dc2a",
55
+ "@dxos/context": "0.8.4-main.406dc2a",
56
+ "@dxos/blueprints": "0.8.4-main.406dc2a",
57
+ "@dxos/debug": "0.8.4-main.406dc2a",
58
+ "@dxos/display-name": "0.8.4-main.406dc2a",
59
+ "@dxos/echo": "0.8.4-main.406dc2a",
60
+ "@dxos/echo-db": "0.8.4-main.406dc2a",
61
+ "@dxos/functions": "0.8.4-main.406dc2a",
62
+ "@dxos/keys": "0.8.4-main.406dc2a",
63
+ "@dxos/live-object": "0.8.4-main.406dc2a",
64
+ "@dxos/local-storage": "0.8.4-main.406dc2a",
65
+ "@dxos/invariant": "0.8.4-main.406dc2a",
66
+ "@dxos/log": "0.8.4-main.406dc2a",
67
+ "@dxos/plugin-client": "0.8.4-main.406dc2a",
68
+ "@dxos/plugin-deck": "0.8.4-main.406dc2a",
69
+ "@dxos/plugin-graph": "0.8.4-main.406dc2a",
70
+ "@dxos/plugin-space": "0.8.4-main.406dc2a",
71
+ "@dxos/plugin-thread": "0.8.4-main.406dc2a",
72
+ "@dxos/plugin-markdown": "0.8.4-main.406dc2a",
73
+ "@dxos/protocols": "0.8.4-main.406dc2a",
74
+ "@dxos/react-client": "0.8.4-main.406dc2a",
75
+ "@dxos/react-ui-attention": "0.8.4-main.406dc2a",
76
+ "@dxos/react-ui-components": "0.8.4-main.406dc2a",
77
+ "@dxos/react-ui-editor": "0.8.4-main.406dc2a",
78
+ "@dxos/react-ui-grid": "0.8.4-main.406dc2a",
79
+ "@dxos/react-ui-form": "0.8.4-main.406dc2a",
80
+ "@dxos/react-ui-sfx": "0.8.4-main.406dc2a",
81
+ "@dxos/react-ui-stack": "0.8.4-main.406dc2a",
82
+ "@dxos/schema": "0.8.4-main.406dc2a",
83
+ "@dxos/react-edge-client": "0.8.4-main.406dc2a",
84
+ "@dxos/util": "0.8.4-main.406dc2a",
85
+ "@dxos/tracing": "0.8.4-main.406dc2a"
85
86
  },
86
87
  "devDependencies": {
87
- "@effect-rx/rx-react": "0.38.0",
88
- "@effect/platform": "0.89.0",
88
+ "@effect-rx/rx-react": "0.42.4",
89
+ "@effect/platform": "0.92.1",
89
90
  "@types/dom-speech-recognition": "^0.0.6",
90
- "@types/react": "~18.2.0",
91
- "effect": "3.17.0",
92
- "react": "~18.2.0",
93
- "react-dom": "~18.2.0",
91
+ "@types/react": "~19.2.2",
92
+ "effect": "3.18.3",
93
+ "react": "~19.2.0",
94
+ "react-dom": "~19.2.0",
94
95
  "tailwindcss": "~3.4.1",
95
- "@dxos/plugin-preview": "0.8.4-main.2e9d522",
96
- "@dxos/plugin-storybook-layout": "0.8.4-main.2e9d522",
97
- "@dxos/plugin-theme": "0.8.4-main.2e9d522",
98
- "@dxos/random": "0.8.4-main.2e9d522",
99
- "@dxos/react-ui": "0.8.4-main.2e9d522",
100
- "@dxos/react-ui-form": "0.8.4-main.2e9d522",
101
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.2e9d522",
102
- "@dxos/react-ui-theme": "0.8.4-main.2e9d522",
103
- "@dxos/storybook-utils": "0.8.4-main.2e9d522",
104
- "@dxos/test-utils": "0.8.4-main.2e9d522"
96
+ "@dxos/plugin-preview": "0.8.4-main.406dc2a",
97
+ "@dxos/plugin-storybook-layout": "0.8.4-main.406dc2a",
98
+ "@dxos/plugin-theme": "0.8.4-main.406dc2a",
99
+ "@dxos/random": "0.8.4-main.406dc2a",
100
+ "@dxos/react-ui": "0.8.4-main.406dc2a",
101
+ "@dxos/react-ui-form": "0.8.4-main.406dc2a",
102
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.406dc2a",
103
+ "@dxos/storybook-utils": "0.8.4-main.406dc2a",
104
+ "@dxos/react-ui-theme": "0.8.4-main.406dc2a",
105
+ "@dxos/test-utils": "0.8.4-main.406dc2a"
105
106
  },
106
107
  "peerDependencies": {
107
108
  "@effect-rx/rx-react": "^0.34.1",
108
109
  "@effect/platform": "^0.80.12",
109
110
  "effect": "^3.13.3",
110
- "react": "~18.2.0",
111
- "react-dom": "~18.2.0",
112
- "@dxos/react-ui": "0.8.4-main.2e9d522",
113
- "@dxos/react-ui-theme": "0.8.4-main.2e9d522"
111
+ "react": "^19.0.0",
112
+ "react-dom": "^19.0.0",
113
+ "@dxos/react-ui": "0.8.4-main.406dc2a",
114
+ "@dxos/react-ui-theme": "0.8.4-main.406dc2a"
114
115
  },
115
116
  "publishConfig": {
116
117
  "access": "public"
@@ -8,60 +8,64 @@ import { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';
8
8
  import { getSpace } from '@dxos/react-client/echo';
9
9
  import { DataType } from '@dxos/schema';
10
10
 
11
- import { IntentResolver, ReactSurface, Transcriber } from './capabilities';
12
- import { renderMarkdown } from './components';
11
+ import { BlueprintDefinition, IntentResolver, ReactSurface, Transcriber } from './capabilities';
12
+ import { renderByline } from './components';
13
13
  import { meta } from './meta';
14
14
  import { translations } from './translations';
15
- import { TranscriptType } from './types';
15
+ import { Transcript } from './types';
16
16
 
17
- export const TranscriptionPlugin = () =>
18
- definePlugin(meta, [
19
- defineModule({
20
- id: `${meta.id}/module/translations`,
21
- activatesOn: Events.SetupTranslations,
22
- activate: () => contributes(Capabilities.Translations, translations),
23
- }),
24
- defineModule({
25
- id: `${meta.id}/module/metadata`,
26
- activatesOn: Events.SetupMetadata,
27
- activate: (context) =>
28
- contributes(Capabilities.Metadata, {
29
- id: TranscriptType.typename,
30
- metadata: {
31
- icon: 'ph--subtitles--regular',
32
- // TODO(wittjosiah): Factor out. Artifact? Separate capability?
33
- getTextContent: async (transcript: TranscriptType) => {
34
- const space = getSpace(transcript);
35
- const members = space?.members.get().map((member) => member.identity) ?? [];
36
- const queue = space?.queues.get<DataType.Message>(transcript.queue.dxn);
37
- await queue?.refresh();
38
- const content = queue?.objects
39
- .filter((message) => Obj.instanceOf(DataType.Message, message))
40
- .flatMap((message, index) => renderMarkdown(members)(message, index))
41
- .join('\n\n');
42
- return content;
43
- },
17
+ export const TranscriptionPlugin = definePlugin(meta, () => [
18
+ defineModule({
19
+ id: `${meta.id}/module/translations`,
20
+ activatesOn: Events.SetupTranslations,
21
+ activate: () => contributes(Capabilities.Translations, translations),
22
+ }),
23
+ defineModule({
24
+ id: `${meta.id}/module/metadata`,
25
+ activatesOn: Events.SetupMetadata,
26
+ activate: (context) =>
27
+ contributes(Capabilities.Metadata, {
28
+ id: Transcript.Transcript.typename,
29
+ metadata: {
30
+ icon: 'ph--subtitles--regular',
31
+ // TODO(wittjosiah): Factor out. Artifact? Separate capability?
32
+ getTextContent: async (transcript: Transcript.Transcript) => {
33
+ const space = getSpace(transcript);
34
+ const members = space?.members.get().map((member) => member.identity) ?? [];
35
+ const queue = space?.queues.get<DataType.Message>(transcript.queue.dxn);
36
+ await queue?.refresh();
37
+ const content = queue?.objects
38
+ .filter((message) => Obj.instanceOf(DataType.Message, message))
39
+ .flatMap((message, index) => renderByline(members)(message, index))
40
+ .join('\n\n');
41
+ return content;
44
42
  },
45
- }),
46
- }),
47
- defineModule({
48
- id: `${meta.id}/module/schema`,
49
- activatesOn: ClientEvents.SetupSchema,
50
- activate: () => [contributes(ClientCapabilities.Schema, [TranscriptType])],
51
- }),
52
- defineModule({
53
- id: `${meta.id}/module/react-surface`,
54
- activatesOn: Events.SetupReactSurface,
55
- activate: ReactSurface,
56
- }),
57
- defineModule({
58
- id: `${meta.id}/module/intent-resolver`,
59
- activatesOn: Events.SetupIntentResolver,
60
- activate: IntentResolver,
61
- }),
62
- defineModule({
63
- id: `${meta.id}/module/transcription`,
64
- activatesOn: Events.SetupAppGraph,
65
- activate: Transcriber,
66
- }),
67
- ]);
43
+ },
44
+ }),
45
+ }),
46
+ defineModule({
47
+ id: `${meta.id}/module/schema`,
48
+ activatesOn: ClientEvents.SetupSchema,
49
+ activate: () => [contributes(ClientCapabilities.Schema, [Transcript.Transcript])],
50
+ }),
51
+ defineModule({
52
+ id: `${meta.id}/module/react-surface`,
53
+ activatesOn: Events.SetupReactSurface,
54
+ activate: ReactSurface,
55
+ }),
56
+ defineModule({
57
+ id: `${meta.id}/module/intent-resolver`,
58
+ activatesOn: Events.SetupIntentResolver,
59
+ activate: IntentResolver,
60
+ }),
61
+ defineModule({
62
+ id: `${meta.id}/module/transcription`,
63
+ activatesOn: Events.SetupAppGraph,
64
+ activate: Transcriber,
65
+ }),
66
+ defineModule({
67
+ id: `${meta.id}/module/blueprint`,
68
+ activatesOn: Events.SetupArtifactDefinition,
69
+ activate: BlueprintDefinition,
70
+ }),
71
+ ]);
@@ -0,0 +1,31 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ import { Capabilities, contributes } from '@dxos/app-framework';
6
+ import { Blueprint, Template } from '@dxos/blueprints';
7
+ import { type FunctionDefinition } from '@dxos/functions';
8
+ import { trim } from '@dxos/util';
9
+
10
+ import { open, summarize } from '../functions';
11
+
12
+ const functions: FunctionDefinition[] = [open, summarize];
13
+
14
+ export default () => {
15
+ return [
16
+ contributes(Capabilities.Functions, functions),
17
+ contributes(
18
+ Capabilities.BlueprintDefinition,
19
+ Blueprint.make({
20
+ key: 'dxos.org/blueprint/transcription',
21
+ name: 'Transcription',
22
+ tools: Blueprint.toolDefinitions({ functions }),
23
+ instructions: Template.make({
24
+ source: trim`
25
+ You can open and summarize a meeting transcript.
26
+ `,
27
+ }),
28
+ }),
29
+ ),
30
+ ];
31
+ };
@@ -4,13 +4,13 @@
4
4
 
5
5
  import { defineCapability } from '@dxos/app-framework';
6
6
 
7
- import { TRANSCRIPTION_PLUGIN } from '../meta';
7
+ import { meta } from '../meta';
8
8
  import {
9
- type TranscriberParams,
9
+ type MediaStreamRecorderParams,
10
10
  type Transcriber,
11
- type TranscriptionManager,
11
+ type TranscriberParams,
12
12
  type TranscriptMessageEnricher,
13
- type MediaStreamRecorderParams,
13
+ type TranscriptionManager,
14
14
  } from '../transcriber';
15
15
 
16
16
  export namespace TranscriptionCapabilities {
@@ -21,13 +21,13 @@ export namespace TranscriptionCapabilities {
21
21
  onSegments: TranscriberParams['onSegments'];
22
22
  };
23
23
  export type GetTranscriber = (props: GetTranscriberProps) => Transcriber;
24
- export const Transcriber = defineCapability<GetTranscriber>(`${TRANSCRIPTION_PLUGIN}/capability/transcriber`);
24
+ export const Transcriber = defineCapability<GetTranscriber>(`${meta.id}/capability/transcriber`);
25
25
 
26
26
  export type GetTranscriptionManagerProps = {
27
27
  messageEnricher?: TranscriptMessageEnricher;
28
28
  };
29
29
  export type GetTranscriptionManager = (props: GetTranscriptionManagerProps) => TranscriptionManager;
30
30
  export const TranscriptionManager = defineCapability<GetTranscriptionManager>(
31
- `${TRANSCRIPTION_PLUGIN}/capability/transcription-manager`,
31
+ `${meta.id}/capability/transcription-manager`,
32
32
  );
33
33
  }
@@ -4,6 +4,7 @@
4
4
 
5
5
  import { lazy } from '@dxos/app-framework';
6
6
 
7
+ export const BlueprintDefinition = lazy(() => import('./blueprint-definition'));
7
8
  export const IntentResolver = lazy(() => import('./intent-resolver'));
8
9
  export const ReactSurface = lazy(() => import('./react-surface'));
9
10
  export const Transcriber = lazy(() => import('./transcriber'));
@@ -2,22 +2,16 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Capabilities, contributes, createResolver, type PluginContext } from '@dxos/app-framework';
6
- import { type Key, Obj, Ref } from '@dxos/echo';
7
- import { createQueueDXN } from '@dxos/echo-schema';
5
+ import { Capabilities, type PluginContext, contributes, createResolver } from '@dxos/app-framework';
8
6
 
9
- import { TranscriptionAction, TranscriptType } from '../types';
7
+ import { Transcript, TranscriptAction } from '../types';
10
8
 
11
9
  export default (context: PluginContext) =>
12
10
  contributes(Capabilities.IntentResolver, [
13
11
  createResolver({
14
- intent: TranscriptionAction.Create,
15
- resolve: ({ name, spaceId }) => {
16
- const transcript = Obj.make(TranscriptType, {
17
- // TODO(dmaretskyi): Use space.queues.create() instead.
18
- queue: Ref.fromDXN(createQueueDXN(spaceId as Key.SpaceId)),
19
- });
20
-
12
+ intent: TranscriptAction.Create,
13
+ resolve: ({ name, space }) => {
14
+ const transcript = Transcript.makeTranscript(space.queues.create().dxn);
21
15
  return { data: { object: transcript } };
22
16
  },
23
17
  }),
@@ -9,14 +9,14 @@ import { Obj } from '@dxos/echo';
9
9
 
10
10
  import { TranscriptionContainer } from '../components';
11
11
  import { meta } from '../meta';
12
- import { TranscriptType } from '../types';
12
+ import { Transcript } from '../types';
13
13
 
14
14
  export default () =>
15
15
  contributes(Capabilities.ReactSurface, [
16
16
  createSurface({
17
17
  id: `${meta.id}/article/transcript`,
18
18
  role: ['article', 'section'],
19
- filter: (data): data is { subject: TranscriptType } => Obj.instanceOf(TranscriptType, data.subject),
19
+ filter: (data): data is { subject: Transcript.Transcript } => Obj.instanceOf(Transcript.Transcript, data.subject),
20
20
  component: ({ data, role }) => <TranscriptionContainer transcript={data.subject} role={role} />,
21
21
  }),
22
22
  ]);
@@ -2,12 +2,13 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { contributes, type PluginContext } from '@dxos/app-framework';
5
+ import { type PluginContext, contributes } from '@dxos/app-framework';
6
6
  import { ClientCapabilities } from '@dxos/plugin-client';
7
7
 
8
- import { TranscriptionCapabilities } from './capabilities';
9
8
  import { MediaStreamRecorder, Transcriber, TranscriptionManager } from '../transcriber';
10
9
 
10
+ import { TranscriptionCapabilities } from './capabilities';
11
+
11
12
  // TODO(burdon): Move to config?
12
13
 
13
14
  /**
@@ -2,8 +2,6 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import '@dxos-theme';
6
-
7
5
  import { type Meta, type StoryObj } from '@storybook/react-vite';
8
6
  import React, { type FC, useEffect, useMemo, useState } from 'react';
9
7
 
@@ -18,13 +16,12 @@ import { ThemePlugin } from '@dxos/plugin-theme';
18
16
  import { faker } from '@dxos/random';
19
17
  import { useMembers, useSpace } from '@dxos/react-client/echo';
20
18
  import { IconButton, Toolbar } from '@dxos/react-ui';
19
+ import { withTheme } from '@dxos/react-ui/testing';
21
20
  import { SyntaxHighlighter } from '@dxos/react-ui-syntax-highlighter';
22
21
  import { defaultTx } from '@dxos/react-ui-theme';
23
22
  import { DataType } from '@dxos/schema';
24
23
  import { Testing } from '@dxos/schema/testing';
25
- import { withLayout } from '@dxos/storybook-utils';
26
24
 
27
- import { renderMarkdown, Transcript, type TranscriptProps } from './Transcript';
28
25
  import { useQueueModelAdapter } from '../../hooks';
29
26
  import { SerializationModel } from '../../model';
30
27
  import {
@@ -35,13 +32,15 @@ import {
35
32
  } from '../../testing';
36
33
  import { translations } from '../../translations';
37
34
 
35
+ import { TranscriptView, type TranscriptViewProps, renderByline } from './Transcript';
36
+
38
37
  faker.seed(1);
39
38
 
40
39
  /**
41
40
  * Story wrapper with test controls.
42
41
  */
43
42
  const TranscriptContainer: FC<
44
- TranscriptProps & {
43
+ TranscriptViewProps & {
45
44
  running: boolean;
46
45
  onRunningChange: (running: boolean) => void;
47
46
  onReset?: () => void;
@@ -49,7 +48,7 @@ const TranscriptContainer: FC<
49
48
  > = ({ space, model, running, onRunningChange, onReset }) => {
50
49
  return (
51
50
  <div className='grid grid-rows-[1fr_40px] grow divide-y divide-separator'>
52
- <Transcript space={space} model={model} />
51
+ <TranscriptView space={space} model={model} />
53
52
  <div className='grid grid-cols-[1fr_16rem] overflow-hidden'>
54
53
  <div className='flex items-center'>
55
54
  <SyntaxHighlighter language='json' className='text-sm'>
@@ -69,7 +68,7 @@ const TranscriptContainer: FC<
69
68
  );
70
69
  };
71
70
 
72
- type StoryProps = { messages?: DataType.Message[] } & Pick<TranscriptProps, 'ignoreAttention' | 'attendableId'>;
71
+ type StoryProps = { messages?: DataType.Message[] } & Pick<TranscriptViewProps, 'ignoreAttention' | 'attendableId'>;
73
72
 
74
73
  /**
75
74
  * Basic story mutates array of messages.
@@ -78,7 +77,7 @@ const BasicStory = ({ messages: initialMessages = [], ...props }: StoryProps) =>
78
77
  const [reset, setReset] = useState({});
79
78
  const builder = useMemo(() => new MessageBuilder(), []);
80
79
  const model = useMemo(
81
- () => new SerializationModel<DataType.Message>(renderMarkdown([]), initialMessages),
80
+ () => new SerializationModel<DataType.Message>(renderByline([]), initialMessages),
82
81
  [initialMessages, reset],
83
82
  );
84
83
  const [running, setRunning] = useState(true);
@@ -140,7 +139,7 @@ const QueueStory = ({
140
139
  const space = useSpace();
141
140
  const members = useMembers(space?.key).map((member) => member.identity);
142
141
  const queue = useTestTranscriptionQueue(space, queueId, running, 2_000);
143
- const model = useQueueModelAdapter(renderMarkdown(members), queue, initialMessages);
142
+ const model = useQueueModelAdapter(renderByline(members), queue, initialMessages);
144
143
 
145
144
  return (
146
145
  <TranscriptContainer
@@ -160,7 +159,7 @@ const EntityExtractionQueueStory = () => {
160
159
  const space = useSpace();
161
160
  const members = useMembers(space?.key).map((member) => member.identity);
162
161
  const queue = useTestTranscriptionQueueWithEntityExtraction(space, undefined, running, 2_000);
163
- const model = useQueueModelAdapter(renderMarkdown(members), queue, []);
162
+ const model = useQueueModelAdapter(renderByline(members), queue, []);
164
163
 
165
164
  return <TranscriptContainer space={space} model={model} running={running} onRunningChange={setRunning} />;
166
165
  };
@@ -178,37 +177,38 @@ const QueueStoryWrapper = () => {
178
177
  return <QueueStory key={key} queueId={queueId} onReset={handleReset} />;
179
178
  };
180
179
 
181
- const meta: Meta<typeof QueueStory> = {
180
+ const meta = {
182
181
  title: 'plugins/plugin-transcription/Transcript',
183
182
  decorators: [
183
+ withTheme,
184
184
  withPluginManager({
185
185
  plugins: [
186
- ThemePlugin({ tx: defaultTx }),
187
- StorybookLayoutPlugin(),
188
186
  ClientPlugin({
189
187
  types: [TestItem, Testing.DocumentType, DataType.Person, DataType.Organization],
190
- onClientInitialized: async (_, client) => {
188
+ onClientInitialized: async ({ client }) => {
191
189
  await client.halo.createIdentity();
192
190
  },
193
191
  }),
194
- PreviewPlugin(),
195
- SpacePlugin(),
196
- SettingsPlugin(),
192
+ SpacePlugin({}),
197
193
  IntentPlugin(),
194
+ SettingsPlugin(),
195
+
196
+ // UI
197
+ PreviewPlugin(),
198
+ ThemePlugin({ tx: defaultTx }),
199
+ StorybookLayoutPlugin({}),
198
200
  ],
199
201
  }),
200
- withLayout({ fullscreen: true }),
201
202
  ],
202
203
  parameters: {
204
+ layout: 'fullscreen',
203
205
  translations,
204
206
  },
205
- };
207
+ } satisfies Meta;
206
208
 
207
209
  export default meta;
208
210
 
209
- type Story = StoryObj<typeof QueueStory>;
210
-
211
- export const Default: Story = {
211
+ export const Default: StoryObj<typeof BasicStory> = {
212
212
  render: BasicStory,
213
213
  args: {
214
214
  ignoreAttention: true,
@@ -217,7 +217,7 @@ export const Default: Story = {
217
217
  },
218
218
  };
219
219
 
220
- export const Empty: Story = {
220
+ export const Empty: StoryObj<typeof BasicStory> = {
221
221
  render: BasicStory,
222
222
  args: {
223
223
  ignoreAttention: true,
@@ -225,7 +225,7 @@ export const Empty: Story = {
225
225
  },
226
226
  };
227
227
 
228
- export const WithQueue: Story = {
228
+ export const WithQueue: StoryObj<typeof QueueStoryWrapper> = {
229
229
  render: QueueStoryWrapper,
230
230
  args: {
231
231
  ignoreAttention: true,
@@ -233,10 +233,13 @@ export const WithQueue: Story = {
233
233
  },
234
234
  };
235
235
 
236
- export const WithEntityExtractionQueue: Story = {
237
- render: EntityExtractionQueueStory,
238
- args: {
239
- ignoreAttention: true,
240
- attendableId: 'story',
241
- },
242
- };
236
+ // NOTE: We are running out of free quota on hugging face entity extraction.
237
+ // TODO(mykola): Fix AI service in entity extraction function.
238
+ // TODO(mykola): Fix hugging face quota issues.
239
+ // export const WithEntityExtractionQueue: StoryObj<typeof EntityExtractionQueueStory> = {
240
+ // render: EntityExtractionQueueStory,
241
+ // args: {
242
+ // ignoreAttention: true,
243
+ // attendableId: 'story',
244
+ // },
245
+ // };