@signalcore/ui 0.1.0 → 1.0.0-beta.0

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 +1119 -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 +534 -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 +1795 -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 +270 -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 +6961 -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 +596 -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
package/src/types.ts ADDED
@@ -0,0 +1,596 @@
1
+ /** The API's objects this package reads (v3/README.md). */
2
+
3
+ import type { ChannelKind } from "./about";
4
+ import type { Surface } from "./blocks";
5
+
6
+ /** The channel a conversation is on, as a list draws it. */
7
+ export interface ChannelGlance {
8
+ id: string;
9
+ kind: ChannelKind;
10
+ /** The number, the @username. */
11
+ name: string;
12
+ }
13
+
14
+ /** The person a conversation on a channel is with, or a person who signed in to the host's app. */
15
+ export interface ContactGlance {
16
+ id: string;
17
+ /** As they show it on the channel; null when it doesn't say. */
18
+ name: string | null;
19
+ /** Where they are on it: the number, the Instagram id; their account in the host's app. */
20
+ address: string;
21
+ /** The owner marked them: the agent doesn't answer them; left out by an API from before. */
22
+ muted?: boolean | undefined;
23
+ }
24
+
25
+ /**
26
+ * Who answers a conversation: its agent; a person of the business (the agent paused in it: it
27
+ * handed it over, or one of them wrote in it); or nobody (it is ignored: what comes is kept, never
28
+ * answered).
29
+ */
30
+ export type Holder = "agent" | "person" | "nobody";
31
+
32
+ /** A change of who answers a conversation: to whom, why, who changed it and when. */
33
+ export interface Handover {
34
+ holder: Holder;
35
+ /** Why, in the words of whoever changed it; "" when they said nothing. */
36
+ reason: string;
37
+ /**
38
+ * `owner` (a person of the business), `agent` (its `escalate`), `platform`, or an automation by
39
+ * its file's name.
40
+ */
41
+ by: string;
42
+ /** The automation's title, when one changed it. */
43
+ title: string | null;
44
+ at: string;
45
+ }
46
+
47
+ /**
48
+ * What was decided of a person's message on a channel before the agent answered it: `deciding`
49
+ * while the automations that decide go; then the agent answers it (`answer`), lets it pass this
50
+ * time (`skip`), or the conversation goes to a person (`hold`) or to nobody (`ignore`).
51
+ */
52
+ export interface Decision {
53
+ kind: "deciding" | "answer" | "skip" | "hold" | "ignore";
54
+ /** Why, in the owner's words; null when it says nothing. */
55
+ reason: string | null;
56
+ /** The automation that decided, by its file's name; null when the platform did (a filter, the hours). */
57
+ automation: string | null;
58
+ /** Its title. */
59
+ title: string | null;
60
+ /** Its run that decided. */
61
+ run_id: string | null;
62
+ }
63
+
64
+ /** A conversation between a person and one agent. */
65
+ export interface Conversation {
66
+ id: string;
67
+ agent_id: string;
68
+ /** A turn stopped, waiting for the person to answer on a surface. */
69
+ pending: boolean;
70
+ /** Who answers it now: its agent, a person of the business, or nobody. */
71
+ handled_by: Holder;
72
+ /** Its last change of who answers it; null when it never changed, left out by an older API. */
73
+ handover?: Handover | null | undefined;
74
+ /** The owner trying the agent out: no customer sees it, and it is never the agent's activity. */
75
+ test: boolean;
76
+ created_at: string;
77
+ /** Its title in a list: what a person first said in it; null while they've said nothing. */
78
+ title: string | null;
79
+ /** On a channel: which, and the person; null (or left out by an older API) elsewhere. */
80
+ channel?: ChannelGlance | null | undefined;
81
+ contact?: ContactGlance | null | undefined;
82
+ /** On a channel: when the agent's reply is due, once the person has been quiet a moment. */
83
+ reply_due_at?: string | null | undefined;
84
+ /** On a channel: when the person last wrote (WhatsApp's 24 h window counts from it). */
85
+ last_inbound_at?: string | null | undefined;
86
+ /** The call it is, when it is one; null elsewhere, and left out by an API from before calls. */
87
+ call?: CallGlance | null | undefined;
88
+ /**
89
+ * Who it is with, when a person's token or a publishable key started it: a person of the
90
+ * host's app (`host_person`, its `contact` then) or the widget's visitor.
91
+ */
92
+ person?: ConversationPerson | null | undefined;
93
+ }
94
+
95
+ /** Who a person's token or a publishable key started a conversation for. */
96
+ export interface ConversationPerson {
97
+ kind: "host_person" | "visitor" | "contact" | "owner";
98
+ /** The host's id for them, the visitor's id. */
99
+ external_id: string;
100
+ name: string | null;
101
+ email: string | null;
102
+ }
103
+
104
+ /**
105
+ * Why a call ended, as the API keeps it: the caller hung up, the agent said goodbye, it reached
106
+ * its longest time, it failed, its end never came, or it was never taken.
107
+ */
108
+ export type CallReason = "caller" | "agent" | "max_duration" | "error" | "lost" | "missed";
109
+
110
+ /**
111
+ * The call a conversation is (v3/VOICE.md): the owner's in the browser or a phone call, when the
112
+ * agent took it and when it ended, why and how long.
113
+ */
114
+ export interface CallGlance {
115
+ id: string;
116
+ kind: "browser" | "phone";
117
+ /** Null while it is on. */
118
+ reason: CallReason | null;
119
+ /** From when the agent took it to when it ended; null while it is on. */
120
+ seconds: number | null;
121
+ started_at: string | null;
122
+ ended_at: string | null;
123
+ /** Whether it was recorded, to play from the conversation; left out by an older API. */
124
+ recording?: boolean | undefined;
125
+ }
126
+
127
+ /** Who said a message on a channel: the person, the agent, or a person of the business. */
128
+ export type Author = "contact" | "agent" | "operator";
129
+
130
+ /** Where a message that goes out on a channel got to: it only moves forward, and `failed` wins. */
131
+ export type Delivery = "queued" | "sent" | "delivered" | "read" | "failed";
132
+
133
+ /** How a channel's account stands, as its provider last said. */
134
+ export type ChannelStatus = "pending" | "active" | "error" | "disconnected";
135
+
136
+ /** A day of the week, as a channel's hours name it. */
137
+ export type Weekday = "mon" | "tue" | "wed" | "thu" | "fri" | "sat" | "sun";
138
+
139
+ /** A stretch of a day, from one time to a later one ("HH:MM"). */
140
+ export interface HoursSpan {
141
+ start: string;
142
+ end: string;
143
+ }
144
+
145
+ /**
146
+ * A week of hours in the agent's time zone: each day's stretches, in order and apart, four at
147
+ * most; a day left out, or empty, is closed.
148
+ */
149
+ export type WeekHours = Partial<Record<Weekday, HoursSpan[]>>;
150
+
151
+ /**
152
+ * How the agent behaves on a channel, the same for every text channel (each shows only what its
153
+ * medium can do): when it answers, how what it says goes out, and what it is told there.
154
+ */
155
+ export interface ChannelSettings {
156
+ /** It answers on this channel; off, everything goes to the inbox for a person. */
157
+ answers: boolean;
158
+ /** Who it answers, in the owner's words; null: everyone. */
159
+ filter: string | null;
160
+ /** Words that, said in a message, have it answer without weighing the filter. */
161
+ filter_keywords: string[];
162
+ /** The week it keeps; null: it answers at any hour. */
163
+ hours: WeekHours | null;
164
+ /** It answers inside the hours, or outside them (the business's people take the hours). */
165
+ answers_when: "in_hours" | "out_of_hours";
166
+ /** Sent once per conversation while the hours keep it from answering; null: nothing. */
167
+ away_message: string | null;
168
+ /** WhatsApp: it answers in group chats too. */
169
+ groups: boolean;
170
+ /**
171
+ * A conversation a person took over goes back to the agent after this long without them; null:
172
+ * it stays theirs until they give it back.
173
+ */
174
+ auto_release_after_h: number | null;
175
+ /** What it is told on this channel only, besides its own instructions. */
176
+ instructions: string | null;
177
+ /** The quiet period after the person's last message before the agent answers them all. */
178
+ reply_delay_s: number;
179
+ /** A long answer goes in up to three messages as a person writes them, its words as they are. */
180
+ split: boolean;
181
+ /** The channel shows the agent writing between the parts of an answer, where it can. */
182
+ typing: boolean;
183
+ /** WhatsApp, past 24 h since the person last wrote: the template that carries the answer. */
184
+ window_template: string | null;
185
+ /**
186
+ * WhatsApp: the answer as a voice note in the agent's voice, its words kept as what it said;
187
+ * never, when the person's last message was a voice note, or always.
188
+ */
189
+ voice_replies: "never" | "when_voice" | "always";
190
+ }
191
+
192
+ /**
193
+ * An account on a provider (a WhatsApp number, an Instagram account, an SMS number) and the agent
194
+ * that answers it (`GET /channels?agent=`).
195
+ */
196
+ export interface Channel {
197
+ id: string;
198
+ agent_id: string;
199
+ kind: "whatsapp" | "instagram" | "sms" | "phone" | "web";
200
+ /** meta · twilio · livekit · signalcore (the widget) */
201
+ provider: string;
202
+ /** The number, the @username. */
203
+ name: string;
204
+ /** The provider's id for the account. */
205
+ external_id: string;
206
+ /** A phone number's: where its provider sends its calls (a SIP address); null for others. */
207
+ address: string | null;
208
+ /** A phone number's: whether the agent calls out from it (it has the number's SIP login). */
209
+ outbound: boolean;
210
+ status: ChannelStatus;
211
+ /** The provider's word on its status, or what went wrong; null when it said nothing. */
212
+ detail: string | null;
213
+ settings: ChannelSettings;
214
+ /** A web channel's: the widget's publishable key, its sites and its look; null for others. */
215
+ web: ChannelWeb | null;
216
+ created_at: string;
217
+ }
218
+
219
+ /** The widget a web channel is: the key its line carries, the sites it loads on, its look. */
220
+ export interface ChannelWeb {
221
+ key: string;
222
+ origins: string[];
223
+ appearance: WidgetLook;
224
+ }
225
+
226
+ export type StepState = "running" | "waiting" | "done" | "failed";
227
+
228
+ /**
229
+ * Who gives the yes an action waits for: the person on the screen (the turn stopped for it), or
230
+ * the business (the turn went on; its people allow or decline it from the app, the inbox).
231
+ */
232
+ export type Decides = "person" | "business";
233
+
234
+ /** An action the platform will not run until it is allowed: what, with what input, by whom. */
235
+ export interface Request {
236
+ action: string;
237
+ input: Record<string, unknown>;
238
+ /** The person's when left out (an API from before it). */
239
+ decides?: Decides | undefined;
240
+ }
241
+
242
+ /** An action a reply called: what, how it went, and what it drew. */
243
+ export interface Step {
244
+ id: string;
245
+ action: string;
246
+ state: StepState;
247
+ output: string | null;
248
+ surface: Surface | null;
249
+ /**
250
+ * The turn stopped on it: the person's answer on its surface carries it on. Never a host's tool
251
+ * the page runs, nor a yes the business gives.
252
+ */
253
+ awaits: boolean;
254
+ /** Set while it waits to be allowed: by the person (the turn stopped), or by the business. */
255
+ request: Request | null;
256
+ }
257
+
258
+ /**
259
+ * What a person did on a surface: `surface` is its id, `name` the block's action, `data` what it
260
+ * carries (a pick, a form's values), `label` the words the app shows for it.
261
+ */
262
+ export interface Action {
263
+ surface: string;
264
+ name: string;
265
+ data: Record<string, unknown>;
266
+ label: string;
267
+ }
268
+
269
+ /** What is read of a message: who said it, its text, what it did on a surface, its steps. */
270
+ export interface Message {
271
+ id: string;
272
+ role: "user" | "assistant";
273
+ text: string;
274
+ /** When the message came from a surface; `text` is then its label. */
275
+ action: Action | null;
276
+ steps: Step[];
277
+ /** The files the person sent with it; an API from before files leaves it out. */
278
+ files?: Attachment[] | undefined;
279
+ /** On a channel, who said it; null elsewhere. A person of the business's is `assistant`. */
280
+ author?: Author | null | undefined;
281
+ /** On a channel, where what goes out got to, and why it failed when it did. */
282
+ delivery?: Delivery | null | undefined;
283
+ delivery_error?: string | null | undefined;
284
+ /** Gone out on a channel in several parts: the words of each, in order; null as one. */
285
+ pieces?: string[] | null | undefined;
286
+ /** Going out on a channel: how many of its parts went so far; null for what doesn't go out. */
287
+ sent_parts?: number | null | undefined;
288
+ /**
289
+ * On a channel, a voice note, the person's or the agent's: its file, played with `text` (what
290
+ * was said) under it; null otherwise, and left out by an API from before voice notes.
291
+ */
292
+ voice?: Attachment | null | undefined;
293
+ /**
294
+ * On a call, a person's message: what they heard of the agent's last words before saying it,
295
+ * when that isn't what was stored (a reply or the greeting they cut short; "" for nothing of
296
+ * it); null otherwise, and left out by an API from before calls.
297
+ */
298
+ heard?: string | null | undefined;
299
+ /** On a channel, a person's message: what was decided of it; null otherwise. */
300
+ decision?: Decision | null | undefined;
301
+ created_at: string;
302
+ }
303
+
304
+ /**
305
+ * A call with an agent from the browser (the owner's test, `POST /agents/{id}/voice/token`; anyone
306
+ * who may talk to it, a person's as theirs, `POST /agents/{id}/calls`): LiveKit's address, a token
307
+ * to join the call's room (for 10 minutes), and the call and its own conversation, made with it,
308
+ * whose live socket shows what is said.
309
+ */
310
+ export interface CallToken {
311
+ url: string;
312
+ token: string;
313
+ room: string;
314
+ call_id: string;
315
+ conversation_id: string;
316
+ }
317
+
318
+ /** A file that arrived in a conversation, as a message carries it. */
319
+ export interface Attachment {
320
+ id: string;
321
+ name: string;
322
+ media_type: string;
323
+ size: number;
324
+ }
325
+
326
+ /** Where a file of a conversation plays from, until `expires_at`: a path under the API's root. */
327
+ export interface FileLink {
328
+ path: string;
329
+ expires_at: string;
330
+ }
331
+
332
+ /** A conversation's file, as the API stores it (`POST /conversations/{id}/files`). */
333
+ export interface ConversationFile extends Attachment {
334
+ conversation_id: string;
335
+ created_at: string;
336
+ }
337
+
338
+ /** A conversation with its messages, in the order they were said. */
339
+ export interface ConversationDetail extends Conversation {
340
+ messages: Message[];
341
+ /** Every change of who answers it, in order; left out by an API from before them. */
342
+ handovers?: Handover[] | undefined;
343
+ }
344
+
345
+ /**
346
+ * How far a searchable file's index is: its passages being made, made, or failed; what to know
347
+ * of it (why it failed, what of it can't be searched); its pages without text the model read.
348
+ */
349
+ export interface FileIndex {
350
+ state: "indexing" | "ready" | "failed";
351
+ detail: string | null;
352
+ scanned: number;
353
+ }
354
+
355
+ /** A file kept under a name: the organization's, or an agent's own. */
356
+ export interface StoredFile {
357
+ id: string;
358
+ path: string;
359
+ media_type: string;
360
+ size: number;
361
+ /** Text, Markdown, JSON, YAML or PDF, read by `search_files`; anything else is only kept. */
362
+ searchable: boolean;
363
+ /** Its index, while it is searchable; left out by an API from before it. */
364
+ index?: FileIndex | null | undefined;
365
+ created_at: string;
366
+ }
367
+
368
+ /**
369
+ * Where a file is, for what reads any of them: the organization's or an agent's own by its path,
370
+ * a conversation's by its id.
371
+ */
372
+ export type FileAt =
373
+ { path: string } | { agentId: string; path: string } | { conversationId: string; fileId: string };
374
+
375
+ /** A PDF: the viewer draws the bytes it fetches. Null pages when they can't be counted. */
376
+ export interface PdfPreview {
377
+ kind: "pdf";
378
+ pages: number | null;
379
+ }
380
+
381
+ /**
382
+ * One sheet: its first row with anything in it as its columns (null for an empty sheet), and the
383
+ * rows under it, the first 500 (an empty row between two as `[]`), each cell as Excel shows it;
384
+ * `total_rows`, every row under its columns.
385
+ */
386
+ export interface PreviewSheet {
387
+ name: string;
388
+ columns: string[] | null;
389
+ rows: string[][];
390
+ total_rows: number;
391
+ }
392
+
393
+ /** A spreadsheet's sheets (20 at most), or a CSV as one, named as its file. */
394
+ export interface SheetPreview {
395
+ kind: "sheet";
396
+ sheets: PreviewSheet[];
397
+ /** Rows, columns (50 at most), long cells or sheets were left out. */
398
+ truncated: boolean;
399
+ }
400
+
401
+ /**
402
+ * A Word file as simple HTML: headings, paragraphs, lists, tables, bold and italic, small
403
+ * pictures as data URLs. Cleaned by the API against an allow-list: nothing in it runs, styles
404
+ * or loads from another address.
405
+ */
406
+ export interface DocumentPreview {
407
+ kind: "document";
408
+ html: string;
409
+ truncated: boolean;
410
+ }
411
+
412
+ /** A slide: its title (null without one), the words of its other shapes, its notes. */
413
+ export interface PreviewSlide {
414
+ title: string | null;
415
+ text: string;
416
+ notes: string | null;
417
+ }
418
+
419
+ /** A deck's slides, in order. */
420
+ export interface SlidesPreview {
421
+ kind: "slides";
422
+ slides: PreviewSlide[];
423
+ truncated: boolean;
424
+ }
425
+
426
+ /** Words as written: Markdown, plain text, JSON. */
427
+ export interface TextPreview {
428
+ kind: "markdown" | "text" | "json";
429
+ text: string;
430
+ truncated: boolean;
431
+ }
432
+
433
+ /** A source as written, never run (HTML too), in the language highlighters name it by. */
434
+ export interface CodePreview {
435
+ kind: "code";
436
+ text: string;
437
+ truncated: boolean;
438
+ language: string;
439
+ }
440
+
441
+ /** A picture, a video or a sound: the viewer plays the bytes, typed as `media_type`. */
442
+ export interface MediaPreview {
443
+ kind: "image" | "video" | "audio";
444
+ media_type: string;
445
+ }
446
+
447
+ /** Nothing to draw: a kind no viewer shows, or a file that can't be read; it is saved. */
448
+ export interface UnknownPreview {
449
+ kind: "unknown";
450
+ }
451
+
452
+ /**
453
+ * What a viewer draws of a file (`GET …/preview`), by its `kind`. What is too long answers what
454
+ * fits, with `truncated`.
455
+ */
456
+ export type FilePreview =
457
+ | PdfPreview
458
+ | SheetPreview
459
+ | DocumentPreview
460
+ | SlidesPreview
461
+ | TextPreview
462
+ | CodePreview
463
+ | MediaPreview
464
+ | UnknownPreview;
465
+
466
+ /**
467
+ * A file the agent shows in a surface (`show`'s `file` block): it names one it may read (`path`:
468
+ * its own or the organization's by path, or the conversation's by id), and the API fills in
469
+ * `file`, the conversation's file it put there (`{conversationId, fileId}` to preview and fetch
470
+ * it); null while there is none (the reply's message before the show ran, or one it refused).
471
+ */
472
+ export interface FileBlock {
473
+ type: "file";
474
+ path: string;
475
+ /** Over it; none: its name. */
476
+ title?: string;
477
+ file: Attachment | null;
478
+ }
479
+
480
+ /** Who holds the conversation's browser: the agent drives it, or the person does. */
481
+ export type BrowserControl = "agent" | "person";
482
+
483
+ /** Whose the browser is: a clean one in the cloud, or the owner's own Chrome. */
484
+ export type BrowserWhere = "hosted" | "mine";
485
+
486
+ /**
487
+ * The conversation's hosted browser, while it is open: where it is, who holds it, and, when the
488
+ * agent handed it over, why (`reason`) and the step the person's answer carries on (`wait`).
489
+ * `width` and `height` are the page's, the pixels its pointer events are in.
490
+ */
491
+ export interface BrowserState {
492
+ where: BrowserWhere;
493
+ url: string;
494
+ title: string;
495
+ control: BrowserControl;
496
+ reason: string | null;
497
+ wait: string | null;
498
+ width: number;
499
+ height: number;
500
+ }
501
+
502
+ /** A picture of the browser's screen: a JPEG in base64, showing the page at this size. */
503
+ export interface BrowserFrame {
504
+ jpeg: string;
505
+ width: number;
506
+ height: number;
507
+ }
508
+
509
+ /**
510
+ * What the person does on the browser's screen while they hold it, in the page's pixels: the
511
+ * pointer, the wheel, keys (the DOM's `key`, `code` and `keyCode`; `modifiers` is Alt 1, Ctrl 2,
512
+ * Meta 4, Shift 8) and text pasted.
513
+ */
514
+ export type BrowserInput =
515
+ | {
516
+ kind: "mouse";
517
+ action: "move" | "down" | "up";
518
+ x: number;
519
+ y: number;
520
+ button?: "left" | "middle" | "right";
521
+ clicks?: number;
522
+ }
523
+ | { kind: "wheel"; x: number; y: number; dx: number; dy: number }
524
+ | {
525
+ kind: "key";
526
+ action: "down" | "up";
527
+ key: string;
528
+ code: string;
529
+ keyCode: number;
530
+ modifiers: number;
531
+ }
532
+ | { kind: "paste"; text: string };
533
+
534
+ /**
535
+ * What a person may know of the agent they talk to (`GET /agents/{id}/face`): its name, its role
536
+ * in a line, the mark of its work (an `AgentIcon`; null until it picked one) and whether it takes
537
+ * calls.
538
+ */
539
+ /**
540
+ * How a web channel's widget looks (`PUT /channels/{id}/appearance`): each unset field keeps the
541
+ * widget's own default (the page's type and ink, neutral greys). Colours are `#rrggbb`, sizes
542
+ * pixels; `css` is the widget's own stylesheet, drawn inside it after ours.
543
+ */
544
+ export interface WidgetLook {
545
+ accent?: string | null;
546
+ accent_fg?: string | null;
547
+ font?: WidgetFont | null;
548
+ radius?: number | null;
549
+ theme?: "auto" | "light" | "dark";
550
+ position?: "right" | "left";
551
+ launcher_size?: number | null;
552
+ panel_width?: number | null;
553
+ panel_height?: number | null;
554
+ header?: boolean;
555
+ css?: string | null;
556
+ }
557
+
558
+ /** The faces a widget may wear besides the page's own: Google Fonts it loads by name. */
559
+ export const WIDGET_FONTS = [
560
+ "Inter",
561
+ "Manrope",
562
+ "DM Sans",
563
+ "Plus Jakarta Sans",
564
+ "Poppins",
565
+ "Nunito",
566
+ "Lora",
567
+ "Playfair Display",
568
+ ] as const;
569
+
570
+ export type WidgetFont = (typeof WIDGET_FONTS)[number];
571
+
572
+ /** What the widget reads as it loads, by its publishable key: its agent, and how it looks. */
573
+ export interface WidgetConfig {
574
+ agent_id: string;
575
+ agent_name: string;
576
+ appearance: WidgetLook;
577
+ }
578
+
579
+ export interface AgentFace {
580
+ id: string;
581
+ name: string;
582
+ /** "" when it has none. */
583
+ role: string;
584
+ icon: string | null;
585
+ voice: { enabled: boolean };
586
+ }
587
+
588
+ /**
589
+ * One of the host's own tools the agent called, to run in the page (a tool declared `client` on
590
+ * the agent): the call's id, the tool's name, and what the agent gave it, as its JSON Schema says.
591
+ */
592
+ export interface ToolCall {
593
+ id: string;
594
+ name: string;
595
+ input: Record<string, unknown>;
596
+ }
@@ -0,0 +1,47 @@
1
+ import { useEffect, useState } from "react";
2
+
3
+ import type { Client } from "./client";
4
+ import type { AgentFace } from "./types";
5
+
6
+ /** The agent's face as it is read: null until it lands, with what the read threw if it failed. */
7
+ export interface FaceRead {
8
+ face: AgentFace | null;
9
+ loading: boolean;
10
+ error: unknown;
11
+ }
12
+
13
+ /** A read that landed, and for which agent: one for another is not this one's. */
14
+ interface Landed {
15
+ client: Client;
16
+ agentId: string;
17
+ face: AgentFace | null;
18
+ error: unknown;
19
+ }
20
+
21
+ /**
22
+ * What a person may know of agent `agentId` (`GET /agents/{id}/face`): its name, its role, the
23
+ * mark of its work and whether it takes calls, read once for each agent. Until it lands (and
24
+ * while another agent's is read) there is none; one that lands for an agent no longer asked
25
+ * about is dropped.
26
+ */
27
+ export function useAgentFace(client: Client, agentId: string): FaceRead {
28
+ const [landed, setLanded] = useState<Landed | null>(null);
29
+ useEffect(() => {
30
+ let asked = true;
31
+ client.agents.face(agentId).then(
32
+ (face) => {
33
+ if (asked) setLanded({ client, agentId, face, error: null });
34
+ },
35
+ (error: unknown) => {
36
+ if (asked) setLanded({ client, agentId, face: null, error });
37
+ },
38
+ );
39
+ return () => {
40
+ asked = false;
41
+ };
42
+ }, [client, agentId]);
43
+ const current = landed !== null && landed.client === client && landed.agentId === agentId;
44
+ return current
45
+ ? { face: landed.face, loading: false, error: landed.error }
46
+ : { face: null, loading: true, error: null };
47
+ }