@arcgis/ai-components 5.2.0-next.6 → 5.2.0-next.61

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/README.md +2 -2
  2. package/dist/agent-utils/FunctionAgent.d.ts +2 -2
  3. package/dist/agent-utils/LLMAgent.d.ts +2 -2
  4. package/dist/agent-utils/LLMAgent.js +2 -1
  5. package/dist/agent-utils/WorkflowAgent.d.ts +2 -2
  6. package/dist/agent-utils/index.d.ts +177 -0
  7. package/dist/agent-utils/index.js +167 -0
  8. package/dist/agent-utils/middlewares/trace.d.ts +2 -0
  9. package/dist/agent-utils/middlewares/trace.js +25 -33
  10. package/dist/agent-utils/tools/FunctionTool.d.ts +2 -2
  11. package/dist/agent-utils/types.d.ts +36 -7
  12. package/dist/agent-utils/workflows/ConditionalWorkflow.d.ts +2 -2
  13. package/dist/agent-utils/workflows/LoopWorkflow.d.ts +2 -2
  14. package/dist/agent-utils/workflows/ParallelWorkflow.d.ts +2 -2
  15. package/dist/agent-utils/workflows/RouterWorkflow.d.ts +2 -2
  16. package/dist/agent-utils/workflows/SequentialWorkflow.d.ts +2 -2
  17. package/dist/agent-utils/workflows/SwitchWorkflow.d.ts +2 -2
  18. package/dist/cdn/242OOJML.js +2 -0
  19. package/dist/cdn/275NKWUE.js +22 -0
  20. package/dist/cdn/2WDZIJQR.js +2 -0
  21. package/dist/cdn/2XQAM2Q3.js +4 -0
  22. package/dist/cdn/3DJDRAGV.js +2 -0
  23. package/dist/cdn/{AMP6IALT.js → 3UEKINYC.js} +1 -1
  24. package/dist/cdn/3YCSUTGV.js +14 -0
  25. package/dist/cdn/3ZPPYCNL.js +2 -0
  26. package/dist/cdn/434TAA3J.js +2 -0
  27. package/dist/cdn/4CEMUECT.js +2 -0
  28. package/dist/cdn/57OMVTIU.js +2 -0
  29. package/dist/cdn/5L7VPEQM.js +2 -0
  30. package/dist/cdn/6U7TEAAJ.js +2 -0
  31. package/dist/cdn/7NP7WGR5.js +2 -0
  32. package/dist/cdn/AHLLB5QW.js +2 -0
  33. package/dist/cdn/{ZS2TZ6BF.js → AOVJ34QE.js} +1 -1
  34. package/dist/cdn/APFZY4PI.js +2 -0
  35. package/dist/cdn/AYMUK2MC.js +36 -0
  36. package/dist/cdn/BE7ZN5FZ.js +2 -0
  37. package/dist/cdn/BI3LK5D3.js +2 -0
  38. package/dist/cdn/{FL4W4VYN.js → BL273EGZ.js} +17 -1
  39. package/dist/cdn/BSP6IJY4.js +2 -0
  40. package/dist/cdn/{5ZZGKP7N.js → CEKOEHB3.js} +1 -1
  41. package/dist/cdn/CWZEQ4R6.js +2 -0
  42. package/dist/cdn/{VOQX4AVB.js → FC45FF2D.js} +6 -4
  43. package/dist/cdn/FNPLHH4E.js +3 -0
  44. package/dist/cdn/FVDFPK3V.js +18 -0
  45. package/dist/cdn/{ZLXN7NMF.js → FYZATVB3.js} +10 -8
  46. package/dist/cdn/GLOALVJR.js +3 -0
  47. package/dist/cdn/HBLRVXEB.js +2 -0
  48. package/dist/cdn/HJG7QM2R.js +9 -0
  49. package/dist/cdn/HLO655UO.js +2 -0
  50. package/dist/cdn/HPSVZVAR.js +2 -0
  51. package/dist/cdn/HQXPPYMD.js +2 -0
  52. package/dist/cdn/{FX7UOGHP.js → ICBIUFK7.js} +1 -1
  53. package/dist/cdn/ICYUPLZM.js +56 -0
  54. package/dist/cdn/IEHPNCTL.js +2 -0
  55. package/dist/cdn/IHP25JWI.js +99 -0
  56. package/dist/cdn/J6A4AS7E.js +22 -0
  57. package/dist/cdn/{NE7E52YR.js → JEBRN3EU.js} +9 -3
  58. package/dist/cdn/JHFOZPBP.js +2 -0
  59. package/dist/cdn/L4SS54EZ.js +2 -0
  60. package/dist/cdn/LHLO6PTD.js +2 -0
  61. package/dist/cdn/{7RCQFLPP.js → LK7ZIQW6.js} +1 -1
  62. package/dist/cdn/LUJCH5V7.js +2 -0
  63. package/dist/cdn/LUY6V4TP.js +181 -0
  64. package/dist/cdn/M3MRIGDZ.js +2 -0
  65. package/dist/cdn/MSDNERUF.js +2 -0
  66. package/dist/cdn/MWYBF3F3.js +66 -0
  67. package/dist/cdn/NEV6OZN3.js +71 -0
  68. package/dist/cdn/NQROZZHC.js +65 -0
  69. package/dist/cdn/NSER3L4A.js +2 -0
  70. package/dist/cdn/OI7EGYZU.js +2 -0
  71. package/dist/cdn/{23EQTPO3.js → OKVLGJAG.js} +1 -1
  72. package/dist/cdn/OY2P2O47.js +180 -0
  73. package/dist/cdn/OYNIFMCJ.js +2 -0
  74. package/dist/cdn/PJ3UN2RU.js +2 -0
  75. package/dist/cdn/{LQ6R5YRN.js → PQ2DPOFM.js} +1 -1
  76. package/dist/cdn/PVE7Q43N.js +2 -0
  77. package/dist/cdn/QBINZNXI.js +9 -0
  78. package/dist/cdn/QZLE7B6X.js +2 -0
  79. package/dist/cdn/R74ZHFA6.js +2 -0
  80. package/dist/cdn/RAAV47KU.js +3 -0
  81. package/dist/cdn/RLEHNAIA.js +2 -0
  82. package/dist/cdn/{X2ZDYHCG.js → SDWWUWAF.js} +10 -5
  83. package/dist/cdn/SLXOVE7Y.js +2 -0
  84. package/dist/cdn/TFT6HK3O.js +208 -0
  85. package/dist/cdn/THXUE6R4.js +2 -0
  86. package/dist/cdn/TPULIO6I.js +34 -0
  87. package/dist/cdn/U4Z5XNJ5.js +2 -0
  88. package/dist/cdn/{6YMR4QSD.js → UHEYPSOR.js} +1 -1
  89. package/dist/cdn/UZLQALHY.js +2 -0
  90. package/dist/cdn/V6HOUZPZ.js +2 -0
  91. package/dist/cdn/VAXH6RUQ.js +134 -0
  92. package/dist/cdn/{H7422XUG.js → VCXSQWGA.js} +1 -1
  93. package/dist/cdn/VXFQANGJ.js +2 -0
  94. package/dist/cdn/WHOZT5H5.js +48 -0
  95. package/dist/cdn/WY7B6IMH.js +2 -0
  96. package/dist/cdn/XCRR2EEG.js +6 -0
  97. package/dist/cdn/XVPBO2JC.js +2 -0
  98. package/dist/cdn/YHQJ66WJ.js +2 -0
  99. package/dist/cdn/ZS6SXJP2.js +2 -0
  100. package/dist/cdn/{ZTBA5PM7.js → ZU2FHVNK.js} +1 -1
  101. package/dist/cdn/agent-utils/index.js +2 -0
  102. package/dist/cdn/agent-utils/middlewares/humanInTheLoop.js +3 -0
  103. package/dist/cdn/agent-utils/middlewares/middleware.js +2 -0
  104. package/dist/cdn/agent-utils/middlewares/trace.js +2 -0
  105. package/dist/cdn/index.js +1 -1
  106. package/dist/chunks/adapter.js +1794 -1597
  107. package/dist/chunks/arcgisKnowledgeGraph.js +127 -72
  108. package/dist/chunks/arcgis_knowledge_current_lc_context.js +19 -2
  109. package/dist/chunks/arcgis_knowledge_current_map_context.js +31 -2
  110. package/dist/chunks/arcgis_knowledge_cypher_query_prompt.js +102 -0
  111. package/dist/chunks/arcgis_knowledge_summarize_result_prompt.js +116 -27
  112. package/dist/chunks/converterUtils.js +39 -32
  113. package/dist/chunks/dataExplorationGraph.js +140 -114
  114. package/dist/chunks/data_explore_query_prompt.js +9 -4
  115. package/dist/chunks/generateLayerDescriptions.js +239 -225
  116. package/dist/chunks/helpGraph.js +30 -23
  117. package/dist/chunks/help_prompt.js +34 -17
  118. package/dist/chunks/index.js +11 -0
  119. package/dist/chunks/intent_prompt.js +16 -0
  120. package/dist/chunks/layerStylingGraph.js +25 -21
  121. package/dist/chunks/navigationGraph.js +70 -62
  122. package/dist/chunks/navigation_intent_prompt.js +8 -2
  123. package/dist/chunks/orchestrator.js +110 -108
  124. package/dist/chunks/slottableRequestUtils.js +3 -7
  125. package/dist/chunks/state.js +1 -1
  126. package/dist/chunks/summarize_query_response_prompt.js +9 -7
  127. package/dist/chunks/toolCallResponse.js +13 -10
  128. package/dist/chunks/utils2.js +8 -8
  129. package/dist/components/arcgis-assistant/customElement.d.ts +27 -0
  130. package/dist/components/arcgis-assistant/customElement.js +386 -152
  131. package/dist/components/arcgis-assistant/index.js +2 -3
  132. package/dist/components/arcgis-assistant/types.d.ts +14 -1
  133. package/dist/components/arcgis-assistant-agent/customElement.js +5 -1
  134. package/dist/components/arcgis-assistant-chat/customElement.d.ts +2 -1
  135. package/dist/components/arcgis-assistant-chat/customElement.js +23 -18
  136. package/dist/components/arcgis-assistant-chat-entry/customElement.d.ts +2 -0
  137. package/dist/components/arcgis-assistant-chat-entry/customElement.js +25 -18
  138. package/dist/components/arcgis-assistant-data-exploration-agent/customElement.js +12 -6
  139. package/dist/components/arcgis-assistant-help-agent/customElement.js +9 -3
  140. package/dist/components/arcgis-assistant-interrupt/customElement.js +12 -8
  141. package/dist/components/arcgis-assistant-interrupt-preview/customElement.js +20 -0
  142. package/dist/components/arcgis-assistant-interrupt-preview/index.js +2 -0
  143. package/dist/components/arcgis-assistant-knowledge-agent/customElement.d.ts +7 -7
  144. package/dist/components/arcgis-assistant-knowledge-agent/customElement.js +18 -12
  145. package/dist/components/arcgis-assistant-layer-styling-agent/customElement.js +11 -5
  146. package/dist/components/arcgis-assistant-message/customElement.d.ts +2 -0
  147. package/dist/components/arcgis-assistant-message/customElement.js +28 -26
  148. package/dist/components/arcgis-assistant-message/index.js +2 -0
  149. package/dist/components/arcgis-assistant-message-block/customElement.js +18 -11
  150. package/dist/components/arcgis-assistant-message-block/index.js +1 -0
  151. package/dist/components/arcgis-assistant-message-loading/customElement.d.ts +4 -0
  152. package/dist/components/arcgis-assistant-message-loading/customElement.js +10 -10
  153. package/dist/components/arcgis-assistant-message-loading/index.js +1 -0
  154. package/dist/components/arcgis-assistant-message-text/customElement.d.ts +1 -0
  155. package/dist/components/arcgis-assistant-message-text/customElement.js +12 -12
  156. package/dist/components/arcgis-assistant-navigation-agent/customElement.js +12 -6
  157. package/dist/components/arcgis-assistant-speech-input/customElement.js +29 -46
  158. package/dist/components/arcgis-assistant-suggested-prompts/customElement.js +8 -8
  159. package/dist/components/arcgis-assistant-user-message/customElement.js +10 -8
  160. package/dist/docs/api.json +1 -1
  161. package/dist/docs/docs.json +1 -1
  162. package/dist/docs/vscode.html-custom-data.json +1 -1
  163. package/dist/docs/web-types.json +1 -1
  164. package/dist/loader.js +7 -6
  165. package/dist/oauth-callback.html +1 -1
  166. package/dist/types/lumina.d.ts +7 -6
  167. package/dist/types/preact.d.ts +7 -6
  168. package/dist/types/react.d.ts +7 -6
  169. package/dist/types/stencil.d.ts +7 -6
  170. package/dist/utils/index.d.ts +94 -47
  171. package/dist/utils/index.js +80 -65
  172. package/package.json +13 -12
  173. package/dist/cdn/2AXF774U.js +0 -2
  174. package/dist/cdn/3NI46YCE.js +0 -2
  175. package/dist/cdn/3PKJWIC3.js +0 -2
  176. package/dist/cdn/462JBSEV.js +0 -422
  177. package/dist/cdn/47FWPQ2A.js +0 -16
  178. package/dist/cdn/5QAHYX7Y.js +0 -5
  179. package/dist/cdn/7BCR6TUO.js +0 -2
  180. package/dist/cdn/7GH7VSB2.js +0 -2
  181. package/dist/cdn/7PLV4QH6.js +0 -2
  182. package/dist/cdn/AEJHYRGT.js +0 -166
  183. package/dist/cdn/AO7BQHKC.js +0 -2
  184. package/dist/cdn/AXDZBBNL.js +0 -45
  185. package/dist/cdn/BFZJNJL6.js +0 -22
  186. package/dist/cdn/DDLZOMUY.js +0 -2
  187. package/dist/cdn/DHOVCT6R.js +0 -2
  188. package/dist/cdn/F2AHA4GB.js +0 -54
  189. package/dist/cdn/FX5JFRDL.js +0 -2
  190. package/dist/cdn/GCQLVNNC.js +0 -14
  191. package/dist/cdn/HB5A5R2E.js +0 -2
  192. package/dist/cdn/JV4SI65E.js +0 -108
  193. package/dist/cdn/KMQ3SP4I.js +0 -5
  194. package/dist/cdn/MH5RPXHM.js +0 -2
  195. package/dist/cdn/NAUXSHIE.js +0 -72
  196. package/dist/cdn/NVI3I46B.js +0 -2
  197. package/dist/cdn/OAVEHGB6.js +0 -2
  198. package/dist/cdn/OH64RMOR.js +0 -4
  199. package/dist/cdn/P6OPJQMC.js +0 -3
  200. package/dist/cdn/QR54T33D.js +0 -2
  201. package/dist/cdn/R6HV42YW.js +0 -3
  202. package/dist/cdn/RVOAPUBN.js +0 -2
  203. package/dist/cdn/SXDLXCIM.js +0 -2
  204. package/dist/cdn/USMDJUFS.js +0 -2
  205. package/dist/cdn/V2P4AIGG.js +0 -2
  206. package/dist/cdn/V7OJRG26.js +0 -36
  207. package/dist/cdn/Y333DGV6.js +0 -2
  208. package/dist/cdn/YIMNOUTF.js +0 -2
@@ -1,43 +1,45 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as d } from "../../chunks/runtime.js";
3
- import { css as m, html as a } from "lit";
4
- import { LitElement as g, nothing as i } from "@arcgis/lumina";
5
- import { useSlottableRequest as b } from "@arcgis/lumina/controllers";
6
- import { g as c, a as r } from "../../chunks/slottableRequestUtils.js";
7
- const f = m`: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)}@container (min-width: 480px){.container{max-width:80%}}`;
8
- function p({ message: t }) {
9
- const e = /* @__PURE__ */ new Map();
10
- if (!t)
11
- return e;
12
- const s = c(t.id);
13
- return e.set(s, { data: { message: t }, name: "message", slotName: s }), t.blocks?.forEach((l, o) => {
14
- const n = r(t.id, o);
15
- e.set(n, { data: { block: l, index: o, message: t }, name: "block", slotName: n });
16
- }), e;
2
+ import { c as o } from "../../chunks/runtime.js";
3
+ import { css as l, html as e } from "lit";
4
+ import { LitElement as c, nothing as d } from "@arcgis/lumina";
5
+ import { useSlottableRequest as g } from "@arcgis/lumina/controllers";
6
+ import { g as r } from "../../chunks/slottableRequestUtils.js";
7
+ const m = 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}}`;
8
+ function b({ message: t }) {
9
+ const s = /* @__PURE__ */ new Map();
10
+ return t && t.blocks?.forEach((a, i) => {
11
+ if (!a.isPending) {
12
+ const n = r(t.id, i);
13
+ s.set(n, { data: { block: a, index: i, message: t }, name: "block", slotName: n });
14
+ }
15
+ }), s;
17
16
  }
18
- class h extends g {
17
+ class p extends c {
19
18
  constructor() {
20
- super(...arguments), this.arcgisSlottableRequest = b(this, ["message"], p), this.feedbackEnabled = !1, this.logEnabled = !1, this.copyEnabled = !1, this.readAloudEnabled = !1, this.footerDisabled = !1;
19
+ super(...arguments), this.arcgisSlottableRequest = g(this, ["message"], b), this.feedbackEnabled = !1, this.logEnabled = !1, this.copyEnabled = !1, this.readAloudEnabled = !1, this.footerDisabled = !1, this.assistantAvatarEnabled = !1;
21
20
  }
22
21
  static {
23
- this.properties = { feedbackEnabled: 5, logEnabled: 5, copyEnabled: 5, readAloudEnabled: 5, footerDisabled: 5, message: 0 };
22
+ this.properties = { _isStreaming: 16, feedbackEnabled: 5, logEnabled: 5, copyEnabled: 5, readAloudEnabled: 5, footerDisabled: 5, message: 0, assistantAvatarEnabled: 5 };
24
23
  }
25
24
  static {
26
- this.styles = f;
25
+ this.styles = m;
26
+ }
27
+ get _isStreaming() {
28
+ return !!this.message?.isStreaming;
27
29
  }
28
30
  _renderContent() {
29
- const e = this.message, s = e?.id;
30
- if (s)
31
- return a`<div class="content"><slot name=${c(s) ?? i}></slot>${e.blocks?.length ? a`<div class="blocks">${e.blocks.map((l, o) => a`<slot name=${r(s, o) ?? i}></slot>`)}</div>` : null}</div>`;
31
+ const s = this.message, a = s?.id;
32
+ if (a)
33
+ return e`<div class="content"><arcgis-assistant-interrupt-preview .interrupts=${this.message?.interrupts}></arcgis-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(a, n) ?? d}></slot>`)}</div>` : null}</div>`;
32
34
  }
33
35
  _renderFooter() {
34
- return a`<arcgis-assistant-message-footer .message=${this.message} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled}></arcgis-assistant-message-footer>`;
36
+ return e`<arcgis-assistant-message-footer .message=${this.message} .feedbackEnabled=${this.feedbackEnabled} .logEnabled=${this.logEnabled} .copyEnabled=${this.copyEnabled} .readAloudEnabled=${this.readAloudEnabled}></arcgis-assistant-message-footer>`;
35
37
  }
36
38
  render() {
37
- return a`<div class="container"><slot name=icon><calcite-icon icon=effects class="icon" scale=s></calcite-icon></slot><div class="content-container"><slot name=content>${this._renderContent()}</slot>${this.footerDisabled ? null : a`<slot name=footer>${this._renderFooter()}</slot>`}</div></div>`;
39
+ 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>`;
38
40
  }
39
41
  }
40
- d("arcgis-assistant-message", h);
42
+ o("arcgis-assistant-message", p);
41
43
  export {
42
- h as ArcgisAssistantMessage
44
+ p as ArcgisAssistantMessage
43
45
  };
@@ -1,3 +1,5 @@
1
+ import "../arcgis-assistant-interrupt-preview/index.js";
1
2
  import "../arcgis-assistant-message-footer/index.js";
2
3
  import "@esri/calcite-components/components/calcite-icon";
4
+ import "@esri/calcite-components/components/calcite-loader";
3
5
  export * from "./customElement.js";
@@ -1,29 +1,36 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as o } from "../../chunks/runtime.js";
3
- import { css as i, html as p } from "lit";
4
- import { LitElement as n } from "@arcgis/lumina";
5
- const l = i`:host{display:block}`;
6
- class a extends n {
2
+ import { c as n } from "../../chunks/runtime.js";
3
+ import { css as i, html as r } from "lit";
4
+ import { LitElement as o } from "@arcgis/lumina";
5
+ const p = i`:host{display:block}`;
6
+ class c extends o {
7
7
  static {
8
8
  this.properties = { block: 0 };
9
9
  }
10
10
  static {
11
- this.styles = l;
11
+ this.styles = p;
12
12
  }
13
13
  _renderSuggestedPrompts(s) {
14
14
  if (s.type !== "suggested-prompts")
15
15
  return null;
16
- const t = s.data?.prompts, e = Array.isArray(t) ? t.filter((r) => typeof r == "string") : [];
17
- return e.length ? p`<arcgis-assistant-suggested-prompts .prompts=${e}></arcgis-assistant-suggested-prompts>` : null;
16
+ const t = s.data?.prompts, e = Array.isArray(t) ? t.filter((a) => typeof a == "string") : [];
17
+ return e.length ? r`<arcgis-assistant-suggested-prompts .prompts=${e}></arcgis-assistant-suggested-prompts>` : null;
18
18
  }
19
19
  _renderBlock(s) {
20
- return s.type === "suggested-prompts" ? this._renderSuggestedPrompts(s) : null;
20
+ switch (s.type) {
21
+ case "suggested-prompts":
22
+ return this._renderSuggestedPrompts(s);
23
+ case "text":
24
+ return r`<arcgis-assistant-message-text .content=${s.data?.content} .parts=${s.data?.parts}></arcgis-assistant-message-text>`;
25
+ default:
26
+ return null;
27
+ }
21
28
  }
22
29
  render() {
23
30
  return this.block ? this._renderBlock(this.block) : null;
24
31
  }
25
32
  }
26
- o("arcgis-assistant-message-block", a);
33
+ n("arcgis-assistant-message-block", c);
27
34
  export {
28
- a as ArcgisAssistantMessageBlock
35
+ c as ArcgisAssistantMessageBlock
29
36
  };
@@ -1,2 +1,3 @@
1
1
  import "../arcgis-assistant-suggested-prompts/index.js";
2
+ import "../arcgis-assistant-message-text/index.js";
2
3
  export * from "./customElement.js";
@@ -1,11 +1,15 @@
1
1
  /// <reference path="../../index.d.ts" />
2
2
  import type { PublicLitElement as LitElement } from "@arcgis/lumina";
3
+ import type { AssistantMessage } from "../arcgis-assistant/types.js";
3
4
 
4
5
  /**
5
6
  * Shows in-progress assistant response UI. Use it to display thinking or loading state while work is running.
6
7
  * Offers a default loading message shell with icon/content slot overrides.
7
8
  */
8
9
  export abstract class ArcgisAssistantMessageLoading extends LitElement {
10
+ /** @default false */
11
+ accessor assistantAvatarEnabled: boolean;
12
+ accessor interrupts: AssistantMessage["interrupts"] | undefined;
9
13
  /** @default false */
10
14
  accessor loading: boolean;
11
15
  /** @default "" */
@@ -1,23 +1,23 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as a } from "../../chunks/runtime.js";
3
- import { css as e, html as s } from "lit";
2
+ import { c as s } from "../../chunks/runtime.js";
3
+ import { css as t, html as a } from "lit";
4
4
  import { LitElement as i } from "@arcgis/lumina";
5
- const t = e`:host{display:contents}.icon{padding:var(--calcite-spacing-sm);border-radius:var(--calcite-spacing-xl);background:var(--calcite-color-brand);color:var(--calcite-color-foreground-1)}.loading-container{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm);padding:0 var(--calcite-spacing-sm)}.loading{display:flex;align-items:center;gap:var(--calcite-spacing-sm)}.text{font-style:italic;word-wrap:break-word;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical}.skeleton-block{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm);width:100%}.skeleton-text{display:block;height:.95em;border-radius:var(--calcite-border-radius);background:linear-gradient(90deg,color-mix(in srgb,var(--calcite-color-foreground-2) 65%,transparent),color-mix(in srgb,var(--calcite-color-foreground-3) 85%,transparent),color-mix(in srgb,var(--calcite-color-foreground-2) 65%,transparent));background-size:200% 100%;animation:assistant-message-loading-shimmer 1.2s ease-in-out infinite;width:85%}.skeleton-text:last-child{width:70%}@keyframes assistant-message-loading-shimmer{0%{background-position:-150% 0}to{background-position:150% 0}}@media(prefers-reduced-motion){.skeleton-text{animation:none}}`;
6
- class o extends i {
5
+ const e = t`:host{display:contents}.icon{padding:var(--calcite-spacing-sm);border-radius:var(--calcite-spacing-xl);background:var(--calcite-color-brand);color:var(--calcite-color-foreground-1)}.loading-container{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm);padding:0 var(--calcite-spacing-sm)}.loading{display:flex;align-items:center;gap:var(--calcite-spacing-sm)}.text{font-style:italic;word-wrap:break-word;word-break:break-all;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:1;line-clamp:1;-webkit-box-orient:vertical}.skeleton-block{display:flex;flex-direction:column;gap:var(--calcite-spacing-sm);width:100%}.skeleton-text{display:block;height:.95em;border-radius:var(--calcite-border-radius);background:linear-gradient(90deg,color-mix(in srgb,var(--calcite-color-foreground-2) 65%,transparent),color-mix(in srgb,var(--calcite-color-foreground-3) 85%,transparent),color-mix(in srgb,var(--calcite-color-foreground-2) 65%,transparent));background-size:200% 100%;animation:assistant-message-loading-shimmer 1.2s ease-in-out infinite;width:85%}.skeleton-text:last-child{width:70%}@keyframes assistant-message-loading-shimmer{0%{background-position:-150% 0}to{background-position:150% 0}}@media(prefers-reduced-motion){.skeleton-text{animation:none}}`;
6
+ class n extends i {
7
7
  constructor() {
8
- super(...arguments), this.loading = !1, this.loadingMessage = "";
8
+ super(...arguments), this.loading = !1, this.loadingMessage = "", this.assistantAvatarEnabled = !1;
9
9
  }
10
10
  static {
11
- this.properties = { loading: 5, loadingMessage: 1 };
11
+ this.properties = { loading: 5, loadingMessage: 1, assistantAvatarEnabled: 5, interrupts: 0 };
12
12
  }
13
13
  static {
14
- this.styles = t;
14
+ this.styles = e;
15
15
  }
16
16
  render() {
17
- return this.loading ? s`<arcgis-assistant-message footer-disabled><slot name=icon slot=icon><calcite-icon class="icon" icon=effects scale=s></calcite-icon></slot><slot name=content slot=content><div class="loading-container"><div class="loading"><calcite-loader label=loading inline></calcite-loader><div class="text">${this.loadingMessage}</div></div><div class="skeleton-block"><span class="skeleton-text"></span><span class="skeleton-text"></span></div></div></slot></arcgis-assistant-message>` : null;
17
+ return this.loading ? a`<arcgis-assistant-message .assistantAvatarEnabled=${this.assistantAvatarEnabled} footer-disabled>${this.assistantAvatarEnabled ? a`<slot name=icon slot=icon><calcite-icon class="icon" icon=effects scale=s></calcite-icon></slot>` : null}<slot name=content slot=content><arcgis-assistant-interrupt-preview .interrupts=${this.interrupts}></arcgis-assistant-interrupt-preview><div class="loading-container"><div class="loading"><calcite-loader label=loading inline></calcite-loader><div class="text">${this.loadingMessage}</div></div><div class="skeleton-block"><span class="skeleton-text"></span><span class="skeleton-text"></span></div></div></slot></arcgis-assistant-message>` : null;
18
18
  }
19
19
  }
20
- a("arcgis-assistant-message-loading", o);
20
+ s("arcgis-assistant-message-loading", n);
21
21
  export {
22
- o as ArcgisAssistantMessageLoading
22
+ n as ArcgisAssistantMessageLoading
23
23
  };
@@ -1,4 +1,5 @@
1
1
  import "../arcgis-assistant-message/index.js";
2
2
  import "@esri/calcite-components/components/calcite-icon";
3
+ import "../arcgis-assistant-interrupt-preview/index.js";
3
4
  import "@esri/calcite-components/components/calcite-loader";
4
5
  export * from "./customElement.js";
@@ -7,4 +7,5 @@ import type { PublicLitElement as LitElement } from "@arcgis/lumina";
7
7
  */
8
8
  export abstract class ArcgisAssistantMessageText extends LitElement {
9
9
  accessor content: string | undefined;
10
+ accessor parts: string[] | undefined;
10
11
  }
@@ -1,22 +1,22 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as t } from "../../chunks/runtime.js";
3
- import { css as e, html as c } from "lit";
4
- import { LitElement as a } from "@arcgis/lumina";
5
- import { unsafeHTML as o } from "lit/directives/unsafe-html.js";
6
- import { p as r } from "../../chunks/converterUtils.js";
7
- const i = e`.container{color:var(--calcite-color-text-1)}.content>*{margin:0}.content>*+*{margin-block-start:var(--calcite-spacing-sm)}.content :is(ol,ul){padding-inline-start:var(--calcite-spacing-lg)}.content>calcite-table{display:block;max-width:100%}.content pre{background-color:var(--calcite-color-foreground-1);padding:var(--calcite-spacing-sm);border-radius:var(--calcite-border-radius);color:var(--calcite-color-text-1);direction:ltr;max-width:100%;overflow:auto}.content pre code{display:block;white-space:pre;font-family:var(--calcite-code-family)}`;
8
- class s extends a {
2
+ import { c as r } from "../../chunks/runtime.js";
3
+ import { css as i, html as t } from "lit";
4
+ import { LitElement as c } from "@arcgis/lumina";
5
+ import { unsafeHTML as a } from "lit/directives/unsafe-html.js";
6
+ import { a as s, p as o } from "../../chunks/converterUtils.js";
7
+ const n = i`.container{color:var(--calcite-color-text-1)}.content>*{margin:0}.content>*+*{margin-block-start:var(--calcite-spacing-sm)}.content :is(ol,ul){padding-inline-start:var(--calcite-spacing-lg)}.content>calcite-table{display:block;max-width:100%}.content pre{background-color:var(--calcite-color-foreground-1);padding:var(--calcite-spacing-sm);border-radius:var(--calcite-border-radius);color:var(--calcite-color-text-1);direction:ltr;max-width:100%;overflow:auto}.content pre code{display:block;white-space:pre;font-family:var(--calcite-code-family)}.part{animation:part-reveal calc(3 * var(--calcite-animation-timing)) ease-out}@keyframes part-reveal{0%{opacity:0;transform:translateY(var(--calcite-size-fixed-xxs))}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.part{animation:none}}`;
8
+ class l extends c {
9
9
  static {
10
- this.properties = { content: 1 };
10
+ this.properties = { content: 1, parts: 0 };
11
11
  }
12
12
  static {
13
- this.styles = i;
13
+ this.styles = n;
14
14
  }
15
15
  render() {
16
- return c`<div class="container"><div class="content">${o(r(this.content))}</div></div>`;
16
+ return t`<div class="container"><div class="content">${this.parts?.map((e) => t`<span class="part">${a(s(e))}</span>`) ?? a(o(this.content))}</div></div>`;
17
17
  }
18
18
  }
19
- t("arcgis-assistant-message-text", s);
19
+ r("arcgis-assistant-message-text", l);
20
20
  export {
21
- s as ArcgisAssistantMessageText
21
+ l as ArcgisAssistantMessageText
22
22
  };
@@ -6,13 +6,15 @@ import "@langchain/langgraph/web";
6
6
  import "../../chunks/adapter.js";
7
7
  import "@arcgis/core/identity/IdentityManager.js";
8
8
  import "@arcgis/core/portal/Portal.js";
9
+ import "@arcgis/core/request.js";
10
+ import "@arcgis/toolkit/string";
9
11
  import "../../chunks/generateLayerDescriptions.js";
10
12
  import "@langchain/core/messages";
11
13
  import "@langchain/core/callbacks/dispatch/web";
12
14
  import "@langchain/openai";
15
+ import "@arcgis/core/config.js";
13
16
  import "@arcgis/core/core/reactiveUtils.js";
14
17
  import "@arcgis/core/layers/FeatureLayer.js";
15
- import "@arcgis/core/request.js";
16
18
  import "@langchain/core/prompts";
17
19
  import "@arcgis/core/intl.js";
18
20
  import "@langchain/langgraph/prebuilt";
@@ -20,8 +22,8 @@ import "@arcgis/core/smartMapping/statistics/summaryStatistics.js";
20
22
  import "@arcgis/core/smartMapping/statistics/uniqueValues.js";
21
23
  import "@arcgis/core/views/LinkChartView.js";
22
24
  import "@arcgis/core/rest/knowledgeGraphService.js";
23
- import { r as o, a as s } from "../../chunks/utils2.js";
24
- class a extends i {
25
+ import { r as s, a } from "../../chunks/utils2.js";
26
+ class e extends i {
25
27
  constructor() {
26
28
  super(...arguments), this.agent = r;
27
29
  }
@@ -29,16 +31,20 @@ class a extends i {
29
31
  this.properties = { referenceElement: 1 };
30
32
  }
31
33
  #t;
34
+ #i;
32
35
  getContext() {
33
36
  if (!this.#t)
34
37
  throw new Error("arcgis-assistant-navigation-agent requires a mapView");
35
38
  return { mapView: this.#t };
36
39
  }
37
40
  load() {
38
- this.#t = o(this, "arcgis-assistant-navigation-agent"), s(this);
41
+ this.#t = s(this, "arcgis-assistant-navigation-agent"), this.#i = a(this);
42
+ }
43
+ disconnectedCallback() {
44
+ this.#i?.unregister(this.agent.id), super.disconnectedCallback();
39
45
  }
40
46
  }
41
- t("arcgis-assistant-navigation-agent", a);
47
+ t("arcgis-assistant-navigation-agent", e);
42
48
  export {
43
- a as ArcgisAssistantNavigationAgent
49
+ e as ArcgisAssistantNavigationAgent
44
50
  };
@@ -1,17 +1,17 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as S } from "../../chunks/runtime.js";
3
- import { css as R, html as y } from "lit";
4
- import { when as C, watch as p } from "@arcgis/core/core/reactiveUtils.js";
5
- import { LitElement as w, createEvent as d, nothing as v } from "@arcgis/lumina";
6
- import I from "@arcgis/core/core/Accessor.js";
2
+ import { c as C } from "../../chunks/runtime.js";
3
+ import { css as S, html as R } from "lit";
4
+ import { watch as p } from "@arcgis/core/core/reactiveUtils.js";
5
+ import { LitElement as y, createEvent as d, nothing as v } from "@arcgis/lumina";
6
+ import w from "@arcgis/core/core/Accessor.js";
7
7
  import { property as l, subclass as f } from "@arcgis/core/core/accessorSupport/decorators.js";
8
- const T = R`.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}}`;
9
- var k = Object.defineProperty, x = Object.getOwnPropertyDescriptor, u = (t, e, s, i) => {
10
- for (var r = i > 1 ? void 0 : i ? x(e, s) : e, n = t.length - 1, o; n >= 0; n--)
8
+ const I = S`.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}}`;
9
+ var T = Object.defineProperty, k = Object.getOwnPropertyDescriptor, u = (t, e, s, i) => {
10
+ for (var r = i > 1 ? void 0 : i ? k(e, s) : e, n = t.length - 1, o; n >= 0; n--)
11
11
  (o = t[n]) && (r = (i ? o(e, s, r) : o(r)) || r);
12
- return i && r && k(e, s, r), r;
12
+ return i && r && T(e, s, r), r;
13
13
  };
14
- let a = class extends I {
14
+ let a = class extends w {
15
15
  constructor(t) {
16
16
  super(t), this.state = "idle", this.liveTranscript = "", this.transcript = "", this.errorCode = void 0;
17
17
  }
@@ -37,7 +37,7 @@ u([
37
37
  a = u([
38
38
  f("SpeechController")
39
39
  ], a);
40
- const V = [
40
+ const x = [
41
41
  "audio/webm;codecs=opus",
42
42
  "audio/webm",
43
43
  "audio/mp4",
@@ -47,27 +47,17 @@ const V = [
47
47
  function h(t) {
48
48
  return t.replace(/\s+/gu, " ").trim();
49
49
  }
50
- var O = Object.defineProperty, M = Object.getOwnPropertyDescriptor, g = (t, e, s, i) => {
51
- for (var r = i > 1 ? void 0 : i ? M(e, s) : e, n = t.length - 1, o; n >= 0; n--)
50
+ var V = Object.defineProperty, O = Object.getOwnPropertyDescriptor, g = (t, e, s, i) => {
51
+ for (var r = i > 1 ? void 0 : i ? O(e, s) : e, n = t.length - 1, o; n >= 0; n--)
52
52
  (o = t[n]) && (r = (i ? o(e, s, r) : o(r)) || r);
53
- return i && r && O(e, s, r), r;
53
+ return i && r && V(e, s, r), r;
54
54
  };
55
55
  let c = class extends a {
56
56
  constructor(t) {
57
57
  super(t), this._activeSessionId = null, this._mediaRecorder = null, this._mediaRecorderChunkIndex = 0, this._mediaRecorderStopReason = null, this._mediaStream = null, this._pendingChunkOperations = /* @__PURE__ */ new Set(), this._recordedChunks = [], this.handleRecording = null, this.chunkTimeSlice = 3e3;
58
58
  }
59
59
  get _mimeType() {
60
- return typeof window > "u" || typeof window.MediaRecorder?.isTypeSupported != "function" ? "" : V.find((t) => window.MediaRecorder.isTypeSupported(t)) ?? "";
61
- }
62
- initialize() {
63
- c.isSupported() && this.addHandles(
64
- C(
65
- () => !!this.errorCode,
66
- () => {
67
- this._set("state", "error");
68
- }
69
- )
70
- );
60
+ return typeof window > "u" || typeof window.MediaRecorder?.isTypeSupported != "function" ? "" : x.find((t) => window.MediaRecorder.isTypeSupported(t)) ?? "";
71
61
  }
72
62
  destroy() {
73
63
  this._mediaRecorder && (this._mediaRecorder.onstart = null, this._mediaRecorder.ondataavailable = null, this._mediaRecorder.onerror = null, this._mediaRecorder.onstop = null), this.cancel(), this._mediaRecorder = null;
@@ -119,7 +109,7 @@ let c = class extends a {
119
109
  } catch {
120
110
  }
121
111
  }
122
- 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", t);
112
+ 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("state", "error"), this._set("errorCode", t);
123
113
  }
124
114
  _onError() {
125
115
  this._failSession("recording-failed");
@@ -146,7 +136,7 @@ let c = class extends a {
146
136
  if (await this._awaitPendingChunkOperations(), e !== this._activeSessionId)
147
137
  return;
148
138
  if (!(i ? new Blob(r, { type: i }) : new Blob(r)).size) {
149
- this._activeSessionId === e && (this._activeSessionId = null), this._mediaRecorderStopReason = null, this._recordedChunks = [], this._set("errorCode", "recording-failed");
139
+ this._activeSessionId === e && (this._activeSessionId = null), this._mediaRecorderStopReason = null, this._recordedChunks = [], this._set("state", "error"), this._set("errorCode", "recording-failed");
150
140
  return;
151
141
  }
152
142
  this._set("state", "processing"), this._set("transcript", h(`${this.transcript} ${this.liveTranscript}`)), this._set("liveTranscript", ""), this._activeSessionId === e && (this._activeSessionId = null), this._set("state", "idle"), this._set("errorCode", void 0), this._mediaRecorderStopReason = null, this._recordedChunks = [];
@@ -165,7 +155,7 @@ let c = class extends a {
165
155
  const s = this._mimeType, i = s ? new window.MediaRecorder(e, { mimeType: s }) : new window.MediaRecorder(e);
166
156
  this._mediaStream = e, 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);
167
157
  }).catch((e) => {
168
- t === this._activeSessionId && (this._activeSessionId = null, this._mediaRecorder = null, this._mediaRecorderChunkIndex = 0, this._mediaRecorderStopReason = null, this._pendingChunkOperations.clear(), this._recordedChunks = [], this._releaseMediaStream(), e instanceof DOMException && e.name === "NotAllowedError" ? this._set("errorCode", "not-allowed") : this._set("errorCode", "recording-failed"));
158
+ t === this._activeSessionId && (this._activeSessionId = null, this._mediaRecorder = null, this._mediaRecorderChunkIndex = 0, this._mediaRecorderStopReason = null, this._pendingChunkOperations.clear(), this._recordedChunks = [], this._releaseMediaStream(), e instanceof DOMException && e.name === "NotAllowedError" ? (this._set("state", "error"), this._set("errorCode", "not-allowed")) : (this._set("state", "error"), this._set("errorCode", "recording-failed")));
169
159
  });
170
160
  }
171
161
  stop() {
@@ -208,8 +198,8 @@ g([
208
198
  c = g([
209
199
  f("MediaRecorderController")
210
200
  ], c);
211
- var D = Object.getOwnPropertyDescriptor, $ = (t, e, s, i) => {
212
- for (var r = i > 1 ? void 0 : i ? D(e, s) : e, n = t.length - 1, o; n >= 0; n--)
201
+ var M = Object.getOwnPropertyDescriptor, D = (t, e, s, i) => {
202
+ for (var r = i > 1 ? void 0 : i ? M(e, s) : e, n = t.length - 1, o; n >= 0; n--)
213
203
  (o = t[n]) && (r = o(r) || r);
214
204
  return r;
215
205
  };
@@ -228,14 +218,7 @@ let _ = class extends a {
228
218
  if (!t)
229
219
  return;
230
220
  const e = new t();
231
- e.continuous = !0, e.interimResults = !0, this.language && (e.lang = this.language), e.onstart = this._onStart.bind(this), e.onresult = this._onResult.bind(this), e.onerror = this._onError.bind(this), e.onend = this._onEnd.bind(this), e.onspeechend = this._onSpeechEnd.bind(this), this._recognition = e, this.addHandles(
232
- C(
233
- () => !!this.errorCode,
234
- () => {
235
- this._set("state", "error");
236
- }
237
- )
238
- );
221
+ e.continuous = !0, e.interimResults = !0, this.language && (e.lang = this.language), e.onstart = this._onStart.bind(this), e.onresult = this._onResult.bind(this), e.onerror = this._onError.bind(this), e.onend = this._onEnd.bind(this), e.onspeechend = this._onSpeechEnd.bind(this), this._recognition = e;
239
222
  }
240
223
  destroy() {
241
224
  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);
@@ -268,7 +251,7 @@ let _ = class extends a {
268
251
  default:
269
252
  e = "unhandled";
270
253
  }
271
- this._set("errorCode", e);
254
+ this._set("state", "error"), this._set("errorCode", e);
272
255
  }
273
256
  // Natural end can arrive before the last interim segment becomes final, so preserve that trailing text.
274
257
  _onEnd() {
@@ -294,7 +277,7 @@ let _ = class extends a {
294
277
  try {
295
278
  this._recognition.start();
296
279
  } catch {
297
- this._set("errorCode", "unhandled");
280
+ this._set("state", "error"), this._set("errorCode", "unhandled");
298
281
  }
299
282
  }
300
283
  stop() {
@@ -319,7 +302,7 @@ let _ = class extends a {
319
302
  return !!b();
320
303
  }
321
304
  };
322
- _ = $([
305
+ _ = D([
323
306
  f("WebSpeechController")
324
307
  ], _);
325
308
  function m(t) {
@@ -329,7 +312,7 @@ function m(t) {
329
312
  const i = e.trim();
330
313
  return i ? `${i} ${s}` : s;
331
314
  }
332
- class E extends w {
315
+ class $ extends y {
333
316
  constructor() {
334
317
  super(...arguments), this.#e = null, this._resolvedMode = "disabled", this.awaitingResponse = !1, this.inputValue = "", this.mode = "web-speech", this.arcgisVoiceInputDraftChange = d(), this.arcgisVoiceInputError = d(), this.arcgisVoiceInputInterimTranscription = d(), this.arcgisVoiceInputStart = d(), this.arcgisVoiceInputStop = d(), this.arcgisVoiceInputTranscription = d(), this.arcgisVoiceInputTranscriptionStreamChunk = d();
335
318
  }
@@ -337,7 +320,7 @@ class E extends w {
337
320
  this.properties = { _resolvedMode: 16, _state: 16, _errorCode: 16, _liveTranscript: 16, _transcript: 16, _isButtonDisabled: 16, _buttonLabel: 16, awaitingResponse: 5, inputValue: 1, language: 1, mode: 1 };
338
321
  }
339
322
  static {
340
- this.styles = T;
323
+ this.styles = I;
341
324
  }
342
325
  #e;
343
326
  get _state() {
@@ -477,12 +460,12 @@ class E extends w {
477
460
  this._speechController && this._resolvedMode !== "disabled" && this._speechController.cancel(), this.clearDraftSession();
478
461
  }
479
462
  render() {
480
- return y`<calcite-button appearance=transparent class="button" data-mode=${this._resolvedMode ?? v} data-state=${(this._resolvedMode === "disabled" ? "disabled" : this._state) ?? v} .disabled=${this._isButtonDisabled} icon-start=microphone kind=neutral .label=${this._buttonLabel} .loading=${this._state === "processing"} round scale=m @click=${() => {
463
+ return R`<calcite-button appearance=transparent class="button" data-mode=${this._resolvedMode ?? v} data-state=${(this._resolvedMode === "disabled" ? "disabled" : this._state) ?? v} .disabled=${this._isButtonDisabled} icon-start=microphone kind=neutral .label=${this._buttonLabel} .loading=${this._state === "processing"} round scale=m @click=${() => {
481
464
  this._handleToggle();
482
465
  }}></calcite-button>`;
483
466
  }
484
467
  }
485
- S("arcgis-assistant-speech-input", E);
468
+ C("arcgis-assistant-speech-input", $);
486
469
  export {
487
- E as ArcgisAssistantSpeechInput
470
+ $ as ArcgisAssistantSpeechInput
488
471
  };
@@ -1,27 +1,27 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
- import { c as e } from "../../chunks/runtime.js";
3
- import { css as i, html as s } from "lit";
2
+ import { c as s } from "../../chunks/runtime.js";
3
+ import { css as i, html as e } from "lit";
4
4
  import { LitElement as r, createEvent as l } from "@arcgis/lumina";
5
- import { u as c } from "../../chunks/useT9n.js";
6
- const a = i`:host{display:block;max-width:100%}.group{max-width:100%}.prompt{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;cursor:pointer}calcite-chip{max-width:100%}`;
5
+ import { u as a } from "../../chunks/useT9n.js";
6
+ const c = i`:host{display:block;max-width:100%}.group{max-width:100%}.prompt{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;cursor:pointer;font-weight:var(--calcite-font-weight-regular)}calcite-chip{max-width:100%}`;
7
7
  class o extends r {
8
8
  constructor() {
9
- super(...arguments), this._messages = c({ blocking: !0 }), this.prompts = [], this.arcgisPromptSelect = l();
9
+ super(...arguments), this._messages = a({ blocking: !0 }), this.prompts = [], this.arcgisPromptSelect = l();
10
10
  }
11
11
  static {
12
12
  this.properties = { label: 1, prompts: 0 };
13
13
  }
14
14
  static {
15
- this.styles = a;
15
+ this.styles = c;
16
16
  }
17
17
  _emitPromptSelect(t) {
18
18
  this.arcgisPromptSelect.emit({ prompt: t });
19
19
  }
20
20
  render() {
21
- return this.prompts.length ? s`<calcite-chip-group class="group" .label=${this.label ?? this._messages.suggestedPromptsLabel}>${this.prompts.map((t) => s`<calcite-chip .value=${t} .label=${t} appearance=outline-fill kind=brand @calciteChipSelect=${() => this._emitPromptSelect(t)}><div class="prompt">${t}</div></calcite-chip>`)}</calcite-chip-group>` : null;
21
+ return this.prompts.length ? e`<calcite-chip-group class="group" .label=${this.label ?? this._messages.suggestedPromptsLabel}>${this.prompts.map((t) => e`<calcite-chip .value=${t} .label=${t} appearance=outline-fill kind=brand @calciteChipSelect=${() => this._emitPromptSelect(t)}><div class="prompt">${t}</div></calcite-chip>`)}</calcite-chip-group>` : null;
22
22
  }
23
23
  }
24
- e("arcgis-assistant-suggested-prompts", o);
24
+ s("arcgis-assistant-suggested-prompts", o);
25
25
  export {
26
26
  o as ArcgisAssistantSuggestedPrompts
27
27
  };
@@ -1,23 +1,25 @@
1
1
  /* COPYRIGHT Esri - https://js.arcgis.com/5.2/LICENSE.txt */
2
2
  import { c as t } from "../../chunks/runtime.js";
3
- import { css as e, html as s } from "lit";
4
- import { LitElement as a } from "@arcgis/lumina";
5
- const i = e`.container{display:flex;align-items:center;gap:var(--calcite-spacing-md);background:color-mix(in srgb,var(--calcite-color-brand) 25%,transparent);color:var(--calcite-color-text-1);padding:var(--calcite-spacing-md);border-radius:var(--calcite-border-radius);width:fit-content;margin-left:auto;justify-content:flex-end}.avatar{display:flex;align-items:center;justify-content:center}@container (min-width: 480px){.container{max-width:80%}}`;
6
- class r extends a {
3
+ import { css as a, html as e } from "lit";
4
+ import { LitElement as i } from "@arcgis/lumina";
5
+ import { p as r } from "../../chunks/converterUtils.js";
6
+ import { unsafeHTML as c } from "lit/directives/unsafe-html.js";
7
+ const s = a`:host{overflow:auto}.container{display:flex;align-items:center;gap:var(--calcite-spacing-md);background:color-mix(in srgb,var(--calcite-color-brand) 15%,var(--calcite-color-foreground-1));color:var(--calcite-color-text-1);padding:var(--calcite-spacing-md);border-radius:var(--calcite-border-radius);width:fit-content;margin-left:auto;justify-content:flex-end}.avatar{display:flex;align-items:center;justify-content:center}.content{>*{margin:0}>*+*{margin-block-start:var(--calcite-spacing-sm)}:is(ol,ul){padding-inline-start:var(--calcite-spacing-lg)}>calcite-table{display:block;max-width:100%}pre{background-color:var(--calcite-color-foreground-1);padding:var(--calcite-spacing-sm);border-radius:var(--calcite-border-radius);color:var(--calcite-color-text-1);direction:ltr;max-width:100%;overflow:auto}pre code{display:block;white-space:pre;font-family:var(--calcite-code-family)}}@container (min-width: 480px){.container{max-width:80%}}`;
8
+ class o extends i {
7
9
  static {
8
10
  this.properties = { content: 1, user: 1, message: 0 };
9
11
  }
10
12
  static {
11
- this.styles = i;
13
+ this.styles = s;
12
14
  }
13
15
  _getContent() {
14
16
  return this.message?.role === "user" ? this.message.content : this.content;
15
17
  }
16
18
  render() {
17
- return s`<div class="container"><div><slot name=content>${this._getContent()}</slot></div><slot name=icon><div class="avatar"><calcite-avatar .fullName=${this.user} scale=s></calcite-avatar></div></slot></div>`;
19
+ return e`<div class="container"><div><slot name=content><div class="content">${c(r(this._getContent()))}</div></slot></div><slot name=icon><div class="avatar"><calcite-avatar .fullName=${this.user} scale=s></calcite-avatar></div></slot></div>`;
18
20
  }
19
21
  }
20
- t("arcgis-assistant-user-message", r);
22
+ t("arcgis-assistant-user-message", o);
21
23
  export {
22
- r as ArcgisAssistantUserMessage
24
+ o as ArcgisAssistantUserMessage
23
25
  };