@copilotkit/react-textarea 1.1.3-feat-runtime-remote-actions.2 → 1.2.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 (339) hide show
  1. package/CHANGELOG.md +21 -19
  2. package/dist/components/base-copilot-textarea/base-copilot-textarea.d.mts +43 -0
  3. package/dist/components/base-copilot-textarea/base-copilot-textarea.d.ts +1 -1
  4. package/dist/components/base-copilot-textarea/base-copilot-textarea.js +49 -114
  5. package/dist/components/base-copilot-textarea/base-copilot-textarea.js.map +1 -1
  6. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs +1687 -36
  7. package/dist/components/base-copilot-textarea/base-copilot-textarea.mjs.map +1 -1
  8. package/dist/components/base-copilot-textarea/render-element.d.mts +6 -0
  9. package/dist/components/base-copilot-textarea/render-element.d.ts +1 -1
  10. package/dist/components/base-copilot-textarea/render-element.mjs +48 -4
  11. package/dist/components/base-copilot-textarea/render-element.mjs.map +1 -1
  12. package/dist/components/base-copilot-textarea/render-placeholder.d.mts +6 -0
  13. package/dist/components/base-copilot-textarea/render-placeholder.d.ts +1 -1
  14. package/dist/components/base-copilot-textarea/render-placeholder.mjs +46 -4
  15. package/dist/components/base-copilot-textarea/render-placeholder.mjs.map +1 -1
  16. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.d.mts +8 -0
  17. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js +2 -4
  18. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.js.map +1 -1
  19. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs +81 -5
  20. package/dist/components/base-copilot-textarea/track-cursor-moved-since-last-text-change.mjs.map +1 -1
  21. package/dist/components/base-copilot-textarea/use-add-branding-css.d.mts +3 -0
  22. package/dist/components/base-copilot-textarea/use-add-branding-css.js.map +1 -1
  23. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs +54 -4
  24. package/dist/components/base-copilot-textarea/use-add-branding-css.mjs.map +1 -1
  25. package/dist/components/copilot-textarea/copilot-textarea.d.mts +165 -0
  26. package/dist/components/copilot-textarea/copilot-textarea.d.ts +2 -8
  27. package/dist/components/copilot-textarea/copilot-textarea.js +55 -119
  28. package/dist/components/copilot-textarea/copilot-textarea.js.map +1 -1
  29. package/dist/components/copilot-textarea/copilot-textarea.mjs +2211 -44
  30. package/dist/components/copilot-textarea/copilot-textarea.mjs.map +1 -1
  31. package/dist/components/hovering-toolbar/hovering-editor-provider.d.mts +18 -0
  32. package/dist/components/hovering-toolbar/hovering-editor-provider.d.ts +1 -1
  33. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs +13 -5
  34. package/dist/components/hovering-toolbar/hovering-editor-provider.mjs.map +1 -1
  35. package/dist/components/hovering-toolbar/hovering-toolbar-components.d.mts +17 -0
  36. package/dist/components/hovering-toolbar/hovering-toolbar-components.d.ts +1 -2
  37. package/dist/components/hovering-toolbar/hovering-toolbar-components.js +0 -21
  38. package/dist/components/hovering-toolbar/hovering-toolbar-components.js.map +1 -1
  39. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs +111 -9
  40. package/dist/components/hovering-toolbar/hovering-toolbar-components.mjs.map +1 -1
  41. package/dist/components/hovering-toolbar/hovering-toolbar.d.mts +12 -0
  42. package/dist/components/hovering-toolbar/hovering-toolbar.d.ts +1 -1
  43. package/dist/components/hovering-toolbar/hovering-toolbar.js +31 -94
  44. package/dist/components/hovering-toolbar/hovering-toolbar.js.map +1 -1
  45. package/dist/components/hovering-toolbar/hovering-toolbar.mjs +808 -19
  46. package/dist/components/hovering-toolbar/hovering-toolbar.mjs.map +1 -1
  47. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.d.mts +16 -0
  48. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.d.ts +1 -1
  49. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js +21 -65
  50. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.js.map +1 -1
  51. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs +520 -14
  52. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.mjs.map +1 -1
  53. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.d.mts +14 -0
  54. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.d.ts +1 -1
  55. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js +24 -68
  56. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.js.map +1 -1
  57. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs +543 -15
  58. package/dist/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box.mjs.map +1 -1
  59. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.d.mts +4 -0
  60. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js +24 -68
  61. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.js.map +1 -1
  62. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs +543 -16
  63. package/dist/components/hovering-toolbar/text-insertion-prompt-box/index.mjs.map +1 -1
  64. package/dist/components/index.d.mts +15 -0
  65. package/dist/components/index.js +55 -119
  66. package/dist/components/index.js.map +1 -1
  67. package/dist/components/index.mjs +2210 -46
  68. package/dist/components/index.mjs.map +1 -1
  69. package/dist/components/manual-ui/chip-with-icon.d.mts +10 -0
  70. package/dist/components/manual-ui/chip-with-icon.d.ts +1 -1
  71. package/dist/components/manual-ui/chip-with-icon.mjs +0 -2
  72. package/dist/components/manual-ui/chip-with-icon.mjs.map +1 -1
  73. package/dist/components/source-search-box/source-search-box.d.mts +16 -0
  74. package/dist/components/source-search-box/source-search-box.d.ts +1 -1
  75. package/dist/components/source-search-box/source-search-box.js +2 -4
  76. package/dist/components/source-search-box/source-search-box.js.map +1 -1
  77. package/dist/components/source-search-box/source-search-box.mjs +200 -8
  78. package/dist/components/source-search-box/source-search-box.mjs.map +1 -1
  79. package/dist/components/ui/button.d.mts +14 -0
  80. package/dist/components/ui/button.d.ts +1 -1
  81. package/dist/components/ui/button.mjs +76 -6
  82. package/dist/components/ui/button.mjs.map +1 -1
  83. package/dist/components/ui/command.d.mts +53 -0
  84. package/dist/components/ui/command.mjs +233 -14
  85. package/dist/components/ui/command.mjs.map +1 -1
  86. package/dist/components/ui/dialog.d.mts +19 -0
  87. package/dist/components/ui/dialog.mjs +135 -11
  88. package/dist/components/ui/dialog.mjs.map +1 -1
  89. package/dist/components/ui/label.d.mts +8 -0
  90. package/dist/components/ui/label.mjs +51 -5
  91. package/dist/components/ui/label.mjs.map +1 -1
  92. package/dist/context/index.d.mts +2 -0
  93. package/dist/context/index.d.ts +1 -1
  94. package/dist/context/index.mjs +0 -1
  95. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.d.mts +15 -0
  96. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.d.ts +1 -1
  97. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.js.map +1 -1
  98. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs +152 -7
  99. package/dist/hooks/base-copilot-textarea-implementation/use-autosuggestions.mjs.map +1 -1
  100. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.d.mts +8 -0
  101. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs +165 -5
  102. package/dist/hooks/base-copilot-textarea-implementation/use-copilot-textarea-editor.mjs.map +1 -1
  103. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.d.mts +7 -0
  104. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.js.map +1 -1
  105. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs +141 -6
  106. package/dist/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.mjs.map +1 -1
  107. package/dist/hooks/index.d.mts +2 -0
  108. package/dist/hooks/index.d.ts +1 -1
  109. package/dist/hooks/index.mjs +0 -1
  110. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.d.mts +22 -0
  111. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js +2 -1
  112. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.js.map +1 -1
  113. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs +139 -4
  114. package/dist/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.mjs.map +1 -1
  115. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.d.mts +23 -0
  116. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js +2 -2
  117. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.js.map +1 -1
  118. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs +220 -4
  119. package/dist/hooks/make-autosuggestions-function/use-make-standard-insertion-function.mjs.map +1 -1
  120. package/dist/hooks/misc/use-autosize-textarea.d.mts +5 -0
  121. package/dist/hooks/misc/use-autosize-textarea.mjs +12 -4
  122. package/dist/hooks/misc/use-autosize-textarea.mjs.map +1 -1
  123. package/dist/index.css +1 -644
  124. package/dist/index.d.mts +15 -0
  125. package/dist/index.js +62 -119
  126. package/dist/index.js.map +1 -1
  127. package/dist/index.mjs +2217 -54
  128. package/dist/index.mjs.map +1 -1
  129. package/dist/lib/debouncer.d.mts +11 -0
  130. package/dist/lib/debouncer.d.ts +1 -1
  131. package/dist/lib/debouncer.js.map +1 -1
  132. package/dist/lib/debouncer.mjs +48 -4
  133. package/dist/lib/debouncer.mjs.map +1 -1
  134. package/dist/lib/editor-to-text.d.mts +7 -0
  135. package/dist/lib/editor-to-text.mjs +40 -4
  136. package/dist/lib/editor-to-text.mjs.map +1 -1
  137. package/dist/lib/get-text-around-cursor.d.mts +15 -0
  138. package/dist/lib/get-text-around-cursor.d.ts +1 -1
  139. package/dist/lib/get-text-around-cursor.mjs +96 -7
  140. package/dist/lib/get-text-around-cursor.mjs.map +1 -1
  141. package/dist/lib/retry.d.mts +3 -0
  142. package/dist/lib/retry.mjs +14 -4
  143. package/dist/lib/retry.mjs.map +1 -1
  144. package/dist/lib/slatejs-edits/add-autocompletions.d.mts +8 -0
  145. package/dist/lib/slatejs-edits/add-autocompletions.mjs +22 -4
  146. package/dist/lib/slatejs-edits/add-autocompletions.mjs.map +1 -1
  147. package/dist/lib/slatejs-edits/clear-autocompletions.d.mts +8 -0
  148. package/dist/lib/slatejs-edits/clear-autocompletions.js.map +1 -1
  149. package/dist/lib/slatejs-edits/clear-autocompletions.mjs +17 -4
  150. package/dist/lib/slatejs-edits/clear-autocompletions.mjs.map +1 -1
  151. package/dist/lib/slatejs-edits/replace-text.d.mts +5 -0
  152. package/dist/lib/slatejs-edits/replace-text.mjs +24 -4
  153. package/dist/lib/slatejs-edits/replace-text.mjs.map +1 -1
  154. package/dist/lib/slatejs-edits/with-partial-history.d.mts +8 -0
  155. package/dist/lib/slatejs-edits/with-partial-history.d.ts +1 -1
  156. package/dist/lib/slatejs-edits/with-partial-history.mjs +102 -5
  157. package/dist/lib/slatejs-edits/with-partial-history.mjs.map +1 -1
  158. package/dist/lib/stream-promise-flatten.d.mts +12 -0
  159. package/dist/lib/stream-promise-flatten.js.map +1 -1
  160. package/dist/lib/stream-promise-flatten.mjs +44 -4
  161. package/dist/lib/stream-promise-flatten.mjs.map +1 -1
  162. package/dist/lib/utils.d.mts +9 -0
  163. package/dist/lib/utils.mjs +58 -8
  164. package/dist/lib/utils.mjs.map +1 -1
  165. package/dist/lib/utils.test.d.mts +2 -0
  166. package/dist/lib/utils.test.d.ts +1 -1
  167. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.d.mts +23 -0
  168. package/dist/types/autosuggestions-config/autosuggestions-config-user-specified.d.ts +1 -1
  169. package/dist/types/autosuggestions-config/autosuggestions-config.d.mts +20 -0
  170. package/dist/types/autosuggestions-config/autosuggestions-config.d.ts +1 -1
  171. package/dist/types/autosuggestions-config/autosuggestions-config.js.map +1 -1
  172. package/dist/types/autosuggestions-config/autosuggestions-config.mjs +258 -9
  173. package/dist/types/autosuggestions-config/autosuggestions-config.mjs.map +1 -1
  174. package/dist/types/autosuggestions-config/editing-api-config.d.mts +15 -0
  175. package/dist/types/autosuggestions-config/editing-api-config.d.ts +1 -1
  176. package/dist/types/autosuggestions-config/editing-api-config.js.map +1 -1
  177. package/dist/types/autosuggestions-config/editing-api-config.mjs +75 -6
  178. package/dist/types/autosuggestions-config/editing-api-config.mjs.map +1 -1
  179. package/dist/types/autosuggestions-config/index.d.mts +10 -0
  180. package/dist/types/autosuggestions-config/index.js.map +1 -1
  181. package/dist/types/autosuggestions-config/index.mjs +258 -10
  182. package/dist/types/autosuggestions-config/index.mjs.map +1 -1
  183. package/dist/types/autosuggestions-config/insertions-api-config.d.mts +15 -0
  184. package/dist/types/autosuggestions-config/insertions-api-config.d.ts +1 -1
  185. package/dist/types/autosuggestions-config/insertions-api-config.js.map +1 -1
  186. package/dist/types/autosuggestions-config/insertions-api-config.mjs +68 -6
  187. package/dist/types/autosuggestions-config/insertions-api-config.mjs.map +1 -1
  188. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.d.mts +3 -0
  189. package/dist/types/autosuggestions-config/subtypes/make-system-prompt.d.ts +1 -1
  190. package/dist/types/autosuggestions-config/suggestions-api-config.d.mts +14 -0
  191. package/dist/types/autosuggestions-config/suggestions-api-config.d.ts +1 -1
  192. package/dist/types/autosuggestions-config/suggestions-api-config.js.map +1 -1
  193. package/dist/types/autosuggestions-config/suggestions-api-config.mjs +56 -6
  194. package/dist/types/autosuggestions-config/suggestions-api-config.mjs.map +1 -1
  195. package/dist/types/base/autosuggestion-state.d.mts +8 -0
  196. package/dist/types/base/autosuggestion-state.d.ts +1 -1
  197. package/dist/types/base/autosuggestions-bare-function.d.mts +19 -0
  198. package/dist/types/base/autosuggestions-bare-function.d.ts +1 -1
  199. package/dist/types/base/base-autosuggestions-config.d.mts +83 -0
  200. package/dist/types/base/base-autosuggestions-config.d.ts +1 -1
  201. package/dist/types/base/base-autosuggestions-config.mjs +25 -4
  202. package/dist/types/base/base-autosuggestions-config.mjs.map +1 -1
  203. package/dist/types/base/base-copilot-textarea-props.d.mts +5 -0
  204. package/dist/types/base/custom-editor.d.mts +29 -0
  205. package/dist/types/base/custom-editor.d.ts +1 -1
  206. package/dist/types/base/editor-autocomplete-state.d.mts +10 -0
  207. package/dist/types/base/editor-autocomplete-state.d.ts +1 -1
  208. package/dist/types/base/editor-autocomplete-state.mjs +9 -5
  209. package/dist/types/base/editor-autocomplete-state.mjs.map +1 -1
  210. package/dist/types/base/index.d.mts +54 -0
  211. package/dist/types/base/index.d.ts +1 -1
  212. package/dist/types/base/index.mjs +25 -5
  213. package/dist/types/base/index.mjs.map +1 -1
  214. package/dist/types/html-copilot-textarea-element.d.mts +7 -0
  215. package/dist/types/html-copilot-textarea-element.d.ts +1 -1
  216. package/dist/types/html-copilot-textarea-element.mjs +0 -1
  217. package/dist/types/index.d.mts +13 -0
  218. package/dist/types/index.js.map +1 -1
  219. package/dist/types/index.mjs +258 -14
  220. package/dist/types/index.mjs.map +1 -1
  221. package/package.json +17 -11
  222. package/src/components/base-copilot-textarea/base-copilot-textarea.tsx +0 -1
  223. package/src/components/copilot-textarea/copilot-textarea.tsx +1 -7
  224. package/src/components/hovering-toolbar/hovering-toolbar-components.tsx +0 -17
  225. package/src/components/hovering-toolbar/text-insertion-prompt-box/hovering-insertion-prompt-box-core.tsx +4 -7
  226. package/src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx +2 -2
  227. package/src/hooks/make-autosuggestions-function/use-make-standard-insertion-function.tsx +2 -3
  228. package/src/styles.css +9 -2
  229. package/tsup.config.ts +63 -15
  230. package/dist/chunk-224UKA7C.mjs +0 -38
  231. package/dist/chunk-224UKA7C.mjs.map +0 -1
  232. package/dist/chunk-23Q6A46J.mjs +0 -103
  233. package/dist/chunk-23Q6A46J.mjs.map +0 -1
  234. package/dist/chunk-2C7O2EVM.mjs +0 -27
  235. package/dist/chunk-2C7O2EVM.mjs.map +0 -1
  236. package/dist/chunk-2QDCE7PD.mjs +0 -32
  237. package/dist/chunk-2QDCE7PD.mjs.map +0 -1
  238. package/dist/chunk-2XDYLKPH.mjs +0 -181
  239. package/dist/chunk-2XDYLKPH.mjs.map +0 -1
  240. package/dist/chunk-3PQ7GSFE.mjs +0 -17
  241. package/dist/chunk-3PQ7GSFE.mjs.map +0 -1
  242. package/dist/chunk-4AMCUMC7.mjs +0 -124
  243. package/dist/chunk-4AMCUMC7.mjs.map +0 -1
  244. package/dist/chunk-4CVSOOJY.mjs +0 -30
  245. package/dist/chunk-4CVSOOJY.mjs.map +0 -1
  246. package/dist/chunk-4NHVQZ67.mjs +0 -108
  247. package/dist/chunk-4NHVQZ67.mjs.map +0 -1
  248. package/dist/chunk-4PDYALMP.mjs +0 -52
  249. package/dist/chunk-4PDYALMP.mjs.map +0 -1
  250. package/dist/chunk-5UNJXFUO.mjs +0 -29
  251. package/dist/chunk-5UNJXFUO.mjs.map +0 -1
  252. package/dist/chunk-7LSRNPNI.mjs +0 -59
  253. package/dist/chunk-7LSRNPNI.mjs.map +0 -1
  254. package/dist/chunk-AJ5OMEXM.mjs +0 -13
  255. package/dist/chunk-AJ5OMEXM.mjs.map +0 -1
  256. package/dist/chunk-CF5GISTC.mjs +0 -113
  257. package/dist/chunk-CF5GISTC.mjs.map +0 -1
  258. package/dist/chunk-D2SUDM2O.mjs +0 -99
  259. package/dist/chunk-D2SUDM2O.mjs.map +0 -1
  260. package/dist/chunk-D47EKHIF.mjs +0 -26
  261. package/dist/chunk-D47EKHIF.mjs.map +0 -1
  262. package/dist/chunk-DE5K76I2.mjs +0 -1
  263. package/dist/chunk-DE5K76I2.mjs.map +0 -1
  264. package/dist/chunk-DFTV4TST.mjs +0 -36
  265. package/dist/chunk-DFTV4TST.mjs.map +0 -1
  266. package/dist/chunk-DRV2FOHZ.mjs +0 -70
  267. package/dist/chunk-DRV2FOHZ.mjs.map +0 -1
  268. package/dist/chunk-ECR45NSD.mjs +0 -104
  269. package/dist/chunk-ECR45NSD.mjs.map +0 -1
  270. package/dist/chunk-EJGGLWWR.mjs +0 -82
  271. package/dist/chunk-EJGGLWWR.mjs.map +0 -1
  272. package/dist/chunk-GQN2HYFJ.mjs +0 -22
  273. package/dist/chunk-GQN2HYFJ.mjs.map +0 -1
  274. package/dist/chunk-H4VKQGVU.mjs +0 -1
  275. package/dist/chunk-H4VKQGVU.mjs.map +0 -1
  276. package/dist/chunk-HL7EF7KA.mjs +0 -32
  277. package/dist/chunk-HL7EF7KA.mjs.map +0 -1
  278. package/dist/chunk-I3SPIGAI.mjs +0 -31
  279. package/dist/chunk-I3SPIGAI.mjs.map +0 -1
  280. package/dist/chunk-I72DKFHD.mjs +0 -114
  281. package/dist/chunk-I72DKFHD.mjs.map +0 -1
  282. package/dist/chunk-IU3WTXLQ.mjs +0 -1
  283. package/dist/chunk-IU3WTXLQ.mjs.map +0 -1
  284. package/dist/chunk-J62KUPFZ.mjs +0 -264
  285. package/dist/chunk-J62KUPFZ.mjs.map +0 -1
  286. package/dist/chunk-KMVGEY7Q.mjs +0 -51
  287. package/dist/chunk-KMVGEY7Q.mjs.map +0 -1
  288. package/dist/chunk-KNQIEOFP.mjs +0 -19
  289. package/dist/chunk-KNQIEOFP.mjs.map +0 -1
  290. package/dist/chunk-L7VVZH4Q.mjs +0 -1
  291. package/dist/chunk-L7VVZH4Q.mjs.map +0 -1
  292. package/dist/chunk-LQ2OWQU7.mjs +0 -49
  293. package/dist/chunk-LQ2OWQU7.mjs.map +0 -1
  294. package/dist/chunk-LYB4B6MK.mjs +0 -19
  295. package/dist/chunk-LYB4B6MK.mjs.map +0 -1
  296. package/dist/chunk-MCNXIA4Q.mjs +0 -75
  297. package/dist/chunk-MCNXIA4Q.mjs.map +0 -1
  298. package/dist/chunk-MMVDU6DF.mjs +0 -1
  299. package/dist/chunk-MMVDU6DF.mjs.map +0 -1
  300. package/dist/chunk-MRXNTQOX.mjs +0 -59
  301. package/dist/chunk-MRXNTQOX.mjs.map +0 -1
  302. package/dist/chunk-OFPAO25A.mjs +0 -60
  303. package/dist/chunk-OFPAO25A.mjs.map +0 -1
  304. package/dist/chunk-QJNFNPWH.mjs +0 -85
  305. package/dist/chunk-QJNFNPWH.mjs.map +0 -1
  306. package/dist/chunk-RUV6NBIF.mjs +0 -1
  307. package/dist/chunk-RUV6NBIF.mjs.map +0 -1
  308. package/dist/chunk-SDHH6DI6.mjs +0 -63
  309. package/dist/chunk-SDHH6DI6.mjs.map +0 -1
  310. package/dist/chunk-T6MTDQZ7.mjs +0 -45
  311. package/dist/chunk-T6MTDQZ7.mjs.map +0 -1
  312. package/dist/chunk-UGEKMSRR.mjs +0 -225
  313. package/dist/chunk-UGEKMSRR.mjs.map +0 -1
  314. package/dist/chunk-VSVQZUPW.mjs +0 -124
  315. package/dist/chunk-VSVQZUPW.mjs.map +0 -1
  316. package/dist/chunk-WADHCMPK.mjs +0 -1
  317. package/dist/chunk-WADHCMPK.mjs.map +0 -1
  318. package/dist/chunk-WGWQRALG.mjs +0 -83
  319. package/dist/chunk-WGWQRALG.mjs.map +0 -1
  320. package/dist/chunk-WJHSY5T6.mjs +0 -1
  321. package/dist/chunk-WJHSY5T6.mjs.map +0 -1
  322. package/dist/chunk-XW3ICO4S.mjs +0 -25
  323. package/dist/chunk-XW3ICO4S.mjs.map +0 -1
  324. package/dist/chunk-YLFAIYRY.mjs +0 -50
  325. package/dist/chunk-YLFAIYRY.mjs.map +0 -1
  326. package/dist/components/base-copilot-textarea/base-copilot-textarea.css +0 -9
  327. package/dist/components/base-copilot-textarea/base-copilot-textarea.css.map +0 -1
  328. package/dist/components/copilot-textarea/copilot-textarea.css +0 -9
  329. package/dist/components/copilot-textarea/copilot-textarea.css.map +0 -1
  330. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.d.ts +0 -16
  331. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js +0 -133
  332. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.js.map +0 -1
  333. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs +0 -12
  334. package/dist/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.mjs.map +0 -1
  335. package/dist/components/index.css +0 -9
  336. package/dist/components/index.css.map +0 -1
  337. package/dist/index.css.map +0 -1
  338. package/src/components/base-copilot-textarea/base-copilot-textarea.css +0 -9
  339. package/src/components/hovering-toolbar/text-insertion-prompt-box/included-files-preview.tsx +0 -55
@@ -1,9 +1,144 @@
1
- import {
2
- usePopulateCopilotTextareaRef
3
- } from "../../chunk-QJNFNPWH.mjs";
4
- import "../../chunk-5UNJXFUO.mjs";
5
- import "../../chunk-ECR45NSD.mjs";
6
- import "../../chunk-MRXNTQOX.mjs";
1
+ // src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts
2
+ import React from "react";
3
+ import { ReactEditor } from "slate-react";
4
+
5
+ // src/lib/get-text-around-cursor.ts
6
+ import { Editor, Path, Range, Text, Element, Point } from "slate";
7
+ function getFullEditorTextWithNewlines(editor) {
8
+ const fullDocumentRange = {
9
+ anchor: Editor.start(editor, []),
10
+ focus: Editor.end(editor, [])
11
+ };
12
+ return extractTextWithNewlines(editor, fullDocumentRange);
13
+ }
14
+ function extractTextWithNewlines(editor, range) {
15
+ const voids = false;
16
+ const [start, end] = Range.edges(range);
17
+ let text = "";
18
+ let lastBlock = null;
19
+ for (const [node, path] of Editor.nodes(editor, {
20
+ at: range,
21
+ match: Text.isText,
22
+ voids
23
+ })) {
24
+ let t = node.text;
25
+ const [block] = Editor.above(editor, {
26
+ at: path,
27
+ match: (n) => Element.isElement(n) && n.type === "paragraph"
28
+ }) || [null];
29
+ if (lastBlock !== block && block) {
30
+ if (lastBlock) {
31
+ text += "\n";
32
+ }
33
+ lastBlock = block;
34
+ }
35
+ if (Path.equals(path, end.path)) {
36
+ t = t.slice(0, end.offset);
37
+ }
38
+ if (Path.equals(path, start.path)) {
39
+ t = t.slice(start.offset);
40
+ }
41
+ text += t;
42
+ }
43
+ return text;
44
+ }
45
+
46
+ // src/lib/slatejs-edits/replace-text.ts
47
+ import { Editor as Editor2, Transforms } from "slate";
48
+ function replaceEditorText(editor, newText) {
49
+ Transforms.delete(editor, {
50
+ at: {
51
+ anchor: Editor2.start(editor, []),
52
+ focus: Editor2.end(editor, [])
53
+ }
54
+ });
55
+ if (newText && newText !== "") {
56
+ Transforms.insertNodes(
57
+ editor,
58
+ [
59
+ {
60
+ type: "paragraph",
61
+ children: [{ text: newText }]
62
+ }
63
+ ],
64
+ {
65
+ at: [0]
66
+ }
67
+ );
68
+ }
69
+ }
70
+
71
+ // src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts
72
+ function usePopulateCopilotTextareaRef(editor, ref) {
73
+ React.useImperativeHandle(ref, () => {
74
+ class Combined {
75
+ constructor(customMethods2, editorHtmlElement2) {
76
+ this.customMethods = customMethods2;
77
+ this.editorHtmlElement = editorHtmlElement2;
78
+ }
79
+ get(target, propKey) {
80
+ if (this.isKeyOfCustomMethods(propKey)) {
81
+ const value = this.customMethods[propKey];
82
+ if (typeof value === "function") {
83
+ return value.bind(this.customMethods);
84
+ }
85
+ return value;
86
+ } else if (this.isKeyOfHTMLElement(propKey)) {
87
+ const value = this.editorHtmlElement[propKey];
88
+ if (typeof value === "function") {
89
+ return value.bind(this.editorHtmlElement);
90
+ }
91
+ return value;
92
+ }
93
+ }
94
+ set(target, propKey, value) {
95
+ if (this.isKeyOfCustomMethods(propKey)) {
96
+ this.customMethods[propKey] = value;
97
+ } else if (this.isKeyOfHTMLElement(propKey)) {
98
+ this.editorHtmlElement[propKey] = value;
99
+ } else {
100
+ target[propKey] = value;
101
+ }
102
+ return true;
103
+ }
104
+ isKeyOfCustomMethods(key) {
105
+ return key in this.customMethods;
106
+ }
107
+ isKeyOfHTMLElement(key) {
108
+ return key in this.editorHtmlElement;
109
+ }
110
+ }
111
+ const handler = {
112
+ get(target, propKey) {
113
+ return target.get(target, propKey);
114
+ },
115
+ set(target, propKey, value) {
116
+ return target.set(target, propKey, value);
117
+ }
118
+ };
119
+ class CustomMethods {
120
+ constructor(editor2) {
121
+ this.editor = editor2;
122
+ }
123
+ focus() {
124
+ ReactEditor.focus(this.editor);
125
+ }
126
+ blur() {
127
+ ReactEditor.blur(this.editor);
128
+ }
129
+ get value() {
130
+ return getFullEditorTextWithNewlines(this.editor);
131
+ }
132
+ set value(value) {
133
+ replaceEditorText(this.editor, value);
134
+ }
135
+ }
136
+ const editorHtmlElement = ReactEditor.toDOMNode(editor, editor);
137
+ const customMethods = new CustomMethods(editor);
138
+ const combined = new Combined(customMethods, editorHtmlElement);
139
+ return new Proxy(combined, handler);
140
+ }, [editor]);
141
+ }
7
142
  export {
8
143
  usePopulateCopilotTextareaRef
9
144
  };
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/base-copilot-textarea-implementation/use-populate-copilot-textarea-ref.ts","../../../src/lib/get-text-around-cursor.ts","../../../src/lib/slatejs-edits/replace-text.ts"],"sourcesContent":["import React from \"react\";\nimport { Editor } from \"slate\";\nimport { ReactEditor } from \"slate-react\";\nimport { getFullEditorTextWithNewlines } from \"../../lib/get-text-around-cursor\";\nimport { replaceEditorText } from \"../../lib/slatejs-edits/replace-text\";\nimport { HTMLCopilotTextAreaElement } from \"../../types\";\nimport { CustomEditor } from \"../../types/base/custom-editor\";\n\nexport function usePopulateCopilotTextareaRef(\n editor: Editor,\n ref: React.Ref<HTMLCopilotTextAreaElement>,\n) {\n React.useImperativeHandle(ref, () => {\n class Combined {\n constructor(\n private customMethods: CustomMethods,\n private editorHtmlElement: HTMLElement,\n ) {}\n\n [key: string]: any;\n\n get(target: any, propKey: string): any {\n if (this.isKeyOfCustomMethods(propKey)) {\n const value = this.customMethods[propKey];\n if (typeof value === \"function\") {\n return value.bind(this.customMethods);\n }\n return value;\n } else if (this.isKeyOfHTMLElement(propKey)) {\n const value = this.editorHtmlElement[propKey];\n if (typeof value === \"function\") {\n return value.bind(this.editorHtmlElement);\n }\n return value;\n }\n }\n\n set(target: any, propKey: string, value: any): boolean {\n if (this.isKeyOfCustomMethods(propKey)) {\n (this.customMethods as any)[propKey] = value;\n } else if (this.isKeyOfHTMLElement(propKey)) {\n (this.editorHtmlElement as any)[propKey] = value;\n } else {\n // Default behavior (optional)\n target[propKey] = value;\n }\n return true;\n }\n\n private isKeyOfCustomMethods(key: string): key is keyof CustomMethods {\n return key in this.customMethods;\n }\n\n private isKeyOfHTMLElement(key: string): key is keyof HTMLElement {\n return key in this.editorHtmlElement;\n }\n }\n\n const handler = {\n get(target: any, propKey: keyof CustomMethods | keyof HTMLElement) {\n return target.get(target, propKey);\n },\n set(target: any, propKey: keyof CustomMethods | keyof HTMLElement, value: any) {\n return target.set(target, propKey, value);\n },\n };\n\n class CustomMethods {\n constructor(private editor: CustomEditor) {}\n\n focus() {\n ReactEditor.focus(this.editor);\n }\n\n blur() {\n ReactEditor.blur(this.editor);\n }\n\n get value() {\n return getFullEditorTextWithNewlines(this.editor);\n }\n set value(value: string) {\n replaceEditorText(this.editor, value);\n }\n }\n\n const editorHtmlElement = ReactEditor.toDOMNode(editor, editor);\n const customMethods = new CustomMethods(editor);\n\n const combined = new Combined(customMethods, editorHtmlElement);\n return new Proxy(combined, handler);\n }, [editor]);\n}\n","import { Editor, Node, Path, Range, Text, Element, BasePoint, BaseRange, Point } from \"slate\";\nimport { EditorAutocompleteState } from \"../types/base/editor-autocomplete-state\";\n\nexport interface EditorTextState {\n selection: BaseRange;\n\n textBeforeCursor: string;\n selectedText: string;\n textAfterCursor: string;\n}\n\nexport function getTextAroundCollapsedCursor(editor: Editor): EditorAutocompleteState | null {\n const { selection } = editor;\n if (!selection || !Range.isCollapsed(selection)) {\n return null;\n }\n\n const cursorPoint = selection.anchor;\n\n // Create two ranges: one before the anchor and one after\n const beforeRange: Range = {\n anchor: Editor.start(editor, []),\n focus: cursorPoint,\n };\n const afterRange: Range = {\n anchor: cursorPoint,\n focus: Editor.end(editor, []),\n };\n\n // Extract text for these ranges\n const before = extractTextWithNewlines(editor, beforeRange);\n const after = extractTextWithNewlines(editor, afterRange);\n\n return {\n cursorPoint: cursorPoint,\n textBeforeCursor: before,\n textAfterCursor: after,\n };\n}\n\nexport function getTextAroundSelection(editor: Editor): EditorTextState | null {\n const { selection } = editor;\n if (!selection) {\n return null;\n }\n\n const wellOrderedSelection = wellOrderedRange(selection);\n\n // Create two ranges: one before the anchor and one after\n const beforeRange: Range = {\n anchor: Editor.start(editor, []),\n focus: wellOrderedSelection.anchor,\n };\n const afterRange: Range = {\n anchor: wellOrderedSelection.focus,\n focus: Editor.end(editor, []),\n };\n\n // Extract text for these ranges\n const before = extractTextWithNewlines(editor, beforeRange);\n const after = extractTextWithNewlines(editor, afterRange);\n const selectedText = extractTextWithNewlines(editor, wellOrderedSelection);\n\n return {\n selection: wellOrderedSelection,\n textBeforeCursor: before,\n selectedText,\n textAfterCursor: after,\n };\n}\n\nexport function getFullEditorTextWithNewlines(editor: Editor): string {\n const fullDocumentRange: Range = {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n };\n return extractTextWithNewlines(editor, fullDocumentRange);\n}\n\n// Helper function to extract text with newlines\nexport function extractTextWithNewlines(editor: Editor, range: Range): string {\n const voids = false;\n const [start, end] = Range.edges(range);\n let text = \"\";\n let lastBlock: Node | null = null;\n\n for (const [node, path] of Editor.nodes(editor, {\n at: range,\n match: Text.isText,\n voids,\n })) {\n let t = node.text;\n\n // Determine the parent block of the current text node\n const [block] = Editor.above(editor, {\n at: path,\n match: (n) => Element.isElement(n) && n.type === \"paragraph\",\n }) || [null];\n\n // If we encounter a new block, prepend a newline\n if (lastBlock !== block && block) {\n // check that lastBlock is not null to avoid adding a newline at the beginning\n if (lastBlock) {\n text += \"\\n\";\n }\n lastBlock = block;\n }\n\n if (Path.equals(path, end.path)) {\n t = t.slice(0, end.offset);\n }\n\n if (Path.equals(path, start.path)) {\n t = t.slice(start.offset);\n }\n\n text += t;\n }\n\n return text;\n}\n\nfunction wellOrderedRange(range: BaseRange): BaseRange {\n const { anchor, focus } = range;\n // if anchor is before focus, return range as is\n if (Point.isBefore(anchor, focus)) {\n return range;\n }\n\n // if focus is before anchor, return range with anchor and focus swapped\n return {\n anchor: focus,\n focus: anchor,\n };\n}\n","import { Editor, Transforms } from \"slate\";\n\nexport function replaceEditorText(editor: Editor, newText: string) {\n // clear all previous text\n Transforms.delete(editor, {\n at: {\n anchor: Editor.start(editor, []),\n focus: Editor.end(editor, []),\n },\n });\n\n // insert new text\n if (newText && newText !== \"\") {\n // don't insert empty text - results in strange visual behavior\n Transforms.insertNodes(\n editor,\n [\n {\n type: \"paragraph\",\n children: [{ text: newText }],\n },\n ],\n {\n at: [0],\n },\n );\n }\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAElB,SAAS,mBAAmB;;;ACF5B,SAAS,QAAc,MAAM,OAAO,MAAM,SAA+B,aAAa;AAuE/E,SAAS,8BAA8B,QAAwB;AACpE,QAAM,oBAA2B;AAAA,IAC/B,QAAQ,OAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,IAC/B,OAAO,OAAO,IAAI,QAAQ,CAAC,CAAC;AAAA,EAC9B;AACA,SAAO,wBAAwB,QAAQ,iBAAiB;AAC1D;AAGO,SAAS,wBAAwB,QAAgB,OAAsB;AAC5E,QAAM,QAAQ;AACd,QAAM,CAAC,OAAO,GAAG,IAAI,MAAM,MAAM,KAAK;AACtC,MAAI,OAAO;AACX,MAAI,YAAyB;AAE7B,aAAW,CAAC,MAAM,IAAI,KAAK,OAAO,MAAM,QAAQ;AAAA,IAC9C,IAAI;AAAA,IACJ,OAAO,KAAK;AAAA,IACZ;AAAA,EACF,CAAC,GAAG;AACF,QAAI,IAAI,KAAK;AAGb,UAAM,CAAC,KAAK,IAAI,OAAO,MAAM,QAAQ;AAAA,MACnC,IAAI;AAAA,MACJ,OAAO,CAAC,MAAM,QAAQ,UAAU,CAAC,KAAK,EAAE,SAAS;AAAA,IACnD,CAAC,KAAK,CAAC,IAAI;AAGX,QAAI,cAAc,SAAS,OAAO;AAEhC,UAAI,WAAW;AACb,gBAAQ;AAAA,MACV;AACA,kBAAY;AAAA,IACd;AAEA,QAAI,KAAK,OAAO,MAAM,IAAI,IAAI,GAAG;AAC/B,UAAI,EAAE,MAAM,GAAG,IAAI,MAAM;AAAA,IAC3B;AAEA,QAAI,KAAK,OAAO,MAAM,MAAM,IAAI,GAAG;AACjC,UAAI,EAAE,MAAM,MAAM,MAAM;AAAA,IAC1B;AAEA,YAAQ;AAAA,EACV;AAEA,SAAO;AACT;;;ACxHA,SAAS,UAAAA,SAAQ,kBAAkB;AAE5B,SAAS,kBAAkB,QAAgB,SAAiB;AAEjE,aAAW,OAAO,QAAQ;AAAA,IACxB,IAAI;AAAA,MACF,QAAQA,QAAO,MAAM,QAAQ,CAAC,CAAC;AAAA,MAC/B,OAAOA,QAAO,IAAI,QAAQ,CAAC,CAAC;AAAA,IAC9B;AAAA,EACF,CAAC;AAGD,MAAI,WAAW,YAAY,IAAI;AAE7B,eAAW;AAAA,MACT;AAAA,MACA;AAAA,QACE;AAAA,UACE,MAAM;AAAA,UACN,UAAU,CAAC,EAAE,MAAM,QAAQ,CAAC;AAAA,QAC9B;AAAA,MACF;AAAA,MACA;AAAA,QACE,IAAI,CAAC,CAAC;AAAA,MACR;AAAA,IACF;AAAA,EACF;AACF;;;AFnBO,SAAS,8BACd,QACA,KACA;AACA,QAAM,oBAAoB,KAAK,MAAM;AAAA,IACnC,MAAM,SAAS;AAAA,MACb,YACUC,gBACAC,oBACR;AAFQ,6BAAAD;AACA,iCAAAC;AAAA,MACP;AAAA,MAIH,IAAI,QAAa,SAAsB;AACrC,YAAI,KAAK,qBAAqB,OAAO,GAAG;AACtC,gBAAM,QAAQ,KAAK,cAAc,OAAO;AACxC,cAAI,OAAO,UAAU,YAAY;AAC/B,mBAAO,MAAM,KAAK,KAAK,aAAa;AAAA,UACtC;AACA,iBAAO;AAAA,QACT,WAAW,KAAK,mBAAmB,OAAO,GAAG;AAC3C,gBAAM,QAAQ,KAAK,kBAAkB,OAAO;AAC5C,cAAI,OAAO,UAAU,YAAY;AAC/B,mBAAO,MAAM,KAAK,KAAK,iBAAiB;AAAA,UAC1C;AACA,iBAAO;AAAA,QACT;AAAA,MACF;AAAA,MAEA,IAAI,QAAa,SAAiB,OAAqB;AACrD,YAAI,KAAK,qBAAqB,OAAO,GAAG;AACtC,UAAC,KAAK,cAAsB,OAAO,IAAI;AAAA,QACzC,WAAW,KAAK,mBAAmB,OAAO,GAAG;AAC3C,UAAC,KAAK,kBAA0B,OAAO,IAAI;AAAA,QAC7C,OAAO;AAEL,iBAAO,OAAO,IAAI;AAAA,QACpB;AACA,eAAO;AAAA,MACT;AAAA,MAEQ,qBAAqB,KAAyC;AACpE,eAAO,OAAO,KAAK;AAAA,MACrB;AAAA,MAEQ,mBAAmB,KAAuC;AAChE,eAAO,OAAO,KAAK;AAAA,MACrB;AAAA,IACF;AAEA,UAAM,UAAU;AAAA,MACd,IAAI,QAAa,SAAkD;AACjE,eAAO,OAAO,IAAI,QAAQ,OAAO;AAAA,MACnC;AAAA,MACA,IAAI,QAAa,SAAkD,OAAY;AAC7E,eAAO,OAAO,IAAI,QAAQ,SAAS,KAAK;AAAA,MAC1C;AAAA,IACF;AAAA,IAEA,MAAM,cAAc;AAAA,MAClB,YAAoBC,SAAsB;AAAtB,sBAAAA;AAAA,MAAuB;AAAA,MAE3C,QAAQ;AACN,oBAAY,MAAM,KAAK,MAAM;AAAA,MAC/B;AAAA,MAEA,OAAO;AACL,oBAAY,KAAK,KAAK,MAAM;AAAA,MAC9B;AAAA,MAEA,IAAI,QAAQ;AACV,eAAO,8BAA8B,KAAK,MAAM;AAAA,MAClD;AAAA,MACA,IAAI,MAAM,OAAe;AACvB,0BAAkB,KAAK,QAAQ,KAAK;AAAA,MACtC;AAAA,IACF;AAEA,UAAM,oBAAoB,YAAY,UAAU,QAAQ,MAAM;AAC9D,UAAM,gBAAgB,IAAI,cAAc,MAAM;AAE9C,UAAM,WAAW,IAAI,SAAS,eAAe,iBAAiB;AAC9D,WAAO,IAAI,MAAM,UAAU,OAAO;AAAA,EACpC,GAAG,CAAC,MAAM,CAAC;AACb;","names":["Editor","customMethods","editorHtmlElement","editor"]}
@@ -0,0 +1,2 @@
1
+
2
+ export { }
@@ -1,2 +1,2 @@
1
1
 
2
- export { }
2
+ export { }
@@ -1,2 +1 @@
1
- import "../chunk-H4VKQGVU.mjs";
2
1
  //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,22 @@
1
+ import { AutosuggestionsBareFunction } from '../../types/base/autosuggestions-bare-function.mjs';
2
+ import { SuggestionsApiConfig } from '../../types/autosuggestions-config/suggestions-api-config.mjs';
3
+ import '@copilotkit/react-core';
4
+ import '@copilotkit/runtime-client-gql';
5
+ import '../../types/autosuggestions-config/subtypes/make-system-prompt.mjs';
6
+
7
+ /**
8
+ * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.
9
+ * The function takes in the text before and after the cursor, and an abort signal.
10
+ * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.
11
+ * The function returns the suggestion from the API response.
12
+ *
13
+ * @param textareaPurpose - The purpose of the textarea. This is included in the system message.
14
+ * @param apiEndpoint - The API endpoint to send the autosuggestion request to.
15
+ * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.
16
+ * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.
17
+ * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) "global" context category.
18
+ * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.
19
+ */
20
+ declare function useMakeStandardAutosuggestionFunction(textareaPurpose: string, contextCategories: string[], apiConfig: SuggestionsApiConfig): AutosuggestionsBareFunction;
21
+
22
+ export { useMakeStandardAutosuggestionFunction };
@@ -121,7 +121,7 @@ function useMakeStandardAutosuggestionFunction(textareaPurpose, contextCategorie
121
121
  actions: [],
122
122
  url: window.location.href
123
123
  },
124
- messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)((0, import_runtime_client_gql.filterAgentStateMessages)(messages)),
124
+ messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)(messages),
125
125
  metadata: {
126
126
  requestType: import_runtime_client_gql.CopilotRequestType.TextareaCompletion
127
127
  },
@@ -142,6 +142,7 @@ function useMakeStandardAutosuggestionFunction(textareaPurpose, contextCategorie
142
142
  }
143
143
  if (message instanceof import_runtime_client_gql.TextMessage) {
144
144
  result += message.content;
145
+ console.log(message.content);
145
146
  }
146
147
  }
147
148
  return result;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx","../../../src/lib/retry.tsx"],"sourcesContent":["import { COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from \"@copilotkit/shared\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\nimport { useCallback } from \"react\";\nimport { AutosuggestionsBareFunction } from \"../../types\";\nimport { retry } from \"../../lib/retry\";\nimport { InsertionEditorState } from \"../../types/base/autosuggestions-bare-function\";\nimport { SuggestionsApiConfig } from \"../../types/autosuggestions-config/suggestions-api-config\";\nimport {\n CopilotRuntimeClient,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n convertMessagesToGqlInput,\n filterAgentStateMessages,\n CopilotRequestType,\n} from \"@copilotkit/runtime-client-gql\";\n\n/**\n * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n * The function takes in the text before and after the cursor, and an abort signal.\n * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.\n * The function returns the suggestion from the API response.\n *\n * @param textareaPurpose - The purpose of the textarea. This is included in the system message.\n * @param apiEndpoint - The API endpoint to send the autosuggestion request to.\n * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.\n * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.\n * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) \"global\" context category.\n * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n */\nexport function useMakeStandardAutosuggestionFunction(\n textareaPurpose: string,\n contextCategories: string[],\n apiConfig: SuggestionsApiConfig,\n): AutosuggestionsBareFunction {\n const { getContextString, copilotApiConfig } = useCopilotContext();\n const { chatApiEndpoint: url, publicApiKey, credentials, properties } = copilotApiConfig;\n const headers = {\n ...copilotApiConfig.headers,\n ...(publicApiKey ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {}),\n };\n const { maxTokens, stop } = apiConfig;\n\n return useCallback(\n async (editorState: InsertionEditorState, abortSignal: AbortSignal) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: apiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString([], contextCategories),\n ),\n }),\n ...apiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: editorState.textAfterCursor,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n ];\n\n const runtimeClient = new CopilotRuntimeClient({\n url,\n publicApiKey,\n headers,\n credentials,\n });\n\n const response = await runtimeClient\n .generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(filterAgentStateMessages(messages)),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n forwardedParameters: {\n maxTokens,\n stop,\n },\n },\n properties,\n signal: abortSignal,\n })\n .toPromise();\n\n let result = \"\";\n for (const message of convertGqlOutputToMessages(\n response.data?.generateCopilotResponse?.messages ?? [],\n )) {\n if (abortSignal.aborted) {\n break;\n }\n if (message instanceof TextMessage) {\n result += message.content;\n }\n }\n\n return result;\n });\n\n return res;\n },\n [apiConfig, getContextString, contextCategories, textareaPurpose],\n );\n}\n","export function retry<T>(\n fn: () => Promise<T>,\n retriesLeft: number = 2,\n interval: number = 200,\n backoff: number = 1.5,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n fn()\n .then(resolve)\n .catch((error) => {\n if (retriesLeft === 1) {\n reject(error);\n return;\n }\n\n setTimeout(() => {\n retry(fn, retriesLeft - 1, interval * backoff, backoff)\n .then(resolve)\n .catch(reject);\n }, interval);\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoD;AACpD,wBAAkC;AAClC,mBAA4B;;;ACFrB,SAAS,MACd,IACA,cAAsB,GACtB,WAAmB,KACnB,UAAkB,KACN;AACZ,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,OAAG,EACA,KAAK,OAAO,EACZ,MAAM,CAAC,UAAU;AAChB,UAAI,gBAAgB,GAAG;AACrB,eAAO,KAAK;AACZ;AAAA,MACF;AAEA,iBAAW,MAAM;AACf,cAAM,IAAI,cAAc,GAAG,WAAW,SAAS,OAAO,EACnD,KAAK,OAAO,EACZ,MAAM,MAAM;AAAA,MACjB,GAAG,QAAQ;AAAA,IACb,CAAC;AAAA,EACL,CAAC;AACH;;;ADfA,gCASO;AAeA,SAAS,sCACd,iBACA,mBACA,WAC6B;AAC7B,QAAM,EAAE,kBAAkB,iBAAiB,QAAI,qCAAkB;AACjE,QAAM,EAAE,iBAAiB,KAAK,cAAc,aAAa,WAAW,IAAI;AACxE,QAAM,UAAU,kCACX,iBAAiB,UAChB,eAAe,EAAE,CAAC,iDAAmC,GAAG,aAAa,IAAI,CAAC;AAEhF,QAAM,EAAE,WAAW,KAAK,IAAI;AAE5B,aAAO;AAAA,IACL,CAAO,aAAmC,gBAA6B;AACrE,YAAM,MAAM,MAAM,MAAM,MAAY;AA9C1C;AA+CQ,cAAM,WAAsB;AAAA,UAC1B,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,UAAU;AAAA,cACjB;AAAA,cACA,iBAAiB,CAAC,GAAG,iBAAiB;AAAA,YACxC;AAAA,UACF,CAAC;AAAA,UACD,GAAG,UAAU;AAAA,UACb,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,YAAY;AAAA,UACvB,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,oBAAoB,YAAY;AAAA,UAC3C,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,qBAAqB,YAAY;AAAA,UAC5C,CAAC;AAAA,QACH;AAEA,cAAM,gBAAgB,IAAI,+CAAqB;AAAA,UAC7C;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAED,cAAM,WAAW,MAAM,cACpB,wBAAwB;AAAA,UACvB,MAAM;AAAA,YACJ,UAAU;AAAA,cACR,SAAS,CAAC;AAAA,cACV,KAAK,OAAO,SAAS;AAAA,YACvB;AAAA,YACA,cAAU,yDAA0B,oDAAyB,QAAQ,CAAC;AAAA,YACtE,UAAU;AAAA,cACR,aAAa,6CAAmB;AAAA,YAClC;AAAA,YACA,qBAAqB;AAAA,cACnB;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV,CAAC,EACA,UAAU;AAEb,YAAI,SAAS;AACb,mBAAW,eAAW;AAAA,WACpB,0BAAS,SAAT,mBAAe,4BAAf,mBAAwC,aAAxC,YAAoD,CAAC;AAAA,QACvD,GAAG;AACD,cAAI,YAAY,SAAS;AACvB;AAAA,UACF;AACA,cAAI,mBAAmB,uCAAa;AAClC,sBAAU,QAAQ;AAAA,UACpB;AAAA,QACF;AAEA,eAAO;AAAA,MACT,EAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,kBAAkB,mBAAmB,eAAe;AAAA,EAClE;AACF;","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx","../../../src/lib/retry.tsx"],"sourcesContent":["import { COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from \"@copilotkit/shared\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\nimport { useCallback } from \"react\";\nimport { AutosuggestionsBareFunction } from \"../../types\";\nimport { retry } from \"../../lib/retry\";\nimport { InsertionEditorState } from \"../../types/base/autosuggestions-bare-function\";\nimport { SuggestionsApiConfig } from \"../../types/autosuggestions-config/suggestions-api-config\";\nimport {\n CopilotRuntimeClient,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n convertMessagesToGqlInput,\n CopilotRequestType,\n} from \"@copilotkit/runtime-client-gql\";\n\n/**\n * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n * The function takes in the text before and after the cursor, and an abort signal.\n * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.\n * The function returns the suggestion from the API response.\n *\n * @param textareaPurpose - The purpose of the textarea. This is included in the system message.\n * @param apiEndpoint - The API endpoint to send the autosuggestion request to.\n * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.\n * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.\n * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) \"global\" context category.\n * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n */\nexport function useMakeStandardAutosuggestionFunction(\n textareaPurpose: string,\n contextCategories: string[],\n apiConfig: SuggestionsApiConfig,\n): AutosuggestionsBareFunction {\n const { getContextString, copilotApiConfig } = useCopilotContext();\n const { chatApiEndpoint: url, publicApiKey, credentials, properties } = copilotApiConfig;\n const headers = {\n ...copilotApiConfig.headers,\n ...(publicApiKey ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {}),\n };\n const { maxTokens, stop } = apiConfig;\n\n return useCallback(\n async (editorState: InsertionEditorState, abortSignal: AbortSignal) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: apiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString([], contextCategories),\n ),\n }),\n ...apiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: editorState.textAfterCursor,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n ];\n\n const runtimeClient = new CopilotRuntimeClient({\n url,\n publicApiKey,\n headers,\n credentials,\n });\n\n const response = await runtimeClient\n .generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(messages),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n forwardedParameters: {\n maxTokens,\n stop,\n },\n },\n properties,\n signal: abortSignal,\n })\n .toPromise();\n\n let result = \"\";\n for (const message of convertGqlOutputToMessages(\n response.data?.generateCopilotResponse?.messages ?? [],\n )) {\n if (abortSignal.aborted) {\n break;\n }\n if (message instanceof TextMessage) {\n result += message.content;\n console.log(message.content);\n }\n }\n\n return result;\n });\n\n return res;\n },\n [apiConfig, getContextString, contextCategories, textareaPurpose],\n );\n}\n","export function retry<T>(\n fn: () => Promise<T>,\n retriesLeft: number = 2,\n interval: number = 200,\n backoff: number = 1.5,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n fn()\n .then(resolve)\n .catch((error) => {\n if (retriesLeft === 1) {\n reject(error);\n return;\n }\n\n setTimeout(() => {\n retry(fn, retriesLeft - 1, interval * backoff, backoff)\n .then(resolve)\n .catch(reject);\n }, interval);\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoD;AACpD,wBAAkC;AAClC,mBAA4B;;;ACFrB,SAAS,MACd,IACA,cAAsB,GACtB,WAAmB,KACnB,UAAkB,KACN;AACZ,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,OAAG,EACA,KAAK,OAAO,EACZ,MAAM,CAAC,UAAU;AAChB,UAAI,gBAAgB,GAAG;AACrB,eAAO,KAAK;AACZ;AAAA,MACF;AAEA,iBAAW,MAAM;AACf,cAAM,IAAI,cAAc,GAAG,WAAW,SAAS,OAAO,EACnD,KAAK,OAAO,EACZ,MAAM,MAAM;AAAA,MACjB,GAAG,QAAQ;AAAA,IACb,CAAC;AAAA,EACL,CAAC;AACH;;;ADfA,gCAQO;AAeA,SAAS,sCACd,iBACA,mBACA,WAC6B;AAC7B,QAAM,EAAE,kBAAkB,iBAAiB,QAAI,qCAAkB;AACjE,QAAM,EAAE,iBAAiB,KAAK,cAAc,aAAa,WAAW,IAAI;AACxE,QAAM,UAAU,kCACX,iBAAiB,UAChB,eAAe,EAAE,CAAC,iDAAmC,GAAG,aAAa,IAAI,CAAC;AAEhF,QAAM,EAAE,WAAW,KAAK,IAAI;AAE5B,aAAO;AAAA,IACL,CAAO,aAAmC,gBAA6B;AACrE,YAAM,MAAM,MAAM,MAAM,MAAY;AA7C1C;AA8CQ,cAAM,WAAsB;AAAA,UAC1B,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,UAAU;AAAA,cACjB;AAAA,cACA,iBAAiB,CAAC,GAAG,iBAAiB;AAAA,YACxC;AAAA,UACF,CAAC;AAAA,UACD,GAAG,UAAU;AAAA,UACb,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,YAAY;AAAA,UACvB,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,oBAAoB,YAAY,eAAe;AAAA,UAC1D,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,qBAAqB,YAAY,gBAAgB;AAAA,UAC5D,CAAC;AAAA,QACH;AAEA,cAAM,gBAAgB,IAAI,+CAAqB;AAAA,UAC7C;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAED,cAAM,WAAW,MAAM,cACpB,wBAAwB;AAAA,UACvB,MAAM;AAAA,YACJ,UAAU;AAAA,cACR,SAAS,CAAC;AAAA,cACV,KAAK,OAAO,SAAS;AAAA,YACvB;AAAA,YACA,cAAU,qDAA0B,QAAQ;AAAA,YAC5C,UAAU;AAAA,cACR,aAAa,6CAAmB;AAAA,YAClC;AAAA,YACA,qBAAqB;AAAA,cACnB;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV,CAAC,EACA,UAAU;AAEb,YAAI,SAAS;AACb,mBAAW,eAAW;AAAA,WACpB,0BAAS,SAAT,mBAAe,4BAAf,mBAAwC,aAAxC,YAAoD,CAAC;AAAA,QACvD,GAAG;AACD,cAAI,YAAY,SAAS;AACvB;AAAA,UACF;AACA,cAAI,mBAAmB,uCAAa;AAClC,sBAAU,QAAQ;AAClB,oBAAQ,IAAI,QAAQ,OAAO;AAAA,UAC7B;AAAA,QACF;AAEA,eAAO;AAAA,MACT,EAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,kBAAkB,mBAAmB,eAAe;AAAA,EAClE;AACF;","names":[]}
@@ -1,8 +1,143 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
3
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
4
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
5
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
6
+ var __spreadValues = (a, b) => {
7
+ for (var prop in b || (b = {}))
8
+ if (__hasOwnProp.call(b, prop))
9
+ __defNormalProp(a, prop, b[prop]);
10
+ if (__getOwnPropSymbols)
11
+ for (var prop of __getOwnPropSymbols(b)) {
12
+ if (__propIsEnum.call(b, prop))
13
+ __defNormalProp(a, prop, b[prop]);
14
+ }
15
+ return a;
16
+ };
17
+ var __async = (__this, __arguments, generator) => {
18
+ return new Promise((resolve, reject) => {
19
+ var fulfilled = (value) => {
20
+ try {
21
+ step(generator.next(value));
22
+ } catch (e) {
23
+ reject(e);
24
+ }
25
+ };
26
+ var rejected = (value) => {
27
+ try {
28
+ step(generator.throw(value));
29
+ } catch (e) {
30
+ reject(e);
31
+ }
32
+ };
33
+ var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
34
+ step((generator = generator.apply(__this, __arguments)).next());
35
+ });
36
+ };
37
+
38
+ // src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx
39
+ import { COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from "@copilotkit/shared";
40
+ import { useCopilotContext } from "@copilotkit/react-core";
41
+ import { useCallback } from "react";
42
+
43
+ // src/lib/retry.tsx
44
+ function retry(fn, retriesLeft = 2, interval = 200, backoff = 1.5) {
45
+ return new Promise((resolve, reject) => {
46
+ fn().then(resolve).catch((error) => {
47
+ if (retriesLeft === 1) {
48
+ reject(error);
49
+ return;
50
+ }
51
+ setTimeout(() => {
52
+ retry(fn, retriesLeft - 1, interval * backoff, backoff).then(resolve).catch(reject);
53
+ }, interval);
54
+ });
55
+ });
56
+ }
57
+
58
+ // src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx
1
59
  import {
2
- useMakeStandardAutosuggestionFunction
3
- } from "../../chunk-D2SUDM2O.mjs";
4
- import "../../chunk-KNQIEOFP.mjs";
5
- import "../../chunk-MRXNTQOX.mjs";
60
+ CopilotRuntimeClient,
61
+ Role,
62
+ TextMessage,
63
+ convertGqlOutputToMessages,
64
+ convertMessagesToGqlInput,
65
+ CopilotRequestType
66
+ } from "@copilotkit/runtime-client-gql";
67
+ function useMakeStandardAutosuggestionFunction(textareaPurpose, contextCategories, apiConfig) {
68
+ const { getContextString, copilotApiConfig } = useCopilotContext();
69
+ const { chatApiEndpoint: url, publicApiKey, credentials, properties } = copilotApiConfig;
70
+ const headers = __spreadValues(__spreadValues({}, copilotApiConfig.headers), publicApiKey ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {});
71
+ const { maxTokens, stop } = apiConfig;
72
+ return useCallback(
73
+ (editorState, abortSignal) => __async(this, null, function* () {
74
+ const res = yield retry(() => __async(this, null, function* () {
75
+ var _a, _b, _c;
76
+ const messages = [
77
+ new TextMessage({
78
+ role: Role.System,
79
+ content: apiConfig.makeSystemPrompt(
80
+ textareaPurpose,
81
+ getContextString([], contextCategories)
82
+ )
83
+ }),
84
+ ...apiConfig.fewShotMessages,
85
+ new TextMessage({
86
+ role: Role.User,
87
+ content: editorState.textAfterCursor
88
+ }),
89
+ new TextMessage({
90
+ role: Role.User,
91
+ content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`
92
+ }),
93
+ new TextMessage({
94
+ role: Role.User,
95
+ content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`
96
+ })
97
+ ];
98
+ const runtimeClient = new CopilotRuntimeClient({
99
+ url,
100
+ publicApiKey,
101
+ headers,
102
+ credentials
103
+ });
104
+ const response = yield runtimeClient.generateCopilotResponse({
105
+ data: {
106
+ frontend: {
107
+ actions: [],
108
+ url: window.location.href
109
+ },
110
+ messages: convertMessagesToGqlInput(messages),
111
+ metadata: {
112
+ requestType: CopilotRequestType.TextareaCompletion
113
+ },
114
+ forwardedParameters: {
115
+ maxTokens,
116
+ stop
117
+ }
118
+ },
119
+ properties,
120
+ signal: abortSignal
121
+ }).toPromise();
122
+ let result = "";
123
+ for (const message of convertGqlOutputToMessages(
124
+ (_c = (_b = (_a = response.data) == null ? void 0 : _a.generateCopilotResponse) == null ? void 0 : _b.messages) != null ? _c : []
125
+ )) {
126
+ if (abortSignal.aborted) {
127
+ break;
128
+ }
129
+ if (message instanceof TextMessage) {
130
+ result += message.content;
131
+ console.log(message.content);
132
+ }
133
+ }
134
+ return result;
135
+ }));
136
+ return res;
137
+ }),
138
+ [apiConfig, getContextString, contextCategories, textareaPurpose]
139
+ );
140
+ }
6
141
  export {
7
142
  useMakeStandardAutosuggestionFunction
8
143
  };
@@ -1 +1 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
1
+ {"version":3,"sources":["../../../src/hooks/make-autosuggestions-function/use-make-standard-autosuggestions-function.tsx","../../../src/lib/retry.tsx"],"sourcesContent":["import { COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from \"@copilotkit/shared\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\nimport { useCallback } from \"react\";\nimport { AutosuggestionsBareFunction } from \"../../types\";\nimport { retry } from \"../../lib/retry\";\nimport { InsertionEditorState } from \"../../types/base/autosuggestions-bare-function\";\nimport { SuggestionsApiConfig } from \"../../types/autosuggestions-config/suggestions-api-config\";\nimport {\n CopilotRuntimeClient,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n convertMessagesToGqlInput,\n CopilotRequestType,\n} from \"@copilotkit/runtime-client-gql\";\n\n/**\n * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n * The function takes in the text before and after the cursor, and an abort signal.\n * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.\n * The function returns the suggestion from the API response.\n *\n * @param textareaPurpose - The purpose of the textarea. This is included in the system message.\n * @param apiEndpoint - The API endpoint to send the autosuggestion request to.\n * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.\n * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.\n * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) \"global\" context category.\n * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n */\nexport function useMakeStandardAutosuggestionFunction(\n textareaPurpose: string,\n contextCategories: string[],\n apiConfig: SuggestionsApiConfig,\n): AutosuggestionsBareFunction {\n const { getContextString, copilotApiConfig } = useCopilotContext();\n const { chatApiEndpoint: url, publicApiKey, credentials, properties } = copilotApiConfig;\n const headers = {\n ...copilotApiConfig.headers,\n ...(publicApiKey ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: publicApiKey } : {}),\n };\n const { maxTokens, stop } = apiConfig;\n\n return useCallback(\n async (editorState: InsertionEditorState, abortSignal: AbortSignal) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: apiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString([], contextCategories),\n ),\n }),\n ...apiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: editorState.textAfterCursor,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n ];\n\n const runtimeClient = new CopilotRuntimeClient({\n url,\n publicApiKey,\n headers,\n credentials,\n });\n\n const response = await runtimeClient\n .generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(messages),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n forwardedParameters: {\n maxTokens,\n stop,\n },\n },\n properties,\n signal: abortSignal,\n })\n .toPromise();\n\n let result = \"\";\n for (const message of convertGqlOutputToMessages(\n response.data?.generateCopilotResponse?.messages ?? [],\n )) {\n if (abortSignal.aborted) {\n break;\n }\n if (message instanceof TextMessage) {\n result += message.content;\n console.log(message.content);\n }\n }\n\n return result;\n });\n\n return res;\n },\n [apiConfig, getContextString, contextCategories, textareaPurpose],\n );\n}\n","export function retry<T>(\n fn: () => Promise<T>,\n retriesLeft: number = 2,\n interval: number = 200,\n backoff: number = 1.5,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n fn()\n .then(resolve)\n .catch((error) => {\n if (retriesLeft === 1) {\n reject(error);\n return;\n }\n\n setTimeout(() => {\n retry(fn, retriesLeft - 1, interval * backoff, backoff)\n .then(resolve)\n .catch(reject);\n }, interval);\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,SAAS,2CAA2C;AACpD,SAAS,yBAAyB;AAClC,SAAS,mBAAmB;;;ACFrB,SAAS,MACd,IACA,cAAsB,GACtB,WAAmB,KACnB,UAAkB,KACN;AACZ,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,OAAG,EACA,KAAK,OAAO,EACZ,MAAM,CAAC,UAAU;AAChB,UAAI,gBAAgB,GAAG;AACrB,eAAO,KAAK;AACZ;AAAA,MACF;AAEA,iBAAW,MAAM;AACf,cAAM,IAAI,cAAc,GAAG,WAAW,SAAS,OAAO,EACnD,KAAK,OAAO,EACZ,MAAM,MAAM;AAAA,MACjB,GAAG,QAAQ;AAAA,IACb,CAAC;AAAA,EACL,CAAC;AACH;;;ADfA;AAAA,EACE;AAAA,EAEA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAeA,SAAS,sCACd,iBACA,mBACA,WAC6B;AAC7B,QAAM,EAAE,kBAAkB,iBAAiB,IAAI,kBAAkB;AACjE,QAAM,EAAE,iBAAiB,KAAK,cAAc,aAAa,WAAW,IAAI;AACxE,QAAM,UAAU,kCACX,iBAAiB,UAChB,eAAe,EAAE,CAAC,mCAAmC,GAAG,aAAa,IAAI,CAAC;AAEhF,QAAM,EAAE,WAAW,KAAK,IAAI;AAE5B,SAAO;AAAA,IACL,CAAO,aAAmC,gBAA6B;AACrE,YAAM,MAAM,MAAM,MAAM,MAAY;AA7C1C;AA8CQ,cAAM,WAAsB;AAAA,UAC1B,IAAI,YAAY;AAAA,YACd,MAAM,KAAK;AAAA,YACX,SAAS,UAAU;AAAA,cACjB;AAAA,cACA,iBAAiB,CAAC,GAAG,iBAAiB;AAAA,YACxC;AAAA,UACF,CAAC;AAAA,UACD,GAAG,UAAU;AAAA,UACb,IAAI,YAAY;AAAA,YACd,MAAM,KAAK;AAAA,YACX,SAAS,YAAY;AAAA,UACvB,CAAC;AAAA,UACD,IAAI,YAAY;AAAA,YACd,MAAM,KAAK;AAAA,YACX,SAAS,oBAAoB,YAAY,eAAe;AAAA,UAC1D,CAAC;AAAA,UACD,IAAI,YAAY;AAAA,YACd,MAAM,KAAK;AAAA,YACX,SAAS,qBAAqB,YAAY,gBAAgB;AAAA,UAC5D,CAAC;AAAA,QACH;AAEA,cAAM,gBAAgB,IAAI,qBAAqB;AAAA,UAC7C;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF,CAAC;AAED,cAAM,WAAW,MAAM,cACpB,wBAAwB;AAAA,UACvB,MAAM;AAAA,YACJ,UAAU;AAAA,cACR,SAAS,CAAC;AAAA,cACV,KAAK,OAAO,SAAS;AAAA,YACvB;AAAA,YACA,UAAU,0BAA0B,QAAQ;AAAA,YAC5C,UAAU;AAAA,cACR,aAAa,mBAAmB;AAAA,YAClC;AAAA,YACA,qBAAqB;AAAA,cACnB;AAAA,cACA;AAAA,YACF;AAAA,UACF;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV,CAAC,EACA,UAAU;AAEb,YAAI,SAAS;AACb,mBAAW,WAAW;AAAA,WACpB,0BAAS,SAAT,mBAAe,4BAAf,mBAAwC,aAAxC,YAAoD,CAAC;AAAA,QACvD,GAAG;AACD,cAAI,YAAY,SAAS;AACvB;AAAA,UACF;AACA,cAAI,mBAAmB,aAAa;AAClC,sBAAU,QAAQ;AAClB,oBAAQ,IAAI,QAAQ,OAAO;AAAA,UAC7B;AAAA,QACF;AAEA,eAAO;AAAA,MACT,EAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,CAAC,WAAW,kBAAkB,mBAAmB,eAAe;AAAA,EAClE;AACF;","names":[]}
@@ -0,0 +1,23 @@
1
+ import { Generator_InsertionOrEditingSuggestion } from '../../types/base/autosuggestions-bare-function.mjs';
2
+ import { InsertionsApiConfig } from '../../types/autosuggestions-config/insertions-api-config.mjs';
3
+ import { EditingApiConfig } from '../../types/autosuggestions-config/editing-api-config.mjs';
4
+ import '@copilotkit/react-core';
5
+ import '@copilotkit/runtime-client-gql';
6
+ import '../../types/autosuggestions-config/subtypes/make-system-prompt.mjs';
7
+
8
+ /**
9
+ * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.
10
+ * The function takes in the text before and after the cursor, and an abort signal.
11
+ * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.
12
+ * The function returns the suggestion from the API response.
13
+ *
14
+ * @param textareaPurpose - The purpose of the textarea. This is included in the system message.
15
+ * @param apiEndpoint - The API endpoint to send the autosuggestion request to.
16
+ * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.
17
+ * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.
18
+ * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) "global" context category.
19
+ * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.
20
+ */
21
+ declare function useMakeStandardInsertionOrEditingFunction(textareaPurpose: string, contextCategories: string[], insertionApiConfig: InsertionsApiConfig, editingApiConfig: EditingApiConfig): Generator_InsertionOrEditingSuggestion;
22
+
23
+ export { useMakeStandardInsertionOrEditingFunction };
@@ -151,7 +151,7 @@ function useMakeStandardInsertionOrEditingFunction(textareaPurpose, contextCateg
151
151
  actions: [],
152
152
  url: window.location.href
153
153
  },
154
- messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)((0, import_runtime_client_gql.filterAgentStateMessages)(messages)),
154
+ messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)(messages),
155
155
  metadata: {
156
156
  requestType: import_runtime_client_gql.CopilotRequestType.TextareaCompletion
157
157
  }
@@ -207,7 +207,7 @@ function useMakeStandardInsertionOrEditingFunction(textareaPurpose, contextCateg
207
207
  actions: [],
208
208
  url: window.location.href
209
209
  },
210
- messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)((0, import_runtime_client_gql.filterAgentStateMessages)(messages)),
210
+ messages: (0, import_runtime_client_gql.convertMessagesToGqlInput)(messages),
211
211
  metadata: {
212
212
  requestType: import_runtime_client_gql.CopilotRequestType.TextareaCompletion
213
213
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/hooks/make-autosuggestions-function/use-make-standard-insertion-function.tsx","../../../src/lib/retry.tsx"],"sourcesContent":["import { COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from \"@copilotkit/shared\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\nimport { useCallback } from \"react\";\nimport {\n CopilotRuntimeClient,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n convertMessagesToGqlInput,\n filterAgentStateMessages,\n CopilotRequestType,\n} from \"@copilotkit/runtime-client-gql\";\nimport { retry } from \"../../lib/retry\";\nimport {\n EditingEditorState,\n Generator_InsertionOrEditingSuggestion,\n} from \"../../types/base/autosuggestions-bare-function\";\nimport { InsertionsApiConfig } from \"../../types/autosuggestions-config/insertions-api-config\";\nimport { EditingApiConfig } from \"../../types/autosuggestions-config/editing-api-config\";\nimport { DocumentPointer } from \"@copilotkit/react-core\";\n\n/**\n * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n * The function takes in the text before and after the cursor, and an abort signal.\n * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.\n * The function returns the suggestion from the API response.\n *\n * @param textareaPurpose - The purpose of the textarea. This is included in the system message.\n * @param apiEndpoint - The API endpoint to send the autosuggestion request to.\n * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.\n * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.\n * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) \"global\" context category.\n * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n */\nexport function useMakeStandardInsertionOrEditingFunction(\n textareaPurpose: string,\n contextCategories: string[],\n insertionApiConfig: InsertionsApiConfig,\n editingApiConfig: EditingApiConfig,\n): Generator_InsertionOrEditingSuggestion {\n const { getContextString, copilotApiConfig } = useCopilotContext();\n const headers = {\n ...(copilotApiConfig.publicApiKey\n ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey }\n : {}),\n };\n\n const runtimeClient = new CopilotRuntimeClient({\n url: copilotApiConfig.chatApiEndpoint,\n publicApiKey: copilotApiConfig.publicApiKey,\n headers,\n credentials: copilotApiConfig.credentials,\n });\n\n async function runtimeClientResponseToStringStream(\n responsePromise: ReturnType<typeof runtimeClient.generateCopilotResponse>,\n ) {\n const messagesStream = await CopilotRuntimeClient.asStream(responsePromise);\n\n return new ReadableStream({\n async start(controller) {\n const reader = messagesStream.getReader();\n let sentContent = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n const messages = convertGqlOutputToMessages(value.generateCopilotResponse.messages);\n\n let newContent = \"\";\n\n for (const message of messages) {\n if (message instanceof TextMessage) {\n newContent += message.content;\n }\n }\n if (newContent) {\n const contentToSend = newContent.slice(sentContent.length);\n controller.enqueue(contentToSend);\n sentContent += contentToSend;\n }\n }\n controller.close();\n },\n });\n }\n\n const insertionFunction = useCallback(\n async (\n editorState: EditingEditorState,\n insertionPrompt: string,\n documents: DocumentPointer[],\n abortSignal: AbortSignal,\n ) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: insertionApiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString(documents, contextCategories),\n ),\n }),\n ...insertionApiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<InsertionPrompt>${insertionPrompt}</InsertionPrompt>`,\n }),\n ];\n\n return runtimeClientResponseToStringStream(\n runtimeClient.generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(filterAgentStateMessages(messages)),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n },\n properties: copilotApiConfig.properties,\n signal: abortSignal,\n }),\n );\n });\n\n return res;\n },\n [insertionApiConfig, getContextString, contextCategories, textareaPurpose],\n );\n\n const editingFunction = useCallback(\n async (\n editorState: EditingEditorState,\n editingPrompt: string,\n documents: DocumentPointer[],\n abortSignal: AbortSignal,\n ) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: editingApiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString(documents, contextCategories),\n ),\n }),\n ...editingApiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextToEdit>${editorState.selectedText}</TextToEdit>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<EditingPrompt>${editingPrompt}</EditingPrompt>`,\n }),\n ];\n\n const runtimeClient = new CopilotRuntimeClient({\n url: copilotApiConfig.chatApiEndpoint,\n publicApiKey: copilotApiConfig.publicApiKey,\n headers,\n credentials: copilotApiConfig.credentials,\n });\n\n return runtimeClientResponseToStringStream(\n runtimeClient.generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(filterAgentStateMessages(messages)),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n },\n properties: copilotApiConfig.properties,\n signal: abortSignal,\n }),\n );\n });\n\n return res;\n },\n [editingApiConfig, getContextString, contextCategories, textareaPurpose],\n );\n\n const insertionOrEditingFunction = useCallback(\n async (\n editorState: EditingEditorState,\n insertionPrompt: string,\n documents: DocumentPointer[],\n abortSignal: AbortSignal,\n ) => {\n if (editorState.selectedText === \"\") {\n return await insertionFunction(editorState, insertionPrompt, documents, abortSignal);\n } else {\n return await editingFunction(editorState, insertionPrompt, documents, abortSignal);\n }\n },\n [insertionFunction, editingFunction],\n );\n\n return insertionOrEditingFunction;\n}\n","export function retry<T>(\n fn: () => Promise<T>,\n retriesLeft: number = 2,\n interval: number = 200,\n backoff: number = 1.5,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n fn()\n .then(resolve)\n .catch((error) => {\n if (retriesLeft === 1) {\n reject(error);\n return;\n }\n\n setTimeout(() => {\n retry(fn, retriesLeft - 1, interval * backoff, backoff)\n .then(resolve)\n .catch(reject);\n }, interval);\n });\n });\n}\n"],"mappings":"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","names":["runtimeClient"]}
1
+ {"version":3,"sources":["../../../src/hooks/make-autosuggestions-function/use-make-standard-insertion-function.tsx","../../../src/lib/retry.tsx"],"sourcesContent":["import { COPILOT_CLOUD_PUBLIC_API_KEY_HEADER } from \"@copilotkit/shared\";\nimport { useCopilotContext } from \"@copilotkit/react-core\";\nimport { useCallback } from \"react\";\nimport {\n CopilotRuntimeClient,\n Message,\n Role,\n TextMessage,\n convertGqlOutputToMessages,\n convertMessagesToGqlInput,\n CopilotRequestType,\n} from \"@copilotkit/runtime-client-gql\";\nimport { retry } from \"../../lib/retry\";\nimport {\n EditingEditorState,\n Generator_InsertionOrEditingSuggestion,\n} from \"../../types/base/autosuggestions-bare-function\";\nimport { InsertionsApiConfig } from \"../../types/autosuggestions-config/insertions-api-config\";\nimport { EditingApiConfig } from \"../../types/autosuggestions-config/editing-api-config\";\nimport { DocumentPointer } from \"@copilotkit/react-core\";\n\n/**\n * Returns a memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n * The function takes in the text before and after the cursor, and an abort signal.\n * It sends a POST request to the API endpoint with the messages array containing the system message, few shot messages, and user messages.\n * The function returns the suggestion from the API response.\n *\n * @param textareaPurpose - The purpose of the textarea. This is included in the system message.\n * @param apiEndpoint - The API endpoint to send the autosuggestion request to.\n * @param makeSystemMessage - A function that takes in a context string and returns a system message to include in the autosuggestion request.\n * @param fewShotMessages - An array of few shot messages to include in the autosuggestion request.\n * @param contextCategories - The categories of context strings we want to include. By default, we include the (default) \"global\" context category.\n * @returns A memoized function that sends a request to the specified API endpoint to get an autosuggestion for the user's input.\n */\nexport function useMakeStandardInsertionOrEditingFunction(\n textareaPurpose: string,\n contextCategories: string[],\n insertionApiConfig: InsertionsApiConfig,\n editingApiConfig: EditingApiConfig,\n): Generator_InsertionOrEditingSuggestion {\n const { getContextString, copilotApiConfig } = useCopilotContext();\n const headers = {\n ...(copilotApiConfig.publicApiKey\n ? { [COPILOT_CLOUD_PUBLIC_API_KEY_HEADER]: copilotApiConfig.publicApiKey }\n : {}),\n };\n\n const runtimeClient = new CopilotRuntimeClient({\n url: copilotApiConfig.chatApiEndpoint,\n publicApiKey: copilotApiConfig.publicApiKey,\n headers,\n credentials: copilotApiConfig.credentials,\n });\n\n async function runtimeClientResponseToStringStream(\n responsePromise: ReturnType<typeof runtimeClient.generateCopilotResponse>,\n ) {\n const messagesStream = await CopilotRuntimeClient.asStream(responsePromise);\n\n return new ReadableStream({\n async start(controller) {\n const reader = messagesStream.getReader();\n let sentContent = \"\";\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) {\n break;\n }\n\n const messages = convertGqlOutputToMessages(value.generateCopilotResponse.messages);\n\n let newContent = \"\";\n\n for (const message of messages) {\n if (message instanceof TextMessage) {\n newContent += message.content;\n }\n }\n if (newContent) {\n const contentToSend = newContent.slice(sentContent.length);\n controller.enqueue(contentToSend);\n sentContent += contentToSend;\n }\n }\n controller.close();\n },\n });\n }\n\n const insertionFunction = useCallback(\n async (\n editorState: EditingEditorState,\n insertionPrompt: string,\n documents: DocumentPointer[],\n abortSignal: AbortSignal,\n ) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: insertionApiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString(documents, contextCategories),\n ),\n }),\n ...insertionApiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<InsertionPrompt>${insertionPrompt}</InsertionPrompt>`,\n }),\n ];\n\n return runtimeClientResponseToStringStream(\n runtimeClient.generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(messages),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n },\n properties: copilotApiConfig.properties,\n signal: abortSignal,\n }),\n );\n });\n\n return res;\n },\n [insertionApiConfig, getContextString, contextCategories, textareaPurpose],\n );\n\n const editingFunction = useCallback(\n async (\n editorState: EditingEditorState,\n editingPrompt: string,\n documents: DocumentPointer[],\n abortSignal: AbortSignal,\n ) => {\n const res = await retry(async () => {\n const messages: Message[] = [\n new TextMessage({\n role: Role.System,\n content: editingApiConfig.makeSystemPrompt(\n textareaPurpose,\n getContextString(documents, contextCategories),\n ),\n }),\n ...editingApiConfig.fewShotMessages,\n new TextMessage({\n role: Role.User,\n content: `<TextBeforeCursor>${editorState.textBeforeCursor}</TextBeforeCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextToEdit>${editorState.selectedText}</TextToEdit>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<TextAfterCursor>${editorState.textAfterCursor}</TextAfterCursor>`,\n }),\n new TextMessage({\n role: Role.User,\n content: `<EditingPrompt>${editingPrompt}</EditingPrompt>`,\n }),\n ];\n\n const runtimeClient = new CopilotRuntimeClient({\n url: copilotApiConfig.chatApiEndpoint,\n publicApiKey: copilotApiConfig.publicApiKey,\n headers,\n credentials: copilotApiConfig.credentials,\n });\n\n return runtimeClientResponseToStringStream(\n runtimeClient.generateCopilotResponse({\n data: {\n frontend: {\n actions: [],\n url: window.location.href,\n },\n messages: convertMessagesToGqlInput(messages),\n metadata: {\n requestType: CopilotRequestType.TextareaCompletion,\n },\n },\n properties: copilotApiConfig.properties,\n signal: abortSignal,\n }),\n );\n });\n\n return res;\n },\n [editingApiConfig, getContextString, contextCategories, textareaPurpose],\n );\n\n const insertionOrEditingFunction = useCallback(\n async (\n editorState: EditingEditorState,\n insertionPrompt: string,\n documents: DocumentPointer[],\n abortSignal: AbortSignal,\n ) => {\n if (editorState.selectedText === \"\") {\n return await insertionFunction(editorState, insertionPrompt, documents, abortSignal);\n } else {\n return await editingFunction(editorState, insertionPrompt, documents, abortSignal);\n }\n },\n [insertionFunction, editingFunction],\n );\n\n return insertionOrEditingFunction;\n}\n","export function retry<T>(\n fn: () => Promise<T>,\n retriesLeft: number = 2,\n interval: number = 200,\n backoff: number = 1.5,\n): Promise<T> {\n return new Promise((resolve, reject) => {\n fn()\n .then(resolve)\n .catch((error) => {\n if (retriesLeft === 1) {\n reject(error);\n return;\n }\n\n setTimeout(() => {\n retry(fn, retriesLeft - 1, interval * backoff, backoff)\n .then(resolve)\n .catch(reject);\n }, interval);\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAoD;AACpD,wBAAkC;AAClC,mBAA4B;AAC5B,gCAQO;;;ACXA,SAAS,MACd,IACA,cAAsB,GACtB,WAAmB,KACnB,UAAkB,KACN;AACZ,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,OAAG,EACA,KAAK,OAAO,EACZ,MAAM,CAAC,UAAU;AAChB,UAAI,gBAAgB,GAAG;AACrB,eAAO,KAAK;AACZ;AAAA,MACF;AAEA,iBAAW,MAAM;AACf,cAAM,IAAI,cAAc,GAAG,WAAW,SAAS,OAAO,EACnD,KAAK,OAAO,EACZ,MAAM,MAAM;AAAA,MACjB,GAAG,QAAQ;AAAA,IACb,CAAC;AAAA,EACL,CAAC;AACH;;;ADYO,SAAS,0CACd,iBACA,mBACA,oBACA,kBACwC;AACxC,QAAM,EAAE,kBAAkB,iBAAiB,QAAI,qCAAkB;AACjE,QAAM,UAAU,mBACV,iBAAiB,eACjB,EAAE,CAAC,iDAAmC,GAAG,iBAAiB,aAAa,IACvE,CAAC;AAGP,QAAM,gBAAgB,IAAI,+CAAqB;AAAA,IAC7C,KAAK,iBAAiB;AAAA,IACtB,cAAc,iBAAiB;AAAA,IAC/B;AAAA,IACA,aAAa,iBAAiB;AAAA,EAChC,CAAC;AAED,WAAe,oCACb,iBACA;AAAA;AACA,YAAM,iBAAiB,MAAM,+CAAqB,SAAS,eAAe;AAE1E,aAAO,IAAI,eAAe;AAAA,QAClB,MAAM,YAAY;AAAA;AACtB,kBAAM,SAAS,eAAe,UAAU;AACxC,gBAAI,cAAc;AAElB,mBAAO,MAAM;AACX,oBAAM,EAAE,MAAM,MAAM,IAAI,MAAM,OAAO,KAAK;AAC1C,kBAAI,MAAM;AACR;AAAA,cACF;AAEA,oBAAM,eAAW,sDAA2B,MAAM,wBAAwB,QAAQ;AAElF,kBAAI,aAAa;AAEjB,yBAAW,WAAW,UAAU;AAC9B,oBAAI,mBAAmB,uCAAa;AAClC,gCAAc,QAAQ;AAAA,gBACxB;AAAA,cACF;AACA,kBAAI,YAAY;AACd,sBAAM,gBAAgB,WAAW,MAAM,YAAY,MAAM;AACzD,2BAAW,QAAQ,aAAa;AAChC,+BAAe;AAAA,cACjB;AAAA,YACF;AACA,uBAAW,MAAM;AAAA,UACnB;AAAA;AAAA,MACF,CAAC;AAAA,IACH;AAAA;AAEA,QAAM,wBAAoB;AAAA,IACxB,CACE,aACA,iBACA,WACA,gBACG;AACH,YAAM,MAAM,MAAM,MAAM,MAAY;AAClC,cAAM,WAAsB;AAAA,UAC1B,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,mBAAmB;AAAA,cAC1B;AAAA,cACA,iBAAiB,WAAW,iBAAiB;AAAA,YAC/C;AAAA,UACF,CAAC;AAAA,UACD,GAAG,mBAAmB;AAAA,UACtB,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,oBAAoB,YAAY,eAAe;AAAA,UAC1D,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,qBAAqB,YAAY,gBAAgB;AAAA,UAC5D,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,oBAAoB,eAAe;AAAA,UAC9C,CAAC;AAAA,QACH;AAEA,eAAO;AAAA,UACL,cAAc,wBAAwB;AAAA,YACpC,MAAM;AAAA,cACJ,UAAU;AAAA,gBACR,SAAS,CAAC;AAAA,gBACV,KAAK,OAAO,SAAS;AAAA,cACvB;AAAA,cACA,cAAU,qDAA0B,QAAQ;AAAA,cAC5C,UAAU;AAAA,gBACR,aAAa,6CAAmB;AAAA,cAClC;AAAA,YACF;AAAA,YACA,YAAY,iBAAiB;AAAA,YAC7B,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAAA,MACF,EAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,CAAC,oBAAoB,kBAAkB,mBAAmB,eAAe;AAAA,EAC3E;AAEA,QAAM,sBAAkB;AAAA,IACtB,CACE,aACA,eACA,WACA,gBACG;AACH,YAAM,MAAM,MAAM,MAAM,MAAY;AAClC,cAAM,WAAsB;AAAA,UAC1B,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,iBAAiB;AAAA,cACxB;AAAA,cACA,iBAAiB,WAAW,iBAAiB;AAAA,YAC/C;AAAA,UACF,CAAC;AAAA,UACD,GAAG,iBAAiB;AAAA,UACpB,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,qBAAqB,YAAY,gBAAgB;AAAA,UAC5D,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,eAAe,YAAY,YAAY;AAAA,UAClD,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,oBAAoB,YAAY,eAAe;AAAA,UAC1D,CAAC;AAAA,UACD,IAAI,sCAAY;AAAA,YACd,MAAM,+BAAK;AAAA,YACX,SAAS,kBAAkB,aAAa;AAAA,UAC1C,CAAC;AAAA,QACH;AAEA,cAAMA,iBAAgB,IAAI,+CAAqB;AAAA,UAC7C,KAAK,iBAAiB;AAAA,UACtB,cAAc,iBAAiB;AAAA,UAC/B;AAAA,UACA,aAAa,iBAAiB;AAAA,QAChC,CAAC;AAED,eAAO;AAAA,UACLA,eAAc,wBAAwB;AAAA,YACpC,MAAM;AAAA,cACJ,UAAU;AAAA,gBACR,SAAS,CAAC;AAAA,gBACV,KAAK,OAAO,SAAS;AAAA,cACvB;AAAA,cACA,cAAU,qDAA0B,QAAQ;AAAA,cAC5C,UAAU;AAAA,gBACR,aAAa,6CAAmB;AAAA,cAClC;AAAA,YACF;AAAA,YACA,YAAY,iBAAiB;AAAA,YAC7B,QAAQ;AAAA,UACV,CAAC;AAAA,QACH;AAAA,MACF,EAAC;AAED,aAAO;AAAA,IACT;AAAA,IACA,CAAC,kBAAkB,kBAAkB,mBAAmB,eAAe;AAAA,EACzE;AAEA,QAAM,iCAA6B;AAAA,IACjC,CACE,aACA,iBACA,WACA,gBACG;AACH,UAAI,YAAY,iBAAiB,IAAI;AACnC,eAAO,MAAM,kBAAkB,aAAa,iBAAiB,WAAW,WAAW;AAAA,MACrF,OAAO;AACL,eAAO,MAAM,gBAAgB,aAAa,iBAAiB,WAAW,WAAW;AAAA,MACnF;AAAA,IACF;AAAA,IACA,CAAC,mBAAmB,eAAe;AAAA,EACrC;AAEA,SAAO;AACT;","names":["runtimeClient"]}