@scenemesh/entity-engine-aimodule 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (311) hide show
  1. package/dist/components/ChatDialog/ChatDialog.d.ts +17 -0
  2. package/dist/components/ChatDialog/ChatDialog.d.ts.map +1 -0
  3. package/dist/components/ChatDialog/ChatDialog.js +346 -0
  4. package/dist/components/ChatDialog/ChatDialog.js.map +1 -0
  5. package/dist/components/DynamicUI/DynamicToolRenderer.d.ts +9 -0
  6. package/dist/components/DynamicUI/DynamicToolRenderer.d.ts.map +1 -0
  7. package/dist/components/DynamicUI/DynamicToolRenderer.js +114 -0
  8. package/dist/components/DynamicUI/DynamicToolRenderer.js.map +1 -0
  9. package/dist/components/DynamicUI/EntityEngineDynamicComponents.d.ts +75 -0
  10. package/dist/components/DynamicUI/EntityEngineDynamicComponents.d.ts.map +1 -0
  11. package/dist/components/DynamicUI/EntityEngineDynamicComponents.js +123 -0
  12. package/dist/components/DynamicUI/EntityEngineDynamicComponents.js.map +1 -0
  13. package/dist/components/DynamicUI/index.d.ts +12 -0
  14. package/dist/components/DynamicUI/index.d.ts.map +1 -0
  15. package/dist/components/DynamicUI/index.js +13 -0
  16. package/dist/components/DynamicUI/index.js.map +1 -0
  17. package/dist/components/FileViewer/FileViewer.d.ts +16 -0
  18. package/dist/components/FileViewer/FileViewer.d.ts.map +1 -0
  19. package/dist/components/FileViewer/FileViewer.js +158 -0
  20. package/dist/components/FileViewer/FileViewer.js.map +1 -0
  21. package/dist/components/GenerativeUI/PrebuiltComponents.d.ts +44 -0
  22. package/dist/components/GenerativeUI/PrebuiltComponents.d.ts.map +1 -0
  23. package/dist/components/GenerativeUI/PrebuiltComponents.js +77 -0
  24. package/dist/components/GenerativeUI/PrebuiltComponents.js.map +1 -0
  25. package/dist/components/MessageBubble/MessageBubble.d.ts +29 -0
  26. package/dist/components/MessageBubble/MessageBubble.d.ts.map +1 -0
  27. package/dist/components/MessageBubble/MessageBubble.js +222 -0
  28. package/dist/components/MessageBubble/MessageBubble.js.map +1 -0
  29. package/dist/components/ReasoningComponents/ReasoningDisplay.d.ts +26 -0
  30. package/dist/components/ReasoningComponents/ReasoningDisplay.d.ts.map +1 -0
  31. package/dist/components/ReasoningComponents/ReasoningDisplay.js +44 -0
  32. package/dist/components/ReasoningComponents/ReasoningDisplay.js.map +1 -0
  33. package/dist/components/index.d.ts +10 -0
  34. package/dist/components/index.d.ts.map +1 -0
  35. package/dist/components/index.js +10 -0
  36. package/dist/components/index.js.map +1 -0
  37. package/dist/core/ai-core-manager.d.ts +221 -0
  38. package/dist/core/ai-core-manager.d.ts.map +1 -0
  39. package/dist/core/ai-core-manager.js +536 -0
  40. package/dist/core/ai-core-manager.js.map +1 -0
  41. package/dist/core/ai-core.d.ts +380 -0
  42. package/dist/core/ai-core.d.ts.map +1 -0
  43. package/dist/core/ai-core.js +297 -0
  44. package/dist/core/ai-core.js.map +1 -0
  45. package/dist/core/ai-embeddings.d.ts +204 -0
  46. package/dist/core/ai-embeddings.d.ts.map +1 -0
  47. package/dist/core/ai-embeddings.js +380 -0
  48. package/dist/core/ai-embeddings.js.map +1 -0
  49. package/dist/core/ai-provider.d.ts +265 -0
  50. package/dist/core/ai-provider.d.ts.map +1 -0
  51. package/dist/core/ai-provider.js +707 -0
  52. package/dist/core/ai-provider.js.map +1 -0
  53. package/dist/core/ai-settings.d.ts +289 -0
  54. package/dist/core/ai-settings.d.ts.map +1 -0
  55. package/dist/core/ai-settings.js +585 -0
  56. package/dist/core/ai-settings.js.map +1 -0
  57. package/dist/core/ai-structured.d.ts +198 -0
  58. package/dist/core/ai-structured.d.ts.map +1 -0
  59. package/dist/core/ai-structured.js +460 -0
  60. package/dist/core/ai-structured.js.map +1 -0
  61. package/dist/core/ai-tools.d.ts +378 -0
  62. package/dist/core/ai-tools.d.ts.map +1 -0
  63. package/dist/core/ai-tools.js +637 -0
  64. package/dist/core/ai-tools.js.map +1 -0
  65. package/dist/core/index.d.ts +47 -0
  66. package/dist/core/index.d.ts.map +1 -0
  67. package/dist/core/index.js +75 -0
  68. package/dist/core/index.js.map +1 -0
  69. package/dist/core/system-prompt.d.ts +6 -0
  70. package/dist/core/system-prompt.d.ts.map +1 -0
  71. package/dist/core/system-prompt.js +305 -0
  72. package/dist/core/system-prompt.js.map +1 -0
  73. package/dist/core-index.d.ts +29 -1648
  74. package/dist/core-index.d.ts.map +1 -0
  75. package/dist/core-index.js +63 -99
  76. package/dist/core-index.js.map +1 -1
  77. package/dist/entity-module/ai.module.d.ts +48 -0
  78. package/dist/entity-module/ai.module.d.ts.map +1 -0
  79. package/dist/entity-module/ai.module.js +126 -0
  80. package/dist/entity-module/ai.module.js.map +1 -0
  81. package/dist/entity-module/index.d.ts +9 -0
  82. package/dist/entity-module/index.d.ts.map +1 -0
  83. package/dist/entity-module/index.js +9 -0
  84. package/dist/entity-module/index.js.map +1 -0
  85. package/dist/entity-module/models/ai-model.d.ts +3 -0
  86. package/dist/entity-module/models/ai-model.d.ts.map +1 -0
  87. package/dist/entity-module/models/ai-model.js +44 -0
  88. package/dist/entity-module/models/ai-model.js.map +1 -0
  89. package/dist/entity-module/models/index.d.ts +3 -0
  90. package/dist/entity-module/models/index.d.ts.map +1 -0
  91. package/dist/entity-module/models/index.js +6 -0
  92. package/dist/entity-module/models/index.js.map +1 -0
  93. package/dist/entity-module/module.json +8 -0
  94. package/dist/entity-module/renderers/ai-form-renderer.d.ts +3 -0
  95. package/dist/entity-module/renderers/ai-form-renderer.d.ts.map +1 -0
  96. package/dist/entity-module/renderers/ai-form-renderer.js +201 -0
  97. package/dist/entity-module/renderers/ai-form-renderer.js.map +1 -0
  98. package/dist/entity-module/renderers/ai-renderer.d.ts +3 -0
  99. package/dist/entity-module/renderers/ai-renderer.d.ts.map +1 -0
  100. package/dist/entity-module/renderers/ai-renderer.js +99 -0
  101. package/dist/entity-module/renderers/ai-renderer.js.map +1 -0
  102. package/dist/entity-module/renderers/index.d.ts +3 -0
  103. package/dist/entity-module/renderers/index.d.ts.map +1 -0
  104. package/dist/entity-module/renderers/index.js +3 -0
  105. package/dist/entity-module/renderers/index.js.map +1 -0
  106. package/dist/entity-module/servlets/ai-servlet.d.ts +15 -0
  107. package/dist/entity-module/servlets/ai-servlet.d.ts.map +1 -0
  108. package/dist/entity-module/servlets/ai-servlet.js +377 -0
  109. package/dist/entity-module/servlets/ai-servlet.js.map +1 -0
  110. package/dist/entity-module/servlets/index.d.ts +3 -0
  111. package/dist/entity-module/servlets/index.d.ts.map +1 -0
  112. package/dist/entity-module/servlets/index.js +6 -0
  113. package/dist/entity-module/servlets/index.js.map +1 -0
  114. package/dist/entity-module/views/ai-view.d.ts +3 -0
  115. package/dist/entity-module/views/ai-view.d.ts.map +1 -0
  116. package/dist/entity-module/views/ai-view.js +33 -0
  117. package/dist/entity-module/views/ai-view.js.map +1 -0
  118. package/dist/entity-module/views/index.d.ts +3 -0
  119. package/dist/entity-module/views/index.d.ts.map +1 -0
  120. package/dist/entity-module/views/index.js +6 -0
  121. package/dist/entity-module/views/index.js.map +1 -0
  122. package/dist/hooks/index.d.ts +11 -0
  123. package/dist/hooks/index.d.ts.map +1 -0
  124. package/dist/hooks/index.js +10 -0
  125. package/dist/hooks/index.js.map +1 -0
  126. package/dist/hooks/useChat.d.ts +13 -0
  127. package/dist/hooks/useChat.d.ts.map +1 -0
  128. package/dist/hooks/useChat.js +13 -0
  129. package/dist/hooks/useChat.js.map +1 -0
  130. package/dist/hooks/useCompletion.d.ts +17 -0
  131. package/dist/hooks/useCompletion.d.ts.map +1 -0
  132. package/dist/hooks/useCompletion.js +17 -0
  133. package/dist/hooks/useCompletion.js.map +1 -0
  134. package/dist/hooks/useObject.d.ts +16 -0
  135. package/dist/hooks/useObject.d.ts.map +1 -0
  136. package/dist/hooks/useObject.js +17 -0
  137. package/dist/hooks/useObject.js.map +1 -0
  138. package/dist/index.d.ts +42 -2876
  139. package/dist/index.d.ts.map +1 -0
  140. package/dist/index.js +85 -1168
  141. package/dist/index.js.map +1 -1
  142. package/dist/tools/dynamic-tools/entity-query-tool.d.ts +15 -0
  143. package/dist/tools/dynamic-tools/entity-query-tool.d.ts.map +1 -0
  144. package/dist/tools/dynamic-tools/entity-query-tool.js +178 -0
  145. package/dist/tools/dynamic-tools/entity-query-tool.js.map +1 -0
  146. package/dist/tools/dynamic-tools/index.d.ts +8 -0
  147. package/dist/tools/dynamic-tools/index.d.ts.map +1 -0
  148. package/dist/tools/dynamic-tools/index.js +8 -0
  149. package/dist/tools/dynamic-tools/index.js.map +1 -0
  150. package/dist/tools/frontend-tools/index.d.ts +7 -0
  151. package/dist/tools/frontend-tools/index.d.ts.map +1 -0
  152. package/dist/tools/frontend-tools/index.js +7 -0
  153. package/dist/tools/frontend-tools/index.js.map +1 -0
  154. package/dist/tools/frontend-tools/record-tools.d.ts +48 -0
  155. package/dist/tools/frontend-tools/record-tools.d.ts.map +1 -0
  156. package/dist/tools/frontend-tools/record-tools.js +97 -0
  157. package/dist/tools/frontend-tools/record-tools.js.map +1 -0
  158. package/dist/tools/index.d.ts +217 -0
  159. package/dist/tools/index.d.ts.map +1 -0
  160. package/dist/tools/index.js +52 -0
  161. package/dist/tools/index.js.map +1 -0
  162. package/dist/tools/static-tools/index.d.ts +9 -0
  163. package/dist/tools/static-tools/index.d.ts.map +1 -0
  164. package/dist/tools/static-tools/index.js +9 -0
  165. package/dist/tools/static-tools/index.js.map +1 -0
  166. package/dist/tools/static-tools/location-tool.d.ts +38 -0
  167. package/dist/tools/static-tools/location-tool.d.ts.map +1 -0
  168. package/dist/tools/static-tools/location-tool.js +97 -0
  169. package/dist/tools/static-tools/location-tool.js.map +1 -0
  170. package/dist/tools/static-tools/weather-tool.d.ts +19 -0
  171. package/dist/tools/static-tools/weather-tool.d.ts.map +1 -0
  172. package/dist/tools/static-tools/weather-tool.js +27 -0
  173. package/dist/tools/static-tools/weather-tool.js.map +1 -0
  174. package/dist/types/core-types.d.ts +183 -0
  175. package/dist/types/core-types.d.ts.map +1 -0
  176. package/dist/types/core-types.js +7 -0
  177. package/dist/types/core-types.js.map +1 -0
  178. package/dist/types/index.d.ts +50 -0
  179. package/dist/types/index.d.ts.map +1 -0
  180. package/dist/types/index.js +31 -0
  181. package/dist/types/index.js.map +1 -0
  182. package/dist/types/ui-types.d.ts +434 -0
  183. package/dist/types/ui-types.d.ts.map +1 -0
  184. package/dist/types/ui-types.js +8 -0
  185. package/dist/types/ui-types.js.map +1 -0
  186. package/dist/ui/index.d.ts +30 -0
  187. package/dist/ui/index.d.ts.map +1 -0
  188. package/dist/ui/index.js +67 -0
  189. package/dist/ui/index.js.map +1 -0
  190. package/dist/ui-index.d.ts +12 -607
  191. package/dist/ui-index.d.ts.map +1 -0
  192. package/dist/ui-index.js +106 -2350
  193. package/dist/ui-index.js.map +1 -1
  194. package/dist/utils/index.d.ts +122 -0
  195. package/dist/utils/index.d.ts.map +1 -0
  196. package/dist/utils/index.js +336 -0
  197. package/dist/utils/index.js.map +1 -0
  198. package/dist/utils/persistence.d.ts +99 -0
  199. package/dist/utils/persistence.d.ts.map +1 -0
  200. package/dist/utils/persistence.js +286 -0
  201. package/dist/utils/persistence.js.map +1 -0
  202. package/dist/utils/streaming.d.ts +144 -0
  203. package/dist/utils/streaming.d.ts.map +1 -0
  204. package/dist/utils/streaming.js +359 -0
  205. package/dist/utils/streaming.js.map +1 -0
  206. package/dist/utils/theme.d.ts +162 -0
  207. package/dist/utils/theme.d.ts.map +1 -0
  208. package/dist/utils/theme.js +211 -0
  209. package/dist/utils/theme.js.map +1 -0
  210. package/dist/utils/warnings.d.ts +77 -0
  211. package/dist/utils/warnings.d.ts.map +1 -0
  212. package/dist/utils/warnings.js +228 -0
  213. package/dist/utils/warnings.js.map +1 -0
  214. package/package.json +3 -2
  215. package/dist/ai-core-LBGYFGOK.mjs +0 -17
  216. package/dist/ai-core-LBGYFGOK.mjs.map +0 -1
  217. package/dist/ai-core-UGJWSCQN.js +0 -17
  218. package/dist/ai-core-UGJWSCQN.js.map +0 -1
  219. package/dist/ai-core-manager-B3Z34RHA.mjs +0 -9
  220. package/dist/ai-core-manager-B3Z34RHA.mjs.map +0 -1
  221. package/dist/ai-core-manager-W7SSDCG5.js +0 -9
  222. package/dist/ai-core-manager-W7SSDCG5.js.map +0 -1
  223. package/dist/ai-embeddings-5ED5LDXX.mjs +0 -17
  224. package/dist/ai-embeddings-5ED5LDXX.mjs.map +0 -1
  225. package/dist/ai-embeddings-WCXZMMTZ.js +0 -17
  226. package/dist/ai-embeddings-WCXZMMTZ.js.map +0 -1
  227. package/dist/ai-form-renderer-24IWNMX5.js +0 -233
  228. package/dist/ai-form-renderer-24IWNMX5.js.map +0 -1
  229. package/dist/ai-form-renderer-BORQABF2.mjs +0 -233
  230. package/dist/ai-form-renderer-BORQABF2.mjs.map +0 -1
  231. package/dist/ai-provider-3PSCVEEN.mjs +0 -17
  232. package/dist/ai-provider-3PSCVEEN.mjs.map +0 -1
  233. package/dist/ai-provider-WMPMVZFL.js +0 -17
  234. package/dist/ai-provider-WMPMVZFL.js.map +0 -1
  235. package/dist/ai-renderer-7WGGWH5D.mjs +0 -134
  236. package/dist/ai-renderer-7WGGWH5D.mjs.map +0 -1
  237. package/dist/ai-renderer-OILYWAJV.js +0 -134
  238. package/dist/ai-renderer-OILYWAJV.js.map +0 -1
  239. package/dist/ai-settings-DGCFPK3U.js +0 -15
  240. package/dist/ai-settings-DGCFPK3U.js.map +0 -1
  241. package/dist/ai-settings-DTXEAB64.mjs +0 -15
  242. package/dist/ai-settings-DTXEAB64.mjs.map +0 -1
  243. package/dist/ai-structured-EGZ26ZS4.mjs +0 -13
  244. package/dist/ai-structured-EGZ26ZS4.mjs.map +0 -1
  245. package/dist/ai-structured-N2FZLO4A.js +0 -13
  246. package/dist/ai-structured-N2FZLO4A.js.map +0 -1
  247. package/dist/ai-tools-B3R77HZ3.js +0 -19
  248. package/dist/ai-tools-B3R77HZ3.js.map +0 -1
  249. package/dist/ai-tools-JAPVYQGE.mjs +0 -19
  250. package/dist/ai-tools-JAPVYQGE.mjs.map +0 -1
  251. package/dist/ai.module-GAHVCBTP.js +0 -7
  252. package/dist/ai.module-GAHVCBTP.js.map +0 -1
  253. package/dist/ai.module-TTPMTPB3.mjs +0 -7
  254. package/dist/ai.module-TTPMTPB3.mjs.map +0 -1
  255. package/dist/chunk-25C2NRSD.mjs +0 -611
  256. package/dist/chunk-25C2NRSD.mjs.map +0 -1
  257. package/dist/chunk-4JQ7UOXH.js +0 -427
  258. package/dist/chunk-4JQ7UOXH.js.map +0 -1
  259. package/dist/chunk-6IUKES2L.js +0 -290
  260. package/dist/chunk-6IUKES2L.js.map +0 -1
  261. package/dist/chunk-COWPK7XN.mjs +0 -834
  262. package/dist/chunk-COWPK7XN.mjs.map +0 -1
  263. package/dist/chunk-CTEXPMVZ.js +0 -512
  264. package/dist/chunk-CTEXPMVZ.js.map +0 -1
  265. package/dist/chunk-DXQTHA75.js +0 -573
  266. package/dist/chunk-DXQTHA75.js.map +0 -1
  267. package/dist/chunk-DZFQ6I23.js +0 -72
  268. package/dist/chunk-DZFQ6I23.js.map +0 -1
  269. package/dist/chunk-J323UTPE.mjs +0 -650
  270. package/dist/chunk-J323UTPE.mjs.map +0 -1
  271. package/dist/chunk-LHNNALVF.js +0 -834
  272. package/dist/chunk-LHNNALVF.js.map +0 -1
  273. package/dist/chunk-O7SZSMXV.js +0 -1621
  274. package/dist/chunk-O7SZSMXV.js.map +0 -1
  275. package/dist/chunk-OTNOFOVW.js +0 -650
  276. package/dist/chunk-OTNOFOVW.js.map +0 -1
  277. package/dist/chunk-PRIGZEI4.mjs +0 -72
  278. package/dist/chunk-PRIGZEI4.mjs.map +0 -1
  279. package/dist/chunk-SBSZ3IPB.mjs +0 -573
  280. package/dist/chunk-SBSZ3IPB.mjs.map +0 -1
  281. package/dist/chunk-SXPA6SSD.mjs +0 -1621
  282. package/dist/chunk-SXPA6SSD.mjs.map +0 -1
  283. package/dist/chunk-T5A4KAVS.mjs +0 -512
  284. package/dist/chunk-T5A4KAVS.mjs.map +0 -1
  285. package/dist/chunk-TDRKKUNT.mjs +0 -357
  286. package/dist/chunk-TDRKKUNT.mjs.map +0 -1
  287. package/dist/chunk-TJFNODPE.js +0 -357
  288. package/dist/chunk-TJFNODPE.js.map +0 -1
  289. package/dist/chunk-V2SSI3SL.mjs +0 -427
  290. package/dist/chunk-V2SSI3SL.mjs.map +0 -1
  291. package/dist/chunk-X42L6MTY.mjs +0 -290
  292. package/dist/chunk-X42L6MTY.mjs.map +0 -1
  293. package/dist/chunk-YSVMY77H.js +0 -611
  294. package/dist/chunk-YSVMY77H.js.map +0 -1
  295. package/dist/core-ANYRS6EF.mjs +0 -73
  296. package/dist/core-ANYRS6EF.mjs.map +0 -1
  297. package/dist/core-K5K34DCS.js +0 -73
  298. package/dist/core-K5K34DCS.js.map +0 -1
  299. package/dist/core-index.d.mts +0 -1668
  300. package/dist/core-index.mjs +0 -101
  301. package/dist/core-index.mjs.map +0 -1
  302. package/dist/index.d.mts +0 -2911
  303. package/dist/index.mjs +0 -1177
  304. package/dist/index.mjs.map +0 -1
  305. package/dist/tools-352X7A6X.mjs +0 -366
  306. package/dist/tools-352X7A6X.mjs.map +0 -1
  307. package/dist/tools-YLEX6GNO.js +0 -366
  308. package/dist/tools-YLEX6GNO.js.map +0 -1
  309. package/dist/ui-index.d.mts +0 -627
  310. package/dist/ui-index.mjs +0 -2353
  311. package/dist/ui-index.mjs.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/index.js","../src/utils/warnings.ts","../src/utils/streaming.ts","../src/utils/persistence.ts","../src/utils/index.ts","../src/types/index.ts","../src/index.ts"],"names":["EntityAIModule","createAICore"],"mappings":"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;AACb,EAAA;AACL,IAAA;AACkB,IAAA;AACL,IAAA;AACd,EAAA;AACH;AAOa;AAAuB;AAE1B,EAAA;AACK,EAAA;AAAA;AAGb,EAAA;AACA,EAAA;AACA,EAAA;AAAA;AAGM,EAAA;AACJ,IAAA;AACkB,IAAA;AAClB,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACF;ANm7BuB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/index.js","sourcesContent":[null,"/**\n * Entity Engine AI - Warning System\n * \n * Global warning handling system compliant with AI SDK standards\n */\n\n// Warning type definitions\n\n/**\n * Warning type\n */\nexport type WarningType = \n | 'unsupported-setting'\n | 'unsupported-tool'\n | 'deprecated-feature'\n | 'validation-error'\n | 'performance-warning'\n | 'unknown';\n\n/**\n * Warning object\n */\nexport interface Warning {\n type: WarningType;\n message: string;\n details?: Record<string, any>;\n timestamp: number;\n source?: string;\n}\n\n/**\n * Warning handler function type\n */\nexport type WarningHandler = (warnings: Warning[]) => void;\n\n// Global warning manager\n\n/**\n * Global warning manager\n */\nclass WarningManager {\n private warnings: Warning[] = [];\n private handler: WarningHandler | boolean | null = null;\n private maxWarnings = 100; // Maximum warnings to prevent memory leaks\n\n /**\n * Initialize warning system\n */\n initialize(): void {\n // Check global configuration\n if (typeof globalThis !== 'undefined') {\n // Support AI SDK global configuration format\n const globalHandler = (globalThis as any).AI_SDK_LOG_WARNINGS;\n if (globalHandler !== undefined) {\n this.handler = globalHandler;\n } else {\n // Enable warnings by default\n this.handler = true;\n }\n } else {\n this.handler = true;\n }\n }\n\n /**\n * Set warning handler\n */\n setHandler(handler: WarningHandler | boolean): void {\n this.handler = handler;\n }\n\n /**\n * Add warning\n */\n warn(type: WarningType, message: string, details?: Record<string, any>, source?: string): void {\n const warning: Warning = {\n type,\n message,\n details,\n timestamp: Date.now(),\n source,\n };\n\n // Add to warning list\n this.warnings.push(warning);\n \n // Limit warning count\n if (this.warnings.length > this.maxWarnings) {\n this.warnings = this.warnings.slice(-this.maxWarnings);\n }\n\n // Process warning\n this.processWarning(warning);\n }\n\n /**\n * Process warning\n */\n private processWarning(warning: Warning): void {\n if (this.handler === false) {\n // Warnings are disabled\n return;\n }\n\n if (typeof this.handler === 'function') {\n // Use custom handler\n try {\n this.handler([warning]);\n } catch (error) {\n // Fallback to default handling\n this.defaultHandler([warning]);\n }\n } else {\n // Use default handler\n this.defaultHandler([warning]);\n }\n }\n\n /**\n * Default warning handler\n */\n private defaultHandler(warnings: Warning[]): void {\n warnings.forEach(warning => {\n const prefix = 'AI SDK Warning:';\n const message = `${prefix} ${warning.message}`;\n \n });\n }\n\n /**\n * Get all warnings\n */\n getWarnings(): Warning[] {\n return [...this.warnings];\n }\n\n /**\n * Clear warnings\n */\n clearWarnings(): void {\n this.warnings = [];\n }\n\n /**\n * Get warnings by type\n */\n getWarningsByType(type: WarningType): Warning[] {\n return this.warnings.filter(w => w.type === type);\n }\n\n /**\n * Get warning statistics\n */\n getWarningStats(): Record<WarningType, number> {\n const stats: Record<string, number> = {};\n \n this.warnings.forEach(warning => {\n stats[warning.type] = (stats[warning.type] || 0) + 1;\n });\n\n return stats as Record<WarningType, number>;\n }\n}\n\n// Create global instance\nconst warningManager = new WarningManager();\n\n// Initialize\nif (typeof globalThis !== 'undefined') {\n warningManager.initialize();\n}\n\n// Exported warning functions\n\n/**\n * Warn about unsupported setting\n */\nexport function warnUnsupportedSetting(setting: string, model?: string): void {\n warningManager.warn(\n 'unsupported-setting',\n `The \"${setting}\" setting is not supported${model ? ` by the ${model} model` : ''}`,\n { setting, model },\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about unsupported tool\n */\nexport function warnUnsupportedTool(toolName: string, model?: string): void {\n warningManager.warn(\n 'unsupported-tool',\n `The tool \"${toolName}\" is not supported${model ? ` by the ${model} model` : ''}`,\n { toolName, model },\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about deprecated feature\n */\nexport function warnDeprecatedFeature(feature: string, replacement?: string): void {\n const message = `The \"${feature}\" feature is deprecated${replacement ? ` and will be replaced with \"${replacement}\"` : ''}`;\n warningManager.warn(\n 'deprecated-feature',\n message,\n { feature, replacement },\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about validation error\n */\nexport function warnValidationError(message: string, details?: Record<string, any>): void {\n warningManager.warn(\n 'validation-error',\n message,\n details,\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Warn about performance issue\n */\nexport function warnPerformance(message: string, details?: Record<string, any>): void {\n warningManager.warn(\n 'performance-warning',\n message,\n details,\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Emit general warning\n */\nexport function warn(message: string, details?: Record<string, any>): void {\n warningManager.warn(\n 'unknown',\n message,\n details,\n 'entity-engine-aiui'\n );\n}\n\n/**\n * Set warning handler\n */\nexport function setWarningHandler(handler: WarningHandler | boolean): void {\n warningManager.setHandler(handler);\n}\n\n/**\n * Get all warnings\n */\nexport function getWarnings(): Warning[] {\n return warningManager.getWarnings();\n}\n\n/**\n * Clear warnings\n */\nexport function clearWarnings(): void {\n warningManager.clearWarnings();\n}\n\n/**\n * Get warning statistics\n */\nexport function getWarningStats(): Record<WarningType, number> {\n return warningManager.getWarningStats();\n}\n\n// Development environment enhancements\n\n// Provide additional functionality in development environment\nif (process.env.NODE_ENV === 'development') {\n // Add warning manager to global object for debugging\n if (typeof globalThis !== 'undefined') {\n (globalThis as any).__ENTITY_ENGINE_AIUI_WARNINGS__ = {\n manager: warningManager,\n getWarnings,\n clearWarnings,\n getWarningStats,\n setWarningHandler,\n };\n }\n\n // Add more detailed stack tracing\n const originalWarn = warningManager.warn.bind(warningManager);\n (warningManager as any).warn = (\n type: WarningType,\n message: string,\n details?: Record<string, any>,\n source?: string\n ) => {\n const stack = new Error().stack;\n const enhancedDetails = {\n ...details,\n stack: stack?.split('\\n').slice(2, 5).join('\\n'), // Keep only first 3 stack levels\n };\n \n originalWarn(type, message, enhancedDetails, source);\n };\n}\n\n// Default export\n\nexport default {\n warn,\n warnUnsupportedSetting,\n warnUnsupportedTool,\n warnDeprecatedFeature,\n warnValidationError,\n warnPerformance,\n setWarningHandler,\n getWarnings,\n clearWarnings,\n getWarningStats,\n};","/**\n * Entity Engine AI - Streaming Utils\n * \n * Stream processing utilities for message stream reading and processing\n */\n\nimport type { UIMessage } from 'ai';\n\n// Message stream reader\n\n/**\n * Read UI message stream options\n */\nexport interface ReadUIMessageStreamOptions {\n stream: ReadableStream;\n message?: UIMessage;\n onMessage?: (message: UIMessage) => void;\n onError?: (error: Error) => void;\n onComplete?: (finalMessage: UIMessage) => void;\n}\n\n/**\n * UI message stream reader\n */\nexport class UIMessageStreamReader {\n private reader: ReadableStreamDefaultReader | null = null;\n private currentMessage: UIMessage | null = null;\n private isReading = false;\n\n constructor(private options: ReadUIMessageStreamOptions) {\n this.currentMessage = options.message || null;\n }\n\n /**\n * Start reading stream\n */\n async *read(): AsyncIterableIterator<UIMessage> {\n if (this.isReading) {\n throw new Error('Stream is already being read');\n }\n\n this.isReading = true;\n this.reader = this.options.stream.getReader();\n\n try {\n let done = false;\n \n while (!done) {\n const { value, done: streamDone } = await this.reader.read();\n done = streamDone;\n\n if (value) {\n const message = this.processChunk(value);\n if (message) {\n this.options.onMessage?.(message);\n yield message;\n }\n }\n }\n\n if (this.currentMessage) {\n this.options.onComplete?.(this.currentMessage);\n }\n } catch (error) {\n const err = error instanceof Error ? error : new Error(String(error));\n this.options.onError?.(err);\n throw err;\n } finally {\n this.cleanup();\n }\n }\n\n /**\n * Process stream chunk\n */\n private processChunk(chunk: any): UIMessage | null {\n try {\n // If chunk is string, try to parse JSON\n if (typeof chunk === 'string') {\n chunk = JSON.parse(chunk);\n }\n\n // If chunk is Uint8Array, convert to string then parse\n if (chunk instanceof Uint8Array) {\n const decoder = new TextDecoder();\n chunk = JSON.parse(decoder.decode(chunk));\n }\n\n // Handle different types of stream data\n if (chunk.type) {\n return this.handleStreamData(chunk);\n }\n\n return null;\n } catch (error) {\n return null;\n }\n }\n\n /**\n * Handle stream data\n */\n private handleStreamData(data: any): UIMessage | null {\n switch (data.type) {\n case 'message-start':\n return this.handleMessageStart(data);\n \n case 'message-delta':\n return this.handleMessageDelta(data);\n \n case 'message-stop':\n return this.handleMessageStop(data);\n \n case 'text-delta':\n return this.handleTextDelta(data);\n \n case 'tool-call':\n return this.handleToolCall(data);\n \n case 'tool-result':\n return this.handleToolResult(data);\n \n default:\n return null;\n }\n }\n\n /**\n * Handle message start\n */\n private handleMessageStart(data: any): UIMessage {\n this.currentMessage = {\n id: data.messageId || this.generateId(),\n role: data.role || 'assistant',\n parts: [],\n metadata: data.metadata || {},\n ...data,\n } as UIMessage;\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle message delta\n */\n private handleMessageDelta(data: any): UIMessage | null {\n if (!this.currentMessage) {\n return null;\n }\n\n // Update message content\n if (data.content) {\n // Find or create text part\n let textPart = this.currentMessage.parts.find(p => p.type === 'text') as any;\n if (!textPart) {\n textPart = { type: 'text', text: '' };\n this.currentMessage.parts.push(textPart);\n }\n \n textPart.text += data.content;\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle message stop\n */\n private handleMessageStop(data: any): UIMessage | null {\n if (!this.currentMessage) {\n return null;\n }\n\n // Update final state\n if (data.finishReason) {\n this.currentMessage.metadata = {\n ...(this.currentMessage.metadata || {}),\n finishReason: data.finishReason,\n };\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle text delta\n */\n private handleTextDelta(data: any): UIMessage | null {\n if (!this.currentMessage) {\n // Create new message\n this.currentMessage = {\n id: this.generateId(),\n role: 'assistant',\n parts: [{ type: 'text', text: data.text || '' }],\n };\n } else {\n // Update existing message\n let textPart = this.currentMessage.parts.find(p => p.type === 'text') as any;\n if (!textPart) {\n textPart = { type: 'text', text: '' };\n this.currentMessage.parts.push(textPart);\n }\n \n textPart.text += data.text || '';\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Handle tool call\n */\n private handleToolCall(data: any): UIMessage | null {\n if (!this.currentMessage) {\n this.currentMessage = {\n id: this.generateId(),\n role: 'assistant',\n parts: [],\n };\n }\n\n // Add tool call part\n const toolPart = {\n type: 'dynamic-tool' as const,\n toolCallId: data.toolCallId,\n toolName: data.toolName,\n input: data.input,\n state: 'input-available' as const,\n } as any;\n\n this.currentMessage.parts.push(toolPart);\n return { ...this.currentMessage };\n }\n\n /**\n * Handle tool result\n */\n private handleToolResult(data: any): UIMessage | null {\n if (!this.currentMessage) {\n return null;\n }\n\n // Find corresponding tool call part and update\n const toolPart = this.currentMessage.parts.find(\n p => p.type.startsWith('tool-') && (p as any).toolCallId === data.toolCallId\n ) as any;\n\n if (toolPart) {\n toolPart.output = data.result;\n toolPart.state = data.error ? 'output-error' : 'output-available';\n if (data.error) {\n toolPart.errorText = data.error;\n }\n }\n\n return { ...this.currentMessage };\n }\n\n /**\n * Generate ID\n */\n private generateId(): string {\n return Math.random().toString(36).substr(2, 9);\n }\n\n /**\n * Stop reading\n */\n async stop(): Promise<void> {\n if (this.reader) {\n await this.reader.cancel();\n }\n this.cleanup();\n }\n\n /**\n * Cleanup resources\n */\n private cleanup(): void {\n this.isReading = false;\n if (this.reader) {\n this.reader.releaseLock();\n this.reader = null;\n }\n }\n}\n\n/**\n * Read UI message stream\n */\nexport async function* readUIMessageStream(\n options: ReadUIMessageStreamOptions\n): AsyncIterableIterator<UIMessage> {\n const reader = new UIMessageStreamReader(options);\n yield* reader.read();\n}\n\n// Stream resume utilities\n\n/**\n * Stream resume options\n */\nexport interface StreamResumeOptions {\n chatId: string;\n messageId?: string;\n endpoint?: string;\n headers?: Record<string, string>;\n}\n\n/**\n * Resume stream\n */\nexport async function resumeStream({\n chatId,\n messageId,\n endpoint = '/api/chat/resume',\n headers = {},\n}: StreamResumeOptions): Promise<ReadableStream> {\n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...headers,\n },\n body: JSON.stringify({\n chatId,\n messageId,\n }),\n });\n\n if (!response.ok) {\n throw new Error(`Resume request failed: ${response.status}`);\n }\n\n if (!response.body) {\n throw new Error('No response body received');\n }\n\n return response.body;\n}\n\n// Stream state management\n\n/**\n * Stream state\n */\nexport type StreamState = 'idle' | 'connecting' | 'streaming' | 'complete' | 'error' | 'aborted';\n\n/**\n * Stream state manager\n */\nexport class StreamStateManager {\n private state: StreamState = 'idle';\n private listeners = new Set<(state: StreamState) => void>();\n private abortController: AbortController | null = null;\n\n /**\n * Get current state\n */\n getState(): StreamState {\n return this.state;\n }\n\n /**\n * Set state\n */\n setState(newState: StreamState): void {\n if (this.state !== newState) {\n this.state = newState;\n this.notifyListeners();\n }\n }\n\n /**\n * Listen to state changes\n */\n onStateChange(listener: (state: StreamState) => void): () => void {\n this.listeners.add(listener);\n \n // Return function to cancel listening\n return () => {\n this.listeners.delete(listener);\n };\n }\n\n /**\n * Start stream\n */\n startStream(): AbortController {\n this.abortController = new AbortController();\n this.setState('connecting');\n return this.abortController;\n }\n\n /**\n * Abort stream\n */\n abortStream(): void {\n if (this.abortController) {\n this.abortController.abort();\n this.abortController = null;\n }\n this.setState('aborted');\n }\n\n /**\n * Complete stream\n */\n completeStream(): void {\n this.abortController = null;\n this.setState('complete');\n }\n\n /**\n * Stream error\n */\n errorStream(): void {\n this.abortController = null;\n this.setState('error');\n }\n\n /**\n * Reset state\n */\n reset(): void {\n this.abortController = null;\n this.setState('idle');\n }\n\n /**\n * Notify listeners\n */\n private notifyListeners(): void {\n this.listeners.forEach(listener => {\n try {\n listener(this.state);\n } catch (error) {\n // Ignore listener errors\n }\n });\n }\n\n /**\n * Dispose\n */\n dispose(): void {\n this.abortController = null;\n this.listeners.clear();\n this.setState('idle');\n }\n}","/**\n * 🎯 Entity Engine AIUI - Message Persistence Utils\n * \n * 消息持久化工具,支持消息验证、ID生成和存储管理\n */\n\nimport type { z } from 'zod';\nimport type { UIMessage } from 'ai';\n\n// ================================\n// 🎯 ID生成器\n// ================================\n\n/**\n * ID生成器选项\n */\nexport interface IdGeneratorOptions {\n prefix?: string;\n size?: number;\n}\n\n/**\n * 创建ID生成器\n */\nexport function createIdGenerator(options: IdGeneratorOptions = {}) {\n const { prefix = '', size = 12 } = options;\n \n return (): string => {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n let result = '';\n \n for (let i = 0; i < size; i++) {\n result += chars.charAt(Math.floor(Math.random() * chars.length));\n }\n \n return prefix ? `${prefix}-${result}` : result;\n };\n}\n\n/**\n * 生成唯一ID\n */\nexport function generateId(): string {\n return createIdGenerator()();\n}\n\n// ================================\n// 🎯 消息验证\n// ================================\n\n/**\n * 消息验证选项\n */\nexport interface ValidateUIMessagesOptions<T extends Record<string, any> = any> {\n messages: UIMessage[];\n tools?: T;\n dataPartsSchema?: z.ZodSchema;\n metadataSchema?: z.ZodSchema;\n}\n\n/**\n * 验证UI消息\n */\nexport async function validateUIMessages<T extends Record<string, any>>({\n messages,\n tools,\n dataPartsSchema,\n metadataSchema,\n}: ValidateUIMessagesOptions<T>): Promise<UIMessage[]> {\n const validatedMessages: UIMessage[] = [];\n\n for (const message of messages) {\n try {\n const validatedMessage = await validateSingleMessage(message, {\n tools,\n dataPartsSchema,\n metadataSchema,\n });\n validatedMessages.push(validatedMessage);\n } catch (error) {\n // 如果验证失败,记录错误但继续处理\n // 可以选择跳过无效消息或使用默认值\n validatedMessages.push(sanitizeMessage(message));\n }\n }\n\n return validatedMessages;\n}\n\n/**\n * 验证单个消息\n */\nasync function validateSingleMessage<T extends Record<string, any>>(\n message: UIMessage,\n options: Omit<ValidateUIMessagesOptions<T>, 'messages'>\n): Promise<UIMessage> {\n const { tools, dataPartsSchema, metadataSchema } = options;\n\n // 验证消息结构\n if (!message.id || !message.role || !Array.isArray(message.parts)) {\n throw new Error('Invalid message structure');\n }\n\n // 验证消息部分\n const validatedParts = [];\n for (const part of message.parts) {\n const validatedPart = await validateMessagePart(part, tools);\n validatedParts.push(validatedPart);\n }\n\n // 验证元数据\n let validatedMetadata = message.metadata;\n if (metadataSchema && message.metadata) {\n try {\n validatedMetadata = metadataSchema.parse(message.metadata);\n } catch (error) {\n validatedMetadata = undefined;\n }\n }\n\n return {\n ...message,\n parts: validatedParts,\n metadata: validatedMetadata,\n };\n}\n\n/**\n * 验证消息部分\n */\nasync function validateMessagePart(part: any, tools?: Record<string, any>): Promise<any> {\n // 验证文本部分\n if (part.type === 'text') {\n if (typeof part.text !== 'string') {\n throw new Error('Text part must have a string text property');\n }\n return part;\n }\n\n // 验证文件部分\n if (part.type === 'file') {\n if (!part.filename || !part.url) {\n throw new Error('File part must have filename and url properties');\n }\n return part;\n }\n\n // 验证工具调用部分\n if (part.type.startsWith('tool-') || part.type === 'dynamic-tool') {\n const toolName = part.type === 'dynamic-tool' ? part.toolName : part.type.replace('tool-', '');\n \n // 如果提供了工具定义,验证工具是否存在\n if (tools && toolName && !tools[toolName]) {\n console.warn(`Tool ${toolName} not found in provided tools`);\n }\n \n return part;\n }\n\n // 验证数据部分\n if (part.type.startsWith('data-')) {\n if (!part.data) {\n throw new Error('Data part must have a data property');\n }\n return part;\n }\n\n return part;\n}\n\n/**\n * 清理消息(移除无效部分)\n */\nfunction sanitizeMessage(message: UIMessage): UIMessage {\n const sanitizedParts = message.parts.filter(part => \n // 保留有效的部分类型\n part && typeof part === 'object' && part.type\n );\n\n return {\n ...message,\n parts: sanitizedParts.length > 0 ? sanitizedParts : [\n { type: 'text', text: '[Message content could not be validated]' }\n ],\n };\n}\n\n// ================================\n// 🎯 类型验证错误\n// ================================\n\n/**\n * 类型验证错误类\n */\nexport class TypeValidationError extends Error {\n constructor(message: string, public readonly details?: any) {\n super(message);\n this.name = 'TypeValidationError';\n }\n}\n\n// ================================\n// 🎯 消息存储接口\n// ================================\n\n/**\n * 消息存储接口\n */\nexport interface MessageStore {\n createChat(): Promise<string>;\n loadChat(id: string): Promise<UIMessage[]>;\n saveChat(options: { chatId: string; messages: UIMessage[] }): Promise<void>;\n deleteChat(id: string): Promise<void>;\n listChats(): Promise<Array<{ id: string; title?: string; updatedAt: Date }>>;\n}\n\n/**\n * 内存消息存储(用于开发和测试)\n */\nexport class InMemoryMessageStore implements MessageStore {\n private chats = new Map<string, UIMessage[]>();\n private metadata = new Map<string, { title?: string; updatedAt: Date }>();\n\n async createChat(): Promise<string> {\n const id = generateId();\n this.chats.set(id, []);\n this.metadata.set(id, { updatedAt: new Date() });\n return id;\n }\n\n async loadChat(id: string): Promise<UIMessage[]> {\n const messages = this.chats.get(id);\n if (!messages) {\n throw new Error(`Chat ${id} not found`);\n }\n return [...messages];\n }\n\n async saveChat({ chatId, messages }: { chatId: string; messages: UIMessage[] }): Promise<void> {\n this.chats.set(chatId, [...messages]);\n \n // 更新元数据\n const existing = this.metadata.get(chatId) || {};\n this.metadata.set(chatId, {\n ...existing,\n updatedAt: new Date(),\n title: (existing as any).title || this.extractTitle(messages),\n });\n }\n\n async deleteChat(id: string): Promise<void> {\n this.chats.delete(id);\n this.metadata.delete(id);\n }\n\n async listChats(): Promise<Array<{ id: string; title?: string; updatedAt: Date }>> {\n return Array.from(this.metadata.entries()).map(([id, meta]) => ({\n id,\n ...meta,\n }));\n }\n\n private extractTitle(messages: UIMessage[]): string {\n // 提取第一个用户消息作为标题\n const firstUserMessage = messages.find(m => m.role === 'user');\n if (firstUserMessage) {\n const textPart = firstUserMessage.parts.find(p => p.type === 'text') as any;\n if (textPart?.text) {\n return textPart.text.slice(0, 50) + (textPart.text.length > 50 ? '...' : '');\n }\n }\n return 'Untitled Chat';\n }\n}\n\n/**\n * 本地存储消息存储\n */\nexport class LocalStorageMessageStore implements MessageStore {\n private readonly keyPrefix = 'entity-engine-aiui-chat-';\n\n async createChat(): Promise<string> {\n const id = generateId();\n const key = this.keyPrefix + id;\n \n const chatData = {\n id,\n messages: [],\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n localStorage.setItem(key, JSON.stringify(chatData));\n return id;\n }\n\n async loadChat(id: string): Promise<UIMessage[]> {\n const key = this.keyPrefix + id;\n const data = localStorage.getItem(key);\n \n if (!data) {\n throw new Error(`Chat ${id} not found`);\n }\n\n try {\n const chatData = JSON.parse(data);\n return chatData.messages || [];\n } catch (error) {\n throw new Error(`Failed to parse chat data: ${error}`);\n }\n }\n\n async saveChat({ chatId, messages }: { chatId: string; messages: UIMessage[] }): Promise<void> {\n const key = this.keyPrefix + chatId;\n const existing = localStorage.getItem(key);\n \n const chatData: any = {\n id: chatId,\n messages,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n\n if (existing) {\n try {\n const parsedExisting = JSON.parse(existing);\n chatData.createdAt = parsedExisting.createdAt || chatData.createdAt;\n } catch {\n // Ignore validation errors\n }\n }\n\n localStorage.setItem(key, JSON.stringify(chatData));\n }\n\n async deleteChat(id: string): Promise<void> {\n const key = this.keyPrefix + id;\n localStorage.removeItem(key);\n }\n\n async listChats(): Promise<Array<{ id: string; title?: string; updatedAt: Date }>> {\n const chats: Array<{ id: string; title?: string; updatedAt: Date }> = [];\n \n for (let i = 0; i < localStorage.length; i++) {\n const key = localStorage.key(i);\n if (key?.startsWith(this.keyPrefix)) {\n try {\n const data = localStorage.getItem(key);\n if (data) {\n const chatData = JSON.parse(data);\n chats.push({\n id: chatData.id,\n title: this.extractTitle(chatData.messages || []),\n updatedAt: new Date(chatData.updatedAt || chatData.createdAt),\n });\n }\n } catch {\n // Ignore part validation errors\n }\n }\n }\n\n return chats.sort((a, b) => b.updatedAt.getTime() - a.updatedAt.getTime());\n }\n\n private extractTitle(messages: UIMessage[]): string {\n const firstUserMessage = messages.find(m => m.role === 'user');\n if (firstUserMessage) {\n const textPart = firstUserMessage.parts.find(p => p.type === 'text') as any;\n if (textPart?.text) {\n return textPart.text.slice(0, 50) + (textPart.text.length > 50 ? '...' : '');\n }\n }\n return 'Untitled Chat';\n }\n}","/**\n * Entity Engine AI - Utility Functions\n * \n * Collection of utility functions for common operations\n */\n\nimport type { ExtendedUIMessage } from '../types/ui-types';\n\n// Export other utility modules\n\nexport * from './warnings';\nexport * from './streaming';\nexport * from './persistence';\n\n// Message processing utilities\n\n/**\n * Extract text content from message\n */\nexport function extractMessageText(message: ExtendedUIMessage): string {\n return message.parts\n .filter(part => part.type === 'text')\n .map(part => (part as any).text)\n .join('\\n');\n}\n\n/**\n * Check if message contains tool calls\n */\nexport function hasToolCalls(message: ExtendedUIMessage): boolean {\n return message.parts.some(part => \n part.type.startsWith('tool-') || part.type === 'dynamic-tool'\n );\n}\n\n/**\n * Get tool calls list from message\n */\nexport function getToolCalls(message: ExtendedUIMessage): Array<{\n toolName: string;\n state: string;\n input?: any;\n output?: any;\n}> {\n return message.parts\n .filter(part => part.type.startsWith('tool-') || part.type === 'dynamic-tool')\n .map(part => ({\n toolName: part.type === 'dynamic-tool' \n ? (part as any).toolName \n : part.type.replace('tool-', ''),\n state: (part as any).state || 'unknown',\n input: (part as any).input,\n output: (part as any).output,\n }));\n}\n\n/**\n * Check if message contains file attachments\n */\nexport function hasFileAttachments(message: ExtendedUIMessage): boolean {\n return message.parts.some(part => part.type === 'file');\n}\n\n/**\n * Get file attachments list from message\n */\nexport function getFileAttachments(message: ExtendedUIMessage) {\n return message.parts\n .filter(part => part.type === 'file')\n .map(part => part as any);\n}\n\n// Time formatting utilities\n\n/**\n * Format timestamp\n */\nexport function formatTimestamp(timestamp?: number, options?: {\n format?: 'short' | 'long' | 'relative';\n includeDate?: boolean;\n}): string {\n if (!timestamp) return '';\n \n const date = new Date(timestamp);\n const { format = 'short', includeDate = false } = options || {};\n\n switch (format) {\n case 'short':\n return date.toLocaleTimeString([], { \n hour: '2-digit', \n minute: '2-digit',\n ...(includeDate && { \n month: 'short', \n day: 'numeric' \n })\n });\n \n case 'long':\n return date.toLocaleString();\n \n case 'relative':\n return formatRelativeTime(timestamp);\n \n default:\n return date.toLocaleTimeString();\n }\n}\n\n/**\n * Format relative time\n */\nexport function formatRelativeTime(timestamp: number): string {\n const now = Date.now();\n const diff = now - timestamp;\n \n const minute = 60 * 1000;\n const hour = minute * 60;\n const day = hour * 24;\n const week = day * 7;\n const month = day * 30;\n const year = day * 365;\n\n if (diff < minute) {\n return 'Just now';\n } else if (diff < hour) {\n const minutes = Math.floor(diff / minute);\n return `${minutes}m ago`;\n } else if (diff < day) {\n const hours = Math.floor(diff / hour);\n return `${hours}h ago`;\n } else if (diff < week) {\n const days = Math.floor(diff / day);\n return `${days}d ago`;\n } else if (diff < month) {\n const weeks = Math.floor(diff / week);\n return `${weeks}w ago`;\n } else if (diff < year) {\n const months = Math.floor(diff / month);\n return `${months}mo ago`;\n } else {\n const years = Math.floor(diff / year);\n return `${years}y ago`;\n }\n}\n\n// File processing utilities\n\n/**\n * Format file size\n */\nexport function formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 B';\n \n const k = 1024;\n const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n \n return parseFloat((bytes / Math.pow(k, i)).toFixed(1)) + ' ' + sizes[i];\n}\n\n/**\n * Get file extension\n */\nexport function getFileExtension(filename: string): string {\n return filename.split('.').pop()?.toLowerCase() || '';\n}\n\n/**\n * Check if file type is accepted\n */\nexport function isFileTypeAccepted(\n file: File, \n acceptedTypes: string[]\n): boolean {\n return acceptedTypes.some(type => {\n if (type.endsWith('/*')) {\n return file.type.startsWith(type.slice(0, -1));\n }\n return file.type === type;\n });\n}\n\n/**\n * Create file URL\n */\nexport function createFileUrl(file: File): string {\n return URL.createObjectURL(file);\n}\n\n/**\n * Revoke file URL\n */\nexport function revokeFileUrl(url: string): void {\n URL.revokeObjectURL(url);\n}\n\n// String processing utilities\n\n/**\n * Truncate text\n */\nexport function truncateText(text: string, maxLength: number): string {\n if (text.length <= maxLength) return text;\n return text.slice(0, maxLength - 3) + '...';\n}\n\n/**\n * Highlight search terms\n */\nexport function highlightSearchTerms(text: string, searchTerms: string[]): string {\n if (!searchTerms.length) return text;\n \n let highlightedText = text;\n searchTerms.forEach(term => {\n const regex = new RegExp(`(${term})`, 'gi');\n highlightedText = highlightedText.replace(regex, '<mark>$1</mark>');\n });\n \n return highlightedText;\n}\n\n/**\n * Convert camelCase to space-separated\n */\nexport function camelToSpaced(str: string): string {\n return str.replace(/([A-Z])/g, ' $1').trim();\n}\n\n// Data validation utilities\n\n/**\n * Check if string is valid URL\n */\nexport function isValidUrl(string: string): boolean {\n try {\n new URL(string);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Check if string is valid JSON\n */\nexport function isValidJson(string: string): boolean {\n try {\n JSON.parse(string);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Safe JSON parse\n */\nexport function safeJsonParse<T>(string: string, fallback: T): T {\n try {\n return JSON.parse(string);\n } catch {\n return fallback;\n }\n}\n\n// CSS class name utilities\n\n/**\n * Combine CSS class names (simplified clsx)\n */\nexport function cn(...classes: (string | undefined | null | false)[]): string {\n return classes.filter(Boolean).join(' ');\n}\n\n// Error handling utilities\n\n/**\n * Safely execute async function\n */\nexport async function safeAsync<T>(\n fn: () => Promise<T>,\n fallback?: T\n): Promise<{ data?: T; error?: Error }> {\n try {\n const data = await fn();\n return { data };\n } catch (error) {\n return { \n error: error instanceof Error ? error : new Error(String(error)),\n ...(fallback !== undefined && { data: fallback })\n };\n }\n}\n\n/**\n * Create error message\n */\nexport function createErrorMessage(error: unknown): string {\n if (error instanceof Error) {\n return error.message;\n }\n if (typeof error === 'string') {\n return error;\n }\n return 'An unknown error occurred';\n}\n\n// Performance utilities\n\n/**\n * Debounce function\n */\nexport function debounce<T extends (...args: any[]) => any>(\n func: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let timeoutId: NodeJS.Timeout;\n \n return function debouncedFunction(this: any, ...args: Parameters<T>) {\n clearTimeout(timeoutId);\n timeoutId = setTimeout(() => func.apply(this, args), delay);\n };\n}\n\n/**\n * Throttle function\n */\nexport function throttle<T extends (...args: any[]) => any>(\n func: T,\n delay: number\n): (...args: Parameters<T>) => void {\n let inThrottle: boolean;\n \n return function throttledFunction(this: any, ...args: Parameters<T>) {\n if (!inThrottle) {\n func.apply(this, args);\n inThrottle = true;\n setTimeout(() => inThrottle = false, delay);\n }\n };\n}\n\n// Local storage utilities\n\n/**\n * Safe localStorage operations\n */\nexport const storage = {\n get<T>(key: string, fallback?: T): T | null {\n if (typeof window === 'undefined') return fallback || null;\n \n try {\n const item = localStorage.getItem(key);\n return item ? JSON.parse(item) : (fallback || null);\n } catch {\n return fallback || null;\n }\n },\n\n set<T>(key: string, value: T): boolean {\n if (typeof window === 'undefined') return false;\n \n try {\n localStorage.setItem(key, JSON.stringify(value));\n return true;\n } catch {\n return false;\n }\n },\n\n remove(key: string): boolean {\n if (typeof window === 'undefined') return false;\n \n try {\n localStorage.removeItem(key);\n return true;\n } catch {\n return false;\n }\n },\n\n clear(): boolean {\n if (typeof window === 'undefined') return false;\n \n try {\n localStorage.clear();\n return true;\n } catch {\n return false;\n }\n }\n};","/**\n * Entity Engine AI Module - Type Definitions\n * \n * Consolidates all type definitions from Core and UI modules, providing unified type interface\n */\n\n// Core module types\n\n// Export all core types\nexport * from './core-types';\n\n// Event types\nexport type {\n ChatEvents\n} from './ui-types';\n\n// Data types - removed non-standard types\nexport type {\n CustomDataParts\n} from './ui-types';\n\n// Transport types\nexport type {\n CustomTransportOptions\n} from './ui-types';\n\n// Theme types\nexport type {\n ThemeConfig,\n StyleVariants\n} from './ui-types';\n\n// Component types\nexport type {\n ChatDialogProps,\n FileViewerProps,\n MessageBubbleProps\n} from './ui-types';\n\n// Integration types\nexport type {\n StreamResult,\n GenerateResult,\n StreamTextOptions,\n GenerateTextOptions\n} from '../core/ai-core';\n\n// UI module types\n\n// Tool related types\nexport type {\n ToolCallState,\n ToolDefinition,\n ToolExecutionResult,\n UserInteractionToolOptions\n} from './ui-types';\n\n// Basic message types\nexport type {\n MessageRole,\n MessageStatus,\n CustomUIMessage,\n StandardUIMessage,\n ExtendedUIMessage\n} from './ui-types';\n\n// Structured Data types\nexport type {\n StreamObjectOptions,\n GenerateObjectOptions,\n StreamObjectResultType,\n GenerateObjectResultType\n} from '../core/ai-structured';\n\n// Tools Integration types\nexport type {\n ToolChoice,\n StepResult,\n DynamicTool,\n AdvancedTool,\n StopCondition,\n ToolCallOptions,\n MCPClientConfig,\n ToolExecutionOptions\n} from '../core/ai-tools';\n\n// Provider Management types\nexport type {\n ModelUsageStats,\n ModelAliasConfig,\n CustomProviderConfig,\n GlobalProviderConfig,\n ProviderHealthStatus,\n ProviderRegistryConfig\n} from '../core/ai-provider';\n\n// Settings Management types\nexport type {\n ModelSettings,\n SettingsPreset,\n CommonModelSettings,\n DynamicSettingsConfig,\n ProviderSpecificSettings,\n SettingsValidationResult\n} from '../core/ai-settings';\n\n// Embeddings Integration types\nexport type {\n EmbedResult,\n EmbedOptions,\n EmbedManyConfig,\n EmbedManyResult,\n EmbedManyOptions,\n SimilarityResult,\n EmbeddingModelConfig,\n EmbeddingProviderInfo\n} from '../core/ai-embeddings';\n\n// Hook types\nexport type {\n UseChatHelpers as ChatReturn,\n UseChatOptions as ChatOptions,\n UseCompletionHelpers as CompletionReturn,\n UseCompletionOptions as CompletionOptions,\n Experimental_UseObjectHelpers as ObjectReturn,\n Experimental_UseObjectOptions as ObjectOptions\n} from '@ai-sdk/react';\n\n// Core types re-export\n\n// Core types export\nexport type {\n Tool,\n ToolSet,\n Provider,\n UIMessage,\n ImageModel,\n DataUIPart,\n FileUIPart,\n TextUIPart,\n CoreMessage,\n FinishReason,\n LanguageModel,\n UIMessagePart,\n EmbeddingModel,\n TextStreamPart,\n ToolResultPart,\n StreamTextResult,\n GenerateTextResult,\n StreamObjectResult,\n LanguageModelUsage,\n GenerateObjectResult,\n LanguageModelRequestMetadata,\n LanguageModelResponseMetadata\n} from 'ai';\n\n// Interface types\n\n// Error types\n\n/**\n * AI Module error type\n */\nexport class aimoduleError extends Error {\n constructor(\n message: string,\n public code: string,\n public details?: any\n ) {\n super(message);\n this.name = 'aimoduleError';\n }\n}\n\n/**\n * Runtime error\n */\nexport class aimoduleRuntimeError extends aimoduleError {\n constructor(message: string, details?: any) {\n super(message, 'RUNTIME_ERROR', details);\n this.name = 'aimoduleRuntimeError';\n }\n}\n\n// Utility types\n\n/**\n * Deep partial type\n */\nexport type DeepPartial<T> = {\n [P in keyof T]?: T[P] extends object ? DeepPartial<T[P]> : T[P];\n};\n\n/**\n * Required fields type\n */\nexport type RequiredFields<T, K extends keyof T> = T & Required<Pick<T, K>>;\n\n/**\n * Optional fields type\n */\nexport type OptionalFields<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;","/**\n * Entity Engine AI Module - Main Entry Point\n * \n * Complete AI integration with core services and UI components.\n */\n\n// Core Module Exports\n\n// UI components and hooks - commented out to avoid server-side React imports\n// export * from './ui';\n\n// 导出所有核心AI功能\nexport * from './core';\n\n// UI Module Exports (conditional)\n\nexport * from './utils';\n\n// Utility Exports\n\nexport * from './types';\n\n\n// ================================\n// 🎯 插件集成导出 - Plugin Integration Exports\n// ================================\n\n// 新增Entity Module导出\nexport { EntityAIModule } from './entity-module/ai.module';\n\n// Entity Module Integration\n\n// Renderers are dynamically loaded in ai.module.ts to avoid server-side React imports\n\n// Convenience creation function\nexport async function createEntityAIModule() {\n const { EntityAIModule } = await import('./entity-module/ai.module');\n return new EntityAIModule();\n}\n\n// Note: AIEngineProvider removed, use ChatDialog component directly\n\n// Version Information\n\nexport const VERSION = '1.0.0';\nexport const PACKAGE_NAME = '@scenemesh/entity-engine-aimodule';\nexport const AI_SDK_COMPATIBLE_VERSION = '^5.0.10';\n\n// Main Factory Function\n\n/**\n * Create a complete AI core instance with optional configuration\n */\nexport async function createaimodule(config?: {\n // 核心配置\n providers?: import('./core/ai-provider').CustomProviderConfig[];\n settings?: Partial<import('./core/ai-settings').ModelSettings>;\n enableEmbeddings?: boolean;\n enableTools?: boolean;\n}): Promise<{\n // 核心功能\n core: {\n aiSDK: import('./core/ai-core').AISDKIntegration;\n providerManagement: import('./core/ai-provider').AIProviderManagement;\n toolsIntegration: import('./core/ai-tools').AIToolsIntegration;\n embeddingsIntegration: import('./core/ai-embeddings').AIEmbeddingsIntegration;\n settingsManagement: import('./core/ai-settings').AISettingsManagement;\n structuredData: import('./core/ai-structured').AIStructuredDataIntegration;\n };\n \n // 便捷API\n api: {\n generateText: (options: import('./core/ai-core').GenerateTextOptions) => Promise<import('./core/ai-core').GenerateResult>;\n streamText: (options: import('./core/ai-core').StreamTextOptions) => import('./core/ai-core').StreamResult;\n generateObject: (options: import('./core/ai-structured').GenerateObjectOptions<any>) => Promise<import('./core/ai-structured').GenerateObjectResultType<any>>;\n streamObject: (options: import('./core/ai-structured').StreamObjectOptions<any>) => import('./core/ai-structured').StreamObjectResultType<any>;\n };\n}> {\n // 导入核心模块\n const { createAICore } = await import('./core');\n \n // 创建核心实例\n const core = await createAICore({\n providers: config?.providers,\n settings: config?.settings,\n enableEmbeddings: config?.enableEmbeddings,\n enableTools: config?.enableTools\n });\n \n // 创建便捷API\n const api = {\n generateText: (options: any) => \n core.aiSDK.generateText(options),\n streamText: (options: any) => \n core.aiSDK.streamText(options),\n generateObject: (options: any) => \n core.structuredData.generateObject(options),\n streamObject: (options: any) => \n core.structuredData.streamObject(options),\n };\n \n return {\n core,\n api\n };\n}\n\n// ================================\n// 🎯 快速启动函数 - Quick Start Functions\n// ================================\n\n/**\n * 快速创建AI实例(仅核心功能)\n * Quick create AI instance (core only)\n */\nexport async function createQuickAI(providers?: import('./core/ai-provider').CustomProviderConfig[]) {\n return createaimodule({\n providers,\n enableEmbeddings: true,\n enableTools: true\n });\n}\n\n\n/**\n * 向后兼容的默认导出包含所有主要功能\n * Backward compatible default export with all main functionality\n */\nexport const EntityEngineAIModule = {\n // 工厂函数\n create: createaimodule,\n createQuick: createQuickAI,\n \n // 版本信息\n VERSION,\n PACKAGE_NAME,\n AI_SDK_COMPATIBLE_VERSION,\n \n // 核心类导出(用于高级使用)\n Core: {\n AIProviderManagement: import('./core/ai-provider').then(m => m.AIProviderManagement),\n AISDKIntegration: import('./core/ai-core').then(m => m.AISDKIntegration),\n AIToolsIntegration: import('./core/ai-tools').then(m => m.AIToolsIntegration),\n AIEmbeddingsIntegration: import('./core/ai-embeddings').then(m => m.AIEmbeddingsIntegration),\n AISettingsManagement: import('./core/ai-settings').then(m => m.AISettingsManagement),\n AIStructuredDataIntegration: import('./core/ai-structured').then(m => m.AIStructuredDataIntegration),\n }\n};"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Entity Data Query Dynamic Tool
3
+ *
4
+ * Dynamic tool implementation for entity data queries
5
+ * Focused on data retrieval without complex analysis features
6
+ */
7
+ import { type DynamicTool, AIToolsIntegration } from '../../core/ai-tools';
8
+ declare const toolsIntegration: AIToolsIntegration;
9
+ /**
10
+ * Entity data query tool
11
+ * Focused on data retrieval without analysis functionality
12
+ */
13
+ export declare const entityQueryTool: DynamicTool;
14
+ export { toolsIntegration };
15
+ //# sourceMappingURL=entity-query-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query-tool.d.ts","sourceRoot":"","sources":["../../../src/tools/dynamic-tools/entity-query-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,EAAE,KAAK,WAAW,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAG3E,QAAA,MAAM,gBAAgB,oBAA2B,CAAC;AAElD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,WA4C7B,CAAC;AAsJF,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,178 @@
1
+ /**
2
+ * Entity Data Query Dynamic Tool
3
+ *
4
+ * Dynamic tool implementation for entity data queries
5
+ * Focused on data retrieval without complex analysis features
6
+ */
7
+ import { z } from 'zod';
8
+ import { AIToolsIntegration } from '../../core/ai-tools';
9
+ // Create tools integration instance
10
+ const toolsIntegration = new AIToolsIntegration();
11
+ /**
12
+ * Entity data query tool
13
+ * Focused on data retrieval without analysis functionality
14
+ */
15
+ export const entityQueryTool = toolsIntegration.createDynamicTool('Query entity data with basic operations like pagination, sorting, and filtering. Focused on data retrieval without analysis functionality.', z.object({
16
+ modelName: z.string().describe('Entity model name, e.g.: ee-base-user (users), product (products), etc'),
17
+ displayMode: z.enum(['table', 'list', 'grid', 'form', 'kanban', 'dashboard', 'mastail']).optional().default('table').describe('Display mode: table, list, grid, form, kanban, dashboard, or mastail (master-detail view)'),
18
+ baseObjectId: z.string().optional().describe('Entity object ID, used for form mode to display specific object'),
19
+ pageSize: z.number().optional().default(20).describe('Number of items per page, default 20'),
20
+ pageIndex: z.number().optional().default(0).describe('Page index, starting from 0'),
21
+ sortBy: z.record(z.string(), z.enum(['asc', 'desc'])).optional().describe('Sort fields and directions'),
22
+ filters: z.record(z.string(), z.any()).optional().describe('Filter conditions')
23
+ }), async (input, options) => {
24
+ try {
25
+ // Validate and parse input
26
+ const validatedInput = validateAndParseInput(input);
27
+ const { modelName, displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = validatedInput;
28
+ // Execute data query
29
+ return await executeEntityQuery(modelName, {
30
+ displayMode,
31
+ baseObjectId,
32
+ pageSize,
33
+ pageIndex,
34
+ sortBy,
35
+ filters
36
+ }, options);
37
+ }
38
+ catch (error) {
39
+ console.error('Entity query tool execution error:', error);
40
+ return {
41
+ error: error instanceof Error ? error.message : 'Query failed',
42
+ toolName: 'entityQuery',
43
+ toolCallId: options.toolCallId,
44
+ executedAt: new Date().toISOString(),
45
+ _renderHint: {
46
+ componentType: 'DynamicErrorDisplay',
47
+ errorType: 'query_error',
48
+ errorDetails: error instanceof Error ? error.message : 'Unknown error'
49
+ }
50
+ };
51
+ }
52
+ });
53
+ /**
54
+ * Input validation and parsing function
55
+ */
56
+ function validateAndParseInput(input) {
57
+ if (typeof input !== 'object' || input === null) {
58
+ throw new Error('Invalid input: expected object');
59
+ }
60
+ const obj = input;
61
+ if (!obj.modelName || typeof obj.modelName !== 'string') {
62
+ throw new Error('Invalid modelName: must be a string');
63
+ }
64
+ return {
65
+ modelName: obj.modelName,
66
+ displayMode: obj.displayMode || 'table',
67
+ baseObjectId: obj.baseObjectId || undefined,
68
+ pageSize: obj.pageSize || 20,
69
+ pageIndex: obj.pageIndex || 0,
70
+ sortBy: obj.sortBy || { createdAt: 'desc' },
71
+ filters: obj.filters || {}
72
+ };
73
+ }
74
+ /**
75
+ * Execute entity data query
76
+ */
77
+ async function executeEntityQuery(modelName, queryOptions, options) {
78
+ const { displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = queryOptions;
79
+ // Build tRPC query parameters
80
+ const tRPCInput = encodeURIComponent(JSON.stringify({
81
+ "0": {
82
+ "json": {
83
+ modelName,
84
+ pageSize,
85
+ pageIndex,
86
+ sortBy,
87
+ where: filters // Convert filter conditions to where clause
88
+ }
89
+ }
90
+ }));
91
+ // Call Entity Engine tRPC API
92
+ const response = await fetch(`http://localhost:8082/api/ee/trpc/model.listObjects?batch=1&input=${tRPCInput}`, {
93
+ method: 'GET',
94
+ headers: {
95
+ 'Content-Type': 'application/json',
96
+ },
97
+ signal: options.abortSignal
98
+ });
99
+ if (!response.ok) {
100
+ throw new Error(`HTTP ${response.status}: ${response.statusText}`);
101
+ }
102
+ const tRPCResult = await response.json();
103
+ const result = tRPCResult[0]?.result?.data?.json || {};
104
+ const rawEntityData = result.data || [];
105
+ const totalCount = result.count || 0;
106
+ // Flatten Entity data structure for frontend rendering
107
+ const entityData = rawEntityData.map((item) => ({
108
+ id: item.id,
109
+ modelName: item.modelName,
110
+ createdAt: item.createdAt,
111
+ updatedAt: item.updatedAt,
112
+ isDeleted: item.isDeleted,
113
+ ...item.values // Spread entity data values
114
+ }));
115
+ return {
116
+ toolName: 'entityQuery',
117
+ modelName,
118
+ displayMode,
119
+ data: entityData,
120
+ totalCount,
121
+ baseObjectId, // Add baseObjectId to response for form mode
122
+ pagination: {
123
+ pageSize,
124
+ pageIndex,
125
+ totalPages: Math.ceil(totalCount / pageSize),
126
+ hasNextPage: pageIndex < Math.ceil(totalCount / pageSize) - 1,
127
+ hasPreviousPage: pageIndex > 0
128
+ },
129
+ query: {
130
+ sortBy,
131
+ filters,
132
+ appliedFilters: Object.keys(filters).length
133
+ },
134
+ executedAt: new Date().toISOString(),
135
+ toolCallId: options.toolCallId,
136
+ // Provide rendering hints for dynamic component renderers
137
+ _renderHint: {
138
+ componentType: getDynamicComponentType(displayMode),
139
+ preferredLayout: displayMode,
140
+ features: getDisplayModeFeatures(displayMode),
141
+ dataSchema: entityData.length > 0 ? Object.keys(entityData[0]) : [],
142
+ capabilities: ['pagination', 'sorting', 'filtering'] // 只提供基础功能
143
+ }
144
+ };
145
+ }
146
+ /**
147
+ * 根据显示模式获取对应的动态组件类型
148
+ */
149
+ function getDynamicComponentType(displayMode) {
150
+ const mapping = {
151
+ 'table': 'DynamicDataTable',
152
+ 'list': 'DynamicDataList',
153
+ 'grid': 'DynamicDataGrid',
154
+ 'form': 'DynamicEntityForm',
155
+ 'kanban': 'DynamicEntityKanban',
156
+ 'dashboard': 'DynamicEntityDashboard',
157
+ 'mastail': 'DynamicEntityMastail'
158
+ };
159
+ return mapping[displayMode] || 'DynamicDataTable';
160
+ }
161
+ /**
162
+ * 根据显示模式获取功能特性
163
+ */
164
+ function getDisplayModeFeatures(displayMode) {
165
+ const featureMap = {
166
+ 'table': ['pagination', 'sorting', 'filtering', 'selection', 'export'],
167
+ 'list': ['pagination', 'filtering', 'search'],
168
+ 'grid': ['pagination', 'filtering', 'card_view'],
169
+ 'form': ['display', 'edit', 'validation', 'field_layout'],
170
+ 'kanban': ['drag_drop', 'status_columns', 'card_management', 'filtering'],
171
+ 'dashboard': ['charts', 'metrics', 'widgets', 'real_time_data'],
172
+ 'mastail': ['master_detail', 'navigation', 'related_data', 'drill_down']
173
+ };
174
+ return featureMap[displayMode] || ['pagination'];
175
+ }
176
+ // 导出工具集成器实例
177
+ export { toolsIntegration };
178
+ //# sourceMappingURL=entity-query-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-query-tool.js","sourceRoot":"","sources":["../../../src/tools/dynamic-tools/entity-query-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAoB,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,oCAAoC;AACpC,MAAM,gBAAgB,GAAG,IAAI,kBAAkB,EAAE,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,eAAe,GAAgB,gBAAgB,CAAC,iBAAiB,CAC5E,4IAA4I,EAC5I,CAAC,CAAC,MAAM,CAAC;IACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wEAAwE,CAAC;IACxG,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,2FAA2F,CAAC;IAC1N,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,iEAAiE,CAAC;IAC/G,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,sCAAsC,CAAC;IAC5F,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC;IACnF,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;IACvG,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,mBAAmB,CAAC;CAChF,CAAC,EACF,KAAK,EAAE,KAAc,EAAE,OAAO,EAAE,EAAE;IAChC,IAAI,CAAC;QACH,2BAA2B;QAC3B,MAAM,cAAc,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC;QAGtG,qBAAqB;QACrB,OAAO,MAAM,kBAAkB,CAAC,SAAS,EAAE;YACzC,WAAW;YACX,YAAY;YACZ,QAAQ;YACR,SAAS;YACT,MAAM;YACN,OAAO;SACR,EAAE,OAAO,CAAC,CAAC;IAEd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAE3D,OAAO;YACL,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc;YAC9D,QAAQ,EAAE,aAAa;YACvB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACpC,WAAW,EAAE;gBACX,aAAa,EAAE,qBAAqB;gBACpC,SAAS,EAAE,aAAa;gBACxB,YAAY,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;aACvE;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CACF,CAAC;AAEF;;GAEG;AACH,SAAS,qBAAqB,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,GAAG,GAAG,KAA4B,CAAC;IAEzC,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACxD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAmB;QAClC,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,OAAO;QACvC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;QAC3C,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE;QAC5B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,CAAC;QAC7B,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE;QAC3C,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,EAAE;KAC3B,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,kBAAkB,CAC/B,SAAiB,EACjB,YAOC,EACD,OAA2E;IAE3E,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,YAAY,CAAC;IAEzF,8BAA8B;IAC9B,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC;QAClD,GAAG,EAAE;YACH,MAAM,EAAE;gBACN,SAAS;gBACT,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,KAAK,EAAE,OAAO,CAAC,4CAA4C;aAC5D;SACF;KACF,CAAC,CAAC,CAAC;IAEJ,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,qEAAqE,SAAS,EAAE,EAAE;QAC7G,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,MAAM,EAAE,OAAO,CAAC,WAAW;KAC5B,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;IACvD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IACxC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC;IAErC,uDAAuD;IACvD,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,GAAG,IAAI,CAAC,MAAM,CAAC,4BAA4B;KAC5C,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,QAAQ,EAAE,aAAa;QACvB,SAAS;QACT,WAAW;QACX,IAAI,EAAE,UAAU;QAChB,UAAU;QACV,YAAY,EAAE,6CAA6C;QAC3D,UAAU,EAAE;YACV,QAAQ;YACR,SAAS;YACT,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;YAC5C,WAAW,EAAE,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC7D,eAAe,EAAE,SAAS,GAAG,CAAC;SAC/B;QACD,KAAK,EAAE;YACL,MAAM;YACN,OAAO;YACP,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM;SAC5C;QACD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,0DAA0D;QAC1D,WAAW,EAAE;YACX,aAAa,EAAE,uBAAuB,CAAC,WAAW,CAAC;YACnD,eAAe,EAAE,WAAW;YAC5B,QAAQ,EAAE,sBAAsB,CAAC,WAAW,CAAC;YAC7C,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;YACnE,YAAY,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC,UAAU;SAChE;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,WAAmB;IAClD,MAAM,OAAO,GAAG;QACd,OAAO,EAAE,kBAAkB;QAC3B,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,mBAAmB;QAC3B,QAAQ,EAAE,qBAAqB;QAC/B,WAAW,EAAE,wBAAwB;QACrC,SAAS,EAAE,sBAAsB;KAClC,CAAC;IACF,OAAO,OAAO,CAAC,WAAmC,CAAC,IAAI,kBAAkB,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,WAAmB;IACjD,MAAM,UAAU,GAAG;QACjB,OAAO,EAAE,CAAC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,QAAQ,CAAC;QACtE,MAAM,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC;QAC7C,MAAM,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC;QAChD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC;QACzD,QAAQ,EAAE,CAAC,WAAW,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,CAAC;QACzE,WAAW,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,gBAAgB,CAAC;QAC/D,SAAS,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,CAAC;KACzE,CAAC;IACF,OAAO,UAAU,CAAC,WAAsC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AAC9E,CAAC;AAED,YAAY;AACZ,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Dynamic Tools Export
3
+ *
4
+ * Dynamic tools implementation for frontend rendering.
5
+ * Focuses on data retrieval without complex analysis.
6
+ */
7
+ export { entityQueryTool, toolsIntegration } from './entity-query-tool';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/dynamic-tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Dynamic Tools Export
3
+ *
4
+ * Dynamic tools implementation for frontend rendering.
5
+ * Focuses on data retrieval without complex analysis.
6
+ */
7
+ export { entityQueryTool, toolsIntegration } from './entity-query-tool';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/dynamic-tools/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Frontend Proxy Tools Export
3
+ *
4
+ * 统一导出所有前端代理工具
5
+ */
6
+ export { recordGetValuesTool, recordSetValuesTool, recordResetFormTool, recordValidateFormTool, recordGetFieldInfoTool } from './record-tools';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/frontend-tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Frontend Proxy Tools Export
3
+ *
4
+ * 统一导出所有前端代理工具
5
+ */
6
+ export { recordGetValuesTool, recordSetValuesTool, recordResetFormTool, recordValidateFormTool, recordGetFieldInfoTool } from './record-tools';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/frontend-tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Entity Engine Frontend Proxy Tools
3
+ *
4
+ * Registers frontend controller operations as standard tools.
5
+ * Communicates with frontend view controllers through backend proxy API.
6
+ */
7
+ /**
8
+ * Global frontend tool call bridge
9
+ * Communicates with frontend through global objects
10
+ */
11
+ declare global {
12
+ interface Window {
13
+ __ENTITY_ENGINE_AI_BRIDGE__?: {
14
+ executeViewControllerTool: (toolName: string, input: any) => Promise<string>;
15
+ };
16
+ __FRONTEND_TOOL_EXECUTOR__?: (waitId: string, toolName: string, input: any) => Promise<void>;
17
+ resolveFrontendTool?: (waitId: string, result: string) => void;
18
+ rejectFrontendTool?: (waitId: string, error: string) => void;
19
+ }
20
+ var resolveFrontendTool: (waitId: string, result: string) => void;
21
+ var rejectFrontendTool: (waitId: string, error: string) => void;
22
+ var __FRONTEND_TOOL_EXECUTOR__: (waitId: string, toolName: string, input: any) => Promise<void>;
23
+ }
24
+ /**
25
+ * Get record field values tool
26
+ */
27
+ export declare const recordGetValuesTool: import("ai").Tool<{}, string>;
28
+ /**
29
+ * Set record field value tool
30
+ */
31
+ export declare const recordSetValuesTool: import("ai").Tool<{
32
+ values: Record<string, any>;
33
+ }, string>;
34
+ /**
35
+ * Reset form tool
36
+ */
37
+ export declare const recordResetFormTool: import("ai").Tool<{}, string>;
38
+ /**
39
+ * Form validation tool
40
+ */
41
+ export declare const recordValidateFormTool: import("ai").Tool<{}, string>;
42
+ /**
43
+ * Get field information tool
44
+ */
45
+ export declare const recordGetFieldInfoTool: import("ai").Tool<{
46
+ fieldName?: string | undefined;
47
+ }, string>;
48
+ //# sourceMappingURL=record-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-tools.d.ts","sourceRoot":"","sources":["../../../src/tools/frontend-tools/record-tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;;GAGG;AACH,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,2BAA2B,CAAC,EAAE;YAC5B,yBAAyB,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;SAC9E,CAAC;QACF,0BAA0B,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7F,mBAAmB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;QAC/D,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;KAC9D;IAED,IAAI,mBAAmB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAClE,IAAI,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAChE,IAAI,0BAA0B,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjG;AAyDD;;GAEG;AACH,eAAO,MAAM,mBAAmB,+BAI9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB;;UAM9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,mBAAmB,+BAI9B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,+BAIjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;UAMjC,CAAC"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Entity Engine Frontend Proxy Tools
3
+ *
4
+ * Registers frontend controller operations as standard tools.
5
+ * Communicates with frontend view controllers through backend proxy API.
6
+ */
7
+ import { z } from 'zod';
8
+ import { tool } from 'ai';
9
+ /**
10
+ * Frontend tool waiting pool - for backend waiting for frontend results
11
+ */
12
+ const frontendToolWaitPool = new Map();
13
+ /**
14
+ * Frontend tool executor - waits for frontend HTTP responses
15
+ */
16
+ async function executeFrontendTool(toolName, input) {
17
+ // Key: use simplified waitId for frontend matching
18
+ const waitId = `frontend-${toolName}`;
19
+ // Key: create Promise waiting for frontend HTTP result
20
+ return new Promise((resolve, reject) => {
21
+ // Set timeout mechanism
22
+ const timeout = setTimeout(() => {
23
+ frontendToolWaitPool.delete(waitId);
24
+ reject(new Error(`Frontend tool ${toolName} timeout after 30 seconds`));
25
+ }, 30000);
26
+ // Store Promise in waiting pool
27
+ frontendToolWaitPool.set(waitId, {
28
+ resolve,
29
+ reject,
30
+ timeout
31
+ });
32
+ });
33
+ }
34
+ /**
35
+ * Frontend tool result callback - for frontend invocation
36
+ */
37
+ global.resolveFrontendTool = (waitId, result) => {
38
+ const waiting = frontendToolWaitPool.get(waitId);
39
+ if (waiting) {
40
+ clearTimeout(waiting.timeout);
41
+ frontendToolWaitPool.delete(waitId);
42
+ waiting.resolve(result);
43
+ }
44
+ };
45
+ global.rejectFrontendTool = (waitId, error) => {
46
+ const waiting = frontendToolWaitPool.get(waitId);
47
+ if (waiting) {
48
+ clearTimeout(waiting.timeout);
49
+ frontendToolWaitPool.delete(waitId);
50
+ waiting.reject(new Error(error));
51
+ }
52
+ };
53
+ /**
54
+ * Get record field values tool
55
+ */
56
+ export const recordGetValuesTool = tool({
57
+ description: 'Get current form/record field values. Returns all field values in the current form.',
58
+ inputSchema: z.object({}).describe('No input parameters required'),
59
+ execute: async () => await executeFrontendTool('recordGetValues', {})
60
+ });
61
+ /**
62
+ * Set record field value tool
63
+ */
64
+ export const recordSetValuesTool = tool({
65
+ description: 'Set form field values',
66
+ inputSchema: z.object({
67
+ values: z.record(z.string(), z.any()).describe('Field value object. Keys MUST be exact field names returned by recordGetFieldInfo')
68
+ }),
69
+ execute: async ({ values }) => await executeFrontendTool('recordSetValues', { values })
70
+ });
71
+ /**
72
+ * Reset form tool
73
+ */
74
+ export const recordResetFormTool = tool({
75
+ description: 'Reset form to initial state. Clear all user input and restore default values.',
76
+ inputSchema: z.object({}).describe('No input parameters required'),
77
+ execute: async () => await executeFrontendTool('recordResetForm', {})
78
+ });
79
+ /**
80
+ * Form validation tool
81
+ */
82
+ export const recordValidateFormTool = tool({
83
+ description: 'Validate current form/record data. Check all field validation rules and return validation results.',
84
+ inputSchema: z.object({}).describe('No input parameters required'),
85
+ execute: async () => await executeFrontendTool('recordValidateForm', {})
86
+ });
87
+ /**
88
+ * Get field information tool
89
+ */
90
+ export const recordGetFieldInfoTool = tool({
91
+ description: 'Get record field information. Returns detailed information and exact field names for all fields in current view. Must call this tool before recordSetValues to get correct field names.',
92
+ inputSchema: z.object({
93
+ fieldName: z.string().optional().describe('Specific field name, if not provided returns all field information')
94
+ }),
95
+ execute: async ({ fieldName }) => await executeFrontendTool('recordGetFieldInfo', { fieldName })
96
+ });
97
+ //# sourceMappingURL=record-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-tools.js","sourceRoot":"","sources":["../../../src/tools/frontend-tools/record-tools.ts"],"names":[],"mappings":"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"}