@scenemesh/entity-engine-aimodule 1.0.0 → 1.0.2

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 +65 -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 +717 -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 +273 -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 -3
  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
@@ -0,0 +1,198 @@
1
+ /**
2
+ * AI Structured Data Complete Integration
3
+ *
4
+ * Core structured data functionality:
5
+ * - generateObject: Structured object generation
6
+ * - streamObject: Streaming structured object generation
7
+ *
8
+ * Supports all output strategies: object, array, enum, no-schema
9
+ */
10
+ import type { z } from 'zod';
11
+ import { EventEmitter } from 'events';
12
+ import { streamObject, generateObject, type CoreMessage, type FinishReason, type LanguageModel, type StreamObjectResult, type LanguageModelUsage, type GenerateObjectResult, type LanguageModelRequestMetadata, type LanguageModelResponseMetadata } from 'ai';
13
+ /**
14
+ * Complete generateObject options interface
15
+ */
16
+ export interface GenerateObjectOptions<T = any> {
17
+ model: LanguageModel;
18
+ output?: 'object' | 'array' | 'enum' | 'no-schema';
19
+ mode?: 'auto' | 'json' | 'tool';
20
+ schema?: z.ZodSchema<T> | any;
21
+ schemaName?: string;
22
+ schemaDescription?: string;
23
+ enum?: string[];
24
+ system?: string;
25
+ prompt?: string | Array<any>;
26
+ messages?: CoreMessage[];
27
+ maxOutputTokens?: number;
28
+ temperature?: number;
29
+ topP?: number;
30
+ topK?: number;
31
+ presencePenalty?: number;
32
+ frequencyPenalty?: number;
33
+ seed?: number;
34
+ maxRetries?: number;
35
+ abortSignal?: AbortSignal;
36
+ headers?: Record<string, string>;
37
+ experimental_repairText?: (options: {
38
+ text: string;
39
+ error: any;
40
+ }) => Promise<string>;
41
+ experimental_download?: (requestedDownloads: Array<{
42
+ url: URL;
43
+ isUrlSupportedByModel: boolean;
44
+ }>) => Promise<Array<null | {
45
+ data: Uint8Array;
46
+ mediaType?: string;
47
+ }>>;
48
+ experimental_telemetry?: {
49
+ isEnabled?: boolean;
50
+ recordInputs?: boolean;
51
+ recordOutputs?: boolean;
52
+ functionId?: string;
53
+ metadata?: Record<string, string | number | boolean | Array<null | undefined | string> | Array<null | undefined | number> | Array<null | undefined | boolean>>;
54
+ };
55
+ providerOptions?: Record<string, Record<string, any>>;
56
+ }
57
+ /**
58
+ * streamObject 完整参数接口 - 基于 streamObject.md 规范
59
+ */
60
+ export interface StreamObjectOptions<T = any> extends GenerateObjectOptions<T> {
61
+ onError?: (event: {
62
+ error: unknown;
63
+ }) => Promise<void> | void;
64
+ onFinish?: (result: {
65
+ usage: LanguageModelUsage;
66
+ providerMetadata?: Record<string, Record<string, any>>;
67
+ object?: T;
68
+ error?: unknown;
69
+ warnings?: Array<any>;
70
+ response?: {
71
+ id: string;
72
+ model: string;
73
+ timestamp: Date;
74
+ headers?: Record<string, string>;
75
+ };
76
+ }) => void;
77
+ }
78
+ /**
79
+ * generateObject 返回结果类型 - 基于 generateObject().md 规范
80
+ */
81
+ export type GenerateObjectResultType<T> = {
82
+ object: T;
83
+ finishReason: 'stop' | 'length' | 'content-filter' | 'tool-calls' | 'error' | 'other' | 'unknown';
84
+ usage: LanguageModelUsage;
85
+ request?: LanguageModelRequestMetadata;
86
+ response?: LanguageModelResponseMetadata & {
87
+ body?: unknown;
88
+ };
89
+ reasoning?: string;
90
+ warnings?: Array<any>;
91
+ providerMetadata?: any;
92
+ toJsonResponse: (init?: any) => Response;
93
+ };
94
+ /**
95
+ * streamObject 返回结果类型 - 基于 streamObject.md 规范
96
+ */
97
+ export type StreamObjectResultType<T> = {
98
+ usage: Promise<LanguageModelUsage>;
99
+ providerMetadata: Promise<Record<string, Record<string, any>> | undefined>;
100
+ object: Promise<T>;
101
+ partialObjectStream: AsyncIterable<any> & ReadableStream<any>;
102
+ elementStream: AsyncIterable<T> & ReadableStream<T>;
103
+ textStream: AsyncIterable<string> & ReadableStream<string>;
104
+ fullStream: AsyncIterable<any> & ReadableStream<any>;
105
+ request: Promise<LanguageModelRequestMetadata>;
106
+ response: Promise<LanguageModelResponseMetadata>;
107
+ warnings?: Array<any>;
108
+ pipeTextStreamToResponse: (response: any, init?: any) => void;
109
+ toTextStreamResponse: (init?: any) => Response;
110
+ pipeObjectStreamToResponse?: (response: any, init?: any) => void;
111
+ toObjectStreamResponse?: (init?: any) => Response;
112
+ };
113
+ /**
114
+ * Complete structured data integration class
115
+ */
116
+ export declare class AIStructuredDataIntegration extends EventEmitter {
117
+ private initialized;
118
+ private requestCounter;
119
+ constructor();
120
+ /**
121
+ * 初始化
122
+ */
123
+ initialize(): Promise<void>;
124
+ /**
125
+ * 生成请求ID
126
+ */
127
+ private generateRequestId;
128
+ /**
129
+ * Generate structured object - supports all output strategies
130
+ */
131
+ generateObject<T = any>(options: GenerateObjectOptions<T>): Promise<GenerateObjectResultType<T>>;
132
+ /**
133
+ * Stream structured object generation - supports all output strategies and stream modes
134
+ */
135
+ streamObject<T = any>(options: StreamObjectOptions<T>): StreamObjectResultType<T>;
136
+ /**
137
+ * 辅助方法:将流导入响应 - 标准实现
138
+ */
139
+ private pipeStreamToResponse;
140
+ /**
141
+ * 消费异步迭代器并写入响应
142
+ */
143
+ private consumeAsyncIterator;
144
+ /**
145
+ * Generate object - default object output strategy
146
+ */
147
+ generateObjectData<T>(model: LanguageModel, schema: z.ZodSchema<T>, prompt: string, options?: Partial<GenerateObjectOptions<T>>): Promise<GenerateObjectResultType<T>>;
148
+ /**
149
+ * 生成数组 - array 输出策略
150
+ */
151
+ generateArray<T>(model: LanguageModel, elementSchema: z.ZodSchema<T>, prompt: string, options?: Partial<GenerateObjectOptions<T>>): Promise<GenerateObjectResultType<T[]>>;
152
+ /**
153
+ * 生成枚举值 - enum 输出策略
154
+ */
155
+ generateEnum(model: LanguageModel, enumValues: string[], prompt: string, options?: Partial<GenerateObjectOptions<string>>): Promise<GenerateObjectResultType<string>>;
156
+ /**
157
+ * 生成无模式JSON - no-schema 输出策略
158
+ */
159
+ generateFreeformJSON(model: LanguageModel, prompt: string, options?: Partial<GenerateObjectOptions<any>>): Promise<GenerateObjectResultType<any>>;
160
+ /**
161
+ * 流式生成对象 - 默认 object 输出策略
162
+ */
163
+ streamObjectData<T>(model: LanguageModel, schema: z.ZodSchema<T>, prompt: string, options?: Partial<StreamObjectOptions<T>>): StreamObjectResultType<T>;
164
+ /**
165
+ * 流式生成数组 - array 输出策略
166
+ */
167
+ streamArray<T>(model: LanguageModel, elementSchema: z.ZodSchema<T>, prompt: string, options?: Partial<StreamObjectOptions<T>>): StreamObjectResultType<T[]>;
168
+ /**
169
+ * 流式生成枚举值 - enum 输出策略
170
+ */
171
+ streamEnum(model: LanguageModel, enumValues: string[], prompt: string, options?: Partial<StreamObjectOptions<string>>): StreamObjectResultType<string>;
172
+ /**
173
+ * 流式生成无模式JSON - no-schema 输出策略
174
+ */
175
+ streamFreeformJSON(model: LanguageModel, prompt: string, options?: Partial<StreamObjectOptions<any>>): StreamObjectResultType<any>;
176
+ /**
177
+ * Check initialization status
178
+ */
179
+ isInitialized(): boolean;
180
+ /**
181
+ * Get statistics
182
+ */
183
+ getStats(): {
184
+ requestCount: number;
185
+ isInitialized: boolean;
186
+ };
187
+ /**
188
+ * 重置统计信息
189
+ */
190
+ resetStats(): void;
191
+ /**
192
+ * 销毁实例
193
+ */
194
+ destroy(): void;
195
+ }
196
+ export { streamObject, generateObject, type CoreMessage, type FinishReason, type LanguageModel, type StreamObjectResult, type LanguageModelUsage, type GenerateObjectResult };
197
+ export default AIStructuredDataIntegration;
198
+ //# sourceMappingURL=ai-structured.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-structured.d.ts","sourceRoot":"","sources":["../../src/core/ai-structured.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,460 @@
1
+ /**
2
+ * AI Structured Data Complete Integration
3
+ *
4
+ * Core structured data functionality:
5
+ * - generateObject: Structured object generation
6
+ * - streamObject: Streaming structured object generation
7
+ *
8
+ * Supports all output strategies: object, array, enum, no-schema
9
+ */
10
+ import { EventEmitter } from 'events';
11
+ import { streamObject, generateObject } from 'ai';
12
+ // Core Integration Class
13
+ /**
14
+ * Complete structured data integration class
15
+ */
16
+ export class AIStructuredDataIntegration extends EventEmitter {
17
+ constructor() {
18
+ super();
19
+ this.initialized = false;
20
+ this.requestCounter = 0;
21
+ }
22
+ /**
23
+ * 初始化
24
+ */
25
+ async initialize() {
26
+ if (this.initialized) {
27
+ return;
28
+ }
29
+ try {
30
+ this.emit('ai_structured:initializing');
31
+ this.initialized = true;
32
+ this.emit('ai_structured:initialized');
33
+ }
34
+ catch (error) {
35
+ this.emit('ai_structured:initialization_failed', { error });
36
+ throw error;
37
+ }
38
+ }
39
+ /**
40
+ * 生成请求ID
41
+ */
42
+ generateRequestId() {
43
+ return `ai-structured-${Date.now()}-${++this.requestCounter}`;
44
+ }
45
+ // ================================
46
+ // generateObject methods
47
+ /**
48
+ * Generate structured object - supports all output strategies
49
+ */
50
+ async generateObject(options) {
51
+ if (!this.initialized) {
52
+ throw new Error('AIStructuredDataIntegration not initialized. Call initialize() first.');
53
+ }
54
+ const requestId = this.generateRequestId();
55
+ const startTime = Date.now();
56
+ try {
57
+ this.emit('ai_structured:generate_object_started', {
58
+ requestId,
59
+ model: typeof options.model === 'string' ? options.model : 'unknown',
60
+ output: options.output || 'object',
61
+ hasSchema: !!options.schema,
62
+ hasEnum: !!options.enum,
63
+ mode: options.mode || 'auto'
64
+ });
65
+ // 根据输出策略构建参数
66
+ const generateOptions = {
67
+ model: options.model,
68
+ system: options.system,
69
+ prompt: options.prompt,
70
+ messages: options.messages,
71
+ maxOutputTokens: options.maxOutputTokens,
72
+ temperature: options.temperature,
73
+ topP: options.topP,
74
+ topK: options.topK,
75
+ presencePenalty: options.presencePenalty,
76
+ frequencyPenalty: options.frequencyPenalty,
77
+ seed: options.seed,
78
+ maxRetries: options.maxRetries,
79
+ abortSignal: options.abortSignal,
80
+ headers: options.headers,
81
+ experimental_repairText: options.experimental_repairText,
82
+ experimental_download: options.experimental_download,
83
+ experimental_telemetry: options.experimental_telemetry,
84
+ providerOptions: options.providerOptions
85
+ };
86
+ // 处理不同的输出策略
87
+ if (options.output) {
88
+ generateOptions.output = options.output;
89
+ }
90
+ if (options.mode) {
91
+ generateOptions.mode = options.mode;
92
+ }
93
+ // Schema 相关参数
94
+ if (options.schema) {
95
+ generateOptions.schema = options.schema;
96
+ }
97
+ if (options.schemaName) {
98
+ generateOptions.schemaName = options.schemaName;
99
+ }
100
+ if (options.schemaDescription) {
101
+ generateOptions.schemaDescription = options.schemaDescription;
102
+ }
103
+ // Enum 模式专用参数
104
+ if (options.output === 'enum' && options.enum) {
105
+ generateOptions.enum = options.enum;
106
+ }
107
+ const result = await generateObject(generateOptions);
108
+ this.emit('ai_structured:generate_object_completed', {
109
+ requestId,
110
+ latency: Date.now() - startTime,
111
+ finishReason: result.finishReason,
112
+ usage: result.usage,
113
+ output: options.output || 'object',
114
+ hasObject: !!result.object,
115
+ hasReasoning: !!result.reasoning,
116
+ warnings: result.warnings?.length || 0
117
+ });
118
+ // 增强返回结果,确保包含所有官方规范的方法
119
+ const enhancedResult = {
120
+ ...result,
121
+ // 确保 toJsonResponse 方法存在
122
+ toJsonResponse: (init) => result.toJsonResponse?.(init) ||
123
+ new Response(JSON.stringify(result.object), {
124
+ status: 200,
125
+ headers: { 'Content-Type': 'application/json; charset=utf-8' },
126
+ ...init
127
+ })
128
+ };
129
+ return enhancedResult;
130
+ }
131
+ catch (error) {
132
+ this.emit('ai_structured:generate_object_failed', {
133
+ requestId,
134
+ error: error.message,
135
+ latency: Date.now() - startTime,
136
+ errorType: error.constructor.name,
137
+ output: options.output || 'object'
138
+ });
139
+ throw error;
140
+ }
141
+ }
142
+ // ================================
143
+ // streamObject methods
144
+ /**
145
+ * Stream structured object generation - supports all output strategies and stream modes
146
+ */
147
+ streamObject(options) {
148
+ if (!this.initialized) {
149
+ throw new Error('AIStructuredDataIntegration not initialized. Call initialize() first.');
150
+ }
151
+ const requestId = this.generateRequestId();
152
+ const startTime = Date.now();
153
+ this.emit('ai_structured:stream_object_started', {
154
+ requestId,
155
+ model: typeof options.model === 'string' ? options.model : 'unknown',
156
+ output: options.output || 'object',
157
+ hasSchema: !!options.schema,
158
+ hasEnum: !!options.enum,
159
+ mode: options.mode || 'auto'
160
+ });
161
+ // 包装回调以添加事件发射
162
+ const wrappedOptions = {
163
+ ...options,
164
+ onError: (event) => {
165
+ this.emit('ai_structured:stream_object_error', {
166
+ requestId,
167
+ error: event.error,
168
+ latency: Date.now() - startTime
169
+ });
170
+ if (options.onError) {
171
+ options.onError(event);
172
+ }
173
+ },
174
+ onFinish: (result) => {
175
+ this.emit('ai_structured:stream_object_finished', {
176
+ requestId,
177
+ latency: Date.now() - startTime,
178
+ usage: result.usage,
179
+ hasObject: !!result.object,
180
+ hasError: !!result.error,
181
+ warnings: result.warnings?.length || 0,
182
+ output: options.output || 'object'
183
+ });
184
+ if (options.onFinish) {
185
+ options.onFinish(result);
186
+ }
187
+ }
188
+ };
189
+ // 根据输出策略构建参数
190
+ const streamOptions = {
191
+ model: options.model,
192
+ system: options.system,
193
+ prompt: options.prompt,
194
+ messages: options.messages,
195
+ maxOutputTokens: options.maxOutputTokens,
196
+ temperature: options.temperature,
197
+ topP: options.topP,
198
+ topK: options.topK,
199
+ presencePenalty: options.presencePenalty,
200
+ frequencyPenalty: options.frequencyPenalty,
201
+ seed: options.seed,
202
+ maxRetries: options.maxRetries,
203
+ abortSignal: options.abortSignal,
204
+ headers: options.headers,
205
+ experimental_repairText: options.experimental_repairText,
206
+ experimental_download: options.experimental_download,
207
+ experimental_telemetry: options.experimental_telemetry,
208
+ providerOptions: options.providerOptions,
209
+ onError: wrappedOptions.onError,
210
+ onFinish: wrappedOptions.onFinish
211
+ };
212
+ // 处理不同的输出策略
213
+ if (options.output) {
214
+ streamOptions.output = options.output;
215
+ }
216
+ if (options.mode) {
217
+ streamOptions.mode = options.mode;
218
+ }
219
+ // Schema 相关参数
220
+ if (options.schema) {
221
+ streamOptions.schema = options.schema;
222
+ }
223
+ if (options.schemaName) {
224
+ streamOptions.schemaName = options.schemaName;
225
+ }
226
+ if (options.schemaDescription) {
227
+ streamOptions.schemaDescription = options.schemaDescription;
228
+ }
229
+ // Enum 模式专用参数
230
+ if (options.output === 'enum' && options.enum) {
231
+ streamOptions.enum = options.enum;
232
+ }
233
+ const streamResult = streamObject(streamOptions);
234
+ // 增强 StreamResult,确保符合官方规范
235
+ return {
236
+ // Promise 属性
237
+ usage: streamResult.usage,
238
+ providerMetadata: streamResult.providerMetadata,
239
+ object: streamResult.object,
240
+ // 流属性
241
+ partialObjectStream: streamResult.partialObjectStream,
242
+ elementStream: streamResult.elementStream || streamResult.partialObjectStream, // array 模式下可用
243
+ textStream: streamResult.textStream,
244
+ fullStream: streamResult.fullStream,
245
+ // 元数据
246
+ request: streamResult.request,
247
+ response: streamResult.response,
248
+ warnings: streamResult.warnings,
249
+ // 响应转换方法
250
+ pipeTextStreamToResponse: (response, init) => {
251
+ if (streamResult.pipeTextStreamToResponse) {
252
+ streamResult.pipeTextStreamToResponse(response, init);
253
+ }
254
+ else {
255
+ this.pipeStreamToResponse(streamResult.textStream, response, init);
256
+ }
257
+ },
258
+ toTextStreamResponse: (init) => streamResult.toTextStreamResponse?.(init) ||
259
+ new Response(streamResult.textStream, {
260
+ headers: { 'Content-Type': 'text/plain; charset=utf-8' },
261
+ ...init
262
+ }),
263
+ // 补充遗漏的方法
264
+ pipeObjectStreamToResponse: (response, init) => {
265
+ if (streamResult.pipeObjectStreamToResponse) {
266
+ streamResult.pipeObjectStreamToResponse(response, init);
267
+ }
268
+ else {
269
+ this.pipeStreamToResponse(streamResult.fullStream, response, init);
270
+ }
271
+ },
272
+ toObjectStreamResponse: (init) => streamResult.toObjectStreamResponse?.(init) ||
273
+ new Response(streamResult.fullStream, {
274
+ headers: { 'Content-Type': 'application/json; charset=utf-8' },
275
+ ...init
276
+ })
277
+ };
278
+ }
279
+ /**
280
+ * 辅助方法:将流导入响应 - 标准实现
281
+ */
282
+ pipeStreamToResponse(stream, response, options) {
283
+ if (!stream || !response)
284
+ return;
285
+ // 标准流处理实现
286
+ if (typeof response.write === 'function') {
287
+ // Node.js Response 对象
288
+ if (stream.pipeTo) {
289
+ stream.pipeTo(response).catch((error) => {
290
+ this.emit('ai_structured:stream_pipe_error', { error });
291
+ });
292
+ }
293
+ else if (stream[Symbol.asyncIterator]) {
294
+ // 异步迭代器处理
295
+ this.consumeAsyncIterator(stream, response);
296
+ }
297
+ }
298
+ else if (response instanceof Response) {
299
+ // Web API Response 对象 - 创建新的可写流
300
+ const writer = new WritableStream({
301
+ write(chunk) {
302
+ // 处理流式数据写入
303
+ }
304
+ });
305
+ stream.pipeTo?.(writer);
306
+ }
307
+ }
308
+ /**
309
+ * 消费异步迭代器并写入响应
310
+ */
311
+ async consumeAsyncIterator(stream, response) {
312
+ try {
313
+ for await (const chunk of stream) {
314
+ if (response.write) {
315
+ response.write(typeof chunk === 'string' ? chunk : JSON.stringify(chunk));
316
+ }
317
+ }
318
+ if (response.end) {
319
+ response.end();
320
+ }
321
+ }
322
+ catch (error) {
323
+ this.emit('ai_structured:async_iterator_error', { error });
324
+ }
325
+ }
326
+ // Convenience methods
327
+ /**
328
+ * Generate object - default object output strategy
329
+ */
330
+ async generateObjectData(model, schema, prompt, options) {
331
+ return this.generateObject({
332
+ model,
333
+ schema,
334
+ prompt,
335
+ output: 'object',
336
+ ...options
337
+ });
338
+ }
339
+ /**
340
+ * 生成数组 - array 输出策略
341
+ */
342
+ async generateArray(model, elementSchema, prompt, options) {
343
+ return this.generateObject({
344
+ model,
345
+ schema: elementSchema,
346
+ prompt,
347
+ output: 'array',
348
+ ...options
349
+ });
350
+ }
351
+ /**
352
+ * 生成枚举值 - enum 输出策略
353
+ */
354
+ async generateEnum(model, enumValues, prompt, options) {
355
+ return this.generateObject({
356
+ model,
357
+ prompt,
358
+ output: 'enum',
359
+ enum: enumValues,
360
+ ...options
361
+ });
362
+ }
363
+ /**
364
+ * 生成无模式JSON - no-schema 输出策略
365
+ */
366
+ async generateFreeformJSON(model, prompt, options) {
367
+ return this.generateObject({
368
+ model,
369
+ prompt,
370
+ output: 'no-schema',
371
+ mode: 'json',
372
+ ...options
373
+ });
374
+ }
375
+ /**
376
+ * 流式生成对象 - 默认 object 输出策略
377
+ */
378
+ streamObjectData(model, schema, prompt, options) {
379
+ return this.streamObject({
380
+ model,
381
+ schema,
382
+ prompt,
383
+ output: 'object',
384
+ ...options
385
+ });
386
+ }
387
+ /**
388
+ * 流式生成数组 - array 输出策略
389
+ */
390
+ streamArray(model, elementSchema, prompt, options) {
391
+ return this.streamObject({
392
+ model,
393
+ schema: elementSchema,
394
+ prompt,
395
+ output: 'array',
396
+ ...options
397
+ });
398
+ }
399
+ /**
400
+ * 流式生成枚举值 - enum 输出策略
401
+ */
402
+ streamEnum(model, enumValues, prompt, options) {
403
+ return this.streamObject({
404
+ model,
405
+ prompt,
406
+ output: 'enum',
407
+ enum: enumValues,
408
+ ...options
409
+ });
410
+ }
411
+ /**
412
+ * 流式生成无模式JSON - no-schema 输出策略
413
+ */
414
+ streamFreeformJSON(model, prompt, options) {
415
+ return this.streamObject({
416
+ model,
417
+ prompt,
418
+ output: 'no-schema',
419
+ mode: 'json',
420
+ ...options
421
+ });
422
+ }
423
+ // Utility methods
424
+ /**
425
+ * Check initialization status
426
+ */
427
+ isInitialized() {
428
+ return this.initialized;
429
+ }
430
+ /**
431
+ * Get statistics
432
+ */
433
+ getStats() {
434
+ return {
435
+ requestCount: this.requestCounter,
436
+ isInitialized: this.initialized
437
+ };
438
+ }
439
+ /**
440
+ * 重置统计信息
441
+ */
442
+ resetStats() {
443
+ this.requestCounter = 0;
444
+ }
445
+ /**
446
+ * 销毁实例
447
+ */
448
+ destroy() {
449
+ this.removeAllListeners();
450
+ this.initialized = false;
451
+ this.requestCounter = 0;
452
+ }
453
+ }
454
+ // Exports
455
+ export { streamObject,
456
+ // Core functions
457
+ generateObject };
458
+ // Default export
459
+ export default AIStructuredDataIntegration;
460
+ //# sourceMappingURL=ai-structured.js.map