@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
@@ -1,366 +0,0 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
-
3
- var _chunkYSVMY77Hjs = require('./chunk-YSVMY77H.js');
4
-
5
- // src/tools/dynamic-tools/entity-query-tool.ts
6
- var _zod = require('zod');
7
- var toolsIntegration = new (0, _chunkYSVMY77Hjs.AIToolsIntegration)();
8
- var entityQueryTool = toolsIntegration.createDynamicTool(
9
- "Query entity data with basic operations like pagination, sorting, and filtering. Focused on data retrieval without analysis functionality.",
10
- _zod.z.object({
11
- modelName: _zod.z.string().describe("Entity model name, e.g.: ee-base-user (users), product (products), etc"),
12
- displayMode: _zod.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)"),
13
- baseObjectId: _zod.z.string().optional().describe("Entity object ID, used for form mode to display specific object"),
14
- pageSize: _zod.z.number().optional().default(20).describe("Number of items per page, default 20"),
15
- pageIndex: _zod.z.number().optional().default(0).describe("Page index, starting from 0"),
16
- sortBy: _zod.z.record(_zod.z.string(), _zod.z.enum(["asc", "desc"])).optional().describe("Sort fields and directions"),
17
- filters: _zod.z.record(_zod.z.string(), _zod.z.any()).optional().describe("Filter conditions")
18
- }),
19
- async (input, options) => {
20
- try {
21
- const validatedInput = validateAndParseInput(input);
22
- const { modelName, displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = validatedInput;
23
- return await executeEntityQuery(modelName, {
24
- displayMode,
25
- baseObjectId,
26
- pageSize,
27
- pageIndex,
28
- sortBy,
29
- filters
30
- }, options);
31
- } catch (error) {
32
- console.error("Entity query tool execution error:", error);
33
- return {
34
- error: error instanceof Error ? error.message : "Query failed",
35
- toolName: "entityQuery",
36
- toolCallId: options.toolCallId,
37
- executedAt: (/* @__PURE__ */ new Date()).toISOString(),
38
- _renderHint: {
39
- componentType: "DynamicErrorDisplay",
40
- errorType: "query_error",
41
- errorDetails: error instanceof Error ? error.message : "Unknown error"
42
- }
43
- };
44
- }
45
- }
46
- );
47
- function validateAndParseInput(input) {
48
- if (typeof input !== "object" || input === null) {
49
- throw new Error("Invalid input: expected object");
50
- }
51
- const obj = input;
52
- if (!obj.modelName || typeof obj.modelName !== "string") {
53
- throw new Error("Invalid modelName: must be a string");
54
- }
55
- return {
56
- modelName: obj.modelName,
57
- displayMode: obj.displayMode || "table",
58
- baseObjectId: obj.baseObjectId || void 0,
59
- pageSize: obj.pageSize || 20,
60
- pageIndex: obj.pageIndex || 0,
61
- sortBy: obj.sortBy || { createdAt: "desc" },
62
- filters: obj.filters || {}
63
- };
64
- }
65
- async function executeEntityQuery(modelName, queryOptions, options) {
66
- const { displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = queryOptions;
67
- const tRPCInput = encodeURIComponent(JSON.stringify({
68
- "0": {
69
- "json": {
70
- modelName,
71
- pageSize,
72
- pageIndex,
73
- sortBy,
74
- where: filters
75
- // Convert filter conditions to where clause
76
- }
77
- }
78
- }));
79
- const response = await fetch(`http://localhost:8082/api/ee/trpc/model.listObjects?batch=1&input=${tRPCInput}`, {
80
- method: "GET",
81
- headers: {
82
- "Content-Type": "application/json"
83
- },
84
- signal: options.abortSignal
85
- });
86
- if (!response.ok) {
87
- throw new Error(`HTTP ${response.status}: ${response.statusText}`);
88
- }
89
- const tRPCResult = await response.json();
90
- const result = _optionalChain([tRPCResult, 'access', _ => _[0], 'optionalAccess', _2 => _2.result, 'optionalAccess', _3 => _3.data, 'optionalAccess', _4 => _4.json]) || {};
91
- const rawEntityData = result.data || [];
92
- const totalCount = result.count || 0;
93
- const entityData = rawEntityData.map((item) => ({
94
- id: item.id,
95
- modelName: item.modelName,
96
- createdAt: item.createdAt,
97
- updatedAt: item.updatedAt,
98
- isDeleted: item.isDeleted,
99
- ...item.values
100
- // Spread entity data values
101
- }));
102
- return {
103
- toolName: "entityQuery",
104
- modelName,
105
- displayMode,
106
- data: entityData,
107
- totalCount,
108
- baseObjectId,
109
- // Add baseObjectId to response for form mode
110
- pagination: {
111
- pageSize,
112
- pageIndex,
113
- totalPages: Math.ceil(totalCount / pageSize),
114
- hasNextPage: pageIndex < Math.ceil(totalCount / pageSize) - 1,
115
- hasPreviousPage: pageIndex > 0
116
- },
117
- query: {
118
- sortBy,
119
- filters,
120
- appliedFilters: Object.keys(filters).length
121
- },
122
- executedAt: (/* @__PURE__ */ new Date()).toISOString(),
123
- toolCallId: options.toolCallId,
124
- // Provide rendering hints for dynamic component renderers
125
- _renderHint: {
126
- componentType: getDynamicComponentType(displayMode),
127
- preferredLayout: displayMode,
128
- features: getDisplayModeFeatures(displayMode),
129
- dataSchema: entityData.length > 0 ? Object.keys(entityData[0]) : [],
130
- capabilities: ["pagination", "sorting", "filtering"]
131
- // 只提供基础功能
132
- }
133
- };
134
- }
135
- function getDynamicComponentType(displayMode) {
136
- const mapping = {
137
- "table": "DynamicDataTable",
138
- "list": "DynamicDataList",
139
- "grid": "DynamicDataGrid",
140
- "form": "DynamicEntityForm",
141
- "kanban": "DynamicEntityKanban",
142
- "dashboard": "DynamicEntityDashboard",
143
- "mastail": "DynamicEntityMastail"
144
- };
145
- return mapping[displayMode] || "DynamicDataTable";
146
- }
147
- function getDisplayModeFeatures(displayMode) {
148
- const featureMap = {
149
- "table": ["pagination", "sorting", "filtering", "selection", "export"],
150
- "list": ["pagination", "filtering", "search"],
151
- "grid": ["pagination", "filtering", "card_view"],
152
- "form": ["display", "edit", "validation", "field_layout"],
153
- "kanban": ["drag_drop", "status_columns", "card_management", "filtering"],
154
- "dashboard": ["charts", "metrics", "widgets", "real_time_data"],
155
- "mastail": ["master_detail", "navigation", "related_data", "drill_down"]
156
- };
157
- return featureMap[displayMode] || ["pagination"];
158
- }
159
-
160
- // src/tools/static-tools/weather-tool.ts
161
-
162
- var _ai = require('ai');
163
- var weatherTool = _ai.tool.call(void 0, {
164
- description: "Display weather information for a city including temperature, conditions, and humidity",
165
- inputSchema: _zod.z.object({
166
- location: _zod.z.string().describe("\u57CE\u5E02\u540D\u79F0\uFF0C\u5982\uFF1A\u5317\u4EAC\u3001\u4E0A\u6D77\u3001\u6DF1\u5733"),
167
- unit: _zod.z.enum(["celsius", "fahrenheit"]).default("celsius").describe("\u6E29\u5EA6\u5355\u4F4D\uFF1A\u6444\u6C0F\u5EA6\u6216\u534E\u6C0F\u5EA6")
168
- }),
169
- execute: async ({ location, unit }) => (
170
- // Simulate weather API call - return component data directly
171
- {
172
- location,
173
- temperature: unit === "celsius" ? 22 : 72,
174
- weather: "\u6674\u5929",
175
- humidity: 65,
176
- windSpeed: 12,
177
- unit,
178
- lastUpdated: (/* @__PURE__ */ new Date()).toISOString()
179
- }
180
- )
181
- });
182
-
183
- // src/tools/static-tools/location-tool.ts
184
-
185
-
186
- var locationTool = _ai.tool.call(void 0, {
187
- description: "Display geographic information for a city including coordinates, timezone, and population",
188
- inputSchema: _zod.z.object({
189
- city: _zod.z.string().describe("\u57CE\u5E02\u540D\u79F0\uFF0C\u5982\uFF1A\u5317\u4EAC\u3001\u4E0A\u6D77\u3001\u5E7F\u5DDE"),
190
- includeWeather: _zod.z.boolean().default(false).describe("\u662F\u5426\u540C\u65F6\u5305\u542B\u5929\u6C14\u4FE1\u606F")
191
- }),
192
- execute: async ({ city, includeWeather }) => {
193
- const locationData = {
194
- city,
195
- country: "\u4E2D\u56FD",
196
- province: getProvinceByCity(city),
197
- coordinates: getCityCoordinates(city),
198
- timezone: "Asia/Shanghai",
199
- population: getCityPopulation(city),
200
- area: getCityArea(city)
201
- };
202
- if (includeWeather) {
203
- return {
204
- ...locationData,
205
- weather: {
206
- temperature: 22,
207
- condition: "\u6674\u5929",
208
- humidity: 65
209
- }
210
- };
211
- }
212
- return locationData;
213
- }
214
- });
215
- function getProvinceByCity(city) {
216
- const cityProvinceMap = {
217
- "\u5317\u4EAC": "\u5317\u4EAC\u5E02",
218
- "\u4E0A\u6D77": "\u4E0A\u6D77\u5E02",
219
- "\u6DF1\u5733": "\u5E7F\u4E1C\u7701",
220
- "\u5E7F\u5DDE": "\u5E7F\u4E1C\u7701",
221
- "\u676D\u5DDE": "\u6D59\u6C5F\u7701",
222
- "\u6210\u90FD": "\u56DB\u5DDD\u7701",
223
- "\u897F\u5B89": "\u9655\u897F\u7701",
224
- "\u5357\u4EAC": "\u6C5F\u82CF\u7701"
225
- };
226
- return cityProvinceMap[city] || "\u672A\u77E5\u7701\u4EFD";
227
- }
228
- function getCityCoordinates(city) {
229
- const coordinatesMap = {
230
- "\u5317\u4EAC": { lat: 39.9042, lng: 116.4074 },
231
- "\u4E0A\u6D77": { lat: 31.2304, lng: 121.4737 },
232
- "\u6DF1\u5733": { lat: 22.3193, lng: 114.1694 },
233
- "\u5E7F\u5DDE": { lat: 23.1291, lng: 113.2644 },
234
- "\u676D\u5DDE": { lat: 30.2741, lng: 120.1551 },
235
- "\u6210\u90FD": { lat: 30.5728, lng: 104.0668 },
236
- "\u897F\u5B89": { lat: 34.3416, lng: 108.9398 },
237
- "\u5357\u4EAC": { lat: 32.0603, lng: 118.7969 }
238
- };
239
- return coordinatesMap[city] || { lat: 39.9042, lng: 116.4074 };
240
- }
241
- function getCityPopulation(city) {
242
- const populationMap = {
243
- "\u5317\u4EAC": 2154,
244
- "\u4E0A\u6D77": 2424,
245
- "\u6DF1\u5733": 1756,
246
- "\u5E7F\u5DDE": 1868,
247
- "\u676D\u5DDE": 1220,
248
- "\u6210\u90FD": 2094,
249
- "\u897F\u5B89": 1295,
250
- "\u5357\u4EAC": 931
251
- };
252
- return populationMap[city] || 1e3;
253
- }
254
- function getCityArea(city) {
255
- const areaMap = {
256
- "\u5317\u4EAC": 16410,
257
- "\u4E0A\u6D77": 6340,
258
- "\u6DF1\u5733": 1997,
259
- "\u5E7F\u5DDE": 7434,
260
- "\u676D\u5DDE": 16853,
261
- "\u6210\u90FD": 14335,
262
- "\u897F\u5B89": 10108,
263
- "\u5357\u4EAC": 6587
264
- };
265
- return areaMap[city] || 5e3;
266
- }
267
-
268
- // src/tools/frontend-tools/record-tools.ts
269
-
270
-
271
- var frontendToolWaitPool = /* @__PURE__ */ new Map();
272
- async function executeFrontendTool(toolName, input) {
273
- const waitId = `frontend-${toolName}`;
274
- return new Promise((resolve, reject) => {
275
- const timeout = setTimeout(() => {
276
- frontendToolWaitPool.delete(waitId);
277
- reject(new Error(`Frontend tool ${toolName} timeout after 30 seconds`));
278
- }, 3e4);
279
- frontendToolWaitPool.set(waitId, {
280
- resolve,
281
- reject,
282
- timeout
283
- });
284
- });
285
- }
286
- global.resolveFrontendTool = (waitId, result) => {
287
- const waiting = frontendToolWaitPool.get(waitId);
288
- if (waiting) {
289
- clearTimeout(waiting.timeout);
290
- frontendToolWaitPool.delete(waitId);
291
- waiting.resolve(result);
292
- }
293
- };
294
- global.rejectFrontendTool = (waitId, error) => {
295
- const waiting = frontendToolWaitPool.get(waitId);
296
- if (waiting) {
297
- clearTimeout(waiting.timeout);
298
- frontendToolWaitPool.delete(waitId);
299
- waiting.reject(new Error(error));
300
- }
301
- };
302
- var recordGetValuesTool = _ai.tool.call(void 0, {
303
- description: "Get current form/record field values. Returns all field values in the current form.",
304
- inputSchema: _zod.z.object({}).describe("No input parameters required"),
305
- execute: async () => await executeFrontendTool("recordGetValues", {})
306
- });
307
- var recordSetValuesTool = _ai.tool.call(void 0, {
308
- description: "Set form field values",
309
- inputSchema: _zod.z.object({
310
- values: _zod.z.record(_zod.z.string(), _zod.z.any()).describe("Field value object. Keys MUST be exact field names returned by recordGetFieldInfo")
311
- }),
312
- execute: async ({ values }) => await executeFrontendTool("recordSetValues", { values })
313
- });
314
- var recordResetFormTool = _ai.tool.call(void 0, {
315
- description: "Reset form to initial state. Clear all user input and restore default values.",
316
- inputSchema: _zod.z.object({}).describe("No input parameters required"),
317
- execute: async () => await executeFrontendTool("recordResetForm", {})
318
- });
319
- var recordValidateFormTool = _ai.tool.call(void 0, {
320
- description: "Validate current form/record data. Check all field validation rules and return validation results.",
321
- inputSchema: _zod.z.object({}).describe("No input parameters required"),
322
- execute: async () => await executeFrontendTool("recordValidateForm", {})
323
- });
324
- var recordGetFieldInfoTool = _ai.tool.call(void 0, {
325
- 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.",
326
- inputSchema: _zod.z.object({
327
- fieldName: _zod.z.string().optional().describe("Specific field name, if not provided returns all field information")
328
- }),
329
- execute: async ({ fieldName }) => await executeFrontendTool("recordGetFieldInfo", { fieldName })
330
- });
331
-
332
- // src/tools/index.ts
333
- var defaultTools = {
334
- // Static tools
335
- getWeather: weatherTool,
336
- getLocation: locationTool,
337
- // Dynamic tools
338
- entityQuery: entityQueryTool,
339
- // Frontend proxy tools - standardized view controller operations
340
- recordGetValues: recordGetValuesTool,
341
- recordSetValues: recordSetValuesTool,
342
- recordResetForm: recordResetFormTool,
343
- recordValidateForm: recordValidateFormTool,
344
- recordGetFieldInfo: recordGetFieldInfoTool
345
- };
346
- function getAllTools() {
347
- return defaultTools;
348
- }
349
- function getToolsList() {
350
- return Object.keys(defaultTools);
351
- }
352
-
353
-
354
-
355
-
356
-
357
-
358
-
359
-
360
-
361
-
362
-
363
-
364
-
365
- exports.defaultTools = defaultTools; exports.entityQueryTool = entityQueryTool; exports.getAllTools = getAllTools; exports.getToolsList = getToolsList; exports.locationTool = locationTool; exports.recordGetFieldInfoTool = recordGetFieldInfoTool; exports.recordGetValuesTool = recordGetValuesTool; exports.recordResetFormTool = recordResetFormTool; exports.recordSetValuesTool = recordSetValuesTool; exports.recordValidateFormTool = recordValidateFormTool; exports.toolsIntegration = toolsIntegration; exports.weatherTool = weatherTool;
366
- //# sourceMappingURL=tools-YLEX6GNO.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/tools-YLEX6GNO.js","../src/tools/dynamic-tools/entity-query-tool.ts","../src/tools/static-tools/weather-tool.ts","../src/tools/static-tools/location-tool.ts","../src/tools/frontend-tools/record-tools.ts","../src/tools/index.ts"],"names":[],"mappings":"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","file":"/Users/shixin/dev/workspaces/scenemesh-projects/scenemesh-platform-workbench5/packages/entity-engine-aimodule/dist/tools-YLEX6GNO.js","sourcesContent":[null,"/**\n * Entity Data Query Dynamic Tool\n * \n * Dynamic tool implementation for entity data queries\n * Focused on data retrieval without complex analysis features\n */\n\nimport { z } from 'zod';\n\nimport { type DynamicTool, AIToolsIntegration } from '../../core/ai-tools';\n\n// Create tools integration instance\nconst toolsIntegration = new AIToolsIntegration();\n\n/**\n * Entity data query tool\n * Focused on data retrieval without analysis functionality\n */\nexport const entityQueryTool: DynamicTool = toolsIntegration.createDynamicTool(\n 'Query entity data with basic operations like pagination, sorting, and filtering. Focused on data retrieval without analysis functionality.',\n z.object({\n modelName: z.string().describe('Entity model name, e.g.: ee-base-user (users), product (products), etc'),\n 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)'),\n baseObjectId: z.string().optional().describe('Entity object ID, used for form mode to display specific object'),\n pageSize: z.number().optional().default(20).describe('Number of items per page, default 20'),\n pageIndex: z.number().optional().default(0).describe('Page index, starting from 0'),\n sortBy: z.record(z.string(), z.enum(['asc', 'desc'])).optional().describe('Sort fields and directions'),\n filters: z.record(z.string(), z.any()).optional().describe('Filter conditions')\n }),\n async (input: unknown, options) => {\n try {\n // Validate and parse input\n const validatedInput = validateAndParseInput(input);\n const { modelName, displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = validatedInput;\n\n\n // Execute data query\n return await executeEntityQuery(modelName, {\n displayMode,\n baseObjectId,\n pageSize,\n pageIndex,\n sortBy,\n filters\n }, options);\n\n } catch (error) {\n console.error('Entity query tool execution error:', error);\n \n return {\n error: error instanceof Error ? error.message : 'Query failed',\n toolName: 'entityQuery',\n toolCallId: options.toolCallId,\n executedAt: new Date().toISOString(),\n _renderHint: {\n componentType: 'DynamicErrorDisplay',\n errorType: 'query_error',\n errorDetails: error instanceof Error ? error.message : 'Unknown error'\n }\n };\n }\n }\n);\n\n/**\n * Input validation and parsing function\n */\nfunction validateAndParseInput(input: unknown) {\n if (typeof input !== 'object' || input === null) {\n throw new Error('Invalid input: expected object');\n }\n\n const obj = input as Record<string, any>;\n \n if (!obj.modelName || typeof obj.modelName !== 'string') {\n throw new Error('Invalid modelName: must be a string');\n }\n\n return {\n modelName: obj.modelName as string,\n displayMode: obj.displayMode || 'table',\n baseObjectId: obj.baseObjectId || undefined,\n pageSize: obj.pageSize || 20,\n pageIndex: obj.pageIndex || 0,\n sortBy: obj.sortBy || { createdAt: 'desc' },\n filters: obj.filters || {}\n };\n}\n\n/**\n * Execute entity data query\n */\nasync function executeEntityQuery(\n modelName: string,\n queryOptions: {\n displayMode: string;\n baseObjectId?: string;\n pageSize: number;\n pageIndex: number;\n sortBy: Record<string, 'asc' | 'desc'>;\n filters: Record<string, any>;\n },\n options: { toolCallId: string; messages: any[]; abortSignal?: AbortSignal }\n) {\n const { displayMode, baseObjectId, pageSize, pageIndex, sortBy, filters } = queryOptions;\n\n // Build tRPC query parameters\n const tRPCInput = encodeURIComponent(JSON.stringify({\n \"0\": {\n \"json\": {\n modelName,\n pageSize,\n pageIndex,\n sortBy,\n where: filters // Convert filter conditions to where clause\n }\n }\n }));\n \n // Call Entity Engine tRPC API\n const response = await fetch(`http://localhost:8082/api/ee/trpc/model.listObjects?batch=1&input=${tRPCInput}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n signal: options.abortSignal\n });\n\n if (!response.ok) {\n throw new Error(`HTTP ${response.status}: ${response.statusText}`);\n }\n\n const tRPCResult = await response.json();\n const result = tRPCResult[0]?.result?.data?.json || {};\n const rawEntityData = result.data || [];\n const totalCount = result.count || 0;\n \n // Flatten Entity data structure for frontend rendering\n const entityData = rawEntityData.map((item: any) => ({\n id: item.id,\n modelName: item.modelName,\n createdAt: item.createdAt,\n updatedAt: item.updatedAt,\n isDeleted: item.isDeleted,\n ...item.values // Spread entity data values\n }));\n\n return {\n toolName: 'entityQuery',\n modelName,\n displayMode,\n data: entityData,\n totalCount,\n baseObjectId, // Add baseObjectId to response for form mode\n pagination: {\n pageSize,\n pageIndex,\n totalPages: Math.ceil(totalCount / pageSize),\n hasNextPage: pageIndex < Math.ceil(totalCount / pageSize) - 1,\n hasPreviousPage: pageIndex > 0\n },\n query: {\n sortBy,\n filters,\n appliedFilters: Object.keys(filters).length\n },\n executedAt: new Date().toISOString(),\n toolCallId: options.toolCallId,\n // Provide rendering hints for dynamic component renderers\n _renderHint: {\n componentType: getDynamicComponentType(displayMode),\n preferredLayout: displayMode,\n features: getDisplayModeFeatures(displayMode),\n dataSchema: entityData.length > 0 ? Object.keys(entityData[0]) : [],\n capabilities: ['pagination', 'sorting', 'filtering'] // 只提供基础功能\n }\n };\n}\n\n/**\n * 根据显示模式获取对应的动态组件类型\n */\nfunction getDynamicComponentType(displayMode: string): string {\n const mapping = {\n 'table': 'DynamicDataTable',\n 'list': 'DynamicDataList',\n 'grid': 'DynamicDataGrid',\n 'form': 'DynamicEntityForm',\n 'kanban': 'DynamicEntityKanban',\n 'dashboard': 'DynamicEntityDashboard',\n 'mastail': 'DynamicEntityMastail'\n };\n return mapping[displayMode as keyof typeof mapping] || 'DynamicDataTable';\n}\n\n/**\n * 根据显示模式获取功能特性\n */\nfunction getDisplayModeFeatures(displayMode: string): string[] {\n const featureMap = {\n 'table': ['pagination', 'sorting', 'filtering', 'selection', 'export'],\n 'list': ['pagination', 'filtering', 'search'],\n 'grid': ['pagination', 'filtering', 'card_view'],\n 'form': ['display', 'edit', 'validation', 'field_layout'],\n 'kanban': ['drag_drop', 'status_columns', 'card_management', 'filtering'],\n 'dashboard': ['charts', 'metrics', 'widgets', 'real_time_data'],\n 'mastail': ['master_detail', 'navigation', 'related_data', 'drill_down']\n };\n return featureMap[displayMode as keyof typeof featureMap] || ['pagination'];\n}\n\n// 导出工具集成器实例\nexport { toolsIntegration };","/**\n * Weather Tool - Get city weather information\n */\n\nimport { z } from 'zod';\nimport { tool } from 'ai';\n\n/**\n * Weather tool - get weather information for specified city\n */\nexport const weatherTool = tool({\n description: 'Display weather information for a city including temperature, conditions, and humidity',\n inputSchema: z.object({\n location: z.string().describe('城市名称,如:北京、上海、深圳'),\n unit: z.enum(['celsius', 'fahrenheit']).default('celsius').describe('温度单位:摄氏度或华氏度')\n }),\n execute: async ({ location, unit }) => \n // Simulate weather API call - return component data directly\n ({\n location,\n temperature: unit === 'celsius' ? 22 : 72,\n weather: '晴天',\n humidity: 65,\n windSpeed: 12,\n unit,\n lastUpdated: new Date().toISOString()\n })\n \n});","/**\n * Location Tool - Get city geographic information\n */\n\nimport { z } from 'zod';\nimport { tool } from 'ai';\n\n/**\n * Location tool - get geographic location information for cities\n */\nexport const locationTool = tool({\n description: 'Display geographic information for a city including coordinates, timezone, and population',\n inputSchema: z.object({\n city: z.string().describe('城市名称,如:北京、上海、广州'),\n includeWeather: z.boolean().default(false).describe('是否同时包含天气信息')\n }),\n execute: async ({ city, includeWeather }) => {\n // Simulate location API call - return component data directly\n const locationData = {\n city,\n country: '中国',\n province: getProvinceByCity(city),\n coordinates: getCityCoordinates(city),\n timezone: 'Asia/Shanghai',\n population: getCityPopulation(city),\n area: getCityArea(city)\n };\n\n // 如果需要天气信息,直接扩展数据结构\n if (includeWeather) {\n return {\n ...locationData,\n weather: {\n temperature: 22,\n condition: '晴天',\n humidity: 65\n }\n };\n }\n\n // 直接返回位置数据,不包装在success/data/message中\n return locationData;\n }\n});\n\n// 辅助函数 - 获取城市省份\nfunction getProvinceByCity(city: string): string {\n const cityProvinceMap: Record<string, string> = {\n '北京': '北京市',\n '上海': '上海市',\n '深圳': '广东省',\n '广州': '广东省',\n '杭州': '浙江省',\n '成都': '四川省',\n '西安': '陕西省',\n '南京': '江苏省'\n };\n return cityProvinceMap[city] || '未知省份';\n}\n\n// 辅助函数 - 获取城市坐标\nfunction getCityCoordinates(city: string): { lat: number; lng: number } {\n const coordinatesMap: Record<string, { lat: number; lng: number }> = {\n '北京': { lat: 39.9042, lng: 116.4074 },\n '上海': { lat: 31.2304, lng: 121.4737 },\n '深圳': { lat: 22.3193, lng: 114.1694 },\n '广州': { lat: 23.1291, lng: 113.2644 },\n '杭州': { lat: 30.2741, lng: 120.1551 },\n '成都': { lat: 30.5728, lng: 104.0668 },\n '西安': { lat: 34.3416, lng: 108.9398 },\n '南京': { lat: 32.0603, lng: 118.7969 }\n };\n return coordinatesMap[city] || { lat: 39.9042, lng: 116.4074 };\n}\n\n// 辅助函数 - 获取城市人口\nfunction getCityPopulation(city: string): number {\n const populationMap: Record<string, number> = {\n '北京': 2154,\n '上海': 2424,\n '深圳': 1756,\n '广州': 1868,\n '杭州': 1220,\n '成都': 2094,\n '西安': 1295,\n '南京': 931\n };\n return populationMap[city] || 1000;\n}\n\n// 辅助函数 - 获取城市面积\nfunction getCityArea(city: string): number {\n const areaMap: Record<string, number> = {\n '北京': 16410,\n '上海': 6340,\n '深圳': 1997,\n '广州': 7434,\n '杭州': 16853,\n '成都': 14335,\n '西安': 10108,\n '南京': 6587\n };\n return areaMap[city] || 5000;\n}","/**\n * Entity Engine Frontend Proxy Tools\n * \n * Registers frontend controller operations as standard tools.\n * Communicates with frontend view controllers through backend proxy API.\n */\n\nimport { z } from 'zod';\nimport { tool } from 'ai';\n\n/**\n * Global frontend tool call bridge\n * Communicates with frontend through global objects\n */\ndeclare global {\n interface Window {\n __ENTITY_ENGINE_AI_BRIDGE__?: {\n executeViewControllerTool: (toolName: string, input: any) => Promise<string>;\n };\n __FRONTEND_TOOL_EXECUTOR__?: (waitId: string, toolName: string, input: any) => Promise<void>;\n resolveFrontendTool?: (waitId: string, result: string) => void;\n rejectFrontendTool?: (waitId: string, error: string) => void;\n }\n \n var resolveFrontendTool: (waitId: string, result: string) => void;\n var rejectFrontendTool: (waitId: string, error: string) => void;\n var __FRONTEND_TOOL_EXECUTOR__: (waitId: string, toolName: string, input: any) => Promise<void>;\n}\n\n/**\n * Frontend tool waiting pool - for backend waiting for frontend results\n */\nconst frontendToolWaitPool = new Map<string, {\n resolve: (result: string) => void;\n reject: (error: Error) => void;\n timeout: NodeJS.Timeout;\n}>();\n\n/**\n * Frontend tool executor - waits for frontend HTTP responses\n */\nasync function executeFrontendTool(toolName: string, input: any): Promise<string> {\n \n // Key: use simplified waitId for frontend matching\n const waitId = `frontend-${toolName}`;\n \n // Key: create Promise waiting for frontend HTTP result\n return new Promise((resolve, reject) => {\n // Set timeout mechanism\n const timeout = setTimeout(() => {\n frontendToolWaitPool.delete(waitId);\n reject(new Error(`Frontend tool ${toolName} timeout after 30 seconds`));\n }, 30000);\n \n // Store Promise in waiting pool\n frontendToolWaitPool.set(waitId, {\n resolve,\n reject,\n timeout\n });\n });\n}\n\n/**\n * Frontend tool result callback - for frontend invocation\n */\n(global as any).resolveFrontendTool = (waitId: string, result: string) => {\n const waiting = frontendToolWaitPool.get(waitId);\n if (waiting) {\n clearTimeout(waiting.timeout);\n frontendToolWaitPool.delete(waitId);\n waiting.resolve(result);\n }\n};\n\n(global as any).rejectFrontendTool = (waitId: string, error: string) => {\n const waiting = frontendToolWaitPool.get(waitId);\n if (waiting) {\n clearTimeout(waiting.timeout);\n frontendToolWaitPool.delete(waitId);\n waiting.reject(new Error(error));\n }\n};\n\n/**\n * Get record field values tool\n */\nexport const recordGetValuesTool = tool({\n description: 'Get current form/record field values. Returns all field values in the current form.',\n inputSchema: z.object({}).describe('No input parameters required'),\n execute: async () => await executeFrontendTool('recordGetValues', {})\n});\n\n/**\n * Set record field value tool\n */\nexport const recordSetValuesTool = tool({\n description: 'Set form field values',\n inputSchema: z.object({\n values: z.record(z.string(), z.any()).describe('Field value object. Keys MUST be exact field names returned by recordGetFieldInfo')\n }),\n execute: async ({ values }) => await executeFrontendTool('recordSetValues', { values })\n});\n\n/**\n * Reset form tool\n */\nexport const recordResetFormTool = tool({\n description: 'Reset form to initial state. Clear all user input and restore default values.',\n inputSchema: z.object({}).describe('No input parameters required'),\n execute: async () => await executeFrontendTool('recordResetForm', {})\n});\n\n/**\n * Form validation tool\n */\nexport const recordValidateFormTool = tool({\n description: 'Validate current form/record data. Check all field validation rules and return validation results.',\n inputSchema: z.object({}).describe('No input parameters required'),\n execute: async () => await executeFrontendTool('recordValidateForm', {})\n});\n\n/**\n * Get field information tool\n */\nexport const recordGetFieldInfoTool = tool({\n 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.',\n inputSchema: z.object({\n fieldName: z.string().optional().describe('Specific field name, if not provided returns all field information')\n }),\n execute: async ({ fieldName }) => await executeFrontendTool('recordGetFieldInfo', { fieldName })\n});","/**\n * Tools Collection - Unified export for all available tools\n * \n * Optimized file structure:\n * - static-tools/: Static tools (predefined types)\n * - dynamic-tools/: Dynamic tools (runtime types)\n * - frontend-tools/: Frontend proxy tools\n */\n\n// Dynamic tools import\nimport { entityQueryTool } from './dynamic-tools';\n// Static tools import\nimport { weatherTool, locationTool } from './static-tools';\n// Frontend proxy tools import\nimport { \n recordGetValuesTool,\n recordSetValuesTool,\n recordResetFormTool,\n recordValidateFormTool,\n recordGetFieldInfoTool\n} from './frontend-tools';\n\n/**\n * Default tools collection - Static, dynamic and frontend proxy tools\n * \n * Design features:\n * - Static tools: getWeather, getLocation (basic functionality)\n * - Dynamic tools: entityQuery (data retrieval focused)\n * - Frontend proxy tools: record* operations\n */\nexport const defaultTools = {\n // Static tools\n getWeather: weatherTool,\n getLocation: locationTool,\n \n // Dynamic tools\n entityQuery: entityQueryTool,\n \n // Frontend proxy tools - standardized view controller operations\n recordGetValues: recordGetValuesTool,\n recordSetValues: recordSetValuesTool,\n recordResetForm: recordResetFormTool,\n recordValidateForm: recordValidateFormTool,\n recordGetFieldInfo: recordGetFieldInfoTool,\n} as const;\n\n/**\n * Get all available tools\n */\nexport function getAllTools() {\n return defaultTools;\n}\n\n/**\n * Get tools list (for API documentation or debugging)\n */\nexport function getToolsList() {\n return Object.keys(defaultTools);\n}\n\n// Re-export specific tools (backward compatibility)\nexport { weatherTool, locationTool } from './static-tools';\nexport { entityQueryTool, toolsIntegration } from './dynamic-tools';\nexport { \n recordGetValuesTool,\n recordSetValuesTool,\n recordResetFormTool,\n recordValidateFormTool,\n recordGetFieldInfoTool\n} from './frontend-tools';"]}