@esri/solutions-components 5.1.1 → 5.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cdn/{E5A7A2YY.js → 3CSSTWYC.js} +1 -1
- package/dist/cdn/{OYMJFSWN.js → 3DNEBMT3.js} +1 -1
- package/dist/cdn/{VTRC64F6.js → 3FIRDPVD.js} +1 -1
- package/dist/cdn/{5YD3IE6V.js → 3KYCZII7.js} +1 -1
- package/dist/cdn/{P2QNOVPZ.js → 3NI2BJYO.js} +1 -1
- package/dist/cdn/{G2H3X6NS.js → 3W7ANZME.js} +1 -1
- package/dist/cdn/{P4ZYEBFM.js → 4RH7N22O.js} +1 -1
- package/dist/cdn/{6FNUCCS3.js → 5F6WBFDO.js} +1 -1
- package/dist/cdn/{S57RXN34.js → 5IO4VX4R.js} +1 -1
- package/dist/cdn/{KXANPOG5.js → 5Q64VY2E.js} +1 -1
- package/dist/cdn/{N5D7USS3.js → 65OXHGCN.js} +1 -1
- package/dist/cdn/{DGY2VKHA.js → 6F6YFDOY.js} +1 -1
- package/dist/cdn/{PGFW2YO5.js → 6KBY56R4.js} +1 -1
- package/dist/cdn/{XYJU325L.js → 6L6JOGWD.js} +1 -1
- package/dist/cdn/{Q5XHG472.js → 6OKLCUSH.js} +1 -1
- package/dist/cdn/{224NND54.js → 6RQBPR56.js} +1 -1
- package/dist/cdn/{ERQAH6G3.js → 74Z5A6E2.js} +1 -1
- package/dist/cdn/{WJRVHF3G.js → 7AHZBLTM.js} +1 -1
- package/dist/cdn/{AXEZNIEX.js → 7EJXZVSX.js} +1 -1
- package/dist/cdn/{K6GC6RUA.js → 7NQYBMRX.js} +1 -1
- package/dist/cdn/{SWUMBQ6T.js → 7XPOQHB4.js} +1 -1
- package/dist/cdn/A4KEZALJ.js +2 -0
- package/dist/cdn/{7GVLJERR.js → AS7PVOU3.js} +1 -1
- package/dist/cdn/{ZX5GQTIE.js → BFFHQBDI.js} +1 -1
- package/dist/cdn/{3T56IY7B.js → BKIKLE4Z.js} +1 -1
- package/dist/cdn/{D25JFQEK.js → BWNEUQZZ.js} +1 -1
- package/dist/cdn/{VNYXOWZX.js → BZWJ3KFS.js} +115 -115
- package/dist/cdn/{4G5PYXFM.js → C2GWD5VP.js} +1 -1
- package/dist/cdn/{US5ONKMV.js → C3SIGIJC.js} +1 -1
- package/dist/cdn/CC7JGR5Q.js +2 -0
- package/dist/cdn/{R7DGMKJ5.js → CKPQTIAF.js} +1 -1
- package/dist/cdn/{Z324WI3X.js → CRTJERAB.js} +1 -1
- package/dist/cdn/{DJXQKOIX.js → CVKCFLNY.js} +1 -1
- package/dist/cdn/{CJJEWE3Q.js → CVNW2AU2.js} +1 -1
- package/dist/cdn/{XDLYXP3W.js → CXTHIJOC.js} +65 -73
- package/dist/cdn/{R6ANOQU2.js → DE7GSGUB.js} +1 -1
- package/dist/cdn/{5VUSSAPX.js → DEVAXAP7.js} +1 -1
- package/dist/cdn/{K5EP7XDM.js → DF2U7HIU.js} +1 -1
- package/dist/cdn/{NEZAEPUJ.js → DLV7AZZ6.js} +1 -1
- package/dist/cdn/{4RWJ22V3.js → DQJ36YEL.js} +1 -1
- package/dist/cdn/{MZOWOFAE.js → DXI5HEQM.js} +1 -1
- package/dist/cdn/{EL34IIAJ.js → E3O6DPAL.js} +1 -1
- package/dist/cdn/{W3SEKNJO.js → E5YZOOW3.js} +1 -1
- package/dist/cdn/{SUOJTOE2.js → EBDDUQNC.js} +1 -1
- package/dist/cdn/{RY7S2ICL.js → EHIUCEAX.js} +1 -1
- package/dist/cdn/{WZHA7MTK.js → EJRV6YWD.js} +1 -1
- package/dist/cdn/EX4K4RKP.js +2 -0
- package/dist/cdn/{2MDEEI52.js → FSFVH74N.js} +1 -1
- package/dist/cdn/{VIZY55AV.js → GHVPHEOH.js} +1 -1
- package/dist/cdn/GPIIJWNM.js +2 -0
- package/dist/cdn/{KWOBLDUS.js → GRVDJVOF.js} +1 -1
- package/dist/cdn/{P734JXTN.js → GSI62QHB.js} +1 -1
- package/dist/cdn/{B7TH7XYI.js → GWIC6C6P.js} +1 -1
- package/dist/cdn/{6CVQ3V2G.js → GZZMHIFA.js} +1 -1
- package/dist/cdn/{TDDVICGP.js → HQFL3NGM.js} +1 -1
- package/dist/cdn/{QKQXW6OQ.js → INFZEU32.js} +1 -1
- package/dist/cdn/{Q5LSIHQ4.js → J7DTCWOP.js} +1 -1
- package/dist/cdn/{GSOMYPWB.js → KB7CXY4N.js} +1 -1
- package/dist/cdn/{OU4VLS5H.js → KMY4AVEA.js} +1 -1
- package/dist/cdn/{KENYVRIH.js → L6XSVTY3.js} +1 -1
- package/dist/cdn/{DQPIAF2T.js → LCDURBN6.js} +1 -1
- package/dist/cdn/{JKUPRPWA.js → LFIP5DV3.js} +1 -1
- package/dist/cdn/{PDJXTJHO.js → LK6WQCXQ.js} +1 -1
- package/dist/cdn/{ONAAPGO3.js → LSDYUCCZ.js} +1 -1
- package/dist/cdn/{VEBBZ2RS.js → LXJI7FYN.js} +1 -1
- package/dist/cdn/{4SYZADNV.js → MVXK7UGO.js} +1 -1
- package/dist/cdn/{LIEHXKWK.js → MZ5XI2CY.js} +1 -1
- package/dist/cdn/{NWNUNME7.js → NIUKLQOT.js} +1 -1
- package/dist/cdn/{AIM6JKQK.js → NJSQ3NUT.js} +1 -1
- package/dist/cdn/{G772MFBV.js → NVNB4L52.js} +1 -1
- package/dist/cdn/{KLFAQLC6.js → NWOPIQFN.js} +1 -1
- package/dist/cdn/{M5VGNDPK.js → O6HS2AMH.js} +1 -1
- package/dist/cdn/{HQIM7CQS.js → OPWMEQVM.js} +1 -1
- package/dist/cdn/{VX3K6KJB.js → OVAQRVFG.js} +1 -1
- package/dist/cdn/{HMZ4VIJQ.js → P2FSR5OV.js} +1 -1
- package/dist/cdn/{E4OPUBGE.js → PQVA7SKB.js} +1 -1
- package/dist/cdn/{QWQ535RX.js → PSM4UX7K.js} +1 -1
- package/dist/cdn/{EWIPITVN.js → Q5N7I65T.js} +1 -1
- package/dist/cdn/{RPUUOIRT.js → QODVIACF.js} +1 -1
- package/dist/cdn/{VXIWNY5G.js → QVD3AXIP.js} +1 -1
- package/dist/cdn/{DEATAJID.js → RAL6IXW5.js} +1 -1
- package/dist/cdn/{Y3PEQHDX.js → RJLEYL7O.js} +1 -1
- package/dist/cdn/{JGSZS6VC.js → RNNEZRGA.js} +1 -1
- package/dist/cdn/{SEII6Y3C.js → RPL5Q7IL.js} +1 -1
- package/dist/cdn/{PEI3LZZL.js → RQVXDCWL.js} +1 -1
- package/dist/cdn/{LADUP3BG.js → SQEPSAKG.js} +1 -1
- package/dist/cdn/{DXQBDTBG.js → T7O4WZGU.js} +1 -1
- package/dist/cdn/{F6LBLCUM.js → UDWEFNJE.js} +1 -1
- package/dist/cdn/{VPHEAUEZ.js → UILBHLN7.js} +1 -1
- package/dist/cdn/{AIZ2P72X.js → VSRNGZ43.js} +1 -1
- package/dist/cdn/{3BL4GCSN.js → WNYAZ4ME.js} +1 -1
- package/dist/cdn/{GYVIOOMC.js → WRMREY3V.js} +1 -1
- package/dist/cdn/{5A5W5PLO.js → WVCL5OUK.js} +1 -1
- package/dist/cdn/{QKPUJ5CZ.js → XIUYVZYL.js} +1 -1
- package/dist/cdn/{VZ2ZZK3Y.js → Y2KRCLNN.js} +1 -1
- package/dist/cdn/{67KMG355.js → YBJ6AHAG.js} +1 -1
- package/dist/cdn/{OTTBXOCQ.js → YHF3Q7QB.js} +1 -1
- package/dist/cdn/{GV3GU3O3.js → Z6CZ7GFZ.js} +1 -1
- package/dist/cdn/{YJ3DKEEZ.js → ZB5UCRCG.js} +1 -1
- package/dist/cdn/{NQP26Q5H.js → ZHVO477V.js} +1 -1
- package/dist/cdn/{OSOSX7F3.js → ZXGNDW3R.js} +1 -1
- package/dist/cdn/index.js +1 -1
- package/dist/chunks/runtime.js +1 -1
- package/dist/components/arcgis-solutions-assistant/customElement.js +125 -119
- package/dist/components/crowdsource-manager/customElement.d.ts +0 -6
- package/dist/components/crowdsource-manager/customElement.js +14 -11
- package/dist/components/layer-table/customElement.js +2 -2
- package/dist/docs/api.json +1 -1
- package/dist/docs/docs.json +1 -1
- package/dist/docs/vscode.html-custom-data.json +1 -1
- package/dist/docs/web-types.json +1 -1
- package/dist/loader.js +1 -1
- package/dist/solutions-components_commit.txt +7 -4
- package/dist/types/lumina.d.ts +1 -1
- package/dist/types/preact.d.ts +1 -1
- package/dist/types/react.d.ts +1 -1
- package/dist/types/stencil.d.ts +1 -1
- package/dist/utils/interfaces.d.ts +1 -0
- package/package.json +1 -3
- package/dist/cdn/4VP3KTLL.js +0 -2
- package/dist/cdn/BQ2LFMED.js +0 -2
- package/dist/cdn/D5OMLQMV.js +0 -2
- package/dist/cdn/OGH565H7.js +0 -3
- package/dist/cdn/QH343537.js +0 -56
- package/dist/cdn/UUKV62PY.js +0 -109
- package/dist/cdn/WNM5Z4SM.js +0 -2
- package/dist/cdn/ZPEVEBJD.js +0 -121
|
@@ -1,28 +1,27 @@
|
|
|
1
1
|
/* COPYRIGHT Esri - https://js.arcgis.com/5.1/LICENSE.txt */
|
|
2
|
-
import { c as
|
|
3
|
-
import { u as
|
|
4
|
-
import { LitElement as
|
|
5
|
-
import { css as
|
|
6
|
-
import { unsafeHTML as
|
|
2
|
+
import { c as Ne } from "../../chunks/runtime.js";
|
|
3
|
+
import { u as De } from "../../chunks/useT9n.js";
|
|
4
|
+
import { LitElement as Me, createEvent as ae, nothing as re } from "@arcgis/lumina";
|
|
5
|
+
import { css as Re, html as L } from "lit";
|
|
6
|
+
import { unsafeHTML as Pe } from "lit/directives/unsafe-html.js";
|
|
7
7
|
import { useContextConsumer as le } from "@arcgis/lumina/context";
|
|
8
|
-
import { c as
|
|
8
|
+
import { c as Be, b as qe } from "../../chunks/deployAppContexts.js";
|
|
9
9
|
import { T as M } from "../../chunks/interfaces.js";
|
|
10
|
-
import { m as
|
|
10
|
+
import { m as Ue } from "../../chunks/helpers.js";
|
|
11
11
|
import G from "@arcgis/core/config.js";
|
|
12
|
-
import { createRef as
|
|
12
|
+
import { createRef as Oe, ref as ze } from "lit-html/directives/ref.js";
|
|
13
13
|
import { Annotation as b, StateGraph as W, START as K, END as A, NodeInterrupt as de } from "@langchain/langgraph/web";
|
|
14
|
-
import { createAgentRuntimeState as X, sendTraceMessage as w, invokeStructuredPrompt as
|
|
15
|
-
import c, { z as
|
|
14
|
+
import { createAgentRuntimeState as X, sendTraceMessage as w, invokeStructuredPrompt as C, getEmbeddings as je, cosineSimilarity as Ge, invokeTextPrompt as Je } from "@arcgis/ai-components/utils/index.js";
|
|
15
|
+
import c, { z as E } from "zod";
|
|
16
16
|
import * as Y from "@esri/arcgis-rest-portal";
|
|
17
|
-
import { applyPatch as
|
|
17
|
+
import { applyPatch as He } from "fast-json-patch";
|
|
18
18
|
import "@langchain/core/messages";
|
|
19
19
|
import { C as pe } from "../../chunks/converter.js";
|
|
20
|
-
import { v as J, b as H, S as
|
|
21
|
-
import { invokeStructuredPrompt as Ke } from "@arcgis/ai-orchestrator";
|
|
20
|
+
import { v as J, b as H, S as Ve, h as Qe, E as We, g as Ke } from "../../chunks/validators.js";
|
|
22
21
|
import { t as me, g as q, c as he, r as ge, d as N } from "../../chunks/templates.js";
|
|
23
22
|
import Xe from "@arcgis/core/portal/Portal.js";
|
|
24
23
|
import Ye from "@arcgis/core/portal/PortalItem.js";
|
|
25
|
-
const Ze =
|
|
24
|
+
const Ze = Re`:host{display:block;height:100%}.margin-lg{margin:var(--calcite-spacing-lg)}.display-flex-row{display:flex;flex-direction:row}.assistant-split-container{display:flex;width:100%;height:calc(100vh - 78px);overflow:hidden;border-radius:10px}.assistant-panel{display:flex;flex-direction:column;height:100%;border:1px solid var(--calcite-color-surface-3);background-color:var(--calcite-color-surface-2);overflow:hidden}.chat-panel{min-width:320px}.builder-panel{min-width:320px;max-width:100%;border-left:1px solid var(--calcite-color-surface-3)}.panel-actions{display:flex;gap:8px;padding:6px;align-items:center}.builder-header,.builder-footer{padding:10px;background:var(--calcite-color-surface-1);border-bottom:1px solid var(--calcite-color-surface-3)}.builder-content{flex:1;overflow:auto;padding:12px}.builder-content pre{white-space:pre-wrap;word-wrap:break-word;max-height:100%;overflow:auto}.builder-actions{display:flex;gap:6px;align-items:center}.padding-left-10{padding-left:10px}.chat-container{display:flex;flex-direction:column;gap:0px;max-width:600px;height:75%;background-color:var(--calcite-color-surface-4);padding:1px}.chat-container_expanded{display:flex;flex-direction:column;gap:0px;max-width:100%;height:95%;background-color:var(--calcite-color-surface-1);border-radius:10px;padding:10px}.chat-panel{--calcite-color-focus: var(--calcite-color-brand);--calcite-panel-border-color: var(--calcite-color-border-2);--calcite-internal-panel-header-vertical-padding: 0px;--calcite-panel-header-content-space: 0px;border:var(--calcite-border-width-sm) solid var(--calcite-color-border-2);height:100%}.header-content{display:flex;align-items:center;gap:var(--calcite-spacing-sm);height:65px;box-sizing:border-box;padding-inline-start:var(--calcite-space-2xl)}@media(resolution:1.25dppx),(resolution:1.75dppx){.chat-panel{margin-top:.5px}}.header-title{font-size:var(--calcite-font-size-md);font-weight:var(--calcite-font-weight-medium);color:var(--calcite-color-text-1)}.beta-chip{--calcite-chip-corner-radius: var(--calcite-corner-radius-half)}.chat-panel calcite-card,.chat-panel calcite-text-area,.chat-panel calcite-button,.chat-panel .chat-messages,.chat-panel .chat-input{--calcite-color-focus: var(--calcite-color-brand)}.assistant-followup-chip:focus{outline:2px solid var(--calcite-color-brand)}.chat-panel-heading{font-size:var(--calcite-font-size-0);font-weight:var(--calcite-font-weight-medium);color:var(--calcite-color-surface-1, var(--calcite-color-text-1))}.chat-messages{display:flex;flex-direction:column;gap:20px;padding:4px;height:100%;overflow-y:auto}.user-message{align-self:flex-end;background:var(--calcite-color-brand);border-radius:8px;max-width:90%;--calcite-card-corner-radius: 8px;--calcite-card-background-color: var(--calcite-color-brand);--calcite-card-border-color: var(--calcite-color-brand);color:var(--calcite-color-text-inverse);text-align:left}.system-message{align-self:flex-start;background:var(--calcite-color-surface-3);border-radius:8px;max-width:90%;--calcite-card-corner-radius: 8px;--calcite-card-background-color: var(--calcite-color-surface-4);--calcite-card-border-color: var(--calcite-color-surface-4);color:var(--calcite-color-inverse);text-align:left}.loader-message{align-self:flex-start;background:var(--calcite-color-surface-4);border-radius:8px;--calcite-card-corner-radius: 8px;--calcite-card-background-color: var(--calcite-color-surface-4);--calcite-card-border-color: var(--calcite-color-surface-4)}.message-content{padding:0;font-size:14px}.response-message.message-content>p:first-of-type{margin-top:0}.message-content img{max-width:100%;height:auto;display:block;object-fit:contain}.message-content-pad{padding-bottom:10px;font-size:14px}.message-content-summary{padding-bottom:14px}.message-content-alignment{display:flex;align-items:center;gap:var(--calcite-spacing-md);font-size:var(--calcite-font-size--1);color:var(--calcite-color-text-1)}.padding-top-10{padding-top:10px}.padding-right-8{padding-right:8px}.padding-left-right-5{padding-right:5px;padding-left:5px}.chip-content{padding:5px 5px 5px 0}.chat-input{display:flex;flex-direction:row;flex-grow:1}.table-cell{--calcite-table-cell-background: var(--calcite-color-surface-4)}.cursor-pointer{cursor:pointer}.notice-border-color{--temp-initial-brand: var(--calcite-color-brand)}.notice-border-color calcite-notice{--calcite-color-brand: #ddd;--calcite-icon-color: var(--temp-initial-brand)}.notice-border-color calcite-notice *{--calcite-color-brand: var(--temp-initial-brand)}.solution-card{padding:5px 0;text-decoration:none;display:block;width:100%;cursor:pointer}.solution-card calcite-card{display:flex;flex-direction:column;max-width:520px;overflow:hidden;--calcite-card-corner-radius: var(--calcite-corner-radius-round) !important;--calcite-card-shadow: var(--calcite-shadow-sm);--calcite-card-background-color: var(--calcite-card-background-color) }.solution-card div[slot=thumbnail]{max-height:100%;width:100%;position:relative;&:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;transition:all .15s ease-in-out}}.solution-card div[slot=thumbnail] img{max-height:100%;width:100%;object-fit:cover}.solution-card span[slot=description]{padding-top:10px}.solution-card calcite-chip{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);visibility:hidden;pointer-events:none;opacity:0;transition:all .15s ease-in-out;z-index:9999}.solution-card:hover calcite-chip{visibility:visible;opacity:1}.solution-card:hover div[slot=thumbnail]:after{background-color:#00000080}.solution-card:hover h3{text-decoration:underline}.solution-card:focus{outline:2px solid var(--calcite-color-brand)}.references-container{padding-top:10px;display:block}.references-container.collapsed{display:none}.width-100{width:100%}.disclaimer-div{display:flex;align-items:center;gap:var(--calcite-spacing-sm);font-size:var(--calcite-font-size--0);color:var(--calcite-color-text-1)}.display-none{display:none}.chat-messages calcite-fab{position:absolute;bottom:16px;left:50%;transform:translate(-50%);z-index:999}.icon-color-background{--calcite-button-icon-color: var(--calcite-color-surface-1)}#closeAssistantButton{--calcite-action-text-color: var(--calcite-color-text-1)}.icon-color-background:focus{--calcite-color-focus: var(--calcite-color-surface-1)}@media(max-width:430px){.solution-card .solution-snippet{display:none}}.height-32-flex-auto{height:32px;flex:0 0 auto}.margin-top-0.message-content>p:first-of-type{margin-top:0}a:not(.solution-card){color:var(--calcite-link-text-color, var(--calcite-color-text-link));cursor:pointer;text-decoration:none;line-height:inherit;background-image:linear-gradient(currentColor,currentColor),linear-gradient(var(--calcite-color-brand-underline),var(--calcite-color-brand-underline));background-position-x:0%,100%;background-position-y:min(1.5em,100%);background-repeat:no-repeat,no-repeat;background-size:0% 1px,100% 1px;transition-property:background-size,color;transition-duration:var(--calcite-animation-timing, .15s);transition-timing-function:ease-in-out;outline-color:transparent;position:relative}a:not(.solution-card):hover{background-size:100% 1px,100% 1px}a:not(.solution-card):focus{outline:2px solid var(--calcite-color-brand);outline-offset:2px;outline-color:var(--calcite-color-brand)}a:not(.solution-card):active{color:var(--calcite-color-brand-press)}`;
|
|
26
25
|
async function v(s, e) {
|
|
27
26
|
const t = Object.entries(s).find(
|
|
28
27
|
([i]) => i.endsWith(`/${e}.md`)
|
|
@@ -71,9 +70,9 @@ function ye(s) {
|
|
|
71
70
|
});
|
|
72
71
|
window.dispatchEvent(e);
|
|
73
72
|
}
|
|
74
|
-
const et =
|
|
75
|
-
needsContext:
|
|
76
|
-
rewrittenQuery:
|
|
73
|
+
const et = E.object({
|
|
74
|
+
needsContext: E.boolean().describe("True when the explorer query requires added context from prior turns."),
|
|
75
|
+
rewrittenQuery: E.string().min(1).describe("The final query to send to doc AI. Keep original query if no context is needed.")
|
|
77
76
|
}), ce = (s) => s?.signal?.aborted ?? !1, be = /* @__PURE__ */ Object.assign({
|
|
78
77
|
"./prompts/solutions_explorer_description.md": () => import("../../chunks/solutions_explorer_description.js").then((s) => s.default),
|
|
79
78
|
"./prompts/transformQuery.md": () => import("../../chunks/transformQuery.js").then((s) => s.default)
|
|
@@ -84,6 +83,13 @@ function tt(s) {
|
|
|
84
83
|
function st(s) {
|
|
85
84
|
return s.replace(/!\[([^\]]*)\]\(([^)]+)\)/g, (e, t, i) => `<img src="${i}" alt="${t}" style="width: 100%;">`);
|
|
86
85
|
}
|
|
86
|
+
function xe(s) {
|
|
87
|
+
const e = (s ?? "").trim();
|
|
88
|
+
if (!e)
|
|
89
|
+
return "en";
|
|
90
|
+
const t = e.split(/[-_]/)[0]?.toLowerCase();
|
|
91
|
+
return t ? t.slice(0, 2) : "en";
|
|
92
|
+
}
|
|
87
93
|
function it(s, e) {
|
|
88
94
|
const t = [];
|
|
89
95
|
return (e?.configurable?.context?.configContext.allCards ?? []).forEach((n) => {
|
|
@@ -109,7 +115,7 @@ function it(s, e) {
|
|
|
109
115
|
function nt(s) {
|
|
110
116
|
return s && s.helperServices.aiAssistantServices ? `${s.helperServices.aiAssistantServices.url}/skills/doc_ai_assistant/chat` : null;
|
|
111
117
|
}
|
|
112
|
-
function
|
|
118
|
+
function ve(s) {
|
|
113
119
|
return s && s.helperServices.aiAssistantServices ? `${s.helperServices.aiAssistantServices.url}/skills/doc_ai_assistant/api/pre-chat` : null;
|
|
114
120
|
}
|
|
115
121
|
async function Q(s, e, t) {
|
|
@@ -131,7 +137,7 @@ async function at(s, e) {
|
|
|
131
137
|
if (!i || n.length <= 1 || i === "explorer")
|
|
132
138
|
return t;
|
|
133
139
|
try {
|
|
134
|
-
const o = await v(be, "transformQuery"), a = await
|
|
140
|
+
const o = await v(be, "transformQuery"), a = await C({
|
|
135
141
|
promptText: o,
|
|
136
142
|
modelTier: "advanced",
|
|
137
143
|
temperature: 0,
|
|
@@ -166,9 +172,9 @@ const rt = b.Root({
|
|
|
166
172
|
reducer: (s, e) => e ?? s,
|
|
167
173
|
default: () => null
|
|
168
174
|
})
|
|
169
|
-
}), lt = () => new W(rt).addNode("initializeAgent", ut).addNode("askSolutionsQuestions", ct).addEdge(K, "initializeAgent").addEdge("initializeAgent", "askSolutionsQuestions").addEdge("askSolutionsQuestions", A),
|
|
175
|
+
}), lt = () => new W(rt).addNode("initializeAgent", ut).addNode("askSolutionsQuestions", ct).addEdge(K, "initializeAgent").addEdge("initializeAgent", "askSolutionsQuestions").addEdge("askSolutionsQuestions", A), _e = async (s, e, t, i) => {
|
|
170
176
|
if (!s) return;
|
|
171
|
-
const n =
|
|
177
|
+
const n = ve(s);
|
|
172
178
|
if (!n) return;
|
|
173
179
|
const a = { context: {
|
|
174
180
|
kind: "DocAIAssistantRequest",
|
|
@@ -176,7 +182,7 @@ const rt = b.Root({
|
|
|
176
182
|
products: "ArcGIS Solutions",
|
|
177
183
|
persona: { persona: "apps-solutions" },
|
|
178
184
|
pipeline: {
|
|
179
|
-
translation: { allow: !0, language: t, use_llm: !1 }
|
|
185
|
+
translation: { allow: !0, language: xe(t), use_llm: !1 }
|
|
180
186
|
}
|
|
181
187
|
}
|
|
182
188
|
} };
|
|
@@ -201,7 +207,7 @@ const rt = b.Root({
|
|
|
201
207
|
products: "ArcGIS Solutions",
|
|
202
208
|
persona: { persona: "apps-solutions" },
|
|
203
209
|
pipeline: {
|
|
204
|
-
translation: { allow: !0, language: e?.configurable?.context?.configContext.locale
|
|
210
|
+
translation: { allow: !0, language: xe(e?.configurable?.context?.configContext.locale), use_llm: !1 }
|
|
205
211
|
}
|
|
206
212
|
}
|
|
207
213
|
}
|
|
@@ -220,18 +226,18 @@ const rt = b.Root({
|
|
|
220
226
|
const d = async (y) => {
|
|
221
227
|
const u = y.context?.results?.[0]?.reply ?? "";
|
|
222
228
|
if (u !== "") {
|
|
223
|
-
const
|
|
224
|
-
l =
|
|
229
|
+
const I = tt(u), F = st(I), T = it(F, e);
|
|
230
|
+
l = T.source, n = [
|
|
225
231
|
...n,
|
|
226
|
-
...
|
|
227
|
-
(z) => !n.some((
|
|
232
|
+
...T.allMatches.filter(
|
|
233
|
+
(z) => !n.some((S) => S.solution.id === z.solution.id)
|
|
228
234
|
)
|
|
229
235
|
];
|
|
230
236
|
}
|
|
231
237
|
const g = y.context?.results?.[0]?.status?.currentStatusStep;
|
|
232
238
|
if (g) {
|
|
233
|
-
let
|
|
234
|
-
g === 1 ?
|
|
239
|
+
let I = "";
|
|
240
|
+
g === 1 ? I = t.agentProgress.explorerAgentReading : g === 2 ? I = t.agentProgress.explorerAgentReviewing : g === 3 && (I = t.agentProgress.explorerAgentPreparing), await w({ text: I }, e);
|
|
235
241
|
}
|
|
236
242
|
};
|
|
237
243
|
for (await d(a); r.hasMore; ) {
|
|
@@ -253,7 +259,7 @@ const rt = b.Root({
|
|
|
253
259
|
inquiryId: a.inquiryId
|
|
254
260
|
}, await d(a);
|
|
255
261
|
}
|
|
256
|
-
return
|
|
262
|
+
return ve(e?.configurable?.context.portal) && _e(
|
|
257
263
|
e?.configurable?.context.portal,
|
|
258
264
|
e?.configurable?.context.token ?? "",
|
|
259
265
|
e?.configurable?.context.configContext.locale ?? "en",
|
|
@@ -272,7 +278,7 @@ const rt = b.Root({
|
|
|
272
278
|
};
|
|
273
279
|
};
|
|
274
280
|
await v(be, "solutions_explorer_description");
|
|
275
|
-
const
|
|
281
|
+
const we = (s) => {
|
|
276
282
|
if (s && Array.isArray(s.id) && s.id.length > 0)
|
|
277
283
|
return s.id[s.id.length - 1].replace("Message", "").toLowerCase();
|
|
278
284
|
if (s && typeof s._getType == "function")
|
|
@@ -283,7 +289,7 @@ const _e = (s) => {
|
|
|
283
289
|
}
|
|
284
290
|
return "human";
|
|
285
291
|
}, dt = (s) => {
|
|
286
|
-
const e =
|
|
292
|
+
const e = we(s);
|
|
287
293
|
if (s && s.kwargs)
|
|
288
294
|
return {
|
|
289
295
|
role: e,
|
|
@@ -298,7 +304,7 @@ const _e = (s) => {
|
|
|
298
304
|
return s.id && (t.id = s.id), s.name && (t.name = s.name), s.additional_kwargs && (t.additional_kwargs = s.additional_kwargs), s.response_metadata && (t.response_metadata = s.response_metadata), t;
|
|
299
305
|
}
|
|
300
306
|
return { role: "human", content: String(s) };
|
|
301
|
-
}, pt = (s) =>
|
|
307
|
+
}, pt = (s) => we(s) === "human", mt = (s, e = 3) => s.filter((t) => pt(t)).slice(-e).map(dt), ht = (s, e = " ") => mt(s).map((n) => n.content).join(e).trim(), gt = { understandingRequest: "Understanding your request...", selectTemplatePrompt: "This use case could be supported in a few different ways. Choose the option that best matches what you want to accomplish.", searchingExistingSolutions: "Searching for existing solutions...", existingSolutionMatch: "I found one or more existing solutions that match your use case. These are ready-to-use solutions that may already meet your needs and can be deployed now. Do you want to continue building your own solution?", continueBuildingYes: "Yes, I want to build a new solution", continueBuildingNo: "No, I’ll review existing solutions", continueBuildingDeclined: "Sounds good. We can focus on existing solutions. Let me know if I can help answer any questions or provide more details.", creatingDesign: "Generating solution design...", updatingDesign: "Updating solution design...", applyChangeFailed: "I wasn't able to apply that change. The design was not modified. Please try rephrasing your request.", createDesignFailed: "I wasn't able to create a solution design from that request. Please try rephrasing and try again.", discardMessage: "Are you sure you want to discard your solution?", discardForNewSolution: "I can help you build a new solution, but I will need to discard your current solution design. Do you want to continue?" }, ft = {
|
|
302
308
|
builderMessages: gt
|
|
303
309
|
};
|
|
304
310
|
class x {
|
|
@@ -620,13 +626,13 @@ class x {
|
|
|
620
626
|
e.name = this._getUniqueTruncatedFieldName(e.name, this.fieldNameRegistry), this.fieldNameRegistry.add(e.name.toLowerCase()), this._logAutoFix(`Field '${l}' exceeds ${x.FIELD_NAME_MAX_LENGTH} characters. Auto-fixing to '${e.name}'.`);
|
|
621
627
|
} else
|
|
622
628
|
this._logIssue(`Field '${e.name}' exceeds ${x.FIELD_NAME_MAX_LENGTH} characters.`);
|
|
623
|
-
if (
|
|
629
|
+
if (Ve.has(e.name.toLowerCase()))
|
|
624
630
|
if (this.newDesign) {
|
|
625
631
|
const l = e.name;
|
|
626
632
|
e.name = this._getUniqueTruncatedFieldName(l, this.fieldNameRegistry), this.fieldNameRegistry.add(e.name.toLowerCase()), this._logAutoFix(`Field '${l}' is a SQL reserved keyword. Auto-fixing to '${e.name}'.`);
|
|
627
633
|
} else
|
|
628
634
|
this._logIssue(`Field '${e.name}' is a SQL reserved keyword.`);
|
|
629
|
-
if (
|
|
635
|
+
if (Qe.has(e.name.toLowerCase()))
|
|
630
636
|
if (this.newDesign) {
|
|
631
637
|
const l = e.name;
|
|
632
638
|
e.name = this._getUniqueTruncatedFieldName(l, this.fieldNameRegistry), this.fieldNameRegistry.add(e.name.toLowerCase()), this._logAutoFix(`Field '${l}' is a reserved system field name. Auto-fixing to '${e.name}'.`);
|
|
@@ -677,7 +683,7 @@ class x {
|
|
|
677
683
|
return;
|
|
678
684
|
}
|
|
679
685
|
const t = e.length;
|
|
680
|
-
if (!
|
|
686
|
+
if (!Ke(t).isValid) {
|
|
681
687
|
const n = t > 4e3 ? 4e3 : 256;
|
|
682
688
|
this._handleInvalidStringFieldLength(e, n);
|
|
683
689
|
}
|
|
@@ -723,7 +729,7 @@ class x {
|
|
|
723
729
|
* May return an empty string when no valid characters remain.
|
|
724
730
|
*/
|
|
725
731
|
_sanitizeItemName(e, t = x.NAME_MAX_LENGTH) {
|
|
726
|
-
let i = (e ?? "").replace(new RegExp(
|
|
732
|
+
let i = (e ?? "").replace(new RegExp(We.source, "gu"), "").replace(x.INVALID_NAME_CHARS, "").replace(/\s+/gu, " ").trim();
|
|
727
733
|
return i.length > t && (i = i.slice(0, t).trim()), i;
|
|
728
734
|
}
|
|
729
735
|
/**
|
|
@@ -845,9 +851,9 @@ const yt = c.object({
|
|
|
845
851
|
}), wt = c.object({
|
|
846
852
|
response: c.string().describe("Conversational response describing the accepted design changes."),
|
|
847
853
|
patches: c.array(_t).describe("Minimal RFC 6902 patch operations needed to update the current design.")
|
|
848
|
-
}), St = c.object({
|
|
849
|
-
response: c.string().describe("Short, user-friendly explanation of why the requested update was not applied.")
|
|
850
854
|
}), It = c.object({
|
|
855
|
+
response: c.string().describe("Short, user-friendly explanation of why the requested update was not applied.")
|
|
856
|
+
}), St = c.object({
|
|
851
857
|
assistantResponse: c.string().describe("Natural-language response for the user."),
|
|
852
858
|
isValidUpdate: c.boolean().describe("True only when the request is in scope for supported design updates.")
|
|
853
859
|
}), At = c.object({
|
|
@@ -870,11 +876,11 @@ const yt = c.object({
|
|
|
870
876
|
promptModules: o
|
|
871
877
|
} = s;
|
|
872
878
|
try {
|
|
873
|
-
return (await
|
|
879
|
+
return (await C({
|
|
874
880
|
promptText: await v(o, "explainValidationFailure"),
|
|
875
881
|
modelTier: "fast",
|
|
876
882
|
temperature: 0,
|
|
877
|
-
schema:
|
|
883
|
+
schema: It,
|
|
878
884
|
messages: i,
|
|
879
885
|
inputVariables: {
|
|
880
886
|
query: e,
|
|
@@ -890,7 +896,7 @@ const yt = c.object({
|
|
|
890
896
|
}
|
|
891
897
|
}, ee = (s) => s in N, $t = 5, kt = 0.8, Ft = 0.5, Nt = "Web Mapping Application", Dt = "Embeddings";
|
|
892
898
|
let R = null, V = null, P = null, B = null;
|
|
893
|
-
const Mt = "Build",
|
|
899
|
+
const Mt = "Build", $ = /* @__PURE__ */ Object.assign({
|
|
894
900
|
"./prompts/assessBuildRequest.md": () => import("../../chunks/assessBuildRequest.js").then((s) => s.default),
|
|
895
901
|
"./prompts/assessUpdateRequest.md": () => import("../../chunks/assessUpdateRequest.js").then((s) => s.default),
|
|
896
902
|
"./prompts/description.md": () => import("../../chunks/description2.js").then((s) => s.default),
|
|
@@ -898,7 +904,7 @@ const Mt = "Build", E = /* @__PURE__ */ Object.assign({
|
|
|
898
904
|
"./prompts/explainValidationFailure.md": () => import("../../chunks/explainValidationFailure.js").then((s) => s.default),
|
|
899
905
|
"./prompts/findExistingSolution.md": () => import("../../chunks/findExistingSolution.js").then((s) => s.default),
|
|
900
906
|
"./prompts/updateDesign.md": () => import("../../chunks/updateDesign.js").then((s) => s.default)
|
|
901
|
-
}), Rt = ft.builderMessages, m = (s) => s?.signal?.aborted ?? !1, f = (s, e, t) => U(e)?.builderMessages?.[s] ?? Rt[s],
|
|
907
|
+
}), Rt = ft.builderMessages, m = (s) => s?.signal?.aborted ?? !1, f = (s, e, t) => U(e)?.builderMessages?.[s] ?? Rt[s], Ie = (s) => {
|
|
902
908
|
typeof window < "u" && window.dispatchEvent(new CustomEvent("arcgis-solution-design-update", {
|
|
903
909
|
detail: s
|
|
904
910
|
}));
|
|
@@ -944,7 +950,7 @@ const qt = async (s, e, t) => {
|
|
|
944
950
|
} catch {
|
|
945
951
|
return null;
|
|
946
952
|
}
|
|
947
|
-
},
|
|
953
|
+
}, k = (s, e = {}) => {
|
|
948
954
|
let t = s;
|
|
949
955
|
return "itemId" in e && (t = {
|
|
950
956
|
...t,
|
|
@@ -981,7 +987,7 @@ const qt = async (s, e, t) => {
|
|
|
981
987
|
});
|
|
982
988
|
return;
|
|
983
989
|
}
|
|
984
|
-
const e = s?.configurable?.context?.token, t =
|
|
990
|
+
const e = s?.configurable?.context?.token, t = Ce(s), i = Te(s);
|
|
985
991
|
if (!t) {
|
|
986
992
|
console.warn("Solution Builder: missing primarySolutionsGroupId in appConfig; skipping live template hydration.");
|
|
987
993
|
return;
|
|
@@ -1004,7 +1010,7 @@ const qt = async (s, e, t) => {
|
|
|
1004
1010
|
...r,
|
|
1005
1011
|
buildSolution: h
|
|
1006
1012
|
};
|
|
1007
|
-
o[l] =
|
|
1013
|
+
o[l] = k(
|
|
1008
1014
|
new pe(u).dumpToLlmTemplate(),
|
|
1009
1015
|
{
|
|
1010
1016
|
itemId: a.id,
|
|
@@ -1016,36 +1022,36 @@ const qt = async (s, e, t) => {
|
|
|
1016
1022
|
initialTemplate: o[l]
|
|
1017
1023
|
};
|
|
1018
1024
|
})), V = o);
|
|
1019
|
-
},
|
|
1025
|
+
}, Ae = (s) => {
|
|
1020
1026
|
const e = s?.configurable?.context?.token;
|
|
1021
1027
|
return typeof e != "string" || !e.trim() ? null : e;
|
|
1022
|
-
},
|
|
1028
|
+
}, Ce = (s) => {
|
|
1023
1029
|
const e = s?.configurable?.context?.configContext?.primarySolutionsGroupId;
|
|
1024
1030
|
return typeof e != "string" || !e.trim() ? null : e;
|
|
1025
|
-
},
|
|
1031
|
+
}, Te = (s) => {
|
|
1026
1032
|
const e = s?.configurable?.context?.configContext?.portalURL;
|
|
1027
1033
|
if (!(typeof e != "string" || !e.trim()))
|
|
1028
1034
|
return `${e.replace(/\/+$/, "")}/sharing/rest`;
|
|
1029
1035
|
}, Ot = async (s) => {
|
|
1030
1036
|
await Promise.all([
|
|
1031
|
-
|
|
1037
|
+
Ee(s),
|
|
1032
1038
|
te(s)
|
|
1033
1039
|
]);
|
|
1034
|
-
},
|
|
1035
|
-
const e =
|
|
1040
|
+
}, Le = async (s) => {
|
|
1041
|
+
const e = Ae(s);
|
|
1036
1042
|
(!P || e && e !== B) && (B = e ?? B, P = Ot(s).catch((i) => {
|
|
1037
1043
|
throw P = null, B = null, i;
|
|
1038
1044
|
})), await P;
|
|
1039
1045
|
};
|
|
1040
|
-
async function
|
|
1046
|
+
async function Ee(s) {
|
|
1041
1047
|
if (R) return R;
|
|
1042
|
-
const e =
|
|
1048
|
+
const e = Ce(s);
|
|
1043
1049
|
if (!e)
|
|
1044
1050
|
return console.warn("Solution Builder: missing primarySolutionsGroupId in appConfig; skipping embeddings load."), null;
|
|
1045
|
-
const t =
|
|
1051
|
+
const t = Te(s), i = s?.configurable?.context?.configContext?.portalURL;
|
|
1046
1052
|
if (await new Xe(i ? { url: i } : void 0).load(), m(s))
|
|
1047
1053
|
return null;
|
|
1048
|
-
const o =
|
|
1054
|
+
const o = Ae(s) ?? void 0, a = await Bt(e, o, t, s);
|
|
1049
1055
|
return m(s) ? null : a ? (R = a.items, R) : null;
|
|
1050
1056
|
}
|
|
1051
1057
|
const zt = () => Object.entries(N).map(([s, e]) => `ID: ${s}
|
|
@@ -1057,14 +1063,14 @@ Description: ${e.description}`).join(`
|
|
|
1057
1063
|
if (typeof e != "string" || !e.trim())
|
|
1058
1064
|
return null;
|
|
1059
1065
|
try {
|
|
1060
|
-
const t = JSON.parse(e), i =
|
|
1066
|
+
const t = JSON.parse(e), i = k(
|
|
1061
1067
|
{ response: "", ...t },
|
|
1062
1068
|
{ itemId: t?.solution?.itemId ?? null }
|
|
1063
1069
|
), n = Z.safeParse(i);
|
|
1064
1070
|
if (!n.success)
|
|
1065
1071
|
return null;
|
|
1066
1072
|
const { response: o, ...a } = n.data, r = t.templateId, l = typeof r == "string" && ee(r) ? r : null;
|
|
1067
|
-
return
|
|
1073
|
+
return k(
|
|
1068
1074
|
a,
|
|
1069
1075
|
{
|
|
1070
1076
|
sourceBuildSolution: t.sourceBuildSolution,
|
|
@@ -1120,9 +1126,9 @@ Description: ${e.description}`).join(`
|
|
|
1120
1126
|
}, Ht = async (s, e) => {
|
|
1121
1127
|
if (m(e))
|
|
1122
1128
|
return {};
|
|
1123
|
-
await w({ text: f("understandingRequest", e) }, e), await
|
|
1124
|
-
const t = s.agentExecutionContext.userRequest, i = zt(), n = s.agentExecutionContext.messages.slice(-11), o = await
|
|
1125
|
-
promptText: await v(
|
|
1129
|
+
await w({ text: f("understandingRequest", e) }, e), await Le(e);
|
|
1130
|
+
const t = s.agentExecutionContext.userRequest, i = zt(), n = s.agentExecutionContext.messages.slice(-11), o = await C({
|
|
1131
|
+
promptText: await v($, "assessBuildRequest"),
|
|
1126
1132
|
modelTier: "advanced",
|
|
1127
1133
|
temperature: 0,
|
|
1128
1134
|
schema: Tt,
|
|
@@ -1161,11 +1167,11 @@ Description: ${e.description}`).join(`
|
|
|
1161
1167
|
await w({ text: f("understandingRequest", e) }, e);
|
|
1162
1168
|
const i = s.agentExecutionContext.userRequest, n = s.agentExecutionContext.messages.slice(-11);
|
|
1163
1169
|
return {
|
|
1164
|
-
updateAssessment: await
|
|
1165
|
-
promptText: await v(
|
|
1170
|
+
updateAssessment: await C({
|
|
1171
|
+
promptText: await v($, "assessUpdateRequest"),
|
|
1166
1172
|
modelTier: "advanced",
|
|
1167
1173
|
temperature: 0,
|
|
1168
|
-
schema:
|
|
1174
|
+
schema: St,
|
|
1169
1175
|
messages: n,
|
|
1170
1176
|
inputVariables: {
|
|
1171
1177
|
currentDesign: JSON.stringify(me(t)),
|
|
@@ -1204,19 +1210,19 @@ Description: ${e.description}`).join(`
|
|
|
1204
1210
|
if (m(e))
|
|
1205
1211
|
return {};
|
|
1206
1212
|
await w({ text: f("searchingExistingSolutions", e) }, e);
|
|
1207
|
-
const t = s.agentExecutionContext.userRequest, i = ht(s.agentExecutionContext.messages) || t, n = await
|
|
1213
|
+
const t = s.agentExecutionContext.userRequest, i = ht(s.agentExecutionContext.messages) || t, n = await Ee(e);
|
|
1208
1214
|
if (m(e))
|
|
1209
1215
|
return {};
|
|
1210
1216
|
if (!n)
|
|
1211
1217
|
return console.warn("Solutions Search: failed to load solution embeddings cache; skipping search."), { existingMatches: [] };
|
|
1212
1218
|
if (!n.length)
|
|
1213
1219
|
return { existingMatches: [] };
|
|
1214
|
-
const [o] = await
|
|
1220
|
+
const [o] = await je([i]);
|
|
1215
1221
|
if (m(e))
|
|
1216
1222
|
return {};
|
|
1217
1223
|
const a = n.map((u) => ({
|
|
1218
1224
|
solution: u,
|
|
1219
|
-
score:
|
|
1225
|
+
score: Ge(o, u.embedding)
|
|
1220
1226
|
}));
|
|
1221
1227
|
a.sort((u, g) => g.score - u.score);
|
|
1222
1228
|
const r = a.slice(0, $t);
|
|
@@ -1227,8 +1233,8 @@ Snippet: ${u.snippet}
|
|
|
1227
1233
|
Description: ${u.description}`).join(`
|
|
1228
1234
|
|
|
1229
1235
|
`), d = s.agentExecutionContext.messages.slice(-11);
|
|
1230
|
-
return { existingMatches: (await
|
|
1231
|
-
promptText: await v(
|
|
1236
|
+
return { existingMatches: (await C({
|
|
1237
|
+
promptText: await v($, "findExistingSolution"),
|
|
1232
1238
|
modelTier: "fast",
|
|
1233
1239
|
temperature: 0,
|
|
1234
1240
|
schema: At,
|
|
@@ -1262,10 +1268,10 @@ Description: ${u.description}`).join(`
|
|
|
1262
1268
|
summary: t,
|
|
1263
1269
|
status: "success"
|
|
1264
1270
|
};
|
|
1265
|
-
},
|
|
1271
|
+
}, $e = async (s, e) => {
|
|
1266
1272
|
if (m(e))
|
|
1267
1273
|
return {};
|
|
1268
|
-
if (await
|
|
1274
|
+
if (await Le(e), m(e))
|
|
1269
1275
|
return {};
|
|
1270
1276
|
const { currentDesign: t } = s, i = s.agentExecutionContext.userRequest;
|
|
1271
1277
|
await w({ text: f("creatingDesign", e) }, e);
|
|
@@ -1274,15 +1280,15 @@ Description: ${u.description}`).join(`
|
|
|
1274
1280
|
return {};
|
|
1275
1281
|
if (!n?.initialTemplate)
|
|
1276
1282
|
throw new Error("No hydrated templates are available for solution design.");
|
|
1277
|
-
const o =
|
|
1283
|
+
const o = k(
|
|
1278
1284
|
t ?? n.initialTemplate,
|
|
1279
1285
|
{
|
|
1280
1286
|
itemId: (t ?? n.initialTemplate)?.solution?.itemId ?? null,
|
|
1281
1287
|
sourceBuildSolution: t?.sourceBuildSolution ?? n.initialTemplate.sourceBuildSolution,
|
|
1282
1288
|
params: t?.params ?? n.initialTemplate.params ?? null
|
|
1283
1289
|
}
|
|
1284
|
-
), a = s.agentExecutionContext.messages.slice(-11), r = await
|
|
1285
|
-
promptText: await v(
|
|
1290
|
+
), a = s.agentExecutionContext.messages.slice(-11), r = await C({
|
|
1291
|
+
promptText: await v($, "designSolution"),
|
|
1286
1292
|
modelTier: "advanced",
|
|
1287
1293
|
temperature: 0,
|
|
1288
1294
|
schema: Z,
|
|
@@ -1298,7 +1304,7 @@ Description: ${u.description}`).join(`
|
|
|
1298
1304
|
const { response: l, featureLayer: d, ...h } = r, y = ge(
|
|
1299
1305
|
d,
|
|
1300
1306
|
o.featureLayer
|
|
1301
|
-
), u =
|
|
1307
|
+
), u = k(
|
|
1302
1308
|
{ ...h, featureLayer: y },
|
|
1303
1309
|
{
|
|
1304
1310
|
itemId: o?.solution?.itemId,
|
|
@@ -1314,20 +1320,20 @@ Description: ${u.description}`).join(`
|
|
|
1314
1320
|
), {
|
|
1315
1321
|
outputMessage: f("createDesignFailed", e)
|
|
1316
1322
|
};
|
|
1317
|
-
const
|
|
1323
|
+
const I = u.sourceBuildSolution, F = Se(u, I);
|
|
1318
1324
|
if (!F.ok) {
|
|
1319
1325
|
console.warn(
|
|
1320
1326
|
"[SolutionBuilder] designSolution Esri JSON conversion failed:",
|
|
1321
1327
|
{ error: F.error, llmResponse: r, design: u }
|
|
1322
1328
|
);
|
|
1323
|
-
const
|
|
1329
|
+
const T = f("createDesignFailed", e);
|
|
1324
1330
|
return {
|
|
1325
|
-
outputMessage:
|
|
1326
|
-
summary:
|
|
1331
|
+
outputMessage: T,
|
|
1332
|
+
summary: T,
|
|
1327
1333
|
status: "success"
|
|
1328
1334
|
};
|
|
1329
1335
|
}
|
|
1330
|
-
return m(e) ? {} : (
|
|
1336
|
+
return m(e) ? {} : (Ie(u), {
|
|
1331
1337
|
outputMessage: l,
|
|
1332
1338
|
summary: l,
|
|
1333
1339
|
status: "success",
|
|
@@ -1338,13 +1344,13 @@ Description: ${u.description}`).join(`
|
|
|
1338
1344
|
return {};
|
|
1339
1345
|
const { currentDesign: t } = s;
|
|
1340
1346
|
if (!t)
|
|
1341
|
-
return
|
|
1347
|
+
return $e(s, e);
|
|
1342
1348
|
const i = s.agentExecutionContext.userRequest, n = s.agentExecutionContext.messages.slice(-11);
|
|
1343
1349
|
await w({ text: f("updatingDesign", e) }, e);
|
|
1344
1350
|
let o;
|
|
1345
1351
|
try {
|
|
1346
|
-
o = await
|
|
1347
|
-
promptText: await v(
|
|
1352
|
+
o = await C({
|
|
1353
|
+
promptText: await v($, "updateDesign"),
|
|
1348
1354
|
modelTier: "advanced",
|
|
1349
1355
|
temperature: 0,
|
|
1350
1356
|
schema: wt,
|
|
@@ -1406,7 +1412,7 @@ Description: ${u.description}`).join(`
|
|
|
1406
1412
|
he(t)
|
|
1407
1413
|
);
|
|
1408
1414
|
try {
|
|
1409
|
-
|
|
1415
|
+
He(y, h, !0);
|
|
1410
1416
|
} catch (p) {
|
|
1411
1417
|
console.warn(
|
|
1412
1418
|
"[SolutionBuilder] updateDesign JSON patch failed:",
|
|
@@ -1419,7 +1425,7 @@ Description: ${u.description}`).join(`
|
|
|
1419
1425
|
status: "success"
|
|
1420
1426
|
};
|
|
1421
1427
|
}
|
|
1422
|
-
const u =
|
|
1428
|
+
const u = k(
|
|
1423
1429
|
{ response: "", ...y },
|
|
1424
1430
|
{ itemId: t.solution?.itemId ?? null }
|
|
1425
1431
|
), g = Z.safeParse(u);
|
|
@@ -1435,11 +1441,11 @@ Description: ${u.description}`).join(`
|
|
|
1435
1441
|
status: "success"
|
|
1436
1442
|
};
|
|
1437
1443
|
}
|
|
1438
|
-
const { response:
|
|
1444
|
+
const { response: I, featureLayer: F, ...T } = g.data, z = ge(
|
|
1439
1445
|
F,
|
|
1440
1446
|
t.featureLayer
|
|
1441
|
-
),
|
|
1442
|
-
{ ...
|
|
1447
|
+
), S = k(
|
|
1448
|
+
{ ...T, featureLayer: z },
|
|
1443
1449
|
{
|
|
1444
1450
|
itemId: t.solution?.itemId,
|
|
1445
1451
|
sourceBuildSolution: t.sourceBuildSolution,
|
|
@@ -1452,18 +1458,18 @@ Description: ${u.description}`).join(`
|
|
|
1452
1458
|
return {};
|
|
1453
1459
|
if (!D?.initialTemplate)
|
|
1454
1460
|
throw new Error("No hydrated templates are available for solution design.");
|
|
1455
|
-
const j = new x(
|
|
1461
|
+
const j = new x(S, D.initialTemplate, !1);
|
|
1456
1462
|
if (!j.isValid) {
|
|
1457
1463
|
console.warn(
|
|
1458
1464
|
"[SolutionBuilder] updateDesign validation failed:",
|
|
1459
|
-
{ issues: j.issues, llmResponse: o, patchedDesign:
|
|
1465
|
+
{ issues: j.issues, llmResponse: o, patchedDesign: S }
|
|
1460
1466
|
);
|
|
1461
1467
|
const p = await Et({
|
|
1462
1468
|
query: i,
|
|
1463
1469
|
validationIssues: j.issues,
|
|
1464
1470
|
recentMessages: n,
|
|
1465
1471
|
fallbackMessage: f("applyChangeFailed", e),
|
|
1466
|
-
promptModules:
|
|
1472
|
+
promptModules: $
|
|
1467
1473
|
});
|
|
1468
1474
|
return {
|
|
1469
1475
|
outputMessage: p,
|
|
@@ -1471,11 +1477,11 @@ Description: ${u.description}`).join(`
|
|
|
1471
1477
|
status: "success"
|
|
1472
1478
|
};
|
|
1473
1479
|
}
|
|
1474
|
-
const
|
|
1480
|
+
const Fe = S.sourceBuildSolution, ne = Se(S, Fe);
|
|
1475
1481
|
if (!ne.ok) {
|
|
1476
1482
|
console.warn(
|
|
1477
1483
|
"[SolutionBuilder] updateDesign Esri JSON conversion failed:",
|
|
1478
|
-
{ error: ne.error, llmResponse: o, design:
|
|
1484
|
+
{ error: ne.error, llmResponse: o, design: S }
|
|
1479
1485
|
);
|
|
1480
1486
|
const p = f("applyChangeFailed", e);
|
|
1481
1487
|
return {
|
|
@@ -1484,13 +1490,13 @@ Description: ${u.description}`).join(`
|
|
|
1484
1490
|
status: "success"
|
|
1485
1491
|
};
|
|
1486
1492
|
}
|
|
1487
|
-
return m(e) ? {} : (
|
|
1493
|
+
return m(e) ? {} : (Ie(S), {
|
|
1488
1494
|
outputMessage: a,
|
|
1489
1495
|
summary: a,
|
|
1490
1496
|
status: "success",
|
|
1491
|
-
currentDesign:
|
|
1497
|
+
currentDesign: S
|
|
1492
1498
|
});
|
|
1493
|
-
}, ts = (s) => s.currentDesign !== null ? "assessUpdateRequest" : "assessBuildRequest", ss = (s) => !s.updateAssessment || !s.updateAssessment.isValidUpdate ? "invalidUpdateExit" : "updateDesign", is = (s) => !s.assessment || !s.assessment.isValidUseCase ? "invalidBuildExit" : !s.selectedTemplate && s.assessment.matchedTemplates.length > 1 ? "selectTemplateHIL" : "findExistingSolutions", ns = (s) => s.existingMatches.length > 0 ? "confirmContinueBuildingHIL" : "designSolution", os = (s) => s.continueBuilding === !1 ? "declineContinueBuildingExit" : "designSolution", as = () => new W(Gt).addNode("syncCurrentDesignFromContext", Jt).addNode("assessBuildRequest", Ht).addNode("assessUpdateRequest", Qt).addNode("invalidBuildExit", Vt).addNode("invalidUpdateExit", Wt).addNode("selectTemplateHIL", Kt).addNode("findExistingSolutions", Xt).addNode("confirmContinueBuildingHIL", Yt).addNode("declineContinueBuildingExit", Zt).addNode("designSolution",
|
|
1499
|
+
}, ts = (s) => s.currentDesign !== null ? "assessUpdateRequest" : "assessBuildRequest", ss = (s) => !s.updateAssessment || !s.updateAssessment.isValidUpdate ? "invalidUpdateExit" : "updateDesign", is = (s) => !s.assessment || !s.assessment.isValidUseCase ? "invalidBuildExit" : !s.selectedTemplate && s.assessment.matchedTemplates.length > 1 ? "selectTemplateHIL" : "findExistingSolutions", ns = (s) => s.existingMatches.length > 0 ? "confirmContinueBuildingHIL" : "designSolution", os = (s) => s.continueBuilding === !1 ? "declineContinueBuildingExit" : "designSolution", as = () => new W(Gt).addNode("syncCurrentDesignFromContext", Jt).addNode("assessBuildRequest", Ht).addNode("assessUpdateRequest", Qt).addNode("invalidBuildExit", Vt).addNode("invalidUpdateExit", Wt).addNode("selectTemplateHIL", Kt).addNode("findExistingSolutions", Xt).addNode("confirmContinueBuildingHIL", Yt).addNode("declineContinueBuildingExit", Zt).addNode("designSolution", $e).addNode("updateDesign", es).addEdge(K, "syncCurrentDesignFromContext").addConditionalEdges("syncCurrentDesignFromContext", ts, {
|
|
1494
1500
|
assessUpdateRequest: "assessUpdateRequest",
|
|
1495
1501
|
assessBuildRequest: "assessBuildRequest"
|
|
1496
1502
|
}).addConditionalEdges("assessUpdateRequest", ss, {
|
|
@@ -1507,11 +1513,11 @@ Description: ${u.description}`).join(`
|
|
|
1507
1513
|
declineContinueBuildingExit: "declineContinueBuildingExit",
|
|
1508
1514
|
designSolution: "designSolution"
|
|
1509
1515
|
}).addEdge("declineContinueBuildingExit", A).addEdge("designSolution", A).addEdge("updateDesign", A);
|
|
1510
|
-
await v(
|
|
1511
|
-
const rs =
|
|
1512
|
-
tool:
|
|
1513
|
-
confidence:
|
|
1514
|
-
rationale:
|
|
1516
|
+
await v($, "description");
|
|
1517
|
+
const rs = E.object({
|
|
1518
|
+
tool: E.enum(["explorer", "builder", "other"]).describe("The selected tool based on the user’s intent using the conversation context."),
|
|
1519
|
+
confidence: E.number().min(0).max(1).describe("A confidence score (0.00–1.00)."),
|
|
1520
|
+
rationale: E.string().min(1).describe("A brief rationale for the tool choice (≤140 characters)")
|
|
1515
1521
|
}), O = (s) => s?.signal?.aborted ?? !1, se = /* @__PURE__ */ Object.assign({
|
|
1516
1522
|
"./prompts/assistantResponse.md": () => import("../../chunks/assistantResponse.js").then((s) => s.default),
|
|
1517
1523
|
"./prompts/classifyIntent.md": () => import("../../chunks/classifyIntent.js").then((s) => s.default),
|
|
@@ -1533,7 +1539,7 @@ const rs = L.object({
|
|
|
1533
1539
|
detail: { finished: !0, agent: e }
|
|
1534
1540
|
});
|
|
1535
1541
|
window.dispatchEvent(i);
|
|
1536
|
-
},
|
|
1542
|
+
}, ke = b.Root({
|
|
1537
1543
|
...X(),
|
|
1538
1544
|
selectedTool: b({
|
|
1539
1545
|
reducer: (s, e) => e ?? null,
|
|
@@ -1551,7 +1557,7 @@ const rs = L.object({
|
|
|
1551
1557
|
{ text: t?.builderMessages.understandingRequest },
|
|
1552
1558
|
e
|
|
1553
1559
|
);
|
|
1554
|
-
const i = s.agentExecutionContext.userRequest, n = s.agentExecutionContext.messages.slice(-11), { activeSolutionDesign: o, lastTool: a } = ls(e), r = await v(se, "classifyIntent"), l = await
|
|
1560
|
+
const i = s.agentExecutionContext.userRequest, n = s.agentExecutionContext.messages.slice(-11), { activeSolutionDesign: o, lastTool: a } = ls(e), r = await v(se, "classifyIntent"), l = await C({
|
|
1555
1561
|
promptText: r,
|
|
1556
1562
|
modelTier: "advanced",
|
|
1557
1563
|
temperature: 0,
|
|
@@ -1581,7 +1587,7 @@ const rs = L.object({
|
|
|
1581
1587
|
{ text: t?.executingSolutionsAssistantAgent },
|
|
1582
1588
|
e
|
|
1583
1589
|
);
|
|
1584
|
-
const n = await v(se, "assistantResponse"), o = s.agentExecutionContext.messages.slice(-11), a = await
|
|
1590
|
+
const n = await v(se, "assistantResponse"), o = s.agentExecutionContext.messages.slice(-11), a = await Je({
|
|
1585
1591
|
promptText: n,
|
|
1586
1592
|
modelTier: "advanced",
|
|
1587
1593
|
temperature: 0,
|
|
@@ -1593,7 +1599,7 @@ const rs = L.object({
|
|
|
1593
1599
|
summary: a,
|
|
1594
1600
|
status: "success"
|
|
1595
1601
|
};
|
|
1596
|
-
}, ms = (s) => s.selectedTool ?? "other", hs = () => new W(
|
|
1602
|
+
}, ms = (s) => s.selectedTool ?? "other", hs = () => new W(ke).addNode("classifyIntent", cs).addNode("routeToExplorer", us).addNode("routeToBuilder", ds).addNode("assistantResponse", ps).addEdge(K, "classifyIntent").addConditionalEdges("classifyIntent", ms, {
|
|
1597
1603
|
explorer: "routeToExplorer",
|
|
1598
1604
|
builder: "routeToBuilder",
|
|
1599
1605
|
other: "assistantResponse"
|
|
@@ -1602,22 +1608,22 @@ const rs = L.object({
|
|
|
1602
1608
|
name: "Solutions Assistant Agent",
|
|
1603
1609
|
description: gs,
|
|
1604
1610
|
createGraph: hs,
|
|
1605
|
-
workspace:
|
|
1611
|
+
workspace: ke
|
|
1606
1612
|
}, ys = "https://links.esri.com/solutions/agol-organizational-account", bs = "https://links.esri.com/solutions/configure-assistants";
|
|
1607
|
-
class xs extends
|
|
1613
|
+
class xs extends Me {
|
|
1608
1614
|
constructor() {
|
|
1609
1615
|
super(), this.open = !1, this.userFirstName = "", this.builderVisible = !1, this.hasActiveBuilderDesign = !1, this._conversationId = void 0, this._lastTurnAgent = void 0, this._lastResponseAgent = void 0, this._orgSettings = {
|
|
1610
1616
|
aiAssistantsEnabled: !1,
|
|
1611
1617
|
blockBetaApps: !0,
|
|
1612
1618
|
colocateCompute: !1
|
|
1613
|
-
}, this._suggestedPrompts = [], this._hasInteracted = !1, this._isMobile = window.innerWidth <= 800, this._translations =
|
|
1614
|
-
context:
|
|
1619
|
+
}, this._suggestedPrompts = [], this._hasInteracted = !1, this._isMobile = window.innerWidth <= 800, this._translations = De({ name: "arcgis-solutions-assistant", blocking: !0 }), this._builderWidth = 48, this._solutionDesignJson = '{ "solution": null }', this._isAssistantBusy = !1, this._isBuilderBusy = !1, this._preChatCheck = !1, this._showNewChatConfirm = !1, this._assistantRef = Oe(), this._configContextConsumer = le({
|
|
1620
|
+
context: Be,
|
|
1615
1621
|
subscribe: !0,
|
|
1616
1622
|
callback: (e) => {
|
|
1617
1623
|
e?.portalURL && (G.portalUrl = e.portalURL), e?.userSession && !this.userFirstName && this._loadUserFirstName(), e?.authentication?.PortalSubset?.orgSettings && (this._orgSettings = e?.authentication?.PortalSubset?.orgSettings);
|
|
1618
1624
|
}
|
|
1619
1625
|
}), this._builderDesignContextConsumer = le({
|
|
1620
|
-
context:
|
|
1626
|
+
context: qe,
|
|
1621
1627
|
subscribe: !0,
|
|
1622
1628
|
callback: (e) => {
|
|
1623
1629
|
e?.design && (this._solutionDesignJson = JSON.stringify(e.design, null, 2));
|
|
@@ -1629,7 +1635,7 @@ class xs extends De {
|
|
|
1629
1635
|
if (t.detail?.finished && this._chatStartTime !== null) {
|
|
1630
1636
|
const i = t.detail.agent;
|
|
1631
1637
|
this._lastResponseAgent = i, this._pendingResponseAgent = i;
|
|
1632
|
-
const n =
|
|
1638
|
+
const n = Ue(this._chatStartTime);
|
|
1633
1639
|
this._telemetry?.logEvent({
|
|
1634
1640
|
category: M.ASSISTANT,
|
|
1635
1641
|
action: "Chat",
|
|
@@ -1684,23 +1690,23 @@ class xs extends De {
|
|
|
1684
1690
|
this._loadUserFirstName();
|
|
1685
1691
|
}
|
|
1686
1692
|
willUpdate(e) {
|
|
1687
|
-
e.has("open") && this.open && window.dispatchEvent(new CustomEvent("openAssistant")), this._configContextConsumer.value?.authentication && this._configContextConsumer.value?.userSession?.token && (this._preChatCheck || (
|
|
1693
|
+
e.has("open") && this.open && window.dispatchEvent(new CustomEvent("openAssistant")), this._configContextConsumer.value?.authentication && this._configContextConsumer.value?.userSession?.token && (this._preChatCheck || (_e(this._configContextConsumer.value?.authentication.Portal, this._configContextConsumer.value?.userSession?.token, this._configContextConsumer.value?.locale ?? "en"), this._preChatCheck = !0)), this._configContextConsumer.value?.userSession?.token && this._configContextConsumer.value?.authentication?.CanUseAI;
|
|
1688
1694
|
}
|
|
1689
1695
|
_renderNoSign() {
|
|
1690
|
-
return
|
|
1696
|
+
return L`<calcite-notice class="margin-lg" open scale=m icon=effects kind=info><div slot=message>${this._translations.signInMessage}</div><calcite-link @click=${this._handleSignIn} slot=link title=${this._translations.signInMessage ?? re} class="padding-top-10">${this._translations.signIn}</calcite-link></calcite-notice>`;
|
|
1691
1697
|
}
|
|
1692
1698
|
_renderNoPermission() {
|
|
1693
|
-
return
|
|
1699
|
+
return L`<calcite-notice class="margin-lg" open scale=m icon=effects kind=info><div slot=title>${this._translations.noPermissionTitle}</div><div slot=message class="padding-top-10">${Pe(this._translations.noPermissionMessage.replace("{{orgUrl}}", ys).replace("{{configAI}}", bs))}</div></calcite-notice>`;
|
|
1694
1700
|
}
|
|
1695
1701
|
render() {
|
|
1696
1702
|
let e = this._suggestedPrompts.length > 0 ? this._suggestedPrompts : this._hasInteracted ? [] : Object.values(this._translations.defaultFollowUpQuestions);
|
|
1697
|
-
return this._suggestedPrompts.length > 0 ? e = this._suggestedPrompts : this._hasInteracted || (e = [...Object.values(this._translations.defaultFollowUpQuestions)]),
|
|
1703
|
+
return this._suggestedPrompts.length > 0 ? e = this._suggestedPrompts : this._hasInteracted || (e = [...Object.values(this._translations.defaultFollowUpQuestions)]), L`<calcite-panel class="chat-panel"><div class="header-content" slot=header-content><span class="header-title">${this._translations.solutionAssistantTitle}</span></div>${this._configContextConsumer.value?.userSession?.token ? this._configContextConsumer.value?.authentication?.CanUseAI ? L`${!this._isMobile && L`<calcite-action id=solutionBuilderAction icon=pencil-square .text=${this._translations.tooltips.builder} text-enabled .indicator=${this.hasActiveBuilderDesign} .disabled=${!this.hasActiveBuilderDesign} .active=${this.builderVisible} selection-appearance=highlight @click=${() => {
|
|
1698
1704
|
this._telemetry?.logEvent({
|
|
1699
1705
|
category: M.ASSISTANT,
|
|
1700
1706
|
action: "Toggle Builder Panel",
|
|
1701
1707
|
dimensions: [this.builderVisible ? "Close" : "Open"]
|
|
1702
1708
|
}), window.dispatchEvent(new CustomEvent("toggleSolutionBuilder"));
|
|
1703
|
-
}} scale=m slot=header-actions-end></calcite-action>` || ""}${!this._isMobile &&
|
|
1709
|
+
}} scale=m slot=header-actions-end></calcite-action>` || ""}${!this._isMobile && L`<calcite-tooltip placement=bottom reference-element=solutionBuilderAction><span>${this._translations.tooltips.solutionBuilder}</span></calcite-tooltip>` || ""}<arcgis-assistant reference-element copy-enabled feedback-enabled heading description entry-message=${this._translations.defaultStartUpMessage ?? re} .suggestedPrompts=${e} @arcgisSubmit=${() => {
|
|
1704
1710
|
this._suggestedPrompts = [], e = [], this._hasInteracted = !0, this._chatStartTime = Date.now(), this.assistantProcessing.emit(!0);
|
|
1705
1711
|
}} @arcgisFeedback=${(t) => {
|
|
1706
1712
|
t.detail && console.log("arcgis feedback: ", t.detail);
|
|
@@ -1717,7 +1723,7 @@ class xs extends De {
|
|
|
1717
1723
|
requestAnimationFrame(() => i(1));
|
|
1718
1724
|
}
|
|
1719
1725
|
this.assistantProcessing.emit(!1);
|
|
1720
|
-
}} ${
|
|
1726
|
+
}} ${ze(this._assistantRef)}><calcite-button appearance=transparent id=newChatButton icon-start=speech-bubble-plus kind=neutral .label=${this._translations.tooltips.newChat} @click=${() => {
|
|
1721
1727
|
this.hasActiveBuilderDesign ? this._showNewChatConfirm = !0 : (this._telemetry?.logEvent({
|
|
1722
1728
|
category: M.ASSISTANT,
|
|
1723
1729
|
action: "New Chat",
|
|
@@ -1741,7 +1747,7 @@ class xs extends De {
|
|
|
1741
1747
|
clearSuggestedPrompts: () => {
|
|
1742
1748
|
this._suggestedPrompts = [];
|
|
1743
1749
|
}
|
|
1744
|
-
}}></arcgis-assistant-agent></arcgis-assistant><div slot=footer class="disclaimer-div width-100"><calcite-chip class="beta-chip" appearance=solid kind=neutral .label=${this._translations.betaTag} scale=s>${this._translations.betaTag}</calcite-chip><span>${this._translations.disclaimerMessage} <a href=https://links.esri.com/solutions/security-concern rel="noopener noreferrer" target=_blank>${this._translations.reportConcern}</a></span></div>` : this._renderNoPermission() : this._renderNoSign()}${this._showNewChatConfirm &&
|
|
1750
|
+
}}></arcgis-assistant-agent></arcgis-assistant><div slot=footer class="disclaimer-div width-100"><calcite-chip class="beta-chip" appearance=solid kind=neutral .label=${this._translations.betaTag} scale=s>${this._translations.betaTag}</calcite-chip><span>${this._translations.disclaimerMessage} <a href=https://links.esri.com/solutions/security-concern rel="noopener noreferrer" target=_blank>${this._translations.reportConcern}</a></span></div>` : this._renderNoPermission() : this._renderNoSign()}${this._showNewChatConfirm && L`<calcite-dialog close-disabled escape-disabled .heading=${this._translations.newConversationConfirmTitle} modal open outside-close-disabled>${this._translations.builderMessages.discardMessage}<calcite-button appearance=outline @click=${() => {
|
|
1745
1751
|
this._showNewChatConfirm = !1;
|
|
1746
1752
|
}} slot=footer-end>${this._translations.cancel}</calcite-button><calcite-button appearance=solid kind=danger @click=${() => {
|
|
1747
1753
|
this._telemetry?.logEvent({
|
|
@@ -1807,7 +1813,7 @@ class xs extends De {
|
|
|
1807
1813
|
window.dispatchEvent(t);
|
|
1808
1814
|
}
|
|
1809
1815
|
}
|
|
1810
|
-
|
|
1816
|
+
Ne("arcgis-solutions-assistant", xs);
|
|
1811
1817
|
export {
|
|
1812
1818
|
xs as ArcgisSolutionsAssistant
|
|
1813
1819
|
};
|