@dxos/plugin-transcription 0.8.4-main.28f8d3d → 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 (153) 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-UKUSJTQW.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-KJIQQHJB.mjs → chunk-COBQIZ6B.mjs} +78 -98
  8. package/dist/lib/browser/{chunk-KJIQQHJB.mjs.map → chunk-COBQIZ6B.mjs.map} +3 -3
  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-SREIAQSP.mjs → chunk-LCK3YRQF.mjs} +5 -5
  12. package/dist/lib/browser/chunk-LCK3YRQF.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-BJWYA2BU.mjs → chunk-ZS2FXKEF.mjs} +141 -168
  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-4MEJMKYQ.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-V77CN7XX.mjs → transcriber-NG5MRCP6.mjs} +7 -7
  23. package/dist/lib/browser/{transcriber-V77CN7XX.mjs.map → transcriber-NG5MRCP6.mjs.map} +1 -1
  24. package/dist/lib/browser/types/index.mjs +6 -8
  25. package/dist/lib/node-esm/{TranscriptContainer-GEUOOYHX.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-A33GNR44.mjs → chunk-A6SB234F.mjs} +78 -98
  29. package/dist/lib/node-esm/{chunk-A33GNR44.mjs.map → chunk-A6SB234F.mjs.map} +3 -3
  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-PHP7MCAY.mjs → chunk-N5Z4SKPH.mjs} +2 -2
  35. package/dist/lib/node-esm/{chunk-Y7PCJ34K.mjs → chunk-PEZRQYKO.mjs} +141 -168
  36. package/dist/lib/node-esm/chunk-PEZRQYKO.mjs.map +7 -0
  37. package/dist/lib/node-esm/{chunk-TM2ASOZA.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-EZUPNHUC.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-3SX3DNLV.mjs → transcriber-SMU7HD6F.mjs} +7 -7
  47. package/dist/lib/node-esm/{transcriber-3SX3DNLV.mjs.map → transcriber-SMU7HD6F.mjs.map} +1 -1
  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.map +1 -1
  54. package/dist/types/src/capabilities/index.d.ts +3 -2
  55. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  56. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  57. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  58. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  59. package/dist/types/src/capabilities/transcriber.d.ts +1 -1
  60. package/dist/types/src/components/Transcript/Transcript.d.ts +5 -5
  61. package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
  62. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +31 -16
  63. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  64. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +3 -3
  65. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -1
  66. package/dist/types/src/components/Transcript/transcript-extension.d.ts +1 -5
  67. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -1
  68. package/dist/types/src/components/TranscriptContainer.d.ts +2 -2
  69. package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
  70. package/dist/types/src/components/stories/FileTranscription.stories.d.ts +8 -4
  71. package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -1
  72. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +13 -6
  73. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +10 -6
  75. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +1 -1
  76. package/dist/types/src/components/stories/TranscriptionStory.d.ts +2 -1
  77. package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +1 -1
  78. package/dist/types/src/functions/index.d.ts +3 -0
  79. package/dist/types/src/functions/index.d.ts.map +1 -0
  80. package/dist/types/src/functions/open.d.ts +7 -0
  81. package/dist/types/src/functions/open.d.ts.map +1 -0
  82. package/dist/types/src/functions/summarize.d.ts +11 -0
  83. package/dist/types/src/functions/summarize.d.ts.map +1 -0
  84. package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
  85. package/dist/types/src/meta.d.ts +0 -1
  86. package/dist/types/src/meta.d.ts.map +1 -1
  87. package/dist/types/src/segments-normalization/normalization.d.ts +376 -331
  88. package/dist/types/src/segments-normalization/normalization.d.ts.map +1 -1
  89. package/dist/types/src/testing/testing.d.ts +1 -1
  90. package/dist/types/src/testing/testing.d.ts.map +1 -1
  91. package/dist/types/src/transcriber/transcription-manager.d.ts +3 -7
  92. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  93. package/dist/types/src/types/Transcript.d.ts +30 -0
  94. package/dist/types/src/types/Transcript.d.ts.map +1 -0
  95. package/dist/types/src/types/TranscriptAction.d.ts +23 -0
  96. package/dist/types/src/types/TranscriptAction.d.ts.map +1 -0
  97. package/dist/types/src/types/index.d.ts +2 -1
  98. package/dist/types/src/types/index.d.ts.map +1 -1
  99. package/dist/types/src/types/types.d.ts +0 -26
  100. package/dist/types/src/types/types.d.ts.map +1 -1
  101. package/dist/types/tsconfig.tsbuildinfo +1 -1
  102. package/package.json +61 -62
  103. package/src/TranscriptionPlugin.tsx +57 -53
  104. package/src/capabilities/blueprint-definition.ts +31 -0
  105. package/src/capabilities/capabilities.ts +3 -3
  106. package/src/capabilities/index.ts +1 -0
  107. package/src/capabilities/intent-resolver.ts +4 -10
  108. package/src/capabilities/react-surface.tsx +2 -2
  109. package/src/components/Transcript/Transcript.stories.tsx +32 -30
  110. package/src/components/Transcript/Transcript.tsx +17 -25
  111. package/src/components/Transcript/deprecated/OldTranscript.tsx +7 -7
  112. package/src/components/Transcript/transcript-extension.ts +2 -39
  113. package/src/components/TranscriptContainer.tsx +6 -6
  114. package/src/components/stories/FileTranscription.stories.tsx +42 -30
  115. package/src/components/stories/KeyWordRecognition.stories.tsx +16 -9
  116. package/src/components/stories/MicrophoneTranscription.stories.tsx +36 -32
  117. package/src/components/stories/TranscriptionStory.tsx +10 -6
  118. package/src/functions/index.ts +6 -0
  119. package/src/functions/open.ts +39 -0
  120. package/src/functions/summarize.ts +103 -0
  121. package/src/hooks/useAudioFile.ts +49 -53
  122. package/src/meta.ts +1 -3
  123. package/src/segments-normalization/normalization.test.ts +1 -1
  124. package/src/segments-normalization/normalization.ts +1 -1
  125. package/src/testing/testing.ts +5 -5
  126. package/src/transcriber/transcription-manager.ts +17 -38
  127. package/src/types/{schema.ts → Transcript.ts} +12 -9
  128. package/src/types/TranscriptAction.ts +24 -0
  129. package/src/types/index.ts +2 -1
  130. package/src/types/types.ts +0 -24
  131. package/dist/lib/browser/TranscriptContainer-FH7VAWYA.mjs +0 -11
  132. package/dist/lib/browser/chunk-5WH45KBY.mjs.map +0 -7
  133. package/dist/lib/browser/chunk-BJWYA2BU.mjs.map +0 -7
  134. package/dist/lib/browser/chunk-KWOOVS5G.mjs +0 -55
  135. package/dist/lib/browser/chunk-KWOOVS5G.mjs.map +0 -7
  136. package/dist/lib/browser/chunk-SREIAQSP.mjs.map +0 -7
  137. package/dist/lib/browser/intent-resolver-AOVQ7JI4.mjs +0 -30
  138. package/dist/lib/browser/intent-resolver-AOVQ7JI4.mjs.map +0 -7
  139. package/dist/lib/browser/react-surface-4MEJMKYQ.mjs.map +0 -7
  140. package/dist/lib/node-esm/chunk-IKQMDRY6.mjs +0 -56
  141. package/dist/lib/node-esm/chunk-IKQMDRY6.mjs.map +0 -7
  142. package/dist/lib/node-esm/chunk-TM2ASOZA.mjs.map +0 -7
  143. package/dist/lib/node-esm/chunk-XMUCZBP3.mjs.map +0 -7
  144. package/dist/lib/node-esm/chunk-Y7PCJ34K.mjs.map +0 -7
  145. package/dist/lib/node-esm/intent-resolver-P4XPIKQF.mjs +0 -31
  146. package/dist/lib/node-esm/intent-resolver-P4XPIKQF.mjs.map +0 -7
  147. package/dist/lib/node-esm/react-surface-EZUPNHUC.mjs.map +0 -7
  148. package/dist/types/src/types/schema.d.ts +0 -41
  149. package/dist/types/src/types/schema.d.ts.map +0 -1
  150. /package/dist/lib/browser/{TranscriptContainer-FH7VAWYA.mjs.map → TranscriptContainer-QN5WUMWJ.mjs.map} +0 -0
  151. /package/dist/lib/browser/{chunk-UKUSJTQW.mjs.map → chunk-77NWYLC6.mjs.map} +0 -0
  152. /package/dist/lib/node-esm/{TranscriptContainer-GEUOOYHX.mjs.map → TranscriptContainer-WCUWVVSD.mjs.map} +0 -0
  153. /package/dist/lib/node-esm/{chunk-PHP7MCAY.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.28f8d3d",
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",
@@ -34,10 +34,10 @@
34
34
  "src"
35
35
  ],
36
36
  "dependencies": {
37
- "@codemirror/state": "^6.4.1",
38
- "@codemirror/view": "^6.34.1",
37
+ "@codemirror/state": "^6.5.2",
38
+ "@codemirror/view": "^6.38.4",
39
39
  "@preact-signals/safe-react": "^0.9.0",
40
- "@preact/signals-core": "^1.9.0",
40
+ "@preact/signals-core": "^1.12.1",
41
41
  "date-fns": "^3.3.1",
42
42
  "extendable-media-recorder": "^9.2.19",
43
43
  "extendable-media-recorder-wav-encoder": "^7.0.123",
@@ -46,73 +46,72 @@
46
46
  "react-router-dom": "^6.4.0",
47
47
  "react-use": "^17.5.1",
48
48
  "wavefile": "^11.0.0",
49
- "@dxos/app-framework": "0.8.4-main.28f8d3d",
50
- "@dxos/assistant": "0.8.4-main.28f8d3d",
51
- "@dxos/async": "0.8.4-main.28f8d3d",
52
- "@dxos/client": "0.8.4-main.28f8d3d",
53
- "@dxos/codec-protobuf": "0.8.4-main.28f8d3d",
54
- "@dxos/blueprints": "0.8.4-main.28f8d3d",
55
- "@dxos/ai": "0.8.4-main.28f8d3d",
56
- "@dxos/context": "0.8.4-main.28f8d3d",
57
- "@dxos/debug": "0.8.4-main.28f8d3d",
58
- "@dxos/echo": "0.8.4-main.28f8d3d",
59
- "@dxos/echo-schema": "0.8.4-main.28f8d3d",
60
- "@dxos/echo-db": "0.8.4-main.28f8d3d",
61
- "@dxos/invariant": "0.8.4-main.28f8d3d",
62
- "@dxos/functions": "0.8.4-main.28f8d3d",
63
- "@dxos/display-name": "0.8.4-main.28f8d3d",
64
- "@dxos/live-object": "0.8.4-main.28f8d3d",
65
- "@dxos/local-storage": "0.8.4-main.28f8d3d",
66
- "@dxos/keys": "0.8.4-main.28f8d3d",
67
- "@dxos/plugin-client": "0.8.4-main.28f8d3d",
68
- "@dxos/plugin-graph": "0.8.4-main.28f8d3d",
69
- "@dxos/plugin-space": "0.8.4-main.28f8d3d",
70
- "@dxos/plugin-markdown": "0.8.4-main.28f8d3d",
71
- "@dxos/plugin-deck": "0.8.4-main.28f8d3d",
72
- "@dxos/plugin-thread": "0.8.4-main.28f8d3d",
73
- "@dxos/react-client": "0.8.4-main.28f8d3d",
74
- "@dxos/protocols": "0.8.4-main.28f8d3d",
75
- "@dxos/react-edge-client": "0.8.4-main.28f8d3d",
76
- "@dxos/log": "0.8.4-main.28f8d3d",
77
- "@dxos/react-ui-attention": "0.8.4-main.28f8d3d",
78
- "@dxos/react-ui-editor": "0.8.4-main.28f8d3d",
79
- "@dxos/react-ui-form": "0.8.4-main.28f8d3d",
80
- "@dxos/react-ui-grid": "0.8.4-main.28f8d3d",
81
- "@dxos/react-ui-sfx": "0.8.4-main.28f8d3d",
82
- "@dxos/react-ui-stack": "0.8.4-main.28f8d3d",
83
- "@dxos/schema": "0.8.4-main.28f8d3d",
84
- "@dxos/tracing": "0.8.4-main.28f8d3d",
85
- "@dxos/react-ui-components": "0.8.4-main.28f8d3d",
86
- "@dxos/util": "0.8.4-main.28f8d3d"
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"
87
86
  },
88
87
  "devDependencies": {
89
- "@effect-rx/rx-react": "0.38.0",
90
- "@effect/platform": "0.90.2",
88
+ "@effect-rx/rx-react": "0.42.4",
89
+ "@effect/platform": "0.92.1",
91
90
  "@types/dom-speech-recognition": "^0.0.6",
92
- "@types/react": "~18.2.0",
93
- "effect": "3.17.7",
94
- "react": "~18.2.0",
95
- "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",
96
95
  "tailwindcss": "~3.4.1",
97
- "@dxos/plugin-preview": "0.8.4-main.28f8d3d",
98
- "@dxos/plugin-storybook-layout": "0.8.4-main.28f8d3d",
99
- "@dxos/plugin-theme": "0.8.4-main.28f8d3d",
100
- "@dxos/random": "0.8.4-main.28f8d3d",
101
- "@dxos/react-ui": "0.8.4-main.28f8d3d",
102
- "@dxos/react-ui-form": "0.8.4-main.28f8d3d",
103
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.28f8d3d",
104
- "@dxos/react-ui-theme": "0.8.4-main.28f8d3d",
105
- "@dxos/storybook-utils": "0.8.4-main.28f8d3d",
106
- "@dxos/test-utils": "0.8.4-main.28f8d3d"
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"
107
106
  },
108
107
  "peerDependencies": {
109
108
  "@effect-rx/rx-react": "^0.34.1",
110
109
  "@effect/platform": "^0.80.12",
111
110
  "effect": "^3.13.3",
112
- "react": "~18.2.0",
113
- "react-dom": "~18.2.0",
114
- "@dxos/react-ui": "0.8.4-main.28f8d3d",
115
- "@dxos/react-ui-theme": "0.8.4-main.28f8d3d"
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"
116
115
  },
117
116
  "publishConfig": {
118
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,7 +4,7 @@
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
9
  type MediaStreamRecorderParams,
10
10
  type Transcriber,
@@ -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'));
@@ -3,21 +3,15 @@
3
3
  //
4
4
 
5
5
  import { Capabilities, type PluginContext, contributes, createResolver } from '@dxos/app-framework';
6
- import { type Key, Obj, Ref } from '@dxos/echo';
7
- import { createQueueDXN } from '@dxos/echo-schema';
8
6
 
9
- import { TranscriptType, TranscriptionAction } 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,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,11 +16,11 @@ 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
25
  import { useQueueModelAdapter } from '../../hooks';
28
26
  import { SerializationModel } from '../../model';
@@ -34,7 +32,7 @@ import {
34
32
  } from '../../testing';
35
33
  import { translations } from '../../translations';
36
34
 
37
- import { Transcript, type TranscriptProps, renderMarkdown } from './Transcript';
35
+ import { TranscriptView, type TranscriptViewProps, renderByline } from './Transcript';
38
36
 
39
37
  faker.seed(1);
40
38
 
@@ -42,7 +40,7 @@ faker.seed(1);
42
40
  * Story wrapper with test controls.
43
41
  */
44
42
  const TranscriptContainer: FC<
45
- TranscriptProps & {
43
+ TranscriptViewProps & {
46
44
  running: boolean;
47
45
  onRunningChange: (running: boolean) => void;
48
46
  onReset?: () => void;
@@ -50,7 +48,7 @@ const TranscriptContainer: FC<
50
48
  > = ({ space, model, running, onRunningChange, onReset }) => {
51
49
  return (
52
50
  <div className='grid grid-rows-[1fr_40px] grow divide-y divide-separator'>
53
- <Transcript space={space} model={model} />
51
+ <TranscriptView space={space} model={model} />
54
52
  <div className='grid grid-cols-[1fr_16rem] overflow-hidden'>
55
53
  <div className='flex items-center'>
56
54
  <SyntaxHighlighter language='json' className='text-sm'>
@@ -70,7 +68,7 @@ const TranscriptContainer: FC<
70
68
  );
71
69
  };
72
70
 
73
- type StoryProps = { messages?: DataType.Message[] } & Pick<TranscriptProps, 'ignoreAttention' | 'attendableId'>;
71
+ type StoryProps = { messages?: DataType.Message[] } & Pick<TranscriptViewProps, 'ignoreAttention' | 'attendableId'>;
74
72
 
75
73
  /**
76
74
  * Basic story mutates array of messages.
@@ -79,7 +77,7 @@ const BasicStory = ({ messages: initialMessages = [], ...props }: StoryProps) =>
79
77
  const [reset, setReset] = useState({});
80
78
  const builder = useMemo(() => new MessageBuilder(), []);
81
79
  const model = useMemo(
82
- () => new SerializationModel<DataType.Message>(renderMarkdown([]), initialMessages),
80
+ () => new SerializationModel<DataType.Message>(renderByline([]), initialMessages),
83
81
  [initialMessages, reset],
84
82
  );
85
83
  const [running, setRunning] = useState(true);
@@ -141,7 +139,7 @@ const QueueStory = ({
141
139
  const space = useSpace();
142
140
  const members = useMembers(space?.key).map((member) => member.identity);
143
141
  const queue = useTestTranscriptionQueue(space, queueId, running, 2_000);
144
- const model = useQueueModelAdapter(renderMarkdown(members), queue, initialMessages);
142
+ const model = useQueueModelAdapter(renderByline(members), queue, initialMessages);
145
143
 
146
144
  return (
147
145
  <TranscriptContainer
@@ -161,7 +159,7 @@ const EntityExtractionQueueStory = () => {
161
159
  const space = useSpace();
162
160
  const members = useMembers(space?.key).map((member) => member.identity);
163
161
  const queue = useTestTranscriptionQueueWithEntityExtraction(space, undefined, running, 2_000);
164
- const model = useQueueModelAdapter(renderMarkdown(members), queue, []);
162
+ const model = useQueueModelAdapter(renderByline(members), queue, []);
165
163
 
166
164
  return <TranscriptContainer space={space} model={model} running={running} onRunningChange={setRunning} />;
167
165
  };
@@ -179,37 +177,38 @@ const QueueStoryWrapper = () => {
179
177
  return <QueueStory key={key} queueId={queueId} onReset={handleReset} />;
180
178
  };
181
179
 
182
- const meta: Meta<typeof QueueStory> = {
180
+ const meta = {
183
181
  title: 'plugins/plugin-transcription/Transcript',
184
182
  decorators: [
183
+ withTheme,
185
184
  withPluginManager({
186
185
  plugins: [
187
- ThemePlugin({ tx: defaultTx }),
188
- StorybookLayoutPlugin(),
189
186
  ClientPlugin({
190
187
  types: [TestItem, Testing.DocumentType, DataType.Person, DataType.Organization],
191
188
  onClientInitialized: async ({ client }) => {
192
189
  await client.halo.createIdentity();
193
190
  },
194
191
  }),
195
- PreviewPlugin(),
196
- SpacePlugin(),
197
- SettingsPlugin(),
192
+ SpacePlugin({}),
198
193
  IntentPlugin(),
194
+ SettingsPlugin(),
195
+
196
+ // UI
197
+ PreviewPlugin(),
198
+ ThemePlugin({ tx: defaultTx }),
199
+ StorybookLayoutPlugin({}),
199
200
  ],
200
201
  }),
201
- withLayout({ fullscreen: true }),
202
202
  ],
203
203
  parameters: {
204
+ layout: 'fullscreen',
204
205
  translations,
205
206
  },
206
- };
207
+ } satisfies Meta;
207
208
 
208
209
  export default meta;
209
210
 
210
- type Story = StoryObj<typeof QueueStory>;
211
-
212
- export const Default: Story = {
211
+ export const Default: StoryObj<typeof BasicStory> = {
213
212
  render: BasicStory,
214
213
  args: {
215
214
  ignoreAttention: true,
@@ -218,7 +217,7 @@ export const Default: Story = {
218
217
  },
219
218
  };
220
219
 
221
- export const Empty: Story = {
220
+ export const Empty: StoryObj<typeof BasicStory> = {
222
221
  render: BasicStory,
223
222
  args: {
224
223
  ignoreAttention: true,
@@ -226,7 +225,7 @@ export const Empty: Story = {
226
225
  },
227
226
  };
228
227
 
229
- export const WithQueue: Story = {
228
+ export const WithQueue: StoryObj<typeof QueueStoryWrapper> = {
230
229
  render: QueueStoryWrapper,
231
230
  args: {
232
231
  ignoreAttention: true,
@@ -234,10 +233,13 @@ export const WithQueue: Story = {
234
233
  },
235
234
  };
236
235
 
237
- export const WithEntityExtractionQueue: Story = {
238
- render: EntityExtractionQueueStory,
239
- args: {
240
- ignoreAttention: true,
241
- attendableId: 'story',
242
- },
243
- };
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
+ // };