@geoscene/ai-components 0.0.0-stage → 5.1.13

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 (549) hide show
  1. package/LICENSE.md +18 -0
  2. package/README.md +2 -3
  3. package/dist/agent-utils/BaseAgent.d.ts +90 -0
  4. package/dist/agent-utils/BaseAgent.js +87 -0
  5. package/dist/agent-utils/FunctionAgent.d.ts +64 -0
  6. package/dist/agent-utils/FunctionAgent.js +98 -0
  7. package/dist/agent-utils/LLMAgent.d.ts +65 -0
  8. package/dist/agent-utils/LLMAgent.js +140 -0
  9. package/dist/agent-utils/WorkflowAgent.d.ts +44 -0
  10. package/dist/agent-utils/WorkflowAgent.js +70 -0
  11. package/dist/agent-utils/index.d.ts +177 -0
  12. package/dist/agent-utils/index.js +167 -0
  13. package/dist/agent-utils/middlewares/humanInTheLoop.d.ts +152 -0
  14. package/dist/agent-utils/middlewares/humanInTheLoop.js +94 -0
  15. package/dist/agent-utils/middlewares/middleware.d.ts +25 -0
  16. package/dist/agent-utils/middlewares/middleware.js +44 -0
  17. package/dist/agent-utils/middlewares/trace.d.ts +27 -0
  18. package/dist/agent-utils/middlewares/trace.js +42 -0
  19. package/dist/agent-utils/middlewares/types.d.ts +123 -0
  20. package/dist/agent-utils/middlewares/types.js +1 -0
  21. package/dist/agent-utils/tools/FunctionTool.d.ts +127 -0
  22. package/dist/agent-utils/tools/FunctionTool.js +80 -0
  23. package/dist/agent-utils/types.d.ts +181 -0
  24. package/dist/agent-utils/workflows/BaseWorkflow.d.ts +87 -0
  25. package/dist/agent-utils/workflows/ConditionalWorkflow.d.ts +72 -0
  26. package/dist/agent-utils/workflows/ConditionalWorkflow.js +61 -0
  27. package/dist/agent-utils/workflows/LoopWorkflow.d.ts +58 -0
  28. package/dist/agent-utils/workflows/LoopWorkflow.js +56 -0
  29. package/dist/agent-utils/workflows/ParallelWorkflow.d.ts +68 -0
  30. package/dist/agent-utils/workflows/ParallelWorkflow.js +129 -0
  31. package/dist/agent-utils/workflows/RouterWorkflow.d.ts +63 -0
  32. package/dist/agent-utils/workflows/RouterWorkflow.js +75 -0
  33. package/dist/agent-utils/workflows/SequentialWorkflow.d.ts +56 -0
  34. package/dist/agent-utils/workflows/SequentialWorkflow.js +69 -0
  35. package/dist/agent-utils/workflows/SwitchWorkflow.d.ts +74 -0
  36. package/dist/agent-utils/workflows/SwitchWorkflow.js +84 -0
  37. package/dist/assets/embeddings.worker-k9_Ou679.js +1 -0
  38. package/dist/cdn/22TUPT3D.js +2 -0
  39. package/dist/cdn/27BBMHFA.js +3 -0
  40. package/dist/cdn/2FYXUV7O.js +30 -0
  41. package/dist/cdn/3Y723IJS.js +2 -0
  42. package/dist/cdn/45POUVZK.js +2 -0
  43. package/dist/cdn/46U2PGRW.js +65 -0
  44. package/dist/cdn/4ASZF5I2.js +181 -0
  45. package/dist/cdn/4BA4OUWC.js +101 -0
  46. package/dist/cdn/4EALV6QJ.js +2 -0
  47. package/dist/cdn/53Z3R4OY.js +95 -0
  48. package/dist/cdn/5RQUSM3T.js +132 -0
  49. package/dist/cdn/6FEB6XYK.js +2 -0
  50. package/dist/cdn/6TB6FVGF.js +9 -0
  51. package/dist/cdn/72TH3ONI.js +2 -0
  52. package/dist/cdn/77GAVZIK.js +62 -0
  53. package/dist/cdn/7CCULIWM.js +2 -0
  54. package/dist/cdn/7WSTR3WA.js +2 -0
  55. package/dist/cdn/AJKWCXDA.js +46 -0
  56. package/dist/cdn/AXOPGQGZ.js +2 -0
  57. package/dist/cdn/B35MHQJD.js +2 -0
  58. package/dist/cdn/BUTKUPXN.js +33 -0
  59. package/dist/cdn/CFDTXKJ6.js +2 -0
  60. package/dist/cdn/CU2TRUZQ.js +93 -0
  61. package/dist/cdn/D3KUKNJ7.js +11 -0
  62. package/dist/cdn/DHGNGMNJ.js +2 -0
  63. package/dist/cdn/DKNDDDWM.js +2 -0
  64. package/dist/cdn/ESRKMM6P.js +2 -0
  65. package/dist/cdn/FFXK76K7.js +2 -0
  66. package/dist/cdn/FYNHAVHL.js +2 -0
  67. package/dist/cdn/G7XK3XOR.js +77 -0
  68. package/dist/cdn/GHNP3LDR.js +2 -0
  69. package/dist/cdn/GI2NZ45U.js +4 -0
  70. package/dist/cdn/GTXGIROA.js +2 -0
  71. package/dist/cdn/H3EEFM4A.js +179 -0
  72. package/dist/cdn/HCD4CDWZ.js +2 -0
  73. package/dist/cdn/HJGF7W5O.js +35 -0
  74. package/dist/cdn/HK4HSYKG.js +2 -0
  75. package/dist/cdn/I55TMNNP.js +2 -0
  76. package/dist/cdn/ILGFFHXZ.js +2 -0
  77. package/dist/cdn/INJ2KWHS.js +2 -0
  78. package/dist/cdn/KBFL7LCS.js +2 -0
  79. package/dist/cdn/KGYSBUFO.js +9 -0
  80. package/dist/cdn/KLSCVMLN.js +13 -0
  81. package/dist/cdn/L6GVMINQ.js +2 -0
  82. package/dist/cdn/LTPDBXQ7.js +6 -0
  83. package/dist/cdn/LUY7QCZ3.js +2 -0
  84. package/dist/cdn/LXJWWOGK.js +66 -0
  85. package/dist/cdn/M7C6Y752.js +2 -0
  86. package/dist/cdn/MFZCTEAG.js +2 -0
  87. package/dist/cdn/MQ7QXIOW.js +52 -0
  88. package/dist/cdn/N2SKXRLK.js +65 -0
  89. package/dist/cdn/N5XXTTDR.js +2 -0
  90. package/dist/cdn/NHDPNQXA.js +36 -0
  91. package/dist/cdn/NMWLJECU.js +109 -0
  92. package/dist/cdn/OBDCCGVH.js +2 -0
  93. package/dist/cdn/P5M2HNJ7.js +2 -0
  94. package/dist/cdn/PFW7KXCP.js +48 -0
  95. package/dist/cdn/PIUDMACH.js +56 -0
  96. package/dist/cdn/PKH5BECA.js +2 -0
  97. package/dist/cdn/PTKZXFXB.js +27 -0
  98. package/dist/cdn/Q7FTL7JO.js +2 -0
  99. package/dist/cdn/QH6TSBNI.js +2 -0
  100. package/dist/cdn/QZXQIJSW.js +2 -0
  101. package/dist/cdn/TFPBGM6P.js +2 -0
  102. package/dist/cdn/THLZTO23.js +12 -0
  103. package/dist/cdn/TIXCHLEN.js +121 -0
  104. package/dist/cdn/TOYQ22PR.js +2 -0
  105. package/dist/cdn/U72SSJEL.js +2 -0
  106. package/dist/cdn/UDXMJNRF.js +3 -0
  107. package/dist/cdn/UE3CP46P.js +2 -0
  108. package/dist/cdn/URYKQKFE.js +3 -0
  109. package/dist/cdn/VBS2ZXKT.js +3 -0
  110. package/dist/cdn/VDAF255D.js +22 -0
  111. package/dist/cdn/VG7HRDJX.js +2 -0
  112. package/dist/cdn/VPZHLYPA.js +2 -0
  113. package/dist/cdn/VWMJ7HIK.js +66 -0
  114. package/dist/cdn/WNJM5TET.js +2 -0
  115. package/dist/cdn/XTEMZD4A.js +2 -0
  116. package/dist/cdn/Y5GGIKKC.js +2 -0
  117. package/dist/cdn/YULWPVJ3.js +2 -0
  118. package/dist/cdn/YURWID37.js +2 -0
  119. package/dist/cdn/ZDJM4RRH.js +2 -0
  120. package/dist/cdn/ZGUVZMYR.js +157 -0
  121. package/dist/cdn/agent-utils/index.js +2 -0
  122. package/dist/cdn/agent-utils/middlewares/humanInTheLoop.js +3 -0
  123. package/dist/cdn/agent-utils/middlewares/middleware.js +2 -0
  124. package/dist/cdn/agent-utils/middlewares/trace.js +2 -0
  125. package/dist/cdn/assets/assistant/t9n/messages.ar.json +1 -0
  126. package/dist/cdn/assets/assistant/t9n/messages.bg.json +1 -0
  127. package/dist/cdn/assets/assistant/t9n/messages.bs.json +1 -0
  128. package/dist/cdn/assets/assistant/t9n/messages.ca.json +1 -0
  129. package/dist/cdn/assets/assistant/t9n/messages.cs.json +1 -0
  130. package/dist/cdn/assets/assistant/t9n/messages.da.json +1 -0
  131. package/dist/cdn/assets/assistant/t9n/messages.de.json +1 -0
  132. package/dist/cdn/assets/assistant/t9n/messages.el.json +1 -0
  133. package/dist/cdn/assets/assistant/t9n/messages.en.json +1 -0
  134. package/dist/cdn/assets/assistant/t9n/messages.es.json +1 -0
  135. package/dist/cdn/assets/assistant/t9n/messages.et.json +1 -0
  136. package/dist/cdn/assets/assistant/t9n/messages.fi.json +1 -0
  137. package/dist/cdn/assets/assistant/t9n/messages.fr.json +1 -0
  138. package/dist/cdn/assets/assistant/t9n/messages.he.json +1 -0
  139. package/dist/cdn/assets/assistant/t9n/messages.hr.json +1 -0
  140. package/dist/cdn/assets/assistant/t9n/messages.hu.json +1 -0
  141. package/dist/cdn/assets/assistant/t9n/messages.id.json +1 -0
  142. package/dist/cdn/assets/assistant/t9n/messages.it.json +1 -0
  143. package/dist/cdn/assets/assistant/t9n/messages.ja.json +1 -0
  144. package/dist/cdn/assets/assistant/t9n/messages.ko.json +1 -0
  145. package/dist/cdn/assets/assistant/t9n/messages.lt.json +1 -0
  146. package/dist/cdn/assets/assistant/t9n/messages.lv.json +1 -0
  147. package/dist/cdn/assets/assistant/t9n/messages.nl.json +1 -0
  148. package/dist/cdn/assets/assistant/t9n/messages.no.json +1 -0
  149. package/dist/cdn/assets/assistant/t9n/messages.pl.json +1 -0
  150. package/dist/cdn/assets/assistant/t9n/messages.pt-BR.json +1 -0
  151. package/dist/cdn/assets/assistant/t9n/messages.pt-PT.json +1 -0
  152. package/dist/cdn/assets/assistant/t9n/messages.ro.json +1 -0
  153. package/dist/cdn/assets/assistant/t9n/messages.ru.json +1 -0
  154. package/dist/cdn/assets/assistant/t9n/messages.sk.json +1 -0
  155. package/dist/cdn/assets/assistant/t9n/messages.sl.json +1 -0
  156. package/dist/cdn/assets/assistant/t9n/messages.sr.json +1 -0
  157. package/dist/cdn/assets/assistant/t9n/messages.sv.json +1 -0
  158. package/dist/cdn/assets/assistant/t9n/messages.th.json +1 -0
  159. package/dist/cdn/assets/assistant/t9n/messages.tr.json +1 -0
  160. package/dist/cdn/assets/assistant/t9n/messages.uk.json +1 -0
  161. package/dist/cdn/assets/assistant/t9n/messages.vi.json +1 -0
  162. package/dist/cdn/assets/assistant/t9n/messages.zh-CN.json +1 -0
  163. package/dist/cdn/assets/assistant/t9n/messages.zh-HK.json +1 -0
  164. package/dist/cdn/assets/assistant/t9n/messages.zh-TW.json +1 -0
  165. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ar.json +1 -0
  166. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.bg.json +1 -0
  167. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.bs.json +1 -0
  168. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ca.json +1 -0
  169. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.cs.json +1 -0
  170. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.da.json +1 -0
  171. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.de.json +1 -0
  172. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.el.json +1 -0
  173. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.en.json +1 -0
  174. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.es.json +1 -0
  175. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.et.json +1 -0
  176. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.fi.json +1 -0
  177. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.fr.json +1 -0
  178. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.he.json +1 -0
  179. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.hr.json +1 -0
  180. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.hu.json +1 -0
  181. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.id.json +1 -0
  182. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.it.json +1 -0
  183. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ja.json +1 -0
  184. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ko.json +1 -0
  185. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.lt.json +1 -0
  186. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.lv.json +1 -0
  187. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.nl.json +1 -0
  188. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.no.json +1 -0
  189. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.pl.json +1 -0
  190. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.pt-BR.json +1 -0
  191. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.pt-PT.json +1 -0
  192. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ro.json +1 -0
  193. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ru.json +1 -0
  194. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sk.json +1 -0
  195. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sl.json +1 -0
  196. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sr.json +1 -0
  197. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sv.json +1 -0
  198. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.th.json +1 -0
  199. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.tr.json +1 -0
  200. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.uk.json +1 -0
  201. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.vi.json +1 -0
  202. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.zh-CN.json +1 -0
  203. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.zh-HK.json +1 -0
  204. package/dist/cdn/assets/assistant-chat-entry/t9n/messages.zh-TW.json +1 -0
  205. package/dist/cdn/assets/assistant-interrupt/t9n/messages.ar.json +1 -0
  206. package/dist/cdn/assets/assistant-interrupt/t9n/messages.bg.json +1 -0
  207. package/dist/cdn/assets/assistant-interrupt/t9n/messages.bs.json +1 -0
  208. package/dist/cdn/assets/assistant-interrupt/t9n/messages.ca.json +1 -0
  209. package/dist/cdn/assets/assistant-interrupt/t9n/messages.cs.json +1 -0
  210. package/dist/cdn/assets/assistant-interrupt/t9n/messages.da.json +1 -0
  211. package/dist/cdn/assets/assistant-interrupt/t9n/messages.de.json +1 -0
  212. package/dist/cdn/assets/assistant-interrupt/t9n/messages.el.json +1 -0
  213. package/dist/cdn/assets/assistant-interrupt/t9n/messages.en.json +1 -0
  214. package/dist/cdn/assets/assistant-interrupt/t9n/messages.es.json +1 -0
  215. package/dist/cdn/assets/assistant-interrupt/t9n/messages.et.json +1 -0
  216. package/dist/cdn/assets/assistant-interrupt/t9n/messages.fi.json +1 -0
  217. package/dist/cdn/assets/assistant-interrupt/t9n/messages.fr.json +1 -0
  218. package/dist/cdn/assets/assistant-interrupt/t9n/messages.he.json +1 -0
  219. package/dist/cdn/assets/assistant-interrupt/t9n/messages.hr.json +1 -0
  220. package/dist/cdn/assets/assistant-interrupt/t9n/messages.hu.json +1 -0
  221. package/dist/cdn/assets/assistant-interrupt/t9n/messages.id.json +1 -0
  222. package/dist/cdn/assets/assistant-interrupt/t9n/messages.it.json +1 -0
  223. package/dist/cdn/assets/assistant-interrupt/t9n/messages.ja.json +1 -0
  224. package/dist/cdn/assets/assistant-interrupt/t9n/messages.ko.json +1 -0
  225. package/dist/cdn/assets/assistant-interrupt/t9n/messages.lt.json +1 -0
  226. package/dist/cdn/assets/assistant-interrupt/t9n/messages.lv.json +1 -0
  227. package/dist/cdn/assets/assistant-interrupt/t9n/messages.nl.json +1 -0
  228. package/dist/cdn/assets/assistant-interrupt/t9n/messages.no.json +1 -0
  229. package/dist/cdn/assets/assistant-interrupt/t9n/messages.pl.json +1 -0
  230. package/dist/cdn/assets/assistant-interrupt/t9n/messages.pt-BR.json +1 -0
  231. package/dist/cdn/assets/assistant-interrupt/t9n/messages.pt-PT.json +1 -0
  232. package/dist/cdn/assets/assistant-interrupt/t9n/messages.ro.json +1 -0
  233. package/dist/cdn/assets/assistant-interrupt/t9n/messages.ru.json +1 -0
  234. package/dist/cdn/assets/assistant-interrupt/t9n/messages.sk.json +1 -0
  235. package/dist/cdn/assets/assistant-interrupt/t9n/messages.sl.json +1 -0
  236. package/dist/cdn/assets/assistant-interrupt/t9n/messages.sr.json +1 -0
  237. package/dist/cdn/assets/assistant-interrupt/t9n/messages.sv.json +1 -0
  238. package/dist/cdn/assets/assistant-interrupt/t9n/messages.th.json +1 -0
  239. package/dist/cdn/assets/assistant-interrupt/t9n/messages.tr.json +1 -0
  240. package/dist/cdn/assets/assistant-interrupt/t9n/messages.uk.json +1 -0
  241. package/dist/cdn/assets/assistant-interrupt/t9n/messages.vi.json +1 -0
  242. package/dist/cdn/assets/assistant-interrupt/t9n/messages.zh-CN.json +1 -0
  243. package/dist/cdn/assets/assistant-interrupt/t9n/messages.zh-HK.json +1 -0
  244. package/dist/cdn/assets/assistant-interrupt/t9n/messages.zh-TW.json +1 -0
  245. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ar.json +1 -0
  246. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.bg.json +1 -0
  247. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.bs.json +1 -0
  248. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ca.json +1 -0
  249. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.cs.json +1 -0
  250. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.da.json +1 -0
  251. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.de.json +1 -0
  252. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.el.json +1 -0
  253. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.en.json +1 -0
  254. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.es.json +1 -0
  255. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.et.json +1 -0
  256. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.fi.json +1 -0
  257. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.fr.json +1 -0
  258. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.he.json +1 -0
  259. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.hr.json +1 -0
  260. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.hu.json +1 -0
  261. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.id.json +1 -0
  262. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.it.json +1 -0
  263. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ja.json +1 -0
  264. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ko.json +1 -0
  265. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.lt.json +1 -0
  266. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.lv.json +1 -0
  267. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.nl.json +1 -0
  268. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.no.json +1 -0
  269. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.pl.json +1 -0
  270. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.pt-BR.json +1 -0
  271. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.pt-PT.json +1 -0
  272. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ro.json +1 -0
  273. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ru.json +1 -0
  274. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sk.json +1 -0
  275. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sl.json +1 -0
  276. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sr.json +1 -0
  277. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sv.json +1 -0
  278. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.th.json +1 -0
  279. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.tr.json +1 -0
  280. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.uk.json +1 -0
  281. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.vi.json +1 -0
  282. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.zh-CN.json +1 -0
  283. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.zh-HK.json +1 -0
  284. package/dist/cdn/assets/assistant-message-feedback/t9n/messages.zh-TW.json +1 -0
  285. package/dist/cdn/assets/assistant-message-footer/t9n/messages.ar.json +1 -0
  286. package/dist/cdn/assets/assistant-message-footer/t9n/messages.bg.json +1 -0
  287. package/dist/cdn/assets/assistant-message-footer/t9n/messages.bs.json +1 -0
  288. package/dist/cdn/assets/assistant-message-footer/t9n/messages.ca.json +1 -0
  289. package/dist/cdn/assets/assistant-message-footer/t9n/messages.cs.json +1 -0
  290. package/dist/cdn/assets/assistant-message-footer/t9n/messages.da.json +1 -0
  291. package/dist/cdn/assets/assistant-message-footer/t9n/messages.de.json +1 -0
  292. package/dist/cdn/assets/assistant-message-footer/t9n/messages.el.json +1 -0
  293. package/dist/cdn/assets/assistant-message-footer/t9n/messages.en.json +1 -0
  294. package/dist/cdn/assets/assistant-message-footer/t9n/messages.es.json +1 -0
  295. package/dist/cdn/assets/assistant-message-footer/t9n/messages.et.json +1 -0
  296. package/dist/cdn/assets/assistant-message-footer/t9n/messages.fi.json +1 -0
  297. package/dist/cdn/assets/assistant-message-footer/t9n/messages.fr.json +1 -0
  298. package/dist/cdn/assets/assistant-message-footer/t9n/messages.he.json +1 -0
  299. package/dist/cdn/assets/assistant-message-footer/t9n/messages.hr.json +1 -0
  300. package/dist/cdn/assets/assistant-message-footer/t9n/messages.hu.json +1 -0
  301. package/dist/cdn/assets/assistant-message-footer/t9n/messages.id.json +1 -0
  302. package/dist/cdn/assets/assistant-message-footer/t9n/messages.it.json +1 -0
  303. package/dist/cdn/assets/assistant-message-footer/t9n/messages.ja.json +1 -0
  304. package/dist/cdn/assets/assistant-message-footer/t9n/messages.ko.json +1 -0
  305. package/dist/cdn/assets/assistant-message-footer/t9n/messages.lt.json +1 -0
  306. package/dist/cdn/assets/assistant-message-footer/t9n/messages.lv.json +1 -0
  307. package/dist/cdn/assets/assistant-message-footer/t9n/messages.nl.json +1 -0
  308. package/dist/cdn/assets/assistant-message-footer/t9n/messages.no.json +1 -0
  309. package/dist/cdn/assets/assistant-message-footer/t9n/messages.pl.json +1 -0
  310. package/dist/cdn/assets/assistant-message-footer/t9n/messages.pt-BR.json +1 -0
  311. package/dist/cdn/assets/assistant-message-footer/t9n/messages.pt-PT.json +1 -0
  312. package/dist/cdn/assets/assistant-message-footer/t9n/messages.ro.json +1 -0
  313. package/dist/cdn/assets/assistant-message-footer/t9n/messages.ru.json +1 -0
  314. package/dist/cdn/assets/assistant-message-footer/t9n/messages.sk.json +1 -0
  315. package/dist/cdn/assets/assistant-message-footer/t9n/messages.sl.json +1 -0
  316. package/dist/cdn/assets/assistant-message-footer/t9n/messages.sr.json +1 -0
  317. package/dist/cdn/assets/assistant-message-footer/t9n/messages.sv.json +1 -0
  318. package/dist/cdn/assets/assistant-message-footer/t9n/messages.th.json +1 -0
  319. package/dist/cdn/assets/assistant-message-footer/t9n/messages.tr.json +1 -0
  320. package/dist/cdn/assets/assistant-message-footer/t9n/messages.uk.json +1 -0
  321. package/dist/cdn/assets/assistant-message-footer/t9n/messages.vi.json +1 -0
  322. package/dist/cdn/assets/assistant-message-footer/t9n/messages.zh-CN.json +1 -0
  323. package/dist/cdn/assets/assistant-message-footer/t9n/messages.zh-HK.json +1 -0
  324. package/dist/cdn/assets/assistant-message-footer/t9n/messages.zh-TW.json +1 -0
  325. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ar.json +1 -0
  326. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.bg.json +1 -0
  327. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.bs.json +1 -0
  328. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ca.json +1 -0
  329. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.cs.json +1 -0
  330. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.da.json +1 -0
  331. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.de.json +1 -0
  332. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.el.json +1 -0
  333. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.en.json +1 -0
  334. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.es.json +1 -0
  335. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.et.json +1 -0
  336. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.fi.json +1 -0
  337. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.fr.json +1 -0
  338. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.he.json +1 -0
  339. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.hr.json +1 -0
  340. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.hu.json +1 -0
  341. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.id.json +1 -0
  342. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.it.json +1 -0
  343. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ja.json +1 -0
  344. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ko.json +1 -0
  345. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.lt.json +1 -0
  346. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.lv.json +1 -0
  347. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.nl.json +1 -0
  348. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.no.json +1 -0
  349. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.pl.json +1 -0
  350. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.pt-BR.json +1 -0
  351. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.pt-PT.json +1 -0
  352. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ro.json +1 -0
  353. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ru.json +1 -0
  354. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sk.json +1 -0
  355. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sl.json +1 -0
  356. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sr.json +1 -0
  357. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sv.json +1 -0
  358. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.th.json +1 -0
  359. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.tr.json +1 -0
  360. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.uk.json +1 -0
  361. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.vi.json +1 -0
  362. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.zh-CN.json +1 -0
  363. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.zh-HK.json +1 -0
  364. package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.zh-TW.json +1 -0
  365. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ar.json +1 -0
  366. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.bg.json +1 -0
  367. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.bs.json +1 -0
  368. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ca.json +1 -0
  369. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.cs.json +1 -0
  370. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.da.json +1 -0
  371. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.de.json +1 -0
  372. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.el.json +1 -0
  373. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.en.json +1 -0
  374. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.es.json +1 -0
  375. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.et.json +1 -0
  376. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.fi.json +1 -0
  377. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.fr.json +1 -0
  378. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.he.json +1 -0
  379. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.hr.json +1 -0
  380. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.hu.json +1 -0
  381. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.id.json +1 -0
  382. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.it.json +1 -0
  383. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ja.json +1 -0
  384. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ko.json +1 -0
  385. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.lt.json +1 -0
  386. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.lv.json +1 -0
  387. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.nl.json +1 -0
  388. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.no.json +1 -0
  389. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.pl.json +1 -0
  390. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.pt-BR.json +1 -0
  391. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.pt-PT.json +1 -0
  392. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ro.json +1 -0
  393. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ru.json +1 -0
  394. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sk.json +1 -0
  395. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sl.json +1 -0
  396. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sr.json +1 -0
  397. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sv.json +1 -0
  398. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.th.json +1 -0
  399. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.tr.json +1 -0
  400. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.uk.json +1 -0
  401. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.vi.json +1 -0
  402. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.zh-CN.json +1 -0
  403. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.zh-HK.json +1 -0
  404. package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.zh-TW.json +1 -0
  405. package/dist/cdn/index.js +2 -0
  406. package/dist/cdn/main.css +1 -0
  407. package/dist/chunks/BaseWorkflow.js +107 -0
  408. package/dist/chunks/adapter.js +3148 -0
  409. package/dist/chunks/converterUtils.js +124 -0
  410. package/dist/chunks/dataExplorationGraph.js +319 -0
  411. package/dist/chunks/data_explore_filter_prompt.js +112 -0
  412. package/dist/chunks/data_explore_query_prompt.js +135 -0
  413. package/dist/chunks/embeddings.worker.js +25 -0
  414. package/dist/chunks/field_descriptions_prompt.js +80 -0
  415. package/dist/chunks/generateLayerDescriptions.js +477 -0
  416. package/dist/chunks/geosceneKnowledgeGraph.js +221 -0
  417. package/dist/chunks/geoscene_knowledge_current_lc_context.js +25 -0
  418. package/dist/chunks/geoscene_knowledge_current_map_context.js +36 -0
  419. package/dist/chunks/geoscene_knowledge_cypher_query_prompt.js +96 -0
  420. package/dist/chunks/geoscene_knowledge_lucene_generation_prompt.js +98 -0
  421. package/dist/chunks/geoscene_knowledge_summarize_result_prompt.js +104 -0
  422. package/dist/chunks/geoscene_knowledge_tool_prompt.js +30 -0
  423. package/dist/chunks/graph.js +86 -0
  424. package/dist/chunks/helpGraph.js +117 -0
  425. package/dist/chunks/help_prompt.js +68 -0
  426. package/dist/chunks/index.js +11 -0
  427. package/dist/chunks/intent_prompt.js +124 -0
  428. package/dist/chunks/layerStylingGraph.js +190 -0
  429. package/dist/chunks/layer_descriptions_prompt.js +55 -0
  430. package/dist/chunks/layer_styling_prompt.js +65 -0
  431. package/dist/chunks/navigationGraph.js +265 -0
  432. package/dist/chunks/navigation_intent_prompt.js +49 -0
  433. package/dist/chunks/navigation_tool_prompt.js +38 -0
  434. package/dist/chunks/orchestrator.js +569 -0
  435. package/dist/chunks/runtime.js +15 -0
  436. package/dist/chunks/slottableRequestUtils.js +7 -0
  437. package/dist/chunks/state.js +71 -0
  438. package/dist/chunks/summarize_query_response_prompt.js +69 -0
  439. package/dist/chunks/toolCallResponse.js +32 -0
  440. package/dist/chunks/useT9n.js +7 -0
  441. package/dist/chunks/utils.js +53 -0
  442. package/dist/chunks/utils2.js +47 -0
  443. package/dist/chunks/utils3.js +16 -0
  444. package/dist/components/geoscene-assistant/customElement.d.ts +541 -0
  445. package/dist/components/geoscene-assistant/customElement.js +562 -0
  446. package/dist/components/geoscene-assistant/index.d.ts +1 -0
  447. package/dist/components/geoscene-assistant/index.js +13 -0
  448. package/dist/components/geoscene-assistant/types.d.ts +147 -0
  449. package/dist/components/geoscene-assistant-agent/customElement.d.ts +141 -0
  450. package/dist/components/geoscene-assistant-agent/customElement.js +23 -0
  451. package/dist/components/geoscene-assistant-agent/index.d.ts +1 -0
  452. package/dist/components/geoscene-assistant-agent/index.js +1 -0
  453. package/dist/components/geoscene-assistant-chat/customElement.d.ts +17 -0
  454. package/dist/components/geoscene-assistant-chat/customElement.js +50 -0
  455. package/dist/components/geoscene-assistant-chat/index.d.ts +1 -0
  456. package/dist/components/geoscene-assistant-chat/index.js +1 -0
  457. package/dist/components/geoscene-assistant-chat-entry/customElement.d.ts +37 -0
  458. package/dist/components/geoscene-assistant-chat-entry/customElement.js +85 -0
  459. package/dist/components/geoscene-assistant-chat-entry/index.d.ts +1 -0
  460. package/dist/components/geoscene-assistant-chat-entry/index.js +3 -0
  461. package/dist/components/geoscene-assistant-data-exploration-agent/customElement.d.ts +101 -0
  462. package/dist/components/geoscene-assistant-data-exploration-agent/customElement.js +48 -0
  463. package/dist/components/geoscene-assistant-data-exploration-agent/index.d.ts +1 -0
  464. package/dist/components/geoscene-assistant-data-exploration-agent/index.js +1 -0
  465. package/dist/components/geoscene-assistant-help-agent/customElement.d.ts +73 -0
  466. package/dist/components/geoscene-assistant-help-agent/customElement.js +51 -0
  467. package/dist/components/geoscene-assistant-help-agent/index.d.ts +1 -0
  468. package/dist/components/geoscene-assistant-help-agent/index.js +1 -0
  469. package/dist/components/geoscene-assistant-interrupt/customElement.d.ts +31 -0
  470. package/dist/components/geoscene-assistant-interrupt/customElement.js +37 -0
  471. package/dist/components/geoscene-assistant-interrupt/index.d.ts +1 -0
  472. package/dist/components/geoscene-assistant-interrupt/index.js +6 -0
  473. package/dist/components/geoscene-assistant-interrupt-preview/customElement.js +20 -0
  474. package/dist/components/geoscene-assistant-interrupt-preview/index.js +2 -0
  475. package/dist/components/geoscene-assistant-knowledge-agent/customElement.d.ts +158 -0
  476. package/dist/components/geoscene-assistant-knowledge-agent/customElement.js +74 -0
  477. package/dist/components/geoscene-assistant-knowledge-agent/index.d.ts +1 -0
  478. package/dist/components/geoscene-assistant-knowledge-agent/index.js +1 -0
  479. package/dist/components/geoscene-assistant-layer-styling-agent/customElement.d.ts +8 -0
  480. package/dist/components/geoscene-assistant-layer-styling-agent/customElement.js +51 -0
  481. package/dist/components/geoscene-assistant-layer-styling-agent/index.d.ts +1 -0
  482. package/dist/components/geoscene-assistant-layer-styling-agent/index.js +1 -0
  483. package/dist/components/geoscene-assistant-message/customElement.d.ts +23 -0
  484. package/dist/components/geoscene-assistant-message/customElement.js +45 -0
  485. package/dist/components/geoscene-assistant-message/index.d.ts +1 -0
  486. package/dist/components/geoscene-assistant-message/index.js +5 -0
  487. package/dist/components/geoscene-assistant-message-block/customElement.d.ts +8 -0
  488. package/dist/components/geoscene-assistant-message-block/customElement.js +36 -0
  489. package/dist/components/geoscene-assistant-message-block/index.d.ts +1 -0
  490. package/dist/components/geoscene-assistant-message-block/index.js +3 -0
  491. package/dist/components/geoscene-assistant-message-feedback/customElement.d.ts +26 -0
  492. package/dist/components/geoscene-assistant-message-feedback/customElement.js +36 -0
  493. package/dist/components/geoscene-assistant-message-feedback/index.d.ts +1 -0
  494. package/dist/components/geoscene-assistant-message-feedback/index.js +3 -0
  495. package/dist/components/geoscene-assistant-message-footer/customElement.d.ts +28 -0
  496. package/dist/components/geoscene-assistant-message-footer/customElement.js +62 -0
  497. package/dist/components/geoscene-assistant-message-footer/index.d.ts +1 -0
  498. package/dist/components/geoscene-assistant-message-footer/index.js +6 -0
  499. package/dist/components/geoscene-assistant-message-loading/customElement.d.ts +17 -0
  500. package/dist/components/geoscene-assistant-message-loading/customElement.js +23 -0
  501. package/dist/components/geoscene-assistant-message-loading/index.d.ts +1 -0
  502. package/dist/components/geoscene-assistant-message-loading/index.js +5 -0
  503. package/dist/components/geoscene-assistant-message-log/customElement.d.ts +14 -0
  504. package/dist/components/geoscene-assistant-message-log/customElement.js +29 -0
  505. package/dist/components/geoscene-assistant-message-log/index.d.ts +1 -0
  506. package/dist/components/geoscene-assistant-message-log/index.js +3 -0
  507. package/dist/components/geoscene-assistant-message-read-aloud/customElement.d.ts +22 -0
  508. package/dist/components/geoscene-assistant-message-read-aloud/customElement.js +100 -0
  509. package/dist/components/geoscene-assistant-message-read-aloud/index.d.ts +1 -0
  510. package/dist/components/geoscene-assistant-message-read-aloud/index.js +3 -0
  511. package/dist/components/geoscene-assistant-message-text/customElement.d.ts +11 -0
  512. package/dist/components/geoscene-assistant-message-text/customElement.js +22 -0
  513. package/dist/components/geoscene-assistant-message-text/index.d.ts +1 -0
  514. package/dist/components/geoscene-assistant-message-text/index.js +1 -0
  515. package/dist/components/geoscene-assistant-navigation-agent/customElement.d.ts +81 -0
  516. package/dist/components/geoscene-assistant-navigation-agent/customElement.js +50 -0
  517. package/dist/components/geoscene-assistant-navigation-agent/index.d.ts +1 -0
  518. package/dist/components/geoscene-assistant-navigation-agent/index.js +1 -0
  519. package/dist/components/geoscene-assistant-speech-input/customElement.d.ts +36 -0
  520. package/dist/components/geoscene-assistant-speech-input/customElement.js +488 -0
  521. package/dist/components/geoscene-assistant-speech-input/index.d.ts +1 -0
  522. package/dist/components/geoscene-assistant-speech-input/index.js +2 -0
  523. package/dist/components/geoscene-assistant-speech-input/support/types.d.ts +20 -0
  524. package/dist/components/geoscene-assistant-suggested-prompts/customElement.d.ts +19 -0
  525. package/dist/components/geoscene-assistant-suggested-prompts/customElement.js +27 -0
  526. package/dist/components/geoscene-assistant-suggested-prompts/index.d.ts +1 -0
  527. package/dist/components/geoscene-assistant-suggested-prompts/index.js +3 -0
  528. package/dist/components/geoscene-assistant-user-message/customElement.d.ts +13 -0
  529. package/dist/components/geoscene-assistant-user-message/customElement.js +25 -0
  530. package/dist/components/geoscene-assistant-user-message/index.d.ts +1 -0
  531. package/dist/components/geoscene-assistant-user-message/index.js +2 -0
  532. package/dist/docs/api.json +1 -0
  533. package/dist/docs/docs.json +1 -0
  534. package/dist/docs/vscode.css-custom-data.json +1 -0
  535. package/dist/docs/vscode.html-custom-data.json +1 -0
  536. package/dist/docs/web-types.json +1 -0
  537. package/dist/index.d.ts +158 -0
  538. package/dist/index.js +6 -0
  539. package/dist/loader.d.ts +2 -0
  540. package/dist/loader.js +30 -0
  541. package/dist/oauth-callback.html +31 -0
  542. package/dist/types/components.d.ts +2 -0
  543. package/dist/types/lumina.d.ts +138 -0
  544. package/dist/types/preact.d.ts +164 -0
  545. package/dist/types/react.d.ts +193 -0
  546. package/dist/types/stencil.d.ts +145 -0
  547. package/dist/utils/index.d.ts +542 -0
  548. package/dist/utils/index.js +116 -0
  549. package/package.json +66 -5
@@ -0,0 +1,56 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{D as Je,M as Ve,Q as Tt,a as rt,b as S,f as $,j,k as F,la as ee,ma as Ze,na as W,oa as bt,qa as ve,ra as fe,sa as Ce,t as st,ta as _t,u as at}from"./H3EEFM4A.js";import{Ba as ze,D as $e,Db as q,Eb as Te,Gb as gt,Jb as be,Lb as wt,Ob as a,P as M,Pa as We,Qb as He,Sa as H,Sb as _e,Ta as de,U as it,Va as ct,Wa as dt,Wb as me,Xb as Z,Ya as Fe,Z as w,_a as ut,_b as ae,aa as Ue,ac as xe,ja as K,jb as ue,kb as ye,na as Be,nb as Me,nc as Ge,oa as B,pc as yt,rb as ft,tb as pt,tc as Mt,ua as lt,ub as Q,vb as ht}from"./4ASZF5I2.js";import{Dd as z,s as mt}from"./LXJWWOGK.js";var Ye=Symbol.for("AgentMiddleware");function A(e){return{[Ye]:!0,name:e.name,stateSchema:e.stateSchema,contextSchema:e.contextSchema,wrapToolCall:e.wrapToolCall,wrapModelCall:e.wrapModelCall,beforeAgent:e.beforeAgent,beforeModel:e.beforeModel,afterModel:e.afterModel,afterAgent:e.afterAgent,tools:e.tools}}var Se=class extends Error{constructor(){super("The provided LLM already has bound tools. Please provide an LLM without bound tools to createAgent. The agent will bind the tools provided in the 'tools' parameter.")}},ke=class extends Error{toolNames;constructor(e){super(`The model has called multiple tools: ${e.join(", ")} to return a structured output. This is not supported. Please provide a single structured output.`),this.toolNames=e}},Ke=class extends Error{toolName;errors;constructor(e,t){super(`Failed to parse structured output for tool '${e}':${t.map(n=>`
3
+ - ${n}`).join("")}.`),this.toolName=e,this.errors=t}},Ee=class extends Error{toolCall;toolError;constructor(e,t){let n=e instanceof Error?e:new Error(String(e)),o=JSON.stringify(t.args);super(`Error invoking tool '${t.name}' with kwargs ${o} with error: ${n.stack}
4
+ Please fix the error and try again.`),this.toolCall=t,this.toolError=n}},pe=class xt extends Error{static"~brand"="MiddlewareError";constructor(t,n){let o=t instanceof Error?t.message:String(t);super(o),this.name=t instanceof Error?t.name:`${n[0].toUpperCase()+n.slice(1)}Error`,t instanceof Error&&(this.cause=t)}static wrap(t,n){return st(t)?t:new xt(t,n)}static isInstance(t){return t instanceof Error&&"~brand"in t&&t["~brand"]==="MiddlewareError"}};function he(e){return"invoke"in e&&typeof e.invoke=="function"&&"_streamResponseChunks"in e}function ie(e){return typeof e=="object"&&e!=null&&"_queuedMethodOperations"in e&&"_getModelInstance"in e&&typeof e._getModelInstance=="function"}var vt=!0,ao=0,J=class qe{constructor(t,n,o){this.schema=t,this.tool=n,this.options=o}get name(){return this.tool.function.name}static fromSchema(t,n){function o(s){return s??`extract-${++ao}`}if(ue(t)||Me(t)){let s=_e(t);return new qe(s,{type:"function",function:{name:o(s.title),strict:!1,description:s.description??"Tool for extracting structured output from the model's response.",parameters:s}},n)}let r;return typeof t.name=="string"&&typeof t.parameters=="object"&&t.parameters!=null?r=t:r={name:o(t.title),description:t.description??"",parameters:t.schema||t},new qe(_e(t),{type:"function",function:r},n)}parse(t){let n=new He(this.schema).validate(t);if(!n.valid)throw new Ke(this.name,n.errors.map(o=>o.error));return t}},te=class Ct{_schemaType;schema;strict;constructor(t,n){if("schema"in t&&typeof t.schema=="object"&&t.schema!==null&&!("type"in t)){let o=t;this.schema=o.schema,this.strict=o.strict??vt}else this.schema=t,this.strict=n??vt}static fromSchema(t,n){return new Ct(_e(t),n)}parse(t){let n;if(typeof t.content=="string")n=t.content;else if(Array.isArray(t.content)){for(let o of t.content)if(typeof o=="object"&&o!==null&&"type"in o&&o.type==="text"&&"text"in o&&typeof o.text=="string"){n=o.text;break}}if(!(!n||n===""))try{let o=JSON.parse(n);return new He(this.schema).validate(o).valid?o:void 0}catch{}}};function St(e,t,n){if(!e)return[];if(typeof e=="object"&&e!==null&&"__responseFormatUndefined"in e)return[];if(Array.isArray(e)){if(e.every(r=>r instanceof J||r instanceof te))return e;if(e.every(r=>ue(r)))return e.map(r=>J.fromSchema(r,t));if(e.every(r=>q(r)))return e.map(r=>J.fromSchema(r,t));if(e.every(r=>typeof r=="object"&&r!==null&&!q(r)&&!ue(r)))return e.map(r=>J.fromSchema(r,t));throw new Error(`Invalid response format: list contains mixed types.
5
+ All items must be either InteropZodObject, Standard Schema, or plain JSON schema objects.`)}if(e instanceof J||e instanceof te)return[e];let o=io(n);if(ue(e))return o?[te.fromSchema(e)]:[J.fromSchema(e,t)];if(q(e))return o?[te.fromSchema(e)]:[J.fromSchema(e,t)];if(typeof e=="object"&&e!==null&&"properties"in e)return o?[te.fromSchema(e)]:[J.fromSchema(e,t)];throw new Error(`Invalid response format: ${String(e)}`)}function io(e){return!e||!he(e)||!("profile"in e)||typeof e.profile!="object"||!e.profile?!1:"structuredOutput"in e.profile&&e.profile.structuredOutput===!0}var Xe=Symbol.for("langgraph-zod");Xe in globalThis||(globalThis[Xe]=new WeakSet);function kt(e){let t=globalThis[Xe];t.has(e)||(Object.defineProperty(e,"langgraph",{get(){let n=this;return{metadata(o){return Ce(n,{jsonSchemaExtra:o})},reducer(o,r){return Ce(n,{default:be(n),reducer:{schema:r,fn:o}})}}}}),t.add(e))}try{kt(a.ZodType.prototype),kt(z.ZodType.prototype)}catch(e){throw new Error("Failed to extend Zod with LangGraph-related methods. This is most likely a bug, consider opening an issue and/or using `withLangGraph` to augment your Zod schema.",{cause:e})}var Et=class extends mt{constructor(e){super(),this.parent=e,this._map=this.parent._map}add(e,...t){let n=t[0];if(n&&!n?.default){let o=be(e);o!=null&&(n.default=o)}return super.add(e,...t)}},lo=new Et(fe);function It(e=!0,t,n=[]){let o={jumpTo:new Ze},r={},s={},i=l=>{if(W.isInstance(l)){for(let[c,d]of Object.entries(l.fields))if(!(c in o)){if(o[c]=d,c.startsWith("_"))continue;ee.isInstance(d)?(r[c]=d.inputSchema||d.valueSchema,s[c]=d.valueSchema):(r[c]=d,s[c]=d)}return}let u=Te(l);for(let[c,d]of Object.entries(u)){let g=c.startsWith("_");if(!(c in o)){if(ye(d)){let p=fe.get(d);if(p?.reducer){p.reducer.schema?(o[c]=new ee(d,{inputSchema:p.reducer.schema,reducer:p.reducer.fn}),g||(r[c]=p.reducer.schema,s[c]=d)):(o[c]=new ee(d,{reducer:p.reducer.fn}),g||(r[c]=d,s[c]=d));continue}}o[c]=d,g||(r[c]=d,s[c]=d)}}};t&&(W.isInstance(t)||q(t))&&i(t);for(let l of n)l.stateSchema&&(W.isInstance(l.stateSchema)||q(l.stateSchema))&&i(l.stateSchema);return e&&(s.structuredResponse=new Ze),{state:new W({messages:ve,...o}),input:new W({messages:ve,...r}),output:new W({messages:ve,...s})}}var Qe=/<name>(.*?)<\/name>/s,et=/<content>(.*?)<\/content>/s;function co(e,t){if(W.isInstance(e)){let n={};for(let o of Object.keys(e.fields))o in t&&(n[o]=t[o]);return n}if(Me(e))return Q(e,t);throw new Error(`Invalid state schema type: ${typeof e}`)}function Rt(e){if(!w.isInstance(e)||Ue.isInstance(e)||!e.name)return e;let{name:t}=e;if(typeof e.content=="string")return new w({...e.lc_kwargs,content:`<name>${t}</name><content>${e.content}</content>`,name:void 0});let n=[],o=0;for(let r of e.content)typeof r=="string"?(o+=1,n.push(`<name>${t}</name><content>${r}</content>`)):typeof r=="object"&&"type"in r&&r.type==="text"?(o+=1,n.push({...r,text:`<name>${t}</name><content>${r.text}</content>`})):n.push(r);return o||n.unshift({type:"text",text:`<name>${t}</name><content></content>`}),new w({...e.lc_kwargs,content:n,name:void 0})}function Ot(e){if(!w.isInstance(e)||!e.content)return e;let t=[],n;if(Array.isArray(e.content))t=e.content.filter(o=>{if(o.type==="text"&&typeof o.text=="string"){let r=o.text.match(Qe),s=o.text.match(et);return r&&(!s||s[1]==="")?(n=r[1],!1):!0}return!0}).map(o=>{if(o.type==="text"&&typeof o.text=="string"){let r=o.text.match(Qe),s=o.text.match(et);return!r||!s?o:(n=r[1],{...o,text:s[1]})}return o});else{let o=e.content,r=o.match(Qe),s=o.match(et);if(!r||!s)return e;n=r[1],t=s[1]}return new w({...Object.keys(e.lc_kwargs??{}).length>0?e.lc_kwargs:e,content:t,name:n})}function re(e){return me.isRunnable(e)}function At(e){return he(e)?"bindTools"in e&&typeof e.bindTools=="function":!1}var tt=(e,t,n={})=>{if(At(e))return e.bindTools(t,n);if(Z.isRunnableBinding(e)&&At(e.bound)){let o=e.bound.bindTools(t,n);return Z.isRunnableBinding(o)?new Z({bound:o.bound,config:{...e.config,...o.config},kwargs:{...e.kwargs,...o.kwargs},configFactories:o.configFactories??e.configFactories}):new Z({bound:o,config:e.config,kwargs:e.kwargs,configFactories:e.configFactories})}return null};function Ie(e){if(typeof e=="function")return;let t=e;if(ae.isRunnableSequence(t)&&(t=t.steps.find(n=>Z.isRunnableBinding(n))||t),!ie(t)){if(Z.isRunnableBinding(t)){let n=t.kwargs!=null&&typeof t.kwargs=="object"&&"tools"in t.kwargs&&Array.isArray(t.kwargs.tools)&&t.kwargs.tools.length>0,o=t.config!=null&&typeof t.config=="object"&&"tools"in t.config&&Array.isArray(t.config.tools)&&t.config.tools.length>0;if(n||o)throw new Se}if("tools"in t&&t.tools!==void 0&&Array.isArray(t.tools)&&t.tools.length>0)throw new Se}}function le(e){return!!(w.isInstance(e)&&e.tool_calls&&e.tool_calls.length>0)}function Nt(e){if(e==null)return new B("");if(B.isInstance(e))return e;if(typeof e=="string")return new B({content:[{type:"text",text:e}]});throw new Error(`Invalid systemPrompt type: expected string or SystemMessage, got ${typeof e}`)}async function jt(e,t,n={}){let o=tt(e,t,n);if(o)return o;if(ie(e)){let r=tt(await e._getModelInstance(),t,n);if(r)return r}if(ae.isRunnableSequence(e)){let r=e.steps.findIndex(s=>Z.isRunnableBinding(s)||he(s)||ie(s));if(r>=0){let s=tt(e.steps[r],t,n);if(s){let i=e.steps.slice();return i.splice(r,1,s),ae.from(i)}}}throw new Error(`llm ${e} must define bindTools method.`)}function uo(e){if(e.length===0)return;if(e.length===1)return e[0];function t(o,r){return async(s,i)=>o(s,async u=>r(u,i))}let n=e[e.length-1];for(let o=e.length-2;o>=0;o--)n=t(e[o],n);return n}function Pt(e){let t=e.filter(n=>n.wrapToolCall);if(t.length!==0)return uo(t.map(n=>{let o=n.wrapToolCall;return async(s,i)=>{let l=s.state,u=async c=>{let d={...l,...c.state};return i({...c,state:d})};try{let c=await o({...s,state:{messages:l.messages,...n.stateSchema?co(n.stateSchema,{...l}):{}}},u);if(!M.isInstance(c)&&!F(c))throw new Error(`Invalid response from "wrapToolCall" in middleware "${n.name}": expected ToolMessage or Command, got ${typeof c}`);return c}catch(c){throw pe.wrap(c,n.name)}}}))}async function Lt(e,t){let n={};for(let o of e){if(!o.stateSchema)continue;let r=o.stateSchema;if(W.isInstance(o.stateSchema)){let l={};for(let[u,c]of Object.entries(o.stateSchema.fields))ee.isInstance(c)?l[u]=c.inputSchema||c.valueSchema:l[u]=c;r=z.object(l)}let s=await ft(wt(r,l=>l.startsWith("_")),t);if(s.success){Object.assign(n,s.data);continue}let i=s.error.issues.filter(l=>l.code==="invalid_type").map(l=>` - ${l.path.join(".")}: Required`).join(`
6
+ `);throw new Error(`Middleware "${o.name}" has required state fields that must be initialized:
7
+ ${i}
8
+
9
+ To fix this, either:
10
+ 1. Provide default values in your middleware's state schema using .default():
11
+ stateSchema: z.object({
12
+ myField: z.string().default("default value")
13
+ })
14
+
15
+ 2. Or make the fields optional using .optional():
16
+ stateSchema: z.object({
17
+ myField: z.string().optional()
18
+ })
19
+
20
+ 3. Or ensure you pass these values when invoking the agent:
21
+ agent.invoke({
22
+ messages: [...],
23
+ ${s.error.issues[0]?.path.join(".")}: "value"
24
+ })`)}return n}function Dt(e){let t={messages:z.custom(()=>[]),structuredResponse:z.any().optional()};if(!e)return z.object(t);let n;if(W.isInstance(e)){n={};for(let[r,s]of Object.entries(e.fields))ee.isInstance(s)?n[r]=s.inputSchema||s.valueSchema:n[r]=s}else n=Te(e);let o={...t};for(let[r,s]of Object.entries(n))r.startsWith("_")?o[r]=s.optional():o[r]=s;return z.object(o)}function $t(e){if(q(e))return gt(e);if(W.isInstance(e)){let t={};for(let[n,o]of Object.entries(e.fields)){let r;ee.isInstance(o)?r=o.inputSchema||o.valueSchema:r=o,t[n]=ye(r)?r.optional():z.any().optional()}return z.object(t)}return z.object({})}function G(e){if(e){if(["model_request","tools",S].includes(e))return e;if(e==="model")return"model_request";if(e==="tools")return"tools";if(e==="end")return S;throw new Error(`Invalid jump target: ${e}, must be "model", "tools" or "end".`)}}function Ae(...e){return AbortSignal.any(e.filter(t=>t!=null&&typeof t=="object"&&"aborted"in t&&typeof t.aborted=="boolean"))}var Oe={openai:{package:"@langchain/openai",className:"ChatOpenAI"},anthropic:{package:"@langchain/anthropic",className:"ChatAnthropic"},azure_openai:{package:"@langchain/openai",className:"AzureChatOpenAI"},cohere:{package:"@langchain/cohere",className:"ChatCohere"},google:{package:"@langchain/google",className:"ChatGoogle"},"google-vertexai":{package:"@langchain/google-vertexai",className:"ChatVertexAI"},"google-vertexai-web":{package:"@langchain/google-vertexai-web",className:"ChatVertexAI"},"google-genai":{package:"@langchain/google-genai",className:"ChatGoogleGenerativeAI"},ollama:{package:"@langchain/ollama",className:"ChatOllama"},mistralai:{package:"@langchain/mistralai",className:"ChatMistralAI"},mistral:{package:"@langchain/mistralai",className:"ChatMistralAI"},groq:{package:"@langchain/groq",className:"ChatGroq"},bedrock:{package:"@langchain/aws",className:"ChatBedrockConverse"},aws:{package:"@langchain/aws",className:"ChatBedrockConverse"},deepseek:{package:"@langchain/deepseek",className:"ChatDeepSeek"},xai:{package:"@langchain/xai",className:"ChatXAI"},cerebras:{package:"@langchain/cerebras",className:"ChatCerebras"},fireworks:{package:"@langchain/fireworks",className:"ChatFireworks"},together:{package:"@langchain/together-ai",className:"ChatTogetherAI",hasCircularDependency:!0},perplexity:{package:"@langchain/perplexity",className:"ChatPerplexity"}},Bt=Object.keys(Oe);async function fo(e,t){let n;if(t)n=Oe[t];else{let o=Object.entries(Oe).find(([,r])=>r.className===e);n=o?o[1]:void 0}if(n)try{return(await import(n.package))[n.className]}catch(o){let r=o;if("code"in r&&r.code?.toString().includes("ERR_MODULE_NOT_FOUND")&&"message"in r&&typeof r.message=="string"){let s=(r.message.startsWith("错误:")?r.message.slice(7):r.message).split("Cannot find package '")[1].split("'")[0];throw new Error(`Unable to import ${s}. Please install with \`npm install ${s}\` or \`pnpm install ${s}\``)}throw o}}async function po(e,t,n={}){let o=t||ho(e);if(!o)throw new Error(`Unable to infer model provider for { model: ${e} }, please specify modelProvider directly.`);let r=Oe[o];if(!r){let l=Bt.join(", ");throw new Error(`Unsupported { modelProvider: ${o} }.
25
+
26
+ Supported model providers are: ${l}`)}let{modelProvider:s,...i}=n;return new(await fo(r.className,o))({model:e,...i})}function ho(e){return e.startsWith("gpt-3")||e.startsWith("gpt-4")||e.startsWith("gpt-5")||e.startsWith("o1")||e.startsWith("o3")||e.startsWith("o4")?"openai":e.startsWith("claude")?"anthropic":e.startsWith("command")?"cohere":e.startsWith("accounts/fireworks")?"fireworks":e.startsWith("gemini")?"google-vertexai":e.startsWith("amazon.")?"bedrock":e.startsWith("mistral")?"mistralai":e.startsWith("sonar")||e.startsWith("pplx")?"perplexity":void 0}var Ut=class Re extends Ve{_llmType(){return"chat_model"}lc_namespace=["langchain","chat_models"];_defaultConfig={};_configurableFields="any";_configPrefix;_queuedMethodOperations={};_modelInstanceCache=new Map;_profile;constructor(t){super(t),this._defaultConfig=t.defaultConfig??{},t.configurableFields==="any"?this._configurableFields="any":this._configurableFields=t.configurableFields??["model","modelProvider"],t.configPrefix?this._configPrefix=t.configPrefix.endsWith("_")?t.configPrefix:`${t.configPrefix}_`:this._configPrefix="",this._queuedMethodOperations=t.queuedMethodOperations??this._queuedMethodOperations,this._profile=t.profile??void 0,this.metadata={...this.metadata,ls_integration:"langchain_init_chat_model"}}async _getModelInstance(t){let n=this._getCacheKey(t),o=this._modelInstanceCache.get(n);if(o)return o;let r={...this._defaultConfig,...this._modelParams(t)},s=await po(r.model,r.modelProvider,r);for(let[i,l]of Object.entries(this._queuedMethodOperations))i in s&&typeof s[i]=="function"&&(s=await s[i](...l));return this._modelInstanceCache.set(n,s),s}async _generate(t,n,o){return(await this._getModelInstance(n))._generate(t,n??{},o)}bindTools(t,n){let o={...this._queuedMethodOperations};return o.bindTools=[t,n],new Re({defaultConfig:this._defaultConfig,configurableFields:this._configurableFields,configPrefix:this._configPrefix,queuedMethodOperations:o})}withStructuredOutput=(t,...n)=>{let o={...this._queuedMethodOperations};return o.withStructuredOutput=[t,...n],new Re({defaultConfig:this._defaultConfig,configurableFields:this._configurableFields,configPrefix:this._configPrefix,queuedMethodOperations:o})};_modelParams(t){let n=t?.configurable??{},o={};for(let[r,s]of Object.entries(n))if(r.startsWith(this._configPrefix)){let i=this._removePrefix(r,this._configPrefix);o[i]=s}return this._configurableFields!=="any"&&(o=Object.fromEntries(Object.entries(o).filter(([r])=>this._configurableFields.includes(r)))),o}_removePrefix(t,n){return t.startsWith(n)?t.slice(n.length):t}withConfig(t){let n={...t||{}},o=this._modelParams(n),r=Object.fromEntries(Object.entries(n).filter(([s])=>s!=="configurable"));return r.configurable=Object.fromEntries(Object.entries(n.configurable||{}).filter(([s])=>this._configPrefix&&!Object.keys(o).includes(this._removePrefix(s,this._configPrefix)))),new Z({config:n,bound:new Re({defaultConfig:{...this._defaultConfig,...o},configurableFields:Array.isArray(this._configurableFields)?[...this._configurableFields]:this._configurableFields,configPrefix:this._configPrefix,queuedMethodOperations:this._queuedMethodOperations})})}async invoke(t,n){let o=await this._getModelInstance(n),r=de(n);return o.invoke(t,r)}async stream(t,n){let o=new ut({generator:await(await this._getModelInstance(n)).stream(t,n),config:n});return await o.setup,Fe.fromAsyncGenerator(o)}async batch(t,n,o){return super.batch(t,n,o)}async*transform(t,n){let o=await this._getModelInstance(n),r=de(n);yield*o.transform(t,r)}async*streamLog(t,n,o){let r=await this._getModelInstance(n),s=de(n);yield*r.streamLog(t,s,{...o,_schemaFormat:"original",includeNames:o?.includeNames,includeTypes:o?.includeTypes,includeTags:o?.includeTags,excludeNames:o?.excludeNames,excludeTypes:o?.excludeTypes,excludeTags:o?.excludeTags})}streamEvents(t,n,o){let r=this;async function*s(){let i=await r._getModelInstance(n),l=de(n),u=i.streamEvents(t,l,o);for await(let c of u)yield c}return Fe.fromAsyncGenerator(s())}get profile(){if(this._profile)return this._profile;let t=this._getCacheKey({});return this._modelInstanceCache.get(t)?.profile??{}}_getCacheKey(t){let n=t??{};if(n.configurable){let{configurable:o}=n,r={};for(let[s,i]of Object.entries(o))s.startsWith("__pregel_")||(r[s]=i);n={...n,configurable:r}}return JSON.stringify(n)}};async function X(e,t){let{configurableFields:n,configPrefix:o,modelProvider:r,profile:s,...i}={configPrefix:"",...t??{}};if(r===void 0&&e?.includes(":")){let[d,...g]=e.split(":"),p=g.length===0?[d]:[d,g.join(":")];Bt.includes(p[0])&&([r,e]=p)}let l=Array.isArray(n)?[...n]:n;!e&&l===void 0&&(l=["model","modelProvider"]),o&&l===void 0&&console.warn(`{ configPrefix: ${o} } has been set but no fields are configurable. Set { configurableFields: [...] } to specify the model params that are configurable.`);let u={...i},c;return l===void 0?c=new Ut({defaultConfig:{...u,model:e,modelProvider:r},configPrefix:o,profile:s}):(e&&(u.model=e),r&&(u.modelProvider=r),c=new Ut({defaultConfig:u,configPrefix:o,configurableFields:l,profile:s})),await c._getModelInstance(),c}var ce=class extends me{lc_namespace=["langgraph"];func;tags;config;trace=!0;recurse=!0;#e;constructor(e){super(),this.name=e.name??e.func.name,this.func=e.func,this.config=e.tags?{tags:e.tags}:void 0,this.recurse=e.recurse??this.recurse}getState(){return this.#e}setState(e){this.#e={...this.#e,...e}}async invoke(e,t){let n=H(this.config,t),o=await We.runWithConfig(n,async()=>this.func(e,n));return me.isRunnable(o)&&this.recurse?await We.runWithConfig(n,async()=>o.invoke(e,n)):(this.#e=o,o)}};function zt(e,t){let n,o;if(t==="inline")n=Rt,o=Ot;else throw new Error(`Invalid agent name mode: ${t}. Needs to be one of: "inline"`);function r(s){return s.map(n)}return ae.from([xe.from(r),e,xe.from(o)])}function go(e){return w.isInstance(e)||F(e)||typeof e=="object"&&e!==null&&"structuredResponse"in e&&"messages"in e}var O="model_request",Wt=class extends ce{#e;#o;constructor(e){super({name:e.name??"model",func:(t,n)=>this.#t(t,n)}),this.#e=e,this.#o=e.systemMessage}async#s(e,t=this.#e.responseFormat){if(!t)return;let n;ie(e)?n=await e._getModelInstance():typeof e!="string"&&(n=e);let o=St(t,void 0,n);if(o.length!==0)return o.every(r=>r instanceof te)?{type:"native",strategy:o[0]}:{type:"tool",tools:o.filter(r=>r instanceof J).reduce((r,s)=>(r[s.name]=s,r),{})}}async#t(e,t){let n=e.messages.at(-1);if(n&&M.isInstance(n)&&n.name&&this.#e.shouldReturnDirect.has(n.name))return[new j({update:{messages:[]}})];let{response:o,lastAiMessage:r,collectedCommands:s}=await this.#a(e,t);if(typeof o=="object"&&o!==null&&"structuredResponse"in o&&"messages"in o){let{structuredResponse:u,messages:c}=o;return{messages:[...e.messages,...c],structuredResponse:u}}let i=[],l=w.isInstance(o)?o:r;return l&&(l.name=this.name,l.lc_kwargs.name=this.name,this.#r(e,l)?i.push(new j({update:{messages:[new w({content:"Sorry, need more steps to process this request.",name:this.name,id:l.id})]}})):i.push(new j({update:{messages:[l]}}))),F(o)&&!s.includes(o)&&i.push(o),i.push(...s),i}#n(){if(typeof this.#e.model=="string")return X(this.#e.model);if(this.#e.model)return this.#e.model;throw new Error("No model option was provided, either via `model` option.")}async#a(e,t,n={}){let o=await this.#n(),r=t,s=this.#o,i=null,l=[],u=async p=>{Ie(p.model);let h=await this.#s(p.model,p.responseFormat),I=await this.#d(p.model,p,h),V=[...s.text===""?[]:[s],...p.messages],k=Ae(this.#e.signal,t.signal),T=await dt(I.invoke(V,{...t,signal:k}),k);if(i=T,h?.type==="native"){let D=h.strategy.parse(T);return D?{structuredResponse:D,messages:[T]}:T}if(!h||!T.tool_calls)return T;let L=T.tool_calls.filter(D=>D.name in h.tools);if(L.length===0)return T;if(L.length>1)return this.#l(T,L,h);let R=h.tools[L[0].name]?.options?.toolMessageContent;return this.#c(T,L[0],h,R??n.lastMessage)},c=this.#e.wrapModelCallHookMiddleware??[],d=u;for(let p=c.length-1;p>=0;p--){let[h,I]=c[p];if(h.wrapModelCall){let V=d,k=h,T=I;d=async L=>{let R=s,D=k.contextSchema?Q(k.contextSchema,r?.context||{}):r?.context,se=Object.freeze({context:D,store:r.store,configurable:r.configurable,writer:r.writer,interrupt:r.interrupt,signal:r.signal}),U={...L,state:{...h.stateSchema?Q($t(h.stateSchema),e):{},...T(),messages:e.messages},runtime:se},E=async x=>{s=R;let m=x.tools??[],y=new Map(this.#e.toolClasses.filter(re).map(N=>[N.name,N])),v=m.filter(N=>re(N)&&!y.has(N.name)),_=m.filter(N=>{if(!re(N))return!1;let nt=y.get(N.name);return nt!=null&&nt!==N});if(v.length>0&&!this.#e.middleware?.some(N=>N.wrapToolCall!=null))throw new Error(`You have added a new tool in "wrapModelCall" hook of middleware "${k.name}": ${v.map(N=>N.name).join(", ")}. This is not supported unless a middleware provides a "wrapToolCall" handler to execute it.`);if(_.length>0)throw new Error(`You have modified a tool in "wrapModelCall" hook of middleware "${k.name}": ${_.map(N=>N.name).join(", ")}. This is not supported.`);let C=x,f=x.systemPrompt!==s.text,b=x.systemMessage!==s;if(f&&b)throw new Error("Cannot change both systemPrompt and systemMessage in the same request.");f&&(s=new B({content:[{type:"text",text:x.systemPrompt}]}),C={...x,systemPrompt:s.text,systemMessage:s}),b&&(s=new B({...x.systemMessage}),C={...x,systemPrompt:s.text,systemMessage:s});let we=await V(C);return F(we)&&i?(l.includes(we)||l.push(we),i):we};if(!k.wrapModelCall)return E(U);try{let x=await k.wrapModelCall(U,E);if(!go(x))throw new Error(`Invalid response from "wrapModelCall" in middleware "${k.name}": expected AIMessage or Command, got ${typeof x}`);return w.isInstance(x)?i=x:F(x)&&l.push(x),x}catch(x){throw pe.wrap(x,k.name)}}}}s=this.#o;let g={model:o,responseFormat:this.#e.responseFormat,systemPrompt:s?.text,systemMessage:s,messages:e.messages,tools:this.#e.toolClasses,state:e,runtime:Object.freeze({context:r?.context,store:r.store,configurable:r.configurable,writer:r.writer,interrupt:r.interrupt,signal:r.signal})};return{response:await d(g),lastAiMessage:i,collectedCommands:l}}#l(e,t,n){let o=new ke(t.map(r=>r.name));return this.#i(o,e,t[0],n)}#c(e,t,n,o){let r=n.tools[t.name];try{let s=r.parse(t.args);return{structuredResponse:s,messages:[e,new M({tool_call_id:t.id??"",content:JSON.stringify(s),name:t.name}),new w(o??`Returning structured response: ${JSON.stringify(s)}`)]}}catch(s){return this.#i(s,e,t,n)}}async#i(e,t,n,o){let r=Object.values(o.tools).at(0)?.options?.handleError,s=n.id;if(!s)throw new Error("Tool call ID is required to handle tool output errors. Please provide a tool call ID.");if(r===!1)throw e;if(r===void 0||typeof r=="boolean"&&r||Array.isArray(r)&&r.some(i=>i instanceof ke))return new j({update:{messages:[t,new M({content:e.message,tool_call_id:s})]},goto:O});if(typeof r=="string")return new j({update:{messages:[t,new M({content:r,tool_call_id:s})]},goto:O});if(typeof r=="function"){let i=await r(e);if(typeof i!="string")throw new Error("Error handler must return a string.");return new j({update:{messages:[t,new M({content:i,tool_call_id:s})]},goto:O})}return new j({update:{messages:[t,new M({content:e.message,tool_call_id:s})]},goto:O})}#r(e,t){let n=w.isInstance(t)&&t.tool_calls?.every(r=>this.#e.shouldReturnDirect.has(r.name)),o="remainingSteps"in e?e.remainingSteps:void 0;return!!(o&&(o<1&&n||o<2&&le(e.messages.at(-1))))}async#d(e,t,n){let o={},r=Object.values(n&&"tools"in n?n.tools:{}),s=[...t?.tools??this.#e.toolClasses,...r.map(u=>u.tool)],i=t?.toolChoice||(r.length>0?"any":void 0);if(n?.type==="native"){let u=t?.modelSettings?.strict??n?.strategy?.strict??!0,c={name:n.strategy.schema?.name??"extract",description:ht(n.strategy.schema),schema:n.strategy.schema,strict:u};Object.assign(o,{response_format:{type:"json_schema",json_schema:c},outputConfig:{format:{type:"json_schema",schema:n.strategy.schema}},responseSchema:n.strategy.schema,ls_structured_output_format:{kwargs:{method:"json_schema"},schema:n.strategy.schema},strict:u})}let l=await jt(e,s,{...o,...t?.modelSettings,tool_choice:i});return this.#e.includeAgentName==="inline"?zt(l,this.#e.includeAgentName):l}getState(){let e=super.getState();return{messages:[],...e&&!F(e)?e:{}}}};var Ft=(e,t)=>`错误:${e} is not a valid tool, try one of [${t.join(", ")}].`,P="tools",Ht=e=>Array.isArray(e)&&e.every($e.isInstance),wo=e=>typeof e=="object"&&e!=null&&"messages"in e&&Ht(e.messages),yo=e=>typeof e=="object"&&e!=null&&"lg_tool_call"in e;function Mo(e,t){return e instanceof Ee?new M({content:e.message,tool_call_id:t.id,name:t.name}):new M({content:`${e}
27
+ Please fix your mistakes.`,tool_call_id:t.id,name:t.name})}var Jt=class extends ce{tools;trace=!1;signal;handleToolErrors=Mo;wrapToolCall;constructor(e,t){let{name:n,tags:o,handleToolErrors:r,signal:s,wrapToolCall:i}=t??{};super({name:n,tags:o,func:(l,u)=>this.run(l,u)}),this.options=t,this.tools=e,this.handleToolErrors=r??this.handleToolErrors,this.signal=s,this.wrapToolCall=i}#e(e,t,n){if(at(e)||this.signal?.aborted||n&&this.handleToolErrors!==!0||!this.handleToolErrors)throw e;if(typeof this.handleToolErrors=="function"){let o=this.handleToolErrors(e,t);if(o&&M.isInstance(o))return o;throw e}else if(this.handleToolErrors)return new M({name:t.name,content:`${e}
28
+ Please fix your mistakes.`,tool_call_id:t.id});throw e}async runTool(e,t,n){let o=t,r={context:o?.context,store:o?.store,configurable:o?.configurable,writer:o?.writer,interrupt:o?.interrupt,signal:o?.signal},s=this.tools.find(u=>u.name===e.name),i=async u=>{let{toolCall:c,tool:d}=u,g=d??this.tools.find(h=>h.name===c.name);if(g===void 0){let h=this.tools.map(I=>I.name);return new M({content:Ft(c.name,h),tool_call_id:c.id,name:c.name,status:"error"})}let p=g;try{let h=await p.invoke({...c,type:"tool_call"},{...t,config:t,toolCallId:c.id,state:t.configurable?.__pregel_scratchpad?.currentTaskInput,signal:Ae(this.signal,t.signal)});return M.isInstance(h)||F(h)?h:new M({name:p.name,content:typeof h=="string"?h:JSON.stringify(h),tool_call_id:c.id})}catch(h){throw h instanceof it?new Ee(h,c):h}},l={toolCall:e,tool:s,state:n,runtime:r};if(this.wrapToolCall)try{return await this.wrapToolCall(l,i)}catch(u){return this.#e(u,e,!0)}if(!s){let u=this.tools.map(c=>c.name);return new M({content:Ft(e.name,u),tool_call_id:e.id,name:e.name,status:"error"})}try{return await i(l)}catch(u){return this.#e(u,e,!1)}}async run(e,t){let n;if(yo(e)){let{lg_tool_call:s,jumpTo:i,...l}=e;n=[await this.runTool(e.lg_tool_call,t,l)]}else{let s;if(Ht(e))s=e;else if(wo(e))s=e.messages;else throw new Error("ToolNode only accepts BaseMessage[] or { messages: BaseMessage[] } as input.");let i=new Set(s.filter(u=>u.getType()==="tool").map(u=>u.tool_call_id)),l;for(let u=s.length-1;u>=0;u-=1){let c=s[u];if(w.isInstance(c)){l=c;break}}if(!w.isInstance(l))throw new Error("ToolNode only accepts AIMessages as input.");n=await Promise.all(l.tool_calls?.filter(u=>u.id==null||!i.has(u.id)).map(u=>this.runTool(u,t,e))??[])}if(!n.some(F))return Array.isArray(e)?n:{messages:n};let o=[],r=null;for(let s of n)F(s)?s.graph===j.PARENT&&Array.isArray(s.goto)&&s.goto.every(i=>To(i))?r?r.goto.push(...s.goto):r=new j({graph:j.PARENT,goto:s.goto}):o.push(s):o.push(Array.isArray(e)?[s]:{messages:[s]});return r&&o.push(r),o}};function To(e){return e instanceof $}function Ne(e,t){let o=0;if(t&&t.length>0){let r=0;for(let s of t){let i=Mt(s)?Tt(s):s;r+=JSON.stringify(i).length}o+=r}for(let r of e){let s;typeof r.content=="string"?s=r.content:Array.isArray(r.content)?s=r.content.map(i=>typeof i=="string"?i:i.type==="text"&&"text"in i?i.text:"").join(""):s="",w.isInstance(r)&&Array.isArray(r.tool_calls)&&r.tool_calls.length>0&&(s+=JSON.stringify(r.tool_calls)),M.isInstance(r)&&(s+=r.tool_call_id??""),o+=s.length}return Math.ceil(o/4)}function Y(e){if(!(!e||typeof e=="function"))return e.canJumpTo}function oe(e){return typeof e=="function"?e:e.hook}var bo=class{},_o=class{},ne=class extends ce{#e;constructor(e,t){super(e),this.#e=t}async invokeMiddleware(e,t){let n={};if(this.middleware.contextSchema){let u=this.middleware.contextSchema?.shape;if(u){let c={},d=t?.context||{};for(let g of Object.keys(u))g in d&&(c[g]=d[g]);n=Q(this.middleware.contextSchema,c)}}let o={...this.#e.getState(),...e,messages:e.messages},r={context:n,store:t?.store,configurable:t?.configurable,writer:t?.writer,interrupt:t?.interrupt,signal:t?.signal},s=await this.runHook(o,Object.freeze(Object.assign(new _o,{...r,context:Object.freeze(Object.assign(new bo,n))})));if(!s)return{jumpTo:void 0};let i,l;if(this.name?.startsWith("BeforeAgentNode_")?(i=Y(this.middleware.beforeAgent),l="beforeAgent.canJumpTo"):this.name?.startsWith("BeforeModelNode_")?(i=Y(this.middleware.beforeModel),l="beforeModel.canJumpTo"):this.name?.startsWith("AfterAgentNode_")?(i=Y(this.middleware.afterAgent),l="afterAgent.canJumpTo"):this.name?.startsWith("AfterModelNode_")&&(i=Y(this.middleware.afterModel),l="afterModel.canJumpTo"),typeof s.jumpTo=="string"&&!i?.includes(s.jumpTo)){let u=i&&i.length>0?`must be one of: ${i?.join(", ")}.`:l?`no ${l} defined in middleware ${this.middleware.name}`:"";throw new Error(`Invalid jump target: ${s.jumpTo}, ${u}.`)}if(typeof s=="object"&&"type"in s){if(s.type==="terminate"){if(s.error)throw s.error;return{...o,...s.result||{},jumpTo:s.jumpTo}}throw new Error(`Invalid control action: ${JSON.stringify(s)}`)}return{...o,...s,jumpTo:s.jumpTo}}get nodeOptions(){return{input:Dt(this.middleware.stateSchema)}}};var Gt=class extends ne{lc_namespace=["langchain","agents","beforeAgentNodes"];constructor(e,t){super({name:`BeforeAgentNode_${e.name}`,func:async(n,o)=>this.invokeMiddleware(n,o)},t),this.middleware=e}runHook(e,t){return oe(this.middleware.beforeAgent)(e,t)}};var Vt=class extends ne{lc_namespace=["langchain","agents","beforeModelNodes"];constructor(e,t){super({name:`BeforeModelNode_${e.name}`,func:async(n,o)=>this.invokeMiddleware(n,o)},t),this.middleware=e}runHook(e,t){return oe(this.middleware.beforeModel)(e,t)}};var Zt=class extends ne{lc_namespace=["langchain","agents","afterModelNodes"];constructor(e,t){super({name:`AfterModelNode_${e.name}`,func:async(n,o)=>this.invokeMiddleware(n,o)},t),this.middleware=e}runHook(e,t){return oe(this.middleware.afterModel)(e,t)}};var Yt=class extends ne{lc_namespace=["langchain","agents","afterAgentNodes"];constructor(e,t){super({name:`AfterAgentNode_${e.name}`,func:async(n,o)=>this.invokeMiddleware(n,o)},t),this.middleware=e}runHook(e,t){return oe(this.middleware.afterAgent)(e,t)}};var Kt=class{#e=new Map;addNode(e,t){this.#e.set(e.name,[...this.#e.get(e.name)??[],t])}getState(e){let t=(this.#e.get(e)??[]).reduce((n,o)=>({...n,...o.getState()??{}}),{});return delete t.jumpTo,t}};var qt=class Xt{#e;#o="v2";#s;#t=new Kt;#n;constructor(t,n){if(this.options=t,this.#n=H(n??{},{metadata:{ls_integration:"langchain_create_agent"}}),t.name&&(this.#n=H(this.#n,{metadata:{lc_agent_name:t.name}})),this.#o=t.version??this.#o,!t.model)throw new Error("`model` option is required to create an agent.");typeof t.model!="string"&&Ie(t.model);let o=this.options.middleware?.filter(m=>m.tools).flatMap(m=>m.tools)??[],r=[...t.tools??[],...o],s=new Set(r.filter(re).filter(m=>"returnDirect"in m&&m.returnDirect).map(m=>m.name)),i=!!this.options.middleware?.some(m=>m.wrapModelCall),{state:l,input:u,output:c}=It(this.options.responseFormat!==void 0||i,this.options.stateSchema,this.options.middleware),d=new _t(l,{input:u,output:c,context:this.options.contextSchema}),g=[],p=[],h=[],I=[],V=[];this.#s=new Wt({model:this.options.model,systemMessage:Nt(this.options.systemPrompt),includeAgentName:this.options.includeAgentName,name:this.options.name,responseFormat:this.options.responseFormat,middleware:this.options.middleware,toolClasses:r,shouldReturnDirect:s,signal:this.options.signal,wrapModelCallHookMiddleware:V});let k=new Set,T=this.options.middleware??[];for(let m=0;m<T.length;m++){let y,v,_,C,f=T[m];if(k.has(f.name))throw new Error(`Middleware ${f.name} is defined multiple times`);if(k.add(f.name),f.beforeAgent){y=new Gt(f,{getState:()=>this.#t.getState(f.name)}),this.#t.addNode(f,y);let b=`${f.name}.before_agent`;g.push({index:m,name:b,allowed:Y(f.beforeAgent)}),d.addNode(b,y,y.nodeOptions)}if(f.beforeModel){v=new Vt(f,{getState:()=>this.#t.getState(f.name)}),this.#t.addNode(f,v);let b=`${f.name}.before_model`;p.push({index:m,name:b,allowed:Y(f.beforeModel)}),d.addNode(b,v,v.nodeOptions)}if(f.afterModel){_=new Zt(f,{getState:()=>this.#t.getState(f.name)}),this.#t.addNode(f,_);let b=`${f.name}.after_model`;h.push({index:m,name:b,allowed:Y(f.afterModel)}),d.addNode(b,_,_.nodeOptions)}if(f.afterAgent){C=new Yt(f,{getState:()=>this.#t.getState(f.name)}),this.#t.addNode(f,C);let b=`${f.name}.after_agent`;I.push({index:m,name:b,allowed:Y(f.afterAgent)}),d.addNode(b,C,C.nodeOptions)}f.wrapModelCall&&V.push([f,()=>this.#t.getState(f.name)])}d.addNode(O,this.#s);let L=T.some(m=>m.wrapToolCall),R=r.filter(re);if(R.length>0||L){let m=new Jt(R,{signal:this.options.signal,wrapToolCall:Pt(T)});d.addNode(P,m)}let D;g.length>0?D=g[0].name:p.length>0?D=p[0].name:D=O;let se=p.length>0?p[0].name:O,U=I.length>0?I[I.length-1].name:S;d.addEdge(rt,D);let E=R.length>0||L;for(let m=0;m<g.length;m++){let y=g[m],v=y.name,_=m===g.length-1?se:g[m+1].name;if(y.allowed&&y.allowed.length>0){let C=y.allowed.map(b=>G(b)).filter(b=>b!=="tools"||E),f=Array.from(new Set([_,...C.map(b=>b===S?U:b)]));d.addConditionalEdges(v,this.#d(R,_,U,E),f)}else d.addEdge(v,_)}for(let m=0;m<p.length;m++){let y=p[m],v=y.name,_=m===p.length-1?O:p[m+1].name;if(y.allowed&&y.allowed.length>0){let C=y.allowed.map(b=>G(b)).filter(b=>b!=="tools"||E),f=Array.from(new Set([_,...C]));d.addConditionalEdges(v,this.#m(R,_,E),f)}else d.addEdge(v,_)}let x=h.at(-1);if(h.length>0&&x)d.addEdge(O,x.name);else{let m=this.#a(R,!1,E).map(y=>y===S?U:y);m.length===1?d.addEdge(O,m[0]):d.addConditionalEdges(O,this.#c(U),m)}for(let m=h.length-1;m>0;m--){let y=h[m],v=y.name,_=h[m-1].name;if(y.allowed&&y.allowed.length>0){let C=y.allowed.map(b=>G(b)).filter(b=>b!=="tools"||E),f=Array.from(new Set([_,...C]));d.addConditionalEdges(v,this.#r(R,y.allowed,_,E),f)}else d.addEdge(v,_)}if(h.length>0){let m=h[0],y=m.name,v=this.#a(R,!0,E).filter(f=>f!=="tools"||E),_=!!(m.allowed&&m.allowed.length>0),C=v.map(f=>f===S?U:f);d.addConditionalEdges(y,this.#i(R,_,U,E),C)}for(let m=I.length-1;m>0;m--){let y=I[m],v=y.name,_=I[m-1].name;if(y.allowed&&y.allowed.length>0){let C=y.allowed.map(b=>G(b)).filter(b=>b!=="tools"||E),f=Array.from(new Set([_,...C]));d.addConditionalEdges(v,this.#r(R,y.allowed,_,E),f)}else d.addEdge(v,_)}if(I.length>0){let m=I[0],y=m.name;if(m.allowed&&m.allowed.length>0){let v=m.allowed.map(C=>G(C)).filter(C=>C!=="tools"||E),_=Array.from(new Set([S,...v]));d.addConditionalEdges(y,this.#r(R,m.allowed,S,E),_)}else d.addEdge(y,S)}if(E){let m=se;s.size>0?d.addConditionalEdges(P,this.#l(s,U,m),[m,U]):d.addEdge(P,m)}this.#e=d.compile({checkpointer:this.options.checkpointer,store:this.options.store,name:this.options.name,description:this.options.description})}get graph(){return this.#e}get checkpointer(){return this.#e.checkpointer}set checkpointer(t){this.#e.checkpointer=t}get store(){return this.#e.store}set store(t){this.#e.store=t}withConfig(t){return new Xt(this.options,H(this.#n,t))}#a(t,n=!1,o=t.length>0){let r=[];return o&&r.push(P),n&&r.push(O),r.push(S),r}#l(t,n,o){return r=>{let s=r.messages,i=s[s.length-1];return M.isInstance(i)&&i.name&&t.has(i.name)?this.options.responseFormat?o:n:o}}#c(t=S){return n=>{let o=n.messages.at(-1);if(!w.isInstance(o)||!o.tool_calls||o.tool_calls.length===0||o.tool_calls.every(s=>s.name.startsWith("extract-")))return t;if(this.#o==="v1")return P;let r=o.tool_calls.filter(s=>!s.name.startsWith("extract-"));return r.length===0?t:r.map(s=>new $(P,{...n,lg_tool_call:s}))}}#i(t,n,o,r=t.length>0){let s=!!this.options.responseFormat;return i=>{let l=i,u=l.messages,c=u.at(-1);if(w.isInstance(c)&&(!c.tool_calls||c.tool_calls.length===0))return o;if(n&&l.jumpTo){let T=G(l.jumpTo);return T===S?o:T==="tools"?r?new $(P,{...i,jumpTo:void 0}):o:new $(O,{...i,jumpTo:void 0})}let d=u.filter(M.isInstance),g=u.filter(w.isInstance).at(-1),p=g?.tool_calls?.filter(T=>!d.some(L=>L.tool_call_id===T.id));if(p&&p.length>0)return this.#o==="v1"?P:p.map(T=>new $(P,{...i,lg_tool_call:T}));let h=g?.tool_calls?.some(T=>T.name.startsWith("extract-"));if(p&&p.length===0&&!h&&s)return O;if(!w.isInstance(c)||!c.tool_calls||c.tool_calls.length===0)return o;let I=c.tool_calls.every(T=>T.name.startsWith("extract-")),V=c.tool_calls.some(T=>!T.name.startsWith("extract-"));if(I||!V)return o;if(this.#o==="v1")return P;let k=c.tool_calls.filter(T=>!T.name.startsWith("extract-"));return k.length===0?o:k.map(T=>new $(P,{...i,lg_tool_call:T}))}}#r(t,n,o,r=t.length>0){let s=new Set(n.map(i=>G(i)));return i=>{let l=i;if(l.jumpTo){let u=G(l.jumpTo);if(u===S&&s.has(S))return S;if(u==="tools"&&s.has("tools"))return r?new $(P,{...i,jumpTo:void 0}):S;if(u==="model_request"&&s.has("model_request"))return new $(O,{...i,jumpTo:void 0})}return o}}#d(t,n,o,r=t.length>0){return s=>{let i=s;if(!i.jumpTo)return n;let l=G(i.jumpTo);return l===S?o:l==="tools"?r?new $(P,{...s,jumpTo:void 0}):o:new $(O,{...s,jumpTo:void 0})}}#m(t,n,o=t.length>0){return r=>{let s=r;if(!s.jumpTo)return n;let i=G(s.jumpTo);return i===S?S:i==="tools"?o?new $(P,{...r,jumpTo:void 0}):S:new $(O,{...r,jumpTo:void 0})}}async#u(t,n){if(!this.options.middleware||this.options.middleware.length===0||t instanceof j||!t)return t;let o=await Lt(this.options.middleware,t),r={...(await this.#e.getState(n).catch(()=>({values:{}}))).values,...t};if(!r)return r;for(let[s,i]of Object.entries(o))s in r||(r[s]=i);return r}async invoke(t,n){let o=H(this.#n,n),r=await this.#u(t,o);return this.#e.invoke(r,o)}async stream(t,n){let o=H(this.#n,n),r=await this.#u(t,o);return this.#e.stream(r,o)}async drawMermaidPng(t){let n=await(await(await this.#e.getGraphAsync()).drawMermaidPng(t)).arrayBuffer();return new Uint8Array(n)}async drawMermaid(t){return(await this.#e.getGraphAsync()).drawMermaid(t)}streamEvents(t,n,o){let r=H(this.#n,n);return this.#e.streamEvents(t,{...r,version:n?.version??"v2"},o)}getGraphAsync(t){return this.#e.getGraphAsync(t)}getState(t,n){return this.#e.getState(t,n)}getStateHistory(t,n){return this.#e.getStateHistory(t,n)}getSubgraphs(t,n){return this.#e.getSubgraphs(t,n)}getSubgraphsAsync(t,n){return this.#e.getSubgraphsAsync(t,n)}updateState(t,n,o){return this.#e.updateState(t,n,o)}get builder(){return this.#e.builder}};function xo(e){return new qt(e)}var Co=a.function().args(a.custom(),a.custom(),a.custom()).returns(a.union([a.string(),a.promise(a.string())])),So=["approve","edit","reject"],ko=a.enum(So),Eo=a.object({allowedDecisions:a.array(ko),description:a.union([a.string(),Co]).optional(),argsSchema:a.record(a.any()).optional()}),zs=a.object({interruptOn:a.record(a.union([a.boolean(),Eo])).optional(),descriptionPrefix:a.string().default("执行工具需要批准")});var je=`<role>
29
+ Context Extraction Assistant
30
+ </role>
31
+
32
+ <primary_objective>
33
+ Your sole objective in this task is to extract the highest quality/most relevant context from the conversation history below.
34
+ </primary_objective>
35
+
36
+ <objective_information>
37
+ You're nearing the total number of input tokens you can accept, so you must extract the highest quality/most relevant pieces of information from your conversation history.
38
+ This context will then overwrite the conversation history presented below. Because of this, ensure the context you extract is only the most important information to your overall goal.
39
+ </objective_information>
40
+
41
+ <instructions>
42
+ The conversation history below will be replaced with the context you extract in this step. Because of this, you must do your very best to extract and record all of the most important context from the conversation history.
43
+ You want to ensure that you don't repeat any actions you've already completed, so the context you extract from the conversation history should be focused on the most important information to your overall goal.
44
+ </instructions>
45
+
46
+ The user will message you with the full message history you'll be extracting context from, to then replace. Carefully read over it all, and think deeply about what information is most important to your overall goal that should be saved:
47
+
48
+ With all of this in mind, please carefully read over the entire conversation history, and extract the most important and relevant context to replace it so that you can free up space in the conversation history.
49
+ Respond ONLY with the extracted context. Do not include any additional information, or text before or after the extracted context.
50
+
51
+ <messages>
52
+ Messages to summarize:
53
+ {messages}
54
+ </messages>`,Io="Here is a summary of the conversation to date:",Pe=20,Ao=4e3,Ro=15,Qt=5,Oo=a.function().args(a.array(a.custom())).returns(a.union([a.number(),a.promise(a.number())])),ge=a.object({fraction:a.number().gt(0,"Fraction must be greater than 0").max(1,"Fraction must be less than or equal to 1").optional(),tokens:a.number().positive("Tokens must be greater than 0").optional(),messages:a.number().int("Messages must be an integer").positive("Messages must be greater than 0").optional()}).refine(e=>[e.fraction,e.tokens,e.messages].filter(t=>t!==void 0).length>=1,{message:"At least one of fraction, tokens, or messages must be provided"}),ot=a.object({fraction:a.number().min(0,"Messages must be non-negative").max(1,"Fraction must be less than or equal to 1").optional(),tokens:a.number().min(0,"Tokens must be greater than or equal to 0").optional(),messages:a.number().int("Messages must be an integer").min(0,"Messages must be non-negative").optional()}).refine(e=>[e.fraction,e.tokens,e.messages].filter(t=>t!==void 0).length===1,{message:"Exactly one of fraction, tokens, or messages must be provided"}),eo=a.object({model:a.custom(),trigger:a.union([ge,a.array(ge)]).optional(),keep:ot.optional(),tokenCounter:Oo.optional(),summaryPrompt:a.string().default(je),trimTokensToSummarize:a.number().optional(),summaryPrefix:a.string().optional(),maxTokensBeforeSummary:a.number().optional(),messagesToKeep:a.number().optional()});function Le(e){if("profile"in e&&typeof e.profile=="object"&&e.profile&&"maxInputTokens"in e.profile&&(typeof e.profile.maxInputTokens=="number"||e.profile.maxInputTokens==null))return e.profile.maxInputTokens??void 0;if("model"in e&&typeof e.model=="string")return Ge(e.model);if("modelName"in e&&typeof e.modelName=="string")return Ge(e.modelName)}function No(e){let{data:t,error:n}=pt(eo,e);if(n)throw new Error(`Invalid summarization middleware options: ${z.prettifyError(n)}`);return A({name:"SummarizationMiddleware",contextSchema:eo.extend({model:a.custom().optional()}),beforeModel:async(o,r)=>{let s=t.trigger,i=t.keep;t.maxTokensBeforeSummary!==void 0&&(console.warn("maxTokensBeforeSummary is deprecated. Use `trigger: { tokens: value }` instead."),s===void 0&&(s={tokens:t.maxTokensBeforeSummary})),t.messagesToKeep!==void 0&&(console.warn("messagesToKeep is deprecated. Use `keep: { messages: value }` instead."),(!i||i&&"messages"in i&&i.messages===Pe)&&(i={messages:t.messagesToKeep}));let l=r.context?.trigger!==void 0?r.context.trigger:s,u=r.context?.keep!==void 0?r.context.keep:i??{messages:Pe},c=ot.parse(u),d=[];l===void 0?d=[]:Array.isArray(l)?d=l.map(x=>ge.parse(x)):d=[ge.parse(l)];let g=d.some(x=>"fraction"in x)||"fraction"in c,p=typeof t.model=="string"?await X(t.model):t.model;if(g&&!Le(p))throw new Error("Model profile information is required to use fractional token limits. Use absolute token counts instead.");let h=r.context?.summaryPrompt===je?t.summaryPrompt??je:r.context?.summaryPrompt??t.summaryPrompt??je,I=r.context.summaryPrefix??t.summaryPrefix??Io,V=r.context?.trimTokensToSummarize!==void 0?r.context.trimTokensToSummarize:t.trimTokensToSummarize??Ao;jo(o.messages);let k=r.context?.tokenCounter!==void 0?r.context.tokenCounter:t.tokenCounter??Ne,T=await k(o.messages);if(!await Do(o.messages,T,d,p))return;let{systemPrompt:L,conversationMessages:R}=Po(o.messages),D=await $o(R,c,k,p);if(D<=0)return;let{messagesToSummarize:se,preservedMessages:U}=Lo(L,R,D),E=new K({content:`${I}
55
+
56
+ ${await zo(se,p,h,k,V,r)}`,id:ze(),additional_kwargs:{lc_source:"summarization"}});return{messages:[new Be({id:bt}),E,...U]}}})}function jo(e){for(let t of e)t.id||(t.id=ze())}function Po(e){return e.length>0&&B.isInstance(e[0])?{systemPrompt:e[0],conversationMessages:e.slice(1)}:{conversationMessages:e}}function Lo(e,t,n){let o=t.slice(0,n),r=t.slice(n);return e&&o.unshift(e),{messagesToSummarize:o,preservedMessages:r}}async function Do(e,t,n,o){if(n.length===0)return!1;for(let r of n){let s=!0,i=!1;if(r.messages!==void 0&&(i=!0,e.length<r.messages&&(s=!1)),r.tokens!==void 0&&(i=!0,t<r.tokens&&(s=!1)),r.fraction!==void 0){i=!0;let l=Le(o);typeof l=="number"?t<Math.floor(l*r.fraction)&&(s=!1):s=!1}if(i&&s)return!0}return!1}async function $o(e,t,n,o){if("tokens"in t||"fraction"in t){let r=await Uo(e,t,n,o);return typeof r=="number"?r:to(e,Pe)}return to(e,t.messages??Pe)}async function Uo(e,t,n,o){if(e.length===0)return 0;let r;if("fraction"in t&&t.fraction!==void 0){let d=Le(o);if(typeof d!="number")return;r=Math.floor(d*t.fraction)}else if("tokens"in t&&t.tokens!==void 0)r=Math.floor(t.tokens);else return;if(r<=0&&(r=1),await n(e)<=r)return 0;let s=0,i=e.length,l=e.length,u=Math.floor(Math.log2(e.length))+1;for(let d=0;d<u&&!(s>=i);d++){let g=Math.floor((s+i)/2);await n(e.slice(g))<=r?(l=g,i=g):s=g+1}if(l===e.length&&(l=s),l>=e.length){if(e.length===1)return 0;l=e.length-1}let c=ro(e,l);if(c<=l)return c;for(let d=l;d>=0;d--)if(oo(e,d))return d;return 0}function to(e,t){if(e.length<=t)return 0;let n=e.length-t,o=ro(e,n);if(o<=n)return o;for(let r=n;r>=0;r--)if(oo(e,r))return r;return 0}function oo(e,t){if(t>=e.length)return!0;if(t<e.length&&w.isInstance(e[t])&&le(e[t]))return!1;let n=Math.max(0,t-Qt),o=Math.min(e.length,t+Qt);for(let r=n;r<o;r++){if(!le(e[r]))continue;let s=no(e[r]);if(Bo(e,r,t,s))return!1}return!0}function no(e){let t=new Set;if(e.tool_calls)for(let n of e.tool_calls){let o=typeof n=="object"&&"id"in n?n.id:null;o&&t.add(o)}return t}function ro(e,t){if(t>=e.length||!M.isInstance(e[t]))return t;let n=new Set,o=t;for(;o<e.length&&M.isInstance(e[o]);){let r=e[o];r.tool_call_id&&n.add(r.tool_call_id),o++}for(let r=t-1;r>=0;r--){let s=e[r];if(w.isInstance(s)&&le(s)){let i=no(s);for(let l of n)if(i.has(l))return r}}return o}function Bo(e,t,n,o){for(let r=t+1;r<e.length;r++){let s=e[r];if(M.isInstance(s)&&o.has(s.tool_call_id)&&t<n!=r<n)return!0}return!1}async function zo(e,t,n,o,r,s){if(!e.length)return"No previous conversation history.";let i=await Wo(e,o,r);if(!i.length)return"Previous conversation was too long to summarize.";let l=lt(i);try{let u=n.replace("{messages}",l),c=H(ct(s)??{},{metadata:{lc_source:"summarization"}}),d=(await t.invoke(u,c)).content;return typeof d=="string"?d.trim():Array.isArray(d)?d.map(g=>typeof g=="string"?g:typeof g=="object"&&g!==null&&"text"in g?g.text:"").join("").trim():"Error generating summary: Invalid response format"}catch(u){return`Error generating summary: ${u}`}}async function Wo(e,t,n){if(n===void 0)return e;try{return await Je(e,{maxTokens:n,tokenCounter:async o=>t(o),strategy:"last",allowPartial:!0,includeSystem:!0})}catch{return e.slice(-Ro)}}var da=a.object({model:a.string().or(a.instanceof(yt)).optional(),systemPrompt:a.string().optional(),maxTools:a.number().optional(),alwaysInclude:a.array(a.string()).optional()});var wa=a.object({applyToInput:a.boolean().optional(),applyToOutput:a.boolean().optional(),applyToToolResults:a.boolean().optional()});var _a=a.object({rules:a.record(a.string(),a.instanceof(RegExp).describe("Regular expression pattern to match PII")).optional()});var Fo=["continue","error","end"],Ho="continue";var Jo=a.enum(Fo).default(Ho);a.object({toolName:a.string().optional(),threadLimit:a.number().optional(),runLimit:a.number().optional(),exitBehavior:Jo});var Oa=a.object({threadToolCallCount:a.record(a.string(),a.number()).default({}),runToolCallCount:a.record(a.string(),a.number()).default({})});var Go=a.enum(["pending","in_progress","completed"]).describe("Status of the todo"),Vo=a.object({content:a.string().describe("Content of the todo item"),status:Go}),Ba=a.object({todos:a.array(Vo).default([])});var Zo="end",Yo=a.object({threadLimit:a.number().optional(),runLimit:a.number().optional(),exitBehavior:a.enum(["error","end"]).optional()}),Ko=a.object({threadModelCallCount:a.number().default(0),runModelCallCount:a.number().default(0)}),so=class extends Error{constructor({threadLimit:e,runLimit:t,threadCount:n,runCount:o}){let r=[];typeof e=="number"&&typeof n=="number"&&r.push(`thread level call limit reached with ${n} model calls`),typeof t=="number"&&typeof o=="number"&&r.push(`run level call limit reached with ${o} model calls`),super(`Model call limits exceeded${r.length>0?`: ${r.join(", ")}`:""}`),this.name="ModelCallLimitMiddlewareError"}};function qo(e){return A({name:"ModelCallLimitMiddleware",contextSchema:Yo,stateSchema:Ko,beforeModel:{canJumpTo:["end"],hook:(t,n)=>{let o=n.context.exitBehavior??e?.exitBehavior??Zo;o==="throw"&&(console.warn("The 'throw' exit behavior is deprecated. Please use 'error' instead."),o="error");let r=n.context.threadLimit??e?.threadLimit,s=n.context.runLimit??e?.runLimit,i=t.threadModelCallCount,l=t.runModelCallCount;if(typeof r=="number"&&r<=i){let u=new so({threadLimit:r,threadCount:i});if(o==="end")return{jumpTo:"end",messages:[new w(u.message)]};throw u}if(typeof s=="number"&&s<=l){let u=new so({runLimit:s,runCount:l});if(o==="end")return{jumpTo:"end",messages:[new w(u.message)]};throw u}return t}},afterModel:t=>({runModelCallCount:t.runModelCallCount+1,threadModelCallCount:t.threadModelCallCount+1}),afterAgent:()=>({runModelCallCount:0})})}var De=a.object({maxRetries:a.number().min(0).default(2),retryOn:a.union([a.function().args(a.instanceof(Error)).returns(a.boolean()),a.array(a.custom())]).default(()=>()=>!0),backoffFactor:a.number().min(0).default(2),initialDelayMs:a.number().min(0).default(1e3),maxDelayMs:a.number().min(0).default(6e4),jitter:a.boolean().default(!0)});var si=a.object({onFailure:a.union([a.literal("error"),a.literal("continue"),a.function().args(a.instanceof(Error)).returns(a.string())]).default("continue")}).merge(De);var fi=a.object({tools:a.array(a.union([a.custom(),a.custom(),a.string()])).optional(),onFailure:a.union([a.literal("error"),a.literal("continue"),a.literal("raise"),a.literal("return_message"),a.function().args(a.instanceof(Error)).returns(a.string())]).default("continue")}).merge(De);var Ci=a.object({enableCaching:a.boolean().optional(),ttl:a.enum(["5m","1h"]).optional(),minMessagesToCache:a.number().optional(),unsupportedModelBehavior:a.enum(["ignore","warn","raise"]).optional()});export{A as a,xo as b,No as c,qo as d,St as e};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import a from"./WNJM5TET.js";import"./DHGNGMNJ.js";import"./H3EEFM4A.js";import"./4ASZF5I2.js";import"./LXJWWOGK.js";import"./CFDTXKJ6.js";export default $geoscene.t(([{property:g,subclass:p},{c:d,d:u}])=>{var f=Object.defineProperty,w=Object.getOwnPropertyDescriptor,c=(e,r,n,o)=>{for(var t=o>1?void 0:o?w(r,n):r,i=e.length-1,a;i>=0;i--)(a=e[i])&&(t=(o?a(r,n,t):a(t))||t);return o&&t&&f(r,n,t),t},s=class extends u{constructor(e){super(e)}getAgents(){return this.agents}buildNodes(e){let r=super.buildNodes(e);return r[l]=()=>({}),r}buildEdges(e){let r=this.condition;if(!r)throw new Error("ConditionalWorkflow 必须提供条件。");let n=d(e[0],0),o=d(e[1],1);return[{from:l,decide:async(t,i)=>await Promise.resolve(r(t,i))?n:o}]}getEntryNode(){return l}isTerminalAgent(){return!0}validateAgents(e){if(super.validateAgents(e),e.length!==2)throw new Error(`ConditionalWorkflow 必须且只能包含2个 Agent,实际为 ${e.length}.`)}};c([g()],s.prototype,"condition",2);c([g()],s.prototype,"agents",2);s=c([p("ConditionalWorkflow")],s);var l="__conditional_decide";return s},"core/accessorSupport/decorators",a)
@@ -0,0 +1,27 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import"./CFDTXKJ6.js";var e=`# GeosceneKnowledge 工具调用要求
3
+
4
+ 你帮助用户回答知识图谱问题,并操作知识图谱、地图或链接图。请通过一次工具调用完成下列任务。
5
+
6
+ ## 任务详情
7
+
8
+ 分配的任务:
9
+ {assignedTask}
10
+
11
+ 用户请求:
12
+ {userRequest}
13
+
14
+ 之前的步骤:
15
+ {priorSteps}
16
+
17
+ 上下文类型:
18
+ {contextType}
19
+
20
+ ## 规则
21
+
22
+ 1. 根据上方上下文类型判断:如果是 map,绝不能调用 changeNonspatialVisibility、applyLayout、createLinkChart 这些 geosceneKnowledge 工具。
23
+ 2. 如果上下文类型是 knowledgeGraph,绝不能调用 changeNonspatialVisibility、applyLayout、createLinkChart、addRecords。
24
+ 3. 没有适用工具时,返回零次工具调用和空消息。
25
+ 4. 有适用工具时,根据任务传入合适参数,只调用一个 geosceneKnowledge 工具。仅在理解任务需要上下文时,才参考用户请求或之前的步骤。
26
+ 5. 关键限制:禁止多次工具调用。必须只调用一个工具或不调用工具。
27
+ `;export{e as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{a as l}from"./GTXGIROA.js";import"./3Y723IJS.js";import"./TOYQ22PR.js";import{g as a,h as e,k as o,t as i,u as n,v as r,z as c}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";export default $geoscene.t(([{watch:d}])=>{var g=a`.container{display:flex;align-items:center;width:100%;justify-content:space-between;gap:var(--calcite-spacing-xs)}.start,.end{display:flex;align-items:center;gap:var(--calcite-spacing-xs)}`,t=class extends r{constructor(){super(...arguments),this._messages=l({blocking:!0}),this._endRef=i(),this._showLog=!1,this.feedbackEnabled=!1,this.logEnabled=!1,this.copyEnabled=!1,this.readAloudEnabled=!1}static{this.properties={_showLog:16,feedbackEnabled:5,logEnabled:5,copyEnabled:5,readAloudEnabled:5,message:0}}static{this.styles=g}loaded(){this.manager.onLifecycle(()=>[d(()=>this._showLog,()=>this._scrollToEnd())])}_scrollToEnd(){requestAnimationFrame(()=>{this._endRef.value?.scrollIntoView({behavior:"smooth",block:"end"})})}_renderCopyButton(){return!this.message?.error&&this.copyEnabled?e`<calcite-action id=action-copy icon=copy-to-clipboard scale=s @click=${async()=>{try{let s=this.message?.content?.trim();s&&await navigator.clipboard.writeText(s)}catch(s){o("warn","assistant-message-footer","复制文本到剪贴板失败",{once:!0,detail:{error:s}})}}} text></calcite-action><calcite-tooltip reference-element=action-copy overlay-positioning=fixed placement=bottom><span>${this._messages.copyButtonLabel}</span></calcite-tooltip>`:null}_renderLogButton(){return this.message?.log?.length&&this.logEnabled?e`<calcite-action id=action-log icon=access-string-results scale=s @click=${()=>this._showLog=!this._showLog} .text=${this._messages.logButtonLabel} .active=${this._showLog}></calcite-action><calcite-tooltip reference-element=action-log overlay-positioning=fixed placement=bottom><span>${this._messages.logButtonLabel}</span></calcite-tooltip>`:null}_renderReadAloudButton(){return e`<geoscene-assistant-message-read-aloud .message=${this.message} .readAloudEnabled=${this.readAloudEnabled}></geoscene-assistant-message-read-aloud>`}_renderLog(){return e`<geoscene-assistant-message-log .log=${this.message?.log} .showLog=${this._showLog} .logEnabled=${this.logEnabled}></geoscene-assistant-message-log>`}_renderFeedback(){return e`<geoscene-assistant-message-feedback .message=${this.message} .feedbackEnabled=${this.feedbackEnabled}></geoscene-assistant-message-feedback>`}render(){return e`${this._renderLog()}<div class="container"><div class="start">${this._renderCopyButton()}${this._renderLogButton()}${this._renderReadAloudButton()}<slot name=footer-actions-start></slot></div><div class="end"><slot name=footer-actions-end></slot>${this._renderFeedback()}</div></div><div ${n(this._endRef)}></div>`}};c("geoscene-assistant-message-footer",t);return t},"core/reactiveUtils")
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{Dd as o}from"./LXJWWOGK.js";var r=o;export{r as a};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{Z as c}from"./4ASZF5I2.js";function f(e,s,t){return{...e,status:s,summary:t}}function g(e){let s=Object.entries(e).filter(([t,n])=>t!=="agentExecutionContext"&&t!=="outputMessage"&&t!=="summary"&&t!=="status"&&n!==void 0);if(s.length!==0)try{return JSON.stringify(Object.fromEntries(s),null,2)}catch{return}}function m(e,s,t=[]){let n=s.safeParse(e);if(n.success){let u={...n.data},r=g(u),a=r??"LLMAgent 已生成结构化输出。",o=r??u.outputMessage,i={...u,...o?{outputMessage:o}:{},agentExecutionContext:{messages:[...t,new c(typeof o=="string"&&o.trim()?o:a)]}};return f(i,"success",a)}else throw new Error(`LLMAgent 输出结构校验失败:${n.error.message}`)}function l(e,s){let t={outputMessage:e.outputMessage};if(s){let n=s.shape,u=e;for(let r of Object.keys(n??{}))r in e&&(t[r]=u[r])}return t}export{f as a,m as b,l as c};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{g as i,h as a,v as e,z as t}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";var n=i`:host{display:contents}.icon{padding:var(--calcite-spacing-sm);border-radius:var(--calcite-spacing-xl);background:var(--calcite-color-brand);color:var(--calcite-color-foreground-1)}.loading-container{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm);padding:0 var(--calcite-spacing-sm)}.loading{display:flex;align-items:center;gap:var(--calcite-spacing-sm)}.text{font-style:italic;word-wrap:break-word;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical}.skeleton-block{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm);width:100%}.skeleton-text{display:block;height:.95em;border-radius:var(--calcite-border-radius);background:linear-gradient(90deg,color-mix(in srgb,var(--calcite-color-foreground-2) 65%,transparent),color-mix(in srgb,var(--calcite-color-foreground-3) 85%,transparent),color-mix(in srgb,var(--calcite-color-foreground-2) 65%,transparent));background-size:200% 100%;animation:assistant-message-loading-shimmer 1.2s ease-in-out infinite;width:85%}.skeleton-text:last-child{width:70%}@keyframes assistant-message-loading-shimmer{0%{background-position:-150% 0}to{background-position:150% 0}}@media(prefers-reduced-motion){.skeleton-text{animation:none}}`,s=class extends e{constructor(){super(...arguments),this.loading=!1,this.loadingMessage="",this.assistantAvatarEnabled=!1}static{this.properties={loading:5,loadingMessage:1,assistantAvatarEnabled:5,interrupts:0}}static{this.styles=n}render(){return this.loading?a`<geoscene-assistant-message footer-disabled>${this.assistantAvatarEnabled?a`<slot name=icon slot=icon><calcite-icon class="icon" icon=effects scale=s></calcite-icon></slot>`:null}<slot name=content slot=content><geoscene-assistant-interrupt-preview .interrupts=${this.interrupts}></geoscene-assistant-interrupt-preview><div class="loading-container"><div class="loading"><calcite-loader label=loading inline></calcite-loader><div class="text">${this.loadingMessage}</div></div><div class="skeleton-block"><span class="skeleton-text"></span><span class="skeleton-text"></span></div></div></slot></geoscene-assistant-message>`:null}};t("geoscene-assistant-message-loading",s);export{s as GeosceneAssistantMessageLoading};
@@ -0,0 +1,12 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import b from"./ZGUVZMYR.js";import a from"./PFW7KXCP.js";import{a as p}from"./KGYSBUFO.js";import{a as u,b as i,ta as c}from"./H3EEFM4A.js";export default $geoscene.t(([,,,,,,{r:g},{I:d,J:E,a:h,m:f,n:y,o:m,p:x}])=>{var S=[E],_=e=>{if(!e||e.size===0)return"当前地图没有可用图层。";let t=Array.from(e.values()).map(({layerItem:r,fieldRegistry:a},s)=>{let o=Array.from(a.values()).map(n=>n.name).slice(0,10).join(", "),l=a.size>10?`(另有 ${a.size-10} 个)`:"";return`${s+1}. "${r.title}”。说明:${r.description}
3
+ 字段:${o}${l}`}).join(`
4
+
5
+ `);return`当前地图包含 ${e.size} 个图层:
6
+
7
+ ${t}`},v=e=>{let t=e?.list()??[];return t.length?t.map(r=>`- ${r.agent.name}: ${r.agent.description}`).join(`
8
+ `):"当前没有可用 Agent。"};async function $(e,t){let r=await f("help_prompt"),a=m(t,"layersAndFieldsRegistry"),s=m(t,"agentRegistry");try{let o=await g({promptText:r,modelTier:"default",config:t,tools:S,inputVariables:{layerSummary:_(a),agents:v(s),assignedTask:e.agentExecutionContext.assignedTask,userRequest:e.agentExecutionContext.userRequest,priorSteps:e.agentExecutionContext.priorSteps}}),l=(o.tool_calls?.length??0)>0,n=typeof o.text=="string"?o.text.trim():"";return{...e,helpInternalState:{...e.helpInternalState,toolCallMessage:l?o:void 0},outputMessage:l?e.outputMessage:n,summary:l?"已根据分配的任务准备帮助工具调用。":"已根据分配的任务提供地图相关帮助。",status:l?e.status:"success"}}catch(o){let l=o instanceof Error?o.message:String(o);return{...e,outputMessage:`调用帮助 Agent 出错:${l}`,summary:"帮助 Agent 执行失败。",status:"failed"}}}var b=(e,t)=>x(["agentRegistry"],"帮助 Agent")(e,t);async function w(e,t){let r=new h(S,{handleToolErrors:!1});try{let a=e.helpInternalState.toolCallMessage;if(!a)throw new Error("helpToolCalling:缺少 helpInternalState.toolCallMessage");let s=(await r.invoke({messages:[a]},t)).messages.map(o=>o.text).join(`
9
+ `);return await p({text:`帮助工具执行完成:${s}`},t),{...e,outputMessage:s,status:"success",summary:s?y(s):"帮助已执行。",helpInternalState:{...e.helpInternalState,toolCallMessage:void 0}}}catch(a){let s=a instanceof Error?a.message:String(a);return await p({text:`帮助工具执行失败:${s}`},t),{...e,outputMessage:`帮助工具执行失败:${s}`,status:"failed",summary:`帮助工具执行失败:${s}`,helpInternalState:{...e.helpInternalState,toolCallMessage:void 0}}}}var C=()=>new c(d).addNode("requireHelpServices",b).addNode("agent",$).addNode("tools",w).addEdge(u,"requireHelpServices").addEdge("requireHelpServices","agent").addConditionalEdges("agent",e=>e.helpInternalState.toolCallMessage?"tools":i).addEdge("tools",i),H=String.raw`- **help**——回答地图、图层、字段和助手能力相关问题。
10
+ 示例:“介绍当前地图”“列出地图全部图层”“列出保护区图层字段”“有哪些 Agent”“你能做什么”“我能问什么”。
11
+ 用户询问英文字母元音、烹饪等无关问题时,调用此 Agent 礼貌说明范围并引导回地图问题。
12
+ 用户要求其他 Agent 均不支持的地图操作时,也调用此 Agent 告知暂不支持,例如“创建图表”“创建表格”。`,P={id:"help",name:"帮助 Agent",description:H,createGraph:C,workspace:d};return P},"identity/IdentityManager","portal/Portal","config","core/reactiveUtils","layers/FeatureLayer","request",a,b)
@@ -0,0 +1,121 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import"./CFDTXKJ6.js";var e=`## GIS Agent 编排器
3
+
4
+ 你负责 GeoScene Maps SDK for JavaScript 系统的任务编排。
5
+ 你的职责是决定当前步骤下一步最适合执行的唯一 Agent。
6
+
7
+ ---
8
+
9
+ ## 输入
10
+
11
+ 你会得到:
12
+ - 用户最新请求。
13
+ - 相关聊天历史。
14
+ - 已注册 Agent 列表。
15
+ - 可选的 Agent 先前执行步骤。
16
+
17
+ ---
18
+
19
+ ## 输出
20
+
21
+ 返回以下两种结果之一:
22
+ - 一个决定,包含:
23
+ 1. \`agentId\`:下一步执行的 Agent。
24
+ 2. \`assignedTask\`:交给该 Agent 的明确、可执行任务。
25
+ 3. \`requiresFollowUp\`:该 Agent 成功后,是否可能还需要另一步编排。
26
+ - 如果没有适用的已注册 Agent,返回 \`null\`。
27
+
28
+ ---
29
+
30
+ ## 重要要求
31
+
32
+ - 只有请求明确超出所有已注册 Agent 的范围时,才返回 \`null\`。
33
+ - 只要有 Agent 能执行下一项有用操作,就选择最合适的 Agent。
34
+
35
+ ---
36
+
37
+ ## 上下文
38
+
39
+ ### 用户最新请求
40
+ {userRequest}
41
+
42
+ ### 已注册 Agent
43
+
44
+ 格式:
45
+ {{id: string, name: string, description: string}}[]
46
+
47
+ {registeredAgents}
48
+
49
+ ### 之前的步骤
50
+
51
+ 每个步骤包含:
52
+ - \`agentId: string\`
53
+ - \`assignedTask: string\`
54
+ - \`summary: string\`
55
+ - \`status: "success" | "failed" | "unknown"\`
56
+
57
+ 利用之前的步骤:
58
+ - 避免重复已经成功完成的工作。
59
+ - 必要时重试或调整失败的步骤。
60
+
61
+ {priorSteps}
62
+
63
+ ---
64
+
65
+ ## 规则
66
+
67
+ - 主要关注用户最新请求。
68
+ - 只有最新请求明确依赖之前上下文时,才使用相关聊天历史,否则忽略。
69
+ - 根据之前的步骤判断哪些操作已经尝试或完成。
70
+ - 不要预先规划整个流程,只决定下一项最合适的步骤。
71
+ - 优先选择能直接完成用户请求的 Agent。
72
+ - 只有必要时才拆分为多个步骤。
73
+ - 多个 Agent 均可处理时,选择最合适的,而不是返回 \`null\`。
74
+ - 根据已注册 Agent 的能力说明选择,不要求用户使用精确关键词。
75
+ - 如果没有 Agent 能完整完成请求,但有 Agent 能执行下一项有用操作,就选择它。
76
+ - 除非用户当前请求明确要求,否则不要复用之前步骤的限制条件。
77
+ - 每个步骤都必须准确反映当前请求。
78
+
79
+ ---
80
+
81
+ ## 条件理解
82
+
83
+ 准确理解用户措辞:
84
+ - 不要用一种条件替换另一种,例如距离与包含、范围与精确匹配。
85
+ - 用户明确给出的条件必须原样遵守。
86
+ - 用户未指定的条件不要自行假设或推断。
87
+ 不要把请求重新解释成其他问题。
88
+
89
+ ---
90
+
91
+ ## 追问中的指代解析
92
+
93
+ 当最新请求使用“这些”“那些”“它们”“那组”“之前的结果”“这个”“它”“那个”“这个地块”“这个位置”“那个要素”等指代表达时,说明它依赖之前上下文。
94
+ 其他语言中的等价指代表达同样适用。
95
+
96
+ 根据最近相关的聊天历史或成功步骤解析指代。
97
+ 此时 \`assignedTask\` 应可独立理解,保留所引用的先前条件,并仅增加最新请求中的新条件或问题。
98
+ 如果可从上下文确定对象,不要在 \`assignedTask\` 中保留模糊指代。
99
+
100
+ ---
101
+
102
+ ## 分配任务的要求(重要)
103
+
104
+ - \`assignedTask\` 的含义必须与用户请求完全一致。
105
+ - 不要增加、移除或转换条件。
106
+ - 不要用一种条件替换另一种。
107
+ - 没有明确条件时,不要自行假设。
108
+ - 任务应简短、具体、可直接执行。
109
+ - 尽量保留用户原话,只做必要转换。
110
+ - 解析追问时,只把模糊指代替换成已确定的上下文,其余措辞尽量保持。
111
+ - 只使用用户请求或已提供上下文中明确存在的信息。
112
+ - 如果需要多个步骤,\`assignedTask\` 可以只代表用户请求的一部分。
113
+
114
+ ---
115
+
116
+ ## requiresFollowUp 的要求
117
+
118
+ - \`requiresFollowUp\` 表示是否可能需要下一步 Agent 操作,不表示对当前请求的不确定性。
119
+ - 只有该 Agent 成功后仍可能需要另一步编排时,才设为 \`true\`。
120
+ - 如果该 Agent 成功后即可完成用户可见的任务,则设为 \`false\`。
121
+ `;export{e as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ var f=(...o)=>{let t=[];for(let s=0;s<o.length;++s){let n=o[s];if(typeof n=="string")t.push(n);else if(Array.isArray(n))t.push.apply(t,n);else if(typeof n=="object")for(let r in n)n[r]&&t.push(r)}let e=t.join(" ");return t.length=0,e},l=(o,t)=>{let e=o;for(;e;){if(e===t)return!0;if(!e.parentNode)return!1;e.parentNode instanceof ShadowRoot?e=e.parentNode.host:e=e.parentNode}return!1},m=(o,t,e)=>{let s=u(t).subscribe;return s(n=>{n.some(i=>l(o,i.target))&&e()})},c={},u=o=>{let t=o.join(","),e=c[t];if(e!==void 0)return e;let s=new Set,n=new MutationObserver(i=>s.forEach(a=>a(i)));globalThis.document&&n.observe(document.documentElement,{attributes:!0,attributeFilter:o,subtree:!0});let r={subscribe:i=>(s.add(i),()=>{s.delete(i),s.size===0&&(n.disconnect(),c[t]=void 0)})};return c[t]=r,r},d=(o,t)=>{let e=o;for(;e;){let s=e.closest?.(t);if(s)return s;let n=e.getRootNode?.();if(n===globalThis.document)return;e=n?.host}};var h=(o,t,e)=>d(o,`[${t}]`)?.getAttribute(t)??e;export{f as a,m as b,d as c,h as d};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{a as s,b as c}from"./6TB6FVGF.js";import"./46U2PGRW.js";import{g as a,h as e,v as r,z as i}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";var o=a`:host{overflow:auto}.container{display:flex;align-items:center;gap:var(--calcite-spacing-md);background:color-mix(in srgb,var(--calcite-color-brand) 15%,var(--calcite-color-foreground-1));color:var(--calcite-color-text-1);padding:var(--calcite-spacing-md);border-radius:var(--calcite-border-radius);width:fit-content;margin-left:auto;justify-content:flex-end}.avatar{display:flex;align-items:center;justify-content:center}.content{>*{margin:0}>*+*{margin-block-start:var(--calcite-spacing-sm)}:is(ol,ul){padding-inline-start:var(--calcite-spacing-lg)}>calcite-table{display:block;max-width:100%}pre{background-color:var(--calcite-color-foreground-1);padding:var(--calcite-spacing-sm);border-radius:var(--calcite-border-radius);color:var(--calcite-color-text-1);direction:ltr;max-width:100%;overflow:auto}pre code{display:block;white-space:pre;font-family:var(--calcite-code-family)}}@container (min-width: 480px){.container{max-width:80%}}`,t=class extends r{static{this.properties={content:1,user:1,message:0}}static{this.styles=o}_getContent(){return this.message?.role==="user"?this.message.content:this.content}render(){return e`<div class="container"><div><slot name=content><div class="content">${s(c(this._getContent()))}</div></slot></div><slot name=icon><div class="avatar"><calcite-avatar .fullName=${this.user} scale=s></calcite-avatar></div></slot></div>`}};i("geoscene-assistant-user-message",t);export{t as GeosceneAssistantUserMessage};
@@ -0,0 +1,3 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import a from"./PFW7KXCP.js";import{b as f}from"./4EALV6QJ.js";import{a as l}from"./KGYSBUFO.js";import{U as R,a as v,b as x,ta as S,u as E}from"./H3EEFM4A.js";import{Z as I,ja as b}from"./4ASZF5I2.js";export default $geoscene.t(([O,P,q,N,T,{a:C,d:k,e:p,g:A,h:$,o:M}])=>{var U=async t=>{let e=await _(),r=await C("default"),s=P.getDefault(),n=(await O.getCredential(`${s.url}/sharing`)).token,a={type:"generateEmbeddings",webmapEmbeddings:t,auth:{apiUrl:r,token:n}};return e.postMessage(a),await new Promise((i,o)=>{let d=u=>{u.data==="completed"&&(e.removeEventListener("message",d),i())},c=u=>{e.removeEventListener("message",d),o(u instanceof Error?u:new Error("嵌入向量 Worker 出错"))};e.addEventListener("message",d),e.addEventListener("error",c,{once:!0})}),e},_=async()=>{{let t=(await import("./URYKQKFE.js")).default;return new t}},G=t=>{t.currentIntent="none"},z=async(t,e)=>{let r=p(e);if(t.agentExecutionContext.userRequest){let n=new b(t.agentExecutionContext.userRequest.trim());t.agentExecutionContext.messages=[...t.agentExecutionContext.messages,n],G(t)}let s=r?.services.agentRegistry.list().map(n=>n.agent.id)??[];return await l({text:`可用 Agent:${[...s].join(", ")}`},e),await l({text:"正在分析用户输入"},e),t},Q=async(t,e)=>(await l({text:"正在退出……"},e),t),D=t=>typeof t=="object"&&t!==null&&!Array.isArray(t),B=(t,e)=>{if(!D(t)){t!==void 0&&console.warn(`Agent "${e}”返回的 sharedStatePatch 无效,已忽略。`);return}let r={};for(let[s,n]of Object.entries(t)){if(!D(n)||!("value"in n)){console.warn(`Agent "${e}”返回了无效的 sharedStatePatch 条目,字段为“${s}”,已忽略该条目。`);continue}r[s]={value:n.value}}return r},J=t=>{let{previousSharedState:e,patch:r,agentId:s}=t;if(!r)return e;let n=Date.now(),a={...e};for(let[i,o]of Object.entries(r))o?.value!==void 0&&(a[i]={value:o.value,meta:{updatedByAgentId:s,updatedAt:n}});return a},W=t=>typeof t!="string"?void 0:t.trim()||void 0,K=t=>{switch(t){case"failed":return"Agent 执行失败,未提供摘要。";case"unknown":return"Agent 返回未知状态。";case"success":return"Agent 已完成,未提供摘要。";default:return"Agent 已完成,未提供摘要。"}},V=(t,e)=>{let r=W(e?.outputMessage),s=W(e?.summary),n=e?.status,a=n==="success"||n==="failed"?n:"unknown";a==="unknown"&&console.warn(`Agent "${t}”缺少有效 status,默认设为 unknown。`);let i=B(e?.sharedStatePatch,t);return{outputMessage:r,summary:s??r??K(a),status:a,sharedStatePatch:i}},F=4e3,X=async(t,e)=>{let r=p(e);if(e?.signal?.aborted)return await l({text:"运行已取消,跳过 Agent 执行"},e),{...t,currentIntent:"none",requiresFollowUp:!1};let{agentRegistry:s}=r?.services??{},n=s?.get(t.currentIntent);if(!n)return console.warn(`未找到处理该意图的 Agent:${t.currentIntent}`),t;await l({text:`正在执行已注册 Agent:${n.agent.name}`},e);let a={...e??{},configurable:{...r??{},agentId:n.agent.id,context:n.getContext?await n.getContext():void 0}},i;try{let c=await n.agent.createGraph().compile().invoke({agentExecutionContext:{...t.agentExecutionContext,messages:[...t.agentExecutionContext.messages],priorSteps:structuredClone(t.agentExecutionContext.priorSteps??[]),sharedState:structuredClone(t.agentExecutionContext.sharedState??{})}},a);i=V(n.agent.name,c),await l({text:`已注册 Agent 执行完成:${n.agent.name}`},e)}catch(c){if(E(c)||e?.signal?.aborted||c instanceof Error&&c.name==="AbortError")throw c;let u=c instanceof Error?c.message:String(c);console.error(`Agent "${n.agent.name}”失败:`,c),await l({text:`已注册 Agent 执行失败:${n.agent.name}. ${u}`},e),i={status:"failed",outputMessage:`Agent 执行失败:${u}`,summary:`Agent 执行失败:${u}`}}let o=i.outputMessage,d=[...t.agentExecutionContext.messages];if(o){let c=o.length>F?`${o.slice(0,F-14)}
3
+ [已截断]`:o;d.push(new I(c))}return{...t,stepCount:t.stepCount+1,lastExecutedAgent:n.agent.id,requiresFollowUp:i.status==="failed"?!0:t.requiresFollowUp,finalOutputMessage:o??"",agentExecutionContext:{...t.agentExecutionContext,messages:d,priorSteps:[...t.agentExecutionContext.priorSteps??[],{agentId:n.agent.id,assignedTask:t.agentExecutionContext.assignedTask,summary:i?.summary||"未提供摘要。",status:i?.status||"unknown"}],sharedState:J({previousSharedState:t.agentExecutionContext.sharedState,patch:i.sharedStatePatch,agentId:n.agent.id})}}},Y=3,Z=()=>new S(k).addNode("ingestInput",z).addNode("intentLLM",$).addNode("executeRegisteredAgent",X).addNode("exit",Q).addEdge(v,"ingestInput").addEdge("ingestInput","intentLLM").addConditionalEdges("intentLLM",t=>t.currentIntent==="none"||t.currentIntent===t.lastExecutedAgent?"exit":"executeRegisteredAgent").addConditionalEdges("executeRegisteredAgent",t=>t.stepCount>=Y||!t.requiresFollowUp?"exit":"intentLLM").addEdge("exit",x),w=class{constructor(){this.agentRegistry=new Map}register(e){let{agent:r}=e;if(this.agentRegistry.has(r.id))throw new Error(`重复的 Agent ID:${r.id}`);this.agentRegistry.set(r.id,e)}get(e){return this.agentRegistry.get(e)}list(){return[...this.agentRegistry.values()]}},y=class{constructor(e,r){this.graph=e,this.config={...r}}async waitForUser(){return await new Promise((e,r)=>{this.resolveWait=e,this.rejectWait=r})}handle(e,r){try{let s={agentId:e.agentId,id:e.id,payload:r},n=this.graph.streamEvents(null,{...this.config,configurable:{...this.config.configurable,hitlResponse:s},subgraphs:!0,version:"v2"});this.resolveWait?.(n)}catch(s){this.rejectWait?.(s)}finally{this.resolveWait=void 0,this.rejectWait=void 0}}cancel(){this.rejectWait&&(this.rejectWait(new Error("用户已取消请求。")),this.resolveWait=void 0,this.rejectWait=void 0)}},ee=async t=>{try{return await(await A()).embedDocuments(t)}catch(e){throw console.error("生成嵌入向量失败:",e),e}},j=async(t,e)=>{let r=e.get(t);if(r)return r;let s=await ee([t]);return e.set(t,s[0]),s[0]};async function te(t,e,r,s){let n=`req-${Date.now()}`,a={type:"layerSearch",precomputedEmbedding:s?await j(t,s):void 0,requestId:n,minScore:r};return await new Promise(i=>{let o=d=>{d.data.requestId===n&&i(d.data.results.filter(item=>item.score>=r))};e.addEventListener("message",o,{once:!0}),e.postMessage(a)})}function re(t){let{worker:e}=t;return{async searchLayers({text:r,minScore:s,embeddingCache:n}){return await te(r,e,s,n)}}}var ne=async({combinedQuery:t,layerIds:e,embeddingsWorker:r,minScore:s,topResults:n,embeddingCache:a})=>{let i=`req-${Date.now()}`,o=a?await j(t,a):void 0,d={type:"fieldSearch",layerIdForFieldsSearch:e,precomputedEmbedding:o,requestId:i,minScore:s,topResults:n};return await new Promise(c=>{let u=h=>{if(h.data.requestId!==i)return;let g=h.data.results.map(({layerId:m,results:H})=>({layerId:m,results:H}));c(g)};r.addEventListener("message",u,{once:!0}),r.postMessage(d)})};function se(t){let{worker:e}=t;return{async searchFields({text:r,layerIds:s,minScore:n,topResults:a,embeddingCache:i}){return await ne({combinedQuery:r,layerIds:s,embeddingsWorker:e,minScore:n,topResults:a,embeddingCache:i})}}}var ae=async t=>{let e=await M.safeParseAsync(t);if(!e.success)throw new Error("嵌入向量响应校验失败,请重新生成向量。");return e.data},ie=(t,e)=>{let r=new Map,s=new Map;if(e.allLayers.forEach(n=>{n instanceof N&&s.set(n.id,n)}),t.length!==s.size)throw new Error("恢复注册表时图层数量不一致,请重新生成向量。");for(let n of t){let a=s.get(n.id);if(!a)throw new Error(`ID 为 ${n.id} 的图层未在原地图中找到,请重新生成向量。`);if(n.fields.length!==a.fields.length)throw new Error(`恢复注册表时字段数量不一致,图层 ID:${n.id},请重新生成向量。`);let i={name:n.name,title:n.title,description:n.description},o=new Map;for(let d of n.fields){let c=a.fieldsIndex.get(d.name);if(!c)throw new Error(`字段 ${d.name} 未在原图层中找到,图层 ID:${n.id},请重新生成向量。`);o.set(d.name,{name:d.name,alias:a.getFieldAlias(d.name)??d.alias,description:d.description,type:c.type||"unknown",valueType:c.valueType||"unknown",domain:a.getFieldDomain(d.name)??void 0})}r.set(n.id,{layerItem:i,fieldRegistry:o})}return r},oe=async t=>{try{return(await T(t,{responseType:"json"})).data}catch(e){throw new Error(`获取数据失败,地址:${t}: ${String(e)}`)}},de=async t=>{let e=t.map;if(!e?.portalItem)throw new Error("缺少 WebMap 的 Portal 资源。");let{resources:r}=await e.portalItem.fetchResources(),s=r.find(a=>a.resource.path==="embeddings-v01.json");if(!s?.resource.url)throw new Error("WebMap 的 Portal 资源中未找到 embeddings-v01.json。");let n=await oe(s.resource.url);return ae(n)},L=class t{constructor(){this.orchestratorReady=!1,this.chatHistory=[],this.priorSteps=[],this.sharedState={},this.agentRegistry=new w,this.activeRunId="",this.cancelledRunIds=new Set,this.streamEpoch=0}static async init(e){let r=new t;try{if(e.view?.map){await q.whenOnce(()=>e.view.ready);let s=await de(e.view),n=ie(s.layers,e.view.map);r.layersAndFieldsRegistry=n,r.embeddingsWorker=await U(s)}return e.agents?.forEach(s=>{r.agentRegistry.register(s)}),r.orchestratorReady=!0,r}catch(s){throw console.error("编排器初始化失败:",s),s}}async*ask(e){if(!this.orchestratorReady)throw new Error("编排器尚未就绪。");if(!this.agentRegistry.list().length)throw new Error("编排器未注册任何 Agent。");if(++this.streamEpoch,!e.trim())return;let r=f();this.activeRunId=r,this.activeAbortController=new AbortController,this.graph||(this.graph=Z().compile({checkpointer:new R}));let s=this.embeddingsWorker?re({worker:this.embeddingsWorker}):void 0,n=this.embeddingsWorker?se({worker:this.embeddingsWorker}):void 0,a=new Map,i={thread_id:r,hitlResponse:null,services:{layerSearch:s,fieldSearch:n,layersAndFieldsRegistry:this.layersAndFieldsRegistry,agentRegistry:this.agentRegistry,embeddingCache:a}},o={version:"v2",streamMode:"custom",signal:this.activeAbortController.signal,configurable:i,subgraphs:!0},d=this.graph?.streamEvents({agentExecutionContext:{userRequest:e,messages:this.chatHistory,priorSteps:this.priorSteps,sharedState:this.sharedState}},o),c=++this.streamEpoch;if(yield*this.pipeStream(d,c,r),this.isRunCancelled(r)){yield{runId:r,timestamp:Date.now(),type:"cancelled",reason:"user"};return}for(;;){if(this.isRunCancelled(r)){yield{runId:r,timestamp:Date.now(),type:"cancelled",reason:"user"};return}let h=(await this.graph.getState(o,{subgraphs:!0})).tasks.find(g=>g.interrupts.length>0)?.interrupts[0]?.value;if(!h)break;this.currentInterrupt=h,this.interruptHandler=new y(this.graph,o),yield{runId:r,timestamp:Date.now(),type:"interrupt",interrupt:h};try{let g=await this.interruptHandler.waitForUser(),m=++this.streamEpoch;yield*this.pipeStream(g,m,r)}catch(g){if(this.isRunCancelled(r)){yield{runId:r,timestamp:Date.now(),type:"cancelled",reason:"user"};return}if(g){yield{runId:r,timestamp:Date.now(),type:"error",error:{message:g?.message}};return}}}if(this.isRunCancelled(r)){yield{runId:r,timestamp:Date.now(),type:"cancelled",reason:"user"};return}let u=(await this.graph.getState(o,{subgraphs:!0})).values;if(this.isRunCancelled(r)){yield{runId:r,timestamp:Date.now(),type:"cancelled",reason:"user"};return}this.chatHistory=u.agentExecutionContext.messages.length?u.agentExecutionContext.messages:this.chatHistory,this.priorSteps=u.agentExecutionContext.priorSteps?.slice(-5)??[],this.sharedState=u.agentExecutionContext.sharedState??{},yield{runId:r,timestamp:Date.now(),type:"completed",result:{content:u.finalOutputMessage}}}newConversation(){this.chatHistory=[],this.priorSteps=[],this.sharedState={}}resumeInterrupt(e){if(!this.currentInterrupt||!this.interruptHandler)throw new Error("没有可恢复的待处理中断。");this.interruptHandler.handle(this.currentInterrupt,e)}cancelInterrupt(){this.interruptHandler&&this.interruptHandler.cancel()}cancel(){this.activeRunId&&(this.cancelledRunIds.add(this.activeRunId),this.activeAbortController?.abort(),++this.streamEpoch,this.interruptHandler?.cancel())}async*pipeStream(e,r,s){for await(let n of e){if(this.isRunCancelled(s)||r!==this.streamEpoch)break;n.event==="on_custom_event"&&n.name==="trace_message"?yield{runId:s,timestamp:Date.now(),type:"trace",data:n.data}:n.name==="graph_ux_suggestion"&&(yield{runId:s,timestamp:Date.now(),type:"ux-suggestion",suggestion:n.data})}}isRunCancelled(e){return this.cancelledRunIds.has(e)}dispose(){this.embeddingsWorker&&(this.embeddingsWorker.terminate(),this.embeddingsWorker=void 0),this.orchestratorReady=!1}};return{a:ee,b:L}},"identity/IdentityManager","portal/Portal","core/reactiveUtils","layers/FeatureLayer","request",a)
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{a as s,b as i}from"./P5M2HNJ7.js";import{c as r}from"./TOYQ22PR.js";function c(e,n){let t=s(e.el,e.referenceElement);if(t)return t;let o=r(e.el,"geoscene-assistant"),a=s(e.el,o?.referenceElement);if(a)return a;throw new Error(`${n}:未找到关联元素`)}function g(e,n){let t=c(e,n).view;if(!t)throw new Error(`${n}:关联元素没有视图`);return t}function m(e){return typeof e=="function"}function w(e){let n=r(e.el,"geoscene-assistant");if(n===void 0)throw new Error("geoscene-assistant-agent 必须放在 geoscene-assistant 元素内");return n.register({agent:e.agent,getContext:async()=>await e.getContext?.()??e.context??{}}),n}function f(e){let n=i(e.el,e.referenceElement);if(n)return n;let t=r(e.el,"geoscene-assistant");return s(e.el,t?.referenceElement)||null}function E(e){let n=f(e);return n?n.view:null}export{g as a,m as b,w as c,E as d};
@@ -0,0 +1,3 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import"./CFDTXKJ6.js";var o=`(function(){"use strict";const h=(a,r)=>{if(a.length!==r.length)throw new Error("向量长度必须一致");let c=0,t=0,e=0;for(let n=0;n<a.length;++n){const s=a[n],l=r[n];c+=s*l,t+=s*s,e+=l*l}const i=Math.sqrt(t*e);if(i===0)return 0;const m=c/i;return Math.max(-1,Math.min(1,m))},f=(a,r,c=.6)=>{const t=[],e=[...a];for(;t.length<r&&e.length>0;){let i=-1,m=-1/0;for(let n=0;n<e.length;n++){const s=e[n].score,l=t.length===0?0:Math.max(...t.map(o=>h(e[n].vector,o.vector))),d=c*s-(1-c)*l;d>m&&(m=d,i=n)}t.push(e[i]),e.splice(i,1)}return t.map(({name:i,score:m})=>({name:i,score:m}))};let p=[];const u=new Map,v=12,y=10,M=a=>{p=a.layers.map(r=>({id:r.id,vector:r.vector}))},E=a=>{u.clear();for(const r of a.layers){const c=r.fields.map(t=>({name:t.name,vector:t.vector}));u.set(r.id,c)}};globalThis.addEventListener("message",a=>{(async()=>{const{type:r,webmapEmbeddings:c,layerIdForFieldsSearch:t=[],requestId:e,precomputedEmbedding:i,minScore:m=0,topResults:n=v}=a.data;switch(r){case"generateEmbeddings":{c&&(M(c),E(c)),globalThis.postMessage("completed");break}case"layerSearch":{if(p.length>0)try{const s=p.map(o=>({id:o.id,vector:o.vector,score:h(i,o.vector)})),d=f(s.map(o=>({name:o.id,vector:o.vector,score:o.score})),y).map(({name:o,score:b})=>({id:o,score:b}));globalThis.postMessage({requestId:e,results:d})}catch(s){globalThis.postMessage({requestId:e,results:[],error:s instanceof Error?s.message:"相似度计算错误"})}else globalThis.postMessage({requestId:e,results:[],error:"图层向量尚未初始化"});break}case"fieldSearch":{if(t.length>0)try{const s=t.map(l=>{const d=u.get(l);if(!d)return{layerId:l,results:[]};const o=d.map(g=>({name:g.name,vector:g.vector,score:h(i,g.vector)})).filter(({score:g})=>g>=m),b=f(o,n);return{layerId:l,results:b}});globalThis.postMessage({requestId:e,results:s})}catch(s){globalThis.postMessage({requestId:e,results:[],error:s instanceof Error?s.message:"字段搜索计算错误"})}break}default:console.warn("未知消息类型:",r)}})()})})();
3
+ `,r=typeof self<"u"&&self.Blob&&new Blob(["(self.URL || self.webkitURL).revokeObjectURL(self.location.href);",o],{type:"text/javascript;charset=utf-8"});function a(t){let e;try{if(e=r&&(self.URL||self.webkitURL).createObjectURL(r),!e)throw"";let s=new Worker(e,{name:t?.name});return s.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),s}catch{return new Worker("data:text/javascript;charset=utf-8,"+encodeURIComponent(o),{name:t?.name})}}export{a as default};
@@ -0,0 +1,3 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{a as E}from"./46U2PGRW.js";import b from"./UDXMJNRF.js";import{a as I}from"./M7C6Y752.js";import{a as D}from"./GTXGIROA.js";import"./3Y723IJS.js";import a from"./PFW7KXCP.js";import{a as R}from"./P5M2HNJ7.js";import"./TOYQ22PR.js";import{g as $,h as c,k as C,l as P,n as d,t as _,u as y,v as T,x as k,z as A}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./KGYSBUFO.js";import"./PIUDMACH.js";import"./H3EEFM4A.js";import"./4ASZF5I2.js";import"./QH6TSBNI.js";import"./LXJWWOGK.js";import"./CFDTXKJ6.js";export default $geoscene.t(([N,{whenOnce:U,watch:B,when:V},j,q,,,H,{property:m,subclass:F},,{b:L}])=>{var G=$`:host{display:block;width:var(--geoscene-internal-panel-width, 100%);height:var(--geoscene-internal-expand-max-height, 100%);--calcite-panel-content-bottom-space: 0}.footer-container{display:flex;flex-direction:column;flex:1 1 0;gap:var(--calcite-spacing-md)}.content-container{display:flex;flex-direction:column;flex:1 1 0;min-height:0;position:relative;overflow:auto}.suggested-prompts-container{display:flex;justify-content:center;width:100%;background:var(--calcite-panel-background-color, var(--calcite-color-background))}.suggested-prompts{display:block;padding:var(--calcite-spacing-md);max-width:100%;box-sizing:border-box}.error-notice{padding:var(--calcite-spacing-sm)}.interrupt-waiting-message{font-style:italic;color:var(--calcite-color-text-2)}`;function S(o){return o.trim()?E.lexer(o).filter(t=>t.type!=="space").map(t=>E.parser([t])):[]}var f=class{constructor(){this._stableParts=[],this._stableText="",this._rawText=""}push(t){return this._rawText+=t,this._advanceStableBoundary(),this.getParts()}finalize(){let t=this._rawText.slice(this._stableText.length);return t.trim()&&(this._stableParts.push(...S(t)),this._stableText=this._rawText),this._stableParts}getParts(){let t=this._trimIncompleteTail(this._rawText.slice(this._stableText.length)),s=t.trim()?S(t):[];return[...this._stableParts,...s]}reset(){this._stableParts=[],this._stableText="",this._rawText=""}_advanceStableBoundary(){let t=this._rawText.slice(this._stableText.length),s=this._lastSafeBoundary(t);if(s<=0)return;let i=t.slice(0,s);this._stableParts.push(...S(i)),this._stableText+=i}_lastSafeBoundary(t){let s=t.split(`
3
+ `),i=!1,e=0,n=0;for(let r of s)/^\s*(```|~~~)/u.test(r)&&(i=!i),n+=r.length+1,r.trim()===""&&!i&&(e=n);return e<t.length?e:0}_trimIncompleteTail(t){let s=t.lastIndexOf("<");if(s!==-1&&!t.includes(">",s))return t.slice(0,s);let i=this._earliestUnclosedTag(t);if(i!==-1)return t.slice(0,i);let e=t.lastIndexOf("[");if(e!==-1){let n=t.slice(e);if(!/\[[^\]]*\]\([^)]*\)/u.test(n))return t.slice(0,e)}return t}_earliestUnclosedTag(t){let s=new Set(["br","img","hr","input","meta","link","area","base","col","embed","source","track","wbr"]),i=/<(\/?)([a-zA-Z][\w-]*)\b[^>]*?(\/?)>/gu,e=[];for(let n=i.exec(t);n;n=i.exec(t)){let[,r,a,l]=n,h=a.toLowerCase();if(!(s.has(h)||l==="/"))if(r==="/"){for(let g=e.length-1;g>=0;g--)if(e[g].name===h){e.splice(g);break}}else e.push({name:h,index:n.index})}return e.length?e[0].index:-1}};function W(o){let t=new f;return t.push(o),t.finalize()}var Y=async o=>await new Promise(t=>setTimeout(t,o));async function*Z(o,{chunkSize:t=15,delay:s=50}={}){let i=new f;for(let e=0;e<o.length;e+=t)yield i.push(o.slice(e,e+t)),await Y(s);yield i.finalize()}var J=Object.defineProperty,K=Object.getOwnPropertyDescriptor,u=(o,t,s,i)=>{for(var e=i>1?void 0:i?K(t,s):t,n=o.length-1,r;n>=0;n--)(r=o[n])&&(e=(i?r(t,s,e):r(e))||e);return i&&e&&J(t,s,e),e},O=o=>!o||typeof o!="object"?!1:o.name==="AbortError";async function*z(o,t,s,i,e=!1){if(e){if(i?.aborted){yield{type:"cancelled",log:s,runId:t};return}yield{type:"block-data",blockType:"text",data:{parts:W(o)},runId:t};return}for await(let n of Z(o)){if(i?.aborted){yield{type:"cancelled",log:s,runId:t};return}yield{type:"block-data",blockType:"text",data:{parts:n},runId:t}}}var p=class extends H{constructor(o){super(o),this.view=null,this.streamingDisabled=!1,this.loading=!1,this.processing=!1,this.processingStep=""}async load(){this._set("loading",!0);try{await this._initialize()}finally{this._set("loading",!1)}}destroy(){this.orchestrator?.dispose(),super.destroy()}async _initialize(){this.removeHandles(),await Promise.all([this.portal.load(),this.view?.when()]),this.view&&await U(()=>!this.view.updating),this._set("orchestrator",await L.init({agents:[...this.agents],view:this.view??void 0})),this.addHandles([B(()=>[this.view,this.agents],()=>{this._initialize()})])}clearChatHistory(){this.orchestrator?.newConversation()}async*ask(o,t){if(!this.orchestrator)throw new Error("编排器尚未初始化。");this._set("processing",!0),this._set("processingStep","");let s=[],i,e="pending";try{let n=this.orchestrator.ask(o);for await(let r of n)switch(e=r.runId,r.type){case"trace":{this._set("processingStep",r.data.text),s.push(r.data.text);break}case"completed":{this._set("processing",!1),this._set("processingStep","");let a=r.result,l=!!a.content.length,h=!!i?.length;if(!l&&!h){yield{type:"completed",error:"未收到响应。",log:s,runId:e};return}let g=a.content;if(yield{type:"block-start",blockType:"text",runId:e},yield*z(g,e,s,t,this.streamingDisabled),yield{type:"block-end",blockType:"text",runId:e},h)for(let v of i){if(t?.aborted){yield{type:"cancelled",log:s,runId:e};return}let{type:b,data:w}=v;if(yield{type:"block-start",blockType:b,runId:e},b==="text"){let M=typeof w?.content=="string"?w.content:"";yield*z(M,e,s,t,this.streamingDisabled)}else yield{type:"block-data",blockType:b,data:w,runId:e};yield{type:"block-end",blockType:b,runId:e}}yield{type:"completed",response:g,blocks:i,log:s,runId:e};return}case"ux-suggestion":{let a=r.suggestion;i=i?[...i,a]:[a];break}case"interrupt":{let{kind:a,message:l,metadata:h}=r.interrupt,g=Array.isArray(h)?h.filter(b=>typeof b=="string"):[],v=(()=>{switch(a){case"booleanChoice":return{type:"boolean-choice",message:l,options:g};case"singleSelection":return{type:"single-select",message:l,options:g};case"multipleSelection":return{type:"multi-select",message:l,options:g};case"textInput":return{type:"text-input",message:l};default:return{type:a,message:l,options:g}}})();this._set("processingStep","等待用户输入……"),yield{type:"interrupt",payload:v,runId:e};break}case"cancelled":{yield{type:"cancelled",log:s,runId:e};return}case"error":{if(t?.aborted||O(r.error)){yield{type:"cancelled",log:s,runId:e};return}yield{type:"completed",error:r.error.message,log:s,runId:e};return}default:{console.warn("未知事件类型:",r);break}}}catch(n){if(t?.aborted||O(n)){yield{type:"cancelled",log:s,runId:e};return}console.warn("消息处理出错:",n),yield{type:"completed",error:"处理消息时发生错误。",log:s,runId:"error"};return}finally{this._set("processing",!1)}}cancel(){this.orchestrator?.cancel()}};u([m({readOnly:!0})],p.prototype,"orchestrator",2);u([m()],p.prototype,"agents",2);u([m()],p.prototype,"portal",2);u([m()],p.prototype,"view",2);u([m()],p.prototype,"streamingDisabled",2);u([m({readOnly:!0})],p.prototype,"loading",2);u([m({readOnly:!0})],p.prototype,"processing",2);u([m({readOnly:!0})],p.prototype,"processingStep",2);p=u([F("OrchestratorController")],p);var Q="WebMap 的 Portal 资源中未找到 embeddings-v01.json。",X="未找到此 WebMap 的嵌入向量。",tt="https://doc.geoscene.cn/javascript/5.1/agentic-apps/ai-webmap-setup/#embeddings",x=class extends T{constructor(){super(...arguments),this._messages=D({blocking:!0}),this.#t=_(),this.#l=_(),this.#s=_(),this.#e=null,this.#r=new Map,this.#i=j.getDefault(),this.#a=t=>{t.stopPropagation(),this.cancelInterrupt()},this.#n=t=>{t.stopPropagation();let s=t.detail;this.submitInterrupt(s)},this.#c=t=>{t.stopPropagation(),this.keepSuggestedPrompts||(this.suggestedPrompts=[]);let s=t.detail;this._inputValue="",this.geosceneSubmit.emit(s),this.submitMessage(s)},this.#h=t=>{if(this._canceling=!0,t.stopPropagation(),this.geosceneCancel.emit(),this._interrupt){this.orchestrator?.cancelInterrupt(),this._interrupt=null;return}this._orchestratorController?.cancel(),this.#e?.abort(),this.#e=null},this.#g=t=>{t.stopPropagation();let s=t.detail;this.geosceneFeedback.emit(s)},this.#d=t=>{t.stopPropagation();let s=t.detail;this._inputValue=s.prompt,this.geoscenePromptSelect.emit(s)},this.#p=t=>{this.geosceneSlottableRequest.emit(t.detail)},this._orchestratorController=null,this._interrupt=null,this._interruptDetails=[],this._error=null,this._inputValue="",this._isAnswering=!1,this._canceling=!1,this.messages=new N([]),this.referenceElement=null,this.suggestedPrompts=[],this.feedbackEnabled=!1,this.keepSuggestedPrompts=!1,this.streamingDisabled=!1,this.logEnabled=!1,this.copyEnabled=!1,this.voiceInputEnabled=!1,this.readAloudEnabled=!1,this.assistantAvatarEnabled=!1,this.geosceneCancel=d(),this.geosceneError=d(),this.geosceneFeedback=d(),this.geosceneInterrupt=d(),this.geosceneInterruptCancel=d(),this.geosceneInterruptSubmit=d(),this.geoscenePromptSelect=d(),this.geosceneReady=d(),this.geosceneSubmit=d(),this.geosceneSlottableRequest=d({bubbles:!1,composed:!1}),this.geosceneResponse=d()}static{this.properties={_orchestratorController:16,_interrupt:16,_interruptDetails:16,_error:16,_inputValue:16,_isAnswering:16,_signedInUserId:16,_canceling:16,_isSignedIn:16,_user:16,awaitingResponse:32,awaitingResponseStep:32,interrupt:32,messages:0,orchestrator:32,entryMessage:1,heading:1,description:1,referenceElement:1,suggestedPrompts:0,feedbackEnabled:5,keepSuggestedPrompts:5,streamingDisabled:5,logEnabled:5,copyEnabled:5,voiceInputEnabled:5,readAloudEnabled:5,assistantAvatarEnabled:5}}static{this.styles=G}#t;#l;#s;#e;#r;#i;#a;#n;#c;#h;#g;#d;#p;async#o(){try{let t=R(this.el,this.referenceElement);await t?.componentOnReady();let s=[...this.#r.values()];return s.length?(this._orchestratorController?.destroy(),this._orchestratorController=new p({agents:s,portal:this.#i,streamingDisabled:this.streamingDisabled,view:t?.view}),await this._orchestratorController.load(),!0):(this._error="未找到 Agent。",!1)}catch(t){return this._error=t?.message??"初始化编排器时出错。",P(this)(t),!1}}get _isSignedIn(){return!!this.#i?.user||!!this._signedInUserId}get _user(){return this.#i?.user?.fullName||this.#i?.user?.username}get awaitingResponse(){return this._orchestratorController?.processing??!1}get awaitingResponseStep(){return this._orchestratorController?.processingStep??""}get interrupt(){return this._interrupt}get orchestrator(){return this._orchestratorController?.orchestrator}async clearChatHistory(){this._reset(),this._orchestratorController?.clearChatHistory()}cancelInterrupt(){this.geosceneInterruptCancel.emit(),this.orchestrator?.cancelInterrupt(),this._interrupt=null}register(t){this.#r.set(t.agent.id,t),this._orchestratorController&&this.#o()}unregister(t){this.#r.delete(t),this._orchestratorController&&this.#o()}async submitMessage(t){let s=t.trim();if(!s||(this.messages.push({id:Date.now().toString(),role:"user",content:s}),!this._orchestratorController))return;this.#e=new AbortController,this._orchestratorController.streamingDisabled=this.streamingDisabled;let i=this._orchestratorController.ask(s,this.#e?.signal);for await(let e of i){let n=e.runId,r=this.messages.at(-1);switch(e.type){case"block-start":{this._isAnswering=!0;let a={type:e.blockType,isPending:!0};if(r?.role==="assistant"&&r.id===n){let l=[...r.blocks??[],a];this.messages.splice(-1,1,{...r,blocks:l})}else this.messages.push({role:"assistant",blocks:[a],id:n,isStreaming:!0,interrupts:this._interruptDetails}),this._interruptDetails=[];break}case"block-data":{if(r?.role!=="assistant"||r?.id!==n)break;let a=[...r.blocks??[]],l=a[a.length-1],{blockType:h,data:g}=e;if(l?.type!==h||!l.isPending)break;h==="text"?a[a.length-1]={...l,data:{...l.data,parts:g?.parts}}:a[a.length-1]={...l,data:{...l.data,...g??{}}},this.messages.splice(-1,1,{...r,blocks:a});break}case"block-end":{if(r?.role!=="assistant"||r?.id!==n)break;let a=[...r.blocks??[]],l=a[a.length-1];if(l?.type!==e.blockType||!l.isPending)break;let h=l;a[a.length-1]={...h,data:{...h.data},isPending:!1},this.messages.splice(-1,1,{...r,blocks:a});break}case"completed":e.error?(this.messages.push({role:"assistant",log:e.log,error:e.error,id:n,interrupts:this._interruptDetails}),this._interruptDetails=[]):r?.role==="assistant"&&r.id===n&&this.messages.splice(-1,1,{...r,content:e.response,blocks:r.blocks?.map(a=>({...a,data:{...a.data},isPending:!1}))??[],isStreaming:!1,log:e.log}),this._isAnswering=!1,this.#e=null,this._canceling=!1;break;case"interrupt":this._interrupt={...e.payload,id:n},this.geosceneInterrupt.emit(this._interrupt);break;case"cancelled":r?.role==="assistant"&&r.id===n?this.messages.splice(-1,1,{...r,blocks:r.blocks?.filter(a=>a.type==="text"||!a.isPending)??[],isStreaming:!1,log:e.log,error:"(用户已停止)"}):(this.messages.push({role:"assistant",log:e.log,error:"(用户已停止)",id:n,interrupts:this._interruptDetails}),this._interruptDetails=[]),this._isAnswering=!1,this.#e=null,this._canceling=!1;break}}}submitInterrupt(t){this.geosceneInterruptSubmit.emit(t),this._interrupt&&(this._interruptDetails=[...this._interruptDetails,{interrupt:this._interrupt,response:t}]),this.orchestrator?.resumeInterrupt(t),this._interrupt=null}load(){this.manager.onLifecycle(this._reset.bind(this))}loaded(){this.manager.onLifecycle(()=>{this.#t.value?.addEventListener("geoscenePromptSelect",this.#d),this.#t.value?.addEventListener("geosceneSubmit",this.#c),this.#t.value?.addEventListener("geosceneCancel",this.#h),this.#t.value?.addEventListener("geosceneFeedback",this.#g);let t=V(()=>!!this._interrupt&&!!this.#s.value,()=>{let i=this.#s.value;i.removeEventListener("geosceneSubmit",this.#n),i.removeEventListener("geosceneCancel",this.#a),i.addEventListener("geosceneSubmit",this.#n,{once:!0}),i.addEventListener("geosceneCancel",this.#a,{once:!0})}),s=this.messages.on("after-add",i=>{let e=i.item;e.role==="assistant"&&(e.error||e.content)&&this.geosceneResponse.emit(e)});return queueMicrotask(()=>{this.#o().then(i=>{i?this.geosceneReady.emit():this._error&&this.geosceneError.emit(new Error(this._error))})}),()=>{t.remove(),s.remove(),this.#t.value?.removeEventListener("geoscenePromptSelect",this.#d),this.#s.value?.removeEventListener("geosceneSubmit",this.#n),this.#s.value?.removeEventListener("geosceneCancel",this.#a),this.#t.value?.removeEventListener("geosceneSubmit",this.#c),this.#t.value?.removeEventListener("geosceneCancel",this.#h),this.#t.value?.removeEventListener("geosceneFeedback",this.#g),this._orchestratorController?.destroy(),this._orchestratorController=null}})}_reset(){this._orchestratorController?.cancel(),this.#e?.abort(),this._interrupt=null,this.messages.removeAll(),this._error=null,this._inputValue="",this._signedInUserId=void 0}_renderEntryMessage(){return this._isSignedIn?this._error?this._renderErrorNotice():this.entryMessage?this.messages.length>0?null:c`<calcite-notice open kind=brand closable icon width=full><div slot=message>${this.entryMessage}</div></calcite-notice>`:c`<slot name=entry-message></slot>`:this._renderSignInNotice()}_renderSignInNotice(){let t=this.#i;return c`<calcite-notice slot=entry-message open kind=brand icon width=full><div slot=message>请先登录,再使用地图助手对话。</div>${t?c`<calcite-link slot=link @click=${async()=>{try{let s=await q.getCredential(`${t.url}/sharing`);this._signedInUserId=s.userId,this._error=null,this.requestUpdate(),await this.#o()?this.geosceneReady.emit():this._error&&this.geosceneError.emit(new Error(this._error))}catch(s){this._error=s?.message??"登录出错。",this.geosceneError.emit(new Error(this._error)),C("error",this,"登录出错:",{detail:{error:s}})}}} target=_blank title="登录 GeoScene Online">登录</calcite-link>`:c`<div slot=link>没有可用的 Portal 信息</div>`}</calcite-notice>`}_renderErrorNotice(){return this._error?c`<calcite-notice slot=entry-message open kind=brand icon width=full>${this._error===Q?c`<div slot=message>${X}</div><calcite-link slot=link .href=${tt} target=_blank title="了解 WebMap 嵌入向量">了解更多</calcite-link>`:c`<div slot=message>${this._error}</div>`}</calcite-notice>`:null}render(){return c`<calcite-panel .loading=${!this._orchestratorController&&!this._error||this._orchestratorController?.loading} .heading=${this.heading??this._messages.assistantLabel} .description=${this.description} ${y(this.#t)}><slot name=header-actions-start slot=header-actions-start></slot><slot name=header-actions-end slot=header-actions-end></slot><div class="content-container"><geoscene-assistant-chat .loading=${this.awaitingResponse} .messages=${this.messages} .interrupt=${this._interrupt}><slot name=message-starter slot=message-starter></slot><slot name=messages slot=messages>${this.messages.map(t=>t.role==="assistant"?c`<geoscene-assistant-message .message=${t} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled} @geosceneSlottableRequest=${this.#p} .assistantAvatarEnabled=${this.assistantAvatarEnabled}>${t.blocks?.map((s,i)=>c`<slot name=${I(t.id,i)??k} slot=${I(t.id,i)??k}><geoscene-assistant-message-block .block=${s}></geoscene-assistant-message-block></slot>`)}</geoscene-assistant-message>`:c`<geoscene-assistant-user-message .message=${t} .user=${this._user}></geoscene-assistant-user-message>`)}</slot>${this._interrupt?c`<div slot=message-loading><div class="interrupt-waiting-message">等待用户输入……</div></div>`:c`<slot name=message-loading slot=message-loading><geoscene-assistant-message-loading .loading=${this.awaitingResponse} .loadingMessage=${this.awaitingResponseStep} .assistantAvatarEnabled=${this.assistantAvatarEnabled} .interrupts=${this._interruptDetails}></geoscene-assistant-message-loading></slot>`}</geoscene-assistant-chat></div>${this._interrupt?c`<slot name=interrupt><geoscene-assistant-interrupt slot=content-bottom .type=${this._interrupt.type} .message=${this._interrupt.message} .options=${this._interrupt.options} ${y(this.#s)}></geoscene-assistant-interrupt></slot>`:this.suggestedPrompts?.length?c`<div class="suggested-prompts-container" slot=content-bottom><geoscene-assistant-suggested-prompts class="suggested-prompts" .prompts=${this.suggestedPrompts}></geoscene-assistant-suggested-prompts></div>`:null}<div class="footer-container" slot=footer>${this._renderEntryMessage()}<slot name=chat-entry><geoscene-assistant-chat-entry .awaitingResponse=${this.awaitingResponse||this._isAnswering} .inputValue=${this._inputValue} .messages=${this.messages} .voiceInputEnabled=${this.voiceInputEnabled} .disabled=${this._canceling||!this._isSignedIn||!!this._interrupt} ${y(this.#l)}><slot name=entry-actions-start slot=entry-actions-start></slot><slot name=entry-actions-end slot=entry-actions-end><calcite-button .iconStart=${this.awaitingResponse||this._isAnswering?"circle-stop":"send"} @click=${()=>{this.#l.value?.submitMessage()}} round>${this.awaitingResponse||this._isAnswering?this._messages.stopButtonLabel:this._messages.askButtonLabel}</calcite-button></slot></geoscene-assistant-chat-entry></slot><slot name=footer-content></slot></div></calcite-panel>`}};A("geoscene-assistant",x);return x},"core/Collection","core/reactiveUtils","portal/Portal","identity/IdentityManager","config","layers/FeatureLayer","core/Accessor","core/accessorSupport/decorators",a,b)
@@ -0,0 +1,22 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import"./CFDTXKJ6.js";var e=`## 图中记录的绑定参数
3
+
4
+ 当前链接图只包含数据库中的部分实体和关系。这些记录的字符串标识符可通过以下绑定参数用于 Cypher 查询:
5
+
6
+ - $entityIds
7
+ - $relationshipIds
8
+
9
+ 只有用户明确要求将数据范围限制到“当前链接图”“我的链接图”等已有记录时,才使用这些参数过滤。
10
+
11
+ ### 示例开始
12
+
13
+ 用户请求:“将与本链接图中人员相连的记录添加到链接图”。
14
+ 上下文:数据模型有 Person 实体。
15
+ 预期结果:MATCH (n:Person)-[r]->(m) WHERE id(n) IN $entityIds return r, m
16
+
17
+ 用户请求:“将全部供应商添加到链接图”。
18
+ 上下文:数据模型有 Supplier 实体。
19
+ 预期结果:MATCH (s:Supplier) RETURN s
20
+
21
+ ### 示例结束
22
+ `;export{e as default};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{g as e,h as t,v as r,z as a}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";var p=e`.interrupt-details ul{margin-block:var(--calcite-spacing-xxs) 0;padding-inline-start:var(--calcite-spacing-xxl)}.interrupt-details li{margin-block:0}.interrupts-container{display:flex;flex-direction:column;gap:var(--calcite-spacing-lg)}`,s=class extends r{static{this.properties={interrupts:0}}static{this.styles=p}render(){return this.interrupts?.length?t`<calcite-block collapsible expanded heading="助手提问"><div class="interrupts-container">${this.interrupts?.map(({interrupt:l,response:i})=>t`<div class="interrupt-details"><div>问题:${l.message}</div><ul>${Array.isArray(i)?i.length?i.map(n=>t`<li>${n}</li>`):t`<li>(已跳过问题)</li>`:t`<li>${i!=null?String(i):"(已跳过问题)"}</li>`}</ul></div>`)}</div></calcite-block>`:null}};a("geoscene-assistant-interrupt-preview",s);export{s as GeosceneAssistantInterruptPreview};
@@ -0,0 +1,2 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import{wc as u}from"./4ASZF5I2.js";import"./LXJWWOGK.js";import"./CFDTXKJ6.js";export default $geoscene.t(([d,{property:a,subclass:h}])=>{var l=Object.defineProperty,m=Object.getOwnPropertyDescriptor,s=(e,t,n,r)=>{for(var o=r>1?void 0:r?m(t,n):t,c=e.length-1,p;c>=0;c--)(p=e[c])&&(o=(r?p(t,n,o):p(o))||o);return r&&o&&l(t,n,o),o},i=class extends d{constructor(e){super(e),this.resultMode="continue",this.middlewares=[]}getTool(){return u(this._executeWithMiddlewares.bind(this),{name:this.name,description:this.description,returnDirect:this.resultMode==="terminal",schema:this.inputSchema})}async _executeWithMiddlewares(e,t){let n=async r=>{let o=await this.execute(r.input,r.config);return this._validateOutput(o)};return await this.middlewares.reduceRight((r,o)=>async c=>await o.handler(c,r),n)({config:t,input:e,tool:this,toolCallId:f(t)})}_validateOutput(e){if(!this.outputSchema)return e;let t=this.outputSchema.safeParse(e);if(!t.success)throw new Error(`FunctionTool 输出结构校验失败:${t.error.message}`);return t.data}};s([a()],i.prototype,"name",2);s([a()],i.prototype,"description",2);s([a()],i.prototype,"resultMode",2);s([a()],i.prototype,"inputSchema",2);s([a()],i.prototype,"outputSchema",2);s([a()],i.prototype,"middlewares",2);s([a()],i.prototype,"execute",2);i=s([h("FunctionTool")],i);function f(e){let t=e?.toolCall;return typeof t?.id=="string"?t.id:void 0}return i},"core/Accessor","core/accessorSupport/decorators")
@@ -0,0 +1,66 @@
1
+ /* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
2
+ import"./CFDTXKJ6.js";var e=`## 任务:汇总地理要素查询结果
3
+
4
+ 以下是多个 GeoScene 要素图层返回的要素:
5
+ {queryResponse}
6
+
7
+ ## 输入
8
+
9
+ 分配的任务:
10
+ {assignedTask}
11
+
12
+ 用户最新请求:
13
+ {userRequest}
14
+
15
+ 之前的步骤:
16
+ {priorSteps}
17
+
18
+ 以分配的任务作为本次查询的主要指令。
19
+ 需要时,将用户最新请求作为辅助上下文。
20
+ 只有任务明确依赖之前结果时,才参考之前的步骤。
21
+ 只有理解对话指代确有必要时,才使用聊天历史,不得覆盖分配的任务。
22
+
23
+ ### 目标
24
+
25
+ 1. 如果任务要求具体计算,例如平均值、总和、数量、最小值、最大值,用一句简洁的话回答,并包含数值结果。
26
+ - 示例:“平均价格为 $4.00。”
27
+ - 不要只返回裸数字,例如 \`4\`。
28
+ - 如果 \`queryResponse\` 中已有数值,例如 \`details.value\` 或 \`summary\`,必须原样复制。
29
+ - 不要重新格式化数值、日期或时间:
30
+ - 不要增删数字分组逗号。
31
+ - 不要修改小数、四舍五入或改变数值类型、文本。
32
+ - 不要修改日期时间格式、时区标记、分隔符或精度。
33
+
34
+ 2. 如果问题较概括,或涉及属性各异的多个要素,最多用2至3句话简要说明关键规律或发现。
35
+ 3. 可以按图层分别回答,也可以根据问题整体汇总。
36
+ 4. 不要冗长。
37
+ 5. 使用 \`geometryFilter\` 时,不要假设几何条件中引用的要素,例如 "ApplicationNumber = 'XYZ'",一定出现在结果里;它可能只是空间参照对象。
38
+ 只描述实际找到的内容,不要把用于搜索的对象当作结果。
39
+ 6. 如果没有返回要素 \`attributes\`,但有 \`totalCount\`,应认为空间过滤已正确应用。无需强调未返回子集,直接根据数量和已有上下文汇总。
40
+ 7. 不要建议导出结果等工具无法执行的操作。
41
+ 8. 所有回答使用适合聊天界面的 Markdown:
42
+ - 列表使用项目符号,并使用换行(\\n)和适当格式。
43
+ - 只有有助于理解时才使用加粗等强调,保持简洁可读。
44
+ - 多个要素共享相同字段等适合行列呈现的结果,使用 Markdown 表格。
45
+ - 表格必须包含表头行和分隔行,例如 \`| Column |\` 和 \`| --- |\`。
46
+ - 不要用对齐的纯文本、类似 CSV 的内容或代码块代替表格。
47
+ 9. 不要说“我无法修改地图”“我无法高亮要素”,也不要建议用户手动执行 WHERE 子句。之后有单独流程自动处理地图可视化,你只负责汇总查询返回的数据。
48
+
49
+ 所有情况下:
50
+ - 关注显著属性值、共同点、差异和趋势。
51
+ - 要素列表为空或无有效内容时,应明确说明。
52
+ - 只使用查询结果已有字段,不要猜测。
53
+
54
+ ### 严格输出要求
55
+
56
+ - 不要追问。
57
+ - 不要提供额外操作或建议。
58
+ - 不要解释接下来还能做什么。
59
+ - 不要添加寒暄或对话套话。
60
+ - 不要输出所需摘要或数值答案之外的内容。
61
+ - 摘要结束后立即停止。
62
+ - 不要用“找到”“以下是”“结果显示”等开场语。
63
+ - 不要复述任务或用户问题。
64
+ - 使用 Markdown。
65
+ - 表格数据必须输出有效的 Markdown 表格。
66
+ `;export{e as default};