@signalcore/ui 0.1.0 → 1.0.0-beta.1

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 (611) hide show
  1. package/README.md +896 -513
  2. package/dist/AgentAbout.d.ts +186 -0
  3. package/dist/AgentAbout.js +1020 -0
  4. package/dist/AgentAbout.js.map +1 -0
  5. package/dist/AgentCard.d.ts +49 -0
  6. package/dist/AgentCard.js +77 -0
  7. package/dist/AgentCard.js.map +1 -0
  8. package/dist/AgentChat.d.ts +233 -0
  9. package/dist/AgentChat.js +1127 -0
  10. package/dist/AgentChat.js.map +1 -0
  11. package/dist/AgentSpace.d.ts +112 -0
  12. package/dist/AgentSpace.js +339 -0
  13. package/dist/AgentSpace.js.map +1 -0
  14. package/dist/AgentTasks.d.ts +48 -0
  15. package/dist/AgentTasks.js +120 -0
  16. package/dist/AgentTasks.js.map +1 -0
  17. package/dist/BrowserView.d.ts +52 -0
  18. package/dist/BrowserView.js +328 -0
  19. package/dist/BrowserView.js.map +1 -0
  20. package/dist/FileView.d.ts +63 -0
  21. package/dist/FileView.js +449 -0
  22. package/dist/FileView.js.map +1 -0
  23. package/dist/Modes.d.ts +13 -0
  24. package/dist/Modes.js +75 -0
  25. package/dist/Modes.js.map +1 -0
  26. package/dist/VoiceCall.d.ts +91 -0
  27. package/dist/VoiceCall.js +302 -0
  28. package/dist/VoiceCall.js.map +1 -0
  29. package/dist/about.d.ts +212 -0
  30. package/dist/about.js +136 -0
  31. package/dist/about.js.map +1 -0
  32. package/dist/agentIcons.d.ts +33 -0
  33. package/dist/agentIcons.js +36 -0
  34. package/dist/agentIcons.js.map +1 -0
  35. package/dist/automation/Automation.d.ts +35 -0
  36. package/dist/automation/Automation.js +268 -0
  37. package/dist/automation/Automation.js.map +1 -0
  38. package/dist/automation/RunView.d.ts +25 -0
  39. package/dist/automation/RunView.js +187 -0
  40. package/dist/automation/RunView.js.map +1 -0
  41. package/dist/automation/cron.d.ts +41 -0
  42. package/dist/automation/cron.js +169 -0
  43. package/dist/automation/cron.js.map +1 -0
  44. package/dist/automation/marks.js +121 -0
  45. package/dist/automation/marks.js.map +1 -0
  46. package/dist/automation/messages.d.ts +113 -0
  47. package/dist/automation/messages.js +113 -0
  48. package/dist/automation/messages.js.map +1 -0
  49. package/dist/automation/record.d.ts +47 -0
  50. package/dist/automation/record.js +177 -0
  51. package/dist/automation/record.js.map +1 -0
  52. package/dist/automation/types.d.ts +143 -0
  53. package/dist/automation/when.d.ts +36 -0
  54. package/dist/automation/when.js +168 -0
  55. package/dist/automation/when.js.map +1 -0
  56. package/dist/blocks.d.ts +185 -0
  57. package/dist/browser.js +292 -0
  58. package/dist/browser.js.map +1 -0
  59. package/dist/call.d.ts +89 -0
  60. package/dist/call.js +218 -0
  61. package/dist/call.js.map +1 -0
  62. package/dist/channelParts.js +26 -0
  63. package/dist/channelParts.js.map +1 -0
  64. package/dist/classes.js +8 -3
  65. package/dist/classes.js.map +1 -0
  66. package/dist/client.d.ts +146 -54
  67. package/dist/client.js +204 -1
  68. package/dist/client.js.map +1 -0
  69. package/dist/conversationFiles.js +46 -0
  70. package/dist/conversationFiles.js.map +1 -0
  71. package/dist/credentials.d.ts +45 -0
  72. package/dist/credentials.js +98 -0
  73. package/dist/credentials.js.map +1 -0
  74. package/dist/dev.js +17 -0
  75. package/dist/dev.js.map +1 -0
  76. package/dist/es.d.ts +17 -0
  77. package/dist/es.js +382 -0
  78. package/dist/es.js.map +1 -0
  79. package/dist/files.d.ts +21 -0
  80. package/dist/files.js +214 -0
  81. package/dist/files.js.map +1 -0
  82. package/dist/frames.d.ts +115 -0
  83. package/dist/frames.js +219 -0
  84. package/dist/frames.js.map +1 -0
  85. package/dist/icons.js +29 -0
  86. package/dist/icons.js.map +1 -0
  87. package/dist/index.d.ts +63 -60
  88. package/dist/index.js +59 -45
  89. package/dist/kit/AudioPlayer.d.ts +20 -0
  90. package/dist/kit/AudioPlayer.js +116 -0
  91. package/dist/kit/AudioPlayer.js.map +1 -0
  92. package/dist/kit/Button.d.ts +29 -0
  93. package/dist/kit/Button.js +59 -0
  94. package/dist/kit/Button.js.map +1 -0
  95. package/dist/kit/Card.d.ts +16 -0
  96. package/dist/kit/Card.js +36 -0
  97. package/dist/kit/Card.js.map +1 -0
  98. package/dist/kit/Chart.js +152 -0
  99. package/dist/kit/Chart.js.map +1 -0
  100. package/dist/kit/Choices.d.ts +21 -0
  101. package/dist/kit/Choices.js +99 -0
  102. package/dist/kit/Choices.js.map +1 -0
  103. package/dist/kit/Combobox.d.ts +26 -0
  104. package/dist/kit/Combobox.js +190 -0
  105. package/dist/kit/Combobox.js.map +1 -0
  106. package/dist/kit/DateField.d.ts +17 -0
  107. package/dist/kit/DateField.js +133 -0
  108. package/dist/kit/DateField.js.map +1 -0
  109. package/dist/kit/Field.d.ts +40 -0
  110. package/dist/kit/Field.js +98 -0
  111. package/dist/kit/Field.js.map +1 -0
  112. package/dist/kit/FileField.d.ts +113 -0
  113. package/dist/kit/FileField.js +341 -0
  114. package/dist/kit/FileField.js.map +1 -0
  115. package/dist/kit/FileMark.d.ts +15 -0
  116. package/dist/kit/FileMark.js +39 -0
  117. package/dist/kit/FileMark.js.map +1 -0
  118. package/dist/kit/Inputs.d.ts +59 -0
  119. package/dist/kit/Inputs.js +205 -0
  120. package/dist/kit/Inputs.js.map +1 -0
  121. package/dist/kit/List.d.ts +47 -0
  122. package/dist/kit/List.js +85 -0
  123. package/dist/kit/List.js.map +1 -0
  124. package/dist/kit/Mark.d.ts +30 -0
  125. package/dist/kit/Mark.js +27 -0
  126. package/dist/kit/Mark.js.map +1 -0
  127. package/dist/kit/MarkStack.d.ts +15 -0
  128. package/dist/kit/MarkStack.js +26 -0
  129. package/dist/kit/MarkStack.js.map +1 -0
  130. package/dist/kit/Note.d.ts +11 -0
  131. package/dist/kit/Note.js +31 -0
  132. package/dist/kit/Note.js.map +1 -0
  133. package/dist/kit/Popover.js +90 -0
  134. package/dist/kit/Popover.js.map +1 -0
  135. package/dist/kit/RangeField.d.ts +14 -0
  136. package/dist/kit/RangeField.js +47 -0
  137. package/dist/kit/RangeField.js.map +1 -0
  138. package/dist/kit/RatingField.d.ts +14 -0
  139. package/dist/kit/RatingField.js +50 -0
  140. package/dist/kit/RatingField.js.map +1 -0
  141. package/dist/kit/Stat.d.ts +26 -0
  142. package/dist/kit/Stat.js +46 -0
  143. package/dist/kit/Stat.js.map +1 -0
  144. package/dist/kit/Switch.d.ts +14 -0
  145. package/dist/kit/Switch.js +21 -0
  146. package/dist/kit/Switch.js.map +1 -0
  147. package/dist/kit/Tag.d.ts +16 -0
  148. package/dist/kit/Tag.js +20 -0
  149. package/dist/kit/Tag.js.map +1 -0
  150. package/dist/kit/Tile.d.ts +34 -0
  151. package/dist/kit/Tile.js +52 -0
  152. package/dist/kit/Tile.js.map +1 -0
  153. package/dist/kit/TimeField.d.ts +31 -0
  154. package/dist/kit/TimeField.js +109 -0
  155. package/dist/kit/TimeField.js.map +1 -0
  156. package/dist/kit/context.d.ts +22 -0
  157. package/dist/kit/context.js +46 -0
  158. package/dist/kit/context.js.map +1 -0
  159. package/dist/kit/dates.d.ts +14 -0
  160. package/dist/kit/dates.js +129 -0
  161. package/dist/kit/dates.js.map +1 -0
  162. package/dist/kit/messages.d.ts +99 -0
  163. package/dist/kit/messages.js +66 -0
  164. package/dist/kit/messages.js.map +1 -0
  165. package/dist/kit/numbers.d.ts +12 -0
  166. package/dist/kit/numbers.js +40 -0
  167. package/dist/kit/numbers.js.map +1 -0
  168. package/dist/kit/options.d.ts +10 -0
  169. package/dist/kit/options.js +23 -0
  170. package/dist/kit/options.js.map +1 -0
  171. package/dist/kit/uploads.d.ts +42 -0
  172. package/dist/kit/uploads.js +165 -0
  173. package/dist/kit/uploads.js.map +1 -0
  174. package/dist/kit/waveform.js +76 -0
  175. package/dist/kit/waveform.js.map +1 -0
  176. package/dist/locale.d.ts +1 -0
  177. package/dist/locale.js +1 -0
  178. package/dist/markdown.js +84 -0
  179. package/dist/markdown.js.map +1 -0
  180. package/dist/marks.js +217 -0
  181. package/dist/marks.js.map +1 -0
  182. package/dist/reveal.js +48 -0
  183. package/dist/reveal.js.map +1 -0
  184. package/dist/stepGlyphs.js +62 -0
  185. package/dist/stepGlyphs.js.map +1 -0
  186. package/dist/surface/Form.js +264 -0
  187. package/dist/surface/Form.js.map +1 -0
  188. package/dist/surface/Markdown.js +42 -0
  189. package/dist/surface/Markdown.js.map +1 -0
  190. package/dist/surface/Surface.d.ts +31 -17
  191. package/dist/surface/Surface.js +480 -57
  192. package/dist/surface/Surface.js.map +1 -0
  193. package/dist/surface/scope.d.ts +32 -0
  194. package/dist/surface/scope.js +23 -0
  195. package/dist/surface/scope.js.map +1 -0
  196. package/dist/surface/values.d.ts +44 -0
  197. package/dist/surface/values.js +237 -0
  198. package/dist/surface/values.js.map +1 -0
  199. package/dist/tint.d.ts +10 -0
  200. package/dist/tint.js +19 -0
  201. package/dist/tint.js.map +1 -0
  202. package/dist/types.d.ts +541 -0
  203. package/dist/types.js +16 -0
  204. package/dist/types.js.map +1 -0
  205. package/dist/useAgentFace.d.ts +18 -0
  206. package/dist/useAgentFace.js +45 -0
  207. package/dist/useAgentFace.js.map +1 -0
  208. package/dist/useCall.d.ts +39 -0
  209. package/dist/useCall.js +273 -0
  210. package/dist/useCall.js.map +1 -0
  211. package/dist/useConversation.d.ts +77 -0
  212. package/dist/useConversation.js +523 -0
  213. package/dist/useConversation.js.map +1 -0
  214. package/dist/useDictation.d.ts +17 -0
  215. package/dist/useDictation.js +68 -0
  216. package/dist/useDictation.js.map +1 -0
  217. package/dist/useLive.d.ts +26 -0
  218. package/dist/useLive.js +88 -0
  219. package/dist/useLive.js.map +1 -0
  220. package/dist/usePolled.js +68 -0
  221. package/dist/usePolled.js.map +1 -0
  222. package/dist/voice/Orb.d.ts +10 -9
  223. package/dist/voice/Orb.js +43 -39
  224. package/dist/voice/Orb.js.map +1 -0
  225. package/dist/voice/StillOrb.js +33 -0
  226. package/dist/voice/StillOrb.js.map +1 -0
  227. package/dist/voice/WebGLOrb.js +98 -0
  228. package/dist/voice/WebGLOrb.js.map +1 -0
  229. package/dist/voice/fluidDots.js +161 -0
  230. package/dist/voice/fluidDots.js.map +1 -0
  231. package/dist/voice/motion.js +84 -0
  232. package/dist/voice/motion.js.map +1 -0
  233. package/dist/voice/orbs.d.ts +32 -0
  234. package/dist/voice/orbs.js +16 -0
  235. package/dist/voice/orbs.js.map +1 -0
  236. package/dist/voice/useReducedMotion.js +16 -16
  237. package/dist/voice/useReducedMotion.js.map +1 -0
  238. package/dist/voice/wave.js +116 -0
  239. package/dist/voice/wave.js.map +1 -0
  240. package/dist/voice/webgl.js +177 -0
  241. package/dist/voice/webgl.js.map +1 -0
  242. package/dist/widget.js +284 -8
  243. package/package.json +49 -39
  244. package/src/AgentAbout.tsx +1621 -0
  245. package/src/AgentCard.tsx +123 -0
  246. package/src/AgentChat.tsx +1812 -0
  247. package/src/AgentSpace.tsx +540 -0
  248. package/src/AgentTasks.tsx +163 -0
  249. package/src/BrowserView.tsx +442 -0
  250. package/src/FileView.tsx +620 -0
  251. package/src/Modes.tsx +112 -0
  252. package/src/VoiceCall.tsx +411 -0
  253. package/src/about.ts +355 -0
  254. package/src/agentIcons.ts +56 -0
  255. package/src/automation/Automation.tsx +308 -0
  256. package/src/automation/RunView.tsx +213 -0
  257. package/src/automation/cron.ts +196 -0
  258. package/src/automation/marks.tsx +144 -0
  259. package/src/automation/messages.ts +231 -0
  260. package/src/automation/record.ts +206 -0
  261. package/src/automation/types.ts +146 -0
  262. package/src/automation/when.ts +195 -0
  263. package/src/blocks.ts +249 -0
  264. package/src/browser.ts +334 -0
  265. package/src/call.ts +300 -0
  266. package/src/channelParts.ts +17 -0
  267. package/src/classes.ts +10 -0
  268. package/src/client.ts +397 -0
  269. package/src/conversationFiles.ts +54 -0
  270. package/src/credentials.ts +158 -0
  271. package/src/dev.ts +20 -0
  272. package/src/es.ts +423 -0
  273. package/src/files.ts +238 -0
  274. package/src/frames.ts +291 -0
  275. package/src/icons.tsx +49 -0
  276. package/src/index.ts +271 -0
  277. package/src/kit/AudioPlayer.tsx +129 -0
  278. package/src/kit/Button.tsx +97 -0
  279. package/src/kit/Card.tsx +47 -0
  280. package/src/kit/Chart.tsx +129 -0
  281. package/src/kit/Choices.tsx +131 -0
  282. package/src/kit/Combobox.tsx +247 -0
  283. package/src/kit/DateField.tsx +156 -0
  284. package/src/kit/Field.tsx +137 -0
  285. package/src/kit/FileField.tsx +492 -0
  286. package/src/kit/FileMark.tsx +56 -0
  287. package/src/kit/Inputs.tsx +250 -0
  288. package/src/kit/List.tsx +135 -0
  289. package/src/kit/Mark.tsx +64 -0
  290. package/src/kit/MarkStack.tsx +29 -0
  291. package/src/kit/Note.tsx +42 -0
  292. package/src/kit/Popover.tsx +121 -0
  293. package/src/kit/RangeField.tsx +53 -0
  294. package/src/kit/RatingField.tsx +62 -0
  295. package/src/kit/Stat.tsx +60 -0
  296. package/src/kit/Switch.tsx +28 -0
  297. package/src/kit/Tag.tsx +32 -0
  298. package/src/kit/Tile.tsx +74 -0
  299. package/src/kit/TimeField.tsx +157 -0
  300. package/src/kit/context.tsx +246 -0
  301. package/src/kit/dates.ts +150 -0
  302. package/src/kit/messages.ts +160 -0
  303. package/src/kit/numbers.ts +44 -0
  304. package/src/kit/options.ts +30 -0
  305. package/src/kit/uploads.ts +244 -0
  306. package/src/kit/waveform.ts +84 -0
  307. package/src/locale.ts +6 -0
  308. package/src/markdown.ts +69 -0
  309. package/src/marks.tsx +328 -0
  310. package/src/reveal.ts +52 -0
  311. package/src/stepGlyphs.ts +83 -0
  312. package/src/styles.css +6970 -0
  313. package/src/surface/Form.tsx +299 -0
  314. package/src/surface/Markdown.tsx +55 -0
  315. package/src/surface/Surface.tsx +605 -0
  316. package/src/surface/scope.ts +82 -0
  317. package/src/surface/values.ts +361 -0
  318. package/src/tint.ts +14 -0
  319. package/src/types.ts +604 -0
  320. package/src/useAgentFace.ts +47 -0
  321. package/src/useCall.ts +292 -0
  322. package/src/useConversation.ts +627 -0
  323. package/src/useDictation.ts +83 -0
  324. package/src/useLive.ts +115 -0
  325. package/src/usePolled.ts +60 -0
  326. package/src/voice/Orb.tsx +45 -0
  327. package/src/voice/StillOrb.tsx +29 -0
  328. package/src/voice/WebGLOrb.tsx +98 -0
  329. package/src/voice/fluidDots.tsx +171 -0
  330. package/src/voice/motion.ts +112 -0
  331. package/src/voice/orbs.ts +39 -0
  332. package/src/voice/useReducedMotion.ts +24 -0
  333. package/src/voice/wave.tsx +129 -0
  334. package/src/voice/webgl.ts +209 -0
  335. package/src/widget/css.d.ts +5 -0
  336. package/src/widget/element.tsx +535 -0
  337. package/src/widget/index.ts +10 -0
  338. package/src/widget/mount.ts +27 -0
  339. package/src/widget/widget.css +253 -0
  340. package/dist/SignalcoreProvider.d.ts +0 -113
  341. package/dist/SignalcoreProvider.js +0 -84
  342. package/dist/automations/AppMarks.d.ts +0 -11
  343. package/dist/automations/AppMarks.js +0 -18
  344. package/dist/automations/AutomationCard.d.ts +0 -27
  345. package/dist/automations/AutomationCard.js +0 -53
  346. package/dist/automations/AutomationsWindow.d.ts +0 -38
  347. package/dist/automations/AutomationsWindow.js +0 -57
  348. package/dist/automations/Card.d.ts +0 -46
  349. package/dist/automations/Card.js +0 -45
  350. package/dist/automations/ScheduleMarks.d.ts +0 -13
  351. package/dist/automations/ScheduleMarks.js +0 -24
  352. package/dist/automations/presentationIcons.d.ts +0 -7
  353. package/dist/automations/presentationIcons.js +0 -67
  354. package/dist/automations/schedule.d.ts +0 -25
  355. package/dist/automations/schedule.js +0 -59
  356. package/dist/automations/time.d.ts +0 -3
  357. package/dist/automations/time.js +0 -25
  358. package/dist/browser/BrowserView.d.ts +0 -43
  359. package/dist/browser/BrowserView.js +0 -94
  360. package/dist/browser/room.d.ts +0 -21
  361. package/dist/browser/room.js +0 -33
  362. package/dist/browser/useBrowserSession.d.ts +0 -17
  363. package/dist/browser/useBrowserSession.js +0 -67
  364. package/dist/builder/BuilderChat.d.ts +0 -32
  365. package/dist/builder/BuilderChat.js +0 -41
  366. package/dist/builder/BuilderTranscript.d.ts +0 -49
  367. package/dist/builder/BuilderTranscript.js +0 -62
  368. package/dist/builder/StatusLine.d.ts +0 -8
  369. package/dist/builder/StatusLine.js +0 -17
  370. package/dist/builder/answer.d.ts +0 -7
  371. package/dist/builder/answer.js +0 -8
  372. package/dist/builder/blocks.d.ts +0 -31
  373. package/dist/builder/blocks.js +0 -74
  374. package/dist/builder/items.d.ts +0 -15
  375. package/dist/builder/items.js +0 -21
  376. package/dist/builder/steps.d.ts +0 -20
  377. package/dist/builder/steps.js +0 -120
  378. package/dist/builder/time.d.ts +0 -4
  379. package/dist/builder/time.js +0 -24
  380. package/dist/builder/useBuildSession.d.ts +0 -36
  381. package/dist/builder/useBuildSession.js +0 -130
  382. package/dist/builder/workingOn.d.ts +0 -7
  383. package/dist/builder/workingOn.js +0 -15
  384. package/dist/chat/AgentChat.d.ts +0 -37
  385. package/dist/chat/AgentChat.js +0 -21
  386. package/dist/chat/ChatView.d.ts +0 -25
  387. package/dist/chat/ChatView.js +0 -34
  388. package/dist/chat/Composer.d.ts +0 -20
  389. package/dist/chat/Composer.js +0 -22
  390. package/dist/chat/MessageRow.d.ts +0 -22
  391. package/dist/chat/MessageRow.js +0 -32
  392. package/dist/chat/arrival.d.ts +0 -15
  393. package/dist/chat/arrival.js +0 -25
  394. package/dist/chat/history.d.ts +0 -24
  395. package/dist/chat/history.js +0 -45
  396. package/dist/chat/moments.d.ts +0 -25
  397. package/dist/chat/moments.js +0 -72
  398. package/dist/chat/types.d.ts +0 -12
  399. package/dist/chat/types.js +0 -1
  400. package/dist/chat/useComposer.d.ts +0 -46
  401. package/dist/chat/useComposer.js +0 -62
  402. package/dist/chat/useConversation.d.ts +0 -35
  403. package/dist/chat/useConversation.js +0 -71
  404. package/dist/chat/useStickToBottom.d.ts +0 -9
  405. package/dist/chat/useStickToBottom.js +0 -33
  406. package/dist/chat/useTurns.d.ts +0 -49
  407. package/dist/chat/useTurns.js +0 -111
  408. package/dist/classes.d.ts +0 -2
  409. package/dist/development.d.ts +0 -5
  410. package/dist/development.js +0 -8
  411. package/dist/flow/FlowWindow.d.ts +0 -42
  412. package/dist/flow/FlowWindow.js +0 -126
  413. package/dist/flow/index.d.ts +0 -16
  414. package/dist/flow/index.js +0 -16
  415. package/dist/flow/kinds.d.ts +0 -23
  416. package/dist/flow/kinds.js +0 -48
  417. package/dist/flow/map.d.ts +0 -44
  418. package/dist/flow/map.js +0 -225
  419. package/dist/flow/nodePaths.d.ts +0 -7
  420. package/dist/flow/nodePaths.js +0 -17
  421. package/dist/flow/relations.d.ts +0 -42
  422. package/dist/flow/relations.js +0 -174
  423. package/dist/host.d.ts +0 -124
  424. package/dist/host.js +0 -1
  425. package/dist/live/LiveView.d.ts +0 -28
  426. package/dist/live/LiveView.js +0 -55
  427. package/dist/live/capture.d.ts +0 -20
  428. package/dist/live/capture.js +0 -100
  429. package/dist/live/follow.d.ts +0 -26
  430. package/dist/live/follow.js +0 -72
  431. package/dist/live/paint.d.ts +0 -13
  432. package/dist/live/paint.js +0 -77
  433. package/dist/live/useLiveStream.d.ts +0 -16
  434. package/dist/live/useLiveStream.js +0 -57
  435. package/dist/look.d.ts +0 -33
  436. package/dist/look.js +0 -241
  437. package/dist/messages/en.d.ts +0 -3
  438. package/dist/messages/en.js +0 -251
  439. package/dist/messages/es.d.ts +0 -3
  440. package/dist/messages/es.js +0 -251
  441. package/dist/messages/index.d.ts +0 -16
  442. package/dist/messages/index.js +0 -33
  443. package/dist/messages/types.d.ts +0 -246
  444. package/dist/messages/types.js +0 -1
  445. package/dist/parts/Button.d.ts +0 -18
  446. package/dist/parts/Button.js +0 -17
  447. package/dist/parts/Icon.d.ts +0 -39
  448. package/dist/parts/Icon.js +0 -37
  449. package/dist/parts/Input.d.ts +0 -6
  450. package/dist/parts/Input.js +0 -11
  451. package/dist/parts/Spinner.d.ts +0 -2
  452. package/dist/parts/Spinner.js +0 -7
  453. package/dist/patterns.d.ts +0 -15
  454. package/dist/patterns.js +0 -5
  455. package/dist/presets.d.ts +0 -82
  456. package/dist/presets.js +0 -81
  457. package/dist/primitives.d.ts +0 -22
  458. package/dist/primitives.js +0 -58
  459. package/dist/request/RequestCard.d.ts +0 -34
  460. package/dist/request/RequestCard.js +0 -101
  461. package/dist/request/approval/ApprovalPreview.d.ts +0 -5
  462. package/dist/request/approval/ApprovalPreview.js +0 -27
  463. package/dist/request/approval/shapes.d.ts +0 -32
  464. package/dist/request/approval/shapes.js +0 -68
  465. package/dist/request/apps.d.ts +0 -11
  466. package/dist/request/apps.js +0 -27
  467. package/dist/request/cards.d.ts +0 -12
  468. package/dist/request/cards.js +0 -24
  469. package/dist/request/deliver.d.ts +0 -12
  470. package/dist/request/deliver.js +0 -21
  471. package/dist/request/handOver.d.ts +0 -18
  472. package/dist/request/handOver.js +0 -33
  473. package/dist/request/kinds/Approval.d.ts +0 -3
  474. package/dist/request/kinds/Approval.js +0 -9
  475. package/dist/request/kinds/Choice.d.ts +0 -3
  476. package/dist/request/kinds/Choice.js +0 -8
  477. package/dist/request/kinds/Connect.d.ts +0 -9
  478. package/dist/request/kinds/Connect.js +0 -119
  479. package/dist/request/kinds/FreeText.d.ts +0 -3
  480. package/dist/request/kinds/FreeText.js +0 -20
  481. package/dist/request/kinds/HandOver.d.ts +0 -13
  482. package/dist/request/kinds/HandOver.js +0 -20
  483. package/dist/request/kinds/Secret.d.ts +0 -7
  484. package/dist/request/kinds/Secret.js +0 -49
  485. package/dist/request/kinds/Upload.d.ts +0 -6
  486. package/dist/request/kinds/Upload.js +0 -47
  487. package/dist/request/types.d.ts +0 -83
  488. package/dist/request/types.js +0 -1
  489. package/dist/safeUrl.d.ts +0 -6
  490. package/dist/safeUrl.js +0 -8
  491. package/dist/stream/builder.d.ts +0 -176
  492. package/dist/stream/builder.js +0 -202
  493. package/dist/stream/reduce.d.ts +0 -51
  494. package/dist/stream/reduce.js +0 -58
  495. package/dist/stream/untilAborted.d.ts +0 -7
  496. package/dist/stream/untilAborted.js +0 -32
  497. package/dist/stream/useRunStream.d.ts +0 -26
  498. package/dist/stream/useRunStream.js +0 -137
  499. package/dist/styles.css +0 -2318
  500. package/dist/surface/HostNode.d.ts +0 -14
  501. package/dist/surface/HostNode.js +0 -30
  502. package/dist/surface/Node.d.ts +0 -7
  503. package/dist/surface/Node.js +0 -49
  504. package/dist/surface/SurfaceBoundary.d.ts +0 -26
  505. package/dist/surface/SurfaceBoundary.js +0 -20
  506. package/dist/surface/bindings.d.ts +0 -14
  507. package/dist/surface/bindings.js +0 -37
  508. package/dist/surface/check.d.ts +0 -27
  509. package/dist/surface/check.js +0 -102
  510. package/dist/surface/format.d.ts +0 -10
  511. package/dist/surface/format.js +0 -32
  512. package/dist/surface/hosts.d.ts +0 -6
  513. package/dist/surface/hosts.js +0 -11
  514. package/dist/surface/scene.d.ts +0 -21
  515. package/dist/surface/scene.js +0 -8
  516. package/dist/surface/templates/Browser.d.ts +0 -6
  517. package/dist/surface/templates/Browser.js +0 -11
  518. package/dist/surface/templates/Chart.d.ts +0 -6
  519. package/dist/surface/templates/Chart.js +0 -13
  520. package/dist/surface/templates/Choices.d.ts +0 -3
  521. package/dist/surface/templates/Choices.js +0 -12
  522. package/dist/surface/templates/Form.d.ts +0 -3
  523. package/dist/surface/templates/Form.js +0 -44
  524. package/dist/surface/templates/KeyValue.d.ts +0 -3
  525. package/dist/surface/templates/KeyValue.js +0 -7
  526. package/dist/surface/templates/Layout.d.ts +0 -5
  527. package/dist/surface/templates/Layout.js +0 -16
  528. package/dist/surface/templates/Live.d.ts +0 -6
  529. package/dist/surface/templates/Live.js +0 -9
  530. package/dist/surface/templates/Media.d.ts +0 -5
  531. package/dist/surface/templates/Media.js +0 -13
  532. package/dist/surface/templates/Slots.d.ts +0 -3
  533. package/dist/surface/templates/Slots.js +0 -19
  534. package/dist/surface/templates/Table.d.ts +0 -3
  535. package/dist/surface/templates/Table.js +0 -12
  536. package/dist/surface/templates/Text.d.ts +0 -4
  537. package/dist/surface/templates/Text.js +0 -15
  538. package/dist/surface/templates/index.d.ts +0 -7
  539. package/dist/surface/templates/index.js +0 -32
  540. package/dist/surface/types.d.ts +0 -68
  541. package/dist/surface/types.js +0 -6
  542. package/dist/theme.d.ts +0 -62
  543. package/dist/theme.js +0 -9
  544. package/dist/useTokens.d.ts +0 -7
  545. package/dist/useTokens.js +0 -41
  546. package/dist/voice/VoiceWindow.d.ts +0 -18
  547. package/dist/voice/VoiceWindow.js +0 -35
  548. package/dist/voice/index.d.ts +0 -13
  549. package/dist/voice/index.js +0 -12
  550. package/dist/voice/meter.d.ts +0 -16
  551. package/dist/voice/meter.js +0 -52
  552. package/dist/voice/orbColors.d.ts +0 -16
  553. package/dist/voice/orbColors.js +0 -75
  554. package/dist/voice/pushable.d.ts +0 -16
  555. package/dist/voice/pushable.js +0 -56
  556. package/dist/voice/useDictation.d.ts +0 -24
  557. package/dist/voice/useDictation.js +0 -60
  558. package/dist/voice/useReducedMotion.d.ts +0 -5
  559. package/dist/voice/useVoice.d.ts +0 -70
  560. package/dist/voice/useVoice.js +0 -197
  561. package/dist/voice/useVoicePrimitives.d.ts +0 -7
  562. package/dist/voice/useVoicePrimitives.js +0 -11
  563. package/dist/voice/voice.d.ts +0 -55
  564. package/dist/voice/voice.js +0 -9
  565. package/dist/voice/webSpeech.d.ts +0 -33
  566. package/dist/voice/webSpeech.js +0 -258
  567. package/dist/widget.js.map +0 -1
  568. package/dist/windows/AgentSpace.d.ts +0 -78
  569. package/dist/windows/AgentSpace.js +0 -135
  570. package/dist/windows/Captions.d.ts +0 -13
  571. package/dist/windows/Captions.js +0 -22
  572. package/dist/windows/Dock.d.ts +0 -37
  573. package/dist/windows/Dock.js +0 -22
  574. package/dist/windows/Journal.d.ts +0 -15
  575. package/dist/windows/Journal.js +0 -19
  576. package/dist/windows/KindMark.d.ts +0 -7
  577. package/dist/windows/KindMark.js +0 -31
  578. package/dist/windows/Pending.d.ts +0 -8
  579. package/dist/windows/Pending.js +0 -17
  580. package/dist/windows/Stage.d.ts +0 -18
  581. package/dist/windows/Stage.js +0 -21
  582. package/dist/windows/StatusLabel.d.ts +0 -9
  583. package/dist/windows/StatusLabel.js +0 -7
  584. package/dist/windows/Strip.d.ts +0 -17
  585. package/dist/windows/Strip.js +0 -42
  586. package/dist/windows/SurfaceWindow.d.ts +0 -20
  587. package/dist/windows/SurfaceWindow.js +0 -12
  588. package/dist/windows/WindowFrame.d.ts +0 -23
  589. package/dist/windows/WindowFrame.js +0 -22
  590. package/dist/windows/hearing.d.ts +0 -11
  591. package/dist/windows/hearing.js +0 -26
  592. package/dist/windows/kinds.d.ts +0 -47
  593. package/dist/windows/kinds.js +0 -28
  594. package/dist/windows/reduce.d.ts +0 -98
  595. package/dist/windows/reduce.js +0 -151
  596. package/dist/windows/registry.d.ts +0 -18
  597. package/dist/windows/registry.js +0 -61
  598. package/dist/windows/reveal.d.ts +0 -9
  599. package/dist/windows/reveal.js +0 -6
  600. package/dist/windows/space.d.ts +0 -21
  601. package/dist/windows/space.js +0 -6
  602. package/dist/windows/status.d.ts +0 -11
  603. package/dist/windows/status.js +0 -30
  604. package/dist/windows/types.d.ts +0 -15
  605. package/dist/windows/types.js +0 -1
  606. package/dist/windows/useLoaded.d.ts +0 -44
  607. package/dist/windows/useLoaded.js +0 -58
  608. package/dist/windows/useUnread.d.ts +0 -7
  609. package/dist/windows/useUnread.js +0 -21
  610. package/dist/windows/useWindows.d.ts +0 -70
  611. package/dist/windows/useWindows.js +0 -60
@@ -1,60 +0,0 @@
1
- import { useCallback, useEffect, useMemo, useRef, useState } from "react";
2
- import { webSpeechVoice } from "./webSpeech.js";
3
- /**
4
- * Dictating into a message box: the words settle into `onFinal` sentence by sentence while
5
- * `interim` shows what is still being heard, until `stop`, or until the browser ends the session
6
- * or refuses the microphone. It is the voice window's transport (`webSpeechVoice`) without the
7
- * conversation, and without reading the microphone's level, which a box to write in does not
8
- * show and some browsers do not like having a second reader of.
9
- */
10
- export function useDictation({ lang, onFinal }) {
11
- const voice = useMemo(() => webSpeechVoice({ lang, meter: false }), [lang]);
12
- const [listening, setListening] = useState(false);
13
- const [interim, setInterim] = useState("");
14
- // The session the buttons and the words on screen belong to; none once it was stopped.
15
- const mine = useRef(undefined);
16
- const sessions = useRef(0);
17
- // The latest `onFinal`, for a session started earlier.
18
- const final = useRef(onFinal);
19
- useEffect(() => {
20
- final.current = onFinal;
21
- }, [onFinal]);
22
- const stop = useCallback(() => {
23
- mine.current = undefined;
24
- voice.stopListening();
25
- setListening(false);
26
- setInterim("");
27
- }, [voice]);
28
- const start = useCallback(() => {
29
- if (!voice.supported || mine.current !== undefined)
30
- return;
31
- sessions.current += 1;
32
- const session = sessions.current;
33
- mine.current = session;
34
- setListening(true);
35
- void (async () => {
36
- try {
37
- for await (const heard of voice.listen()) {
38
- // Words said just before `stop` still arrive; only the screen is no longer theirs.
39
- if (heard.final)
40
- final.current(heard.text);
41
- if (mine.current !== session)
42
- continue;
43
- setInterim(heard.final ? "" : heard.text);
44
- }
45
- }
46
- catch {
47
- // A refusal or a failure ends the dictation, as the end of the session does.
48
- }
49
- finally {
50
- if (mine.current === session) {
51
- mine.current = undefined;
52
- setListening(false);
53
- setInterim("");
54
- }
55
- }
56
- })();
57
- }, [voice]);
58
- useEffect(() => stop, [stop]);
59
- return { supported: voice.supported, listening, interim, start, stop };
60
- }
@@ -1,5 +0,0 @@
1
- /**
2
- * Whether the person asked their system for less motion. It follows the setting while the page
3
- * is open. Without `matchMedia` (a server, an old browser) there is no such request.
4
- */
5
- export declare function useReducedMotion(): boolean;
@@ -1,70 +0,0 @@
1
- import type { SurfaceData } from "../surface/types.js";
2
- import { type Voice, type VoiceState } from "./voice.js";
3
- /** What was said and answered in one turn of the conversation. */
4
- export interface VoiceTurn {
5
- /** What the person said. */
6
- said: string;
7
- /** What the agent answered, in words; empty when it only showed something. */
8
- answer: string;
9
- /** What the agent showed with its answer. The host decides where it goes. */
10
- surfaces: SurfaceData[];
11
- }
12
- export interface VoiceOptions {
13
- /** The agent the person talks to. */
14
- agentId: string;
15
- /** The conversation to speak in; the agent remembers it across turns. */
16
- thread?: string | undefined;
17
- /**
18
- * The way of talking and listening. Default: the browser's own, in `lang`. Make it once (at
19
- * module level, or memoized): a new one on every render starts the listening over each time.
20
- */
21
- voice?: Voice | undefined;
22
- /** The language to listen and speak in, as a BCP 47 tag. Default: the provider's locale's. */
23
- lang?: string | undefined;
24
- /**
25
- * Go back to listening after each answer (default), so the conversation goes on until it is
26
- * stopped. Without it, one turn is held and the conversation ends once the answer is said.
27
- */
28
- continuous?: boolean | undefined;
29
- /** A turn was answered: what was said and what came back, for the host's own records. */
30
- onTurn?: ((turn: VoiceTurn) => void) | undefined;
31
- /** The agent showed something with its answer. The voice does not draw it; the host places it. */
32
- onSurfaces?: ((surfaces: SurfaceData[]) => void) | undefined;
33
- }
34
- export interface VoiceConversation {
35
- /** Whether this browser can hold a voice conversation. Nothing starts where it cannot. */
36
- supported: boolean;
37
- /**
38
- * Where the conversation stands: `listening` while the microphone is open, `thinking` from
39
- * when the person pauses until the answer arrives, `speaking` while it is said.
40
- */
41
- state: VoiceState;
42
- /** How loud the microphone or the voice is, from 0 to 1, for the orb. */
43
- level: number;
44
- /** What was heard, as it comes and once it is whole. */
45
- transcript: string;
46
- /** What the agent said last. */
47
- captions: string;
48
- /** A conversation is open: the microphone is wanted when it is the person's turn. */
49
- active: boolean;
50
- /** The microphone is off, though the conversation is open. */
51
- muted: boolean;
52
- /** Something went wrong; the text is for the person. */
53
- problem: string | undefined;
54
- /** Opens the conversation. Call it from a click: browsers let nothing speak before that. */
55
- start: () => void;
56
- /** Ends it, cutting short whatever is being said or heard. */
57
- stop: () => void;
58
- /** Turns the microphone off or on (the agent's answer to what was already said still comes). */
59
- mute: (muted?: boolean) => void;
60
- }
61
- /**
62
- * A spoken conversation with an agent: it listens, sends what the person said as their message
63
- * (with `modality: "voice"`, so the agent knows they are listening and keeps its answer short),
64
- * waits while the answer comes, and says it. Then, if `continuous`, it listens again.
65
- *
66
- * The loop only decides *when*: the turn is sent the way the chat sends its own (`useTurns`),
67
- * and how to hear and speak is the `Voice`'s. The microphone is open only on the person's turn,
68
- * never while an answer is coming or being said, so the agent does not hear itself.
69
- */
70
- export declare function useVoice(options: VoiceOptions): VoiceConversation;
@@ -1,197 +0,0 @@
1
- import { useCallback, useEffect, useMemo, useReducer, useRef, useState, useSyncExternalStore, } from "react";
2
- import { useTurns } from "../chat/useTurns.js";
3
- import { useLanguage, useMessages, useSignalcore } from "../SignalcoreProvider.js";
4
- import { VoiceError } from "./voice.js";
5
- import { webSpeechVoice } from "./webSpeech.js";
6
- /** The language each locale speaks and listens in, unless the host says another. */
7
- const LANGUAGE_TAGS = { es: "es-ES", en: "en-US" };
8
- /** How long to wait before listening again when the browser ended a session by itself. */
9
- const RELISTEN_MS = 300;
10
- const FIRST = { open: false, muted: false, asked: false, queue: [], taken: undefined };
11
- function step(loop, event) {
12
- switch (event.type) {
13
- case "start":
14
- return { ...loop, open: true, asked: false, queue: [] };
15
- case "stop":
16
- return { ...loop, open: false, queue: [] };
17
- case "mute":
18
- return { ...loop, muted: event.muted ?? !loop.muted };
19
- case "asked":
20
- return { ...loop, asked: true };
21
- case "answered":
22
- // Said only while the conversation is open: an answer that comes after it was ended is
23
- // still shown, but it is not read out to someone who left.
24
- return {
25
- ...loop,
26
- taken: event.reply.id,
27
- queue: loop.open && event.reply.text !== "" ? [...loop.queue, event.reply] : loop.queue,
28
- };
29
- case "said":
30
- return { ...loop, queue: loop.queue.filter((each) => each !== event.reply) };
31
- }
32
- }
33
- /** The agent's latest message. */
34
- const latestReply = (said) => said.findLast((message) => message.role === "agent");
35
- /** What the person said that this message answers. */
36
- function questionOf(said, reply) {
37
- const before = said.slice(0, said.indexOf(reply));
38
- return before.findLast((message) => message.role === "person")?.text ?? "";
39
- }
40
- /** The words for a voice that failed: the person's to fix when they said no, ours otherwise. */
41
- function troubleWith(error, copy) {
42
- if (error instanceof VoiceError) {
43
- if (error.reason === "denied")
44
- return copy.voiceDenied;
45
- if (error.reason === "unsupported")
46
- return copy.voiceUnsupported;
47
- }
48
- return copy.voiceFailed;
49
- }
50
- /**
51
- * A spoken conversation with an agent: it listens, sends what the person said as their message
52
- * (with `modality: "voice"`, so the agent knows they are listening and keeps its answer short),
53
- * waits while the answer comes, and says it. Then, if `continuous`, it listens again.
54
- *
55
- * The loop only decides *when*: the turn is sent the way the chat sends its own (`useTurns`),
56
- * and how to hear and speak is the `Voice`'s. The microphone is open only on the person's turn,
57
- * never while an answer is coming or being said, so the agent does not hear itself.
58
- */
59
- export function useVoice(options) {
60
- const { agentId, thread, continuous = true } = options;
61
- const { client } = useSignalcore();
62
- const { locale } = useLanguage();
63
- const copy = useMessages();
64
- const lang = options.lang ?? LANGUAGE_TAGS[locale];
65
- const browser = useMemo(() => webSpeechVoice({ lang }), [lang]);
66
- const voice = options.voice ?? browser;
67
- const turns = useTurns({ agentId, thread, modality: "voice" });
68
- const [loop, dispatch] = useReducer(step, FIRST);
69
- const [transcript, setTranscript] = useState("");
70
- const [trouble, setTrouble] = useState();
71
- // Counts the times listening has to begin again while the person's turn goes on: the browser
72
- // ended a session by itself, or what was heard could not be sent.
73
- const [relistened, setRelistened] = useState(0);
74
- // The agent's words are taken once each, as they arrive: said aloud if the person is there.
75
- const reply = useMemo(() => latestReply(turns.said), [turns.said]);
76
- if (reply && reply.id !== loop.taken)
77
- dispatch({ type: "answered", reply });
78
- const busy = turns.answering || turns.waiting;
79
- // One turn was asked for and nothing more is coming: the conversation is over.
80
- const finished = !continuous && loop.asked && !busy && loop.queue.length === 0;
81
- const open = loop.open && !finished;
82
- const speaking = loop.queue[0];
83
- const listening = open && !loop.muted && !busy && speaking === undefined;
84
- const latest = useRef({ turns, options, copy });
85
- useEffect(() => {
86
- latest.current = { turns, options, copy };
87
- });
88
- // The microphone is open exactly while it is the person's turn.
89
- useEffect(() => {
90
- if (!listening)
91
- return undefined;
92
- let current = true;
93
- let again;
94
- const hear = async () => {
95
- try {
96
- for await (const heard of voice.listen()) {
97
- if (!current)
98
- return;
99
- setTranscript(heard.text);
100
- if (heard.final && heard.text !== "") {
101
- // The person paused: what they said is the turn, and the microphone closes.
102
- current = false;
103
- voice.stopListening();
104
- if (latest.current.turns.ask({ input: heard.text }, heard.text)) {
105
- dispatch({ type: "asked" });
106
- }
107
- else {
108
- // Nothing could be sent: listen again rather than leave the person unheard.
109
- setRelistened((count) => count + 1);
110
- }
111
- return;
112
- }
113
- }
114
- // The browser ended the session (a long silence): the person is still there.
115
- if (current) {
116
- again = setTimeout(() => {
117
- setRelistened((count) => count + 1);
118
- }, RELISTEN_MS);
119
- }
120
- }
121
- catch (error) {
122
- if (!current)
123
- return;
124
- setTrouble(troubleWith(error, latest.current.copy));
125
- dispatch({ type: "stop" });
126
- }
127
- };
128
- void hear();
129
- return () => {
130
- current = false;
131
- clearTimeout(again);
132
- voice.stopListening();
133
- };
134
- }, [listening, voice, relistened]);
135
- // The agent's answer is said, one at a time.
136
- useEffect(() => {
137
- if (!speaking)
138
- return undefined;
139
- let current = true;
140
- const said = () => {
141
- if (current)
142
- dispatch({ type: "said", reply: speaking });
143
- };
144
- voice.speak(speaking.text).then(said, (error) => {
145
- if (current)
146
- setTrouble(troubleWith(error, latest.current.copy));
147
- said();
148
- });
149
- return () => {
150
- current = false;
151
- voice.stopSpeaking();
152
- };
153
- }, [speaking, voice]);
154
- // The host hears of each answer once, and of what it showed.
155
- const question = reply ? questionOf(turns.said, reply) : "";
156
- useEffect(() => {
157
- if (!reply)
158
- return;
159
- const { onTurn, onSurfaces } = latest.current.options;
160
- onTurn?.({ said: question, answer: reply.text, surfaces: reply.surfaces });
161
- if (reply.surfaces.length > 0)
162
- onSurfaces?.(reply.surfaces);
163
- }, [reply, question]);
164
- const available = client?.agents?.invoke !== undefined;
165
- const start = useCallback(() => {
166
- if (!voice.supported)
167
- return;
168
- setTrouble(available ? undefined : copy.chatUnavailable);
169
- if (!available)
170
- return;
171
- setTranscript("");
172
- dispatch({ type: "start" });
173
- }, [voice, available, copy.chatUnavailable]);
174
- const stop = useCallback(() => {
175
- dispatch({ type: "stop" });
176
- }, []);
177
- const mute = useCallback((muted) => {
178
- dispatch({ type: "mute", muted });
179
- }, []);
180
- const heardState = useSyncExternalStore(voice.subscribe, () => voice.state, () => "idle");
181
- const heardLevel = useSyncExternalStore(voice.subscribe, () => voice.level, () => 0);
182
- // The loop knows when the person is waiting on the agent; the voice knows what it hears and says.
183
- const state = !open ? "idle" : speaking ? "speaking" : busy ? "thinking" : heardState;
184
- return {
185
- supported: voice.supported,
186
- state,
187
- level: open ? heardLevel : 0,
188
- transcript,
189
- captions: reply?.text ?? "",
190
- active: open,
191
- muted: loop.muted,
192
- problem: turns.problem ?? trouble,
193
- start,
194
- stop,
195
- mute,
196
- };
197
- }
@@ -1,7 +0,0 @@
1
- import type { Primitives } from "../host.js";
2
- /**
3
- * What the voice window is built from, as `usePrimitives` is for surfaces: the host's `Orb` where
4
- * the provider has one (`components={{ Orb }}`), ours otherwise. It is kept apart from
5
- * `usePrimitives` because the default orb is in this entry, and the core does not load it.
6
- */
7
- export declare function useVoicePrimitives(): Pick<Primitives, "Orb">;
@@ -1,11 +0,0 @@
1
- import { useSignalcore } from "../SignalcoreProvider.js";
2
- import { Orb } from "./Orb.js";
3
- /**
4
- * What the voice window is built from, as `usePrimitives` is for surfaces: the host's `Orb` where
5
- * the provider has one (`components={{ Orb }}`), ours otherwise. It is kept apart from
6
- * `usePrimitives` because the default orb is in this entry, and the core does not load it.
7
- */
8
- export function useVoicePrimitives() {
9
- const { components } = useSignalcore();
10
- return { Orb: Object.hasOwn(components, "Orb") ? (components.Orb ?? Orb) : Orb };
11
- }
@@ -1,55 +0,0 @@
1
- /**
2
- * Where a voice conversation stands: `idle` (nobody is talking), `listening` (the microphone is
3
- * open), `thinking` (the person finished and the agent is working on the answer), `speaking`
4
- * (the agent's answer is being said). The orb is drawn from it.
5
- */
6
- export type VoiceState = "idle" | "listening" | "thinking" | "speaking";
7
- /**
8
- * What the person is saying. `final` is false while they speak (the words so far, which may
9
- * still change) and true once they pause: that text is a whole utterance and will not change.
10
- */
11
- export interface Heard {
12
- text: string;
13
- final: boolean;
14
- }
15
- /** Why a voice could not do what was asked: it cannot here, it was refused, or it broke. */
16
- export type VoiceFailure = "unsupported" | "denied" | "failed";
17
- /** What a transport throws from `listen()` when it cannot go on; `reason` says why. */
18
- export declare class VoiceError extends Error {
19
- readonly reason: VoiceFailure;
20
- constructor(reason: VoiceFailure, message?: string);
21
- }
22
- /**
23
- * What a way of talking and listening does, and nothing about the agent: the browser's own speech
24
- * APIs are the first one (`webSpeechVoice`), and a provider's (a hosted assistant over WebRTC)
25
- * can come behind the same shape. `useVoice` runs the conversation on top of one.
26
- *
27
- * `state` and `level` can be read at any time and change over time; `subscribe` tells when (it
28
- * has the shape React's `useSyncExternalStore` takes).
29
- */
30
- export interface Voice {
31
- /** Whether this browser can hold a voice conversation at all (listen and speak). */
32
- readonly supported: boolean;
33
- readonly state: VoiceState;
34
- /**
35
- * How loud it is right now, from 0 to 1: the microphone while listening, the voice while
36
- * speaking, 0 otherwise. Already smoothed, so it can drive an animation as it is.
37
- */
38
- readonly level: number;
39
- /** Calls `listener` whenever `state` or `level` change; the result stops it. */
40
- subscribe: (listener: () => void) => () => void;
41
- /**
42
- * Opens the microphone and says what the person says: the words so far while they speak, then
43
- * the whole utterance when they pause. The iteration ends when listening stops, by
44
- * `stopListening`, by leaving the loop, or because the transport ended it (a long silence);
45
- * it throws a `VoiceError` when listening cannot go on. Words still in flight when listening
46
- * is stopped may arrive before it ends.
47
- */
48
- listen: () => AsyncIterable<Heard>;
49
- /** Closes the microphone. */
50
- stopListening: () => void;
51
- /** Says the words aloud; resolves when they have been said, or were cut by `stopSpeaking`. */
52
- speak: (text: string) => Promise<void>;
53
- /** Cuts the voice short. */
54
- stopSpeaking: () => void;
55
- }
@@ -1,9 +0,0 @@
1
- /** What a transport throws from `listen()` when it cannot go on; `reason` says why. */
2
- export class VoiceError extends Error {
3
- reason;
4
- constructor(reason, message = reason) {
5
- super(message);
6
- this.name = "VoiceError";
7
- this.reason = reason;
8
- }
9
- }
@@ -1,33 +0,0 @@
1
- import { type Voice } from "./voice.js";
2
- /**
3
- * The voice to speak a language with: one of the exact region (`es-ES`), else one of the same
4
- * language, the browser's default for it first. Nothing when the browser has none yet (the list
5
- * loads late); the utterance's `lang` then lets the browser choose.
6
- */
7
- export declare function voiceFor(voices: readonly SpeechSynthesisVoice[], lang: string): SpeechSynthesisVoice | undefined;
8
- export interface WebSpeechOptions {
9
- /** The language spoken and heard, as a BCP 47 tag (`"es-ES"`, `"en-US"`). */
10
- lang: string;
11
- /**
12
- * Read the microphone's loudness while listening, with a second stream beside the recognizer's
13
- * (default). Turn it off where only the words matter, such as dictating into a message box:
14
- * some browsers do not like two readers of the microphone, and the level is not shown there.
15
- */
16
- meter?: boolean;
17
- }
18
- /**
19
- * The first way to talk and listen: the browser's own speech recognition and speech synthesis,
20
- * with nothing to install and nothing sent to us. Quality is the browser's (the voice, how well
21
- * it hears accents), which is why a provider's transport can come behind the same `Voice`.
22
- *
23
- * - **Listening.** One recognizer session at a time, continuous with interim results. While it
24
- * runs, the microphone's real loudness comes from an `AnalyserNode` (see `meter`).
25
- * - **Speaking.** `speechSynthesis` with a voice picked for the language. Speaking closes the
26
- * microphone first, so the agent does not hear itself.
27
- * - **The level while speaking is an estimate.** `speechSynthesis` exposes no audio stream to
28
- * measure, so the loudness is made up from what it does say: every `boundary` event (a word
29
- * starts) pushes it up in proportion to the word, and it falls back between words, over a
30
- * floor so a voice whose engine sends no boundaries still moves. It follows the rhythm of the
31
- * speech, not its volume.
32
- */
33
- export declare function webSpeechVoice({ lang, meter }: WebSpeechOptions): Voice;