@geoscene/ai-components 0.0.0-stage → 5.1.14
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.
- package/LICENSE.md +18 -0
- package/README.md +2 -3
- package/dist/agent-utils/BaseAgent.d.ts +90 -0
- package/dist/agent-utils/BaseAgent.js +87 -0
- package/dist/agent-utils/FunctionAgent.d.ts +64 -0
- package/dist/agent-utils/FunctionAgent.js +98 -0
- package/dist/agent-utils/LLMAgent.d.ts +65 -0
- package/dist/agent-utils/LLMAgent.js +140 -0
- package/dist/agent-utils/WorkflowAgent.d.ts +44 -0
- package/dist/agent-utils/WorkflowAgent.js +70 -0
- package/dist/agent-utils/index.d.ts +177 -0
- package/dist/agent-utils/index.js +167 -0
- package/dist/agent-utils/middlewares/humanInTheLoop.d.ts +152 -0
- package/dist/agent-utils/middlewares/humanInTheLoop.js +94 -0
- package/dist/agent-utils/middlewares/middleware.d.ts +25 -0
- package/dist/agent-utils/middlewares/middleware.js +44 -0
- package/dist/agent-utils/middlewares/trace.d.ts +27 -0
- package/dist/agent-utils/middlewares/trace.js +42 -0
- package/dist/agent-utils/middlewares/types.d.ts +123 -0
- package/dist/agent-utils/middlewares/types.js +1 -0
- package/dist/agent-utils/tools/FunctionTool.d.ts +127 -0
- package/dist/agent-utils/tools/FunctionTool.js +80 -0
- package/dist/agent-utils/types.d.ts +181 -0
- package/dist/agent-utils/workflows/BaseWorkflow.d.ts +87 -0
- package/dist/agent-utils/workflows/ConditionalWorkflow.d.ts +72 -0
- package/dist/agent-utils/workflows/ConditionalWorkflow.js +61 -0
- package/dist/agent-utils/workflows/LoopWorkflow.d.ts +58 -0
- package/dist/agent-utils/workflows/LoopWorkflow.js +56 -0
- package/dist/agent-utils/workflows/ParallelWorkflow.d.ts +68 -0
- package/dist/agent-utils/workflows/ParallelWorkflow.js +129 -0
- package/dist/agent-utils/workflows/RouterWorkflow.d.ts +63 -0
- package/dist/agent-utils/workflows/RouterWorkflow.js +75 -0
- package/dist/agent-utils/workflows/SequentialWorkflow.d.ts +56 -0
- package/dist/agent-utils/workflows/SequentialWorkflow.js +69 -0
- package/dist/agent-utils/workflows/SwitchWorkflow.d.ts +74 -0
- package/dist/agent-utils/workflows/SwitchWorkflow.js +84 -0
- package/dist/assets/embeddings.worker-k9_Ou679.js +1 -0
- package/dist/cdn/22TUPT3D.js +2 -0
- package/dist/cdn/27BBMHFA.js +3 -0
- package/dist/cdn/2FYXUV7O.js +30 -0
- package/dist/cdn/3Y723IJS.js +2 -0
- package/dist/cdn/45POUVZK.js +2 -0
- package/dist/cdn/46U2PGRW.js +65 -0
- package/dist/cdn/4ASZF5I2.js +181 -0
- package/dist/cdn/4BA4OUWC.js +101 -0
- package/dist/cdn/4EALV6QJ.js +2 -0
- package/dist/cdn/53Z3R4OY.js +95 -0
- package/dist/cdn/5RQUSM3T.js +132 -0
- package/dist/cdn/6FEB6XYK.js +2 -0
- package/dist/cdn/6TB6FVGF.js +9 -0
- package/dist/cdn/72TH3ONI.js +2 -0
- package/dist/cdn/77GAVZIK.js +62 -0
- package/dist/cdn/7CCULIWM.js +2 -0
- package/dist/cdn/7WSTR3WA.js +2 -0
- package/dist/cdn/AJKWCXDA.js +46 -0
- package/dist/cdn/AXOPGQGZ.js +2 -0
- package/dist/cdn/B35MHQJD.js +2 -0
- package/dist/cdn/BUTKUPXN.js +33 -0
- package/dist/cdn/CFDTXKJ6.js +2 -0
- package/dist/cdn/CU2TRUZQ.js +93 -0
- package/dist/cdn/D3KUKNJ7.js +11 -0
- package/dist/cdn/DHGNGMNJ.js +2 -0
- package/dist/cdn/DKNDDDWM.js +2 -0
- package/dist/cdn/ESRKMM6P.js +2 -0
- package/dist/cdn/FFXK76K7.js +2 -0
- package/dist/cdn/FYNHAVHL.js +2 -0
- package/dist/cdn/G7XK3XOR.js +77 -0
- package/dist/cdn/GHNP3LDR.js +2 -0
- package/dist/cdn/GI2NZ45U.js +4 -0
- package/dist/cdn/GTXGIROA.js +2 -0
- package/dist/cdn/H3EEFM4A.js +179 -0
- package/dist/cdn/HCD4CDWZ.js +2 -0
- package/dist/cdn/HJGF7W5O.js +35 -0
- package/dist/cdn/HK4HSYKG.js +2 -0
- package/dist/cdn/I55TMNNP.js +2 -0
- package/dist/cdn/ILGFFHXZ.js +2 -0
- package/dist/cdn/INJ2KWHS.js +2 -0
- package/dist/cdn/KBFL7LCS.js +2 -0
- package/dist/cdn/KGYSBUFO.js +9 -0
- package/dist/cdn/KLSCVMLN.js +13 -0
- package/dist/cdn/L6GVMINQ.js +2 -0
- package/dist/cdn/LTPDBXQ7.js +6 -0
- package/dist/cdn/LUY7QCZ3.js +2 -0
- package/dist/cdn/LXJWWOGK.js +66 -0
- package/dist/cdn/M7C6Y752.js +2 -0
- package/dist/cdn/MFZCTEAG.js +2 -0
- package/dist/cdn/MQ7QXIOW.js +52 -0
- package/dist/cdn/N2SKXRLK.js +65 -0
- package/dist/cdn/N5XXTTDR.js +2 -0
- package/dist/cdn/NHDPNQXA.js +36 -0
- package/dist/cdn/NMWLJECU.js +109 -0
- package/dist/cdn/OBDCCGVH.js +2 -0
- package/dist/cdn/P5M2HNJ7.js +2 -0
- package/dist/cdn/PFW7KXCP.js +48 -0
- package/dist/cdn/PIUDMACH.js +56 -0
- package/dist/cdn/PKH5BECA.js +2 -0
- package/dist/cdn/PTKZXFXB.js +27 -0
- package/dist/cdn/Q7FTL7JO.js +2 -0
- package/dist/cdn/QH6TSBNI.js +2 -0
- package/dist/cdn/QZXQIJSW.js +2 -0
- package/dist/cdn/TFPBGM6P.js +2 -0
- package/dist/cdn/THLZTO23.js +12 -0
- package/dist/cdn/TIXCHLEN.js +121 -0
- package/dist/cdn/TOYQ22PR.js +2 -0
- package/dist/cdn/U72SSJEL.js +2 -0
- package/dist/cdn/UDXMJNRF.js +3 -0
- package/dist/cdn/UE3CP46P.js +2 -0
- package/dist/cdn/URYKQKFE.js +3 -0
- package/dist/cdn/VBS2ZXKT.js +3 -0
- package/dist/cdn/VDAF255D.js +22 -0
- package/dist/cdn/VG7HRDJX.js +2 -0
- package/dist/cdn/VPZHLYPA.js +2 -0
- package/dist/cdn/VWMJ7HIK.js +66 -0
- package/dist/cdn/WNJM5TET.js +2 -0
- package/dist/cdn/XTEMZD4A.js +2 -0
- package/dist/cdn/Y5GGIKKC.js +2 -0
- package/dist/cdn/YULWPVJ3.js +2 -0
- package/dist/cdn/YURWID37.js +2 -0
- package/dist/cdn/ZDJM4RRH.js +2 -0
- package/dist/cdn/ZGUVZMYR.js +157 -0
- package/dist/cdn/agent-utils/index.js +2 -0
- package/dist/cdn/agent-utils/middlewares/humanInTheLoop.js +3 -0
- package/dist/cdn/agent-utils/middlewares/middleware.js +2 -0
- package/dist/cdn/agent-utils/middlewares/trace.js +2 -0
- package/dist/cdn/assets/assistant/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant-chat-entry/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant-interrupt/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant-message-feedback/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant-message-footer/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant-message-read-aloud/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ar.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.bg.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.bs.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ca.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.cs.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.da.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.de.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.el.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.en.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.es.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.et.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.fi.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.fr.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.he.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.hr.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.hu.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.id.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.it.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ja.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ko.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.lt.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.lv.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.nl.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.no.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.pl.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.pt-BR.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.pt-PT.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ro.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.ru.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sk.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sl.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sr.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.sv.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.th.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.tr.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.uk.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.vi.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.zh-CN.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.zh-HK.json +1 -0
- package/dist/cdn/assets/assistant-suggested-prompts/t9n/messages.zh-TW.json +1 -0
- package/dist/cdn/index.js +2 -0
- package/dist/cdn/main.css +1 -0
- package/dist/chunks/BaseWorkflow.js +107 -0
- package/dist/chunks/adapter.js +3148 -0
- package/dist/chunks/converterUtils.js +124 -0
- package/dist/chunks/dataExplorationGraph.js +319 -0
- package/dist/chunks/data_explore_filter_prompt.js +112 -0
- package/dist/chunks/data_explore_query_prompt.js +135 -0
- package/dist/chunks/embeddings.worker.js +25 -0
- package/dist/chunks/field_descriptions_prompt.js +80 -0
- package/dist/chunks/generateLayerDescriptions.js +477 -0
- package/dist/chunks/geosceneKnowledgeGraph.js +221 -0
- package/dist/chunks/geoscene_knowledge_current_lc_context.js +25 -0
- package/dist/chunks/geoscene_knowledge_current_map_context.js +36 -0
- package/dist/chunks/geoscene_knowledge_cypher_query_prompt.js +96 -0
- package/dist/chunks/geoscene_knowledge_lucene_generation_prompt.js +98 -0
- package/dist/chunks/geoscene_knowledge_summarize_result_prompt.js +104 -0
- package/dist/chunks/geoscene_knowledge_tool_prompt.js +30 -0
- package/dist/chunks/graph.js +86 -0
- package/dist/chunks/helpGraph.js +117 -0
- package/dist/chunks/help_prompt.js +68 -0
- package/dist/chunks/index.js +11 -0
- package/dist/chunks/intent_prompt.js +124 -0
- package/dist/chunks/layerStylingGraph.js +190 -0
- package/dist/chunks/layer_descriptions_prompt.js +55 -0
- package/dist/chunks/layer_styling_prompt.js +65 -0
- package/dist/chunks/navigationGraph.js +265 -0
- package/dist/chunks/navigation_intent_prompt.js +49 -0
- package/dist/chunks/navigation_tool_prompt.js +38 -0
- package/dist/chunks/orchestrator.js +569 -0
- package/dist/chunks/runtime.js +15 -0
- package/dist/chunks/slottableRequestUtils.js +7 -0
- package/dist/chunks/state.js +71 -0
- package/dist/chunks/summarize_query_response_prompt.js +69 -0
- package/dist/chunks/toolCallResponse.js +32 -0
- package/dist/chunks/useT9n.js +7 -0
- package/dist/chunks/utils.js +53 -0
- package/dist/chunks/utils2.js +47 -0
- package/dist/chunks/utils3.js +16 -0
- package/dist/components/geoscene-assistant/customElement.d.ts +541 -0
- package/dist/components/geoscene-assistant/customElement.js +562 -0
- package/dist/components/geoscene-assistant/index.d.ts +1 -0
- package/dist/components/geoscene-assistant/index.js +13 -0
- package/dist/components/geoscene-assistant/types.d.ts +147 -0
- package/dist/components/geoscene-assistant-agent/customElement.d.ts +141 -0
- package/dist/components/geoscene-assistant-agent/customElement.js +23 -0
- package/dist/components/geoscene-assistant-agent/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-agent/index.js +1 -0
- package/dist/components/geoscene-assistant-chat/customElement.d.ts +17 -0
- package/dist/components/geoscene-assistant-chat/customElement.js +50 -0
- package/dist/components/geoscene-assistant-chat/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-chat/index.js +1 -0
- package/dist/components/geoscene-assistant-chat-entry/customElement.d.ts +37 -0
- package/dist/components/geoscene-assistant-chat-entry/customElement.js +85 -0
- package/dist/components/geoscene-assistant-chat-entry/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-chat-entry/index.js +3 -0
- package/dist/components/geoscene-assistant-data-exploration-agent/customElement.d.ts +101 -0
- package/dist/components/geoscene-assistant-data-exploration-agent/customElement.js +48 -0
- package/dist/components/geoscene-assistant-data-exploration-agent/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-data-exploration-agent/index.js +1 -0
- package/dist/components/geoscene-assistant-help-agent/customElement.d.ts +73 -0
- package/dist/components/geoscene-assistant-help-agent/customElement.js +51 -0
- package/dist/components/geoscene-assistant-help-agent/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-help-agent/index.js +1 -0
- package/dist/components/geoscene-assistant-interrupt/customElement.d.ts +31 -0
- package/dist/components/geoscene-assistant-interrupt/customElement.js +37 -0
- package/dist/components/geoscene-assistant-interrupt/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-interrupt/index.js +6 -0
- package/dist/components/geoscene-assistant-interrupt-preview/customElement.js +20 -0
- package/dist/components/geoscene-assistant-interrupt-preview/index.js +2 -0
- package/dist/components/geoscene-assistant-knowledge-agent/customElement.d.ts +158 -0
- package/dist/components/geoscene-assistant-knowledge-agent/customElement.js +74 -0
- package/dist/components/geoscene-assistant-knowledge-agent/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-knowledge-agent/index.js +1 -0
- package/dist/components/geoscene-assistant-layer-styling-agent/customElement.d.ts +8 -0
- package/dist/components/geoscene-assistant-layer-styling-agent/customElement.js +51 -0
- package/dist/components/geoscene-assistant-layer-styling-agent/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-layer-styling-agent/index.js +1 -0
- package/dist/components/geoscene-assistant-message/customElement.d.ts +23 -0
- package/dist/components/geoscene-assistant-message/customElement.js +45 -0
- package/dist/components/geoscene-assistant-message/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message/index.js +5 -0
- package/dist/components/geoscene-assistant-message-block/customElement.d.ts +8 -0
- package/dist/components/geoscene-assistant-message-block/customElement.js +36 -0
- package/dist/components/geoscene-assistant-message-block/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-block/index.js +3 -0
- package/dist/components/geoscene-assistant-message-feedback/customElement.d.ts +26 -0
- package/dist/components/geoscene-assistant-message-feedback/customElement.js +36 -0
- package/dist/components/geoscene-assistant-message-feedback/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-feedback/index.js +3 -0
- package/dist/components/geoscene-assistant-message-footer/customElement.d.ts +28 -0
- package/dist/components/geoscene-assistant-message-footer/customElement.js +62 -0
- package/dist/components/geoscene-assistant-message-footer/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-footer/index.js +6 -0
- package/dist/components/geoscene-assistant-message-loading/customElement.d.ts +17 -0
- package/dist/components/geoscene-assistant-message-loading/customElement.js +23 -0
- package/dist/components/geoscene-assistant-message-loading/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-loading/index.js +5 -0
- package/dist/components/geoscene-assistant-message-log/customElement.d.ts +14 -0
- package/dist/components/geoscene-assistant-message-log/customElement.js +29 -0
- package/dist/components/geoscene-assistant-message-log/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-log/index.js +3 -0
- package/dist/components/geoscene-assistant-message-read-aloud/customElement.d.ts +22 -0
- package/dist/components/geoscene-assistant-message-read-aloud/customElement.js +100 -0
- package/dist/components/geoscene-assistant-message-read-aloud/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-read-aloud/index.js +3 -0
- package/dist/components/geoscene-assistant-message-text/customElement.d.ts +11 -0
- package/dist/components/geoscene-assistant-message-text/customElement.js +22 -0
- package/dist/components/geoscene-assistant-message-text/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-message-text/index.js +1 -0
- package/dist/components/geoscene-assistant-navigation-agent/customElement.d.ts +81 -0
- package/dist/components/geoscene-assistant-navigation-agent/customElement.js +50 -0
- package/dist/components/geoscene-assistant-navigation-agent/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-navigation-agent/index.js +1 -0
- package/dist/components/geoscene-assistant-speech-input/customElement.d.ts +36 -0
- package/dist/components/geoscene-assistant-speech-input/customElement.js +488 -0
- package/dist/components/geoscene-assistant-speech-input/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-speech-input/index.js +2 -0
- package/dist/components/geoscene-assistant-speech-input/support/types.d.ts +20 -0
- package/dist/components/geoscene-assistant-suggested-prompts/customElement.d.ts +19 -0
- package/dist/components/geoscene-assistant-suggested-prompts/customElement.js +27 -0
- package/dist/components/geoscene-assistant-suggested-prompts/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-suggested-prompts/index.js +3 -0
- package/dist/components/geoscene-assistant-user-message/customElement.d.ts +13 -0
- package/dist/components/geoscene-assistant-user-message/customElement.js +25 -0
- package/dist/components/geoscene-assistant-user-message/index.d.ts +1 -0
- package/dist/components/geoscene-assistant-user-message/index.js +2 -0
- package/dist/docs/api.json +1 -0
- package/dist/docs/docs.json +1 -0
- package/dist/docs/vscode.css-custom-data.json +1 -0
- package/dist/docs/vscode.html-custom-data.json +1 -0
- package/dist/docs/web-types.json +1 -0
- package/dist/index.d.ts +158 -0
- package/dist/index.js +6 -0
- package/dist/loader.d.ts +2 -0
- package/dist/loader.js +30 -0
- package/dist/oauth-callback.html +31 -0
- package/dist/types/components.d.ts +2 -0
- package/dist/types/lumina.d.ts +138 -0
- package/dist/types/preact.d.ts +164 -0
- package/dist/types/react.d.ts +193 -0
- package/dist/types/stencil.d.ts +145 -0
- package/dist/utils/index.d.ts +542 -0
- package/dist/utils/index.js +116 -0
- package/package.json +64 -3
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{a as i,c}from"./DHGNGMNJ.js";export default $geoscene.t(([m,{subclass:p}])=>{function a(t){return t?Object.keys(t.shape??{}):[]}function d(t){let e={};for(let n of t)for(let s of a(n))e[s]=void 0;return e}function g(t,e){return Object.fromEntries(e.filter(n=>Object.hasOwn(t,n)).map(n=>[n,t[n]]))}function l(t,e){return`${t.id}_${e}`}function h(t,e){let n=e.inputSchema;return n?{...g(t,a(n)),agentExecutionContext:t.agentExecutionContext,outputMessage:t.outputMessage,status:void 0,summary:""}:{...t,status:void 0,summary:""}}function x(t,e){return t.outputSchema?g(e,a(t.outputSchema)):{}}function y(t){let e={outputMessage:t.outputMessage,status:t.status,summary:t.summary};return t.agentExecutionContext&&(e.agentExecutionContext=t.agentExecutionContext),e}function v(t,e){return async(n,s)=>{let o=await t.run(h(n,t),s),r=x(t,o);return e||o.status==="failed"?{...r,...y(o)}:{...r,outputMessage:o.outputMessage}}}var w=Object.getOwnPropertyDescriptor,E=(t,e,n,s)=>{for(var o=s>1?void 0:s?w(e,n):e,r=t.length-1,u;r>=0;r--)(u=t[r])&&(o=u(o)||o);return o},f=class extends m{generate(){let t=this.getAgents();this.validateAgents(t);for(let r of t)r.generate();let e=d(t.flatMap(r=>r.getSchemas())),n=i(e),s=this.buildNodes(t),o=this.buildEdges(t);return{workspace:n,createGraph:()=>c(s,o,n,{entryNode:this.getEntryNode(t)})}}buildNodes(t){let e={};for(let[n,s]of t.entries())e[l(s,n)]=v(s,this.isTerminalAgent(t,n));return e}validateAgents(t){if(!t.length)throw new Error("工作流至少需要一个 Agent。")}};f=E([p("BaseWorkflow")],f);return{a:a,b:d,c:l,d:f}},"core/Accessor","core/accessorSupport/decorators")
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{a as r}from"./M7C6Y752.js";import{a as m}from"./3Y723IJS.js";import"./TOYQ22PR.js";import{g as l,h as e,v as c,x as d,z as g}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";var b=l`:host{display:block;container-type:inline-size}.container{display:flex;flex-direction:column;align-items:flex-start;gap:var(--calcite-spacing-sm);width:100%;text-align:left}.icon{padding:var(--calcite-spacing-sm);border-radius:var(--calcite-spacing-xl);background:var(--calcite-color-brand);color:var(--calcite-color-foreground-1)}.content-container{display:flex;flex:1;flex-direction:column;width:100%;gap:var(--calcite-spacing-md)}.content,.blocks{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm)}.block-pending{display:flex;justify-content:center;align-items:center;padding:var(--calcite-spacing-sm);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 2s ease-in-out infinite;border-radius:var(--calcite-border-radius);min-height:100px}.message-error{font-style:italic}@container (min-width: 480px){.container{max-width:80%}}@keyframes assistant-message-loading-shimmer{0%{background-position:-150% 0}to{background-position:150% 0}}@media(prefers-reduced-motion){.block-pending{animation:none}}`;function p({message:a}){let s=new Map;return a&&a.blocks?.forEach((t,i)=>{if(!t.isPending){let n=r(a.id,i);s.set(n,{data:{block:t,index:i,message:a},name:"block",slotName:n})}}),s}var o=class extends c{constructor(){super(...arguments),this.geosceneSlottableRequest=m(this,["message"],p),this.feedbackEnabled=!1,this.logEnabled=!1,this.copyEnabled=!1,this.readAloudEnabled=!1,this.footerDisabled=!1,this.assistantAvatarEnabled=!1}static{this.properties={_isStreaming:16,feedbackEnabled:5,logEnabled:5,copyEnabled:5,readAloudEnabled:5,footerDisabled:5,message:0,assistantAvatarEnabled:5}}static{this.styles=b}get _isStreaming(){return!!this.message?.isStreaming}_renderContent(){let s=this.message,t=s?.id;if(t)return e`<div class="content"><geoscene-assistant-interrupt-preview .interrupts=${this.message?.interrupts}></geoscene-assistant-interrupt-preview>${s.blocks?.length?e`<div class="blocks">${s.blocks.map((i,n)=>i.isPending&&i.type!=="text"?e`<div class="block-pending"></div>`:e`<slot name=${r(t,n)??d}></slot>`)}</div>`:null}</div>`}_renderFooter(){return e`<geoscene-assistant-message-footer .message=${this.message} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled}></geoscene-assistant-message-footer>`}render(){return e`<div class="container">${this.assistantAvatarEnabled?e`<slot name=icon><calcite-icon icon=effects class="icon" scale=s></calcite-icon></slot>`:null}<div class="content-container"><slot name=content>${this._renderContent()}</slot>${this.message?.error?e`<div class="message-error">${this.message.error}</div>`:null}${this._isStreaming?e`<div class="streaming-indicator"><calcite-loader label=loading inline></calcite-loader></div>`:null}${!this.footerDisabled&&!this._isStreaming?e`<slot name=footer>${this._renderFooter()}</slot>`:null}</div></div>`}};g("geoscene-assistant-message",o);export{o as GeosceneAssistantMessage};
|
|
@@ -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:d,subclass:f},{a:u,c:i,d:c}])=>{var m=Object.defineProperty,g=Object.getOwnPropertyDescriptor,p=(e,o,r,t)=>{for(var s=t>1?void 0:t?g(o,r):o,a=e.length-1,n;a>=0;a--)(n=e[a])&&(s=(t?n(o,r,s):n(s))||s);return t&&s&&m(o,r,s),s},l=class extends c{constructor(e){super(e)}getAgents(){return this.agents}getEntryNode(e){return e[0]?i(e[0],0):void 0}isTerminalAgent(e,o){return o===e.length-1}validateAgents(e){super.validateAgents(e);let o=new Map;for(let[r,t]of e.entries()){let s=e[r-1];if(t.outputSchema)for(let a of u(t.outputSchema)){let n=o.get(a)??[];n.push(`${t.name} [${r}]`),o.set(a,n)}if(!(r===0||!t.inputSchema||s?.outputSchema))throw new Error(`工作流 Agent“${t.name}”声明了输入结构,因此上游 Agent“${s.name}”必须声明输出结构。`)}for(let[r,t]of o.entries())t.length>1&&console.warn(`工作流输出字段“${r}”被多个步骤声明(${t.join(", ")})。后续步骤将覆盖共享状态中的先前值。`)}buildEdges(e){return e.length===1?[{from:i(e[0],0),decide:()=>{}}]:e.slice(0,-1).map((o,r)=>({from:i(o,r),decide:t=>t.status==="failed"?void 0:i(e[r+1],r+1)}))}};p([d()],l.prototype,"agents",2);l=p([f("SequentialWorkflow")],l);return l},"core/accessorSupport/decorators",a)
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{g as C,h as S,n as l,v as R,x as m,z as y}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";export default $geoscene.t(([{when:k,watch:u},I,{property:d,subclass:f}])=>{var T=C`.button{--calcite-button-background-color: var(--calcite-color-transparent);--calcite-button-border-color: transparent;--calcite-button-icon-color: var(--calcite-color-text-3);--calcite-button-text-color: var(--calcite-color-text-3);flex:0 0 auto;position:relative}.button[data-state=disabled]{--calcite-button-icon-color: var(--calcite-color-text-3);opacity:var(--calcite-opacity-disabled)}.button[data-state=listening]{--calcite-button-background-color: color-mix( in srgb, var(--calcite-color-brand) 14%, var(--calcite-color-foreground-1) );--calcite-button-border-color: color-mix(in srgb, var(--calcite-color-brand) 24%, transparent);--calcite-button-icon-color: var(--calcite-color-brand);--calcite-button-text-color: var(--calcite-color-brand);box-shadow:var(--calcite-shadow-sm)}.button[data-state=listening]:hover{--calcite-button-background-color: color-mix( in srgb, var(--calcite-color-brand-hover, var(--calcite-color-brand)) 18%, var(--calcite-color-foreground-1) )}.button[data-state=listening]:active{--calcite-button-background-color: color-mix( in srgb, var(--calcite-color-brand) 24%, var(--calcite-color-foreground-1) )}.button[data-state=processing]{--calcite-button-background-color: color-mix( in srgb, var(--calcite-color-brand) 10%, var(--calcite-color-foreground-1) );--calcite-button-border-color: color-mix(in srgb, var(--calcite-color-brand) 20%, transparent);--calcite-button-icon-color: var(--calcite-color-brand);--calcite-button-text-color: var(--calcite-color-brand)}.button[data-state=error]{--calcite-button-background-color: color-mix( in srgb, var(--calcite-color-status-danger) 12%, var(--calcite-color-foreground-1) );--calcite-button-border-color: color-mix(in srgb, var(--calcite-color-status-danger) 24%, transparent);--calcite-button-icon-color: var(--calcite-color-status-danger);--calcite-button-text-color: var(--calcite-color-status-danger)}.button[data-state=listening]:after{content:"";position:absolute;inset:-4px;border:1px solid color-mix(in srgb,var(--calcite-color-brand) 40%,transparent);border-radius:inherit;opacity:0;pointer-events:none;transform:scale(.92);animation:assistant-speech-input-recording-pulse 1.8s ease-out infinite}@keyframes assistant-speech-input-recording-pulse{0%{opacity:.65;transform:scale(.92)}70%{opacity:0;transform:scale(1.16)}to{opacity:0;transform:scale(1.16)}}@media(prefers-reduced-motion){.button[data-state=listening]:after{animation:none}}`,x=Object.defineProperty,V=Object.getOwnPropertyDescriptor,p=(e,t,s,i)=>{for(var r=i>1?void 0:i?V(t,s):t,n=e.length-1,o;n>=0;n--)(o=e[n])&&(r=(i?o(t,s,r):o(r))||r);return i&&r&&x(t,s,r),r},a=class extends I{constructor(e){super(e),this.state="idle",this.liveTranscript="",this.transcript="",this.errorCode=void 0}static isSupported(){return!1}};p([d()],a.prototype,"language",2);p([d({readOnly:!0})],a.prototype,"state",2);p([d({readOnly:!0})],a.prototype,"liveTranscript",2);p([d({readOnly:!0})],a.prototype,"transcript",2);p([d({readOnly:!0})],a.prototype,"errorCode",2);a=p([f("SpeechController")],a);var O=["audio/webm;codecs=opus","audio/webm","audio/mp4","audio/ogg;codecs=opus","audio/ogg"];function h(e){return e.replace(/\s+/gu," ").trim()}var M=Object.defineProperty,D=Object.getOwnPropertyDescriptor,g=(e,t,s,i)=>{for(var r=i>1?void 0:i?D(t,s):t,n=e.length-1,o;n>=0;n--)(o=e[n])&&(r=(i?o(t,s,r):o(r))||r);return i&&r&&M(t,s,r),r},c=class extends a{constructor(e){super(e),this._activeSessionId=null,this._mediaRecorder=null,this._mediaRecorderChunkIndex=0,this._mediaRecorderStopReason=null,this._mediaStream=null,this._pendingChunkOperations=new Set,this._recordedChunks=[],this.handleRecording=null,this.chunkTimeSlice=3e3}get _mimeType(){return typeof window>"u"||typeof window.MediaRecorder?.isTypeSupported!="function"?"":O.find(e=>window.MediaRecorder.isTypeSupported(e))??""}initialize(){c.isSupported()&&this.addHandles(k(()=>!!this.errorCode,()=>{this._set("state","error")}))}destroy(){this._mediaRecorder&&(this._mediaRecorder.onstart=null,this._mediaRecorder.ondataavailable=null,this._mediaRecorder.onerror=null,this._mediaRecorder.onstop=null),this.cancel(),this._mediaRecorder=null}_queuePendingChunkOperation(e){this._pendingChunkOperations.add(e),e.finally(()=>{this._pendingChunkOperations.delete(e)})}async _awaitPendingChunkOperations(){this._pendingChunkOperations.size&&await Promise.allSettled(Array.from(this._pendingChunkOperations))}_onDataAvailable(e){let t=this._activeSessionId;t!=null&&this._queuePendingChunkOperation(this._processDataAvailable(e,t))}async _processDataAvailable(e,t){let s=e.data;if(!s.size||t!==this._activeSessionId)return;this._recordedChunks.push(s);let i=s.type||this._mediaRecorder?.mimeType||this._mimeType,r=this._mediaRecorderStopReason==="toggle"&&this._mediaRecorder?.state==="inactive";try{if(!this.handleRecording)return;let n=h(await this.handleRecording(s,i,this._mediaRecorderChunkIndex,r)??"");if(t!==this._activeSessionId)return;n&&this._set("liveTranscript",h(`${this.liveTranscript} ${n}`))}catch(n){if(t!==this._activeSessionId)return;this._failSession(n instanceof Error&&n.message==="transcription-unavailable"?"transcription-unavailable":"transcription-failed");return}!r&&t===this._activeSessionId&&(this._mediaRecorderChunkIndex+=1)}_failSession(e){let t=this._mediaRecorder;if(t){t.onstart=null,t.ondataavailable=null,t.onerror=null,t.onstop=null;try{t.state!=="inactive"&&t.stop()}catch{}}this._activeSessionId=null,this._mediaRecorder=null,this._mediaRecorderChunkIndex=0,this._mediaRecorderStopReason=null,this._pendingChunkOperations.clear(),this._recordedChunks=[],this._releaseMediaStream(),this._set("liveTranscript",""),this._set("transcript",""),this._set("errorCode",e)}_onError(){this._failSession("recording-failed")}_onStart(){this._set("state","listening")}_onStop(){this._handleStop()}_releaseMediaStream(){this._mediaStream?.getTracks().forEach(e=>e.stop()),this._mediaStream=null}async _handleStop(){let e=this._mediaRecorder,t=this._activeSessionId,s=this._mediaRecorderStopReason,i=e?.mimeType||this._recordedChunks.find(n=>!!n.type)?.type||"",r=[...this._recordedChunks];if(this._mediaRecorder=null,this._mediaRecorderChunkIndex=0,this._releaseMediaStream(),s==="cancel"){this._activeSessionId===t&&(this._activeSessionId=null),this._mediaRecorderStopReason=null,this._pendingChunkOperations.clear(),this._recordedChunks=[],this._set("liveTranscript",""),this._set("transcript",""),this._set("state","idle"),this._set("errorCode",void 0);return}if(t==null){this._mediaRecorderStopReason=null,this._pendingChunkOperations.clear(),this._recordedChunks=[],this._set("state","idle"),this._set("errorCode",void 0);return}if(await this._awaitPendingChunkOperations(),t===this._activeSessionId){if(!(i?new Blob(r,{type:i}):new Blob(r)).size){this._activeSessionId===t&&(this._activeSessionId=null),this._mediaRecorderStopReason=null,this._recordedChunks=[],this._set("errorCode","recording-failed");return}this._set("state","processing"),this._set("transcript",h(`${this.transcript} ${this.liveTranscript}`)),this._set("liveTranscript",""),this._activeSessionId===t&&(this._activeSessionId=null),this._set("state","idle"),this._set("errorCode",void 0),this._mediaRecorderStopReason=null,this._recordedChunks=[]}}start(){if(!c.isSupported()){this._set("errorCode","not-supported");return}let e=Date.now();this._activeSessionId=e,this._mediaRecorderChunkIndex=0,this._mediaRecorderStopReason=null,this._pendingChunkOperations.clear(),this._recordedChunks=[],this._set("liveTranscript",""),this._set("transcript",""),this._set("errorCode",void 0),navigator.mediaDevices.getUserMedia({audio:!0}).then(t=>{if(e!==this._activeSessionId){t.getTracks().forEach(r=>r.stop());return}let s=this._mimeType,i=s?new window.MediaRecorder(t,{mimeType:s}):new window.MediaRecorder(t);this._mediaStream=t,this._mediaRecorder=i,this._mediaRecorderChunkIndex=0,this._mediaRecorderStopReason=null,this._recordedChunks=[],i.ondataavailable=this._onDataAvailable.bind(this),i.onerror=this._onError.bind(this),i.onstart=this._onStart.bind(this),i.onstop=this._onStop.bind(this),this._mediaRecorder.start(this.chunkTimeSlice)}).catch(t=>{e===this._activeSessionId&&(this._activeSessionId=null,this._mediaRecorder=null,this._mediaRecorderChunkIndex=0,this._mediaRecorderStopReason=null,this._pendingChunkOperations.clear(),this._recordedChunks=[],this._releaseMediaStream(),t instanceof DOMException&&t.name==="NotAllowedError"?this._set("errorCode","not-allowed"):this._set("errorCode","recording-failed"))})}stop(){if(this._mediaRecorder){this._mediaRecorderStopReason="toggle";try{this._mediaRecorder.state!=="inactive"?this._mediaRecorder.stop():this._handleStop()}catch{}}}cancel(){let e=this._mediaRecorder;if(this._activeSessionId=null,this._mediaRecorderStopReason="cancel",this._mediaRecorderChunkIndex=0,this._pendingChunkOperations.clear(),this._recordedChunks=[],this._set("liveTranscript",""),this._set("transcript",""),this._set("state","idle"),this._set("errorCode",void 0),!e){this._releaseMediaStream();return}try{if(e.state!=="inactive"){e.stop();return}}catch{}this._mediaRecorder=null,this._releaseMediaStream()}static isSupported(){return typeof window<"u"&&!!(window.MediaRecorder&&navigator.mediaDevices?.getUserMedia)}};g([d()],c.prototype,"_mimeType",1);g([d()],c.prototype,"handleRecording",2);g([d()],c.prototype,"chunkTimeSlice",2);c=g([f("MediaRecorderController")],c);var $=Object.getOwnPropertyDescriptor,E=(e,t,s,i)=>{for(var r=i>1?void 0:i?$(t,s):t,n=e.length-1,o;n>=0;n--)(o=e[n])&&(r=o(r)||r);return r};function w(){if(typeof window>"u")return null;let e=window;return e.SpeechRecognition??e.webkitSpeechRecognition??null}var _=class extends a{constructor(e){super(e),this._isCancelled=!1,this._recognition=null}initialize(){let e=w();if(!e)return;let t=new e;t.continuous=!0,t.interimResults=!0,this.language&&(t.lang=this.language),t.onstart=this._onStart.bind(this),t.onresult=this._onResult.bind(this),t.onerror=this._onError.bind(this),t.onend=this._onEnd.bind(this),t.onspeechend=this._onSpeechEnd.bind(this),this._recognition=t,this.addHandles(k(()=>!!this.errorCode,()=>{this._set("state","error")}))}destroy(){this._recognition&&(this._recognition.onstart=null,this._recognition.onresult=null,this._recognition.onerror=null,this._recognition.onend=null,this._recognition.onspeechend=null,this.cancel(),this._recognition=null)}_onStart(){this._isCancelled=!1,this._set("state","listening")}_onResult(e){let{finalTranscript:t,liveTranscript:s}=Array.from(e.results).reduce((i,r)=>(r.isFinal?i.finalTranscript+=r[0].transcript:i.liveTranscript+=r[0].transcript,i),{finalTranscript:"",liveTranscript:""});this._set("transcript",h(t)),this._set("liveTranscript",h(s))}_onError(e){if(e.error==="aborted"&&this._isCancelled){this._set("state","idle");return}let t="unhandled";switch(e.error){case"no-speech":t="no-speech";break;case"service-not-allowed":case"not-allowed":t="not-allowed";break;default:t="unhandled"}this._set("errorCode",t)}_onEnd(){let e=h(`${this.transcript} ${this.liveTranscript}`);if(this._set("liveTranscript",""),this._isCancelled){this._set("transcript",""),this._set("state","idle"),this._set("errorCode",void 0);return}this.errorCode?this._set("transcript",""):(this._set("transcript",e),this._set("state","idle")),this._set("errorCode",void 0)}_onSpeechEnd(){this._set("state","processing")}_reset(e=!1){this._isCancelled=e,this._set("liveTranscript",""),this._set("transcript",""),this._set("errorCode",void 0),this._set("state","idle")}start(){if(!this._recognition){this._set("errorCode","not-supported");return}this._reset(!1);try{this._recognition.start()}catch{this._set("errorCode","unhandled")}}stop(){if(this._recognition){this._set("state","processing");try{this._recognition.stop()}catch{}}}cancel(){if(this._recognition){this._reset(!0);try{this._recognition.abort()}catch{}}}static isSupported(){return!!w()}};_=E([f("WebSpeechController")],_);function b(e){let{baseValue:t,transcript:s}=e;if(!s)return t;let i=t.trim();return i?`${i} ${s}`:s}var v=class extends R{constructor(){super(...arguments),this.#t=null,this._resolvedMode="disabled",this.awaitingResponse=!1,this.inputValue="",this.mode="web-speech",this.geosceneVoiceInputDraftChange=l(),this.geosceneVoiceInputError=l(),this.geosceneVoiceInputInterimTranscription=l(),this.geosceneVoiceInputStart=l(),this.geosceneVoiceInputStop=l(),this.geosceneVoiceInputTranscription=l(),this.geosceneVoiceInputTranscriptionStreamChunk=l()}static{this.properties={_resolvedMode:16,_state:16,_errorCode:16,_liveTranscript:16,_transcript:16,_isButtonDisabled:16,_buttonLabel:16,awaitingResponse:5,inputValue:1,language:1,mode:1}}static{this.styles=T}#t;get _state(){return this._speechController?.state??"idle"}get _errorCode(){return this._speechController?.errorCode??null}get _liveTranscript(){return this._speechController?.liveTranscript??""}get _transcript(){return this._speechController?.transcript??""}get _isButtonDisabled(){return this._resolvedMode==="disabled"||this.awaitingResponse||this._state==="processing"}get _buttonLabel(){if(this.awaitingResponse)return"助手正在回答时无法使用语音输入";if(this._resolvedMode==="disabled")return"语音输入不可用";switch(this._state){case"error":return this._errorCode==="not-allowed"?"麦克风权限被拒绝,请重试语音输入":"重试语音输入";case"listening":return"停止语音输入";case"processing":return"正在处理语音输入";default:return"开始语音输入"}}clearDraftSession(){this.#t=null}loaded(){this.manager.onLifecycle(()=>[u(()=>[this.mode,this.language],()=>{this._configureController()},{initial:!0}),u(()=>this.awaitingResponse,t=>{t&&this._cancelActiveSession()},{initial:!0}),u(()=>this._liveTranscript,t=>{if(t){let s=h(`${this._transcript} ${t}`);this.geosceneVoiceInputInterimTranscription.emit({transcript:s}),this._applyVoiceInputTranscript(s)}}),u(()=>this._transcript,t=>{t&&(this.geosceneVoiceInputTranscription.emit({transcript:t}),this._applyVoiceInputTranscript(t,{final:!0}))}),u(()=>this._state,t=>{t==="error"&&this._errorCode&&this.geosceneVoiceInputError.emit({errorCode:this._errorCode})})])}disconnectedCallback(){super.disconnectedCallback(),this._destroySpeechController()}_configureController(){let t=this._resolveMode();this._destroySpeechController(),this._resolvedMode=t,t!=="disabled"&&(this._speechController=t==="web-speech"?new _({language:this.language}):new c({language:this.language,handleRecording:this._handleRecording.bind(this)}))}_destroySpeechController(){this._speechController?.cancel(),this._speechController?.destroy(),this._speechController=void 0}_emitDraftChange(t,s){this.geosceneVoiceInputDraftChange.emit({focusInput:s?.focusInput,value:t})}_startVoiceInputSession(){this.#t={baseValue:this.inputValue.trim(),phase:"listening",transcript:""}}_finishVoiceInputSession(){let t=this.#t;if(!t){this._emitDraftChange(this.inputValue.trim());return}let s={...t,phase:"stopped"},i=b(s);this.#t=s,this._emitDraftChange(i)}async _applyVoiceInputTranscript(t,s){let i=this.#t;if(!t||!i)return;if(i.phase==="stopped"){let o=b(i);if(this.inputValue.trim()!==o){this.clearDraftSession();return}}let r={...i,transcript:t},n=b(r);this.#t=r,this._emitDraftChange(n,{focusInput:s?.final&&r.phase==="stopped"})}async _handleToggle(){if(!(this._isButtonDisabled||!this._speechController)){if(this._state==="listening"){this._speechController.stop(),this._finishVoiceInputSession(),this.geosceneVoiceInputStop.emit();return}this._speechController.start(),this._startVoiceInputSession(),this.geosceneVoiceInputStart.emit()}}async _handleRecording(t,s,i,r){let n;return this.geosceneVoiceInputTranscriptionStreamChunk.emit({blob:t,chunkIndex:i,isFinal:r,mimeType:s,respondWithTranscript:o=>{n=o}}),n}_resolveMode(){return this.mode==="disabled"?"disabled":this.mode==="web-speech"&&_.isSupported()?"web-speech":c.isSupported()?"media-recorder":"disabled"}async _cancelActiveSession(){this._speechController&&this._resolvedMode!=="disabled"&&this._speechController.cancel(),this.clearDraftSession()}render(){return S`<calcite-button appearance=transparent class="button" data-mode=${this._resolvedMode??m} data-state=${(this._resolvedMode==="disabled"?"disabled":this._state)??m} .disabled=${this._isButtonDisabled} icon-start=microphone kind=neutral .label=${this._buttonLabel} .loading=${this._state==="processing"} round scale=m @click=${()=>{this._handleToggle()}}></calcite-button>`}};y("geoscene-assistant-speech-input",v);return v},"core/reactiveUtils","core/Accessor","core/accessorSupport/decorators")
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import a from"./WNJM5TET.js";import{c as l}from"./DHGNGMNJ.js";import"./H3EEFM4A.js";import"./4ASZF5I2.js";import"./LXJWWOGK.js";import"./CFDTXKJ6.js";export default $geoscene.t(([{property:g,subclass:u},{d:w}])=>{var f=Object.defineProperty,m=Object.getOwnPropertyDescriptor,c=(o,r,n,s)=>{for(var e=s>1?void 0:s?m(r,n):r,a=o.length-1,t;a>=0;a--)(t=o[a])&&(e=(s?t(r,n,e):t(e))||e);return s&&e&&f(r,n,e),e},p=class extends w{constructor(o){super(o)}getAgents(){return this.workflow.getAgents()}generate(){let o=this.workflow.generate(),r=o.workspace,n=o.createGraph().compile(),{decideContinue:s}=this,e={[i]:async(t,d)=>await n.invoke(t,d)},a=[{from:i,decide:async(t,d)=>await Promise.resolve(s(t,d))?i:void 0}];return{workspace:r,createGraph:()=>l(e,a,r,{entryNode:i})}}buildEdges(){throw new Error("LoopWorkflow 已覆盖 generate(),不应调用 buildEdges。")}getEntryNode(){return i}isTerminalAgent(){return!0}};c([g()],p.prototype,"workflow",2);c([g()],p.prototype,"decideContinue",2);p=c([u("LoopWorkflow")],p);var i="__loop_body";return p},"core/accessorSupport/decorators",a)
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{a as o}from"./GTXGIROA.js";import"./3Y723IJS.js";import"./TOYQ22PR.js";import{g as a,h as e,n as i,v as c,z as n}from"./GI2NZ45U.js";import"./4EALV6QJ.js";import"./CFDTXKJ6.js";var r=a`.actions{display:flex;flex-direction:row;gap:var(--calcite-spacing-xs)}`,t=class extends c{constructor(){super(...arguments),this._messages=o({blocking:!0}),this.feedbackEnabled=!1,this.geosceneFeedback=i()}static{this.properties={feedbackEnabled:5,message:0}}static{this.styles=r}_handleFeedback(s){this.message&&(this.message.feedback=this.message.feedback?.positive===s?void 0:{positive:s},this.geosceneFeedback.emit(this.message),this.requestUpdate())}_getFeedback(){return this.message?.feedback?.positive}_renderThumbsUpButton(){return e`<calcite-action id=action-thumbs-up icon=thumbs-up scale=s .active=${this._getFeedback()===!0} @click=${()=>this._handleFeedback(!0)} text></calcite-action><calcite-tooltip reference-element=action-thumbs-up overlay-positioning=fixed placement=bottom><span>${this._messages.thumbsUpLabel}</span></calcite-tooltip>`}_renderThumbsDownButton(){return e`<calcite-action id=action-thumbs-down icon=thumbs-down scale=s .active=${this._getFeedback()===!1} @click=${()=>this._handleFeedback(!1)} text></calcite-action><calcite-tooltip reference-element=action-thumbs-down overlay-positioning=fixed placement=bottom><span>${this._messages.thumbsDownLabel}</span></calcite-tooltip>`}render(){return this.feedbackEnabled&&!this.message?.error?e`<div class="actions">${this._renderThumbsUpButton()}${this._renderThumbsDownButton()}</div>`:null}};n("geoscene-assistant-message-feedback",t);export{t as GeosceneAssistantMessageFeedback};
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import a from"./PFW7KXCP.js";import{a as S,b as x}from"./KGYSBUFO.js";import{_ as b,ea as xe,g as Te,j as B,k as U,pa as D,u as Se}from"./H3EEFM4A.js";import{L as z,P as oe,_ as j,wc as y}from"./4ASZF5I2.js";import{a as s}from"./QH6TSBNI.js";import{Dd as N}from"./LXJWWOGK.js";export default $geoscene.t(([Me,F,ie,je,,Ae,nt,{addressToLocations:it},st,lt,De,{createRenderer:ct},{getSchemesByTag:ut,getSchemes:dt},{getBackgroundColorTheme:Re},{createAgeRenderer:pt,createContinuousRenderer:mt},{getSchemesByTag:ge},{createContinuousRenderer:ht},{createRenderer:ft},{getSchemesByTag:yt},{createRenderer:gt},{getSchemesByTag:wt},{createRenderer:bt},{getSchemesByTag:vt},{createRenderer:Tt},{getSchemesByTag:St},{createAgeRenderer:xt,createContinuousRenderer:Et},{createRenderer:It},{getSchemesByTag:Nt},kt,Le,Oe,{formatDateOnly:$t,convertDateFormatToIntlOptions:W,formatTimeOnly:Ft,formatDate:qe},Mt,At,Rt,qt,Ct,Pe,,{fetchKnowledgeGraph:Ce,executeQueryStreaming:_t,executeSearchStreaming:zt},jt,{getBindParametersFromCypherQuery:Dt},{b:L,c:Ee,q:Ie}])=>{var Fe=e=>Array.isArray(e)&&e.every(z),tt=e=>typeof e=="object"&&e!=null&&"messages"in e&&Fe(e.messages),rt=e=>typeof e=="object"&&e!=null&&"lg_tool_call"in e,K=class extends xe{tools;handleToolErrors=!0;trace=!1;constructor(e,t){let{name:r,tags:o,handleToolErrors:a}=t??{};super({name:r,tags:o,func:(n,l)=>this.run(n,l)}),this.tools=e,this.handleToolErrors=a??this.handleToolErrors}async runTool(e,t){let r=this.tools.find(o=>o.name===e.name);try{if(r===void 0)throw new Error(`Tool "${e.name}”不存在。`);let o=await r.invoke({...e,type:"tool_call"},t);return z(o)&&o.getType()==="tool"||U(o)?o:new oe({status:"success",name:r.name,content:typeof o=="string"?o:JSON.stringify(o),tool_call_id:e.id})}catch(o){if(!this.handleToolErrors||Se(o))throw o;return new oe({status:"error",content:`错误:${o.message}
|
|
3
|
+
Please fix your mistakes.`,name:e.name,tool_call_id:e.id??""})}}async run(e,t){let r;if(rt(e))r=[await this.runTool(e.lg_tool_call,t)];else{let n;if(Fe(e))n=e;else if(tt(e))n=e.messages;else throw new Error("ToolNode only accepts BaseMessage[] or { messages: BaseMessage[] } as input.");let l=new Set(n.filter(u=>u.getType()==="tool").map(u=>u.tool_call_id)),i;for(let u=n.length-1;u>=0;u-=1){let c=n[u];if(j(c)){i=c;break}}if(i==null||!j(i))throw new Error("ToolNode only accepts AIMessages as input.");r=await Promise.all(i.tool_calls?.filter(u=>u.id==null||!l.has(u.id)).map(u=>this.runTool(u,t))??[])}if(!r.some(U))return Array.isArray(e)?r:{messages:r};let o=[],a=null;for(let n of r)U(n)?n.graph===B.PARENT&&Array.isArray(n.goto)&&n.goto.every(l=>Te(l))?a?a.goto.push(...n.goto):a=new B({graph:B.PARENT,goto:n.goto}):o.push(n):o.push(Array.isArray(e)?[n]:{messages:[n]});return a&&o.push(a),o}};var Dn=b.Root({llmInputMessages:b({reducer:(e,t)=>D([],t),default:()=>[]})});var O=(e,t)=>t??e,Wi=b.Root({...Ee(),intent:b({reducer:O}),vectorSearchLayerResults:b({reducer:O,default:()=>[]}),vectorSearchFieldResults:b({reducer:O}),navigationInternalState:b({reducer:O,default:()=>({toolCallMessage:void 0})})});async function Lt(e,t){let r=F.getDefault().helperServices,o=r.geocode.find(d=>d.name==="GeoScene World Geocoding Service")??r.geocode[0];if(!o)throw new Error("helperServices 中没有地理编码服务。");let a=o.url,n=`${ie.assetsPath?.endsWith("/")?ie.assetsPath:`${ie.assetsPath}/`}esri/images/search/search-symbol-32.png`,l=(await it(a,{address:{SingleLine:e},outFields:["Match_addr"]}))?.[0];if(!l?.extent||!l.location)throw new Error(`未找到以下位置:${e}`);let i=new st({url:n,width:24,height:24}),u=new nt({geometry:l.location,symbol:i});t.graphics.removeAll(),t.graphics.add(u),await t.goTo(l.extent);let c={address:l.address??"",location:l.location?l.location.toJSON():null,extent:l.extent?l.extent.toJSON():null};return{text:`已缩放到 ${e}.`,sharedStatePatch:{lastResolvedLocation:{value:c}}}}var Ot=["mapView"];function k(e){let t=e?.configurable?.context;if(!t||typeof t!="object")throw new Error("NavigationAgent 缺少上下文");let r=Ot.filter(o=>!(o in t));if(r.length)throw new Error(`NavigationAgent 缺少上下文:${r.join(", ")}`);return t}async function Pt({address:e},t){let{mapView:r}=k(t);return await Lt(e,r)}var Gt=s.object({address:s.string().describe("要定位的完整地址或地名。")}),Hi=y(Pt,{name:"goToAddress",description:"使用 GeoScene 全球地理编码服务解析地址,并将地图缩放到该位置。",schema:Gt});async function Vt(e,t){let r=t.map.bookmarks;if(!r||r.length===0)throw new Error("地图中没有书签。");let o=r.find(n=>n.name===e);if(!o)throw new Error(`书签“${e}”不存在。`);let a=o.viewpoint;if(!a)throw new Error(`书签“${e}”没有有效视点。`);return await t.goTo(a),{text:`已定位到书签:${e}`}}async function Qt({bookmarkName:e},t){let{mapView:r}=k(t);return await Promise.resolve(Vt(e,r))}var Bt=N.object({bookmarkName:N.string().describe("要定位到的书签名称。")}),Ji=y(Qt,{name:"goToBookmark",description:"定位到指定名称书签的范围。",schema:Bt});async function Ut(e,t,r){let o=r.map?.allLayers.find(l=>l.id===e);if(!o)return{text:`错误:未找到图层,ID 为 ${e},不存在`};let a=t?.trim()?t:"1=1",n=o.createQuery();n.where=a;try{let{extent:l,count:i}=await o.queryExtent(n);if(i===0)return{text:`未找到要素,图层为 ${o.title},匹配条件:${a}`,where:a};if(l)await r.goTo(l);else return{text:`错误:无法确定以下要素的范围:${o.title}`,where:a};let u={layerId:e,layerTitle:o.title??e,where:a,count:i};return{text:`已缩放到 ${i} 个要素,所在图层:${o.title},匹配条件:${a}`,where:a,sharedStatePatch:{lastNavigatedFeatures:{value:u}}}}catch(l){return console.error("goToFeatures 执行错误:",l),{text:`错误:${l instanceof Error?l.message:"未知错误"}`,where:a}}}async function Kt({layerId:e,where:t},r){let{mapView:o}=k(r);return await Ut(e,t,o)}var Wt=N.object({layerId:N.string().describe("要缩放到的图层 layerId。"),where:N.string().describe("所选图层 query.where 使用的 GeoScene SQL-92 WHERE 表达式。只能使用该图层字段,返回布尔过滤表达式,例如比较、LIKE、IN、BETWEEN、IS NULL、AND/OR/NOT。不得包含子查询、嵌套 SELECT、JOIN、GROUP BY、HAVING、ORDER BY 或分号。")}),Zi=y(Kt,{name:"goToFeatures",description:"定位到指定 layerId 中符合过滤条件的要素。",schema:Wt});async function Ht(e){let t=new lt({xmin:-180,ymin:-90,xmax:180,ymax:90,spatialReference:{wkid:4326}}).expand(.7);return await e.goTo(t),{text:"已缩放到全球范围"}}async function Jt(e,t){let{mapView:r}=k(t);return await Ht(r)}var Zt=N.object({}),Yi=y(Jt,{name:"goToFullExtent",description:"使用 GeoScene 地理编码服务将地图缩放到全球范围。",schema:Zt});async function Yt(e){let t=e.map.initialViewProperties?.viewpoint?.targetGeometry;if(t)await e.goTo(t);else throw new Error("未定义初始范围");return{text:"已返回初始范围"}}async function Xt(e,t){let{mapView:r}=k(t);return await Yt(r)}var er=s.object({}),Xi=y(Xt,{name:"goToHomeExtent",description:"返回 WebMap 初始视图范围",schema:er});async function tr(e,t){await t.when();let r=t.map?.allLayers.find(a=>a.id===e);if(!r)return console.warn(`[goToLayer] 未找到匹配的 FeatureLayer:${e}`),{text:`未找到图层:${e}`};let o;return(r.type==="link-chart"||r.type==="knowledge-graph-sublayer")&&t.map?.activeLinkChartLayer?o=t.map.diagramNodesExtent:o=r.fullExtent,o?(await t.goTo(o),r.visible=!0,{text:`已缩放到:${r.title??""}`}):{text:"图层未定义范围,无法缩放到该图层。"}}async function rr({layerId:e},t){let{mapView:r}=k(t);return await tr(e,r)}var or=N.object({layerId:N.string().describe("要定位的图层 ID")}),es=y(rr,{name:"goToLayer",description:"将地图缩放到最佳匹配图层的完整范围。",schema:or});async function ar(e,t){return await t.goTo({scale:e}),{text:`已缩放到:${e}`}}async function nr({scale:e},t){let{mapView:r}=k(t);return await ar(e,r)}var ir=s.object({scale:s.number().describe("目标视图的地图比例尺。")}),ts=y(nr,{name:"goToScale",description:"定位到指定比例尺。",schema:ir});async function sr(e,t,r){let o={target:new De({longitude:e.longitude,latitude:e.latitude,spatialReference:{wkid:4326}})};return r?.zoom!==void 0&&(o.zoom=r.zoom),r?.scale!==void 0&&(o.scale=r.scale),await t.goTo(o),{text:`已定位到:${[`(${e.latitude}\xB0, ${e.longitude}\xB0)`,r?.zoom!==void 0?`缩放级别 ${r.zoom}`:"",r?.scale!==void 0?`比例尺 1:${r.scale}`:""].filter(Boolean).join(", ")}`}}async function lr({center:e,zoom:t,scale:r},o){let{mapView:a}=k(o);return await sr(e,a,{zoom:t,scale:r})}var cr=s.object({center:s.object({longitude:s.number().describe("目标点的经度,即 x 坐标。"),latitude:s.number().describe("目标点的纬度,即 y 坐标。")}),zoom:s.number().optional().describe("缩放级别,数值越大,地图放得越大。"),scale:s.number().optional().describe("地图比例尺,可替代 zoom;比例尺分母越小,地图放得越大。")}),rs=y(lr,{name:"goToViewpoint",description:"定位到指定视点,可以组合 scale、center、zoom 等参数。",schema:cr});async function ur(e,t){return await t.goTo({zoom:e}),{text:`已缩放到:${e}`}}async function dr({zoom:e},t){let{mapView:r}=k(t);return await ur(e,r)}var pr=s.object({zoom:s.number().min(1).max(20).describe("目标视图的缩放级别。")}),os=y(dr,{name:"goToZoom",description:"定位到指定缩放级别。如果要求较笼统,例如“放大”,只调整到下一个适当级别;放大时增加级别,缩小时降低级别。",schema:pr}),_e=Object.assign({"../agents/geosceneKnowledge/prompts/geoscene_knowledge_current_lc_context.md":()=>import("./VDAF255D.js").then(e=>e.default),"../agents/geosceneKnowledge/prompts/geoscene_knowledge_current_map_context.md":()=>import("./BUTKUPXN.js").then(e=>e.default),"../agents/geosceneKnowledge/prompts/geoscene_knowledge_cypher_query_prompt.md":()=>import("./CU2TRUZQ.js").then(e=>e.default),"../agents/geosceneKnowledge/prompts/geoscene_knowledge_lucene_generation_prompt.md":()=>import("./53Z3R4OY.js").then(e=>e.default),"../agents/geosceneKnowledge/prompts/geoscene_knowledge_summarize_result_prompt.md":()=>import("./4BA4OUWC.js").then(e=>e.default),"../agents/geosceneKnowledge/prompts/geoscene_knowledge_tool_prompt_knowledge_tool_prompt.md":()=>import("./PTKZXFXB.js").then(e=>e.default),"../agents/dataExploration/prompts/data_explore_filter_prompt.md":()=>import("./NMWLJECU.js").then(e=>e.default),"../agents/dataExploration/prompts/data_explore_query_prompt.md":()=>import("./5RQUSM3T.js").then(e=>e.default),"../agents/dataExploration/prompts/summarize_query_response_prompt.md":()=>import("./VWMJ7HIK.js").then(e=>e.default),"../agents/help/prompts/help_prompt.md":()=>import("./N2SKXRLK.js").then(e=>e.default),"../agents/layerStyling/prompts/layer_styling_prompt.md":()=>import("./77GAVZIK.js").then(e=>e.default),"../agents/navigation/prompts/navigation_intent_prompt.md":()=>import("./AJKWCXDA.js").then(e=>e.default),"../agents/navigation/prompts/navigation_tool_prompt.md":()=>import("./HJGF7W5O.js").then(e=>e.default)});async function Z(e){let t=Object.entries(_e).find(([r])=>r.endsWith(`/${e}.md`));if(!t)throw new Error(`未找到提示词:${e}
|
|
4
|
+
可用提示词:
|
|
5
|
+
${Object.keys(_e).join(`
|
|
6
|
+
`)}`);return await t[1]()}var mr=(e,t=300)=>{let r=e.replace(/\s+/gu," ").replace(/[*_`#>\-]/gu,"").trim();return r.length>t?`${r.slice(0,t)}...`:r},Ge=(e,t)=>{let r=e?.configurable?.services?.[t];if(r==null)throw new Error(`${t} 在 config.configurable.services 中不存在`);return r},as=(e,t)=>(r,o)=>{let a=o?.configurable?.services;for(let n of e)if(!a?.[n])throw new Error(`${t} 需要服务。${n} 可用。`);return r};async function hr(e){let{fields:t,layer:r,view:o,styleName:a,colorSchemeTags:n}=e,l;return n?l=ut({basemapTheme:await Re(o),geometryType:r.geometryType,includedTags:n,numColors:Math.min(t.length,8)})[0]:l=dt({basemapTheme:await Re(o),geometryType:r.geometryType,numColors:Math.min(t.length,8)}).primaryScheme,{layer:r,view:o,attributes:t.map(i=>({field:i,label:r.fields.find(u=>u.name===i)?.alias??""})).slice(0,8),outlineOptimizationEnabled:!0,sizeOptimizationEnabled:!0,includeSizeVariable:a.includes("Size"),pieChartScheme:l}}async function fr(e){return await ct(e)}async function yr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,includeSize:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:n?"chart-size":"chart",fields:o,layer:i,view:l,colorSchemeTags:a};try{let c=await hr(u),d=await fr(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用图表渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用图表渲染器失败:${c instanceof Error?c.message:String(c)}`}}var gr=["mapView"];function I(e){let t=e?.configurable?.context;if(!t||typeof t!="object")throw new Error("LayerStylingAgent 缺少上下文");let r=gr.filter(o=>!(o in t));if(r.length)throw new Error(`LayerStylingAgent 缺少上下文:${r.join(", ")}`);return t}async function wr({layerId:e,fields:t,colorSchemes:r,includeSize:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await yr({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,includeSize:o})}var br=s.object({layerId:s.string().describe("要应用图表渲染器的图层 ID"),fields:s.array(s.string()).describe("图表使用的多个数值字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),includeSize:s.boolean().optional().describe("是否按总量改变图表大小(chart-size)")}),ns=y(wr,{name:"chart",description:`标签:图表
|
|
7
|
+
说明:使用饼图表示两个或更多类别各自占总量的比例。
|
|
8
|
+
关键词:饼图、图表、所有类别、构成、比例。
|
|
9
|
+
示例:对每个要素,用饼图显示各年代建造的房屋数量。
|
|
10
|
+
字段:需要2至8个数值字段。
|
|
11
|
+
|
|
12
|
+
标签:图表和大小
|
|
13
|
+
说明:用饼图表示类别占比,并通过图表大小表示总量或规模。
|
|
14
|
+
关键词:饼图、图表、构成、比例、总计、数量、总和、分级大小、比例大小。
|
|
15
|
+
示例:每个要素按年代显示房屋数量占比,饼图大小随各类别总量变化。
|
|
16
|
+
字段:需要2至8个数值字段。`,schema:br});function vr(e){let{fields:t,layer:r,view:o,theme:a,colorSchemeTags:n}=e,l=t[0],i;return n&&(i=ge({geometryType:r.geometryType,includedTags:n,theme:a||"high-to-low"})[0]),{layer:r,view:o,startTime:l,endTime:new Date,theme:a,sizeOptimizationEnabled:!0,outlineOptimizationEnabled:!0,colorScheme:i}}async function Tr(e){return await pt(e)}async function Sr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,theme:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:"color-age",fields:o,layer:i,view:l,colorSchemeTags:a,theme:n};try{let c=vr(u),d=await Tr(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用颜色年龄渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用颜色年龄渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function xr({layerId:e,fields:t,colorSchemes:r,theme:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await Sr({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,theme:o})}var Er=s.object({layerId:s.string().describe("要应用颜色年龄渲染器的图层 ID"),fields:s.array(s.string()).describe("颜色年龄渲染器使用的日期字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),theme:s.enum(["above-and-below","above","below","centered-on","extremes","high-to-low"]).optional().describe("可选的色带主题")}),is=y(xr,{name:"color-age",description:`标签:年龄(颜色)
|
|
17
|
+
说明:沿连续色带显示要素年龄,年龄表示开始日期至结束日期的时间长度。
|
|
18
|
+
关键词:自从、年龄、多久、多大。
|
|
19
|
+
示例:根据上报日期显示各要素的年龄。
|
|
20
|
+
字段:至少需要一个日期字段。`,schema:Er});function Ir(e){let{fields:t,layer:r,view:o,colorSchemeTags:a}=e,{theme:n}=e,l=t[1],i=t[0],u;return a&&(u=ge({geometryType:r.geometryType,includedTags:a,theme:n||"high-to-low"})[0]),{layer:r,view:o,field:i,normalizationField:l,theme:n,sizeOptimizationEnabled:!0,outlineOptimizationEnabled:!0,colorScheme:u}}async function Nr(e){return await mt(e)}async function kr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,theme:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:"color",fields:o,layer:i,view:l,colorSchemeTags:a,theme:n};try{let c=Ir(u),d=await Nr(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用颜色渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用颜色渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function $r({layerId:e,fields:t,colorSchemes:r,theme:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await kr({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,theme:o})}var Fr=s.object({layerId:s.string().describe("要应用颜色渲染器的图层 ID"),fields:s.array(s.string()).describe("颜色渲染器使用的字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),theme:s.enum(["above-and-below","above","below","centered-on","extremes","high-to-low"]).optional().describe("可选的色带主题")}),ss=y($r,{name:"color",description:`标签:计数和数量(颜色)
|
|
21
|
+
说明:使用连续色带表示数值或等级数据。
|
|
22
|
+
关键词:分级设色、连续颜色、色相、渐变、饱和度、明度、百分比、比率、指数、增加、减少。
|
|
23
|
+
示例:按人口密度为要素着色。
|
|
24
|
+
字段:需要一个数值字段,可指定第二个数值字段用于归一化第一个字段。`,schema:Fr});function Mr(e){let{fields:t,layer:r,view:o,colorSchemeTags:a,theme:n}=e,l,i,u=t[0];return a&&(i=ge({geometryType:r.geometryType,includedTags:a,theme:n||"high-to-low"})[0]),{layer:r,view:o,field:u,normalizationField:l,theme:n,colorOptions:{colorScheme:i}}}async function Ar(e){return await ht(e)}async function Rr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,theme:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:"color-size-univariate",fields:o,layer:i,view:l,colorSchemeTags:a,theme:n};try{let c=Mr(u),d=await Ar(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用颜色与大小渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用颜色与大小渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function qr({layerId:e,fields:t,colorSchemes:r,theme:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await Rr({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,theme:o})}var Cr=s.object({layerId:s.string().describe("要应用颜色与大小渲染器的图层 ID"),fields:s.array(s.string()).describe("颜色与大小渲染器使用的字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),theme:s.enum(["above-and-below","above","below","centered-on","extremes","high-to-low"]).optional().describe("可选的颜色和大小渐变主题")}),ls=y(qr,{name:"color-size-univariate",description:`标签:颜色和大小(univariate)
|
|
25
|
+
说明:根据两个数值属性改变符号大小和颜色。
|
|
26
|
+
关键词:连续颜色、色相、颜色、大小、渐变、饱和度、明度、百分比、比率、指数、数量、增减。
|
|
27
|
+
示例:按拥有住房的人口比例着色,按总人口改变点大小。
|
|
28
|
+
字段:至少需要两个字段,分别控制颜色和大小;每个字段都可另用一个字段归一化。`,schema:Cr});function _r(e){let{fields:t,layer:r,view:o,colorSchemeTags:a}=e,n;return a&&(n=yt({includedTags:a,numColors:Math.min(t.length,8)})[0]),{layer:r,view:o,legendOptions:{unit:"units"},attributes:t.map(l=>({field:l,label:r.fields.find(i=>i.name===l)?.alias??""})).slice(0,8),outlineOptimizationEnabled:!0,dotDensityScheme:n}}async function zr(e){return await ft(e)}async function jr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a}){let n=t,l=e?.allLayers.find(u=>u.id===r);if(!l)return`未找到图层,ID:${r}`;let i={styleName:"dot-density",fields:o,layer:l,view:n,colorSchemeTags:a};try{let u=_r(i),c=await zr(u);return l.renderer=c.renderer,l.visible=!0,`已为图层应用点密度渲染器:${l.title??l.id},使用字段 ${o.join(", ")}`}catch(u){return`应用点密度渲染器失败:${u instanceof Error?u.message:String(u)}`}}async function Dr({layerId:e,fields:t,colorSchemes:r},o){let{mapView:a}=I(o);return await x({type:"show-legend",data:{layerIds:[e]}},o),await jr({geosceneMap:a.map,geosceneMapView:a,layerId:e,fields:t,colorSchemes:r})}var Lr=s.object({layerId:s.string().describe("要应用点密度渲染器的图层 ID"),fields:s.array(s.string()).describe("点密度渲染器使用的字段,例如人口或计数字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签")}),cs=y(Dr,{name:"dot-density",description:`点密度
|
|
29
|
+
使用点密度显示单个属性的分布,或比较多个属性的密度,仅适用于面图层。
|
|
30
|
+
用途:人口分布、区域内多类别对比、空间分布规律。
|
|
31
|
+
示例:按种族或族群显示人口密度;显示不同地区的作物分布;显示人口普查区的人口特征。
|
|
32
|
+
字段:需要2至8个数值字段。
|
|
33
|
+
关键词:密度、多少、总量、数量。`,schema:Lr});function Or(e){let{fields:t,layer:r,view:o,colorSchemeTags:a}=e,n,l=t[0];return a&&(n=wt({includedTags:a,basemap:o.map?.basemap||"topo"})[0]),{layer:r,view:o,field:l,heatmapScheme:n}}async function Pr(e){return await gt(e)}async function Gr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a}){let n=t,l=e?.allLayers.find(u=>u.id===r);if(!l)return`未找到图层,ID:${r}`;let i={styleName:"heatmap",fields:o,layer:l,view:n,colorSchemeTags:a};try{let u=Or(i),c=await Pr(u);return l.renderer=c.renderer,l.visible=!0,`已为图层应用热力图渲染器:${l.title??l.id},使用字段 ${o.join(", ")}`}catch(u){return`应用热力图渲染器失败:${u instanceof Error?u.message:String(u)}`}}async function Vr({layerId:e,fields:t,colorSchemes:r},o){let{mapView:a}=I(o);return await x({type:"show-legend",data:{layerIds:[e]}},o),await Gr({geosceneMap:a.map,geosceneMapView:a,layerId:e,fields:t,colorSchemes:r})}var Qr=s.object({layerId:s.string().describe("要应用热力图渲染器的图层 ID"),fields:s.array(s.string()).describe("热力图渲染器使用的字段,通常表示点密度"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签")}),us=y(Vr,{name:"heatmap",description:`标签:热力图
|
|
34
|
+
说明:用看起来更热、更亮的颜色表示高密度区域,仅适用于点图层。
|
|
35
|
+
关键词:密度、热力图、热点、规律、聚集。
|
|
36
|
+
示例:创建热力图。
|
|
37
|
+
字段:通常不需要字段,或只需要一个数值字段。`,schema:Qr});function Br(e){let{fields:t,layer:r,view:o,styleName:a,colorSchemeTags:n}=e,l;return n&&(l=vt({geometryType:r.geometryType,includedTags:n,numColors:Math.min(t.length,10)})[0]),{layer:r,view:o,fields:t.map(i=>({name:i})).slice(0,9),outlineOptimizationEnabled:!0,sizeOptimizationEnabled:!0,includeSizeVariable:a.includes("Size"),predominanceScheme:l}}async function Ur(e){return await bt(e)}async function Kr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,includeSize:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:n?"predominance-size":"predominance",fields:o,layer:i,view:l,colorSchemeTags:a};try{let c=Br(u),d=await Ur(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用主导类别渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用主导类别渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function Wr({layerId:e,fields:t,colorSchemes:r,includeSize:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await Kr({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,includeSize:o})}var Hr=s.object({layerId:s.string().describe("要应用主导类别渲染器的图层 ID"),fields:s.array(s.string()).describe("主导类别渲染器使用的相互比较的类别字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),includeSize:s.boolean().optional().describe("是否同时使用大小表达总量(predominance-size)")}),ds=y(Wr,{name:"predominance",description:`标签:主导类别
|
|
38
|
+
说明:比较具有相同主题和计量单位的属性,显示哪一项最高。
|
|
39
|
+
关键词:主导、胜出、竞争、最多、最常见、最高。
|
|
40
|
+
示例:比较玉米、小麦、棉花面积,显示各地区主要收获作物。
|
|
41
|
+
字段:需要2至10个数值字段。
|
|
42
|
+
|
|
43
|
+
标签:主导类别和大小
|
|
44
|
+
说明:显示最高类别,同时以符号大小表示所有类别的总量。
|
|
45
|
+
关键词:主导、最多、常见、总量、数量、比例大小、分级大小、总和。
|
|
46
|
+
示例:显示各地区主导作物,并按所有类别总量改变符号大小。
|
|
47
|
+
字段:需要2至10个数值字段。`,schema:Hr});function Jr(e){let{fields:t,layer:r,view:o,colorSchemeTags:a}=e,n,l={field:t[0]},i={field:t[1]};return a&&(n=St({geometryType:r.geometryType,includedTags:a})[0]),{layer:r,view:o,field1:l,field2:i,outlineOptimizationEnabled:!0,sizeOptimizationEnabled:!0,relationshipScheme:n}}async function Zr(e){return await Tt(e)}async function Yr({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a}){let n=t,l=e?.allLayers.find(u=>u.id===r);if(!l)return`未找到图层,ID:${r}`;let i={styleName:"relationship",fields:o,layer:l,view:n,colorSchemeTags:a};try{let u=Jr(i),c=await Zr(u);return l.renderer=c.renderer,l.visible=!0,`已为图层应用关系渲染器:${l.title??l.id},使用字段 ${o.join(", ")}`}catch(u){return`应用关系渲染器失败:${u instanceof Error?u.message:String(u)}`}}async function Xr({layerId:e,fields:t,colorSchemes:r},o){let{mapView:a}=I(o);return await x({type:"show-legend",data:{layerIds:[e]}},o),await Yr({geosceneMap:a.map,geosceneMapView:a,layerId:e,fields:t,colorSchemes:r})}var eo=s.object({layerId:s.string().describe("要应用关系渲染器的图层 ID"),fields:s.array(s.string()).describe("关系渲染器使用的两个字段,用于双变量可视化"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签")}),ps=y(Xr,{name:"relationship",description:`标签:关系
|
|
48
|
+
说明:叠加两个色带,表达两个数值属性的关系。
|
|
49
|
+
关键词:关系、相关性、比较、双变量分级设色、双变量颜色。
|
|
50
|
+
示例:显示树木高度与碳储量的关系。
|
|
51
|
+
字段:需要两个数值字段。`,schema:eo});function to(e){let{fields:t,layer:r,view:o,theme:a}=e,n=t[0];return{layer:r,view:o,startTime:n,endTime:new Date,theme:a,sizeOptimizationEnabled:!0,outlineOptimizationEnabled:!0}}async function ro(e){return await xt(e)}async function oo({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,theme:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:"size-age",fields:o,layer:i,view:l,colorSchemeTags:a,theme:n};try{let c=to(u),d=await ro(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用大小年龄渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用大小年龄渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function ao({layerId:e,fields:t,colorSchemes:r,theme:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await oo({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,theme:o})}var no=s.object({layerId:s.string().describe("要应用大小年龄渲染器的图层 ID"),fields:s.array(s.string()).describe("大小年龄渲染器使用的日期字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),theme:s.enum(["above-and-below","above","below","centered-on","extremes","high-to-low"]).optional().describe("可选的大小渐变主题")}),ms=y(ao,{name:"size-age",description:`标签:年龄(大小)
|
|
52
|
+
说明:用连续变化的符号大小表示要素年龄,即开始日期至结束日期的时间长度。
|
|
53
|
+
关键词:自从、年龄、多久、多大。
|
|
54
|
+
示例:让较老要素的符号大于较新要素。
|
|
55
|
+
字段:至少需要一个日期字段。`,schema:no});function io(e){let{fields:t,layer:r,view:o}=e,{theme:a}=e,n=t[1],l=t[0];return{layer:r,view:o,field:l,normalizationField:n,theme:a,sizeOptimizationEnabled:!0,outlineOptimizationEnabled:!0}}async function so(e){return await Et(e)}async function lo({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,theme:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:"size",fields:o,layer:i,view:l,colorSchemeTags:a,theme:n};try{let c=io(u),d=await so(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用大小渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用大小渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function co({layerId:e,fields:t,colorSchemes:r,theme:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await lo({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,theme:o})}var uo=s.object({layerId:s.string().describe("要应用大小渲染器的图层 ID"),fields:s.array(s.string()).describe("大小渲染器使用的数值字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),theme:s.enum(["above-and-below","above","below","centered-on","extremes","high-to-low"]).optional().describe("可选的大小渐变主题")}),hs=y(co,{name:"size",description:`标签:计数和数量(大小)
|
|
56
|
+
说明:以连续变化的符号大小表示数值或等级数据。
|
|
57
|
+
关键词:分级大小、比例大小、多少、总量、数量、大小。
|
|
58
|
+
示例:根据总人口改变点的大小。
|
|
59
|
+
字段:需要一个数值字段,可指定第二个数值字段对其归一化。
|
|
60
|
+
|
|
61
|
+
标签:连续时间线(大小)
|
|
62
|
+
说明:以连续变化的符号大小表示日期。
|
|
63
|
+
关键词:分级大小、比例大小、分级、多少、总量、数量、何时。
|
|
64
|
+
示例:根据工单完成日期改变要素大小。
|
|
65
|
+
字段:需要一个日期字段。`,schema:uo});function po(e){let{fields:t,layer:r,view:o,colorSchemeTags:a}=e,n=t[0],l=t[1],i=t[2],u;return a&&(u=Nt({geometryType:r.geometryType,includedTags:a})[0]),{layer:r,view:o,field:n,field2:l,field3:i,outlineOptimizationEnabled:!0,sizeOptimizationEnabled:!0,typeScheme:u}}async function mo(e){return await It(e)}async function ho({geosceneMap:e,geosceneMapView:t,layerId:r,fields:o,colorSchemes:a,theme:n}){let l=t,i=e?.allLayers.find(c=>c.id===r);if(!i)return`未找到图层,ID:${r}`;let u={styleName:"type",fields:o,layer:i,view:l,colorSchemeTags:a,theme:n};try{let c=po(u),d=await mo(c);return i.renderer=d.renderer,i.visible=!0,`已为图层应用类型渲染器:${i.title??i.id},使用字段 ${o.join(", ")}`}catch(c){return`应用类型渲染器失败:${c instanceof Error?c.message:String(c)}`}}async function fo({layerId:e,fields:t,colorSchemes:r,theme:o},a){let{mapView:n}=I(a);return await x({type:"show-legend",data:{layerIds:[e]}},a),await ho({geosceneMap:n.map,geosceneMapView:n,layerId:e,fields:t,colorSchemes:r,theme:o})}var yo=s.object({layerId:s.string().describe("要应用类型渲染器的图层 ID"),fields:s.array(s.string()).describe("类型渲染器使用的分类字段"),colorSchemes:s.array(s.string()).optional().describe("可选的配色方案标签"),theme:s.enum(["above-and-below","above","below","centered-on","extremes","high-to-low"]).optional().describe("可选的配色主题")}),fs=y(fo,{name:"type",description:`标签:类型(唯一值符号)
|
|
66
|
+
说明:按类别使用不同颜色或形状表示要素,例如树种、道路等级、省份。
|
|
67
|
+
关键词:分类、类别、类型、唯一值、离散、兴趣点、地区、分组。
|
|
68
|
+
示例:按所属地区为要素着色。
|
|
69
|
+
字段:需要一个字符串、数字或日期字段,通常为字符串。`,schema:yo}),ys=b.Root({...L(),vectorSearchLayerIds:b(),vectorSearchFieldResults:b(),layerFieldInfo:b(),selectedLayerId:b()}),gs=b.Root({...L(),vectorSearchLayerIds:b(),vectorSearchFieldResults:b(),layerFieldInfo:b(),queryResponse:b(),dataExplorationMessages:b({reducer:D,default:()=>[]})}),go=["mapView"];function M(e){let t=e?.configurable?.context;if(!t||typeof t!="object")throw new Error("DataExplorationAgent 缺少上下文");let r=go.filter(o=>!(o in t));if(r.length)throw new Error(`DataExplorationAgent 缺少上下文:${r.join(", ")}`);return t}var wo=e=>{let t=e.map?.allLayers.filter(o=>o.type==="feature"),r=0;return t?.forEach(o=>{let a=o;a.featureEffect&&(a.featureEffect=null,r++)}),r>0?`已清除过滤条件,涉及 ${r} 个图层。视图保持不变。`:"没有需要清除的过滤条件。视图保持不变。"},bo=async(e,t)=>{let{mapView:r}=M(t);return wo(r)},vo=y(bo,{name:"clearFilters",description:"清除地图中所有要素效果和过滤条件,保留当前视图。用于“清除过滤”“重置过滤”“移除过滤”“显示所有要素”,或仅移除强调效果而不定位的请求。",schema:s.object({})}),To=async e=>{e.map?.allLayers.filter(r=>r.type==="feature")?.forEach(r=>{let o=r;o.featureEffect&&(o.featureEffect=null)});let t=e.map.initialViewProperties?.viewpoint?.targetGeometry;return t?(await e.goTo(t),"已清除所有过滤条件并返回初始范围。"):"已清除所有过滤条件,但无法确定初始范围。"},So=async(e,t)=>{let{mapView:r}=M(t);return await To(r)},xo=y(So,{name:"resetMap",description:"清除地图中所有要素效果和过滤条件,并返回初始视图范围。用于“重置地图”“重新开始”,或同时要求清除过滤与返回初始视图的请求。",schema:s.object({})}),ze=750;function Y(e){return"point"in e&&e.point!==void 0}function P(e){return"layerId"in e&&e.layerId!==void 0}var ee=async(e,t)=>{if(Y(e)){let{point:r}=e;return{geometry:new De({x:r.x,y:r.y,spatialReference:r.spatialReference?{wkid:r.spatialReference.wkid}:t.spatialReference})}}if(P(e)){let r=t.map?.allLayers.find(n=>n.id===e.layerId);if(!r)return{error:`未找到几何来源图层,ID:${e.layerId}`};let o=r.title??r.id,a=e.where?.trim()||"1=1";try{let n=await r.queryFeatures({where:a,returnGeometry:!0,outSpatialReference:t.spatialReference,num:ze+1});if(!n.features.length)return{error:`几何来源图层“${o}”中没有符合以下 where 条件的要素:${a}`};if(n.features.length>ze)return{error:`几何来源图层“${o}”的过滤条件匹配了过多要素(${n.features.length}+),请缩小几何来源图层的过滤范围。`};let l=n.features.map(u=>u.geometry).filter(u=>!!u);if(!l.length)return{error:"匹配的几何来源要素中没有有效几何。"};let i=l.length===1?l[0]:Oe.executeMany(l);return i?(i.spatialReference||(i.spatialReference=t.spatialReference),{geometry:i}):{error:"合并来源图层几何失败。"}}catch(n){return{error:`查询几何失败:${String(n)}`}}}return{error:"提供的几何配置无效"}},Eo=async(e,t,r,o,a,n)=>{let l=e.map?.allLayers.find(u=>u.id===t);if(!l)return{success:!1,error:`图层 '${t}' 不存在。`};let i=l.createQuery();i.where=r??"1=1",o&&(i.geometry=o,i.spatialRelationship="intersects",a&&(i.distance=a),n&&(i.units=n));try{let{extent:u,count:c}=await l.queryExtent(i);return!u||c===0?{success:!1,error:`没有符合过滤条件的要素(where:${i.where}${o?",已使用空间过滤":""})`}:(await e.goTo(u),{success:!0})}catch(u){return{success:!1,error:u instanceof Error?u.message:String(u)}}},Io=async(e,t,r,o,a,n)=>{let l=t.map?.allLayers.find(m=>m.id===e.layerId);if(!l)return`未找到目标图层,ID:${e.layerId}`;let i;if(a){let m=await ee(a,t);if("error"in m)return m.error;i=m.geometry}if(l.featureEffect=null,l.featureEffect=new kt({filter:new Le({...e.objectIds?.length?{objectIds:e.objectIds}:{where:e.where},geometry:i,spatialRelationship:"intersects",distance:a?.distance,units:a?.units}),includedEffect:r,excludedEffect:o}),l.visible=!0,n)return`已应用要素效果到“${l.title??e.layerId}”,范围为当前地图视图。`;let u=e.objectIds?.length?`${l.objectIdField} IN (${e.objectIds.join(",")})`:e.where,c=await Eo(t,e.layerId,u,i,a?.distance,a?.units),d=l.title??e.layerId;return c.success?`已应用要素效果到目标图层“${l.title??e.layerId}"${a&&"layerId"in a?`,几何来自图层“${a.layerId}"`:""}.`:`已应用过滤条件到“${d}”,但没有匹配的要素。${c.error}`},No=["feet","kilometers","meters","miles","nautical-miles","us-nautical-miles"],$=s.enum(No),ko=async({targetLayer:e,geometryFilter:t,useCurrentExtent:r,includedEffect:o="drop-shadow(2px, 2px, 2px, gray)",excludedEffect:a="grayscale(100%) opacity(60%) blur(2px)"},n)=>{let{mapView:l}=M(n);return await Io(e,l,o,a,t,r)},$o=s.object({layerId:s.string().describe("用作空间过滤几何来源的图层 layerId。"),where:s.string().describe("SQL-92 where 子句,用于选择作为过滤几何来源的要素。"),distance:s.number().optional().describe("几何周围的缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),Fo=s.object({point:s.object({x:s.number().describe("导航结果的 X 坐标,即经度"),y:s.number().describe("导航结果的 Y 坐标,即纬度"),spatialReference:s.object({wkid:s.number().describe("空间参考 WKID,例如4326表示 WGS84")}).optional().describe("空间参考,未提供时默认使用地图空间参考。")}).describe("之前导航或地理编码结果中的点坐标"),distance:s.number().optional().describe("点周围的可选缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),Mo=s.object({targetLayer:s.object({layerId:s.string().describe("要设置要素效果的图层 layerId。"),where:s.string().describe("SQL-92 where 子句,用于选择需要强调的要素。"),objectIds:s.array(s.number()).optional().describe("之前查询结果中的 objectIds 数组。当查询返回 objectIds,例如前 N 项结果时,使用它代替 where。提供此参数时优先于 where。")}),geometryFilter:s.union([$o,Fo]).optional().describe("空间查询使用的可选几何过滤参数。"),useCurrentExtent:s.boolean().optional().describe("之前的查询使用当前地图范围作为空间过滤条件时设为 true,确保效果只作用于当前视图中的要素。默认 false。"),includedEffect:s.string().default("drop-shadow(2px, 2px, 2px, gray)").describe("对满足过滤条件的要素应用的效果。有效值包括 bloom、blur、brightness、contrast、drop-shadow、grayscale、hue-rotate、invert、opacity、saturate、sepia。未指定时优先使用默认效果。"),excludedEffect:s.string().default("grayscale(100%) opacity(60%) blur(2px)").describe("对不满足过滤条件的要素应用的效果。有效值包括 bloom、blur、brightness、contrast、drop-shadow、grayscale、hue-rotate、invert、opacity、saturate、sepia。未指定时优先使用默认效果。")}),Ao=y(ko,{name:"setFeatureEffect",description:"根据过滤参数和要素效果,为指定图层中满足条件的要素设置强调效果。未提供效果信息时使用默认效果。",schema:Mo}),Ro=new Set(["date","esrifieldtypedate","date-only","dateonly","esrifieldtypedateonly","time-only","timeonly","esrifieldtypetimeonly","timestamp-offset","timestampoffset","esrifieldtypetimestampoffset"]),Ve=e=>{if(!e)return!1;let t=e.toLowerCase();return Ro.has(t)},le=e=>{if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"&&Number.isFinite(e)){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}return null},qo=e=>!e||e==="system"?Intl.DateTimeFormat().resolvedOptions().timeZone:e==="unknown"?"UTC":e,Co=e=>{if(typeof e=="string"&&e)return e;let t=le(e);return t?t.toISOString().slice(0,10):null},ws=()=>{let e=new Date().getTimezoneOffset(),t=e<=0?"+":"-",r=Math.floor(Math.abs(e)/60).toString().padStart(2,"0"),o=(Math.abs(e)%60).toString().padStart(2,"0"),a=`${t}${r}:${o}`;return{userTimezone:Intl.DateTimeFormat().resolvedOptions().timeZone,userTimezoneOffset:a}},_o=(e,t,r)=>{let o=t?.toLowerCase();if(o&&!Ve(o))return e;if(o==="date-only"){let n=Co(e);return n?$t(n,W("short-date")):e}if(o==="time-only"){if(typeof e=="string"&&e)return Ft(e,W("long-time"));let n=le(e);return n?qe(n,{...W("long-time"),timeZone:"UTC"}):e}let a=le(e);return a?qe(a,{...W("short-date-short-time"),timeZone:qo(r)}):e},Qe=(e,t,r)=>{if(e&&typeof e!="function"){let o="getField"in r&&r.getField?.(e),a=o&&"getFieldDomain"in r&&r.getFieldDomain?r.getFieldDomain(o.name):null;if(a?.type==="coded-value"){let n=a.codedValues.find(l=>l.code===t);return n?n.name:null}}return null},zo=e=>!e||e==="system"?Intl.DateTimeFormat().resolvedOptions().timeZone:e==="unknown"?"UTC":e,jo=e=>{if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"&&Number.isFinite(e)){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}if(typeof e=="string"&&e){let t=new Date(e);return Number.isNaN(t.getTime())?null:t}return null},Do=(e,t)=>{if(typeof e!="number")return e;let r={};t.minimumFractionDigits!==void 0&&(r.minimumFractionDigits=t.minimumFractionDigits),t.maximumFractionDigits!==void 0&&(r.maximumFractionDigits=t.maximumFractionDigits),t.useGrouping==="always"?r.useGrouping=!0:t.useGrouping==="never"&&(r.useGrouping=!1);try{return new Intl.NumberFormat(void 0,r).format(e)}catch{return e}},Lo=(e,t,r)=>{let o=jo(e);if(!o)return e;let a={};t.dateStyle?a.dateStyle=t.dateStyle:(t.year&&(a.year=t.year),t.month&&(a.month=t.month)),t.timeStyle&&(a.timeStyle=t.timeStyle),t.timeStyle&&t.hour12==="always"?a.hour12=!0:t.timeStyle&&t.hour12==="never"&&(a.hour12=!1),a.timeZone=zo(r);try{return new Intl.DateTimeFormat(void 0,a).format(o)}catch{return e}},Be=(e,t)=>e.getFieldAlias?.(t)??e.fieldsIndex?.get(t)?.alias??e.fieldsIndex?.get(t)?.name??t,Ue=(e,t,r,o,a)=>{if(r==null)return r;let n=e.getFieldConfiguration?.(t)?.fieldFormat;return n?.type==="number"?Do(r,n):n?.type==="date-time"?!o||Ve(o)?Lo(r,n,a):r:_o(r,o,a)},Oo=(e,t,r,o)=>{let a=e.fieldsIndex?.get(t),n=Qe(t,r,e)??r;return Ue(e,t,n,a?.type,o)},Po=(e,t)=>Be(e,t),Ke=(e,t,r)=>{let o=e.objectIdField,a=t.features.map(l=>l.attributes[o]),n=t.features.map(l=>{let i=l.attributes,u={};return e.fields.forEach(c=>{if(!Object.hasOwn(i,c.name))return;let d=i[c.name];if(c.name===o){u[c.name]=d;return}let m=Qe(c.name,d,e)??d,p=Be(e,c.name);u[p]=Ue(e,c.name,m,c.type,r)}),u});return{objectIds:a,attributes:n}},Go=(e,t,r)=>{let o=e.createQuery();return o.outFields=[t],o.where=r||"1=1",o.num=1,o},Vo=async(e,t,r,o)=>{let a=o.map?.allLayers.find(d=>d.id===e),n=Go(a,t,r.where),l=(await a.queryFeatures(n)).features[0],i=l?l.attributes[t]:null,u=Oo(a,t,i,o.timeZone),c=Po(a,t);return{tool:"getAttribute",layerName:a.title??e,summary:`${c} = ${u}`,details:{fieldName:t,fieldAlias:c!==t?c:void 0,value:u,where:r.where}}};async function Qo({layerId:e,fieldName:t,query:r},o){let{mapView:a}=M(o),n=await Vo(e,t,r,a);return JSON.stringify(n,null,2)}var Bo=s.object({layerId:s.string().describe("要读取属性值的字段所属图层 layerId。"),fieldName:s.string().describe("要读取值的字段或属性名称。"),query:s.object({where:s.string().describe("用于选择要读取属性值的要素的 SQL-92 where 子句。")})}),Uo=y(Qo,{name:"getAttribute",description:"返回指定要素的一个属性值。",schema:Bo}),we=(e,t,r)=>{if(!(r?e.hasAllFeaturesInView:e.hasAllFeatures))return!1;let o=new Set((e.availableFields??[]).map(a=>a.toLowerCase()));return o.has("*")?!0:t.every(a=>o.has(a.toLowerCase()))};function X(e,t){let r=e??"";return t!=null&&t&&(r=r?`(${r}) AND (${t})`:t),r||null}var Ko=async e=>{let{targetLayer:t,fieldName:r,statisticType:o,mapView:a,layersAndFieldsRegistry:n,geometryFilter:l}=e,i=a.map?.allLayers.find(g=>g.id===t.layerId);if(!i)throw new Error(`图层 '${t.layerId}' 不存在。`);let u=await a.whenLayerView(i),c=n.get(t.layerId)?.fieldRegistry.get(r),d=c?.alias;if(!c)throw new Error(`字段 '${r}' 不存在。`);let m,p;if(l){let g=await ee(l,a);if("error"in g)throw new Error(g.error);if(!g.geometry)throw P(l)?new Error(`没有符合以下条件的要素:${l.where}`):new Error("创建几何失败");if(P(l)){let T=a.map?.allLayers.find(E=>E.id===l.layerId);m={geometryLayerName:T?.title??T?.id,geometryLayerId:l.layerId,geometryWhere:l.where,distance:l.distance,units:l.units,applied:!0}}else Y(l)&&(m={point:l.point,distance:l.distance,units:l.units,applied:!0});p=new Le({geometry:g.geometry,distance:l.distance,units:l.units,spatialRelationship:"intersects"})}let w=we(u,[r],!1),f=null,h=null,v=10;if(c.type!=="geometry"&&c.type!=="oid"&&c.type!=="global-id")try{let g={layer:i,useFeaturesInView:w,view:w?a:void 0,field:r,sqlWhere:X(i.definitionExpression,t.where),...p&&{filter:p},outStatisticTypes:{include:[o]}};f=await Mt(g);let T=["string","small-integer","integer"],E=c.domain?.type==="coded-value"?c.domain:null;(T.includes(c.type)||E)&&(h=(await At({layer:i,useFeaturesInView:w,view:w?a:void 0,field:r,sqlWhere:X(i.definitionExpression,t.where),...p&&{filter:p}})).uniqueValueInfos.sort((R,Xe)=>Xe.count-R.count).slice(0,v)),h&&c.domain?.type==="coded-value"&&(h=h.map(R=>({...R,value:E?E.getName(R.value)??R.value:R.value})))}catch(g){console.error("统计错误:",g)}return{tool:"getStatistics",layerName:i.title??t.layerId,summary:`${o} = ${typeof f?.[o]=="number"?f[o]:"N/A"}`,details:{fieldName:r,fieldAlias:d,statisticType:o,statistic:f?.[o]??null,summaryStatistics:f,uniqueValues:h,where:t.where,spatialFilterInfo:m}}};async function Wo({targetLayer:e,fieldName:t,statisticType:r,geometryFilter:o},a){let n=Ge(a,"layersAndFieldsRegistry"),{mapView:l}=M(a),i=await Ko({targetLayer:e,fieldName:t,statisticType:r,mapView:l,layersAndFieldsRegistry:n,geometryFilter:o});return JSON.stringify(i,null,2)}var Ho=s.object({layerId:s.string().describe("用作空间过滤几何来源的图层 layerId。"),where:s.string().describe("SQL-92 where 子句,用于选择作为过滤几何来源的要素。"),distance:s.number().optional().describe("几何周围的缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),Jo=s.object({point:s.object({x:s.number().describe("导航结果的 X 坐标,即经度"),y:s.number().describe("导航结果的 Y 坐标,即纬度"),spatialReference:s.object({wkid:s.number().describe("空间参考 WKID,例如4326表示 WGS84")}).optional().describe("空间参考,未提供时默认使用地图空间参考。")}).describe("之前导航或地理编码结果中的点坐标"),distance:s.number().optional().describe("点周围的可选缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),Zo=s.object({targetLayer:s.object({layerId:s.string().describe("要读取属性值的字段所属图层 layerId。"),where:s.string().describe("用于选择要读取属性值的要素的 SQL-92 where 子句。")}),geometryFilter:s.union([Ho,Jo]).optional().describe("空间查询的几何过滤条件。使用 point 和导航结果的 x/y 坐标查找该点位置的要素(点落入面);使用 layerId/where 按其他图层的要素进行空间过滤。"),fieldName:s.string().describe("要统计的字段名称,严禁使用 OBJECTID,应选择其他字段。"),statisticType:s.enum(["avg","max","median","min","stddev","sum","variance","nullcount","count"]).describe("要计算的统计类型。")}),Yo=y(Wo,{name:"getStatistics",description:`对匹配要素的某个数值字段计算单项聚合统计,例如 max、min、avg、sum、median、stddev、variance;对分类字段还返回频数分析。
|
|
70
|
+
|
|
71
|
+
适用:
|
|
72
|
+
- 某字段的平均值、最大值、最小值、总和。
|
|
73
|
+
- 某字段最常见或出现最多的值。
|
|
74
|
+
- 需要对多个要素进行数学聚合的问题。
|
|
75
|
+
|
|
76
|
+
不适用:
|
|
77
|
+
- 有多少要素匹配条件:使用 queryFeatures,它返回 totalCount。
|
|
78
|
+
- 显示、列出或查找要素:使用 queryFeatures。
|
|
79
|
+
- 对符合条件的要素简单计数:使用 queryFeatures。
|
|
80
|
+
|
|
81
|
+
仅在答案需要对字段值聚合计算时调用,不能只为计数或列出要素而调用。`,schema:Zo}),Xo=e=>e.flatMap(t=>t.split(",")).map(t=>t.trim()).map(t=>t.split(/\s+/u)[0]?.replace(/^"|"$/gu,"")).filter(t=>!!t),ea=async(e,t,r,o,a)=>{let n=r.map?.allLayers.find(p=>p.id===e.layerId),l=await r.whenLayerView(n),i=n.title??e.layerId,u;if(o){let p=await ee(o,r);if("error"in p)return{tool:"getTopFeatures",layerName:i,summary:"查找几何失败",details:{error:p.error}};if(!p.geometry)return{tool:"getTopFeatures",layerName:i,summary:"没有符合几何过滤条件的要素",details:{error:`没有符合以下条件的要素:${"where"in o?o.where:"未知条件"}`}};u=p.geometry}else a&&(u=r.extent.clone());let c=t.groupByFields&&t.groupByFields.length>0,d=n.objectIdField,m=e.outFields.includes("*")?["*"]:[...new Set([...e.outFields,d])];try{let p;if(c){let h=new Rt({where:e.where||"1=1",outFields:m,orderByFields:e.orderByFields,geometry:u,spatialRelationship:u?"intersects":void 0,distance:o?.distance,units:o?.units,topFilter:new qt({topCount:t.topCount,groupByFields:t.groupByFields,orderByFields:t.orderByFields})});p=await n.queryTopFeatures(h)}else{let h=n.createQuery();h.where=X(n.definitionExpression,e.where||"1=1"),h.outFields=m.length?m:["*"],h.orderByFields=t.orderByFields,h.returnGeometry=!1,h.num=t.topCount,u&&(h.geometry=u,h.spatialRelationship="intersects"),o?.distance&&(h.distance=o.distance),o?.units&&(h.units=o.units),h.outSpatialReference=r.spatialReference;let v=[...new Set([...e.outFields,...Xo(t.orderByFields)])],g=we(l,v,a??!1);try{p=g?await l.queryFeatures(h):await n.queryFeatures(h)}catch(T){console.warn("客户端查询失败,改为服务端查询:",T),p=await n.queryFeatures(h)}}let w=p.features.map(h=>h.attributes[d]),{attributes:f}=Ke(n,p,r.timeZone);return{tool:"getTopFeatures",layerName:i,summary:`已提取前 ${t.topCount} 个要素`,details:{topCount:t.topCount,attributes:f,objectIds:w,objectIdField:d,where:e.where,orderByFields:t.orderByFields,...c&&{groupByFields:t.groupByFields}}}}catch(p){return{tool:"getTopFeatures",layerName:i,summary:"查询失败",details:{error:p instanceof Error?p.message:String(p)}}}},ta=async({targetLayer:e,topFilter:t,geometryFilter:r,useCurrentExtent:o},a)=>{let{mapView:n}=M(a),l=await ea(e,t,n,r,o);return JSON.stringify(l,null,2)},ra=s.object({layerId:s.string().describe("用作空间过滤几何来源的图层 layerId。"),where:s.string().describe("SQL-92 where 子句,用于选择作为过滤几何来源的要素。"),distance:s.number().optional().describe("几何周围的缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),oa=s.object({point:s.object({x:s.number().describe("导航结果的 X 坐标,即经度"),y:s.number().describe("导航结果的 Y 坐标,即纬度"),spatialReference:s.object({wkid:s.number().describe("空间参考 WKID,例如4326表示 WGS84")}).optional().describe("空间参考,未提供时默认使用地图空间参考。")}).describe("之前导航或地理编码结果中的点坐标"),distance:s.number().optional().describe("点周围的可选缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),aa=s.object({targetLayer:s.object({layerId:s.string().describe("要读取属性值的字段所属图层 layerId。"),where:s.string().describe("用于选择要读取属性值的要素的 SQL-92 where 子句。"),orderByFields:s.array(s.string().describe("查询结果的排序字段及排序方向。")),outFields:s.array(s.string().describe("向用户展示的输出字段,应包含名称或 ID 等要素标识,以及用户需要的值。不确定时选择全部字段(\"*\")。").default("*"))}),geometryFilter:s.union([ra,oa]).optional().describe("空间查询的几何过滤条件。使用 point 和导航结果的 x/y 坐标查找该点位置的要素(点落入面);使用 layerId/where 按其他图层的要素进行空间过滤。"),topFilter:s.object({topCount:s.number().describe("每组返回的前几条要素数量。"),orderByFields:s.array(s.string().describe("用于排名的字段及 ASC/DESC,必须使用已有字段名,不能使用聚合函数。")),groupByFields:s.array(s.string().describe("结果分组字段,每组返回前 N 个要素。"))}).required(),useCurrentExtent:s.boolean().optional().describe("仅当用户明确询问“我的视图内”“我的地图上”“我正在看的”要素时设为 true,默认 false,查询整个图层。")}),na=y(ta,{name:"getTopFeatures",description:"按已有字段值排序,返回前 N 个要素。适用于基于人口、数值、日期、深度等已有字段的“最高”“最低”“前 N 个”问题。orderByFields 必须使用真实字段名及 ASC/DESC。不要使用 COUNT()、SUM()、AVG() 等聚合函数,聚合应使用 getStatistics。",schema:aa}),se=25,ia=e=>e.flatMap(t=>t.split(",")).map(t=>t.trim()).map(t=>t.split(/\s+/u)[0]?.replace(/^"|"$/gu,"")).filter(t=>!!t),sa=async(e,t,r,o)=>{let a=t.map?.allLayers.find(v=>v.id===e.layerId),n=await t.whenLayerView(a),l=a.title??e.layerId,i;if(r){let v=await ee(r,t);if("error"in v){let g={error:v.error};if(P(r)){let T=t.map?.allLayers.find(E=>E.id===r.layerId);g.geometryLayerName=T?.title??T?.id,g.geometryLayerId=r.layerId,g.geometryWhere=r.where}else Y(r)&&(g.point=r.point);return{tool:"queryFeatures",layerName:l,summary:"查找几何失败",details:g}}if(!v.geometry){let g={};if(P(r)){let T=t.map?.allLayers.find(E=>E.id===r.layerId);g.error=`没有符合以下条件的要素:${r.where}`,g.geometryLayerName=T?.title??T?.id,g.geometryLayerId=r.layerId,g.geometryWhere=r.where}else Y(r)&&(g.error="创建点几何失败",g.point=r.point);return{tool:"queryFeatures",layerName:l,summary:"没有符合几何过滤条件的要素",details:g}}i=v.geometry}else o&&(i=t.extent.clone());let u=[...new Set([...e.outFields,...ia(e.orderByFields)])],c=we(n,u,o??!1),d=a.objectIdField,m=a.createQuery();m.where=X(a.definitionExpression,e.where||"1=1"),m.outFields=e.outFields.includes("*")?["*"]:[...new Set([...e.outFields,d])],m.orderByFields=e.orderByFields,i&&(m.geometry=i,m.spatialRelationship="intersects"),r?.distance&&(m.distance=r.distance),r?.units&&(m.units=r.units),m.outSpatialReference=t.spatialReference;let p,w;try{p=c?await n.queryFeatureCount(m):await a.queryFeatureCount(m),p>0&&p<=se&&(w=c?await n.queryFeatures(m):await a.queryFeatures(m))}catch(v){console.warn("客户端查询失败,改为服务端查询:",v),p=await a.queryFeatureCount(m),p>0&&p<=se&&(w=await a.queryFeatures(m))}let{objectIds:f,attributes:h}=w?Ke(a,w,t.timeZone):{objectIds:void 0,attributes:void 0};return{tool:"queryFeatures",layerName:l,summary:`${p} 个要素`,details:{totalCount:p,where:e.where,orderByFields:e.orderByFields,outFields:e.outFields,...f&&{objectIds:f,objectIdField:d},...h&&{attributes:h},...p>se&&{note:`${p} 个要素。`}}}};async function la({targetLayer:e,geometryFilter:t,useCurrentExtent:r},o){let{mapView:a}=M(o),n=await sa(e,a,t,r);return JSON.stringify(n,null,2)}var ca=s.object({layerId:s.string().describe("用作空间过滤几何来源的图层 layerId。"),where:s.string().describe("SQL-92 where 子句,用于选择作为过滤几何来源的要素。"),distance:s.number().optional().describe("几何周围的缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),ua=s.object({point:s.object({x:s.number().describe("导航结果的 X 坐标,即经度"),y:s.number().describe("导航结果的 Y 坐标,即纬度"),spatialReference:s.object({wkid:s.number().describe("空间参考 WKID,例如4326表示 WGS84")}).optional().describe("空间参考,未提供时默认使用地图空间参考。")}).describe("之前导航或地理编码结果中的点坐标"),distance:s.number().optional().describe("点周围的可选缓冲距离。"),units:$.optional().describe("缓冲距离的单位。")}),da=s.object({targetLayer:s.object({layerId:s.string().describe("要读取属性值的字段所属图层 layerId。"),where:s.string().describe("SQL-92 where 子句。重要:使用 geometryFilter.point 进行点落入面查询时,设为 '1=1',返回与点相交的全部要素;只有用户在空间查询之外明确要求属性过滤时,才添加属性条件。"),orderByFields:s.array(s.string().describe("查询结果的排序字段及排序方向。")),outFields:s.array(s.string().describe("向用户展示的输出字段,应包含名称或 ID 等要素标识,以及用户需要的值。不确定时选择全部字段(\"*\")。").default("*"))}),geometryFilter:s.union([ca,ua]).optional().describe("空间查询的几何过滤条件。使用 point 和导航结果的 x/y 坐标查找该点位置的要素(点落入面);使用 layerId/where 按其他图层的要素进行空间过滤。"),useCurrentExtent:s.boolean().optional().describe("仅当用户明确询问当前视图中的要素,或指代之前通过当前范围识别的要素,例如“这些”“那些”“它们”“同一批”时设为 true。默认 false,查询整个图层。")}),pa=y(la,{name:"queryFeatures",description:`查询图层要素。返回匹配总数;不超过25个时,还返回各要素属性。
|
|
82
|
+
|
|
83
|
+
适用:
|
|
84
|
+
- 显示、列出满足条件的要素。
|
|
85
|
+
- 有多少 X 满足 Y:按条件计数。
|
|
86
|
+
- 哪些要素、查找要素:识别具体要素。
|
|
87
|
+
- 空间查询:查找其他要素附近、内部或相交的要素。
|
|
88
|
+
- 任何需要查看或统计匹配要素数量的问题。
|
|
89
|
+
|
|
90
|
+
这是多数查询的默认工具,不确定时使用它。`,schema:da}),ma=[Uo,Yo,na,pa],bs=[Ao,xo,vo],ha=new K(ma,{handleToolErrors:!1});async function vs(e,t){let{messages:r}=await ha.invoke({messages:e.dataExplorationMessages},t),o=[],a=[];for(let n of r){let l=n.content,i;typeof l!="string"&&(i={tool:n.name??"unknown",layerName:"unknown",summary:"查询失败",details:{error:"跳过非字符串工具输出:",raw:l}});try{typeof l=="string"?i=JSON.parse(l):i={tool:n.name??"unknown",layerName:"unknown",summary:"查询失败",details:{error:"工具输出类型无效",raw:l}}}catch{i={tool:n.name??"unknown",layerName:"unknown",summary:"查询失败",details:{error:l}}}o.push(i),i.details&&typeof i.details=="object"&&"error"in i.details?a.push(`- ${i.tool}:错误——${String(i.details.error)}`):a.push(`- ${i.layerName}: ${i.summary}`)}return await S({text:`图层查询工具执行完成:${a.join(", ")}`},t),{...e,dataExplorationMessages:[...e.dataExplorationMessages,...r],queryResponse:o,status:"success",summary:a.length>0?mr(a.join(`
|
|
91
|
+
`)):"查询已执行。"}}var Ts=b.Root({...L(),helpInternalState:b({reducer:O,default:()=>({toolCallMessage:void 0})})}),fa=(e,t)=>{let r=Array.from(e.values()).find(({layerItem:n})=>n.title?.toLowerCase().includes(t.toLowerCase()));if(!r){let n=Array.from(e.values()).map(l=>l.layerItem.title).join(", ");return`未找到匹配图层“${t}”。可用图层:${n}`}let o=Array.from(r.fieldRegistry.values()),a=o.map(n=>`- **${n.alias||n.name}** (\`${n.name}\`, ${n.type})${n.description?`: ${n.description}`:""}`).join(`
|
|
92
|
+
`);return`**${r.layerItem.title}** 包含 ${o.length} 个字段:
|
|
93
|
+
|
|
94
|
+
${a}`},ya=async({layerTitle:e},t)=>{let r=Ge(t,"layersAndFieldsRegistry");return fa(r,e)},Ss=y(ya,{name:"listLayerFields",description:"按图层标题列出全部字段。仅当用户明确要求查看指定图层的字段、列或属性时使用。一般帮助、能力介绍或列出图层时不得调用。",schema:s.object({layerTitle:s.string().describe("要列出字段的图层标题或部分标题。")})}),xs=b.Root({...L(),intent:b({reducer:(e,t)=>t}),geosceneKnowledgeMessages:b({reducer:D,default:()=>[]}),geosceneKnowledgeToolResult:b({reducer:(e,t)=>t,default:()=>null})});function be(e){let t=e.map?.allLayers.filter(r=>r.type==="knowledge-graph");if(!t||t?.length!==1)throw new Error("知识 Agent 当前仅支持恰好包含一个知识图谱图层的地图。")}function A(e){return!!e?.map&&!("activeLinkChartLayer"in e.map)}async function te(e){!e||A(e)||!e.map?.diagramNodesExtent||await e.goTo(e.map.diagramNodesExtent)}function V(e){let t=e?.configurable?.context;if(!t||typeof t!="object")throw new Error("GeosceneKnowledgeAgent 缺少上下文");if(!("view"in t))throw new Error("缺少视图上下文");let r=t.view;return r.map&&!("activeLinkChartLayer"in r.map)&&be(r),{view:r}}function Es(e){let t=e?.configurable?.context;if(We(e)==="knowledgeGraph")return"knowledgeGraph";let r=t.view;return A(r)?(be(r),"map"):"linkChart"}async function Q(e){let t=e?.configurable?.context;if(We(e)==="knowledgeGraph")return t;{let r=t.view.map;if(r&&"activeLinkChartLayer"in r){let o=r.knowledgeGraph?.url;if(!o)throw new Error("链接图缺少知识图谱 URL。");return{knowledgeGraph:await Ce(o)}}else{be(t.view);let o=(t.view.map?.allLayers.find(a=>a.type==="knowledge-graph")).url;if(!o)throw new Error("地图缺少知识图谱 URL。");return{knowledgeGraph:await Ce(o)}}}}function We(e){let t=e?.configurable?.context;if(!t||typeof t!="object")throw new Error("GeosceneKnowledgeAgent 缺少上下文");if("knowledgeGraph"in t&&"view"in t)throw new Error("知识图谱上下文只能包含 view 或 knowledgeGraph 其中之一,不能同时提供。");if("knowledgeGraph"in t)return"knowledgeGraph";if("view"in t)return"view";throw new Error("GeosceneKnowledgeAgent 上下文必须包含 view 或 knowledgeGraph。")}var ce=class{constructor(t){this.dataModel=t,this.kind="GraphQueryGenerationRequest",this.explainQuery=!0,this.schemaInformation=ue.fromDataModel(t)}},ue=class e{constructor(){this.schemaType="GeosceneGraphSchema",this.entityTypes=[],this.relationshipTypes=[],this.identifierInfo={mappingInfo:{identifierMapsTo:"UniformPropertyIdentifier",identifierPropertyName:"globalid"}}}static fromDataModel(t){let r=new e;for(let o of t.entityTypes)r.entityTypes.push(G.fromEntityType(o));for(let o of t.relationshipTypes)r.relationshipTypes.push(de.fromRelationshipType(o));return r.identifierInfo={mappingInfo:{identifierMapsTo:ga(t.identifierInfo.identifierMappingInfo.identifierInfoType),identifierPropertyName:t.identifierInfo.identifierMappingInfo.uniformPropertyIdentifier.identifierPropertyName}},r.spatialReference=JSON.parse(JSON.stringify(t.spatialReference)),r}static getDataModelTypesSummary(t){let r=t.entityTypes.map(a=>a.name).join(", "),o=t.relationshipTypes.map(a=>a.name).join(", ");return`实体类型:${r}。
|
|
95
|
+
关系类型:${o}.`}},G=class e{constructor(){this.name="",this.properties=[]}static fromEntityType(t){let r=new e;r.name=t.name,r.alias=t.alias?t.alias:void 0,r.role=wa(t.role);for(let o of t.properties){let a={name:o.name,alias:o.alias?o.alias:void 0,fieldType:o.fieldType,role:ba(o.role),geometryDef:o.fieldType==="esriFieldTypeGeometry"?{geometryType:o.geometryType??"esriGeometryAny",hasM:o.hasM?o.hasM:void 0,hasZ:o.hasZ?o.hasZ:void 0}:void 0};r.properties.push(a)}return r}},de=class extends G{constructor(){super(...arguments),this.observedEndPoints=[]}static fromRelationshipType(t){let r=G.fromEntityType(t);r.observedEndPoints=[];for(let o of t.endPoints)r.observedEndPoints.push({originEntityType:o.originEntityType,destinationEntityType:o.destinationEntityType});return r}},ga=e=>{switch(e){case"esriIdentifierInfoTypeUNSPECIFIED":return"UNSPECIFIED";case"esriIdentifierInfoTypeDatabaseNative":return"DatabaseNative";case"esriIdentifierInfoTypeUniformProperty":return"UniformPropertyIdentifier";default:return e}},wa=e=>{switch(e){case"Regular":return"esriGraphNamedObjectRegular";case"Provenance":return"esriGraphNamedObjectProvenance";case"Document":return"esriGraphNamedObjectDocument";default:return e}};function ba(e){switch(e){case"esriGraphPropertyRegular":return"Regular";case"esriGraphPropertyDocumentName":return"Document_Name";case"esriGraphPropertyDocumentTitle":return"Document_Title";case"esriGraphPropertyDocumentUrl":return"Document_Url";case"esriGraphPropertyDocumentText":return"Document_Text";case"esriGraphPropertyDocumentKeywords":return"Document_Keywords";case"esriGraphPropertyDocumentContentType":return"Document_ContentType";case"esriGraphPropertyDocumentMetadata":return"Document_Metadata";case"esriGraphPropertyDocumentFileExtension":return"Document_FileExtension";case"esriGraphPropertyProvenanceInstanceId":return"Provenance_InstanceId";case"esriGraphPropertyProvenanceSourceType":return"Provenance_SourceType";case"esriGraphPropertyProvenanceSourceName":return"Provenance_SourceName";case"esriGraphPropertyProvenanceSource":return"Provenance_Source";case"esriGraphPropertyProvenanceComment":return"Provenance_Comment";case"esriGraphPropertyProvenanceTypeName":return"Provenance_TypeName";case"esriGraphPropertyProvenancePropertyName":return"Provenance_PropertyName";default:return"Regular"}}function re(e){return e?.signal}async function va(e,t){let r=await Z("geoscene_knowledge_cypher_query_prompt");return t?`${e} ${r}
|
|
96
|
+
|
|
97
|
+
上次生成的 Cypher 查询执行失败。请阅读下方信息,生成避免该错误的新查询。
|
|
98
|
+
|
|
99
|
+
尝试次数:${t.attemptCount}
|
|
100
|
+
执行错误:${t.executionError}
|
|
101
|
+
失败的查询:
|
|
102
|
+
${t.failedGraphQuery}`:`${e} ${r}`}async function Ta(e,t,r,o){let{graphQuery:a,explanation:n}=await ve(e,t,r,o);return{graphQuery:a,explanation:n}}async function ve(e,t,r,o,a){let n={message:await va(e,a),context:new ce(t)},l=re(o);await S({text:"正在根据用户提示生成 Cypher 查询……"},o);let i=await Ae(`${r}/chat`,{method:"post",body:JSON.stringify(n),headers:{"Content-Type":"application/json",token:Me.findCredential(F.getDefault().url)?.token??""},signal:l});if(i.httpStatus!==200)throw new Error(`图谱查询服务返回错误:${i.httpStatus}`,{cause:i.data});let u=!1,c=Date.now(),d=i.data.sequenceNumber,m="",p="",w=1;for(;!u;){await new Promise(h=>setTimeout(h,1e3)),await S({text:`正在定期查询 GeoScene AI 服务的任务状态${"...".substring(0,w)}`},o),w=w%3+1;let f=await Ae(`${r}/chat`,{method:"post",body:JSON.stringify({conversationId:i.data.conversationId,inquiryId:i.data.inquiryId,ackSequenceNumber:d}),headers:{"Content-Type":"application/json",token:Me.findCredential(F.getDefault().url)?.token??""},signal:l});if(f.httpStatus!==200)throw new Error(`轮询图谱查询服务时返回错误:${f.httpStatus}`,{cause:f.data});if(f.data.context?.kind){if(f.data.context.kind!=="GraphQueryGenerationResponse")throw new Error(`图谱查询服务轮询响应异常,消息:${f.data.message}`,{cause:f.data});m=f.data.context.graphQuery,p=f.data.message||"",u=!0}else if(!f.data.hasMore)u=!0;else if(Date.now()-c>6e4)throw new Error("图谱查询服务轮询超过1分钟,已超时。");d=f.data.sequenceNumber}return{graphQuery:m,explanation:p}}function Sa(e,t){q(e,r=>{t.set(`${r.typeName}__${r.id}`,{id:r.id,typeName:r.typeName})})}function q(e,t){if(!(!e||typeof e!="object")){if(Ea(e))for(let r of e.path)q(r,t);else if(xa(e))t(e);else if(Array.isArray(e))for(let r of e)q(r,t);else if(Ia(e))for(let r of Object.values(e.properties??{}))q(r,t)}}function xa(e){return!e||typeof e!="object"||Array.isArray(e)?!1:"id"in e&&"typeName"in e}function Ea(e){return!e||typeof e!="object"||Array.isArray(e)?!1:e&&"path"in e&&Array.isArray(e.path)}function Ia(e){return!e||typeof e!="object"||Array.isArray(e)||"id"in e?!1:"properties"in e&&typeof e.properties=="object"}function Na(e,t){let r=[],o=[],a=[[t.dataModel.entityTypes,r],[t.dataModel.relationshipTypes,o]];for(let[n,l]of a)for(let i of n){let u=e.getMemberIdsByType(i.name);l.push(...u)}return{entityIds:r,relationshipIds:o}}function ka(e,t){let r={entityIds:new Array,relationshipIds:new Array},o=[],a=e?.allLayers.find(i=>i.type==="knowledge-graph")?.inclusionModeDefinition;if(!a)return{allNamedTypesFullyDynamic:!0,bindParameters:r,nonDynamicTypes:o};let n=[[t.dataModel.entityTypes,r.entityIds],[t.dataModel.relationshipTypes,r.relationshipIds]],l=!0;for(let[i,u]of n)for(let c of i){let d=a.namedTypeDefinitions.get(c.name);if(!d){l=!1,o.push(c.name);continue}if(!d.useAllData){l=!1,o.push(c.name);for(let[m]of d.members||[])u.push(m)}}return{allNamedTypesFullyDynamic:l,bindParameters:r,nonDynamicTypes:o}}var C=3;function He(e,t=100){let r={};for(let o of Object.entries(e.properties??{})){let[a,n]=o;typeof n=="string"&&n.length>t?r[a]=`${n.slice(0,t)}……(已截断,原始长度:${n.length})`:r[a]=n}return e.properties=r,e}function _(e){return typeof e!="object"||e===null?String(e):"details"in e&&typeof e.details=="object"&&e.details!==null&&"errorMessage"in e.details&&typeof e.details.errorMessage=="string"?e.details.errorMessage:"message"in e&&typeof e.message=="string"?e.message:String(e)}var $a=async({kg:e,queryParams:t,targetStructure:r,targetStructureReducer:o,requestOptions:a,queryRowLimit:n,queryTimeoutMs:l})=>{let i=null,u=r,c=new AbortController,d=a?.signal,m=()=>{c.abort(d?.reason)};d&&(d.aborted?c.abort(d.reason):d.addEventListener("abort",m,{once:!0}));try{let p=await _t(e,t,a);i=p.resultHeader;let w=p.resultRowsStream.getReader(),f=0,h=Date.now(),v=!1;for(;;){let{done:g,value:T}=await w.read();if(g)break;if(!v&&l&&Date.now()-h>l)return c.abort(),{type:"timeout"};for(let E of T){if(f++,n&&f>n)return c.abort(),{type:"success",rowLimitReached:!0,resultHeader:i,processedResult:u};u=o(u,E)}}}catch(p){return c.signal.aborted?{type:"aborted"}:{type:"error",errorMessage:_(p),error:p}}finally{d?.removeEventListener("abort",m)}return{type:"success",rowLimitReached:!1,resultHeader:i,processedResult:u}};async function Je({prompt:e,bindParameters:t,kg:r,graphQueryServiceUrl:o,targetStructure:a,targetStructureReducer:n,requestOptions:l,queryRowLimit:i,queryTimeoutMs:u,config:c}){let d;for(let m=1;m<=C;m++){let p;try{p=await ve(e,r.dataModel,o,c,d)}catch(v){return{type:"generation-error",errorMessage:_(v),error:v}}await S({text:`正在尝试执行查询:${p.graphQuery.substring(0,500)}${p.graphQuery.length>500?"...":""}`},c);let w=await Fa(p.graphQuery,t),f=await $a({kg:r,queryParams:new Pe({openCypherQuery:p.graphQuery,bindParameters:w}),targetStructure:a,targetStructureReducer:n,requestOptions:l,queryRowLimit:i,queryTimeoutMs:u}),h=f.type==="aborted"?"查询执行已中止。":f.type==="timeout"?"查询执行已超时。":f.type==="error"?`查询失败,错误:${f.errorMessage}`:"";if(f.type==="success")return{type:"success",graphQuery:p.graphQuery,explanation:p.explanation,rowLimitReached:f.rowLimitReached,resultHeader:f.resultHeader,processedResult:f.processedResult};if(f.type==="aborted")return{type:"aborted",errorMessage:h,graphQuery:p.graphQuery,explanation:p.explanation};if(m>=C)return f.type==="timeout"?{type:"timeout",errorMessage:h,graphQuery:p.graphQuery,explanation:p.explanation}:{type:"execution-error",errorMessage:h,error:f.error,graphQuery:p.graphQuery,explanation:p.explanation};d={failedGraphQuery:p.graphQuery,executionError:h,attemptCount:m},await S({text:`第 ${m} 次尝试失败,错误:${h}。正在重试……`},c)}throw new Error(`生成的 Cypher 查询在多次尝试后仍执行失败,尝试次数:${C} attempts.`)}var Fa=async(e,t)=>{if(!t)return{};let{bindParameters:r,parseErrors:o}=await Dt(e);if(o)return t;let a={};for(let n of r)n in t&&(a[n]=t[n]);return a},Ma=async({kg:e,searchQuery:t,typeCategoryFilter:r,namedTypesFilter:o,searchResultLimit:a,requestOptions:n})=>{let l=[],i=[r];r==="both"&&!e.serviceDefinition.serviceCapabilities.searchCapabilities.searchTypeFilterCapabilities.includes("esriTypeBoth")&&(i=["entity","relationship"]);let u=a??1/0;try{for(let c of i){let d=u-l.length;if(d<=0)break;let m=(await zt(e,new jt({searchQuery:t,typeCategoryFilter:c,namedTypesFilter:o??void 0,num:d}),n)).resultRowsStream.getReader(),p=!1;for(;!p;){let{done:w,value:f}=await m.read();if(w){p=!0;break}for(let h of f)for(let v of h)l.push(v)}}}catch(c){let d=_(c);return n?.signal?.aborted?{type:"aborted",errorMessage:d,error:c}:{type:"error",errorMessage:d,error:c}}return{type:"success",results:l}},Ze="重要:生成的 Cypher 查询只能返回完整实体和关系。";async function Ye({prompt:e,view:t,knowledgeGraph:r,includeReturnEntityAndRelationshipContext:o=!1}){let a=[e];if(o&&a.push(Ze),!A(t)){let d=await Z("geoscene_knowledge_current_lc_context"),m=Na(t.map,r);return a.push(d),{enhancedPrompt:a.join(`
|
|
103
|
+
|
|
104
|
+
`),bindParameters:m,allNamedTypesFullyDynamic:!1}}let n=t.map,{allNamedTypesFullyDynamic:l,bindParameters:i,nonDynamicTypes:u}=ka(n,r);if(l)return{enhancedPrompt:a.join(`
|
|
105
|
+
|
|
106
|
+
`),bindParameters:i,allNamedTypesFullyDynamic:!0};let c=(await Z("geoscene_knowledge_current_map_context")).replaceAll("{nonDynamicTypes}",JSON.stringify(u));return a.push(c),{enhancedPrompt:a.join(`
|
|
107
|
+
|
|
108
|
+
`),bindParameters:i,allNamedTypesFullyDynamic:l}}async function Aa(e,t,r,o,a,n){let{view:l}=a,i=await Je({prompt:e,bindParameters:t,kg:r,graphQueryServiceUrl:o,targetStructure:new Map,targetStructureReducer:(p,w)=>{for(let f of w)Sa(f,p);return p},requestOptions:{signal:re(n),timeout:n?.timeout},config:n});if(i.type!=="success"){let p=i.type==="generation-error"?i.errorMessage:`${i.errorMessage},Cypher 查询:${i.graphQuery}`;throw new Error(`添加记录到链接图失败。${p}`)}let{graphQuery:u,explanation:c,processedResult:d}=i,m=Array.from(d.values());return await S({text:`查询结果已解析为 ${m.length} 个唯一的关系和实体,正在添加到链接图……`},n),!A(l)&&l?.map?(await l.map.addRecords(m),await te(l),{generatedQuery:u,explanation:c,addedIdTypePairs:m}):(await l?.map?.allLayers.find(p=>p.type==="knowledge-graph")?.addRecords(m),{generatedQuery:u,explanation:c,addedIdTypePairs:m})}var H="addRecords",Ra=s.object({prompt:s.string().describe("用于生成 Cypher 查询的用户问题及必要上下文,查询结果将添加到链接图。")}),qa=async({prompt:e},t)=>{let{knowledgeGraph:r}=await Q(t),o=V(t),{view:a}=o,n=F.getDefault().helperServices,{enhancedPrompt:l,bindParameters:i,allNamedTypesFullyDynamic:u}=await Ye({prompt:e,view:a,knowledgeGraph:r,includeReturnEntityAndRelationshipContext:!0});if(u)return{toolName:H,status:"success",summary:"知识图谱的全部数据已包含在地图中,因此没有新增记录。",details:{generatedQuery:"N/A",explanation:"知识图谱的所有命名类型都是完全动态的,全部数据已在地图中,因此没有新增记录。",addedIdTypePairs:[]}};try{let{generatedQuery:c,explanation:d,addedIdTypePairs:m}=await Aa(l,i,r,`${n.aiAssistantServices.url}${n.aiAssistantServices.graphQueryAssistant}`,o,t);return{toolName:H,status:"success",summary:`记录添加成功。使用的 Cypher 查询:${c}
|
|
109
|
+
|
|
110
|
+
新增记录数量:${m.length}`,details:{generatedQuery:c,explanation:d,addedIdTypePairs:m}}}catch(c){let d=_(c);return{toolName:H,status:"error",errorMessage:`添加记录到链接图失败。${d}`,error:c}}},Is=y(qa,{name:H,description:`根据知识图谱查询结果,将实体或关系添加到当前链接图。用户必须明确要求添加到当前链接图;“添加到新链接图”不适用。
|
|
111
|
+
示例:将供应商和其生产零件加入链接图;查询公司 X 的竞争者并添加;添加公司 X 和 Y 的关系;展开所有公司;展开公司 X 拥有的建筑;连接公司 X 和 Y;连接图中的所有建筑。`,schema:Ra});async function Ca(e,t){return await t.map?.applyLayout(e),await te(t),{appliedLayout:e}}var pe="applyLayout",_a=s.object({layout:s.enum(["organic-standard","organic-community","basic-grid","hierarchical-bottom-to-top","radial-root-centric","tree-left-to-right","geographic-organic-standard","chronological-mono-timeline","chronological-multi-timeline"]).describe("链接图布局模式,必须为以下值之一:organic-standard、organic-community、basic-grid、hierarchical-bottom-to-top、radial-root-centric、tree-left-to-right、geographic-organic-standard、chronological-mono-timeline、chronological-multi-timeline")}),za=async({layout:e},t)=>{let{view:r}=V(t);if(A(r))return{toolName:pe,status:"error",errorMessage:"applyLayout 工具只能用于 LinkChartView。",error:new Error};{let{appliedLayout:o}=await Ca(e,r);return{toolName:pe,status:"success",summary:`已应用布局:${o}.`,details:{appliedLayout:o}}}},Ns=y(za,{name:pe,description:"为链接图应用图布局",schema:_a});async function ja(e,t){return t.map?.changeNonspatialDataDisplay(e),await te(t),{appliedNonspatialDataDisplayMode:e}}var me="changeNonspatialVisibility",Da=s.object({setting:s.enum(["hidden","visible"]).describe("非空间数据可见性设置")}),La=async({setting:e},t)=>{let{view:r}=V(t);if(A(r))return{toolName:me,status:"error",errorMessage:"changeNonspatialVisibility 工具只能用于 LinkChartView。",error:new Error};{let{appliedNonspatialDataDisplayMode:o}=await ja(e,r);return{toolName:me,status:"success",summary:`已设置非空间数据可见性:${o}.`,details:{appliedNonspatialDataDisplayMode:o}}}},ks=y(La,{name:me,description:"切换链接图中的非空间数据可见性,只能为 'hidden' 或 'visible'。",schema:Da});async function Oa(e,t,r,o,a){let n,l="";for(let i=1;i<=C;i++){let{graphQuery:u,explanation:c}=await ve(e,t.dataModel,r,a,n);try{await S({text:`正在使用生成的查询创建链接图:${u}`},a);let d=await Ct.fromCypherQuery(t,new Pe({openCypherQuery:u}));await S({text:"链接图创建成功,正在加载……"},a),await d.load();let m=o.map;return o.map=d,await o.when(),await je.whenOnce(()=>!o.updating),d.entityCount===0&&d.relationshipCount===0?(o.map===d&&(o.map=m),d.destroy(),{type:"error",errorMessage:`查询没有返回结果。用于创建链接图的 Cypher 查询:
|
|
112
|
+
${u}
|
|
113
|
+
|
|
114
|
+
说明:${c}`}):(await te(o),{type:"success",graphQuery:u,explanation:c})}catch(d){let m=_(d);if(i>=C){l=m;break}n={failedGraphQuery:u,executionError:m,attemptCount:i},await S({text:`第 ${i} 次创建链接图失败,错误:${m}。正在重试……`},a)}}return{type:"error",errorMessage:`创建链接图失败,尝试次数:${C}。最后错误:${l}`}}var J="createLinkChart",Pa=s.object({prompt:s.string().describe("用于生成链接图查询的用户问题及必要上下文。只包含生成 Cypher 所需的信息,不要建议实体类型、关系类型或属性。除非用户明确要求,否则不要添加结果数量限制或格式指令。重点描述用户希望看到的数据,而不是生成方法。")}),Ga=async({prompt:e},t)=>{let{knowledgeGraph:r}=await Q(t),{view:o}=V(t);if(A(o))return{toolName:J,status:"error",errorMessage:"createLinkChart 工具只能用于 LinkChartView。",error:new Error};{let a=F.getDefault().helperServices,n=await Oa(`${e}
|
|
115
|
+
|
|
116
|
+
${Ze}`,r,`${a.aiAssistantServices.url}${a.aiAssistantServices.graphQueryAssistant}`,o,t);if(n.type==="error")return{toolName:J,status:"error",errorMessage:n.errorMessage,error:new Error};let{graphQuery:l,explanation:i}=n;return{toolName:J,status:"success",summary:`链接图创建成功。用于创建链接图的 Cypher 查询:
|
|
117
|
+
${l}
|
|
118
|
+
|
|
119
|
+
说明:${i}`,details:{generatedQuery:l,explanation:i}}}},$s=y(Ga,{name:J,description:"根据知识图谱数据查询创建新链接图。用户必须明确要求创建新链接图,例如“创建新链接图”或“添加到新链接图”。",schema:Pa}),he="queryGraphData",Va=s.object({prompt:s.string().describe("用户对知识图谱的提问,将生成并执行 Cypher 查询。仅当用户提示或之前步骤提供了实体类型、关系类型或属性时才能包含,不要自行建议。除非用户明确要求,不要增加数量限制、返回内容、查询编写方法或结果格式指令。")}),Qa=async({prompt:e},t)=>{let{knowledgeGraph:r}=await Q(t),o=F.getDefault().helperServices,a=e,n=null,l=null;try{({view:l}=V(t))}catch{}l&&({enhancedPrompt:a,bindParameters:n}=await Ye({prompt:e,view:l,knowledgeGraph:r,includeReturnEntityAndRelationshipContext:!1}));let i=await Je({prompt:a,bindParameters:n,kg:r,graphQueryServiceUrl:`${o.aiAssistantServices.url}${o.aiAssistantServices.graphQueryAssistant}`,targetStructure:new Array,targetStructureReducer:(h,v)=>(h.push(v),h),requestOptions:{signal:re(t),timeout:t?.timeout},config:t});if(i.type!=="success"){let h=i.type==="generation-error"?i.errorMessage:`${i.errorMessage},Cypher 查询:${i.graphQuery}`;return{toolName:he,status:"error",errorMessage:`查询知识图谱失败。${h}`,error:"error"in i?i.error:null}}let{graphQuery:u,explanation:c,processedResult:d,resultHeader:m}=i,p=m.headerKeys;for(let h of d)for(let v of h)q(v,g=>He(g));let w=50,f=d.slice(0,w).map(h=>JSON.stringify(h));return{toolName:he,status:"success",summary:`为回答问题,对知识图谱执行了以下 Cypher 查询:
|
|
120
|
+
|
|
121
|
+
\`\`\`cypher
|
|
122
|
+
${u}
|
|
123
|
+
\`\`\`
|
|
124
|
+
|
|
125
|
+
查询结果:
|
|
126
|
+
${f.length} 条结果。
|
|
127
|
+
|
|
128
|
+
列标题:${p.join(", ")}
|
|
129
|
+
|
|
130
|
+
${f.length>w?`显示前 ${w} 条结果:
|
|
131
|
+
|
|
132
|
+
`:`结果:
|
|
133
|
+
|
|
134
|
+
`}${f.join(`
|
|
135
|
+
`)}
|
|
136
|
+
`,details:{generatedQuery:u,explanation:c,resultHeader:m,queryResults:d}}},Fs=y(Qa,{name:he,description:"使用 Cypher 查询探索知识图谱数据。根据用户问题生成并执行查询,在聊天面板展示结果,不修改已有链接图。适用于可通过 Cypher 回答的整体数据探索问题,例如“按零件总成本排名前5的供应商”或“各部门员工有多少”。",schema:Va}),fe="generateCypher",Ba=s.object({prompt:s.string().describe("需要转换为 Cypher 查询的用户知识图谱问题。")}),Ua=async({prompt:e},t)=>{let{knowledgeGraph:r}=await Q(t),o=F.getDefault().helperServices;try{let{graphQuery:a,explanation:n}=await Ta(e,r.dataModel,`${o.aiAssistantServices.url}${o.aiAssistantServices.graphQueryAssistant}`,t);return{toolName:fe,status:"success",summary:`生成的图谱查询:
|
|
137
|
+
${a}
|
|
138
|
+
|
|
139
|
+
说明:${n}`,details:{generatedQuery:a,explanation:n}}}catch(a){let n=_(a);return{toolName:fe,status:"error",errorMessage:`生成 Cypher 查询失败。${n}`,error:a}}},Ms=y(Ua,{name:fe,description:"根据用户提示生成 Open Cypher 查询,对知识服务和图数据库的数据按条件过滤并遍历指定关系。查询必须语法正确并尽量优化性能。",schema:Ba}),Ka=e=>{let t=e.dataModel,r=new Map;for(let i of t.searchIndexes)if(i.supportedCategory!=="esriTypeMetaEntityProvenance")for(let[u,c]of i.searchProperties.entries()){let d=r.get(u)??new Set;c.propertyNames.forEach(m=>d.add(m)),r.set(u,d)}let o=t.entityTypes.filter(i=>r.has(i.name)),a=t.relationshipTypes.filter(i=>r.has(i.name)),n=`实体类型:
|
|
140
|
+
${o.map(({name:i})=>`${i}: [${Array.from(r.get(i)??[]).join(", ")}]`).join(`
|
|
141
|
+
`)}`,l=`关系类型:
|
|
142
|
+
${a.map(({name:i})=>`${i}: [${Array.from(r.get(i)??[]).join(", ")}]`).join(`
|
|
143
|
+
`)}`;return`${n}
|
|
144
|
+
|
|
145
|
+
${l}`};async function Wa(e,t,r){let o=await Z("geoscene_knowledge_lucene_generation_prompt"),a={inquiry:e,dataModelForSearch:Ka(t)},n=s.enum(["entity","relationship","both"]).describe("搜索的图谱元素类别:entity、relationship 或 both"),l=s.number().int().positive().nullable().describe("最多返回的搜索结果数量。用户未指定时默认10,明确要求不限或全部时设为 null。"),i=s.array(s.enum(t.dataModel.entityTypes.map(c=>c.name).concat(t.dataModel.relationshipTypes.map(c=>c.name)))).min(1),u=s.object({query:s.string().describe("发送给知识图谱搜索 API 的 Lucene 查询字符串"),typeFilters:i.nullable().describe("用于限制搜索范围的实体或关系类型列表,可为 null。设为 null 时搜索全部具有已索引属性的命名类型。"),typeCategoryFilter:n,resultLimit:l});return await Ie({promptText:o,inputVariables:a,schema:u,config:r})}var ye="searchGraphData",Ha=s.object({prompt:s.string().describe("用户对知识图谱的提问,将据此生成并执行 Lucene 搜索以返回相关结果。")}),Ja=async({prompt:e},t)=>{let{knowledgeGraph:r}=await Q(t);await S({text:"正在根据用户问题生成搜索查询"},t);let o=await Wa(e,r,t);await S({text:"正在执行生成的图谱搜索查询"},t);let a=await Ma({kg:r,searchQuery:o.query,typeCategoryFilter:o.typeCategoryFilter,namedTypesFilter:o.typeFilters,searchResultLimit:o.resultLimit,requestOptions:{signal:re(t),timeout:t?.timeout}});if(a.type!=="success")return{toolName:ye,status:"error",errorMessage:a.errorMessage,error:"error"in a?a.error:null};for(let i of a.results)q(i,u=>He(u));let n=10,l=a.results.slice(0,n);return{toolName:ye,status:"success",summary:`为回答问题,生成并执行了以下 Lucene 查询:
|
|
146
|
+
查询:${o.query}
|
|
147
|
+
类别过滤:${o.typeCategoryFilter}
|
|
148
|
+
命名类型过滤:${o.typeFilters?o.typeFilters.join(", "):"无"}
|
|
149
|
+
结果数量上限:${o.resultLimit??"不限数量"}
|
|
150
|
+
|
|
151
|
+
搜索结果:${a.results.length} 条结果。
|
|
152
|
+
|
|
153
|
+
${a.results.length>n?`显示前 ${n} 条结果:
|
|
154
|
+
|
|
155
|
+
`:""}${l.map(i=>JSON.stringify(i)).join(`
|
|
156
|
+
`)}`,details:{generatedSearchQuery:o,searchResults:a.results}}},As=y(Ja,{name:ye,description:`使用 Lucene 语法,对知识图谱实体和关系的已索引字符串属性进行文本搜索。适用于可通过属性文本搜索回答的问题,例如模糊匹配。如果需要查找相连记录、路径或聚合数据,使用 queryGraphData。
|
|
157
|
+
示例:查找 Bradley;查找 John Smith;查找姓 Smith 的所有人;查找提到“delayed parts shipment”的记录;查找 Researcher 撰写的报告;查找前5份 summary 提到 Sacramento 附近 flood zoning、organization 为 City of Sacramento Utilities、tags 含 stormwater 的报告;搜索所有 John Smith 并显示 globalid。`,schema:Ha});return{a:K,b:Wi,c:k,d:Hi,e:Ji,f:Zi,g:Yi,h:Xi,i:es,j:ts,k:rs,l:os,m:Z,n:mr,o:Ge,p:as,q:ns,r:is,s:ss,t:ls,u:cs,v:us,w:ds,x:ps,y:ms,z:hs,A:fs,B:ys,C:gs,D:M,E:ws,F:ma,G:bs,H:vs,I:Ts,J:Ss,K:xs,L:Es,M:Q,N:ue,O:Is,P:Ns,Q:ks,R:$s,S:Fs,T:Ms,U:As}},"identity/IdentityManager","portal/Portal","config","core/reactiveUtils","layers/FeatureLayer","request","Graphic","rest/locator","symbols/PictureMarkerSymbol","geometry/Extent","geometry/Point","smartMapping/renderers/pieChart","smartMapping/symbology/pieChart","views/support/colorUtils","smartMapping/renderers/color","smartMapping/symbology/color","smartMapping/renderers/univariateColorSize","smartMapping/renderers/dotDensity","smartMapping/symbology/dotDensity","smartMapping/renderers/heatmap","smartMapping/symbology/heatmap","smartMapping/renderers/predominance","smartMapping/symbology/predominance","smartMapping/renderers/relationship","smartMapping/symbology/relationship","smartMapping/renderers/size","smartMapping/renderers/type","smartMapping/symbology/type","layers/support/FeatureEffect","layers/support/FeatureFilter","geometry/operators/unionOperator","intl","smartMapping/statistics/summaryStatistics","smartMapping/statistics/uniqueValues","rest/support/TopFeaturesQuery","rest/support/TopFilter","WebLinkChart","rest/knowledgeGraph/GraphQueryStreaming","views/LinkChartView","rest/knowledgeGraphService","rest/knowledgeGraph/GraphSearchStreaming","applications/KnowledgeStudio/generalSharedKgUtils",a)
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import"../CFDTXKJ6.js";var e,a,i,c,u,s,w,l,f,m,p,y;async function r(n,t){if(t in n)return n[t];if("default"in n){let o=await n.default;return typeof o=="object"&&o!==null&&t in o?o[t]:o}throw new Error(`无法解析 ${String(t)},模块中不存在该成员。`)}function W(n,t){let o={};for(let[b,k]of Object.entries(t))o[b]=h(n,k);return o}function d(n,t){return n.object(W(n,t))}function h(n,t){let o=g(n,t);return t.required===!0?o:o.optional()}function g(n,t){let o=T(n,t);return t.description!==void 0&&(o=o.describe(t.description)),o}function S(n,t){switch(t){case"string":return n.string();case"number":return n.number();case"boolean":return n.boolean()}}function A(n){return n==="string"||n==="number"||n==="boolean"}function T(n,t){switch(t.type){case"string":{if(t.enum!=null){if(t.enum.length===0)throw new Error("字符串字段的 enum 至少需要一个值。");return n.enum(t.enum)}return n.string()}case"number":return n.number();case"boolean":return n.boolean();case"array":{if(t.itemType==null)throw new Error("数组字段必须定义 itemType。");return n.array(A(t.itemType)?S(n,t.itemType):g(n,t.itemType))}case"object":{if(t.fields==null)throw new Error("对象字段必须定义 fields。");return d(n,t.fields)}}}async function L(n){p??=import("../6FEB6XYK.js");let t=await p;return d(t.z,n)}async function j(n,t){y??=import("../INJ2KWHS.js");let o=await y;return await(await r(o,"sendUXSuggestion"))(n,t)}async function q(n){e??=import("../LUY7QCZ3.js");let t=await e,o=await r(t,"FunctionAgent");return new o(n)}async function E(n){a??=import("../VPZHLYPA.js");let t=await a,o=await r(t,"FunctionTool");return new o(n)}async function F(n){i??=import("../ESRKMM6P.js");let t=await i,o=await r(t,"LLMAgent");return new o(n)}async function v(n){c??=import("../DKNDDDWM.js");let t=await c,o=await r(t,"WorkflowAgent");return new o(n)}async function U(n){u??=import("../PKH5BECA.js");let t=await u,o=await r(t,"ConditionalWorkflow");return new o(n)}async function M(n){s??=import("../YURWID37.js");let t=await s,o=await r(t,"LoopWorkflow");return new o(n)}async function P(n){w??=import("../LTPDBXQ7.js");let t=await w,o=await r(t,"ParallelWorkflow");return new o(n)}async function R(n){l??=import("../AXOPGQGZ.js");let t=await l,o=await r(t,"RouterWorkflow");return new o(n)}async function X(n){f??=import("../Y5GGIKKC.js");let t=await f,o=await r(t,"SequentialWorkflow");return new o(n)}async function x(n){m??=import("../7CCULIWM.js");let t=await m,o=await r(t,"SwitchWorkflow");return new o(n)}export{U as createConditionalWorkflow,q as createFunctionAgent,E as createFunctionTool,F as createLLMAgent,M as createLoopWorkflow,P as createParallelWorkflow,R as createRouterWorkflow,L as createSchema,X as createSequentialWorkflow,x as createSwitchWorkflow,v as createWorkflowAgent,j as sendUXSuggestion};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{a as g,b as p}from"../../L6GVMINQ.js";import"../../PIUDMACH.js";import{q as l}from"../../H3EEFM4A.js";import"../../4ASZF5I2.js";import"../../LXJWWOGK.js";import"../../CFDTXKJ6.js";var m="human-in-the-loop",w="执行 Agent 需要批准",f="用户拒绝了 Agent 执行。",y="human-in-the-loop-tool",h="执行工具需要批准";function x(t={}){let{outputKey:e}=t;return g(m,{wrapAgent:async(n,r)=>{let a=b(n),o=$(a,n),i=c(n.config?.configurable);if(i?.agentId!==a)throw new l(await I({agentId:a,interruptId:o,options:t,request:n}));if(i.id!==o){if(T(a,i.id))return await r(n);throw new l(await I({agentId:a,interruptId:o,options:t,request:n}))}if(i.payload===!1)return{outputMessage:f,status:"failed",summary:f};let u=e?{...n.state,[e]:i.payload}:n.state,d={...n,state:u};return await r(d)}},{outputKey:e})}function H(t={}){let{outputKey:e}=t;return p(y,{wrapToolCall:async(n,r)=>{let a=n.tool.name,o=q(n.config?.configurable),i=C(o,n.toolCallId??a),u=c(n.config?.configurable);if(u?.agentId!==o||u.id!==i)throw new l(await M({agentId:o,interruptId:i,options:t,request:n}));if(u.payload===!1)return`工具调用“${a}”已被用户拒绝。`;let d=e?{...n.input,[e]:u.payload}:n.input,s={...n,input:d};return await r(s)}})}async function I(t){let{agentId:e,interruptId:n,options:r,request:a}=t,o=await r.interrupt?.({...a,agentId:e});return{agentId:e,id:n,kind:o?.kind??"booleanChoice",message:o?.message??w,metadata:o?.metadata}}function b(t){return typeof t.config?.configurable?.agentId=="string"?t.config.configurable.agentId:t.agent.id}function $(t,e){let n=e.config?.configurable?.thread_id,r=typeof n=="string"&&n?`${n}:`:"";return`${t}:${r}${e.nodeName}`}function T(t,e){return e.startsWith(`${t}:tool:`)}function q(t){return typeof t?.agentId=="string"?t.agentId:"llm-agent"}function C(t,e){return`${t}:tool:${e}`}async function M(t){let{agentId:e,interruptId:n,options:r,request:a}=t,{input:o,tool:i,toolCallId:u}=a,d=i.name,s=await r.interrupt?.({...a,args:o,toolName:d,toolCallId:u});return{agentId:e,id:n,kind:s?.kind??"booleanChoice",message:s?.message??`${h}
|
|
3
|
+
工具:${d}`,metadata:s?.metadata??{args:o,toolCallId:u,toolName:d}}}function N(t){return c(t?.configurable)?.payload}function c(t){let e=t?.hitlResponse;return e&&typeof e=="object"&&"id"in e&&"agentId"in e?e:null}export{x as createHumanInTheLoopMiddleware,H as createHumanInTheLoopToolMiddleware,N as getHumanInTheLoopPayload};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{a,b,c}from"../../L6GVMINQ.js";import"../../PIUDMACH.js";import"../../H3EEFM4A.js";import"../../4ASZF5I2.js";import"../../LXJWWOGK.js";import"../../CFDTXKJ6.js";export{c as convertToLangChainMiddlewares,a as createAgentMiddleware,b as createToolMiddleware};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/* COPYRIGHT GeoScene - https://js.geoscene.cn/5.1/LICENSE.txt */
|
|
2
|
+
import{a as o}from"../../KGYSBUFO.js";import{a as l,b as c}from"../../L6GVMINQ.js";import"../../PIUDMACH.js";import"../../H3EEFM4A.js";import{P as s,Z as i}from"../../4ASZF5I2.js";import"../../LXJWWOGK.js";import"../../CFDTXKJ6.js";var m="agent-trace",u="tool-trace";function y(){return l(m,{wrapModelCall:async(t,e)=>{let a=await e(t),r=t.runtime,g=d(a);return await Promise.all(g.map(async n=>await o({text:`模型请求调用工具“${n.name}”,参数:${JSON.stringify(n.args,null,2)}`},r))),a}})}function M(){return c(u,{wrapToolCall:async(t,e)=>{let a=await e(t),r=t.config;return await o({text:`工具执行完成:${s.isInstance(a)?a.content.toString():typeof a=="string"?a:t.tool.name}`},r),a}})}function d(t){return!i.isInstance(t)||!Array.isArray(t.tool_calls)?[]:t.tool_calls.filter(e=>typeof e?.name=="string")}export{y as createAgentTraceMiddleware,M as createToolTraceMiddleware};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"المساعد","stopButtonLabel":"إيقاف","askButtonLabel":"اسأل"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Асистент","stopButtonLabel":"Стоп","askButtonLabel":"Запитване"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Pomoćnik","stopButtonLabel":"Mjesto zaustavljanja","askButtonLabel":"Pitaj"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Atura","askButtonLabel":"Pregunta"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistent","stopButtonLabel":"Zastavit","askButtonLabel":"Zadat dotaz"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Stop","askButtonLabel":"Spørg"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Beenden","askButtonLabel":"Anfordern"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Βοηθός","stopButtonLabel":"Τερματισμός","askButtonLabel":"Ερώτηση"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistant","stopButtonLabel":"Stop","askButtonLabel":"Ask"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistente","stopButtonLabel":"Detener","askButtonLabel":"Preguntar"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Peata","askButtonLabel":"Küsi"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Apuri","stopButtonLabel":"Lopeta","askButtonLabel":"Kysy"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistant","stopButtonLabel":"Arrêter","askButtonLabel":"Demander"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"עוזר","stopButtonLabel":"עצור","askButtonLabel":"שאל"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Pomoćnik","stopButtonLabel":"Mjesto zaustavljanja","askButtonLabel":"Pitaj"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Segéd","stopButtonLabel":"Megálló","askButtonLabel":"Kérdezzen"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asisten","stopButtonLabel":"Stop","askButtonLabel":"Tanya"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistente","stopButtonLabel":"Termine","askButtonLabel":"Chiedi"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"アシスタント","stopButtonLabel":"停止","askButtonLabel":"質問"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"도우미","stopButtonLabel":"중지","askButtonLabel":"질문"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistentas","stopButtonLabel":"Stabdyti","askButtonLabel":"Klausti"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistents","stopButtonLabel":"Apturēt","askButtonLabel":"Uzdot jautājumu"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Stoppen","askButtonLabel":"Vragen"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Stopp","askButtonLabel":"Spør"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asystent","stopButtonLabel":"Zatrzymaj","askButtonLabel":"Zadaj pytanie"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistente","stopButtonLabel":"Parar","askButtonLabel":"Perguntar"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistente","stopButtonLabel":"Parar","askButtonLabel":"Perguntar"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistent","stopButtonLabel":"Oprire","askButtonLabel":"Întrebați"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Помощник","stopButtonLabel":"Остановить","askButtonLabel":"Спросить"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistent","stopButtonLabel":"Stop","askButtonLabel":"Opýtať sa"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Pomočnik","stopButtonLabel":"Ustavi","askButtonLabel":"Vprašaj"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Asistent","stopButtonLabel":"Zaustavi","askButtonLabel":"Pitajte"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"assistantLabel":"Assistent","stopButtonLabel":"Stoppa","askButtonLabel":"Fråga"}
|