@docyrus/rn-assistant 0.0.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 (314) hide show
  1. package/README.md +477 -0
  2. package/dist/commonjs/components/agent-selector/agent-selector.js +300 -0
  3. package/dist/commonjs/components/agent-selector/agent-selector.js.map +1 -0
  4. package/dist/commonjs/components/agent-selector/index.js +17 -0
  5. package/dist/commonjs/components/agent-selector/index.js.map +1 -0
  6. package/dist/commonjs/components/assistant-animations/assistant-animations.js +169 -0
  7. package/dist/commonjs/components/assistant-animations/assistant-animations.js.map +1 -0
  8. package/dist/commonjs/components/assistant-animations/index.js +17 -0
  9. package/dist/commonjs/components/assistant-animations/index.js.map +1 -0
  10. package/dist/commonjs/components/assistant-screen/assistant-screen.js +809 -0
  11. package/dist/commonjs/components/assistant-screen/assistant-screen.js.map +1 -0
  12. package/dist/commonjs/components/assistant-screen/index.js +17 -0
  13. package/dist/commonjs/components/assistant-screen/index.js.map +1 -0
  14. package/dist/commonjs/components/index.js +116 -0
  15. package/dist/commonjs/components/index.js.map +1 -0
  16. package/dist/commonjs/components/message-parts/index.js +13 -0
  17. package/dist/commonjs/components/message-parts/index.js.map +1 -0
  18. package/dist/commonjs/components/message-parts/message-parts.js +209 -0
  19. package/dist/commonjs/components/message-parts/message-parts.js.map +1 -0
  20. package/dist/commonjs/components/new-chat/index.js +17 -0
  21. package/dist/commonjs/components/new-chat/index.js.map +1 -0
  22. package/dist/commonjs/components/new-chat/new-chat.js +100 -0
  23. package/dist/commonjs/components/new-chat/new-chat.js.map +1 -0
  24. package/dist/commonjs/components/prompt-input/attachment-picker.js +341 -0
  25. package/dist/commonjs/components/prompt-input/attachment-picker.js.map +1 -0
  26. package/dist/commonjs/components/prompt-input/attachment-preview.js +229 -0
  27. package/dist/commonjs/components/prompt-input/attachment-preview.js.map +1 -0
  28. package/dist/commonjs/components/prompt-input/index.js +41 -0
  29. package/dist/commonjs/components/prompt-input/index.js.map +1 -0
  30. package/dist/commonjs/components/prompt-input/prompt-input.js +288 -0
  31. package/dist/commonjs/components/prompt-input/prompt-input.js.map +1 -0
  32. package/dist/commonjs/components/prompt-input/provider-selector.js +542 -0
  33. package/dist/commonjs/components/prompt-input/provider-selector.js.map +1 -0
  34. package/dist/commonjs/components/prompt-input/reasoning-level-selector.js +350 -0
  35. package/dist/commonjs/components/prompt-input/reasoning-level-selector.js.map +1 -0
  36. package/dist/commonjs/components/prompt-input/voice-recorder.js +260 -0
  37. package/dist/commonjs/components/prompt-input/voice-recorder.js.map +1 -0
  38. package/dist/commonjs/components/sessions-list/index.js +17 -0
  39. package/dist/commonjs/components/sessions-list/index.js.map +1 -0
  40. package/dist/commonjs/components/sessions-list/sessions-list.js +820 -0
  41. package/dist/commonjs/components/sessions-list/sessions-list.js.map +1 -0
  42. package/dist/commonjs/hooks/index.js +34 -0
  43. package/dist/commonjs/hooks/index.js.map +1 -0
  44. package/dist/commonjs/hooks/use-agent-models.js +104 -0
  45. package/dist/commonjs/hooks/use-agent-models.js.map +1 -0
  46. package/dist/commonjs/hooks/use-assistant.js +402 -0
  47. package/dist/commonjs/hooks/use-assistant.js.map +1 -0
  48. package/dist/commonjs/hooks/use-attachment-picker.js +308 -0
  49. package/dist/commonjs/hooks/use-attachment-picker.js.map +1 -0
  50. package/dist/commonjs/hooks/use-voice-recorder.js +217 -0
  51. package/dist/commonjs/hooks/use-voice-recorder.js.map +1 -0
  52. package/dist/commonjs/index.js +112 -0
  53. package/dist/commonjs/index.js.map +1 -0
  54. package/dist/commonjs/package.json +1 -0
  55. package/dist/commonjs/theme/assistant-theme.js +105 -0
  56. package/dist/commonjs/theme/assistant-theme.js.map +1 -0
  57. package/dist/commonjs/theme/index.js +19 -0
  58. package/dist/commonjs/theme/index.js.map +1 -0
  59. package/dist/commonjs/types/index.js +2 -0
  60. package/dist/commonjs/types/index.js.map +1 -0
  61. package/dist/commonjs/ui/action-sheet.js +348 -0
  62. package/dist/commonjs/ui/action-sheet.js.map +1 -0
  63. package/dist/commonjs/ui/alert-dialog.js +134 -0
  64. package/dist/commonjs/ui/alert-dialog.js.map +1 -0
  65. package/dist/commonjs/ui/docyrus-brand-mark.js +52 -0
  66. package/dist/commonjs/ui/docyrus-brand-mark.js.map +1 -0
  67. package/dist/commonjs/ui/docyrus-icon.js +298 -0
  68. package/dist/commonjs/ui/docyrus-icon.js.map +1 -0
  69. package/dist/commonjs/ui/index.js +34 -0
  70. package/dist/commonjs/ui/index.js.map +1 -0
  71. package/dist/commonjs/utils/api-client.js +99 -0
  72. package/dist/commonjs/utils/api-client.js.map +1 -0
  73. package/dist/commonjs/utils/default-api-config.js +195 -0
  74. package/dist/commonjs/utils/default-api-config.js.map +1 -0
  75. package/dist/commonjs/utils/index.js +39 -0
  76. package/dist/commonjs/utils/index.js.map +1 -0
  77. package/dist/commonjs/utils/resolve-api-headers.js +16 -0
  78. package/dist/commonjs/utils/resolve-api-headers.js.map +1 -0
  79. package/dist/module/components/agent-selector/agent-selector.js +296 -0
  80. package/dist/module/components/agent-selector/agent-selector.js.map +1 -0
  81. package/dist/module/components/agent-selector/index.js +4 -0
  82. package/dist/module/components/agent-selector/index.js.map +1 -0
  83. package/dist/module/components/assistant-animations/assistant-animations.js +164 -0
  84. package/dist/module/components/assistant-animations/assistant-animations.js.map +1 -0
  85. package/dist/module/components/assistant-animations/index.js +4 -0
  86. package/dist/module/components/assistant-animations/index.js.map +1 -0
  87. package/dist/module/components/assistant-screen/assistant-screen.js +801 -0
  88. package/dist/module/components/assistant-screen/assistant-screen.js.map +1 -0
  89. package/dist/module/components/assistant-screen/index.js +4 -0
  90. package/dist/module/components/assistant-screen/index.js.map +1 -0
  91. package/dist/module/components/index.js +23 -0
  92. package/dist/module/components/index.js.map +1 -0
  93. package/dist/module/components/message-parts/index.js +4 -0
  94. package/dist/module/components/message-parts/index.js.map +1 -0
  95. package/dist/module/components/message-parts/message-parts.js +205 -0
  96. package/dist/module/components/message-parts/message-parts.js.map +1 -0
  97. package/dist/module/components/new-chat/index.js +4 -0
  98. package/dist/module/components/new-chat/index.js.map +1 -0
  99. package/dist/module/components/new-chat/new-chat.js +96 -0
  100. package/dist/module/components/new-chat/new-chat.js.map +1 -0
  101. package/dist/module/components/prompt-input/attachment-picker.js +337 -0
  102. package/dist/module/components/prompt-input/attachment-picker.js.map +1 -0
  103. package/dist/module/components/prompt-input/attachment-preview.js +225 -0
  104. package/dist/module/components/prompt-input/attachment-preview.js.map +1 -0
  105. package/dist/module/components/prompt-input/index.js +15 -0
  106. package/dist/module/components/prompt-input/index.js.map +1 -0
  107. package/dist/module/components/prompt-input/prompt-input.js +284 -0
  108. package/dist/module/components/prompt-input/prompt-input.js.map +1 -0
  109. package/dist/module/components/prompt-input/provider-selector.js +538 -0
  110. package/dist/module/components/prompt-input/provider-selector.js.map +1 -0
  111. package/dist/module/components/prompt-input/reasoning-level-selector.js +346 -0
  112. package/dist/module/components/prompt-input/reasoning-level-selector.js.map +1 -0
  113. package/dist/module/components/prompt-input/voice-recorder.js +256 -0
  114. package/dist/module/components/prompt-input/voice-recorder.js.map +1 -0
  115. package/dist/module/components/sessions-list/index.js +4 -0
  116. package/dist/module/components/sessions-list/index.js.map +1 -0
  117. package/dist/module/components/sessions-list/sessions-list.js +816 -0
  118. package/dist/module/components/sessions-list/sessions-list.js.map +1 -0
  119. package/dist/module/hooks/index.js +18 -0
  120. package/dist/module/hooks/index.js.map +1 -0
  121. package/dist/module/hooks/use-agent-models.js +100 -0
  122. package/dist/module/hooks/use-agent-models.js.map +1 -0
  123. package/dist/module/hooks/use-assistant.js +398 -0
  124. package/dist/module/hooks/use-assistant.js.map +1 -0
  125. package/dist/module/hooks/use-attachment-picker.js +303 -0
  126. package/dist/module/hooks/use-attachment-picker.js.map +1 -0
  127. package/dist/module/hooks/use-voice-recorder.js +214 -0
  128. package/dist/module/hooks/use-voice-recorder.js.map +1 -0
  129. package/dist/module/index.js +59 -0
  130. package/dist/module/index.js.map +1 -0
  131. package/dist/module/package.json +1 -0
  132. package/dist/module/theme/assistant-theme.js +100 -0
  133. package/dist/module/theme/assistant-theme.js.map +1 -0
  134. package/dist/module/theme/index.js +4 -0
  135. package/dist/module/theme/index.js.map +1 -0
  136. package/dist/module/types/index.js +2 -0
  137. package/dist/module/types/index.js.map +1 -0
  138. package/dist/module/ui/action-sheet.js +344 -0
  139. package/dist/module/ui/action-sheet.js.map +1 -0
  140. package/dist/module/ui/alert-dialog.js +130 -0
  141. package/dist/module/ui/alert-dialog.js.map +1 -0
  142. package/dist/module/ui/docyrus-brand-mark.js +48 -0
  143. package/dist/module/ui/docyrus-brand-mark.js.map +1 -0
  144. package/dist/module/ui/docyrus-icon.js +294 -0
  145. package/dist/module/ui/docyrus-icon.js.map +1 -0
  146. package/dist/module/ui/index.js +7 -0
  147. package/dist/module/ui/index.js.map +1 -0
  148. package/dist/module/utils/api-client.js +95 -0
  149. package/dist/module/utils/api-client.js.map +1 -0
  150. package/dist/module/utils/default-api-config.js +190 -0
  151. package/dist/module/utils/default-api-config.js.map +1 -0
  152. package/dist/module/utils/index.js +12 -0
  153. package/dist/module/utils/index.js.map +1 -0
  154. package/dist/module/utils/resolve-api-headers.js +12 -0
  155. package/dist/module/utils/resolve-api-headers.js.map +1 -0
  156. package/dist/typescript/commonjs/eslint.config.d.mts +4 -0
  157. package/dist/typescript/commonjs/eslint.config.d.mts.map +1 -0
  158. package/dist/typescript/commonjs/package.json +1 -0
  159. package/dist/typescript/commonjs/src/components/agent-selector/agent-selector.d.ts +49 -0
  160. package/dist/typescript/commonjs/src/components/agent-selector/agent-selector.d.ts.map +1 -0
  161. package/dist/typescript/commonjs/src/components/agent-selector/index.d.ts +2 -0
  162. package/dist/typescript/commonjs/src/components/agent-selector/index.d.ts.map +1 -0
  163. package/dist/typescript/commonjs/src/components/assistant-animations/assistant-animations.d.ts +8 -0
  164. package/dist/typescript/commonjs/src/components/assistant-animations/assistant-animations.d.ts.map +1 -0
  165. package/dist/typescript/commonjs/src/components/assistant-animations/index.d.ts +2 -0
  166. package/dist/typescript/commonjs/src/components/assistant-animations/index.d.ts.map +1 -0
  167. package/dist/typescript/commonjs/src/components/assistant-screen/assistant-screen.d.ts +122 -0
  168. package/dist/typescript/commonjs/src/components/assistant-screen/assistant-screen.d.ts.map +1 -0
  169. package/dist/typescript/commonjs/src/components/assistant-screen/index.d.ts +2 -0
  170. package/dist/typescript/commonjs/src/components/assistant-screen/index.d.ts.map +1 -0
  171. package/dist/typescript/commonjs/src/components/index.d.ts +11 -0
  172. package/dist/typescript/commonjs/src/components/index.d.ts.map +1 -0
  173. package/dist/typescript/commonjs/src/components/message-parts/index.d.ts +2 -0
  174. package/dist/typescript/commonjs/src/components/message-parts/index.d.ts.map +1 -0
  175. package/dist/typescript/commonjs/src/components/message-parts/message-parts.d.ts +22 -0
  176. package/dist/typescript/commonjs/src/components/message-parts/message-parts.d.ts.map +1 -0
  177. package/dist/typescript/commonjs/src/components/new-chat/index.d.ts +2 -0
  178. package/dist/typescript/commonjs/src/components/new-chat/index.d.ts.map +1 -0
  179. package/dist/typescript/commonjs/src/components/new-chat/new-chat.d.ts +34 -0
  180. package/dist/typescript/commonjs/src/components/new-chat/new-chat.d.ts.map +1 -0
  181. package/dist/typescript/commonjs/src/components/prompt-input/attachment-picker.d.ts +53 -0
  182. package/dist/typescript/commonjs/src/components/prompt-input/attachment-picker.d.ts.map +1 -0
  183. package/dist/typescript/commonjs/src/components/prompt-input/attachment-preview.d.ts +42 -0
  184. package/dist/typescript/commonjs/src/components/prompt-input/attachment-preview.d.ts.map +1 -0
  185. package/dist/typescript/commonjs/src/components/prompt-input/index.d.ts +9 -0
  186. package/dist/typescript/commonjs/src/components/prompt-input/index.d.ts.map +1 -0
  187. package/dist/typescript/commonjs/src/components/prompt-input/prompt-input.d.ts +139 -0
  188. package/dist/typescript/commonjs/src/components/prompt-input/prompt-input.d.ts.map +1 -0
  189. package/dist/typescript/commonjs/src/components/prompt-input/provider-selector.d.ts +11 -0
  190. package/dist/typescript/commonjs/src/components/prompt-input/provider-selector.d.ts.map +1 -0
  191. package/dist/typescript/commonjs/src/components/prompt-input/reasoning-level-selector.d.ts +35 -0
  192. package/dist/typescript/commonjs/src/components/prompt-input/reasoning-level-selector.d.ts.map +1 -0
  193. package/dist/typescript/commonjs/src/components/prompt-input/voice-recorder.d.ts +48 -0
  194. package/dist/typescript/commonjs/src/components/prompt-input/voice-recorder.d.ts.map +1 -0
  195. package/dist/typescript/commonjs/src/components/sessions-list/index.d.ts +2 -0
  196. package/dist/typescript/commonjs/src/components/sessions-list/index.d.ts.map +1 -0
  197. package/dist/typescript/commonjs/src/components/sessions-list/sessions-list.d.ts +59 -0
  198. package/dist/typescript/commonjs/src/components/sessions-list/sessions-list.d.ts.map +1 -0
  199. package/dist/typescript/commonjs/src/hooks/index.d.ts +8 -0
  200. package/dist/typescript/commonjs/src/hooks/index.d.ts.map +1 -0
  201. package/dist/typescript/commonjs/src/hooks/use-agent-models.d.ts +68 -0
  202. package/dist/typescript/commonjs/src/hooks/use-agent-models.d.ts.map +1 -0
  203. package/dist/typescript/commonjs/src/hooks/use-assistant.d.ts +55 -0
  204. package/dist/typescript/commonjs/src/hooks/use-assistant.d.ts.map +1 -0
  205. package/dist/typescript/commonjs/src/hooks/use-attachment-picker.d.ts +99 -0
  206. package/dist/typescript/commonjs/src/hooks/use-attachment-picker.d.ts.map +1 -0
  207. package/dist/typescript/commonjs/src/hooks/use-voice-recorder.d.ts +101 -0
  208. package/dist/typescript/commonjs/src/hooks/use-voice-recorder.d.ts.map +1 -0
  209. package/dist/typescript/commonjs/src/index.d.ts +47 -0
  210. package/dist/typescript/commonjs/src/index.d.ts.map +1 -0
  211. package/dist/typescript/commonjs/src/theme/assistant-theme.d.ts +51 -0
  212. package/dist/typescript/commonjs/src/theme/assistant-theme.d.ts.map +1 -0
  213. package/dist/typescript/commonjs/src/theme/index.d.ts +2 -0
  214. package/dist/typescript/commonjs/src/theme/index.d.ts.map +1 -0
  215. package/dist/typescript/commonjs/src/types/index.d.ts +167 -0
  216. package/dist/typescript/commonjs/src/types/index.d.ts.map +1 -0
  217. package/dist/typescript/commonjs/src/ui/action-sheet.d.ts +29 -0
  218. package/dist/typescript/commonjs/src/ui/action-sheet.d.ts.map +1 -0
  219. package/dist/typescript/commonjs/src/ui/alert-dialog.d.ts +12 -0
  220. package/dist/typescript/commonjs/src/ui/alert-dialog.d.ts.map +1 -0
  221. package/dist/typescript/commonjs/src/ui/docyrus-brand-mark.d.ts +5 -0
  222. package/dist/typescript/commonjs/src/ui/docyrus-brand-mark.d.ts.map +1 -0
  223. package/dist/typescript/commonjs/src/ui/docyrus-icon.d.ts +11 -0
  224. package/dist/typescript/commonjs/src/ui/docyrus-icon.d.ts.map +1 -0
  225. package/dist/typescript/commonjs/src/ui/index.d.ts +5 -0
  226. package/dist/typescript/commonjs/src/ui/index.d.ts.map +1 -0
  227. package/dist/typescript/commonjs/src/utils/api-client.d.ts +35 -0
  228. package/dist/typescript/commonjs/src/utils/api-client.d.ts.map +1 -0
  229. package/dist/typescript/commonjs/src/utils/default-api-config.d.ts +38 -0
  230. package/dist/typescript/commonjs/src/utils/default-api-config.d.ts.map +1 -0
  231. package/dist/typescript/commonjs/src/utils/index.d.ts +9 -0
  232. package/dist/typescript/commonjs/src/utils/index.d.ts.map +1 -0
  233. package/dist/typescript/commonjs/src/utils/resolve-api-headers.d.ts +3 -0
  234. package/dist/typescript/commonjs/src/utils/resolve-api-headers.d.ts.map +1 -0
  235. package/dist/typescript/module/eslint.config.d.mts +4 -0
  236. package/dist/typescript/module/eslint.config.d.mts.map +1 -0
  237. package/dist/typescript/module/package.json +1 -0
  238. package/dist/typescript/module/src/components/agent-selector/agent-selector.d.ts +49 -0
  239. package/dist/typescript/module/src/components/agent-selector/agent-selector.d.ts.map +1 -0
  240. package/dist/typescript/module/src/components/agent-selector/index.d.ts +2 -0
  241. package/dist/typescript/module/src/components/agent-selector/index.d.ts.map +1 -0
  242. package/dist/typescript/module/src/components/assistant-animations/assistant-animations.d.ts +8 -0
  243. package/dist/typescript/module/src/components/assistant-animations/assistant-animations.d.ts.map +1 -0
  244. package/dist/typescript/module/src/components/assistant-animations/index.d.ts +2 -0
  245. package/dist/typescript/module/src/components/assistant-animations/index.d.ts.map +1 -0
  246. package/dist/typescript/module/src/components/assistant-screen/assistant-screen.d.ts +122 -0
  247. package/dist/typescript/module/src/components/assistant-screen/assistant-screen.d.ts.map +1 -0
  248. package/dist/typescript/module/src/components/assistant-screen/index.d.ts +2 -0
  249. package/dist/typescript/module/src/components/assistant-screen/index.d.ts.map +1 -0
  250. package/dist/typescript/module/src/components/index.d.ts +11 -0
  251. package/dist/typescript/module/src/components/index.d.ts.map +1 -0
  252. package/dist/typescript/module/src/components/message-parts/index.d.ts +2 -0
  253. package/dist/typescript/module/src/components/message-parts/index.d.ts.map +1 -0
  254. package/dist/typescript/module/src/components/message-parts/message-parts.d.ts +22 -0
  255. package/dist/typescript/module/src/components/message-parts/message-parts.d.ts.map +1 -0
  256. package/dist/typescript/module/src/components/new-chat/index.d.ts +2 -0
  257. package/dist/typescript/module/src/components/new-chat/index.d.ts.map +1 -0
  258. package/dist/typescript/module/src/components/new-chat/new-chat.d.ts +34 -0
  259. package/dist/typescript/module/src/components/new-chat/new-chat.d.ts.map +1 -0
  260. package/dist/typescript/module/src/components/prompt-input/attachment-picker.d.ts +53 -0
  261. package/dist/typescript/module/src/components/prompt-input/attachment-picker.d.ts.map +1 -0
  262. package/dist/typescript/module/src/components/prompt-input/attachment-preview.d.ts +42 -0
  263. package/dist/typescript/module/src/components/prompt-input/attachment-preview.d.ts.map +1 -0
  264. package/dist/typescript/module/src/components/prompt-input/index.d.ts +9 -0
  265. package/dist/typescript/module/src/components/prompt-input/index.d.ts.map +1 -0
  266. package/dist/typescript/module/src/components/prompt-input/prompt-input.d.ts +139 -0
  267. package/dist/typescript/module/src/components/prompt-input/prompt-input.d.ts.map +1 -0
  268. package/dist/typescript/module/src/components/prompt-input/provider-selector.d.ts +11 -0
  269. package/dist/typescript/module/src/components/prompt-input/provider-selector.d.ts.map +1 -0
  270. package/dist/typescript/module/src/components/prompt-input/reasoning-level-selector.d.ts +35 -0
  271. package/dist/typescript/module/src/components/prompt-input/reasoning-level-selector.d.ts.map +1 -0
  272. package/dist/typescript/module/src/components/prompt-input/voice-recorder.d.ts +48 -0
  273. package/dist/typescript/module/src/components/prompt-input/voice-recorder.d.ts.map +1 -0
  274. package/dist/typescript/module/src/components/sessions-list/index.d.ts +2 -0
  275. package/dist/typescript/module/src/components/sessions-list/index.d.ts.map +1 -0
  276. package/dist/typescript/module/src/components/sessions-list/sessions-list.d.ts +59 -0
  277. package/dist/typescript/module/src/components/sessions-list/sessions-list.d.ts.map +1 -0
  278. package/dist/typescript/module/src/hooks/index.d.ts +8 -0
  279. package/dist/typescript/module/src/hooks/index.d.ts.map +1 -0
  280. package/dist/typescript/module/src/hooks/use-agent-models.d.ts +68 -0
  281. package/dist/typescript/module/src/hooks/use-agent-models.d.ts.map +1 -0
  282. package/dist/typescript/module/src/hooks/use-assistant.d.ts +55 -0
  283. package/dist/typescript/module/src/hooks/use-assistant.d.ts.map +1 -0
  284. package/dist/typescript/module/src/hooks/use-attachment-picker.d.ts +99 -0
  285. package/dist/typescript/module/src/hooks/use-attachment-picker.d.ts.map +1 -0
  286. package/dist/typescript/module/src/hooks/use-voice-recorder.d.ts +101 -0
  287. package/dist/typescript/module/src/hooks/use-voice-recorder.d.ts.map +1 -0
  288. package/dist/typescript/module/src/index.d.ts +47 -0
  289. package/dist/typescript/module/src/index.d.ts.map +1 -0
  290. package/dist/typescript/module/src/theme/assistant-theme.d.ts +51 -0
  291. package/dist/typescript/module/src/theme/assistant-theme.d.ts.map +1 -0
  292. package/dist/typescript/module/src/theme/index.d.ts +2 -0
  293. package/dist/typescript/module/src/theme/index.d.ts.map +1 -0
  294. package/dist/typescript/module/src/types/index.d.ts +167 -0
  295. package/dist/typescript/module/src/types/index.d.ts.map +1 -0
  296. package/dist/typescript/module/src/ui/action-sheet.d.ts +29 -0
  297. package/dist/typescript/module/src/ui/action-sheet.d.ts.map +1 -0
  298. package/dist/typescript/module/src/ui/alert-dialog.d.ts +12 -0
  299. package/dist/typescript/module/src/ui/alert-dialog.d.ts.map +1 -0
  300. package/dist/typescript/module/src/ui/docyrus-brand-mark.d.ts +5 -0
  301. package/dist/typescript/module/src/ui/docyrus-brand-mark.d.ts.map +1 -0
  302. package/dist/typescript/module/src/ui/docyrus-icon.d.ts +11 -0
  303. package/dist/typescript/module/src/ui/docyrus-icon.d.ts.map +1 -0
  304. package/dist/typescript/module/src/ui/index.d.ts +5 -0
  305. package/dist/typescript/module/src/ui/index.d.ts.map +1 -0
  306. package/dist/typescript/module/src/utils/api-client.d.ts +35 -0
  307. package/dist/typescript/module/src/utils/api-client.d.ts.map +1 -0
  308. package/dist/typescript/module/src/utils/default-api-config.d.ts +38 -0
  309. package/dist/typescript/module/src/utils/default-api-config.d.ts.map +1 -0
  310. package/dist/typescript/module/src/utils/index.d.ts +9 -0
  311. package/dist/typescript/module/src/utils/index.d.ts.map +1 -0
  312. package/dist/typescript/module/src/utils/resolve-api-headers.d.ts +3 -0
  313. package/dist/typescript/module/src/utils/resolve-api-headers.d.ts.map +1 -0
  314. package/package.json +176 -0
@@ -0,0 +1,303 @@
1
+ "use strict";
2
+
3
+ import { useState, useCallback } from 'react';
4
+ import * as DocumentPicker from 'expo-document-picker';
5
+ import * as ImagePicker from 'expo-image-picker';
6
+ /**
7
+ * Generate unique ID for attachments
8
+ */
9
+ const generateId = () => `attachment_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
10
+
11
+ /**
12
+ * Get file extension from name or URI
13
+ */
14
+ const getFileExtension = name => {
15
+ const match = name.match(/\.([^.]+)$/);
16
+ return match?.[1]?.toLowerCase() ?? '';
17
+ };
18
+
19
+ /**
20
+ * Determine MIME type from extension
21
+ */
22
+ const getMimeType = (name, providedMime) => {
23
+ if (providedMime && providedMime !== 'application/octet-stream') {
24
+ return providedMime;
25
+ }
26
+ const ext = getFileExtension(name);
27
+ const mimeMap = {
28
+ pdf: 'application/pdf',
29
+ doc: 'application/msword',
30
+ docx: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
31
+ xls: 'application/vnd.ms-excel',
32
+ xlsx: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
33
+ ppt: 'application/vnd.ms-powerpoint',
34
+ pptx: 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
35
+ txt: 'text/plain',
36
+ csv: 'text/csv',
37
+ json: 'application/json',
38
+ jpg: 'image/jpeg',
39
+ jpeg: 'image/jpeg',
40
+ png: 'image/png',
41
+ gif: 'image/gif',
42
+ webp: 'image/webp',
43
+ heic: 'image/heic',
44
+ mp3: 'audio/mpeg',
45
+ wav: 'audio/wav',
46
+ m4a: 'audio/m4a',
47
+ mp4: 'video/mp4',
48
+ mov: 'video/quicktime'
49
+ };
50
+ return mimeMap[ext] || 'application/octet-stream';
51
+ };
52
+
53
+ /**
54
+ * Hook for picking and managing attachments
55
+ *
56
+ * Supports documents via expo-document-picker and images via expo-image-picker.
57
+ * Converts picked files to AIMessageFile format.
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * const {
62
+ * attachments,
63
+ * pickDocuments,
64
+ * pickImages,
65
+ * takePhoto,
66
+ * removeAttachment,
67
+ * clearAttachments
68
+ * } = useAttachmentPicker({
69
+ * maxAttachments: 5,
70
+ * onAttachmentsChange: (files) => console.log('Attachments:', files)
71
+ * });
72
+ * ```
73
+ */
74
+ export function useAttachmentPicker(options = {}) {
75
+ const {
76
+ allowedDocumentTypes = ['*/*'],
77
+ allowedImageTypes = ['images'],
78
+ maxAttachments = 10,
79
+ maxFileSize = 10 * 1024 * 1024,
80
+ // 10MB
81
+ allowMultiple = true,
82
+ onAttachmentsChange,
83
+ onError
84
+ } = options;
85
+ const [attachments, setAttachments] = useState([]);
86
+ const [isLoading, setIsLoading] = useState(false);
87
+ const [isPicking, setIsPicking] = useState(false);
88
+ const [error, setError] = useState(null);
89
+ const updateAttachments = useCallback(newAttachments => {
90
+ setAttachments(newAttachments);
91
+ onAttachmentsChange?.(newAttachments);
92
+ }, [onAttachmentsChange]);
93
+ const validateFile = useCallback(file => {
94
+ if (file.size && file.size > maxFileSize) {
95
+ const err = new Error(`File "${file.name}" exceeds maximum size of ${Math.round(maxFileSize / 1024 / 1024)}MB`);
96
+ setError(err);
97
+ onError?.(err);
98
+ return false;
99
+ }
100
+ return true;
101
+ }, [maxFileSize, onError]);
102
+ const checkAttachmentLimit = useCallback(countToAdd => {
103
+ if (attachments.length + countToAdd > maxAttachments) {
104
+ const err = new Error(`Maximum ${maxAttachments} attachments allowed`);
105
+ setError(err);
106
+ onError?.(err);
107
+ return false;
108
+ }
109
+ return true;
110
+ }, [attachments.length, maxAttachments, onError]);
111
+ const pickDocuments = useCallback(async () => {
112
+ // Prevent multiple concurrent picks
113
+ if (isPicking) {
114
+ return [];
115
+ }
116
+ setError(null);
117
+ setIsLoading(true);
118
+ setIsPicking(true);
119
+ try {
120
+ const result = await DocumentPicker.getDocumentAsync({
121
+ type: allowedDocumentTypes,
122
+ multiple: allowMultiple,
123
+ copyToCacheDirectory: true
124
+ });
125
+ if (result.canceled || !result.assets) {
126
+ return [];
127
+ }
128
+ const availableSlots = maxAttachments - attachments.length;
129
+ const assetsToAdd = result.assets.slice(0, availableSlots);
130
+ if (result.assets.length > availableSlots) {
131
+ const err = new Error(`Only ${availableSlots} more attachment(s) allowed. Some files were not added.`);
132
+ setError(err);
133
+ onError?.(err);
134
+ }
135
+ const newAttachments = [];
136
+ for (const asset of assetsToAdd) {
137
+ if (!validateFile({
138
+ size: asset.size,
139
+ name: asset.name
140
+ })) {
141
+ continue;
142
+ }
143
+ newAttachments.push({
144
+ id: generateId(),
145
+ name: asset.name,
146
+ type: getMimeType(asset.name, asset.mimeType),
147
+ uri: asset.uri,
148
+ size: asset.size
149
+ });
150
+ }
151
+ const updatedAttachments = [...attachments, ...newAttachments];
152
+ updateAttachments(updatedAttachments);
153
+ return newAttachments;
154
+ } catch (err) {
155
+ const pickerError = err instanceof Error ? err : new Error('Failed to pick documents');
156
+ setError(pickerError);
157
+ onError?.(pickerError);
158
+ return [];
159
+ } finally {
160
+ setIsLoading(false);
161
+ setIsPicking(false);
162
+ }
163
+ }, [isPicking, allowedDocumentTypes, allowMultiple, attachments, maxAttachments, validateFile, updateAttachments, onError]);
164
+ const pickImages = useCallback(async () => {
165
+ // Prevent multiple concurrent picks
166
+ if (isPicking) {
167
+ return [];
168
+ }
169
+ setError(null);
170
+ setIsLoading(true);
171
+ setIsPicking(true);
172
+ try {
173
+ // Request permissions
174
+ const permissionResult = await ImagePicker.requestMediaLibraryPermissionsAsync();
175
+ if (!permissionResult.granted) {
176
+ throw new Error('Permission to access media library was denied');
177
+ }
178
+ const result = await ImagePicker.launchImageLibraryAsync({
179
+ mediaTypes: allowedImageTypes,
180
+ allowsMultipleSelection: allowMultiple,
181
+ quality: 0.8
182
+ });
183
+ if (result.canceled || !result.assets) {
184
+ return [];
185
+ }
186
+ const availableSlots = maxAttachments - attachments.length;
187
+ const assetsToAdd = result.assets.slice(0, availableSlots);
188
+ if (result.assets.length > availableSlots) {
189
+ const err = new Error(`Only ${availableSlots} more attachment(s) allowed. Some images were not added.`);
190
+ setError(err);
191
+ onError?.(err);
192
+ }
193
+ const newAttachments = [];
194
+ for (const asset of assetsToAdd) {
195
+ const fileName = asset.fileName || `image_${Date.now()}.${asset.type === 'video' ? 'mp4' : 'jpg'}`;
196
+ if (!validateFile({
197
+ size: asset.fileSize,
198
+ name: fileName
199
+ })) {
200
+ continue;
201
+ }
202
+ newAttachments.push({
203
+ id: generateId(),
204
+ name: fileName,
205
+ type: asset.mimeType || getMimeType(fileName),
206
+ uri: asset.uri,
207
+ size: asset.fileSize
208
+ });
209
+ }
210
+ const updatedAttachments = [...attachments, ...newAttachments];
211
+ updateAttachments(updatedAttachments);
212
+ return newAttachments;
213
+ } catch (err) {
214
+ const pickerError = err instanceof Error ? err : new Error('Failed to pick images');
215
+ setError(pickerError);
216
+ onError?.(pickerError);
217
+ return [];
218
+ } finally {
219
+ setIsLoading(false);
220
+ setIsPicking(false);
221
+ }
222
+ }, [isPicking, allowedImageTypes, allowMultiple, attachments, maxAttachments, validateFile, updateAttachments, onError]);
223
+ const takePhoto = useCallback(async () => {
224
+ // Prevent multiple concurrent picks
225
+ if (isPicking) {
226
+ return null;
227
+ }
228
+ setError(null);
229
+ if (!checkAttachmentLimit(1)) {
230
+ return null;
231
+ }
232
+ setIsLoading(true);
233
+ setIsPicking(true);
234
+ try {
235
+ // Request camera permissions
236
+ const permissionResult = await ImagePicker.requestCameraPermissionsAsync();
237
+ if (!permissionResult.granted) {
238
+ throw new Error('Permission to access camera was denied');
239
+ }
240
+ const result = await ImagePicker.launchCameraAsync({
241
+ mediaTypes: ['images'],
242
+ quality: 0.8
243
+ });
244
+ const asset = result.assets?.[0];
245
+ if (result.canceled || !asset) {
246
+ return null;
247
+ }
248
+ const fileName = asset.fileName || `photo_${Date.now()}.jpg`;
249
+ if (!validateFile({
250
+ size: asset.fileSize,
251
+ name: fileName
252
+ })) {
253
+ return null;
254
+ }
255
+ const newAttachment = {
256
+ id: generateId(),
257
+ name: fileName,
258
+ type: asset.mimeType || 'image/jpeg',
259
+ uri: asset.uri,
260
+ size: asset.fileSize
261
+ };
262
+ const updatedAttachments = [...attachments, newAttachment];
263
+ updateAttachments(updatedAttachments);
264
+ return newAttachment;
265
+ } catch (err) {
266
+ const cameraError = err instanceof Error ? err : new Error('Failed to take photo');
267
+ setError(cameraError);
268
+ onError?.(cameraError);
269
+ return null;
270
+ } finally {
271
+ setIsLoading(false);
272
+ setIsPicking(false);
273
+ }
274
+ }, [isPicking, attachments, checkAttachmentLimit, validateFile, updateAttachments, onError]);
275
+ const addAttachment = useCallback(attachment => {
276
+ if (!checkAttachmentLimit(1)) {
277
+ return;
278
+ }
279
+ const updatedAttachments = [...attachments, attachment];
280
+ updateAttachments(updatedAttachments);
281
+ }, [attachments, checkAttachmentLimit, updateAttachments]);
282
+ const removeAttachment = useCallback(id => {
283
+ const updatedAttachments = attachments.filter(a => a.id !== id);
284
+ updateAttachments(updatedAttachments);
285
+ setError(null);
286
+ }, [attachments, updateAttachments]);
287
+ const clearAttachments = useCallback(() => {
288
+ updateAttachments([]);
289
+ setError(null);
290
+ }, [updateAttachments]);
291
+ return {
292
+ attachments,
293
+ isLoading,
294
+ pickDocuments,
295
+ pickImages,
296
+ takePhoto,
297
+ addAttachment,
298
+ removeAttachment,
299
+ clearAttachments,
300
+ error
301
+ };
302
+ }
303
+ //# sourceMappingURL=use-attachment-picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useCallback","DocumentPicker","ImagePicker","generateId","Date","now","Math","random","toString","substring","getFileExtension","name","match","toLowerCase","getMimeType","providedMime","ext","mimeMap","pdf","doc","docx","xls","xlsx","ppt","pptx","txt","csv","json","jpg","jpeg","png","gif","webp","heic","mp3","wav","m4a","mp4","mov","useAttachmentPicker","options","allowedDocumentTypes","allowedImageTypes","maxAttachments","maxFileSize","allowMultiple","onAttachmentsChange","onError","attachments","setAttachments","isLoading","setIsLoading","isPicking","setIsPicking","error","setError","updateAttachments","newAttachments","validateFile","file","size","err","Error","round","checkAttachmentLimit","countToAdd","length","pickDocuments","result","getDocumentAsync","type","multiple","copyToCacheDirectory","canceled","assets","availableSlots","assetsToAdd","slice","asset","push","id","mimeType","uri","updatedAttachments","pickerError","pickImages","permissionResult","requestMediaLibraryPermissionsAsync","granted","launchImageLibraryAsync","mediaTypes","allowsMultipleSelection","quality","fileName","fileSize","takePhoto","requestCameraPermissionsAsync","launchCameraAsync","newAttachment","cameraError","addAttachment","attachment","removeAttachment","filter","a","clearAttachments"],"sourceRoot":"../../../src","sources":["hooks/use-attachment-picker.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+
3
+ import { useState, useCallback, useRef } from 'react';
4
+ import { useAudioRecorder, AudioModule, setAudioModeAsync, useAudioRecorderState, IOSOutputFormat, AudioQuality } from 'expo-audio';
5
+ import { apiClient } from "../utils/api-client.js";
6
+ import { resolveAPIHeaders } from "../utils/resolve-api-headers.js";
7
+
8
+ /**
9
+ * Custom recording preset optimized for speech transcription
10
+ * Uses WAV format for universal compatibility with transcription APIs
11
+ */
12
+ const TRANSCRIPTION_PRESET = {
13
+ extension: '.wav',
14
+ sampleRate: 16000,
15
+ numberOfChannels: 1,
16
+ bitRate: 128000,
17
+ android: {
18
+ outputFormat: 'default',
19
+ audioEncoder: 'default',
20
+ extension: '.wav'
21
+ },
22
+ ios: {
23
+ outputFormat: IOSOutputFormat.LINEARPCM,
24
+ audioQuality: AudioQuality.HIGH,
25
+ linearPCMBitDepth: 16,
26
+ linearPCMIsBigEndian: false,
27
+ linearPCMIsFloat: false
28
+ },
29
+ web: {
30
+ mimeType: 'audio/wav',
31
+ bitsPerSecond: 128000
32
+ }
33
+ };
34
+ /**
35
+ * Hook for voice recording with optional transcription
36
+ *
37
+ * Uses expo-audio (new API) for recording.
38
+ * Supports optional transcription via external endpoint.
39
+ *
40
+ * @example
41
+ * ```tsx
42
+ * const {
43
+ * isRecording,
44
+ * duration,
45
+ * startRecording,
46
+ * stopAndTranscribe,
47
+ * transcribedText
48
+ * } = useVoiceRecorder({
49
+ * transcribeEndpoint: 'https://api.example.com/transcribe',
50
+ * onTranscription: (text) => console.log('Transcribed:', text)
51
+ * });
52
+ * ```
53
+ */
54
+ export function useVoiceRecorder(options = {}) {
55
+ const {
56
+ transcribeEndpoint,
57
+ transcribeHeaders,
58
+ onRecordingStart,
59
+ onRecordingStop,
60
+ onTranscription,
61
+ onError
62
+ } = options;
63
+ const [status, setStatus] = useState('idle');
64
+ const [recordingUri, setRecordingUri] = useState(null);
65
+ const [transcribedText, setTranscribedText] = useState(null);
66
+ const [isTranscribing, setIsTranscribing] = useState(false);
67
+ const [error, setError] = useState(null);
68
+ const [permissionGranted, setPermissionGranted] = useState(false);
69
+ const audioRecorder = useAudioRecorder(TRANSCRIPTION_PRESET);
70
+ const recorderState = useAudioRecorderState(audioRecorder);
71
+ const startTimeRef = useRef(null);
72
+ const ensureRecordingPermission = useCallback(async () => {
73
+ if (permissionGranted) {
74
+ return true;
75
+ }
76
+ try {
77
+ const result = await AudioModule.requestRecordingPermissionsAsync();
78
+ if (!result.granted) {
79
+ const permissionError = new Error('Recording permission denied');
80
+ setError(permissionError);
81
+ setStatus('error');
82
+ onError?.(permissionError);
83
+ return false;
84
+ }
85
+ setPermissionGranted(true);
86
+ await setAudioModeAsync({
87
+ playsInSilentMode: true,
88
+ allowsRecording: true
89
+ });
90
+ return true;
91
+ } catch (err) {
92
+ const recordError = err instanceof Error ? err : new Error('Failed to request permissions');
93
+ setError(recordError);
94
+ setStatus('error');
95
+ onError?.(recordError);
96
+ return false;
97
+ }
98
+ }, [onError, permissionGranted]);
99
+ const startRecording = useCallback(async () => {
100
+ const hasPermission = await ensureRecordingPermission();
101
+ if (!hasPermission) {
102
+ return;
103
+ }
104
+ try {
105
+ setError(null);
106
+ setTranscribedText(null);
107
+ setRecordingUri(null);
108
+ await audioRecorder.prepareToRecordAsync();
109
+ audioRecorder.record();
110
+ startTimeRef.current = Date.now();
111
+ setStatus('recording');
112
+ onRecordingStart?.();
113
+ } catch (err) {
114
+ const recordError = err instanceof Error ? err : new Error('Failed to start recording');
115
+ setError(recordError);
116
+ setStatus('error');
117
+ onError?.(recordError);
118
+ }
119
+ }, [ensureRecordingPermission, audioRecorder, onRecordingStart, onError]);
120
+ const stopRecording = useCallback(async () => {
121
+ try {
122
+ await audioRecorder.stop();
123
+ const {
124
+ uri
125
+ } = audioRecorder;
126
+ if (uri) {
127
+ setRecordingUri(uri);
128
+ setStatus('stopped');
129
+ onRecordingStop?.(uri);
130
+ return uri;
131
+ }
132
+ return null;
133
+ } catch (err) {
134
+ const recordError = err instanceof Error ? err : new Error('Failed to stop recording');
135
+ setError(recordError);
136
+ setStatus('error');
137
+ onError?.(recordError);
138
+ return null;
139
+ }
140
+ }, [audioRecorder, onRecordingStop, onError]);
141
+ const transcribe = useCallback(async uri => {
142
+ if (!transcribeEndpoint) {
143
+ const err = new Error('Transcription endpoint not configured');
144
+ setError(err);
145
+ onError?.(err);
146
+ return null;
147
+ }
148
+ setIsTranscribing(true);
149
+ try {
150
+ /*
151
+ * Recording is already in WAV format (LINEARPCM)
152
+ * WAV has universal MIME type recognition: audio/wav
153
+ */
154
+ const formData = new FormData();
155
+ formData.append('file', {
156
+ uri,
157
+ type: 'audio/wav',
158
+ name: 'recording.wav'
159
+ });
160
+ const result = await apiClient(transcribeEndpoint, {
161
+ method: 'POST',
162
+ headers: await resolveAPIHeaders(transcribeHeaders),
163
+ body: formData,
164
+ isFormData: true
165
+ });
166
+
167
+ // API returns: { success: true, data: { transcription: { text: "..." } } }
168
+ const text = result.data?.transcription?.text || result.data?.text || result.text || result.transcription?.text || result.transcription || '';
169
+ setTranscribedText(text);
170
+ onTranscription?.(text);
171
+ return text;
172
+ } catch (err) {
173
+ const transcribeError = err instanceof Error ? err : new Error('Transcription failed');
174
+ setError(transcribeError);
175
+ onError?.(transcribeError);
176
+ return null;
177
+ } finally {
178
+ setIsTranscribing(false);
179
+ }
180
+ }, [transcribeEndpoint, transcribeHeaders, onTranscription, onError]);
181
+ const stopAndTranscribe = useCallback(async () => {
182
+ const uri = await stopRecording();
183
+ if (uri && transcribeEndpoint) {
184
+ return transcribe(uri);
185
+ }
186
+ return null;
187
+ }, [stopRecording, transcribe, transcribeEndpoint]);
188
+ const reset = useCallback(() => {
189
+ setStatus('idle');
190
+ setRecordingUri(null);
191
+ setTranscribedText(null);
192
+ setIsTranscribing(false);
193
+ setError(null);
194
+ startTimeRef.current = null;
195
+ }, []);
196
+
197
+ // Calculate duration from recorder state
198
+ const duration = recorderState.isRecording ? Math.floor((Date.now() - (startTimeRef.current || Date.now())) / 1000) : 0;
199
+ return {
200
+ status,
201
+ isRecording: recorderState.isRecording,
202
+ duration,
203
+ recordingUri,
204
+ transcribedText,
205
+ isTranscribing,
206
+ startRecording,
207
+ stopRecording,
208
+ stopAndTranscribe,
209
+ transcribe,
210
+ reset,
211
+ error
212
+ };
213
+ }
214
+ //# sourceMappingURL=use-voice-recorder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","useCallback","useRef","useAudioRecorder","AudioModule","setAudioModeAsync","useAudioRecorderState","IOSOutputFormat","AudioQuality","apiClient","resolveAPIHeaders","TRANSCRIPTION_PRESET","extension","sampleRate","numberOfChannels","bitRate","android","outputFormat","audioEncoder","ios","LINEARPCM","audioQuality","HIGH","linearPCMBitDepth","linearPCMIsBigEndian","linearPCMIsFloat","web","mimeType","bitsPerSecond","useVoiceRecorder","options","transcribeEndpoint","transcribeHeaders","onRecordingStart","onRecordingStop","onTranscription","onError","status","setStatus","recordingUri","setRecordingUri","transcribedText","setTranscribedText","isTranscribing","setIsTranscribing","error","setError","permissionGranted","setPermissionGranted","audioRecorder","recorderState","startTimeRef","ensureRecordingPermission","result","requestRecordingPermissionsAsync","granted","permissionError","Error","playsInSilentMode","allowsRecording","err","recordError","startRecording","hasPermission","prepareToRecordAsync","record","current","Date","now","stopRecording","stop","uri","transcribe","formData","FormData","append","type","name","method","headers","body","isFormData","text","data","transcription","transcribeError","stopAndTranscribe","reset","duration","isRecording","Math","floor"],"sourceRoot":"../../../src","sources":["hooks/use-voice-recorder.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * @docyrus/rn-assistant - AI Assistant System for React Native
5
+ *
6
+ * Complete AI assistant system with Vercel AI SDK integration:
7
+ * - Chat interface with streaming responses
8
+ * - Agent/Model selection
9
+ * - Session management
10
+ * - Voice recording & transcription
11
+ * - File attachments (documents, images)
12
+ * - Quick actions and prompts
13
+ *
14
+ * **Requirements:**
15
+ * - `expo-constants` >= 18.0.0 (for AI SDK integration)
16
+ * - `@ai-sdk/react` and `ai` (bundled)
17
+ * - `expo/fetch` (for network requests)
18
+ * - internal theme and UI primitives are bundled locally
19
+ *
20
+ * @module @docyrus/rn-assistant
21
+ *
22
+ * @example
23
+ * ```tsx
24
+ * import { DocyrusRNAssistant, createDocyrusRNAssistantConfig } from '@docyrus/rn-assistant';
25
+ *
26
+ * function App() {
27
+ * const apiConfig = createDocyrusRNAssistantConfig({
28
+ * baseUrl: 'https://api.docyrus.com',
29
+ * token: userToken
30
+ * });
31
+ *
32
+ * return (
33
+ * <DocyrusRNAssistant
34
+ * apiConfig={apiConfig}
35
+ * agentId="agent-123"
36
+ * credentials={{ token: userToken }}
37
+ * />
38
+ * );
39
+ * }
40
+ * ```
41
+ */
42
+
43
+ // Components
44
+ export * from "./components/index.js";
45
+ export { DocyrusRNAssistant, DocyrusRNAssistantEmbedded, DocyrusRNAssistantModal, DocyrusRNAssistantSheet } from "./components/assistant-screen/index.js";
46
+
47
+ // Hooks
48
+ export * from "./hooks/index.js";
49
+
50
+ // Theme
51
+ export * from "./theme/index.js";
52
+
53
+ // Utils
54
+ export * from "./utils/index.js";
55
+ export { createDocyrusAPIConfig, createDocyrusRNAssistantConfig } from "./utils/default-api-config.js";
56
+
57
+ // Types
58
+ export * from "./types/index.js";
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DocyrusRNAssistant","DocyrusRNAssistantEmbedded","DocyrusRNAssistantModal","DocyrusRNAssistantSheet","createDocyrusAPIConfig","createDocyrusRNAssistantConfig"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,uBAAc;AAC5B,SACEA,kBAAkB,EAClBC,0BAA0B,EAC1BC,uBAAuB,EACvBC,uBAAuB,QAElB,wCAA+B;;AAEtC;AACA,cAAc,kBAAS;;AAEvB;AACA,cAAc,kBAAS;;AAEvB;AACA,cAAc,kBAAS;AACvB,SACEC,sBAAsB,EACtBC,8BAA8B,QACzB,+BAA4B;;AAEnC;AACA,cAAc,kBAAS","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}