@dxos/plugin-transcription 0.8.2-main.f081794 → 0.8.2-main.fbd8ed0

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 (208) hide show
  1. package/dist/lib/browser/{TranscriptContainer-4D4BHE7G.mjs → TranscriptContainer-CXA4ZBHW.mjs} +3 -3
  2. package/dist/lib/browser/app-graph-builder-REQZ5SC5.mjs +351 -0
  3. package/dist/lib/browser/app-graph-builder-REQZ5SC5.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-DR3NBV6Q.mjs → chunk-3TKXI6TQ.mjs} +105 -78
  5. package/dist/lib/browser/chunk-3TKXI6TQ.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-JHWEZRWC.mjs +63 -0
  7. package/dist/lib/browser/chunk-JHWEZRWC.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-RHHJZQPM.mjs → chunk-K2LS2QOM.mjs} +135 -117
  9. package/dist/lib/browser/chunk-K2LS2QOM.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-LCTMCTYY.mjs +27 -0
  11. package/dist/lib/browser/chunk-LCTMCTYY.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-5BE6RTNC.mjs → chunk-LTIQFX4W.mjs} +1 -1
  13. package/dist/lib/browser/{chunk-5BE6RTNC.mjs.map → chunk-LTIQFX4W.mjs.map} +1 -1
  14. package/dist/lib/browser/index.mjs +30 -18
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-ZQQEH27F.mjs → intent-resolver-DZ62CJPC.mjs} +4 -4
  17. package/dist/lib/browser/intent-resolver-DZ62CJPC.mjs.map +7 -0
  18. package/dist/lib/browser/{meeting-transcription-state-5D52VTHU.mjs → meeting-transcription-state-MNA2XROE.mjs} +2 -2
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-HETJ5XY6.mjs → react-surface-PUXZNAZL.mjs} +18 -7
  21. package/dist/lib/browser/react-surface-PUXZNAZL.mjs.map +7 -0
  22. package/dist/lib/browser/settings-JWDS4J3F.mjs +24 -0
  23. package/dist/lib/browser/settings-JWDS4J3F.mjs.map +7 -0
  24. package/dist/lib/browser/{transcriber-SMRLU2KY.mjs → transcriber-YWWIV6KP.mjs} +4 -4
  25. package/dist/lib/browser/types/index.mjs +3 -3
  26. package/dist/lib/node/{TranscriptContainer-ZWP6UKY6.cjs → TranscriptContainer-SSJVLRM6.cjs} +8 -8
  27. package/dist/lib/node/{TranscriptContainer-ZWP6UKY6.cjs.map → TranscriptContainer-SSJVLRM6.cjs.map} +2 -2
  28. package/dist/lib/node/app-graph-builder-OAPU4GDH.cjs +352 -0
  29. package/dist/lib/node/app-graph-builder-OAPU4GDH.cjs.map +7 -0
  30. package/dist/lib/node/{chunk-3QEJ5EBO.cjs → chunk-EJWB53WK.cjs} +22 -32
  31. package/dist/lib/node/chunk-EJWB53WK.cjs.map +7 -0
  32. package/dist/lib/node/{chunk-KO6MKCED.cjs → chunk-EVE3H46F.cjs} +138 -119
  33. package/dist/lib/node/chunk-EVE3H46F.cjs.map +7 -0
  34. package/dist/lib/node/{chunk-HYGDHS6X.cjs → chunk-JUGOXWES.cjs} +4 -4
  35. package/dist/lib/node/{chunk-HYGDHS6X.cjs.map → chunk-JUGOXWES.cjs.map} +1 -1
  36. package/dist/lib/node/{chunk-WXG4Z2EZ.cjs → chunk-L27AK6FQ.cjs} +23 -8
  37. package/dist/lib/node/chunk-L27AK6FQ.cjs.map +7 -0
  38. package/dist/lib/node/{chunk-LA73IHCB.cjs → chunk-WKZLGVEJ.cjs} +108 -80
  39. package/dist/lib/node/chunk-WKZLGVEJ.cjs.map +7 -0
  40. package/dist/lib/node/index.cjs +47 -35
  41. package/dist/lib/node/index.cjs.map +3 -3
  42. package/dist/lib/node/{intent-resolver-VY3XWYAA.cjs → intent-resolver-TRBKI24D.cjs} +9 -9
  43. package/dist/lib/node/intent-resolver-TRBKI24D.cjs.map +7 -0
  44. package/dist/lib/node/{meeting-transcription-state-OYWCY5XE.cjs → meeting-transcription-state-5XLTMWPA.cjs} +6 -6
  45. package/dist/lib/node/meta.json +1 -1
  46. package/dist/lib/node/{react-surface-M2JQIIDY.cjs → react-surface-SZAMHCX7.cjs} +20 -11
  47. package/dist/lib/node/react-surface-SZAMHCX7.cjs.map +7 -0
  48. package/dist/lib/node/settings-AWWMOSCV.cjs +38 -0
  49. package/dist/lib/node/settings-AWWMOSCV.cjs.map +7 -0
  50. package/dist/lib/node/{transcriber-E6AAB4SU.cjs → transcriber-AFUXFHCR.cjs} +10 -10
  51. package/dist/lib/node/types/index.cjs +8 -8
  52. package/dist/lib/node/types/index.cjs.map +1 -1
  53. package/dist/lib/node-esm/{TranscriptContainer-3HJ752CP.mjs → TranscriptContainer-M53LI2TX.mjs} +3 -3
  54. package/dist/lib/node-esm/app-graph-builder-UBP6EOBR.mjs +352 -0
  55. package/dist/lib/node-esm/app-graph-builder-UBP6EOBR.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-SDMGJZLN.mjs → chunk-4KC3E5T4.mjs} +135 -117
  57. package/dist/lib/node-esm/chunk-4KC3E5T4.mjs.map +7 -0
  58. package/dist/lib/node-esm/{chunk-YXZOLOFT.mjs → chunk-5E2MR5XK.mjs} +1 -1
  59. package/dist/lib/node-esm/{chunk-YXZOLOFT.mjs.map → chunk-5E2MR5XK.mjs.map} +1 -1
  60. package/dist/lib/node-esm/chunk-MHQP2PAF.mjs +28 -0
  61. package/dist/lib/node-esm/chunk-MHQP2PAF.mjs.map +7 -0
  62. package/dist/lib/node-esm/{chunk-54HDN33F.mjs → chunk-QYG2FOXA.mjs} +22 -32
  63. package/dist/lib/node-esm/chunk-QYG2FOXA.mjs.map +7 -0
  64. package/dist/lib/node-esm/{chunk-K3R3YK3S.mjs → chunk-V5IWBPYO.mjs} +105 -78
  65. package/dist/lib/node-esm/chunk-V5IWBPYO.mjs.map +7 -0
  66. package/dist/lib/node-esm/index.mjs +30 -18
  67. package/dist/lib/node-esm/index.mjs.map +3 -3
  68. package/dist/lib/node-esm/{intent-resolver-FCTNJPWY.mjs → intent-resolver-HFVAL274.mjs} +4 -4
  69. package/dist/lib/node-esm/intent-resolver-HFVAL274.mjs.map +7 -0
  70. package/dist/lib/node-esm/{meeting-transcription-state-XMZJ45P4.mjs → meeting-transcription-state-3WOZ52BQ.mjs} +2 -2
  71. package/dist/lib/node-esm/meta.json +1 -1
  72. package/dist/lib/node-esm/{react-surface-PXFSIM6V.mjs → react-surface-UEJELL7I.mjs} +18 -7
  73. package/dist/lib/node-esm/react-surface-UEJELL7I.mjs.map +7 -0
  74. package/dist/lib/node-esm/settings-QFNFGFJ5.mjs +25 -0
  75. package/dist/lib/node-esm/settings-QFNFGFJ5.mjs.map +7 -0
  76. package/dist/lib/node-esm/{transcriber-REAGRCPY.mjs → transcriber-7RJEFPDI.mjs} +4 -4
  77. package/dist/lib/node-esm/types/index.mjs +3 -3
  78. package/dist/types/src/TranscriptionPlugin.d.ts.map +1 -1
  79. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  80. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  81. package/dist/types/src/capabilities/capabilities.d.ts +1 -1
  82. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  83. package/dist/types/src/capabilities/index.d.ts +3 -178
  84. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  85. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  86. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  88. package/dist/types/src/capabilities/settings.d.ts +4 -0
  89. package/dist/types/src/capabilities/settings.d.ts.map +1 -0
  90. package/dist/types/src/components/Transcript/Transcript.d.ts +6 -4
  91. package/dist/types/src/components/Transcript/Transcript.d.ts.map +1 -1
  92. package/dist/types/src/components/Transcript/Transcript.stories.d.ts +8 -4
  93. package/dist/types/src/components/Transcript/Transcript.stories.d.ts.map +1 -1
  94. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts +27 -0
  95. package/dist/types/src/components/Transcript/deprecated/OldTranscript.d.ts.map +1 -0
  96. package/dist/types/src/components/Transcript/transcript-extension.d.ts +4 -4
  97. package/dist/types/src/components/Transcript/transcript-extension.d.ts.map +1 -1
  98. package/dist/types/src/components/TranscriptContainer.d.ts.map +1 -1
  99. package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts +6 -0
  100. package/dist/types/src/components/TranscriptionSettings/TranscriptionSettings.d.ts.map +1 -0
  101. package/dist/types/src/components/TranscriptionSettings/index.d.ts +2 -0
  102. package/dist/types/src/components/TranscriptionSettings/index.d.ts.map +1 -0
  103. package/dist/types/src/components/index.d.ts +1 -0
  104. package/dist/types/src/components/index.d.ts.map +1 -1
  105. package/dist/types/src/components/transcription.stories.d.ts +6 -3
  106. package/dist/types/src/components/transcription.stories.d.ts.map +1 -1
  107. package/dist/types/src/entity-extraction/entity-extraction.d.ts +33 -7
  108. package/dist/types/src/entity-extraction/entity-extraction.d.ts.map +1 -1
  109. package/dist/types/src/hooks/useAudioFile.d.ts.map +1 -1
  110. package/dist/types/src/hooks/useAudioTrack.d.ts.map +1 -1
  111. package/dist/types/src/hooks/useQueueModelAdapter.d.ts +2 -2
  112. package/dist/types/src/hooks/useQueueModelAdapter.d.ts.map +1 -1
  113. package/dist/types/src/hooks/useTranscriber.d.ts.map +1 -1
  114. package/dist/types/src/hooks/useVoiceInput.d.ts.map +1 -1
  115. package/dist/types/src/model/model.d.ts +23 -23
  116. package/dist/types/src/model/model.d.ts.map +1 -1
  117. package/dist/types/src/testing/index.d.ts +2 -0
  118. package/dist/types/src/testing/index.d.ts.map +1 -0
  119. package/dist/types/src/testing/testing.d.ts +40 -0
  120. package/dist/types/src/testing/testing.d.ts.map +1 -0
  121. package/dist/types/src/transcriber/transcriber.d.ts +2 -2
  122. package/dist/types/src/transcriber/transcriber.d.ts.map +1 -1
  123. package/dist/types/src/transcriber/transcription-manager.d.ts +17 -15
  124. package/dist/types/src/transcriber/transcription-manager.d.ts.map +1 -1
  125. package/dist/types/src/translations.d.ts +3 -18
  126. package/dist/types/src/translations.d.ts.map +1 -1
  127. package/dist/types/src/types/schema.d.ts +26 -40
  128. package/dist/types/src/types/schema.d.ts.map +1 -1
  129. package/dist/types/src/types/types.d.ts +18 -7
  130. package/dist/types/src/types/types.d.ts.map +1 -1
  131. package/dist/types/src/util/array.d.ts.map +1 -1
  132. package/dist/types/src/util/get-time-str.d.ts.map +1 -1
  133. package/dist/types/src/util/monitor-audio-level.d.ts.map +1 -1
  134. package/dist/types/tsconfig.tsbuildinfo +1 -1
  135. package/package.json +55 -46
  136. package/src/TranscriptionPlugin.tsx +30 -13
  137. package/src/capabilities/app-graph-builder.ts +190 -98
  138. package/src/capabilities/capabilities.ts +1 -1
  139. package/src/capabilities/index.ts +1 -0
  140. package/src/capabilities/intent-resolver.ts +5 -4
  141. package/src/capabilities/react-surface.tsx +12 -4
  142. package/src/capabilities/settings.ts +20 -0
  143. package/src/components/Transcript/Transcript.stories.tsx +72 -36
  144. package/src/components/Transcript/Transcript.tsx +37 -30
  145. package/src/components/Transcript/deprecated/{Transcript.tsx → OldTranscript.tsx} +30 -1
  146. package/src/components/Transcript/transcript-extension.ts +20 -17
  147. package/src/components/TranscriptContainer.tsx +6 -4
  148. package/src/components/TranscriptionSettings/TranscriptionSettings.tsx +26 -0
  149. package/src/components/TranscriptionSettings/index.ts +5 -0
  150. package/src/components/index.ts +1 -0
  151. package/src/components/transcription.stories.tsx +85 -35
  152. package/src/entity-extraction/entity-extraction.test.ts +75 -10
  153. package/src/entity-extraction/entity-extraction.ts +110 -55
  154. package/src/entity-extraction/system-prompt.tpl +38 -9
  155. package/src/hooks/useQueueModelAdapter.ts +44 -11
  156. package/src/model/model.test.ts +90 -44
  157. package/src/model/model.ts +59 -59
  158. package/src/testing/index.ts +5 -0
  159. package/src/testing/testing.ts +216 -0
  160. package/src/transcriber/transcriber.browser.test.ts +3 -3
  161. package/src/transcriber/transcriber.ts +19 -10
  162. package/src/transcriber/transcription-manager.ts +66 -57
  163. package/src/translations.ts +2 -0
  164. package/src/types/schema.ts +10 -31
  165. package/src/types/types.ts +18 -8
  166. package/dist/lib/browser/app-graph-builder-I4SSIQMW.mjs +0 -168
  167. package/dist/lib/browser/app-graph-builder-I4SSIQMW.mjs.map +0 -7
  168. package/dist/lib/browser/chunk-5Q3R53U3.mjs +0 -73
  169. package/dist/lib/browser/chunk-5Q3R53U3.mjs.map +0 -7
  170. package/dist/lib/browser/chunk-DR3NBV6Q.mjs.map +0 -7
  171. package/dist/lib/browser/chunk-GI5LZ4SV.mjs +0 -8
  172. package/dist/lib/browser/chunk-GI5LZ4SV.mjs.map +0 -7
  173. package/dist/lib/browser/chunk-RHHJZQPM.mjs.map +0 -7
  174. package/dist/lib/browser/intent-resolver-ZQQEH27F.mjs.map +0 -7
  175. package/dist/lib/browser/react-surface-HETJ5XY6.mjs.map +0 -7
  176. package/dist/lib/node/app-graph-builder-WWC4WNTG.cjs +0 -177
  177. package/dist/lib/node/app-graph-builder-WWC4WNTG.cjs.map +0 -7
  178. package/dist/lib/node/chunk-3QEJ5EBO.cjs.map +0 -7
  179. package/dist/lib/node/chunk-KO6MKCED.cjs.map +0 -7
  180. package/dist/lib/node/chunk-LA73IHCB.cjs.map +0 -7
  181. package/dist/lib/node/chunk-WXG4Z2EZ.cjs.map +0 -7
  182. package/dist/lib/node/intent-resolver-VY3XWYAA.cjs.map +0 -7
  183. package/dist/lib/node/react-surface-M2JQIIDY.cjs.map +0 -7
  184. package/dist/lib/node-esm/app-graph-builder-PPJQAFSI.mjs +0 -169
  185. package/dist/lib/node-esm/app-graph-builder-PPJQAFSI.mjs.map +0 -7
  186. package/dist/lib/node-esm/chunk-54HDN33F.mjs.map +0 -7
  187. package/dist/lib/node-esm/chunk-K3R3YK3S.mjs.map +0 -7
  188. package/dist/lib/node-esm/chunk-SDMGJZLN.mjs.map +0 -7
  189. package/dist/lib/node-esm/chunk-XY22OP6H.mjs +0 -10
  190. package/dist/lib/node-esm/chunk-XY22OP6H.mjs.map +0 -7
  191. package/dist/lib/node-esm/intent-resolver-FCTNJPWY.mjs.map +0 -7
  192. package/dist/lib/node-esm/react-surface-PXFSIM6V.mjs.map +0 -7
  193. package/dist/types/src/components/Transcript/deprecated/Transcript.d.ts +0 -13
  194. package/dist/types/src/components/Transcript/deprecated/Transcript.d.ts.map +0 -1
  195. package/dist/types/src/components/Transcript/testings.d.ts +0 -51
  196. package/dist/types/src/components/Transcript/testings.d.ts.map +0 -1
  197. package/dist/types/src/testing/test-data.d.ts +0 -73
  198. package/dist/types/src/testing/test-data.d.ts.map +0 -1
  199. package/src/components/Transcript/testings.ts +0 -182
  200. package/src/testing/test-data.ts +0 -314
  201. /package/dist/lib/browser/{TranscriptContainer-4D4BHE7G.mjs.map → TranscriptContainer-CXA4ZBHW.mjs.map} +0 -0
  202. /package/dist/lib/browser/{meeting-transcription-state-5D52VTHU.mjs.map → meeting-transcription-state-MNA2XROE.mjs.map} +0 -0
  203. /package/dist/lib/browser/{transcriber-SMRLU2KY.mjs.map → transcriber-YWWIV6KP.mjs.map} +0 -0
  204. /package/dist/lib/node/{meeting-transcription-state-OYWCY5XE.cjs.map → meeting-transcription-state-5XLTMWPA.cjs.map} +0 -0
  205. /package/dist/lib/node/{transcriber-E6AAB4SU.cjs.map → transcriber-AFUXFHCR.cjs.map} +0 -0
  206. /package/dist/lib/node-esm/{TranscriptContainer-3HJ752CP.mjs.map → TranscriptContainer-M53LI2TX.mjs.map} +0 -0
  207. /package/dist/lib/node-esm/{meeting-transcription-state-XMZJ45P4.mjs.map → meeting-transcription-state-3WOZ52BQ.mjs.map} +0 -0
  208. /package/dist/lib/node-esm/{transcriber-REAGRCPY.mjs.map → transcriber-7RJEFPDI.mjs.map} +0 -0
@@ -16,25 +16,27 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_3QEJ5EBO_exports = {};
20
- __export(chunk_3QEJ5EBO_exports, {
19
+ var chunk_EJWB53WK_exports = {};
20
+ __export(chunk_EJWB53WK_exports, {
21
21
  TRANSCRIPTION_URL: () => TRANSCRIPTION_URL,
22
- TranscriptBlock: () => TranscriptBlock,
23
22
  TranscriptSchema: () => TranscriptSchema,
24
23
  TranscriptType: () => TranscriptType,
25
24
  TranscriptionAction: () => TranscriptionAction,
25
+ TranscriptionSettingsSchema: () => TranscriptionSettingsSchema,
26
26
  isTranscript: () => isTranscript
27
27
  });
28
- module.exports = __toCommonJS(chunk_3QEJ5EBO_exports);
28
+ module.exports = __toCommonJS(chunk_EJWB53WK_exports);
29
29
  var import_chunk_NVZWGFJL = require("./chunk-NVZWGFJL.cjs");
30
+ var import_effect = require("effect");
30
31
  var import_echo_schema = require("@dxos/echo-schema");
32
+ var import_effect2 = require("effect");
31
33
  var import_echo_schema2 = require("@dxos/echo-schema");
32
34
  var import_echo = require("@dxos/react-client/echo");
33
- var TranscriptSchema = import_echo_schema.S.Struct({
34
- name: import_echo_schema.S.String,
35
+ var TranscriptSchema = import_effect.Schema.Struct({
36
+ name: import_effect.Schema.String,
35
37
  // TODO(burdon): Use Date or string?
36
- started: import_echo_schema.S.optional(import_echo_schema.S.String),
37
- ended: import_echo_schema.S.optional(import_echo_schema.S.String),
38
+ started: import_effect.Schema.optional(import_effect.Schema.String),
39
+ ended: import_effect.Schema.optional(import_effect.Schema.String),
38
40
  /**
39
41
  * Queue containing TranscriptBlock objects.
40
42
  */
@@ -46,34 +48,19 @@ var TranscriptType = class extends (0, import_echo_schema.TypedObject)({
46
48
  version: "0.1.0"
47
49
  })(TranscriptSchema.fields) {
48
50
  };
49
- var TranscriptHeader = import_echo_schema.S.Struct({
50
- started: import_echo_schema.S.optional(import_echo_schema.S.String)
51
+ var TranscriptHeader = import_effect.Schema.Struct({
52
+ started: import_effect.Schema.optional(import_effect.Schema.String)
51
53
  });
52
- var TranscriptSegment = import_echo_schema.S.Struct({
53
- // TODO(burdon): TS from service is not Unix TS (x1000).
54
- started: import_echo_schema.S.String,
55
- text: import_echo_schema.S.String
56
- });
57
- var TranscriptBlock = import_echo_schema.S.Struct({
58
- id: import_echo_schema.S.String,
59
- authorName: import_echo_schema.S.optional(import_echo_schema.S.String),
60
- authorHue: import_echo_schema.S.optional(import_echo_schema.S.String),
61
- segments: import_echo_schema.S.Array(TranscriptSegment)
62
- }).pipe((0, import_echo_schema.EchoObject)({
63
- typename: "dxos.org/type/TranscriptBlock",
64
- version: "0.1.0"
65
- }));
66
54
  var TRANSCRIPTION_URL = "https://calls-service.dxos.workers.dev";
67
55
  var TranscriptionAction;
68
56
  (function(TranscriptionAction2) {
69
57
  const TRANSCRIPTION_ACTION = `${import_chunk_NVZWGFJL.TRANSCRIPTION_PLUGIN}/action`;
70
- class Create extends import_echo_schema2.S.TaggedClass()(`${TRANSCRIPTION_ACTION}/create`, {
71
- input: import_echo_schema2.S.Struct({
72
- name: import_echo_schema2.S.optional(import_echo_schema2.S.String),
73
- // TODO(wittjosiah): SpaceId.
74
- spaceId: import_echo_schema2.S.String
58
+ class Create extends import_effect2.Schema.TaggedClass()(`${TRANSCRIPTION_ACTION}/create`, {
59
+ input: import_effect2.Schema.Struct({
60
+ name: import_effect2.Schema.optional(import_effect2.Schema.String),
61
+ spaceId: import_echo.SpaceId
75
62
  }),
76
- output: import_echo_schema2.S.Struct({
63
+ output: import_effect2.Schema.Struct({
77
64
  object: TranscriptType
78
65
  })
79
66
  }) {
@@ -83,13 +70,16 @@ var TranscriptionAction;
83
70
  var isTranscript = (object) => {
84
71
  return (0, import_echo.isLiveObject)(object) && (0, import_echo_schema2.isInstanceOf)(TranscriptType, object);
85
72
  };
73
+ var TranscriptionSettingsSchema = import_effect2.Schema.mutable(import_effect2.Schema.Struct({
74
+ entityExtraction: import_effect2.Schema.optional(import_effect2.Schema.Boolean).pipe(import_effect2.Schema.withConstructorDefault(() => true))
75
+ }));
86
76
  // Annotate the CommonJS export names for ESM import in node:
87
77
  0 && (module.exports = {
88
78
  TRANSCRIPTION_URL,
89
- TranscriptBlock,
90
79
  TranscriptSchema,
91
80
  TranscriptType,
92
81
  TranscriptionAction,
82
+ TranscriptionSettingsSchema,
93
83
  isTranscript
94
84
  });
95
- //# sourceMappingURL=chunk-3QEJ5EBO.cjs.map
85
+ //# sourceMappingURL=chunk-EJWB53WK.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Expando, Ref, TypedObject } from '@dxos/echo-schema';\n\n/**\n * Root transcript object created when the user starts a transcription.\n */\nexport const TranscriptSchema = Schema.Struct({\n name: Schema.String,\n\n // TODO(burdon): Use Date or string?\n started: Schema.optional(Schema.String),\n ended: Schema.optional(Schema.String),\n\n /**\n * Queue containing TranscriptBlock objects.\n */\n // TODO(wittjosiah): Should be a ref to a queue.\n queue: Ref(Expando),\n});\n\nexport class TranscriptType extends TypedObject({\n typename: 'dxos.org/type/Transcript',\n version: '0.1.0',\n})(TranscriptSchema.fields) {}\n\n// TODO(burdon): Do these need to be kept in sync with EDGE?\n\n/**\n * First message in queue.\n * Contains metadata for the recording and transcript.\n */\nconst TranscriptHeader = Schema.Struct({\n started: Schema.optional(Schema.String),\n});\n\nexport type TranscriptHeader = Schema.Schema.Type<typeof TranscriptHeader>;\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { isInstanceOf } from '@dxos/echo-schema';\nimport { isLiveObject, SpaceId } from '@dxos/react-client/echo';\n\nimport { TranscriptType } from './schema';\nimport { TRANSCRIPTION_PLUGIN } from '../meta';\n\n// TODO(burdon): Move to separate proto.\n\n/**\n * Endpoint to the calls service.\n */\n// TODO(burdon): Reconfigure/move.\nexport const TRANSCRIPTION_URL = 'https://calls-service.dxos.workers.dev';\n\nexport namespace TranscriptionAction {\n const TRANSCRIPTION_ACTION = `${TRANSCRIPTION_PLUGIN}/action`;\n\n export class Create extends Schema.TaggedClass<Create>()(`${TRANSCRIPTION_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n spaceId: SpaceId,\n }),\n output: Schema.Struct({\n object: TranscriptType,\n }),\n }) {}\n}\n\nexport const isTranscript = (object: unknown): object is typeof TranscriptType => {\n return isLiveObject(object) && isInstanceOf(TranscriptType, object);\n};\n\n// TODO(burdon): Create with decode consistently: Schema.decodeSync(TranscriptionSettingsSchema)({}))\nexport const TranscriptionSettingsSchema = Schema.mutable(\n Schema.Struct({\n entityExtraction: Schema.optional(Schema.Boolean).pipe(Schema.withConstructorDefault(() => true)),\n }),\n);\n\nexport type TranscriptionSettingsProps = Schema.Schema.Type<typeof TranscriptionSettingsSchema>;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAIA,oBAAuB;AAEvB,yBAA0C;ACF1C,IAAAA,iBAAuB;AAEvB,IAAAC,sBAA6B;AAC7B,kBAAsC;ADI/B,IAAMC,mBAAmBC,qBAAOC,OAAO;EAC5CC,MAAMF,qBAAOG;;EAGbC,SAASJ,qBAAOK,SAASL,qBAAOG,MAAM;EACtCG,OAAON,qBAAOK,SAASL,qBAAOG,MAAM;;;;;EAMpCI,WAAOC,wBAAIC,0BAAAA;AACb,CAAA;AAEO,IAAMC,iBAAN,kBAA6BC,gCAAY;EAC9CC,UAAU;EACVC,SAAS;AACX,CAAA,EAAGd,iBAAiBe,MAAM,EAAA;AAAG;AAQ7B,IAAMC,mBAAmBf,qBAAOC,OAAO;EACrCG,SAASJ,qBAAOK,SAASL,qBAAOG,MAAM;AACxC,CAAA;ACpBO,IAAMa,oBAAoB;;UAEhBC,sBAAAA;AACf,QAAMC,uBAAuB,GAAGC,0CAAAA;EAEzB,MAAMC,eAAepB,eAAAA,OAAOqB,YAAW,EAAW,GAAGH,oBAAAA,WAA+B;IACzFI,OAAOtB,eAAAA,OAAOC,OAAO;MACnBC,MAAMF,eAAAA,OAAOK,SAASL,eAAAA,OAAOG,MAAM;MACnCoB,SAASC;IACX,CAAA;IACAC,QAAQzB,eAAAA,OAAOC,OAAO;MACpByB,QAAQhB;IACV,CAAA;EACF,CAAA,EAAA;EAAI;uBARSU,SAAAA;AASf,GAZiBH,wBAAAA,sBAAAA,CAAAA,EAAAA;AAcV,IAAMU,eAAe,CAACD,WAAAA;AAC3B,aAAOE,0BAAaF,MAAAA,SAAWG,kCAAanB,gBAAgBgB,MAAAA;AAC9D;AAGO,IAAMI,8BAA8B9B,eAAAA,OAAO+B,QAChD/B,eAAAA,OAAOC,OAAO;EACZ+B,kBAAkBhC,eAAAA,OAAOK,SAASL,eAAAA,OAAOiC,OAAO,EAAEC,KAAKlC,eAAAA,OAAOmC,uBAAuB,MAAM,IAAA,CAAA;AAC7F,CAAA,CAAA;",
6
+ "names": ["import_effect", "import_echo_schema", "TranscriptSchema", "Schema", "Struct", "name", "String", "started", "optional", "ended", "queue", "Ref", "Expando", "TranscriptType", "TypedObject", "typename", "version", "fields", "TranscriptHeader", "TRANSCRIPTION_URL", "TranscriptionAction", "TRANSCRIPTION_ACTION", "TRANSCRIPTION_PLUGIN", "Create", "TaggedClass", "input", "spaceId", "SpaceId", "output", "object", "isTranscript", "isLiveObject", "isInstanceOf", "TranscriptionSettingsSchema", "mutable", "entityExtraction", "Boolean", "pipe", "withConstructorDefault"]
7
+ }
@@ -26,12 +26,13 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
26
26
  mod
27
27
  ));
28
28
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_KO6MKCED_exports = {};
30
- __export(chunk_KO6MKCED_exports, {
29
+ var chunk_EVE3H46F_exports = {};
30
+ __export(chunk_EVE3H46F_exports, {
31
31
  AppGraphBuilder: () => AppGraphBuilder,
32
32
  IntentResolver: () => IntentResolver,
33
33
  MeetingTranscriptionState: () => MeetingTranscriptionState,
34
34
  ReactSurface: () => ReactSurface,
35
+ Settings: () => Settings,
35
36
  Transcriber: () => Transcriber,
36
37
  Transcript: () => Transcript,
37
38
  TranscriptContainer_default: () => TranscriptContainer_default,
@@ -43,16 +44,13 @@ __export(chunk_KO6MKCED_exports, {
43
44
  useTranscriber: () => useTranscriber,
44
45
  useVoiceInput: () => useVoiceInput
45
46
  });
46
- module.exports = __toCommonJS(chunk_KO6MKCED_exports);
47
- var import_chunk_HYGDHS6X = require("./chunk-HYGDHS6X.cjs");
47
+ module.exports = __toCommonJS(chunk_EVE3H46F_exports);
48
+ var import_chunk_JUGOXWES = require("./chunk-JUGOXWES.cjs");
48
49
  var import_react = __toESM(require("react"));
49
50
  var import_echo = require("@dxos/client/echo");
50
51
  var import_echo2 = require("@dxos/react-client/echo");
51
52
  var import_react_ui_stack = require("@dxos/react-ui-stack");
52
53
  var import_react2 = __toESM(require("react"));
53
- var import_keys = require("@dxos/keys");
54
- var import_log = require("@dxos/log");
55
- var import_react_client = require("@dxos/react-client");
56
54
  var import_react_ui = require("@dxos/react-ui");
57
55
  var import_react_ui_editor = require("@dxos/react-ui-editor");
58
56
  var import_react_ui_theme = require("@dxos/react-ui-theme");
@@ -65,9 +63,9 @@ var import_async = require("@dxos/async");
65
63
  var import_state2 = require("@codemirror/state");
66
64
  var import_async2 = require("@dxos/async");
67
65
  var import_invariant = require("@dxos/invariant");
68
- var import_log2 = require("@dxos/log");
66
+ var import_log = require("@dxos/log");
69
67
  var import_react3 = require("react");
70
- var import_log3 = require("@dxos/log");
68
+ var import_log2 = require("@dxos/log");
71
69
  var import_react4 = require("react");
72
70
  var import_react5 = require("react");
73
71
  var import_react6 = require("react");
@@ -76,7 +74,7 @@ var import_app_framework2 = require("@dxos/app-framework");
76
74
  var import_react7 = require("react");
77
75
  var import_async3 = require("@dxos/async");
78
76
  var import_context = require("@dxos/context");
79
- var import_log4 = require("@dxos/log");
77
+ var import_log3 = require("@dxos/log");
80
78
  var import_react_ui_sfx = require("@dxos/react-ui-sfx");
81
79
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/model/model.ts";
82
80
  var DocumentAdapter = class {
@@ -88,7 +86,7 @@ var DocumentAdapter = class {
88
86
  return this._view.state.doc.lines - 1;
89
87
  }
90
88
  replaceLines(from, remove, insert) {
91
- (0, import_log2.log)("replaceLines", {
89
+ (0, import_log.log)("replaceLines", {
92
90
  count: this._view.state.doc.lines,
93
91
  from,
94
92
  remove,
@@ -115,59 +113,59 @@ var DocumentAdapter = class {
115
113
  });
116
114
  }
117
115
  };
118
- var BlockModel = class {
119
- constructor(_renderer, initialBlocks = []) {
116
+ var SerializationModel = class {
117
+ constructor(_renderer, initialChunks = []) {
120
118
  this._renderer = _renderer;
121
- this._blocks = [];
122
- this._blockLineCounts = /* @__PURE__ */ new Map();
123
- this._lineToBlock = /* @__PURE__ */ new Map();
119
+ this._chunks = [];
120
+ this._chunkLineCounts = /* @__PURE__ */ new Map();
121
+ this._lineToChunk = /* @__PURE__ */ new Map();
124
122
  this._changes = [];
125
123
  this.update = new import_async2.Event();
126
- initialBlocks.forEach((block) => {
127
- this.appendBlock(block);
124
+ initialChunks.forEach((chunk) => {
125
+ this.appendChunk(chunk);
128
126
  });
129
127
  }
130
128
  toJSON() {
131
129
  return {
132
- blocks: this._blocks.length,
130
+ chunks: this._chunks.length,
133
131
  changes: this._changes.length
134
132
  };
135
133
  }
136
134
  get doc() {
137
135
  return import_state2.Text.of([
138
- ...this._blocks.flatMap((block) => this._renderer(block)),
136
+ ...this._chunks.flatMap((chunk, index) => this._renderer(chunk, index)),
139
137
  ""
140
138
  ]);
141
139
  }
142
- get blocks() {
143
- return this._blocks;
140
+ get chunks() {
141
+ return this._chunks;
144
142
  }
145
143
  /**
146
144
  * Get the block ID at the given line number.
147
145
  */
148
- getBlockAtLine(line) {
149
- return this._lineToBlock.get(line);
146
+ getChunkAtLine(line) {
147
+ return this._lineToChunk.get(line);
150
148
  }
151
149
  reset() {
152
- this._blocks.length = 0;
153
- this._blockLineCounts.clear();
154
- this._lineToBlock.clear();
150
+ this._chunks.length = 0;
151
+ this._chunkLineCounts.clear();
152
+ this._lineToChunk.clear();
155
153
  this.update.emit();
156
154
  return this;
157
155
  }
158
- appendBlock(block) {
159
- const index = this._blocks.length;
160
- this._blocks.push(block);
156
+ appendChunk(chunk) {
157
+ const index = this._chunks.length;
158
+ this._chunks.push(chunk);
161
159
  this._changes.push({
162
160
  type: "append",
163
161
  index,
164
- block
162
+ chunk
165
163
  });
166
164
  this.update.emit();
167
165
  return this;
168
166
  }
169
- updateBlock(block) {
170
- const index = this._blocks.findIndex((b) => b.id === block.id);
167
+ updateChunk(chunk) {
168
+ const index = this._chunks.findIndex((c) => c.id === chunk.id);
171
169
  (0, import_invariant.invariant)(index !== -1, void 0, {
172
170
  F: __dxlog_file,
173
171
  L: 147,
@@ -177,17 +175,17 @@ var BlockModel = class {
177
175
  ""
178
176
  ]
179
177
  });
180
- this._blocks[index] = block;
178
+ this._chunks[index] = chunk;
181
179
  this._changes.push({
182
180
  type: "update",
183
181
  index,
184
- block
182
+ chunk
185
183
  });
186
184
  this.update.emit();
187
185
  return this;
188
186
  }
189
187
  deleteBlock(id) {
190
- const index = this._blocks.findIndex((b) => b.id === id);
188
+ const index = this._chunks.findIndex((c) => c.id === id);
191
189
  (0, import_invariant.invariant)(index !== -1, void 0, {
192
190
  F: __dxlog_file,
193
191
  L: 156,
@@ -197,7 +195,7 @@ var BlockModel = class {
197
195
  ""
198
196
  ]
199
197
  });
200
- this._blocks.splice(index, 1);
198
+ this._chunks.splice(index, 1);
201
199
  this._changes.push({
202
200
  type: "delete",
203
201
  index,
@@ -207,10 +205,10 @@ var BlockModel = class {
207
205
  return this;
208
206
  }
209
207
  /**
210
- * Syncs the tracked changes with the BlockDocument.
208
+ * Syncs the tracked changes with the ChunkDocument.
211
209
  */
212
210
  sync(document2) {
213
- (0, import_log2.log)("sync", {
211
+ (0, import_log.log)("sync", {
214
212
  changes: this._changes
215
213
  }, {
216
214
  F: __dxlog_file,
@@ -221,7 +219,7 @@ var BlockModel = class {
221
219
  for (const change of this._changes) {
222
220
  switch (change.type) {
223
221
  case "append": {
224
- const lines = this._renderer(change.block);
222
+ const lines = this._renderer(change.chunk, change.index);
225
223
  const lastLine = document2.lineCount();
226
224
  document2.replaceLines(lastLine + 1, 0, lines);
227
225
  break;
@@ -229,36 +227,36 @@ var BlockModel = class {
229
227
  case "update": {
230
228
  let lineStart = 1;
231
229
  for (let i = 0; i < change.index; i++) {
232
- lineStart += this._blockLineCounts.get(this._blocks[i].id);
230
+ lineStart += this._chunkLineCounts.get(this._chunks[i].id);
233
231
  }
234
- const previousLineCount = this._blockLineCounts.get(change.block.id);
235
- const newLines = this._renderer(change.block);
232
+ const previousLineCount = this._chunkLineCounts.get(change.chunk.id);
233
+ const newLines = this._renderer(change.chunk, change.index);
236
234
  document2.replaceLines(lineStart, previousLineCount, newLines);
237
235
  break;
238
236
  }
239
237
  case "delete": {
240
238
  let lineStart = 1;
241
239
  for (let i = 0; i < change.index; i++) {
242
- lineStart += this._blockLineCounts.get(this._blocks[i].id);
240
+ lineStart += this._chunkLineCounts.get(this._chunks[i].id);
243
241
  }
244
- const previousLineCount = this._blockLineCounts.get(change.id);
242
+ const previousLineCount = this._chunkLineCounts.get(change.id);
245
243
  document2.replaceLines(lineStart, previousLineCount, []);
246
244
  break;
247
245
  }
248
246
  }
249
247
  }
250
- this._lineToBlock.clear();
248
+ this._lineToChunk.clear();
251
249
  let currentLine = 1;
252
- for (const block of this._blocks) {
253
- const lineCount = this._renderer(block).length;
254
- this._blockLineCounts.set(block.id, lineCount);
255
- this._lineToBlock.set(currentLine, block);
250
+ for (const [index, chunk] of this._chunks.entries()) {
251
+ const lineCount = this._renderer(chunk, index).length;
252
+ this._chunkLineCounts.set(chunk.id, lineCount);
253
+ this._lineToChunk.set(currentLine, chunk);
256
254
  currentLine += lineCount;
257
255
  }
258
- const blockIds = new Set(this._blocks.map((block) => block.id));
259
- for (const id of this._blockLineCounts.keys()) {
260
- if (!blockIds.has(id)) {
261
- this._blockLineCounts.delete(id);
256
+ const chunkIds = new Set(this._chunks.map((chunk) => chunk.id));
257
+ for (const id of this._chunkLineCounts.keys()) {
258
+ if (!chunkIds.has(id)) {
259
+ this._chunkLineCounts.delete(id);
262
260
  }
263
261
  }
264
262
  this._changes.length = 0;
@@ -272,12 +270,13 @@ var transcript = ({ model, started, renderButton }) => {
272
270
  class: "cm-timestamp-gutter",
273
271
  lineMarkerChange: (update) => update.docChanged || update.viewportChanged,
274
272
  markers: (view) => {
275
- const start = getStartTime(started, model.blocks[0]);
273
+ const start = getStartTime(started, model.chunks[0]);
276
274
  const builder = new import_state.RangeSetBuilder();
277
275
  for (const { from, to } of view.visibleRanges) {
278
276
  let line = view.state.doc.lineAt(from);
279
277
  while (line.from <= to) {
280
- const timestamp = model.getBlockAtLine(line.number)?.segments[0]?.started;
278
+ const block = model.getChunkAtLine(line.number)?.blocks[0];
279
+ const timestamp = block?.type === "transcription" && block.started;
281
280
  if (timestamp) {
282
281
  builder.add(line.from, line.from, new TimestampMarker(line.number, new Date(timestamp), start));
283
282
  }
@@ -298,11 +297,13 @@ var transcript = ({ model, started, renderButton }) => {
298
297
  const scroller = view.scrollDOM;
299
298
  let isAutoScrolling = false;
300
299
  let hasScrolled = false;
301
- const scrollToBottom = () => {
302
- scroller.style.scrollBehavior = "smooth";
300
+ let timeout;
301
+ const scrollToBottom = (smooth = false) => {
302
+ scroller.style.scrollBehavior = smooth ? "smooth" : "";
303
303
  scroller.classList.add("cm-hide-scrollbar");
304
304
  isAutoScrolling = true;
305
- setTimeout(() => {
305
+ clearTimeout(timeout);
306
+ timeout = setTimeout(() => {
306
307
  this._controls?.classList.add("opacity-0");
307
308
  scroller.classList.remove("cm-hide-scrollbar");
308
309
  isAutoScrolling = false;
@@ -319,7 +320,7 @@ var transcript = ({ model, started, renderButton }) => {
319
320
  view.dom.appendChild(this._controls);
320
321
  renderButton(this._controls, {
321
322
  onClick: () => {
322
- scrollToBottom();
323
+ scrollToBottom(false);
323
324
  }
324
325
  }, view);
325
326
  }
@@ -332,7 +333,7 @@ var transcript = ({ model, started, renderButton }) => {
332
333
  const autoScroll = scroller.scrollHeight - scroller.scrollTop - scroller.clientHeight === 0 || !hasScrolled;
333
334
  model.sync(this._adapter);
334
335
  if (autoScroll) {
335
- scrollToBottom();
336
+ scrollToBottom(true);
336
337
  }
337
338
  }));
338
339
  }
@@ -406,37 +407,44 @@ var TimestampMarker = class extends import_view.GutterMarker {
406
407
  return el;
407
408
  }
408
409
  };
409
- var getStartTime = (started, block) => {
410
+ var getStartTime = (started, message) => {
410
411
  if (started) {
411
412
  return started;
412
413
  }
413
- if (block?.segments[0]?.started) {
414
- return new Date(block.segments[0].started);
414
+ if (message?.blocks[0]?.type === "transcription" && message.blocks[0].started) {
415
+ return new Date(message.blocks[0].started);
415
416
  }
416
417
  return void 0;
417
418
  };
418
419
  var formatTimestamp = (timestamp, relative) => {
419
- if (!relative) {
420
- return (0, import_format.format)(timestamp, "HH:mm:ss");
421
- } else {
420
+ if (relative) {
422
421
  const pad = (n = 0) => String(n).padStart(2, "0");
423
422
  const { hours, minutes, seconds } = (0, import_intervalToDuration.intervalToDuration)({
424
423
  start: relative,
425
424
  end: timestamp
426
425
  });
427
426
  return `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;
427
+ } else {
428
+ return (0, import_format.format)(timestamp, "HH:mm:ss");
428
429
  }
429
430
  };
430
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/components/Transcript/Transcript.tsx";
431
- var renderMarkdown = (block, debug = false) => {
431
+ var renderMarkdown = (identities) => (message, index, debug = false) => {
432
+ if (message.sender.role === "assistant") {
433
+ return [
434
+ message.blocks.find((block) => block.type === "transcription")?.text ?? "",
435
+ ""
436
+ ];
437
+ }
438
+ const identity = identities.find((identity2) => identity2.did === message.sender.identityDid);
439
+ const name = identity?.profile?.displayName ?? message.sender.contact?.target?.fullName ?? message.sender.name ?? message.sender.email ?? message.sender.identityDid;
440
+ const blocks = message.blocks.filter((block) => block.type === "transcription");
432
441
  return [
433
- `###### ${block.authorName}` + (debug ? ` (${block.id})` : ""),
434
- block.segments.map((segment) => segment.text.trim()).join(" "),
442
+ `###### ${name}` + (debug ? ` [${index}]:${message.id}` : ""),
443
+ blocks.map((block) => block.text.trim()).join(" "),
435
444
  ""
436
445
  ];
437
446
  };
438
447
  var Transcript = ({ classNames, transcript: object, space, model, attendableId, ignoreAttention }) => {
439
- const client = (0, import_react_client.useClient)();
440
448
  const { themeMode } = (0, import_react_ui.useThemeContext)();
441
449
  const { parentRef } = (0, import_react_ui_editor.useTextEditor)(() => {
442
450
  return {
@@ -452,28 +460,7 @@ var Transcript = ({ classNames, transcript: object, space, model, attendableId,
452
460
  themeMode
453
461
  }),
454
462
  (0, import_react_ui_editor.decorateMarkdown)(),
455
- space && (0, import_react_ui_editor.preview)({
456
- onLookup: async ({ label, ref }) => {
457
- import_log.log.info("onLookup", {
458
- label,
459
- ref
460
- }, {
461
- F: __dxlog_file2,
462
- L: 71,
463
- S: void 0,
464
- C: (f, a) => f(...a)
465
- });
466
- const dxn = import_keys.DXN.parse(ref);
467
- if (!dxn) {
468
- return null;
469
- }
470
- const object2 = await (0, import_react_client.resolveRef)(client, dxn, space);
471
- return {
472
- label,
473
- object: object2
474
- };
475
- }
476
- }),
463
+ space && (0, import_react_ui_editor.preview)(),
477
464
  transcript({
478
465
  model,
479
466
  started: object?.started ? new Date(object.started) : void 0,
@@ -492,10 +479,11 @@ var Transcript = ({ classNames, transcript: object, space, model, attendableId,
492
479
  ]);
493
480
  return /* @__PURE__ */ import_react2.default.createElement("div", {
494
481
  ref: parentRef,
495
- className: (0, import_react_ui_theme.mx)("flex grow overflow-hidden", import_react_ui_editor.editorWidth, classNames)
482
+ className: (0, import_react_ui_theme.mx)("flex grow overflow-hidden", import_react_ui_editor.editorWidth, classNames),
483
+ "data-popover-collision-boundary": true
496
484
  });
497
485
  };
498
- var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts";
486
+ var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/hooks/useAudioFile.ts";
499
487
  var useAudioFile = (audioUrl) => {
500
488
  const [{ audio, stream, track }, setStream] = (0, import_react3.useState)({});
501
489
  (0, import_react3.useEffect)(() => {
@@ -506,10 +494,10 @@ var useAudioFile = (audioUrl) => {
506
494
  audio2.src = URL.createObjectURL(blob);
507
495
  await new Promise((resolve, reject) => {
508
496
  audio2.addEventListener("error", (err) => {
509
- import_log3.log.error("error", {
497
+ import_log2.log.error("error", {
510
498
  err
511
499
  }, {
512
- F: __dxlog_file3,
500
+ F: __dxlog_file2,
513
501
  L: 27,
514
502
  S: void 0,
515
503
  C: (f, a) => f(...a)
@@ -519,8 +507,8 @@ var useAudioFile = (audioUrl) => {
519
507
  once: true
520
508
  });
521
509
  audio2.addEventListener("canplay", () => {
522
- import_log3.log.info("starting...", void 0, {
523
- F: __dxlog_file3,
510
+ import_log2.log.info("starting...", void 0, {
511
+ F: __dxlog_file2,
524
512
  L: 35,
525
513
  S: void 0,
526
514
  C: (f, a) => f(...a)
@@ -578,29 +566,58 @@ var useAudioTrack = (active) => {
578
566
  ]);
579
567
  return track;
580
568
  };
581
- var useQueueModelAdapter = (renderer, queue, initialBlocks = []) => {
582
- const model = (0, import_react5.useMemo)(() => new BlockModel(renderer, initialBlocks), [
569
+ var useQueueModelAdapter = (renderer, queue, initialChunks = []) => {
570
+ const model = (0, import_react5.useMemo)(() => new SerializationModel(renderer, initialChunks), [
571
+ queue
572
+ ]);
573
+ const [loaded, setLoaded] = (0, import_react5.useState)(false);
574
+ (0, import_react5.useEffect)(() => {
575
+ if (!queue) {
576
+ return;
577
+ }
578
+ const update = () => {
579
+ for (const block of queue?.items ?? []) {
580
+ model.appendChunk(block);
581
+ }
582
+ setLoaded(true);
583
+ };
584
+ let i;
585
+ if (queue.isLoading) {
586
+ i = setInterval(() => {
587
+ if (!queue?.isLoading) {
588
+ clearInterval(i);
589
+ update();
590
+ }
591
+ }, 1e3);
592
+ } else {
593
+ update();
594
+ }
595
+ return () => clearTimeout(i);
596
+ }, [
597
+ model,
583
598
  queue
584
599
  ]);
585
600
  (0, import_react5.useEffect)(() => {
586
- if (!queue?.items.length) {
601
+ if (!loaded || !queue || model.chunks.length === queue.items.length) {
587
602
  return;
588
603
  }
589
- const block = queue.items[queue.items.length - 1];
590
- model.appendBlock(block);
604
+ const chunk = queue.items[queue.items.length - 1];
605
+ model.appendChunk(chunk);
591
606
  }, [
592
607
  model,
608
+ loaded,
593
609
  queue?.items.length
594
610
  ]);
595
611
  return model;
596
612
  };
597
- var AppGraphBuilder = (0, import_app_framework2.lazy)(() => import("./app-graph-builder-WWC4WNTG.cjs"));
598
- var IntentResolver = (0, import_app_framework2.lazy)(() => import("./intent-resolver-VY3XWYAA.cjs"));
599
- var MeetingTranscriptionState = (0, import_app_framework2.lazy)(() => import("./meeting-transcription-state-OYWCY5XE.cjs"));
600
- var ReactSurface = (0, import_app_framework2.lazy)(() => import("./react-surface-M2JQIIDY.cjs"));
601
- var Transcriber = (0, import_app_framework2.lazy)(() => import("./transcriber-E6AAB4SU.cjs"));
613
+ var AppGraphBuilder = (0, import_app_framework2.lazy)(() => import("./app-graph-builder-OAPU4GDH.cjs"));
614
+ var IntentResolver = (0, import_app_framework2.lazy)(() => import("./intent-resolver-TRBKI24D.cjs"));
615
+ var MeetingTranscriptionState = (0, import_app_framework2.lazy)(() => import("./meeting-transcription-state-5XLTMWPA.cjs"));
616
+ var ReactSurface = (0, import_app_framework2.lazy)(() => import("./react-surface-SZAMHCX7.cjs"));
617
+ var Transcriber = (0, import_app_framework2.lazy)(() => import("./transcriber-AFUXFHCR.cjs"));
618
+ var Settings = (0, import_app_framework2.lazy)(() => import("./settings-AWWMOSCV.cjs"));
602
619
  var useTranscriber = ({ audioStreamTrack, onSegments, config }) => {
603
- const [getTranscriber] = (0, import_app_framework.useCapabilities)(import_chunk_HYGDHS6X.TranscriptionCapabilities.Transcriber);
620
+ const [getTranscriber] = (0, import_app_framework.useCapabilities)(import_chunk_JUGOXWES.TranscriptionCapabilities.Transcriber);
604
621
  const transcriber = (0, import_react6.useMemo)(() => {
605
622
  if (!onSegments || !audioStreamTrack || !getTranscriber) {
606
623
  return void 0;
@@ -625,7 +642,7 @@ var useTranscriber = ({ audioStreamTrack, onSegments, config }) => {
625
642
  ]);
626
643
  return transcriber;
627
644
  };
628
- var __dxlog_file4 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts";
645
+ var __dxlog_file3 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-transcription/src/hooks/useVoiceInput.ts";
629
646
  var useVoiceInput = ({ active, onUpdate }) => {
630
647
  const soundStart = (0, import_react_ui_sfx.useSoundEffect)("StartRecording");
631
648
  const soundStop = (0, import_react_ui_sfx.useSoundEffect)("StopRecording");
@@ -641,14 +658,14 @@ var useVoiceInput = ({ active, onUpdate }) => {
641
658
  });
642
659
  (0, import_react7.useEffect)(() => {
643
660
  const ctx = new import_context.Context(void 0, {
644
- F: __dxlog_file4,
661
+ F: __dxlog_file3,
645
662
  L: 43
646
663
  });
647
664
  (0, import_async3.scheduleMicroTask)(ctx, async () => {
648
665
  if (active && transcriber) {
649
666
  await transcriber.open();
650
- import_log4.log.info("starting...", void 0, {
651
- F: __dxlog_file4,
667
+ import_log3.log.info("starting...", void 0, {
668
+ F: __dxlog_file3,
652
669
  L: 47,
653
670
  S: void 0,
654
671
  C: (f, a) => f(...a)
@@ -659,8 +676,8 @@ var useVoiceInput = ({ active, onUpdate }) => {
659
676
  } else if (!active && transcriber?.isOpen) {
660
677
  transcriber?.stopChunksRecording();
661
678
  await transcriber?.close();
662
- import_log4.log.info("stopped", void 0, {
663
- F: __dxlog_file4,
679
+ import_log3.log.info("stopped", void 0, {
680
+ F: __dxlog_file3,
664
681
  L: 54,
665
682
  S: void 0,
666
683
  C: (f, a) => f(...a)
@@ -683,10 +700,11 @@ var useVoiceInput = ({ active, onUpdate }) => {
683
700
  var TranscriptionContainer = ({ role, transcript: transcript2 }) => {
684
701
  const attendableId = (0, import_echo.fullyQualifiedId)(transcript2);
685
702
  const space = (0, import_echo.getSpace)(transcript2);
703
+ const members = (0, import_echo2.useMembers)(space?.key).map((member) => member.identity);
686
704
  const queue = (0, import_echo2.useQueue)(transcript2.queue.dxn, {
687
705
  pollInterval: 1e3
688
706
  });
689
- const model = useQueueModelAdapter(renderMarkdown, queue);
707
+ const model = useQueueModelAdapter(renderMarkdown(members), queue);
690
708
  return /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
691
709
  role,
692
710
  classNames: "container-max-width pli-2"
@@ -704,6 +722,7 @@ var TranscriptContainer_default = TranscriptionContainer;
704
722
  IntentResolver,
705
723
  MeetingTranscriptionState,
706
724
  ReactSurface,
725
+ Settings,
707
726
  Transcriber,
708
727
  Transcript,
709
728
  TranscriptContainer_default,
@@ -715,4 +734,4 @@ var TranscriptContainer_default = TranscriptionContainer;
715
734
  useTranscriber,
716
735
  useVoiceInput
717
736
  });
718
- //# sourceMappingURL=chunk-KO6MKCED.cjs.map
737
+ //# sourceMappingURL=chunk-EVE3H46F.cjs.map