@tylertech/forge-ai 0.15.3-dev.1 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (446) hide show
  1. package/MIGRATION.md +192 -0
  2. package/README.md +76 -2
  3. package/custom-elements.json +5442 -15097
  4. package/dist/_virtual/_@oxc-project_runtime@0.154.0/helpers/esm/decorate.mjs +9 -0
  5. package/dist/ai-agent-info/ai-agent-info.mjs +4 -78
  6. package/dist/ai-agent-info/ai-agent-info2.mjs +55 -0
  7. package/dist/ai-agent-info/index.d.ts +1 -1
  8. package/dist/ai-agent-info/index.mjs +1 -5
  9. package/dist/ai-agent-selector/ai-agent-selector.d.ts +2 -2
  10. package/dist/ai-agent-selector/ai-agent-selector.mjs +4 -439
  11. package/dist/ai-agent-selector/ai-agent-selector2.mjs +344 -0
  12. package/dist/ai-agent-selector/index.mjs +1 -5
  13. package/dist/ai-artifact/ai-artifact.mjs +4 -39
  14. package/dist/ai-artifact/ai-artifact2.mjs +31 -0
  15. package/dist/ai-artifact/index.d.ts +1 -1
  16. package/dist/ai-artifact/index.mjs +1 -5
  17. package/dist/ai-artifact-card/ai-artifact-card.mjs +4 -142
  18. package/dist/ai-artifact-card/ai-artifact-card2.mjs +103 -0
  19. package/dist/ai-artifact-card/index.d.ts +1 -1
  20. package/dist/ai-artifact-card/index.mjs +1 -5
  21. package/dist/ai-artifact-card-group/ai-artifact-card-group.mjs +4 -137
  22. package/dist/ai-artifact-card-group/ai-artifact-card-group2.mjs +100 -0
  23. package/dist/ai-artifact-card-group/index.d.ts +1 -1
  24. package/dist/ai-artifact-card-group/index.mjs +1 -5
  25. package/dist/ai-assistant-response/ai-assistant-response.d.ts +1 -2
  26. package/dist/ai-assistant-response/ai-assistant-response.mjs +4 -236
  27. package/dist/ai-assistant-response/ai-assistant-response2.mjs +137 -0
  28. package/dist/ai-assistant-response/index.d.ts +1 -1
  29. package/dist/ai-assistant-response/index.mjs +1 -5
  30. package/dist/ai-canvas/ai-canvas.d.ts +3 -3
  31. package/dist/ai-canvas/ai-canvas.mjs +4 -95
  32. package/dist/ai-canvas/ai-canvas2.mjs +74 -0
  33. package/dist/ai-canvas/index.d.ts +1 -1
  34. package/dist/ai-canvas/index.mjs +1 -5
  35. package/dist/ai-chain-of-thought/ai-chain-of-thought.mjs +4 -45
  36. package/dist/ai-chain-of-thought/ai-chain-of-thought2.mjs +35 -0
  37. package/dist/ai-chain-of-thought/index.d.ts +5 -5
  38. package/dist/ai-chain-of-thought/index.mjs +6 -17
  39. package/dist/ai-chain-of-thought/thought-base/index.mjs +1 -5
  40. package/dist/ai-chain-of-thought/thought-base/thought-base.mjs +4 -43
  41. package/dist/ai-chain-of-thought/thought-base/thought-base2.mjs +31 -0
  42. package/dist/ai-chain-of-thought/thought-detail/index.mjs +1 -5
  43. package/dist/ai-chain-of-thought/thought-detail/thought-detail.mjs +4 -34
  44. package/dist/ai-chain-of-thought/thought-detail/thought-detail2.mjs +26 -0
  45. package/dist/ai-chain-of-thought/thought-image/index.mjs +1 -5
  46. package/dist/ai-chain-of-thought/thought-image/thought-image.mjs +4 -43
  47. package/dist/ai-chain-of-thought/thought-image/thought-image2.mjs +30 -0
  48. package/dist/ai-chain-of-thought/thought-search-result/index.mjs +1 -5
  49. package/dist/ai-chain-of-thought/thought-search-result/thought-search-result.mjs +4 -62
  50. package/dist/ai-chain-of-thought/thought-search-result/thought-search-result2.mjs +45 -0
  51. package/dist/ai-chat-header/ai-chat-header.d.ts +7 -5
  52. package/dist/ai-chat-header/ai-chat-header.mjs +4 -439
  53. package/dist/ai-chat-header/ai-chat-header2.mjs +319 -0
  54. package/dist/ai-chat-header/index.d.ts +2 -2
  55. package/dist/ai-chat-header/index.mjs +1 -5
  56. package/dist/ai-chat-interface/ai-chat-interface.d.ts +1 -0
  57. package/dist/ai-chat-interface/ai-chat-interface.mjs +4 -103
  58. package/dist/ai-chat-interface/ai-chat-interface2.mjs +73 -0
  59. package/dist/ai-chat-interface/index.mjs +1 -5
  60. package/dist/ai-client-message/ai-client-message.d.ts +5 -6
  61. package/dist/ai-client-message/ai-client-message.mjs +4 -112
  62. package/dist/ai-client-message/ai-client-message2.mjs +76 -0
  63. package/dist/ai-client-message/index.mjs +1 -5
  64. package/dist/ai-context-chip/ai-context-chip.d.ts +1 -1
  65. package/dist/ai-context-chip/ai-context-chip.mjs +4 -169
  66. package/dist/ai-context-chip/ai-context-chip2.mjs +113 -0
  67. package/dist/ai-context-chip/index.mjs +1 -5
  68. package/dist/ai-context-items/ai-context-items.d.ts +11 -5
  69. package/dist/ai-context-items/ai-context-items.mjs +4 -78
  70. package/dist/ai-context-items/ai-context-items2.mjs +53 -0
  71. package/dist/ai-context-items/index.d.ts +1 -1
  72. package/dist/ai-context-items/index.mjs +1 -5
  73. package/dist/ai-conversations-panel/ai-conversations-panel.d.ts +2 -2
  74. package/dist/ai-conversations-panel/ai-conversations-panel.mjs +4 -632
  75. package/dist/ai-conversations-panel/ai-conversations-panel2.mjs +531 -0
  76. package/dist/ai-conversations-panel/index.mjs +1 -5
  77. package/dist/ai-copy-button/ai-copy-button.mjs +4 -116
  78. package/dist/ai-copy-button/ai-copy-button2.mjs +88 -0
  79. package/dist/ai-copy-button/index.mjs +1 -5
  80. package/dist/ai-dialog/ai-dialog.mjs +4 -304
  81. package/dist/ai-dialog/ai-dialog2.mjs +237 -0
  82. package/dist/ai-dialog/index.d.ts +1 -1
  83. package/dist/ai-dialog/index.mjs +1 -5
  84. package/dist/ai-disclaimer/ai-disclaimer.mjs +4 -70
  85. package/dist/ai-disclaimer/ai-disclaimer2.mjs +46 -0
  86. package/dist/ai-disclaimer/index.d.ts +1 -1
  87. package/dist/ai-disclaimer/index.mjs +1 -5
  88. package/dist/ai-dropdown-menu/ai-dropdown-menu-item-group.mjs +4 -80
  89. package/dist/ai-dropdown-menu/ai-dropdown-menu-item-group2.mjs +51 -0
  90. package/dist/ai-dropdown-menu/ai-dropdown-menu-item.d.ts +5 -1
  91. package/dist/ai-dropdown-menu/ai-dropdown-menu-item.mjs +4 -330
  92. package/dist/ai-dropdown-menu/ai-dropdown-menu-item2.mjs +280 -0
  93. package/dist/ai-dropdown-menu/ai-dropdown-menu-separator.mjs +4 -26
  94. package/dist/ai-dropdown-menu/ai-dropdown-menu-separator2.mjs +19 -0
  95. package/dist/ai-dropdown-menu/ai-dropdown-menu.d.ts +5 -0
  96. package/dist/ai-dropdown-menu/ai-dropdown-menu.mjs +4 -351
  97. package/dist/ai-dropdown-menu/ai-dropdown-menu2.mjs +268 -0
  98. package/dist/ai-dropdown-menu/index.d.ts +1 -0
  99. package/dist/ai-dropdown-menu/index.mjs +5 -10
  100. package/dist/ai-dropdown-menu/navigation-controller.d.ts +9 -1
  101. package/dist/ai-dropdown-menu/navigation-controller.mjs +214 -204
  102. package/dist/ai-dropdown-menu/selection-manager.mjs +202 -182
  103. package/dist/ai-edit-thread/ai-edit-thread.d.ts +1 -1
  104. package/dist/ai-edit-thread/ai-edit-thread.mjs +4 -137
  105. package/dist/ai-edit-thread/ai-edit-thread2.mjs +96 -0
  106. package/dist/ai-edit-thread/index.d.ts +1 -1
  107. package/dist/ai-edit-thread/index.mjs +1 -5
  108. package/dist/ai-empty-state/ai-empty-state.mjs +4 -38
  109. package/dist/ai-empty-state/ai-empty-state2.mjs +28 -0
  110. package/dist/ai-empty-state/index.d.ts +1 -1
  111. package/dist/ai-empty-state/index.mjs +1 -5
  112. package/dist/ai-error-message/ai-error-message.mjs +4 -80
  113. package/dist/ai-error-message/ai-error-message2.mjs +62 -0
  114. package/dist/ai-error-message/index.mjs +1 -5
  115. package/dist/ai-fab/ai-fab.mjs +4 -81
  116. package/dist/ai-fab/ai-fab2.mjs +54 -0
  117. package/dist/ai-fab/index.d.ts +1 -1
  118. package/dist/ai-fab/index.mjs +1 -5
  119. package/dist/ai-file-picker/ai-file-picker.d.ts +1 -0
  120. package/dist/ai-file-picker/ai-file-picker.mjs +4 -224
  121. package/dist/ai-file-picker/ai-file-picker2.mjs +172 -0
  122. package/dist/ai-file-picker/index.mjs +1 -4
  123. package/dist/ai-gradient-container/ai-gradient-container.mjs +4 -61
  124. package/dist/ai-gradient-container/ai-gradient-container2.mjs +38 -0
  125. package/dist/ai-gradient-container/index.d.ts +1 -1
  126. package/dist/ai-gradient-container/index.mjs +1 -5
  127. package/dist/ai-icon/ai-icon.d.ts +3 -0
  128. package/dist/ai-icon/ai-icon.mjs +4 -71
  129. package/dist/ai-icon/ai-icon2.mjs +41 -0
  130. package/dist/ai-icon/index.d.ts +1 -1
  131. package/dist/ai-icon/index.mjs +1 -5
  132. package/dist/ai-message-thread/ai-message-thread.d.ts +4 -3
  133. package/dist/ai-message-thread/ai-message-thread.mjs +4 -360
  134. package/dist/ai-message-thread/ai-message-thread2.mjs +279 -0
  135. package/dist/ai-message-thread/index.mjs +1 -5
  136. package/dist/ai-modal/ai-modal.mjs +4 -178
  137. package/dist/ai-modal/ai-modal2.mjs +141 -0
  138. package/dist/ai-modal/index.mjs +1 -4
  139. package/dist/ai-prompt/ai-prompt.d.ts +10 -6
  140. package/dist/ai-prompt/ai-prompt.mjs +4 -534
  141. package/dist/ai-prompt/ai-prompt2.mjs +438 -0
  142. package/dist/ai-prompt/index.mjs +1 -5
  143. package/dist/ai-reasoning/ai-reasoning.mjs +4 -44
  144. package/dist/ai-reasoning/ai-reasoning2.mjs +35 -0
  145. package/dist/ai-reasoning/index.d.ts +2 -2
  146. package/dist/ai-reasoning/index.mjs +4 -8
  147. package/dist/ai-reasoning/reasoning-content/index.d.ts +1 -1
  148. package/dist/ai-reasoning/reasoning-content/index.mjs +1 -5
  149. package/dist/ai-reasoning/reasoning-content/reasoning-content.mjs +4 -90
  150. package/dist/ai-reasoning/reasoning-content/reasoning-content2.mjs +68 -0
  151. package/dist/ai-reasoning-header/ai-reasoning-header.d.ts +7 -1
  152. package/dist/ai-reasoning-header/ai-reasoning-header.mjs +4 -68
  153. package/dist/ai-reasoning-header/ai-reasoning-header2.mjs +51 -0
  154. package/dist/ai-reasoning-header/index.d.ts +1 -1
  155. package/dist/ai-reasoning-header/index.mjs +1 -5
  156. package/dist/ai-response-message/ai-response-message.mjs +4 -25
  157. package/dist/ai-response-message/ai-response-message2.mjs +17 -0
  158. package/dist/ai-response-message/index.mjs +1 -5
  159. package/dist/ai-response-message-toolbar/ai-response-message-toolbar.d.ts +1 -1
  160. package/dist/ai-response-message-toolbar/ai-response-message-toolbar.mjs +4 -230
  161. package/dist/ai-response-message-toolbar/ai-response-message-toolbar2.mjs +171 -0
  162. package/dist/ai-response-message-toolbar/index.mjs +1 -5
  163. package/dist/ai-sidebar/ai-sidebar.d.ts +4 -4
  164. package/dist/ai-sidebar/ai-sidebar.mjs +4 -256
  165. package/dist/ai-sidebar/ai-sidebar2.mjs +211 -0
  166. package/dist/ai-sidebar/index.d.ts +2 -2
  167. package/dist/ai-sidebar/index.mjs +1 -5
  168. package/dist/ai-slash-command-menu/ai-slash-command-menu.d.ts +2 -1
  169. package/dist/ai-slash-command-menu/ai-slash-command-menu.mjs +4 -200
  170. package/dist/ai-slash-command-menu/ai-slash-command-menu2.mjs +160 -0
  171. package/dist/ai-slash-command-menu/index.mjs +1 -5
  172. package/dist/ai-spinner/ai-spinner.mjs +4 -41
  173. package/dist/ai-spinner/ai-spinner2.mjs +29 -0
  174. package/dist/ai-spinner/index.d.ts +1 -1
  175. package/dist/ai-spinner/index.mjs +1 -5
  176. package/dist/ai-steps/ai-steps.mjs +4 -163
  177. package/dist/ai-steps/ai-steps2.mjs +133 -0
  178. package/dist/ai-steps/index.d.ts +1 -1
  179. package/dist/ai-steps/index.mjs +1 -5
  180. package/dist/ai-suggestions/ai-suggestions.d.ts +2 -5
  181. package/dist/ai-suggestions/ai-suggestions.mjs +4 -164
  182. package/dist/ai-suggestions/ai-suggestions2.mjs +125 -0
  183. package/dist/ai-suggestions/index.d.ts +2 -1
  184. package/dist/ai-suggestions/index.mjs +1 -5
  185. package/dist/ai-thinking-indicator/ai-thinking-indicator.d.ts +2 -1
  186. package/dist/ai-thinking-indicator/ai-thinking-indicator.mjs +4 -160
  187. package/dist/ai-thinking-indicator/ai-thinking-indicator2.mjs +143 -0
  188. package/dist/ai-thinking-indicator/index.d.ts +1 -1
  189. package/dist/ai-thinking-indicator/index.mjs +1 -5
  190. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.d.ts +2 -2
  191. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.mjs +4 -152
  192. package/dist/ai-thread-actions-menu/ai-thread-actions-menu2.mjs +109 -0
  193. package/dist/ai-thread-actions-menu/index.d.ts +1 -1
  194. package/dist/ai-thread-actions-menu/index.mjs +1 -5
  195. package/dist/ai-threads-search/ai-threads-search.d.ts +3 -4
  196. package/dist/ai-threads-search/ai-threads-search.mjs +4 -602
  197. package/dist/ai-threads-search/ai-threads-search2.mjs +495 -0
  198. package/dist/ai-threads-search/index.d.ts +1 -1
  199. package/dist/ai-threads-search/index.mjs +1 -5
  200. package/dist/ai-tool-call/ai-tool-call.d.ts +21 -0
  201. package/dist/ai-tool-call/ai-tool-call.mjs +4 -0
  202. package/dist/ai-tool-call/ai-tool-call2.mjs +132 -0
  203. package/dist/{ai-chatbot → ai-tool-call}/create-tool-renderer.d.ts +1 -1
  204. package/dist/ai-tool-call/create-tool-renderer.mjs +10 -0
  205. package/dist/ai-tool-call/index.d.ts +6 -0
  206. package/dist/ai-tool-call/index.mjs +5 -0
  207. package/dist/{ai-chatbot → ai-tool-call}/tool-canvas.d.ts +1 -1
  208. package/dist/ai-tool-call/tool-canvas.mjs +135 -0
  209. package/dist/ai-tool-call/utils.d.ts +12 -0
  210. package/dist/ai-tool-call/utils.mjs +20 -0
  211. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.d.ts +1 -1
  212. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.mjs +4 -331
  213. package/dist/ai-tool-call-indicator/ai-tool-call-indicator2.mjs +225 -0
  214. package/dist/ai-tool-call-indicator/index.mjs +1 -5
  215. package/dist/ai-user-message/ai-user-message.mjs +4 -151
  216. package/dist/ai-user-message/ai-user-message2.mjs +105 -0
  217. package/dist/ai-user-message/index.mjs +1 -5
  218. package/dist/ai-user-message-toolbar/ai-user-message-toolbar.mjs +4 -160
  219. package/dist/ai-user-message-toolbar/ai-user-message-toolbar2.mjs +102 -0
  220. package/dist/ai-user-message-toolbar/index.mjs +1 -5
  221. package/dist/ai-voice-input/ai-voice-input.d.ts +1 -1
  222. package/dist/ai-voice-input/ai-voice-input.mjs +4 -113
  223. package/dist/ai-voice-input/ai-voice-input2.mjs +92 -0
  224. package/dist/ai-voice-input/index.d.ts +1 -1
  225. package/dist/ai-voice-input/index.mjs +1 -5
  226. package/dist/core/drag-controller.mjs +196 -221
  227. package/dist/core/index.d.ts +3 -2
  228. package/dist/core/index.mjs +7 -8
  229. package/dist/core/overlay/index.mjs +1 -4
  230. package/dist/core/overlay/overlay.d.ts +1 -1
  231. package/dist/core/overlay/overlay.mjs +4 -180
  232. package/dist/core/overlay/overlay2.mjs +146 -0
  233. package/dist/core/popover/index.mjs +1 -4
  234. package/dist/core/popover/popover.mjs +4 -98
  235. package/dist/core/popover/popover2.mjs +71 -0
  236. package/dist/core/resize-controller.mjs +132 -154
  237. package/dist/core/tooltip/index.mjs +1 -4
  238. package/dist/core/tooltip/tooltip.mjs +4 -279
  239. package/dist/core/tooltip/tooltip2.mjs +213 -0
  240. package/dist/index.d.ts +45 -53
  241. package/dist/index.mjs +100 -214
  242. package/dist/jsx.d.ts +895 -0
  243. package/dist/tools/ai-data-table/ai-data-table.d.ts +1 -2
  244. package/dist/tools/ai-data-table/ai-data-table.mjs +4 -257
  245. package/dist/tools/ai-data-table/ai-data-table2.mjs +185 -0
  246. package/dist/tools/ai-data-table/index.d.ts +0 -1
  247. package/dist/tools/ai-data-table/index.mjs +1 -6
  248. package/dist/tools/ai-paginator/ai-paginator.d.ts +14 -0
  249. package/dist/tools/ai-paginator/ai-paginator.mjs +4 -115
  250. package/dist/tools/ai-paginator/ai-paginator2.mjs +90 -0
  251. package/dist/tools/ai-paginator/index.mjs +1 -4
  252. package/dist/tools/ai-steps/ai-steps.d.ts +2 -3
  253. package/dist/tools/ai-steps/ai-steps.mjs +4 -49
  254. package/dist/tools/ai-steps/ai-steps2.mjs +30 -0
  255. package/dist/tools/ai-steps/index.d.ts +0 -1
  256. package/dist/tools/ai-steps/index.mjs +1 -6
  257. package/dist/tools/index.d.ts +3 -3
  258. package/dist/tools/index.mjs +7 -12
  259. package/dist/types/chat.d.ts +102 -0
  260. package/dist/types/feature.d.ts +1 -0
  261. package/dist/types/file.d.ts +36 -0
  262. package/dist/types/index.d.ts +6 -0
  263. package/dist/types/index.mjs +0 -0
  264. package/dist/types/thread.d.ts +14 -0
  265. package/dist/types/tool.d.ts +197 -0
  266. package/dist/utils/csv-utils.mjs +37 -57
  267. package/dist/utils/delete-thread-controller.d.ts +1 -1
  268. package/dist/utils/delete-thread-controller.mjs +48 -71
  269. package/dist/utils/dom.d.ts +14 -0
  270. package/dist/utils/dom.mjs +30 -0
  271. package/dist/utils/format.d.ts +9 -0
  272. package/dist/utils/format.mjs +27 -0
  273. package/dist/utils/index.d.ts +9 -6
  274. package/dist/utils/index.mjs +6 -16
  275. package/dist/utils/infinite-scroll-controller.mjs +88 -94
  276. package/dist/utils/keyboard-navigation-controller.mjs +62 -70
  277. package/dist/utils/markdown-stream-controller.mjs +48 -0
  278. package/dist/utils/markdown.d.ts +10 -1
  279. package/dist/utils/markdown.mjs +261 -40
  280. package/dist/utils/storage-utils.mjs +30 -24
  281. package/package.json +40 -104
  282. package/dist/ai-agent-info/ai-agent-info.scss.mjs +0 -4
  283. package/dist/ai-agent-selector/ai-agent-selector.scss.mjs +0 -4
  284. package/dist/ai-artifact/ai-artifact.scss.mjs +0 -4
  285. package/dist/ai-artifact-card/ai-artifact-card.scss.mjs +0 -283
  286. package/dist/ai-artifact-card-group/ai-artifact-card-group.scss.mjs +0 -173
  287. package/dist/ai-assistant-response/ai-assistant-response.scss.mjs +0 -4
  288. package/dist/ai-attachment/ai-attachment.d.ts +0 -39
  289. package/dist/ai-attachment/ai-attachment.mjs +0 -130
  290. package/dist/ai-attachment/ai-attachment.scss.mjs +0 -4
  291. package/dist/ai-attachment/index.d.ts +0 -1
  292. package/dist/ai-attachment/index.mjs +0 -5
  293. package/dist/ai-button/ai-button.d.ts +0 -21
  294. package/dist/ai-button/ai-button.mjs +0 -68
  295. package/dist/ai-button/ai-button.scss.mjs +0 -4
  296. package/dist/ai-button/index.d.ts +0 -1
  297. package/dist/ai-button/index.mjs +0 -5
  298. package/dist/ai-canvas/ai-canvas.scss.mjs +0 -4
  299. package/dist/ai-chain-of-thought/ai-chain-of-thought.scss.mjs +0 -4
  300. package/dist/ai-chain-of-thought/thought-base/thought-base.scss.mjs +0 -4
  301. package/dist/ai-chain-of-thought/thought-detail/thought-detail.scss.mjs +0 -4
  302. package/dist/ai-chain-of-thought/thought-image/thought-image.scss.mjs +0 -4
  303. package/dist/ai-chain-of-thought/thought-search-result/thought-search-result.scss.mjs +0 -4
  304. package/dist/ai-chat-header/ai-chat-header.scss.mjs +0 -4
  305. package/dist/ai-chat-interface/ai-chat-interface.scss.mjs +0 -4
  306. package/dist/ai-chatbot/ag-ui-adapter.d.ts +0 -24
  307. package/dist/ai-chatbot/ag-ui-adapter.mjs +0 -388
  308. package/dist/ai-chatbot/agent-adapter.d.ts +0 -310
  309. package/dist/ai-chatbot/agent-adapter.mjs +0 -221
  310. package/dist/ai-chatbot/agent-runner.d.ts +0 -41
  311. package/dist/ai-chatbot/agent-runner.mjs +0 -265
  312. package/dist/ai-chatbot/ai-chatbot-base.d.ts +0 -179
  313. package/dist/ai-chatbot/ai-chatbot-base.mjs +0 -684
  314. package/dist/ai-chatbot/ai-chatbot-tool-call.d.ts +0 -19
  315. package/dist/ai-chatbot/ai-chatbot-tool-call.mjs +0 -182
  316. package/dist/ai-chatbot/ai-chatbot-tool-call.scss.mjs +0 -4
  317. package/dist/ai-chatbot/ai-chatbot.d.ts +0 -196
  318. package/dist/ai-chatbot/ai-chatbot.mjs +0 -502
  319. package/dist/ai-chatbot/ai-chatbot.scss.mjs +0 -4
  320. package/dist/ai-chatbot/create-tool-renderer.mjs +0 -16
  321. package/dist/ai-chatbot/event-emitter.d.ts +0 -43
  322. package/dist/ai-chatbot/event-emitter.mjs +0 -81
  323. package/dist/ai-chatbot/file-upload-manager.d.ts +0 -27
  324. package/dist/ai-chatbot/file-upload-manager.mjs +0 -106
  325. package/dist/ai-chatbot/http-agent-with-credentials.d.ts +0 -8
  326. package/dist/ai-chatbot/http-agent-with-credentials.mjs +0 -14
  327. package/dist/ai-chatbot/index.d.ts +0 -18
  328. package/dist/ai-chatbot/index.mjs +0 -40
  329. package/dist/ai-chatbot/markdown-stream-controller.mjs +0 -50
  330. package/dist/ai-chatbot/message-state-controller.d.ts +0 -72
  331. package/dist/ai-chatbot/message-state-controller.mjs +0 -392
  332. package/dist/ai-chatbot/request-serialization.d.ts +0 -33
  333. package/dist/ai-chatbot/request-serialization.mjs +0 -31
  334. package/dist/ai-chatbot/tool-canvas.mjs +0 -128
  335. package/dist/ai-chatbot/types.d.ts +0 -582
  336. package/dist/ai-chatbot/utils.d.ts +0 -49
  337. package/dist/ai-chatbot/utils.mjs +0 -114
  338. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.d.ts +0 -190
  339. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.mjs +0 -986
  340. package/dist/ai-chatbot-launcher/ai-chatbot-launcher.scss.mjs +0 -4
  341. package/dist/ai-chatbot-launcher/index.d.ts +0 -1
  342. package/dist/ai-chatbot-launcher/index.mjs +0 -5
  343. package/dist/ai-client-message/ai-client-message.scss.mjs +0 -4
  344. package/dist/ai-confirmation-prompt/ai-confirmation-prompt.d.ts +0 -34
  345. package/dist/ai-confirmation-prompt/ai-confirmation-prompt.mjs +0 -134
  346. package/dist/ai-confirmation-prompt/ai-confirmation-prompt.scss.mjs +0 -4
  347. package/dist/ai-confirmation-prompt/index.d.ts +0 -1
  348. package/dist/ai-confirmation-prompt/index.mjs +0 -5
  349. package/dist/ai-context-chip/ai-context-chip.scss.mjs +0 -4
  350. package/dist/ai-context-items/ai-context-items.scss.mjs +0 -4
  351. package/dist/ai-conversations-panel/ai-conversations-panel.scss.mjs +0 -4
  352. package/dist/ai-copy-button/ai-copy-button.scss.mjs +0 -4
  353. package/dist/ai-dialog/ai-dialog.scss.mjs +0 -4
  354. package/dist/ai-disclaimer/ai-disclaimer.scss.mjs +0 -4
  355. package/dist/ai-dropdown-menu/ai-dropdown-menu-item-group.scss.mjs +0 -4
  356. package/dist/ai-dropdown-menu/ai-dropdown-menu-item.scss.mjs +0 -4
  357. package/dist/ai-dropdown-menu/ai-dropdown-menu-separator.scss.mjs +0 -4
  358. package/dist/ai-dropdown-menu/ai-dropdown-menu.scss.mjs +0 -4
  359. package/dist/ai-edit-thread/ai-edit-thread.scss.mjs +0 -4
  360. package/dist/ai-embedded-chat/ai-embedded-chat.d.ts +0 -64
  361. package/dist/ai-embedded-chat/ai-embedded-chat.mjs +0 -173
  362. package/dist/ai-embedded-chat/ai-embedded-chat.scss.mjs +0 -4
  363. package/dist/ai-embedded-chat/index.d.ts +0 -1
  364. package/dist/ai-embedded-chat/index.mjs +0 -5
  365. package/dist/ai-empty-state/ai-empty-state.scss.mjs +0 -4
  366. package/dist/ai-error-message/ai-error-message.scss.mjs +0 -4
  367. package/dist/ai-fab/ai-fab.scss.mjs +0 -4
  368. package/dist/ai-file-picker/ai-file-picker.scss.mjs +0 -4
  369. package/dist/ai-floating-chat/ai-floating-chat.d.ts +0 -53
  370. package/dist/ai-floating-chat/ai-floating-chat.mjs +0 -147
  371. package/dist/ai-floating-chat/ai-floating-chat.scss.mjs +0 -4
  372. package/dist/ai-floating-chat/index.d.ts +0 -1
  373. package/dist/ai-floating-chat/index.mjs +0 -5
  374. package/dist/ai-gradient-container/ai-gradient-container.scss.mjs +0 -4
  375. package/dist/ai-icon/ai-icon.scss.mjs +0 -4
  376. package/dist/ai-icon-button/ai-icon-button.d.ts +0 -19
  377. package/dist/ai-icon-button/ai-icon-button.mjs +0 -66
  378. package/dist/ai-icon-button/ai-icon-button.scss.mjs +0 -4
  379. package/dist/ai-icon-button/index.d.ts +0 -1
  380. package/dist/ai-icon-button/index.mjs +0 -5
  381. package/dist/ai-message-thread/ai-message-thread.scss.mjs +0 -4
  382. package/dist/ai-modal/ai-modal.scss.mjs +0 -4
  383. package/dist/ai-prompt/ai-prompt.scss.mjs +0 -4
  384. package/dist/ai-prompt/prompt-button/index.d.ts +0 -1
  385. package/dist/ai-prompt/prompt-button/index.mjs +0 -5
  386. package/dist/ai-prompt/prompt-button/prompt-button.d.ts +0 -16
  387. package/dist/ai-prompt/prompt-button/prompt-button.mjs +0 -40
  388. package/dist/ai-prompt/prompt-button/prompt-button.scss.mjs +0 -4
  389. package/dist/ai-reasoning/ai-reasoning.scss.mjs +0 -4
  390. package/dist/ai-reasoning/reasoning-content/reasoning-content.scss.mjs +0 -4
  391. package/dist/ai-reasoning-header/ai-reasoning-header.scss.mjs +0 -4
  392. package/dist/ai-response-message/ai-response-message.scss.mjs +0 -4
  393. package/dist/ai-response-message-toolbar/ai-response-message-toolbar.scss.mjs +0 -4
  394. package/dist/ai-sidebar/ai-sidebar.scss.mjs +0 -4
  395. package/dist/ai-sidebar-chat/ai-sidebar-chat.d.ts +0 -54
  396. package/dist/ai-sidebar-chat/ai-sidebar-chat.mjs +0 -163
  397. package/dist/ai-sidebar-chat/ai-sidebar-chat.scss.mjs +0 -4
  398. package/dist/ai-sidebar-chat/index.d.ts +0 -1
  399. package/dist/ai-sidebar-chat/index.mjs +0 -5
  400. package/dist/ai-slash-command-menu/ai-slash-command-menu.scss.mjs +0 -4
  401. package/dist/ai-spinner/ai-spinner.scss.mjs +0 -4
  402. package/dist/ai-steps/ai-steps.scss.mjs +0 -4
  403. package/dist/ai-suggestions/ai-suggestions.scss.mjs +0 -500
  404. package/dist/ai-thinking-indicator/ai-thinking-indicator.scss.mjs +0 -143
  405. package/dist/ai-thread-actions-menu/ai-thread-actions-menu.scss.mjs +0 -4
  406. package/dist/ai-threads/ai-threads.d.ts +0 -82
  407. package/dist/ai-threads/ai-threads.mjs +0 -343
  408. package/dist/ai-threads/ai-threads.scss.mjs +0 -4
  409. package/dist/ai-threads/index.d.ts +0 -1
  410. package/dist/ai-threads/index.mjs +0 -5
  411. package/dist/ai-threads-search/ai-threads-search.scss.mjs +0 -4
  412. package/dist/ai-tool-call-indicator/ai-tool-call-indicator.scss.mjs +0 -4
  413. package/dist/ai-user-message/ai-user-message.scss.mjs +0 -4
  414. package/dist/ai-user-message-toolbar/ai-user-message-toolbar.scss.mjs +0 -4
  415. package/dist/ai-voice-input/ai-voice-input.scss.mjs +0 -4
  416. package/dist/core/canvas-controller.d.ts +0 -81
  417. package/dist/core/canvas-controller.mjs +0 -221
  418. package/dist/core/chatbot-core-controller.d.ts +0 -57
  419. package/dist/core/chatbot-core-controller.mjs +0 -545
  420. package/dist/core/overlay/overlay.scss.mjs +0 -4
  421. package/dist/core/popover/popover.scss.mjs +0 -4
  422. package/dist/core/tooltip/tooltip.scss.mjs +0 -4
  423. package/dist/tools/ai-data-table/ai-data-table-definition.d.ts +0 -2
  424. package/dist/tools/ai-data-table/ai-data-table-definition.mjs +0 -43
  425. package/dist/tools/ai-data-table/ai-data-table.scss.mjs +0 -4
  426. package/dist/tools/ai-mcp-app/ai-mcp-app.d.ts +0 -70
  427. package/dist/tools/ai-mcp-app/ai-mcp-app.mjs +0 -589
  428. package/dist/tools/ai-mcp-app/ai-mcp-app.scss.mjs +0 -4
  429. package/dist/tools/ai-mcp-app/index.d.ts +0 -3
  430. package/dist/tools/ai-mcp-app/index.mjs +0 -6
  431. package/dist/tools/ai-mcp-app/mcp-app-bridge-controller.d.ts +0 -60
  432. package/dist/tools/ai-mcp-app/mcp-app-bridge-controller.mjs +0 -147
  433. package/dist/tools/ai-mcp-app/mcp-app-bridge-types.d.ts +0 -124
  434. package/dist/tools/ai-mcp-app/mcp-app-bridge.d.ts +0 -41
  435. package/dist/tools/ai-mcp-app/mcp-app-bridge.mjs +0 -293
  436. package/dist/tools/ai-mcp-app/mcp-app-context.d.ts +0 -46
  437. package/dist/tools/ai-mcp-app/mcp-app-context.mjs +0 -5
  438. package/dist/tools/ai-paginator/ai-paginator.scss.mjs +0 -4
  439. package/dist/tools/ai-steps/ai-steps-definition.d.ts +0 -2
  440. package/dist/tools/ai-steps/ai-steps-definition.mjs +0 -51
  441. package/dist/tools/ai-steps/ai-steps.scss.mjs +0 -4
  442. package/dist/utils/inert-outside.d.ts +0 -7
  443. package/dist/utils/inert-outside.mjs +0 -28
  444. package/dist/utils.d.ts +0 -32
  445. package/dist/utils.mjs +0 -57
  446. /package/dist/{ai-chatbot → utils}/markdown-stream-controller.d.ts +0 -0
package/MIGRATION.md ADDED
@@ -0,0 +1,192 @@
1
+ # Migrating to @tylertech/forge-ai 0.16
2
+
3
+ ## TL;DR
4
+
5
+ - `@tylertech/forge-ai` is now presentational primitives only and lives in the Forge monorepo (`packages/forge-ai`). The package name is unchanged.
6
+ - The chat composition layer (chatbot, adapters, runner, floating/sidebar/launcher form factors) is removed. Composition is now the consumer's responsibility; build it from these primitives.
7
+ - `forge-ai-threads` and `forge-ai-embedded-chat` are removed.
8
+ - `forge-ai-button`, `forge-ai-icon-button`, `forge-prompt-button`, `forge-ai-confirmation-prompt` and `forge-ai-attachment` are removed (see [Removed: unused elements](#removed-unused-elements)).
9
+ - `forge-ai-chatbot-tool-call` is now `forge-ai-tool-call`. The paginator event `page-change` is now `forge-ai-paginator-page-change`, and the `toggle` event on `forge-ai-reasoning-header` is now `forge-ai-reasoning-header-toggle` (fixing reasoning headers closing parent dialogs).
10
+ - New subpaths: `/types`, `/ai-tool-call`, and `/jsx`. Many types moved to `/types`.
11
+ - `@ag-ui/client`, `@ag-ui/core`, and `uuid` are no longer dependencies.
12
+ - `@tylertech/forge-ai-react` is discontinued. Use React 19 with the `/jsx` typings.
13
+ - Some default accessible labels changed to neutral wording (see [Changed defaults](#changed-defaults)).
14
+
15
+ ## Package moved
16
+
17
+ The source for `@tylertech/forge-ai` now lives in the [tyler-technologies-oss/forge](https://github.com/tyler-technologies-oss/forge) monorepo under `packages/forge-ai`. The npm package name is unchanged. The previous `tyler-technologies-oss/forge-ai` repository is archived.
18
+
19
+ ## Removed: composition components
20
+
21
+ The chat composition layer (engine, adapters, runner, form-factor shells) is no longer part of this package. Composition is now the consumer's responsibility; build it from the primitives that remain here.
22
+
23
+ | Removed tag | Removed class |
24
+ | --------------------------- | ----------------------------------------------------------------- |
25
+ | `forge-ai-chatbot` | `AiChatbotComponent`, `AiChatbotComponentTagName` |
26
+ | `forge-ai-chatbot-launcher` | `AiChatbotLauncherComponent`, `AiChatbotLauncherComponentTagName` |
27
+ | `forge-ai-floating-chat` | `AiFloatingChatComponent`, `AiFloatingChatComponentTagName` |
28
+ | `forge-ai-sidebar-chat` | `AiSidebarChatComponent`, `AiSidebarChatComponentTagName` |
29
+
30
+ Removed non-element symbols (previously exported from `@tylertech/forge-ai/ai-chatbot` and `@tylertech/forge-ai/core`):
31
+
32
+ - Base and engine: `AiChatbotBase`, `ChatbotCoreController` (+ `ChatbotCoreCallbacks`, `ChatbotCoreControllerConfig`), `CanvasController` (+ `CanvasControllerConfig`, `CanvasContent`, `CanvasOpenEventData`, `OpenCanvasOptions`), `MessageStateController`, `FileUploadManager`
33
+ - Adapters: `AgentAdapter` and all its event types (`MessageStartEvent`, `MessageDeltaEvent`, `MessageEndEvent`, `ToolCallEvent`, `ToolCallStartEvent`, `ToolCallArgsEvent`, `ToolCallEndEvent`, `AdapterState`, `ErrorEvent`, `CustomAgentEvent`, `RawAgentEvent`, `RunStartedAgentEvent`, `StepStartedAgentEvent`, `StepFinishedAgentEvent`, `StateSnapshotAgentEvent`, `StateDeltaAgentEvent`, `ActivitySnapshotAgentEvent`, `ActivityDeltaAgentEvent`), `AgentRunner` (+ `AgentRunnerConfig`, `AgentRunnerResult`), `AgUiAdapter`, `HttpAgentWithCredentials`
34
+ - Events: `EventEmitter`, `SubscriptionManager`, `Subscription`
35
+ - Serialization: `toRequestMessages`, `toRequestToolCall`, `RequestMessage`, `RequestToolCall`
36
+ - Helpers: `generateId`, `downloadFile`, `fileAttachmentsToContextItems`, `formatToolCallForExport`, `formatChatTranscript`, `createChatExportFilename`, `forwardCancelableEvent`
37
+ - Tool definitions: `displayDataTableTool`, `displayStepsTool` (the `forge-ai-tool-data-table` and `forge-ai-tool-steps` elements remain)
38
+ - Composition event data types: `ForgeAiChatbotMessageEventData`, `ForgeAiChatbotToolCallEventData`, `ForgeAiChatbotErrorEventData`, `ForgeAiChatbotResponseFeedbackEventData`, `ForgeAiChatbotAgentChangeEventData`, `ForgeAiChatbotFileSelectEventData`, `ForgeAiChatbotFileRemoveEventData`, `ForgeAiChatbotContextRemoveEventData`, `ForgeAiChatbotThreadSelectEventData`, `ForgeAiChatbotThreadSearchEventData`, `ForgeAiChatbotThreadLoadMoreEventData`, `ForgeAiChatbotThreadRenameEventData`, `ForgeAiChatbotThreadDeleteEventData`
39
+
40
+ Also removed: `LauncherViewState`, `ForgeAiSidebarChatResizeEventData`, `AgUiAdapterConfig`, `MessageStateControllerConfig`, `FileUploadManagerConfig`.
41
+
42
+ `@tylertech/forge-ai/tools` no longer exports `displayDataTableTool` or `displayStepsTool`.
43
+
44
+ The `forge-ai-chatbot-*` DOM events fired by those elements no longer exist here.
45
+
46
+ ## Removed: threads and embedded form factors
47
+
48
+ | Removed tag | Removed class |
49
+ | ------------------------ | ----------------------------------------------------------------------------- |
50
+ | `forge-ai-threads` | `AiThreadsComponent`, `AiThreadsComponentTagName`, `ForgeAiThreads*EventData` |
51
+ | `forge-ai-embedded-chat` | `AiEmbeddedChatComponent`, `AiEmbeddedChatComponentTagName` |
52
+
53
+ `forge-ai-threads-search`, `forge-ai-conversations-panel`, `forge-ai-edit-thread`, and `forge-ai-thread-actions-menu` remain. `forge-ai-threads-search` no longer documents slotting into `forge-ai-threads`. Its `ForgeAiThreadsSearch*EventData` types are unchanged.
54
+
55
+ ## Removed: @tylertech/forge-ai-react
56
+
57
+ The `@tylertech/forge-ai-react` wrapper package is not carried forward and will be deprecated on npm. React 19 supports custom elements natively, so `@tylertech/forge-ai` now ships JSX typings instead. The typings compile under `@types/react` 18, but React 18's runtime does not support these elements correctly, so use React 19.
58
+
59
+ 1. Remove `@tylertech/forge-ai-react`.
60
+ 2. Add the types-only subpath to `compilerOptions.types` in `tsconfig.json` (this disables automatic inclusion of other `@types/*` packages, so list those too):
61
+
62
+ ```json
63
+ {
64
+ "compilerOptions": {
65
+ "types": ["@tylertech/forge-ai/jsx"]
66
+ }
67
+ }
68
+ ```
69
+
70
+ 3. Register elements with side-effect imports and use the tags directly. Event props are `on` plus the event name exactly as dispatched (React 19 calls `addEventListener` with the name after `on`, no case conversion).
71
+
72
+ Before:
73
+
74
+ ```tsx
75
+ import { ForgeAiPrompt } from '@tylertech/forge-ai-react';
76
+
77
+ <ForgeAiPrompt placeholder="Ask" onForgeAiPromptSend={event => send(event.detail.value)} />;
78
+ ```
79
+
80
+ After:
81
+
82
+ ```tsx
83
+ import '@tylertech/forge-ai/ai-prompt';
84
+
85
+ <forge-ai-prompt placeholder="Ask" onforge-ai-prompt-send={event => send(event.detail.value)} />;
86
+ ```
87
+
88
+ Notes: rich values (arrays, objects) are passed as properties by React 19, so `messageItems={items}` works. Use the camelCase property form for booleans (`sendDisabled`); it is type-checked, and booleans that default to `true` (`cancelOnEscape`, `removable`, ...) can only be turned off through it (`cancelOnEscape={false}`). Hyphenated attributes and `on<event>` names are not checked by TypeScript, so watch for typos. Refs are typed to the element class (`useRef<AiPromptComponent>(null)`).
89
+
90
+ ## New subpaths
91
+
92
+ - `@tylertech/forge-ai/types`: data shapes for messages, tools, threads, files, and agents. Also re-exported from the package root.
93
+ - `@tylertech/forge-ai/ai-tool-call`: the `forge-ai-tool-call` element, `createToolRenderer`, the tool canvas helpers, `isToolCallSettled`, and `shouldShowToolRenderer`. Also re-exported from the package root.
94
+ - `@tylertech/forge-ai/jsx`: types-only React 19 JSX typings (see [Removed: @tylertech/forge-ai-react](#removed-tylertechforge-ai-react)).
95
+ - `@tylertech/forge-ai/utils` now exports `generateUniqueId`, `toggleState`, `formatRelativeTime`, and `MarkdownStreamController` in addition to the existing markdown, storage, CSV, and controller utilities.
96
+ - `@tylertech/forge-ai/core` now exports the overlay, popover, and tooltip components alongside `DragController` and `ResizeController`.
97
+
98
+ Removed subpaths: `@tylertech/forge-ai/ai-chatbot`, `/ai-chatbot-launcher`, `/ai-floating-chat`, `/ai-sidebar-chat`, `/ai-threads`, `/ai-embedded-chat`, `/ai-button`, `/ai-icon-button`, `/ai-confirmation-prompt`, `/ai-attachment`, `/ai-prompt/prompt-button`. `PromptButtonComponent` and `PromptButtonComponentTagName` are no longer exported from `/ai-prompt`.
99
+
100
+ Importing `@tylertech/forge-ai/core` registers `forge-ai-overlay`, `forge-ai-popover`, and `forge-ai-tooltip` as a side effect.
101
+
102
+ ## Removed: unused elements
103
+
104
+ | Removed tag | Removed class | Replacement |
105
+ | ------------------------------ | ------------------------------------------------------------------------------------------- | -------------------------------------------------- |
106
+ | `forge-ai-button` | `AiButtonComponent`, `AiButtonComponentTagName` | `forge-button` from `@tylertech/forge` |
107
+ | `forge-ai-icon-button` | `AiIconButtonComponent`, `AiIconButtonComponentTagName` | `forge-icon-button` from `@tylertech/forge` |
108
+ | `forge-prompt-button` | `PromptButtonComponent`, `PromptButtonComponentTagName` | `forge-button` from `@tylertech/forge` |
109
+ | `forge-ai-confirmation-prompt` | `AiConfirmationPromptComponent`, `AiConfirmationPromptComponentTagName` | None |
110
+ | `forge-ai-attachment` | `AiAttachmentComponent`, `AiAttachmentComponentTagName`, `ForgeAiAttachmentRemoveEventData` | `forge-ai-context-items` / `forge-ai-context-chip` |
111
+
112
+ ## Renamed
113
+
114
+ Elements, classes, and events:
115
+
116
+ | Before | After |
117
+ | ----------------------------------------------- | ---------------------------------- |
118
+ | `<forge-ai-chatbot-tool-call>` | `<forge-ai-tool-call>` |
119
+ | `AiChatbotToolCallComponent` | `AiToolCallComponent` |
120
+ | `AiChatbotToolCallComponentTagName` | `AiToolCallComponentTagName` |
121
+ | `page-change` event on `<forge-ai-paginator>` | `forge-ai-paginator-page-change` |
122
+ | `toggle` event on `<forge-ai-reasoning-header>` | `forge-ai-reasoning-header-toggle` |
123
+
124
+ The `toggle` event on `forge-ai-reasoning-header` used the name of the native popover `toggle` event; it bubbled to ancestor popovers and closed them (see [Fixed](#fixed)). Its detail is unchanged (`{ expanded }`, now typed as `ForgeAiReasoningHeaderToggleEventData`). Update `@toggle` listeners on the header to `@forge-ai-reasoning-header-toggle`. `forge-ai-reasoning` and `forge-ai-chain-of-thought` already listen for the new name.
125
+
126
+ The paginator event detail is unchanged (`{ currentPage, previousPage }`) and is now typed as `ForgeAiPaginatorPageChangeEventData`. Update `@page-change` listeners to `@forge-ai-paginator-page-change`.
127
+
128
+ Moved symbols:
129
+
130
+ | Symbol(s) | Before | After |
131
+ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | ---------------------------------------------------------------------- |
132
+ | `Thread` | `@tylertech/forge-ai/ai-threads` | `@tylertech/forge-ai/types` |
133
+ | `FeatureToggle` | `@tylertech/forge-ai/ai-chatbot` | `@tylertech/forge-ai/types` |
134
+ | `Suggestion` | `@tylertech/forge-ai/ai-suggestions` | `@tylertech/forge-ai/types` (still re-exported from `/ai-suggestions`) |
135
+ | `ForgeAiThreadsSearch*EventData` | `@tylertech/forge-ai/ai-threads-search` | unchanged (also re-exported from `@tylertech/forge-ai/types`) |
136
+ | `Agent`, `ChatMessage`, `ClientMessage*`, `ContextItem`, `ToolCall`, `ToolDefinition`, `AnyToolDefinition`, `IToolRenderer`, `Tool*`, `ThreadState`, `FileAttachment`, `UploadedFileMetadata`, `FileUploadHandler`, `FeedbackType`, `ResponseFeedback`, `MessageItem`, `AssistantResponse`, `ResponseItem`, `HeadingLevel`, `SlashCommand*` | `@tylertech/forge-ai/ai-chatbot` | `@tylertech/forge-ai/types` |
137
+ | `FileUploadEvent`, `FileRemoveEvent`, `FileUploadCallbacks`, `FileRemoveCallbacks`, `HandlerContext` | `@tylertech/forge-ai/ai-chatbot` | `@tylertech/forge-ai/types` |
138
+ | `createToolRenderer`, `CreateToolRendererConfig`, `CreateToolRendererElementConfig`, `CreateToolRendererFunctionConfig`, `requestCanvasOpen`, `requestCanvasClose`, `ForgeAiCanvasOpenRequestEventData`, `ForgeAiCanvasCloseRequestEventData` | `@tylertech/forge-ai/ai-chatbot` | `@tylertech/forge-ai/ai-tool-call` |
139
+ | `MarkdownStreamController` | `@tylertech/forge-ai/ai-chatbot` | `@tylertech/forge-ai/utils` |
140
+ | `renderMarkdown`, `renderInlineMarkdown` | `@tylertech/forge-ai/ai-chatbot` | `@tylertech/forge-ai/utils` |
141
+
142
+ For composition hosts, these canvas host helpers are now public from `@tylertech/forge-ai/ai-tool-call`: `toolCanvasHostContext`, `ToolCanvasHostState`, `createToolCanvas`, and the `resolveToolCanvas*` functions.
143
+
144
+ ## Changed defaults
145
+
146
+ User-facing strings that referred to a "chatbot" now use neutral wording, because these primitives are no longer chatbot-specific. Override them if you need the old text.
147
+
148
+ | Element | Before | After |
149
+ | -------------------------- | ------------------------------------------------------------------------- | ----------------------------------------------- |
150
+ | `forge-ai-fab` | `label` default `Launch chatbot` | `Open AI assistant` |
151
+ | `forge-ai-dialog` | drag handle label `Move chatbot` | `Move dialog` |
152
+ | `forge-ai-sidebar` | resize handle label `Resize chatbot panel, use left and right arrow keys` | `Resize sidebar, use left and right arrow keys` |
153
+ | `forge-ai-tool-data-table` | CSV filename fallback `chatbot-data-table.csv` | `data-table.csv` |
154
+
155
+ ## Markdown rendering
156
+
157
+ `renderMarkdown` and `renderInlineMarkdown` (and the components that use them) now harden media handling.
158
+
159
+ - Images from any origin other than the one serving forge-ai render as links instead of images. `data:image/*` and images from the origin serving forge-ai's JavaScript still render inline. This is usually your page's origin, but if you load forge-ai from a CDN or embed it in a widget, it is that server's origin. Images from your page's origin then render as links, and relative image paths resolve against the serving origin instead of your page.
160
+ - `<video>`/`<audio>` in rendered markdown render as links instead of players.
161
+ - Inline `style` attributes are stripped, as are `srcset`, `poster` and `background` attributes.
162
+ - `picture`, `source`, `track`, svg `image`/`feImage` and `mglyph` elements are removed.
163
+ - CSS functions that could load another origin are dropped from svg/mathml presentation attributes.
164
+ - forge-ai's DOMPurify hooks (`target="_blank"` and `rel` on links, image/media handling) are attached only during forge-ai's own sanitize calls. Links rendered by forge-ai still get `target`/`rel`, but the host's own `DOMPurify.sanitize` calls no longer receive them.
165
+ - New `renderInlineMarkdown(content, { links: false })` option renders links as text, for use inside interactive elements such as a `<button>`.
166
+
167
+ ## Public API and typing changes
168
+
169
+ - `forge-ai-tool-data-table` and `forge-ai-tool-steps` are no longer marked `@internal`. They are part of the public `@tylertech/forge-ai/tools` surface and appear in the Custom Elements Manifest and JSX typings.
170
+ - `forge-ai-paginator` is documented (`@tag`) and exported from `@tylertech/forge-ai/tools`.
171
+ - `forge-ai-context-items` is now tagged (`@tag`) in the manifest, and its `forge-ai-context-items-remove` event is typed, so it appears in the JSX typings with a typed handler.
172
+ - `DropdownMenuSelectionMode` and `DropdownChangeEventDetail` are now exported from `@tylertech/forge-ai/ai-dropdown-menu`. `ForgeAiContextItemsRemoveEventData` and `ForgeAiPromptContextRemoveEventData` are new named types for events that previously had an inline detail type.
173
+ - Event JSDoc now carries detail types for `forge-ai-sidebar-*`, `forge-ai-chat-header-*`, `forge-ai-agent-selector-change`, `forge-ai-prompt-command`, `forge-ai-prompt-context-remove`, `forge-ai-file-picker-error`, `forge-ai-dropdown-menu-*`, and `forge-ai-context-items-remove`, so their JSX handlers are typed instead of a bare `CustomEvent`. There is no runtime change.
174
+
175
+ ## Fixed
176
+
177
+ - `forge-ai-prompt` dispatched two `input` events per keystroke (the native textarea `input` crossing the shadow boundary, plus a synthetic copy). It now dispatches one: the native, composed `InputEvent` (with `inputType` and `data`), whose `target` is the host. For bubble-phase listeners `value` is already updated when it fires. Capture-phase listeners on the host run before the inner textarea handler and still see the previous `value`; read `(event.composedPath()[0] as HTMLTextAreaElement).value` there, or listen in the bubble phase. A host `input` listener that counted keystrokes or ran side effects per event now runs once per keystroke instead of twice.
178
+ - Clicking a `forge-ai-reasoning-header` (or any descendant that dispatched a bubbling `toggle` event) inside an open `forge-ai-dialog` or `forge-ai-overlay` (and therefore popovers, tooltips and dropdown menus) closed the dialog or overlay. The header event is renamed (see above), and `forge-ai-dialog` and `forge-ai-overlay` now ignore native `toggle` events that did not originate from their own popover element.
179
+
180
+ ## Dependency changes
181
+
182
+ - `marked` `^18.1.1`, `dompurify` `^3.4.17`, `remend` `^1.4.0`. These are all within the same major as before. Sanitization and rendering (scroll-region wrappers, forced `target="_blank"`/`rel` on anchors, removal of scripts, `javascript:` URLs, event handlers, iframes, `<style>` and forms) are covered by `utils/markdown.test.ts`.
183
+ - Removed `@ag-ui/client` and `@ag-ui/core` (the AG-UI adapter is gone).
184
+ - Removed `uuid` (only `generateId` used it, and that helper moved out with the composition layer).
185
+ - Added `@types/react` `^19` as an optional peer dependency, used only by the `/jsx` typings. Nothing changes if you do not use React.
186
+
187
+ ## Build and styling
188
+
189
+ - Component SCSS now imports design tokens from `@tylertech/forge-tokens/sass/*` instead of `@tylertech/forge/sass/core/styles/*`. The generated CSS and the `--forge-*` custom properties it consumes are unchanged, so consumers are not affected. This only matters if you compiled this package's SCSS sources yourself, which was never supported (only `dist/` is published).
190
+ - Relative imports inside the package use explicit `.js` extensions and the build targets NodeNext resolution. This has no consumer impact; the published `.d.ts` files now resolve under `node16`/`nodenext` as well as `bundler`.
191
+ - `forge-ai-icon` has a new `--forge-ai-icon-color` custom property. `--forge-ai-chatbot-icon-color` still works as a fallback but is deprecated; switch to `--forge-ai-icon-color`.
192
+ - `@tylertech/forge` and `@tylertech/forge-core` are not peer dependencies. Forge is used at build time only, so consumers need no Forge JavaScript to use these components.
package/README.md CHANGED
@@ -1,3 +1,77 @@
1
- # Tyler Forge™ AI Components
1
+ # Tyler Forge™ AI
2
2
 
3
- A library of Tyler Forge™ AI chat interface components.
3
+ A library of presentational [Tyler Forge™](https://github.com/tyler-technologies-oss/forge) Web Components for building AI chat interfaces, built with [Lit](https://lit.dev/).
4
+
5
+ The components are UI building blocks (messages, prompts, tool calls, dialogs, and so on). They do not include chat orchestration or agent adapters; compose them with your own chat logic.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install @tylertech/forge-ai @tylertech/forge
11
+ ```
12
+
13
+ ## Usage
14
+
15
+ Import the component you need. Each component is also available through its own subpath.
16
+
17
+ ```ts
18
+ import '@tylertech/forge-ai/ai-prompt';
19
+ ```
20
+
21
+ ```html
22
+ <forge-ai-prompt></forge-ai-prompt>
23
+ ```
24
+
25
+ Documentation and examples are in this package's local Storybook. From the repo root, run `pnpm storybook:forge-ai`.
26
+
27
+ ### Subpaths
28
+
29
+ Every component folder is a subpath export. Importing a subpath registers its element(s) as a side effect.
30
+
31
+ | Import | Contents |
32
+ | ----------------------------------- | ---------------------------------------------------------------------------------------------- |
33
+ | `@tylertech/forge-ai` | Root barrel: every component plus the shared types |
34
+ | `@tylertech/forge-ai/<component>` | One component, for example `/ai-prompt`, `/ai-message-thread`, `/ai-sidebar` |
35
+ | `@tylertech/forge-ai/ai-tool-call` | `forge-ai-tool-call`, `createToolRenderer`, tool canvas helpers, `isToolCallSettled` |
36
+ | `@tylertech/forge-ai/tools` | Tool renderers: `forge-ai-tool-data-table`, `forge-ai-tool-steps`, and `forge-ai-paginator` |
37
+ | `@tylertech/forge-ai/core` | Overlay, popover, and tooltip components, `DragController`, `ResizeController` |
38
+ | `@tylertech/forge-ai/types` | Data shapes for messages, tools, threads, files, and agents (types only) |
39
+ | `@tylertech/forge-ai/utils` | Markdown, CSV, storage, and controller utilities (browser only) |
40
+ | `@tylertech/forge-ai/jsx` | React 19 JSX typings (types only) |
41
+ | `@tylertech/forge-ai/custom-elements.json` | Custom Elements Manifest |
42
+
43
+ ## React 19
44
+
45
+ React 19 supports custom elements natively, so there is no wrapper package. Add the types-only subpath to `tsconfig.json` to get typed `forge-ai-*` JSX tags, props, refs, and events (setting `types` disables automatic inclusion of other `@types/*` packages, so list those too):
46
+
47
+ ```json
48
+ {
49
+ "compilerOptions": {
50
+ "types": ["@tylertech/forge-ai/jsx"]
51
+ }
52
+ }
53
+ ```
54
+
55
+ ```tsx
56
+ import '@tylertech/forge-ai/ai-prompt';
57
+
58
+ <forge-ai-prompt placeholder="Ask" sendDisabled={false} onforge-ai-prompt-send={event => console.log(event.detail.value)} />;
59
+ ```
60
+
61
+ Event props are `on` plus the event name exactly as dispatched (`onforge-ai-prompt-send`, not `onForgeAiPromptSend`). Prefer camelCase props: TypeScript does not check hyphenated JSX attributes, so a typo in a kebab-case attribute or an `on<event>` name compiles silently. The typings compile under `@types/react` 18, but React 18's runtime does not support these elements correctly (objects are stringified and events are not attached), so use React 19. See the React page in the local Storybook.
62
+
63
+ ## Migrating
64
+
65
+ Upgrading from 0.15 or earlier? Composition components (`forge-ai-chatbot`, launcher, floating and sidebar chat, threads, embedded chat) and `@tylertech/forge-ai-react` are gone. See [MIGRATION.md](./MIGRATION.md).
66
+
67
+ ## Development
68
+
69
+ ```bash
70
+ pnpm --filter @tylertech/forge-ai build # Vite library build and custom elements manifest
71
+ pnpm --filter @tylertech/forge-ai test # Vitest browser mode
72
+ pnpm --filter @tylertech/forge-ai lint
73
+ ```
74
+
75
+ ## License
76
+
77
+ Apache-2.0