@dxos/plugin-transcription 0.8.4-main.dedc0f3 → 0.8.4-main.ead640a

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 (111) hide show
  1. package/dist/lib/browser/TranscriptContainer-QN5WUMWJ.mjs +11 -0
  2. package/dist/lib/browser/{blueprint-definition-TJABB43G.mjs → blueprint-definition-GO6GTEBT.mjs} +21 -13
  3. package/dist/lib/browser/blueprint-definition-GO6GTEBT.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-AGZYQGSP.mjs → chunk-77NWYLC6.mjs} +2 -2
  5. package/dist/lib/browser/{chunk-3X7HP44M.mjs → chunk-7LNCQDTT.mjs} +2 -4
  6. package/dist/lib/browser/chunk-7LNCQDTT.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-BA64VLLR.mjs → chunk-COBQIZ6B.mjs} +2 -2
  8. package/dist/lib/browser/{chunk-HXVGV7T6.mjs → chunk-GGHMOEKZ.mjs} +4 -4
  9. package/dist/lib/browser/chunk-GGHMOEKZ.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-TNEQFHIU.mjs → chunk-LCK3YRQF.mjs} +5 -5
  11. package/dist/lib/browser/chunk-LCK3YRQF.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-VVXRHJCH.mjs → chunk-ZS2FXKEF.mjs} +59 -50
  13. package/dist/lib/browser/chunk-ZS2FXKEF.mjs.map +7 -0
  14. package/dist/lib/browser/index.mjs +9 -10
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-T3EGLS3L.mjs → intent-resolver-52EPFRMR.mjs} +5 -5
  17. package/dist/lib/browser/{intent-resolver-T3EGLS3L.mjs.map → intent-resolver-52EPFRMR.mjs.map} +1 -1
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-4Y3YISAD.mjs → react-surface-LCP2D2MF.mjs} +8 -8
  20. package/dist/lib/browser/{react-surface-4Y3YISAD.mjs.map → react-surface-LCP2D2MF.mjs.map} +1 -1
  21. package/dist/lib/browser/{transcriber-JOOAQVYV.mjs → transcriber-NG5MRCP6.mjs} +7 -7
  22. package/dist/lib/browser/{transcriber-JOOAQVYV.mjs.map → transcriber-NG5MRCP6.mjs.map} +1 -1
  23. package/dist/lib/browser/types/index.mjs +2 -2
  24. package/dist/lib/node-esm/{TranscriptContainer-EGAAYVOP.mjs → TranscriptContainer-WCUWVVSD.mjs} +4 -4
  25. package/dist/lib/node-esm/{blueprint-definition-R4UF7YJZ.mjs → blueprint-definition-6SU7GLBR.mjs} +21 -13
  26. package/dist/lib/node-esm/blueprint-definition-6SU7GLBR.mjs.map +7 -0
  27. package/dist/lib/node-esm/{chunk-J5GQ3KGX.mjs → chunk-A6SB234F.mjs} +2 -2
  28. package/dist/lib/node-esm/{chunk-W72HVQMD.mjs → chunk-FTTZ4YSX.mjs} +4 -4
  29. package/dist/lib/node-esm/chunk-FTTZ4YSX.mjs.map +7 -0
  30. package/dist/lib/node-esm/{chunk-QARUDLHN.mjs → chunk-KLTPFUKN.mjs} +2 -4
  31. package/dist/lib/node-esm/chunk-KLTPFUKN.mjs.map +7 -0
  32. package/dist/lib/node-esm/{chunk-CF5Z6FAB.mjs → chunk-N5Z4SKPH.mjs} +2 -2
  33. package/dist/lib/node-esm/{chunk-SFQNMFHX.mjs → chunk-PEZRQYKO.mjs} +59 -50
  34. package/dist/lib/node-esm/chunk-PEZRQYKO.mjs.map +7 -0
  35. package/dist/lib/node-esm/{chunk-3QAIZGMW.mjs → chunk-RWRG3S2O.mjs} +5 -5
  36. package/dist/lib/node-esm/chunk-RWRG3S2O.mjs.map +7 -0
  37. package/dist/lib/node-esm/index.mjs +9 -10
  38. package/dist/lib/node-esm/index.mjs.map +3 -3
  39. package/dist/lib/node-esm/{intent-resolver-VDHCUAIO.mjs → intent-resolver-DZBQQRHN.mjs} +5 -5
  40. package/dist/lib/node-esm/{intent-resolver-VDHCUAIO.mjs.map → intent-resolver-DZBQQRHN.mjs.map} +1 -1
  41. package/dist/lib/node-esm/meta.json +1 -1
  42. package/dist/lib/node-esm/{react-surface-ZIXDGJAN.mjs → react-surface-7UC2YXX2.mjs} +8 -8
  43. package/dist/lib/node-esm/{react-surface-ZIXDGJAN.mjs.map → react-surface-7UC2YXX2.mjs.map} +1 -1
  44. package/dist/lib/node-esm/{transcriber-QPS55YP2.mjs → transcriber-SMU7HD6F.mjs} +7 -7
  45. package/dist/lib/node-esm/{transcriber-QPS55YP2.mjs.map → transcriber-SMU7HD6F.mjs.map} +1 -1
  46. package/dist/lib/node-esm/types/index.mjs +2 -2
  47. package/dist/types/src/TranscriptionPlugin.d.ts +1 -1
  48. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  49. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  50. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +1 -1
  51. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  52. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +1 -1
  53. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -1
  54. package/dist/types/src/components/stories/FileTranscription.stories.d.ts +0 -1
  55. package/dist/types/src/components/stories/FileTranscription.stories.d.ts.map +1 -1
  56. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts +0 -1
  57. package/dist/types/src/components/stories/KeyWordRecognition.stories.d.ts.map +1 -1
  58. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts +0 -1
  59. package/dist/types/src/components/stories/MicrophoneTranscription.stories.d.ts.map +1 -1
  60. package/dist/types/src/components/stories/TranscriptionStory.d.ts +1 -1
  61. package/dist/types/src/components/stories/TranscriptionStory.d.ts.map +1 -1
  62. package/dist/types/src/functions/open.d.ts.map +1 -1
  63. package/dist/types/src/functions/summarize.d.ts.map +1 -1
  64. package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
  65. package/dist/types/src/meta.d.ts +0 -1
  66. package/dist/types/src/meta.d.ts.map +1 -1
  67. package/dist/types/src/segments-normalization/normalization.d.ts +13 -7
  68. package/dist/types/src/segments-normalization/normalization.d.ts.map +1 -1
  69. package/dist/types/src/testing/testing.d.ts +1 -1
  70. package/dist/types/src/testing/testing.d.ts.map +1 -1
  71. package/dist/types/src/types/Transcript.d.ts +3 -3
  72. package/dist/types/src/types/Transcript.d.ts.map +1 -1
  73. package/dist/types/src/types/TranscriptAction.d.ts +1 -1
  74. package/dist/types/src/types/TranscriptAction.d.ts.map +1 -1
  75. package/dist/types/tsconfig.tsbuildinfo +1 -1
  76. package/package.json +60 -61
  77. package/src/TranscriptionPlugin.tsx +55 -55
  78. package/src/capabilities/capabilities.ts +3 -3
  79. package/src/components/Transcript/Transcript.stories.tsx +10 -9
  80. package/src/components/Transcript/Transcript.tsx +2 -2
  81. package/src/components/Transcript/deprecated/OldTranscript.tsx +5 -5
  82. package/src/components/stories/FileTranscription.stories.tsx +10 -10
  83. package/src/components/stories/KeyWordRecognition.stories.tsx +2 -4
  84. package/src/components/stories/MicrophoneTranscription.stories.tsx +10 -10
  85. package/src/components/stories/TranscriptionStory.tsx +1 -1
  86. package/src/functions/open.ts +4 -2
  87. package/src/functions/summarize.ts +10 -4
  88. package/src/hooks/useAudioFile.ts +50 -45
  89. package/src/meta.ts +1 -3
  90. package/src/segments-normalization/normalization.test.ts +1 -1
  91. package/src/segments-normalization/normalization.ts +1 -1
  92. package/src/testing/testing.ts +3 -3
  93. package/src/types/Transcript.ts +1 -1
  94. package/src/types/TranscriptAction.ts +1 -1
  95. package/dist/lib/browser/TranscriptContainer-4RBK74JP.mjs +0 -11
  96. package/dist/lib/browser/blueprint-definition-TJABB43G.mjs.map +0 -7
  97. package/dist/lib/browser/chunk-3X7HP44M.mjs.map +0 -7
  98. package/dist/lib/browser/chunk-HXVGV7T6.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-TNEQFHIU.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-VVXRHJCH.mjs.map +0 -7
  101. package/dist/lib/node-esm/blueprint-definition-R4UF7YJZ.mjs.map +0 -7
  102. package/dist/lib/node-esm/chunk-3QAIZGMW.mjs.map +0 -7
  103. package/dist/lib/node-esm/chunk-QARUDLHN.mjs.map +0 -7
  104. package/dist/lib/node-esm/chunk-SFQNMFHX.mjs.map +0 -7
  105. package/dist/lib/node-esm/chunk-W72HVQMD.mjs.map +0 -7
  106. /package/dist/lib/browser/{TranscriptContainer-4RBK74JP.mjs.map → TranscriptContainer-QN5WUMWJ.mjs.map} +0 -0
  107. /package/dist/lib/browser/{chunk-AGZYQGSP.mjs.map → chunk-77NWYLC6.mjs.map} +0 -0
  108. /package/dist/lib/browser/{chunk-BA64VLLR.mjs.map → chunk-COBQIZ6B.mjs.map} +0 -0
  109. /package/dist/lib/node-esm/{TranscriptContainer-EGAAYVOP.mjs.map → TranscriptContainer-WCUWVVSD.mjs.map} +0 -0
  110. /package/dist/lib/node-esm/{chunk-J5GQ3KGX.mjs.map → chunk-A6SB234F.mjs.map} +0 -0
  111. /package/dist/lib/node-esm/{chunk-CF5Z6FAB.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.dedc0f3",
3
+ "version": "0.8.4-main.ead640a",
4
4
  "description": "Voice transcription.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -35,9 +35,9 @@
35
35
  ],
36
36
  "dependencies": {
37
37
  "@codemirror/state": "^6.5.2",
38
- "@codemirror/view": "^6.38.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/ai": "0.8.4-main.dedc0f3",
50
- "@dxos/app-framework": "0.8.4-main.dedc0f3",
51
- "@dxos/assistant": "0.8.4-main.dedc0f3",
52
- "@dxos/async": "0.8.4-main.dedc0f3",
53
- "@dxos/client": "0.8.4-main.dedc0f3",
54
- "@dxos/codec-protobuf": "0.8.4-main.dedc0f3",
55
- "@dxos/blueprints": "0.8.4-main.dedc0f3",
56
- "@dxos/context": "0.8.4-main.dedc0f3",
57
- "@dxos/debug": "0.8.4-main.dedc0f3",
58
- "@dxos/echo": "0.8.4-main.dedc0f3",
59
- "@dxos/echo-db": "0.8.4-main.dedc0f3",
60
- "@dxos/echo-schema": "0.8.4-main.dedc0f3",
61
- "@dxos/live-object": "0.8.4-main.dedc0f3",
62
- "@dxos/invariant": "0.8.4-main.dedc0f3",
63
- "@dxos/keys": "0.8.4-main.dedc0f3",
64
- "@dxos/log": "0.8.4-main.dedc0f3",
65
- "@dxos/functions": "0.8.4-main.dedc0f3",
66
- "@dxos/plugin-client": "0.8.4-main.dedc0f3",
67
- "@dxos/plugin-deck": "0.8.4-main.dedc0f3",
68
- "@dxos/plugin-graph": "0.8.4-main.dedc0f3",
69
- "@dxos/plugin-markdown": "0.8.4-main.dedc0f3",
70
- "@dxos/plugin-space": "0.8.4-main.dedc0f3",
71
- "@dxos/display-name": "0.8.4-main.dedc0f3",
72
- "@dxos/local-storage": "0.8.4-main.dedc0f3",
73
- "@dxos/plugin-thread": "0.8.4-main.dedc0f3",
74
- "@dxos/protocols": "0.8.4-main.dedc0f3",
75
- "@dxos/react-client": "0.8.4-main.dedc0f3",
76
- "@dxos/react-edge-client": "0.8.4-main.dedc0f3",
77
- "@dxos/react-ui-editor": "0.8.4-main.dedc0f3",
78
- "@dxos/react-ui-attention": "0.8.4-main.dedc0f3",
79
- "@dxos/react-ui-components": "0.8.4-main.dedc0f3",
80
- "@dxos/react-ui-form": "0.8.4-main.dedc0f3",
81
- "@dxos/react-ui-grid": "0.8.4-main.dedc0f3",
82
- "@dxos/react-ui-sfx": "0.8.4-main.dedc0f3",
83
- "@dxos/react-ui-stack": "0.8.4-main.dedc0f3",
84
- "@dxos/schema": "0.8.4-main.dedc0f3",
85
- "@dxos/tracing": "0.8.4-main.dedc0f3",
86
- "@dxos/util": "0.8.4-main.dedc0f3"
49
+ "@dxos/ai": "0.8.4-main.ead640a",
50
+ "@dxos/assistant": "0.8.4-main.ead640a",
51
+ "@dxos/app-framework": "0.8.4-main.ead640a",
52
+ "@dxos/async": "0.8.4-main.ead640a",
53
+ "@dxos/blueprints": "0.8.4-main.ead640a",
54
+ "@dxos/codec-protobuf": "0.8.4-main.ead640a",
55
+ "@dxos/debug": "0.8.4-main.ead640a",
56
+ "@dxos/display-name": "0.8.4-main.ead640a",
57
+ "@dxos/client": "0.8.4-main.ead640a",
58
+ "@dxos/context": "0.8.4-main.ead640a",
59
+ "@dxos/functions": "0.8.4-main.ead640a",
60
+ "@dxos/echo": "0.8.4-main.ead640a",
61
+ "@dxos/invariant": "0.8.4-main.ead640a",
62
+ "@dxos/keys": "0.8.4-main.ead640a",
63
+ "@dxos/live-object": "0.8.4-main.ead640a",
64
+ "@dxos/local-storage": "0.8.4-main.ead640a",
65
+ "@dxos/log": "0.8.4-main.ead640a",
66
+ "@dxos/echo-db": "0.8.4-main.ead640a",
67
+ "@dxos/plugin-deck": "0.8.4-main.ead640a",
68
+ "@dxos/plugin-client": "0.8.4-main.ead640a",
69
+ "@dxos/plugin-graph": "0.8.4-main.ead640a",
70
+ "@dxos/plugin-space": "0.8.4-main.ead640a",
71
+ "@dxos/plugin-thread": "0.8.4-main.ead640a",
72
+ "@dxos/react-client": "0.8.4-main.ead640a",
73
+ "@dxos/protocols": "0.8.4-main.ead640a",
74
+ "@dxos/plugin-markdown": "0.8.4-main.ead640a",
75
+ "@dxos/react-edge-client": "0.8.4-main.ead640a",
76
+ "@dxos/react-ui-components": "0.8.4-main.ead640a",
77
+ "@dxos/react-ui-attention": "0.8.4-main.ead640a",
78
+ "@dxos/react-ui-form": "0.8.4-main.ead640a",
79
+ "@dxos/react-ui-grid": "0.8.4-main.ead640a",
80
+ "@dxos/react-ui-sfx": "0.8.4-main.ead640a",
81
+ "@dxos/react-ui-editor": "0.8.4-main.ead640a",
82
+ "@dxos/react-ui-stack": "0.8.4-main.ead640a",
83
+ "@dxos/schema": "0.8.4-main.ead640a",
84
+ "@dxos/tracing": "0.8.4-main.ead640a",
85
+ "@dxos/util": "0.8.4-main.ead640a"
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.dedc0f3",
98
- "@dxos/plugin-storybook-layout": "0.8.4-main.dedc0f3",
99
- "@dxos/plugin-theme": "0.8.4-main.dedc0f3",
100
- "@dxos/react-ui": "0.8.4-main.dedc0f3",
101
- "@dxos/react-ui-form": "0.8.4-main.dedc0f3",
102
- "@dxos/random": "0.8.4-main.dedc0f3",
103
- "@dxos/react-ui-syntax-highlighter": "0.8.4-main.dedc0f3",
104
- "@dxos/react-ui-theme": "0.8.4-main.dedc0f3",
105
- "@dxos/storybook-utils": "0.8.4-main.dedc0f3",
106
- "@dxos/test-utils": "0.8.4-main.dedc0f3"
96
+ "@dxos/plugin-preview": "0.8.4-main.ead640a",
97
+ "@dxos/plugin-storybook-layout": "0.8.4-main.ead640a",
98
+ "@dxos/plugin-theme": "0.8.4-main.ead640a",
99
+ "@dxos/random": "0.8.4-main.ead640a",
100
+ "@dxos/react-ui": "0.8.4-main.ead640a",
101
+ "@dxos/react-ui-form": "0.8.4-main.ead640a",
102
+ "@dxos/react-ui-theme": "0.8.4-main.ead640a",
103
+ "@dxos/storybook-utils": "0.8.4-main.ead640a",
104
+ "@dxos/test-utils": "0.8.4-main.ead640a",
105
+ "@dxos/react-ui-syntax-highlighter": "0.8.4-main.ead640a"
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.dedc0f3",
115
- "@dxos/react-ui-theme": "0.8.4-main.dedc0f3"
111
+ "react": "^19.0.0",
112
+ "react-dom": "^19.0.0",
113
+ "@dxos/react-ui": "0.8.4-main.ead640a",
114
+ "@dxos/react-ui-theme": "0.8.4-main.ead640a"
116
115
  },
117
116
  "publishConfig": {
118
117
  "access": "public"
@@ -14,59 +14,59 @@ import { meta } from './meta';
14
14
  import { translations } from './translations';
15
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: Transcript.Transcript.typename,
30
- metadata: {
31
- icon: 'ph--subtitles--regular',
32
- // TODO(wittjosiah): Factor out. Artifact? Separate capability?
33
- getTextContent: async (transcript: Transcript.Transcript) => {
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) => renderByline(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: () =>
27
+ contributes(Capabilities.Metadata, {
28
+ id: Transcript.Transcript.typename,
29
+ metadata: {
30
+ icon: 'ph--subtitles--regular',
31
+ iconClassName: 'text-skySurfaceText',
32
+ // TODO(wittjosiah): Factor out. Artifact? Separate capability?
33
+ getTextContent: async (transcript: Transcript.Transcript) => {
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) => renderByline(members)(message, index))
41
+ .join('\n\n');
42
+ return content;
44
43
  },
45
- }),
46
- }),
47
- defineModule({
48
- id: `${meta.id}/module/schema`,
49
- activatesOn: ClientEvents.SetupSchema,
50
- activate: () => [contributes(ClientCapabilities.Schema, [Transcript.Transcript])],
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
- defineModule({
68
- id: `${meta.id}/module/blueprint`,
69
- activatesOn: Events.SetupArtifactDefinition,
70
- activate: BlueprintDefinition,
71
- }),
72
- ]);
44
+ },
45
+ }),
46
+ }),
47
+ defineModule({
48
+ id: `${meta.id}/module/schema`,
49
+ activatesOn: ClientEvents.SetupSchema,
50
+ activate: () => [contributes(ClientCapabilities.Schema, [Transcript.Transcript])],
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
+ defineModule({
68
+ id: `${meta.id}/module/blueprint`,
69
+ activatesOn: Events.SetupArtifactDefinition,
70
+ activate: BlueprintDefinition,
71
+ }),
72
+ ]);
@@ -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
  }
@@ -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';
@@ -182,25 +180,28 @@ const QueueStoryWrapper = () => {
182
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;
@@ -18,7 +18,7 @@ import {
18
18
  } from '@dxos/react-ui-editor';
19
19
  import { mx } from '@dxos/react-ui-theme';
20
20
  import { type DataType } from '@dxos/schema';
21
- import { isNotFalsy } from '@dxos/util';
21
+ import { isTruthy } from '@dxos/util';
22
22
 
23
23
  import { type SerializationModel } from '../../model';
24
24
  import { type Transcript } from '../../types';
@@ -79,7 +79,7 @@ export const TranscriptView = ({ classNames, space, transcript: object, model }:
79
79
  started: object?.started ? new Date(object.started) : undefined,
80
80
  }),
81
81
  autoScroll(),
82
- ].filter(isNotFalsy),
82
+ ].filter(isTruthy),
83
83
  };
84
84
  }, [space, model]);
85
85
 
@@ -3,7 +3,7 @@
3
3
  //
4
4
 
5
5
  import { intervalToDuration } from 'date-fns/intervalToDuration';
6
- import { Schema } from 'effect';
6
+ import * as Schema from 'effect/Schema';
7
7
  import { yieldOrContinue } from 'main-thread-scheduling';
8
8
  import React, { type FC, type WheelEvent, useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
9
  import { type OnResizeCallback, useResizeDetector } from 'react-resize-detector';
@@ -21,7 +21,7 @@ import {
21
21
  } from '@dxos/react-ui-grid';
22
22
  import { mx } from '@dxos/react-ui-theme';
23
23
 
24
- import { TRANSCRIPTION_PLUGIN } from '../../../meta';
24
+ import { meta } from '../../../meta';
25
25
 
26
26
  /**
27
27
  * Transcription fragment.
@@ -125,7 +125,7 @@ export type TranscriptViewProps = ThemedClassName<{
125
125
  * @@deprecated
126
126
  */
127
127
  export const Transcript: FC<TranscriptViewProps> = ({ classNames, blocks, attendableId, ignoreAttention }) => {
128
- const { t } = useTranslation(TRANSCRIPTION_PLUGIN);
128
+ const { t } = useTranslation(meta.id);
129
129
  const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);
130
130
  const [rows, setRows] = useState<DxGridAxisMeta | undefined>(undefined);
131
131
  const [columns, setColumns] = useState<DxGridAxisMeta | undefined>(undefined);
@@ -144,7 +144,7 @@ export const Transcript: FC<TranscriptViewProps> = ({ classNames, blocks, attend
144
144
  [hasAttention, ignoreAttention],
145
145
  );
146
146
 
147
- const abortControllerRef = useRef<AbortController>();
147
+ const abortControllerRef = useRef<AbortController>(null);
148
148
 
149
149
  const handleResize = useCallback(
150
150
  async ({ entry }: { entry: { target: HTMLDivElement } | null }) => {
@@ -242,7 +242,7 @@ export const Transcript: FC<TranscriptViewProps> = ({ classNames, blocks, attend
242
242
  ref={setDxGrid}
243
243
  />
244
244
  </Grid.Root>
245
- <div role='none' {...{ inert: '' }} aria-hidden className={measureClasses} ref={measureRef} />
245
+ <div role='none' {...{ inert: true }} aria-hidden className={measureClasses} ref={measureRef} />
246
246
  <IconButton
247
247
  icon='ph--arrow-line-down--regular'
248
248
  iconOnly
@@ -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, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
9
7
 
@@ -12,8 +10,8 @@ import { withPluginManager } from '@dxos/app-framework/testing';
12
10
  import { scheduleTask } from '@dxos/async';
13
11
  import { Context } from '@dxos/context';
14
12
  import { Obj } from '@dxos/echo';
13
+ import { createQueueDXN } from '@dxos/echo/internal';
15
14
  import { MemoryQueue } from '@dxos/echo-db';
16
- import { createQueueDXN } from '@dxos/echo-schema';
17
15
  import { FunctionExecutor, ServiceContainer } from '@dxos/functions';
18
16
  import { log } from '@dxos/log';
19
17
  import { ClientPlugin } from '@dxos/plugin-client';
@@ -21,10 +19,10 @@ import { PreviewPlugin } from '@dxos/plugin-preview';
21
19
  import { SpacePlugin } from '@dxos/plugin-space';
22
20
  import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
23
21
  import { ThemePlugin } from '@dxos/plugin-theme';
22
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
24
23
  import { defaultTx } from '@dxos/react-ui-theme';
25
24
  import { DataType } from '@dxos/schema';
26
25
  import { Testing, seedTestData } from '@dxos/schema/testing';
27
- import { withLayout, withTheme } from '@dxos/storybook-utils';
28
26
 
29
27
  import { useAudioFile, useQueueModelAdapter, useTranscriber } from '../../hooks';
30
28
  import { MessageNormalizer, getActorId } from '../../segments-normalization';
@@ -189,10 +187,10 @@ const AudioFile = ({
189
187
  const meta = {
190
188
  title: 'plugins/plugin-transcription/FileTranscription',
191
189
  decorators: [
190
+ withTheme,
191
+ withLayout({ container: 'column' }),
192
192
  withPluginManager({
193
193
  plugins: [
194
- ThemePlugin({ tx: defaultTx }),
195
- StorybookLayoutPlugin(),
196
194
  ClientPlugin({
197
195
  types: [TestItem, DataType.Person, DataType.Organization, Testing.DocumentType],
198
196
  onClientInitialized: async ({ client }) => {
@@ -202,16 +200,18 @@ const meta = {
202
200
  await seedTestData(client.spaces.default);
203
201
  },
204
202
  }),
205
- SpacePlugin(),
203
+ SpacePlugin({}),
204
+ IntentPlugin(),
205
+
206
+ // UI
207
+ ThemePlugin({ tx: defaultTx }),
206
208
  SettingsPlugin(),
207
209
  PreviewPlugin(),
208
- IntentPlugin(),
209
210
  TranscriptionPlugin(),
211
+ StorybookLayoutPlugin({}),
210
212
  ],
211
213
  fireEvents: [Events.SetupAppGraph],
212
214
  }),
213
- withTheme,
214
- withLayout({ fullscreen: true, classNames: 'justify-center' }),
215
215
  ],
216
216
  } satisfies Meta;
217
217
 
@@ -2,15 +2,13 @@
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, { useEffect, useMemo, useState } from 'react';
9
7
 
10
8
  import { log } from '@dxos/log';
11
9
  import { Toolbar } from '@dxos/react-ui';
10
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
12
11
  import { mx } from '@dxos/react-ui-theme';
13
- import { withLayout, withTheme } from '@dxos/storybook-utils';
14
12
 
15
13
  type Word = {
16
14
  text: string;
@@ -120,7 +118,7 @@ const DefaultStory = ({ keywords }: StoryProps) => {
120
118
  const meta = {
121
119
  title: 'plugins/plugin-transcription/KeyWordDetection',
122
120
  render: DefaultStory,
123
- decorators: [withTheme, withLayout({ fullscreen: true, classNames: 'justify-center' })],
121
+ decorators: [withTheme, withLayout({ container: 'column' })],
124
122
  } satisfies Meta<typeof DefaultStory>;
125
123
 
126
124
  export default meta;
@@ -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, { useCallback, useEffect, useMemo, useState } from 'react';
9
7
 
@@ -17,8 +15,8 @@ import {
17
15
  processTranscriptMessage,
18
16
  } from '@dxos/assistant/extraction';
19
17
  import { Filter, Obj, type Type } from '@dxos/echo';
18
+ import { createQueueDXN } from '@dxos/echo/internal';
20
19
  import { MemoryQueue } from '@dxos/echo-db';
21
- import { createQueueDXN } from '@dxos/echo-schema';
22
20
  import { FunctionExecutor, ServiceContainer } from '@dxos/functions';
23
21
  import { invariant } from '@dxos/invariant';
24
22
  import { log } from '@dxos/log';
@@ -28,10 +26,10 @@ import { SpacePlugin } from '@dxos/plugin-space';
28
26
  import { StorybookLayoutPlugin } from '@dxos/plugin-storybook-layout';
29
27
  import { ThemePlugin } from '@dxos/plugin-theme';
30
28
  import { IndexKind, useSpace } from '@dxos/react-client/echo';
29
+ import { withLayout, withTheme } from '@dxos/react-ui/testing';
31
30
  import { defaultTx } from '@dxos/react-ui-theme';
32
31
  import { DataType } from '@dxos/schema';
33
32
  import { Testing, seedTestData } from '@dxos/schema/testing';
34
- import { withLayout, withTheme } from '@dxos/storybook-utils';
35
33
 
36
34
  import { useAudioTrack, useQueueModelAdapter, useTranscriber } from '../../hooks';
37
35
  import { TestItem } from '../../testing';
@@ -197,10 +195,10 @@ const meta = {
197
195
  title: 'plugins/plugin-transcription/MicrophoneTranscription',
198
196
  render: DefaultStory,
199
197
  decorators: [
198
+ withTheme,
199
+ withLayout({ container: 'column' }),
200
200
  withPluginManager({
201
201
  plugins: [
202
- ThemePlugin({ tx: defaultTx }),
203
- StorybookLayoutPlugin(),
204
202
  ClientPlugin({
205
203
  types: [TestItem, DataType.Person, DataType.Organization, Testing.DocumentType],
206
204
  onClientInitialized: async ({ client }) => {
@@ -223,16 +221,18 @@ const meta = {
223
221
  await seedTestData(client.spaces.default);
224
222
  },
225
223
  }),
226
- SpacePlugin(),
224
+ SpacePlugin({}),
225
+ IntentPlugin(),
227
226
  SettingsPlugin(),
227
+
228
+ // UI
229
+ ThemePlugin({ tx: defaultTx }),
228
230
  PreviewPlugin(),
229
- IntentPlugin(),
230
231
  TranscriptionPlugin(),
232
+ StorybookLayoutPlugin({}),
231
233
  ],
232
234
  fireEvents: [Events.SetupAppGraph],
233
235
  }),
234
- withTheme,
235
- withLayout({ fullscreen: true, classNames: 'justify-center' }),
236
236
  ],
237
237
  } satisfies Meta<typeof DefaultStory>;
238
238
 
@@ -19,7 +19,7 @@ export const TranscriptionStory: FC<{
19
19
  disabled?: boolean;
20
20
  running: boolean;
21
21
  onRunningChange: Dispatch<SetStateAction<boolean>>;
22
- audioRef?: RefObject<HTMLAudioElement>;
22
+ audioRef?: RefObject<HTMLAudioElement | null>;
23
23
  }> = ({ model, running, onRunningChange, audioRef, disabled }) => {
24
24
  const space = useSpace();
25
25
 
@@ -2,7 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Effect, Schema } from 'effect';
5
+ import * as Effect from 'effect/Effect';
6
+ import * as Schema from 'effect/Schema';
6
7
 
7
8
  import { ArtifactId } from '@dxos/assistant';
8
9
  import { Obj } from '@dxos/echo';
@@ -13,7 +14,8 @@ import { renderByline } from '../components';
13
14
  import { Transcript } from '../types';
14
15
 
15
16
  export default defineFunction({
16
- name: 'dxos.org/function/transcription/open',
17
+ key: 'dxos.org/function/transcription/open',
18
+ name: 'Open',
17
19
  description: 'Opens and reads the contents of a transcription object.',
18
20
  inputSchema: Schema.Struct({
19
21
  id: ArtifactId.annotations({
@@ -2,7 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { Array, Effect, Layer, Option, Schema, pipe } from 'effect';
5
+ import * as Array from 'effect/Array';
6
+ import * as Effect from 'effect/Effect';
7
+ import * as Function from 'effect/Function';
8
+ import * as Layer from 'effect/Layer';
9
+ import * as Option from 'effect/Option';
10
+ import * as Schema from 'effect/Schema';
6
11
 
7
12
  import { AiService, ConsolePrinter, ToolExecutionService, ToolResolverService } from '@dxos/ai';
8
13
  import { AiSession, GenerationObserver } from '@dxos/assistant';
@@ -13,7 +18,8 @@ import { trim } from '@dxos/util';
13
18
  * Summarize a transcript of a meeting.
14
19
  */
15
20
  export default defineFunction({
16
- name: 'dxos.org/function/transcription/summarize',
21
+ key: 'dxos.org/function/transcription/summarize',
22
+ name: 'Summarize',
17
23
  description: 'Summarize a transcript of a meeting.',
18
24
  inputSchema: Schema.Struct({
19
25
  transcript: Schema.String.annotations({
@@ -37,11 +43,11 @@ export default defineFunction({
37
43
  observer: GenerationObserver.fromPrinter(new ConsolePrinter({ tag: 'summarize' })),
38
44
  });
39
45
 
40
- const summary = pipe(
46
+ const summary = Function.pipe(
41
47
  result,
42
48
  Array.findLast((msg) => msg.sender.role === 'assistant' && msg.blocks.some((block) => block._tag === 'text')),
43
49
  Option.flatMap((msg) =>
44
- pipe(
50
+ Function.pipe(
45
51
  msg.blocks,
46
52
  Array.findLast((block) => block._tag === 'text'),
47
53
  Option.map((block) => block.text),