@amodalai/react 0.1.12 → 0.1.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"useAmodalChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useAmodalChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,WAAW,EAEX,YAAY,EAEZ,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAoBlB,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CAiM3E;AAED,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,uCAAuC;IACvC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,CAAC;IACnD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,qBAAqB,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3E;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAiMjF"}
1
+ {"version":3,"file":"useAmodalChat.d.ts","sourceRoot":"","sources":["../../src/hooks/useAmodalChat.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,WAAW,EAEX,YAAY,EAEZ,gBAAgB,EACjB,MAAM,UAAU,CAAC;AAoBlB,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,GAAG,SAAS,CAkM3E;AAED,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,sDAAsD;IACtD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,uCAAuC;IACvC,WAAW,CAAC,EAAE,MAAM,IAAI,CAAC;IACzB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,uCAAuC;IACvC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IAC1C,8CAA8C;IAC9C,cAAc,CAAC,EAAE,CAAC,YAAY,EAAE,gBAAgB,KAAK,IAAI,CAAC;CAC3D;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,CAAC;IACnD,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,qBAAqB,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3E;AAED,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,mBAAmB,CAkMjF"}
package/dist/react.js CHANGED
@@ -2,7 +2,7 @@ import { jsx as v, jsxs as w } from "react/jsx-runtime";
2
2
  import { createContext as F, useMemo as B, useContext as U, useReducer as Q, useRef as N, useCallback as A, useEffect as R, useState as y } from "react";
3
3
  import { RuntimeClient as V } from "./client.js";
4
4
  import { ChatClient as me, ChatStream as fe } from "./client.js";
5
- import { a as pe, d as _e, m as he, u as ve, b as ye, c as Ee } from "./theme-VAUsolBG.js";
5
+ import { a as ge, d as _e, m as he, u as ve, b as ye, c as Ee } from "./theme-VAUsolBG.js";
6
6
  import { T as be, W as Te, c as Ae, a as Ne, d as xe, g as Ce, l as we, p as Re, s as ke, b as Ie, e as De, u as Me } from "./event-bus-h26clqbZ.js";
7
7
  const j = F(null);
8
8
  function Z({ runtimeUrl: s, appId: r, getToken: t, children: e }) {
@@ -101,6 +101,7 @@ function X(s, r) {
101
101
  ...i,
102
102
  status: r.status,
103
103
  result: r.result,
104
+ parameters: r.parameters ?? i.parameters,
104
105
  duration_ms: r.duration_ms,
105
106
  error: r.error
106
107
  } : i, c = e.toolCalls.map(a), u = e.contentBlocks.map(
@@ -193,7 +194,7 @@ function W(s) {
193
194
  e({ type: "SEND_MESSAGE", text: _ });
194
195
  const h = new AbortController();
195
196
  a.current = h, (async () => {
196
- var o, d, g, l, b, T, x, C, M, D, O;
197
+ var o, d, p, l, b, T, x, C, M, D, O;
197
198
  let f = !1;
198
199
  try {
199
200
  const I = r.chatStream(_, {
@@ -201,84 +202,85 @@ function W(s) {
201
202
  context: (o = c.current) == null ? void 0 : o.context,
202
203
  signal: h.signal
203
204
  });
204
- for await (const p of I)
205
- switch (p.type) {
205
+ for await (const g of I)
206
+ switch (g.type) {
206
207
  case "init":
207
- e({ type: "STREAM_INIT", sessionId: p.session_id }), (g = (d = c.current) == null ? void 0 : d.onSessionCreated) == null || g.call(d, p.session_id);
208
+ e({ type: "STREAM_INIT", sessionId: g.session_id }), (p = (d = c.current) == null ? void 0 : d.onSessionCreated) == null || p.call(d, g.session_id);
208
209
  break;
209
210
  case "text_delta":
210
- e({ type: "STREAM_TEXT_DELTA", content: p.content });
211
+ e({ type: "STREAM_TEXT_DELTA", content: g.content });
211
212
  break;
212
213
  case "tool_call_start":
213
214
  e({
214
215
  type: "STREAM_TOOL_CALL_START",
215
- toolId: p.tool_id,
216
- toolName: p.tool_name,
217
- parameters: p.parameters
216
+ toolId: g.tool_id,
217
+ toolName: g.tool_name,
218
+ parameters: g.parameters
218
219
  });
219
220
  break;
220
221
  case "tool_call_result":
221
222
  e({
222
223
  type: "STREAM_TOOL_CALL_RESULT",
223
- toolId: p.tool_id,
224
- status: p.status,
225
- result: p.result,
226
- duration_ms: p.duration_ms,
227
- error: p.error
224
+ toolId: g.tool_id,
225
+ status: g.status,
226
+ result: g.result,
227
+ parameters: g.parameters,
228
+ duration_ms: g.duration_ms,
229
+ error: g.error
228
230
  }), (b = (l = c.current) == null ? void 0 : l.onToolCall) == null || b.call(l, {
229
- toolId: p.tool_id,
231
+ toolId: g.tool_id,
230
232
  toolName: "",
231
233
  parameters: {},
232
- status: p.status,
233
- result: p.result,
234
- duration_ms: p.duration_ms,
235
- error: p.error
234
+ status: g.status,
235
+ result: g.result,
236
+ duration_ms: g.duration_ms,
237
+ error: g.error
236
238
  });
237
239
  break;
238
240
  case "subagent_event":
239
241
  e({
240
242
  type: "STREAM_SUBAGENT_EVENT",
241
- parentToolId: p.parent_tool_id,
243
+ parentToolId: g.parent_tool_id,
242
244
  event: {
243
- agentName: p.agent_name,
244
- eventType: p.event_type,
245
- toolName: p.tool_name,
246
- toolArgs: p.tool_args,
247
- result: p.result,
248
- text: p.text,
249
- error: p.error,
250
- timestamp: p.timestamp
245
+ agentName: g.agent_name,
246
+ eventType: g.event_type,
247
+ toolName: g.tool_name,
248
+ toolArgs: g.tool_args,
249
+ result: g.result,
250
+ text: g.text,
251
+ error: g.error,
252
+ timestamp: g.timestamp
251
253
  }
252
254
  });
253
255
  break;
254
256
  case "widget":
255
257
  e({
256
258
  type: "STREAM_WIDGET",
257
- widgetType: p.widget_type,
258
- data: p.data
259
+ widgetType: g.widget_type,
260
+ data: g.data
259
261
  });
260
262
  break;
261
263
  case "confirmation_required": {
262
264
  const L = {
263
- endpoint: p.endpoint,
264
- method: p.method,
265
- reason: p.reason,
266
- escalated: p.escalated,
267
- params: p.params,
268
- connectionName: p.connection_name,
269
- correlationId: p.correlation_id,
265
+ endpoint: g.endpoint,
266
+ method: g.method,
267
+ reason: g.reason,
268
+ escalated: g.escalated,
269
+ params: g.params,
270
+ connectionName: g.connection_name,
271
+ correlationId: g.correlation_id,
270
272
  status: "pending"
271
273
  };
272
274
  e({ type: "STREAM_CONFIRMATION_REQUIRED", confirmation: L }), (x = (T = c.current) == null ? void 0 : T.onConfirmation) == null || x.call(T, L);
273
275
  break;
274
276
  }
275
277
  case "error":
276
- e({ type: "STREAM_ERROR", message: p.message });
278
+ e({ type: "STREAM_ERROR", message: g.message });
277
279
  break;
278
280
  case "done":
279
281
  f = !0, e({
280
282
  type: "STREAM_DONE",
281
- usage: p.usage ? { inputTokens: p.usage.input_tokens, outputTokens: p.usage.output_tokens } : void 0
283
+ usage: g.usage ? { inputTokens: g.usage.input_tokens, outputTokens: g.usage.output_tokens } : void 0
282
284
  }), (M = (C = c.current) == null ? void 0 : C.onStreamEnd) == null || M.call(C);
283
285
  break;
284
286
  default:
@@ -427,27 +429,27 @@ function ee({
427
429
  case "user":
428
430
  return /* @__PURE__ */ v("div", { className: "amodal-chat__message amodal-chat__message--user", "data-testid": "user-message", children: o.text }, o.id);
429
431
  case "assistant_text":
430
- return /* @__PURE__ */ v("div", { className: "amodal-chat__message amodal-chat__message--assistant", "data-testid": "assistant-message", children: o.contentBlocks.map((d, g) => {
432
+ return /* @__PURE__ */ v("div", { className: "amodal-chat__message amodal-chat__message--assistant", "data-testid": "assistant-message", children: o.contentBlocks.map((d, p) => {
431
433
  switch (d.type) {
432
434
  case "text":
433
- return /* @__PURE__ */ v("div", { className: "amodal-chat__text", children: r ? r(d.text) : d.text }, `text-${String(g)}`);
435
+ return /* @__PURE__ */ v("div", { className: "amodal-chat__text", children: r ? r(d.text) : d.text }, `text-${String(p)}`);
434
436
  case "tool_calls":
435
437
  return /* @__PURE__ */ v("div", { className: "amodal-chat__tool-calls", children: d.calls.map(
436
438
  (l) => t ? /* @__PURE__ */ v("div", { children: t(l) }, l.toolId) : /* @__PURE__ */ w("div", { className: "amodal-chat__tool-call", "data-testid": "tool-call", children: [
437
439
  /* @__PURE__ */ v("span", { className: "amodal-chat__tool-name", children: l.toolName }),
438
440
  /* @__PURE__ */ v("span", { className: "amodal-chat__tool-status", children: l.status })
439
441
  ] }, l.toolId)
440
- ) }, `tools-${String(g)}`);
442
+ ) }, `tools-${String(p)}`);
441
443
  case "confirmation": {
442
444
  const l = d.confirmation, b = () => {
443
445
  l.correlationId && S(l.correlationId, !0);
444
446
  }, T = () => {
445
447
  l.correlationId && S(l.correlationId, !1);
446
448
  };
447
- return e ? /* @__PURE__ */ v("div", { children: e(l, b, T) }, `conf-${String(g)}`) : l.escalated || l.params && Object.keys(l.params).length > 0 ? /* @__PURE__ */ v(J, { confirmation: l, onApprove: b, onDeny: T }, `conf-${String(g)}`) : /* @__PURE__ */ v(H, { confirmation: l, onApprove: b, onDeny: T }, `conf-${String(g)}`);
449
+ return e ? /* @__PURE__ */ v("div", { children: e(l, b, T) }, `conf-${String(p)}`) : l.escalated || l.params && Object.keys(l.params).length > 0 ? /* @__PURE__ */ v(J, { confirmation: l, onApprove: b, onDeny: T }, `conf-${String(p)}`) : /* @__PURE__ */ v(H, { confirmation: l, onApprove: b, onDeny: T }, `conf-${String(p)}`);
448
450
  }
449
451
  case "widget":
450
- return /* @__PURE__ */ v("div", { className: "amodal-chat__widget", "data-testid": "widget", children: d.widgetType }, `widget-${String(g)}`);
452
+ return /* @__PURE__ */ v("div", { className: "amodal-chat__widget", "data-testid": "widget", children: d.widgetType }, `widget-${String(p)}`);
451
453
  default:
452
454
  return null;
453
455
  }
@@ -495,7 +497,7 @@ function te({ prompt: s, label: r, context: t, onComplete: e, onError: n }) {
495
497
  }), _ = A(() => {
496
498
  a || S || (c(!0), i(s));
497
499
  }, [a, S, i, s]), h = [...u].reverse().find((o) => o.type === "assistant_text"), m = h && h.type === "assistant_text" ? h.confirmations.filter((o) => o.status === "pending") : [], f = (o, d) => {
498
- const g = () => {
500
+ const p = () => {
499
501
  o.correlationId && E(o.correlationId, !0);
500
502
  }, l = () => {
501
503
  o.correlationId && E(o.correlationId, !1);
@@ -504,7 +506,7 @@ function te({ prompt: s, label: r, context: t, onComplete: e, onError: n }) {
504
506
  J,
505
507
  {
506
508
  confirmation: o,
507
- onApprove: g,
509
+ onApprove: p,
508
510
  onDeny: l
509
511
  },
510
512
  o.correlationId ?? String(d)
@@ -512,7 +514,7 @@ function te({ prompt: s, label: r, context: t, onComplete: e, onError: n }) {
512
514
  H,
513
515
  {
514
516
  confirmation: o,
515
- onApprove: g,
517
+ onApprove: p,
516
518
  onDeny: l
517
519
  },
518
520
  o.correlationId ?? String(d)
@@ -544,14 +546,14 @@ function se(s) {
544
546
  _.current = o, i(!0), E(null);
545
547
  try {
546
548
  let d = "";
547
- const g = [];
549
+ const p = [];
548
550
  for await (const l of n.chatStream(r, { context: t, signal: o.signal }))
549
551
  switch (l.type) {
550
552
  case "text_delta":
551
553
  d += l.content;
552
554
  break;
553
555
  case "tool_call_start":
554
- g.push({
556
+ p.push({
555
557
  toolId: l.tool_id,
556
558
  toolName: l.tool_name,
557
559
  parameters: l.parameters,
@@ -559,7 +561,7 @@ function se(s) {
559
561
  });
560
562
  break;
561
563
  case "tool_call_result": {
562
- const b = g.find((T) => T.toolId === l.tool_id);
564
+ const b = p.find((T) => T.toolId === l.tool_id);
563
565
  b && (b.status = l.status, b.result = l.result, b.duration_ms = l.duration_ms, b.error = l.error);
564
566
  break;
565
567
  }
@@ -569,7 +571,7 @@ function se(s) {
569
571
  default:
570
572
  break;
571
573
  }
572
- c({ text: d, toolCalls: g });
574
+ c({ text: d, toolCalls: p });
573
575
  } catch (d) {
574
576
  d instanceof DOMException && d.name === "AbortError" || E(d instanceof Error ? d.message : "Unknown error");
575
577
  } finally {
@@ -590,11 +592,11 @@ function se(s) {
590
592
  function re(s) {
591
593
  const { prompt: r, context: t, autoFetch: e = !0 } = s, { client: n } = k(), [a, c] = y("idle"), [u, i] = y(""), [S, E] = y(""), [_, h] = y(null), m = N(null), f = N(!1), o = A(async () => {
592
594
  m.current && m.current.abort();
593
- const g = new AbortController();
594
- m.current = g, c("loading"), h(null), i(""), E("");
595
+ const p = new AbortController();
596
+ m.current = p, c("loading"), h(null), i(""), E("");
595
597
  try {
596
598
  let l = "";
597
- for await (const T of n.chatStream(r, { context: t, signal: g.signal }))
599
+ for await (const T of n.chatStream(r, { context: t, signal: p.signal }))
598
600
  switch (T.type) {
599
601
  case "text_delta":
600
602
  l += T.content;
@@ -659,7 +661,7 @@ function ae(s) {
659
661
  } finally {
660
662
  f.current = null;
661
663
  }
662
- }, [e, r, n]), g = A(() => {
664
+ }, [e, r, n]), p = A(() => {
663
665
  f.current && (f.current.abort(), f.current = null);
664
666
  }, []), l = N(d);
665
667
  return l.current = d, R(() => (t && !o.current && (o.current = !0, l.current()), () => {
@@ -671,7 +673,7 @@ function ae(s) {
671
673
  events: E,
672
674
  error: h,
673
675
  start: () => void d(),
674
- stop: g
676
+ stop: p
675
677
  };
676
678
  }
677
679
  /**
@@ -686,13 +688,13 @@ function ne(s) {
686
688
  _.current = o, i(!0), E(null);
687
689
  try {
688
690
  let d = "";
689
- for await (const g of n.chatStream(r, { context: t, signal: o.signal }))
690
- switch (g.type) {
691
+ for await (const p of n.chatStream(r, { context: t, signal: o.signal }))
692
+ switch (p.type) {
691
693
  case "text_delta":
692
- d += g.content;
694
+ d += p.content;
693
695
  break;
694
696
  case "error":
695
- E(g.message);
697
+ E(p.message);
696
698
  break;
697
699
  default:
698
700
  break;
@@ -721,10 +723,10 @@ function oe(s, r) {
721
723
  const d = new AbortController();
722
724
  m.current = d;
723
725
  try {
724
- const g = await n.getStoreDocument(s, t, d.signal);
725
- c(g.document), i(g.history), h(null);
726
- } catch (g) {
727
- g instanceof DOMException && g.name === "AbortError" || h(g instanceof Error ? g.message : "Failed to fetch document");
726
+ const p = await n.getStoreDocument(s, t, d.signal);
727
+ c(p.document), i(p.history), h(null);
728
+ } catch (p) {
729
+ p instanceof DOMException && p.name === "AbortError" || h(p instanceof Error ? p.message : "Failed to fetch document");
728
730
  } finally {
729
731
  E(!1), m.current = null;
730
732
  }
@@ -755,10 +757,10 @@ function oe(s, r) {
755
757
  * SPDX-License-Identifier: MIT
756
758
  */
757
759
  function le(s, r = {}) {
758
- const { filter: t, sort: e, limit: n = 20, refreshInterval: a = 3e4 } = r, { client: c } = k(), [u, i] = y([]), [S, E] = y(0), [_, h] = y(!1), [m, f] = y(!0), [o, d] = y(null), g = N(null), l = t ? JSON.stringify(t) : "", b = A(async () => {
759
- g.current && g.current.abort();
760
+ const { filter: t, sort: e, limit: n = 20, refreshInterval: a = 3e4 } = r, { client: c } = k(), [u, i] = y([]), [S, E] = y(0), [_, h] = y(!1), [m, f] = y(!0), [o, d] = y(null), p = N(null), l = t ? JSON.stringify(t) : "", b = A(async () => {
761
+ p.current && p.current.abort();
760
762
  const x = new AbortController();
761
- g.current = x;
763
+ p.current = x;
762
764
  try {
763
765
  const C = await c.getStoreDocuments(s, {
764
766
  filter: l ? JSON.parse(l) : void 0,
@@ -770,13 +772,13 @@ function le(s, r = {}) {
770
772
  } catch (C) {
771
773
  C instanceof DOMException && C.name === "AbortError" || d(C instanceof Error ? C.message : "Failed to fetch store list");
772
774
  } finally {
773
- f(!1), g.current = null;
775
+ f(!1), p.current = null;
774
776
  }
775
777
  }, [c, s, l, e, n]), T = A(() => {
776
778
  b();
777
779
  }, [b]);
778
780
  return R(() => (f(!0), b(), () => {
779
- g.current && g.current.abort();
781
+ p.current && p.current.abort();
780
782
  }), [b]), R(() => {
781
783
  if (a <= 0) return;
782
784
  const x = setInterval(() => {
@@ -854,7 +856,7 @@ export {
854
856
  V as RuntimeClient,
855
857
  be as TypedEventEmitter,
856
858
  Te as WidgetEventBus,
857
- pe as applyTheme,
859
+ ge as applyTheme,
858
860
  Ae as createChatClient,
859
861
  Ne as createSession,
860
862
  xe as defaultEntityExtractor,
package/dist/react.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"react.js","sources":["../src/provider.tsx","../src/hooks/useAmodalChat.ts","../src/components/ConfirmCard.tsx","../src/components/ReviewCard.tsx","../src/chat.tsx","../src/components/AmodalAction.tsx","../src/hooks/useAmodalBrief.ts","../src/hooks/useAmodalInsight.ts","../src/hooks/useAmodalTask.ts","../src/hooks/useAmodalQuery.ts","../src/hooks/useStore.ts","../src/hooks/useStoreList.ts","../src/hooks/useSkillAction.ts","../src/hooks/useNavigate.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { RuntimeClient } from './client/runtime-client';\n\nexport interface AmodalProviderProps {\n /** Base URL of the Amodal runtime server (e.g., \"http://localhost:3001\"). */\n runtimeUrl: string;\n /** App identifier sent in every request body. */\n appId: string;\n /** Optional async token getter for auth headers. */\n getToken?: () => string | Promise<string> | null | undefined;\n children: ReactNode;\n}\n\ninterface AmodalContextValue {\n client: RuntimeClient;\n runtimeUrl: string;\n appId: string;\n}\n\nconst AmodalContext = createContext<AmodalContextValue | null>(null);\n\n/**\n * Provides a RuntimeClient to all child hooks and components.\n */\nexport function AmodalProvider({ runtimeUrl, appId, getToken, children }: AmodalProviderProps) {\n const client = useMemo(\n () => new RuntimeClient({ runtimeUrl, appId, getToken }),\n [runtimeUrl, appId, getToken],\n );\n\n const value = useMemo(\n () => ({ client, runtimeUrl, appId }),\n [client, runtimeUrl, appId],\n );\n\n return <AmodalContext.Provider value={value}>{children}</AmodalContext.Provider>;\n}\n\n/**\n * Access the RuntimeClient and config from the nearest AmodalProvider.\n * Throws if called outside of an AmodalProvider.\n */\nexport function useAmodalContext(): AmodalContextValue {\n const ctx = useContext(AmodalContext);\n if (!ctx) {\n throw new Error('useAmodalContext must be used within an <AmodalProvider>');\n }\n return ctx;\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useReducer, useRef } from 'react';\nimport type {\n ChatState,\n ChatAction,\n ChatMessage,\n AssistantTextMessage,\n ToolCallInfo,\n ContentBlock,\n ConfirmationInfo,\n} from '../types';\nimport { useAmodalContext } from '../provider';\n\nconst initialState: ChatState = {\n messages: [],\n sessionId: null,\n isStreaming: false,\n error: null,\n activeToolCalls: [],\n isHistorical: false,\n usage: {inputTokens: 0, outputTokens: 0},\n};\n\nlet messageCounter = 0;\n\nfunction createMessageId(): string {\n messageCounter++;\n return `msg-${Date.now()}-${String(messageCounter)}`;\n}\n\nexport function chatReducer(state: ChatState, action: ChatAction): ChatState {\n switch (action.type) {\n case 'SEND_MESSAGE': {\n const userMessage: ChatMessage = {\n type: 'user',\n id: createMessageId(),\n text: action.text,\n timestamp: new Date().toISOString(),\n };\n const assistantMessage: AssistantTextMessage = {\n type: 'assistant_text',\n id: createMessageId(),\n text: '',\n toolCalls: [],\n confirmations: [],\n skillActivations: [],\n kbProposals: [],\n widgets: [],\n contentBlocks: [],\n timestamp: new Date().toISOString(),\n };\n return {\n ...state,\n messages: [...state.messages, userMessage, assistantMessage],\n isStreaming: true,\n error: null,\n activeToolCalls: [],\n };\n }\n case 'STREAM_INIT':\n return { ...state, sessionId: action.sessionId };\n case 'STREAM_TEXT_DELTA': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'text') {\n blocks[blocks.length - 1] = { type: 'text', text: lastBlock.text + action.content };\n } else {\n blocks.push({ type: 'text', text: action.content });\n }\n msgs[msgs.length - 1] = { ...last, text: last.text + action.content, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_TOOL_CALL_START': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n const toolCall: ToolCallInfo = {\n toolId: action.toolId,\n toolName: action.toolName,\n parameters: action.parameters,\n status: 'running',\n };\n if (last && last.type === 'assistant_text') {\n const updatedToolCalls = [...last.toolCalls, toolCall];\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'tool_calls') {\n blocks[blocks.length - 1] = { type: 'tool_calls', calls: [...lastBlock.calls, toolCall] };\n } else {\n blocks.push({ type: 'tool_calls', calls: [toolCall] });\n }\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedToolCalls, contentBlocks: blocks };\n }\n return {\n ...state,\n messages: msgs,\n activeToolCalls: [...state.activeToolCalls, toolCall],\n };\n }\n case 'STREAM_TOOL_CALL_RESULT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updateCall = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.toolId\n ? {\n ...tc,\n status: action.status,\n result: action.result,\n duration_ms: action.duration_ms,\n error: action.error,\n }\n : tc;\n const updatedCalls = last.toolCalls.map(updateCall);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(updateCall) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n const activeToolCalls = state.activeToolCalls.filter(\n (tc) => tc.toolId !== action.toolId,\n );\n return { ...state, messages: msgs, activeToolCalls };\n }\n case 'STREAM_SUBAGENT_EVENT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const appendEvent = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.parentToolId\n ? { ...tc, subagentEvents: [...(tc.subagentEvents ?? []), action.event] }\n : tc;\n const updatedCalls = last.toolCalls.map(appendEvent);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(appendEvent) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_WIDGET': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'widget',\n widgetType: action.widgetType,\n data: action.data,\n };\n msgs[msgs.length - 1] = {\n ...last,\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_CONFIRMATION_REQUIRED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'confirmation',\n confirmation: action.confirmation,\n };\n msgs[msgs.length - 1] = {\n ...last,\n confirmations: [...last.confirmations, action.confirmation],\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'CONFIRMATION_RESPONDED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updatedConfirmations = last.confirmations.map((c) =>\n c.correlationId === action.correlationId\n ? { ...c, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] }\n : c,\n );\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'confirmation' && block.confirmation.correlationId === action.correlationId\n ? { ...block, confirmation: { ...block.confirmation, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] } }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, confirmations: updatedConfirmations, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_ERROR':\n return { ...state, isStreaming: false, error: action.message, activeToolCalls: [] };\n case 'STREAM_DONE': {\n const doneMessages = [...state.messages];\n const lastMsg = doneMessages[doneMessages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n const stopRunning = (tc: ToolCallInfo): ToolCallInfo =>\n tc.status === 'running' ? { ...tc, status: 'error', error: 'Stopped' } : tc;\n const stoppedCalls = lastMsg.toolCalls.map(stopRunning);\n const stoppedBlocks = lastMsg.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(stopRunning) }\n : block,\n );\n doneMessages[doneMessages.length - 1] = { ...lastMsg, toolCalls: stoppedCalls, contentBlocks: stoppedBlocks };\n }\n const newUsage = action.usage\n ? {inputTokens: state.usage.inputTokens + action.usage.inputTokens, outputTokens: state.usage.outputTokens + action.usage.outputTokens}\n : state.usage;\n return { ...state, messages: doneMessages, isStreaming: false, activeToolCalls: [], usage: newUsage };\n }\n case 'RESET':\n return { ...initialState };\n default:\n return state;\n }\n}\n\nexport interface UseAmodalChatOptions {\n /** Pre-seed session ID for resuming a previous session. */\n initialSessionId?: string | null;\n /** Additional context sent with each chat message. */\n context?: Record<string, unknown>;\n /** Called when the SSE stream ends. */\n onStreamEnd?: () => void;\n /** Called when a session ID is received from the server. */\n onSessionCreated?: (sessionId: string) => void;\n /** Called on each tool call result. */\n onToolCall?: (call: ToolCallInfo) => void;\n /** Called when a confirmation is required. */\n onConfirmation?: (confirmation: ConfirmationInfo) => void;\n}\n\nexport interface UseAmodalChatReturn {\n messages: ChatMessage[];\n send: (text: string) => void;\n stop: () => void;\n isStreaming: boolean;\n activeToolCalls: ToolCallInfo[];\n sessionId: string | null;\n error: string | null;\n usage: {inputTokens: number; outputTokens: number};\n reset: () => void;\n respondToConfirmation: (correlationId: string, approved: boolean) => void;\n}\n\nexport function useAmodalChat(options?: UseAmodalChatOptions): UseAmodalChatReturn {\n const { client } = useAmodalContext();\n const [state, dispatch] = useReducer(chatReducer, initialState);\n const sessionIdRef = useRef<string | null>(options?.initialSessionId ?? null);\n const abortControllerRef = useRef<AbortController | null>(null);\n const callbacksRef = useRef(options);\n callbacksRef.current = options;\n\n sessionIdRef.current = state.sessionId ?? sessionIdRef.current;\n\n const send = useCallback(\n (text: string) => {\n if (state.isStreaming) return;\n\n dispatch({ type: 'SEND_MESSAGE', text });\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n const runStream = async () => {\n let receivedDone = false;\n try {\n const stream = client.chatStream(text, {\n sessionId: sessionIdRef.current ?? undefined,\n context: callbacksRef.current?.context,\n signal: controller.signal,\n });\n\n for await (const event of stream) {\n switch (event.type) {\n case 'init':\n dispatch({ type: 'STREAM_INIT', sessionId: event.session_id });\n callbacksRef.current?.onSessionCreated?.(event.session_id);\n break;\n case 'text_delta':\n dispatch({ type: 'STREAM_TEXT_DELTA', content: event.content });\n break;\n case 'tool_call_start':\n dispatch({\n type: 'STREAM_TOOL_CALL_START',\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n });\n break;\n case 'tool_call_result':\n dispatch({\n type: 'STREAM_TOOL_CALL_RESULT',\n toolId: event.tool_id,\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n callbacksRef.current?.onToolCall?.({\n toolId: event.tool_id,\n toolName: '',\n parameters: {},\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n break;\n case 'subagent_event':\n dispatch({\n type: 'STREAM_SUBAGENT_EVENT',\n parentToolId: event.parent_tool_id,\n event: {\n agentName: event.agent_name,\n eventType: event.event_type,\n toolName: event.tool_name,\n toolArgs: event.tool_args,\n result: event.result,\n text: event.text,\n error: event.error,\n timestamp: event.timestamp,\n },\n });\n break;\n case 'widget':\n dispatch({\n type: 'STREAM_WIDGET',\n widgetType: event.widget_type,\n data: event.data,\n });\n break;\n case 'confirmation_required': {\n const confirmation: ConfirmationInfo = {\n endpoint: event.endpoint,\n method: event.method,\n reason: event.reason,\n escalated: event.escalated,\n params: event.params,\n connectionName: event.connection_name,\n correlationId: event.correlation_id,\n status: 'pending',\n };\n dispatch({ type: 'STREAM_CONFIRMATION_REQUIRED', confirmation });\n callbacksRef.current?.onConfirmation?.(confirmation);\n break;\n }\n case 'error':\n dispatch({ type: 'STREAM_ERROR', message: event.message });\n break;\n case 'done':\n receivedDone = true;\n dispatch({\n type: 'STREAM_DONE',\n usage: event.usage ? {inputTokens: event.usage.input_tokens, outputTokens: event.usage.output_tokens} : undefined,\n });\n callbacksRef.current?.onStreamEnd?.();\n break;\n default:\n break;\n }\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n dispatch({\n type: 'STREAM_ERROR',\n message: err instanceof Error ? err.message : 'Unknown error',\n });\n }\n } finally {\n abortControllerRef.current = null;\n if (!receivedDone && !controller.signal.aborted) {\n dispatch({ type: 'STREAM_DONE' });\n callbacksRef.current?.onStreamEnd?.();\n }\n }\n };\n\n void runStream();\n },\n [client, state.isStreaming],\n );\n\n const stop = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'STREAM_DONE' });\n }, []);\n\n const reset = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'RESET' });\n }, []);\n\n const respondToConfirmation = useCallback(\n (correlationId: string, approved: boolean) => {\n dispatch({ type: 'CONFIRMATION_RESPONDED', correlationId, approved });\n\n // Send approval/denial as a follow-up chat message\n const responseText = approved\n ? `I approve the action (correlation: ${correlationId})`\n : `I deny the action (correlation: ${correlationId})`;\n\n // Queue the response after the current stream ends\n if (!state.isStreaming) {\n send(responseText);\n }\n },\n [send, state.isStreaming],\n );\n\n // Abort on unmount\n useEffect(\n () => () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n },\n [],\n );\n\n return {\n messages: state.messages,\n send,\n stop,\n isStreaming: state.isStreaming,\n activeToolCalls: state.activeToolCalls,\n sessionId: state.sessionId,\n error: state.error,\n usage: state.usage,\n reset,\n respondToConfirmation,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ConfirmCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Simple confirmation card: shows endpoint + method + reason, approve/deny buttons.\n */\nexport function ConfirmCard({ confirmation, onApprove, onDeny }: ConfirmCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-confirm-card\" data-testid=\"confirm-card\">\n <div className=\"amodal-confirm-card__header\">\n <span className=\"amodal-confirm-card__method\">{confirmation.method}</span>\n <span className=\"amodal-confirm-card__endpoint\">{confirmation.endpoint}</span>\n </div>\n <p className=\"amodal-confirm-card__reason\">{confirmation.reason}</p>\n {isPending ? (\n <div className=\"amodal-confirm-card__actions\">\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"confirm-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"confirm-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-confirm-card__status\" data-testid=\"confirm-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ReviewCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Structured review card: all params, reason, escalation badge, approve/deny.\n */\nexport function ReviewCard({ confirmation, onApprove, onDeny }: ReviewCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-review-card\" data-testid=\"review-card\">\n <div className=\"amodal-review-card__header\">\n <span className=\"amodal-review-card__method\">{confirmation.method}</span>\n <span className=\"amodal-review-card__endpoint\">{confirmation.endpoint}</span>\n {confirmation.escalated && (\n <span className=\"amodal-review-card__badge\" data-testid=\"escalation-badge\">\n Escalated\n </span>\n )}\n </div>\n {confirmation.connectionName && (\n <div className=\"amodal-review-card__connection\">\n Connection: {confirmation.connectionName}\n </div>\n )}\n <p className=\"amodal-review-card__reason\">{confirmation.reason}</p>\n {confirmation.params && Object.keys(confirmation.params).length > 0 && (\n <div className=\"amodal-review-card__params\" data-testid=\"review-params\">\n <div className=\"amodal-review-card__params-title\">Parameters</div>\n <pre className=\"amodal-review-card__params-body\">\n {JSON.stringify(confirmation.params, null, 2)}\n </pre>\n </div>\n )}\n {isPending ? (\n <div className=\"amodal-review-card__actions\">\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"review-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"review-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-review-card__status\" data-testid=\"review-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport type { FormEvent } from 'react';\nimport type { ConfirmationInfo, ToolCallInfo } from './types';\nimport { useAmodalChat } from './hooks/useAmodalChat';\nimport type { UseAmodalChatOptions } from './hooks/useAmodalChat';\nimport { ConfirmCard } from './components/ConfirmCard';\nimport { ReviewCard } from './components/ReviewCard';\n\nexport interface AmodalChatProps extends UseAmodalChatOptions {\n /** Placeholder text for the input bar. */\n placeholder?: string;\n /** Custom renderer for text content blocks. */\n renderText?: (text: string) => React.ReactNode;\n /** Custom renderer for tool call blocks. */\n renderToolCall?: (call: ToolCallInfo) => React.ReactNode;\n /** Custom renderer for confirmation blocks. */\n renderConfirmation?: (confirmation: ConfirmationInfo, onApprove: () => void, onDeny: () => void) => React.ReactNode;\n /** CSS class name for the root element. */\n className?: string;\n}\n\n/**\n * Full chat component — message list, input bar, renders confirmations inline.\n */\nexport function AmodalChat({\n placeholder = 'Type a message...',\n renderText,\n renderToolCall,\n renderConfirmation,\n className,\n ...hookOptions\n}: AmodalChatProps) {\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat(hookOptions);\n const [input, setInput] = useState('');\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const handleSubmit = useCallback(\n (e: FormEvent) => {\n e.preventDefault();\n const trimmed = input.trim();\n if (trimmed.length === 0 || isStreaming) return;\n setInput('');\n send(trimmed);\n },\n [input, isStreaming, send],\n );\n\n const rootClass = ['amodal-chat', className].filter(Boolean).join(' ');\n\n return (\n <div className={rootClass} data-testid=\"amodal-chat\">\n <div className=\"amodal-chat__messages\" data-testid=\"message-list\">\n {messages.map((msg) => {\n switch (msg.type) {\n case 'user':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--user\" data-testid=\"user-message\">\n {msg.text}\n </div>\n );\n case 'assistant_text':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--assistant\" data-testid=\"assistant-message\">\n {msg.contentBlocks.map((block, i) => {\n switch (block.type) {\n case 'text':\n return (\n <div key={`text-${String(i)}`} className=\"amodal-chat__text\">\n {renderText ? renderText(block.text) : block.text}\n </div>\n );\n case 'tool_calls':\n return (\n <div key={`tools-${String(i)}`} className=\"amodal-chat__tool-calls\">\n {block.calls.map((call) =>\n renderToolCall ? (\n <div key={call.toolId}>{renderToolCall(call)}</div>\n ) : (\n <div key={call.toolId} className=\"amodal-chat__tool-call\" data-testid=\"tool-call\">\n <span className=\"amodal-chat__tool-name\">{call.toolName}</span>\n <span className=\"amodal-chat__tool-status\">{call.status}</span>\n </div>\n ),\n )}\n </div>\n );\n case 'confirmation': {\n const conf = block.confirmation;\n const handleApprove = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, false);\n }\n };\n if (renderConfirmation) {\n return <div key={`conf-${String(i)}`}>{renderConfirmation(conf, handleApprove, handleDeny)}</div>;\n }\n if (conf.escalated || (conf.params && Object.keys(conf.params).length > 0)) {\n return <ReviewCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n return <ConfirmCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n case 'widget':\n return (\n <div key={`widget-${String(i)}`} className=\"amodal-chat__widget\" data-testid=\"widget\">\n {block.widgetType}\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n case 'error':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--error\" data-testid=\"error-message\">\n {msg.message}\n </div>\n );\n default:\n return null;\n }\n })}\n <div ref={messagesEndRef} />\n </div>\n <form className=\"amodal-chat__input-bar\" onSubmit={handleSubmit} data-testid=\"input-bar\">\n <input\n className=\"amodal-chat__input\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={placeholder}\n disabled={isStreaming}\n data-testid=\"chat-input\"\n />\n <button\n className=\"amodal-chat__send\"\n type=\"submit\"\n disabled={isStreaming || input.trim().length === 0}\n data-testid=\"send-button\"\n >\n Send\n </button>\n </form>\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useState } from 'react';\nimport type { ConfirmationInfo } from '../types';\nimport { useAmodalChat } from '../hooks/useAmodalChat';\nimport { ConfirmCard } from './ConfirmCard';\nimport { ReviewCard } from './ReviewCard';\n\nexport interface AmodalActionProps {\n /** The prompt to send when the action is triggered. */\n prompt: string;\n /** Label for the trigger button. */\n label?: string;\n /** Additional context sent with the chat message. */\n context?: Record<string, unknown>;\n /** Called when the action completes. */\n onComplete?: (text: string) => void;\n /** Called on error. */\n onError?: (error: string) => void;\n}\n\n/**\n * One-shot action: triggers a chat stream with a prompt, shows confirmation inline.\n */\nexport function AmodalAction({ prompt, label, context, onComplete, onError }: AmodalActionProps) {\n const [triggered, setTriggered] = useState(false);\n\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat({\n context,\n onStreamEnd: () => {\n const lastMsg = messages[messages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n onComplete?.(lastMsg.text);\n } else if (lastMsg && lastMsg.type === 'error') {\n onError?.(lastMsg.message);\n }\n },\n });\n\n const trigger = useCallback(() => {\n if (triggered || isStreaming) return;\n setTriggered(true);\n send(prompt);\n }, [triggered, isStreaming, send, prompt]);\n\n const lastAssistant = [...messages].reverse().find((m) => m.type === 'assistant_text');\n const pendingConfirmations: ConfirmationInfo[] =\n lastAssistant && lastAssistant.type === 'assistant_text'\n ? lastAssistant.confirmations.filter((c) => c.status === 'pending')\n : [];\n\n const renderConfirmation = (confirmation: ConfirmationInfo, index: number) => {\n const handleApprove = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, false);\n }\n };\n\n if (confirmation.escalated || (confirmation.params && Object.keys(confirmation.params).length > 0)) {\n return (\n <ReviewCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n }\n\n return (\n <ConfirmCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n };\n\n if (!triggered) {\n return (\n <button\n className=\"amodal-action__trigger\"\n onClick={trigger}\n data-testid=\"action-trigger\"\n >\n {label ?? 'Run'}\n </button>\n );\n }\n\n return (\n <div className=\"amodal-action\" data-testid=\"action-container\">\n {isStreaming && (\n <div className=\"amodal-action__loading\" data-testid=\"action-loading\">\n Processing...\n </div>\n )}\n {lastAssistant && lastAssistant.type === 'assistant_text' && lastAssistant.text && (\n <div className=\"amodal-action__result\" data-testid=\"action-result\">\n {lastAssistant.text}\n </div>\n )}\n {pendingConfirmations.map(renderConfirmation)}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { BriefResult, ToolCallInfo } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalBriefOptions {\n /** The prompt to send for the brief. */\n prompt: string;\n /** Additional context sent with the request. */\n context?: Record<string, unknown>;\n /** If true, the brief is fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalBriefReturn {\n brief: BriefResult | null;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with a brief prompt, collects the full response.\n */\nexport function useAmodalBrief(options: UseAmodalBriefOptions): UseAmodalBriefReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [brief, setBrief] = useState<BriefResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchBrief = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n const toolCalls: ToolCallInfo[] = [];\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'tool_call_start':\n toolCalls.push({\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n status: 'running',\n });\n break;\n case 'tool_call_result': {\n const tc = toolCalls.find((t) => t.toolId === event.tool_id);\n if (tc) {\n tc.status = event.status;\n tc.result = event.result;\n tc.duration_ms = event.duration_ms;\n tc.error = event.error;\n }\n break;\n }\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setBrief({ text, toolCalls });\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchBrief();\n }, [fetchBrief]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchBrief();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchBrief]);\n\n return { brief, isLoading, error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { InsightResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalInsightOptions {\n /** The insight prompt to send. */\n prompt: string;\n /** Additional context for the insight. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalInsightReturn {\n status: InsightResult['status'];\n summary: string;\n details: string;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with an insight prompt, collects a structured response.\n * Splits the response at the first double newline into summary and details.\n */\nexport function useAmodalInsight(options: UseAmodalInsightOptions): UseAmodalInsightReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<InsightResult['status']>('idle');\n const [summary, setSummary] = useState('');\n const [details, setDetails] = useState('');\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchInsight = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('loading');\n setError(null);\n setSummary('');\n setDetails('');\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n default:\n break;\n }\n }\n\n // Split at first double newline\n const splitIndex = text.indexOf('\\n\\n');\n if (splitIndex >= 0) {\n setSummary(text.slice(0, splitIndex).trim());\n setDetails(text.slice(splitIndex + 2).trim());\n } else {\n setSummary(text.trim());\n }\n setStatus('done');\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchInsight();\n }, [fetchInsight]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchInsight();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchInsight]);\n\n return { status, summary, details, isLoading: status === 'loading', error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { SSEEvent, TaskStatusValue } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalTaskOptions {\n /** The task ID to stream. */\n taskId: string;\n /** If true, starts streaming automatically on mount. Defaults to true. */\n autoStream?: boolean;\n}\n\nexport interface UseAmodalTaskReturn {\n status: TaskStatusValue | 'idle';\n progress: string;\n result: string;\n events: SSEEvent[];\n error: string | null;\n start: () => void;\n stop: () => void;\n}\n\n/**\n * Streams GET /task/:id/stream events.\n */\nexport function useAmodalTask(options: UseAmodalTaskOptions): UseAmodalTaskReturn {\n const { taskId, autoStream = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<TaskStatusValue | 'idle'>('idle');\n const [progress, setProgress] = useState('');\n const [result, setResult] = useState('');\n const [events, setEvents] = useState<SSEEvent[]>([]);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const startedRef = useRef(false);\n\n const start = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('running');\n setError(null);\n setEvents([]);\n setResult('');\n setProgress('');\n\n try {\n let text = '';\n\n for await (const event of client.streamTask(taskId, controller.signal)) {\n setEvents((prev) => [...prev, event]);\n\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n setResult(text);\n break;\n case 'tool_call_start':\n setProgress(`Running ${event.tool_name}...`);\n break;\n case 'tool_call_result':\n setProgress('');\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n case 'done':\n setStatus('completed');\n return;\n default:\n break;\n }\n }\n\n // Stream ended without done event\n if (status === 'running') {\n setStatus('completed');\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, taskId, status]);\n\n const stop = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n abortRef.current = null;\n }\n }, []);\n\n const startRef = useRef(start);\n startRef.current = start;\n\n useEffect(() => {\n if (autoStream && !startedRef.current) {\n startedRef.current = true;\n void startRef.current();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoStream]);\n\n return {\n status,\n progress,\n result,\n events,\n error,\n start: () => void start(),\n stop,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { QueryResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalQueryOptions {\n /** The query prompt. */\n prompt: string;\n /** Additional context. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport type UseAmodalQueryReturn = QueryResult<string> & {\n refetch: () => void;\n};\n\n/**\n * Non-streaming query. Collects the full response text.\n */\nexport function useAmodalQuery(options: UseAmodalQueryOptions): UseAmodalQueryReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [data, setData] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchQuery = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setData(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refetch = useCallback(() => {\n void fetchQuery();\n }, [fetchQuery]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchQuery();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchQuery]);\n\n return { data, isLoading, error, refetch };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument, StoreDocumentMeta } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreOptions {\n /** Document key to fetch. */\n key: string;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreReturn {\n /** Document payload (the entity data). */\n data: Record<string, unknown> | null;\n /** Document metadata (computedAt, ttl, stale, trace, etc.). */\n meta: StoreDocumentMeta | null;\n /** Full document (key, version, payload, meta). */\n document: StoreDocument | null;\n /** Version history (most recent first). */\n history: StoreDocument[];\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a single document from a store by key.\n *\n * @example\n * ```tsx\n * const { data, meta, isLoading } = useStore('deal-health', { key: `deal:${dealId}` });\n * if (data) {\n * console.log(data.score, data.severity);\n * }\n * ```\n */\nexport function useStore(storeName: string, options: UseStoreOptions): UseStoreReturn {\n const { key, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [document, setDocument] = useState<StoreDocument | null>(null);\n const [history, setHistory] = useState<StoreDocument[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const fetchDocument = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocument(storeName, key, controller.signal);\n setDocument(result.document);\n setHistory(result.history);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch document');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, key]);\n\n const refetch = useCallback(() => {\n void fetchDocument();\n }, [fetchDocument]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchDocument();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchDocument]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchDocument();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchDocument, refreshInterval]);\n\n return {\n data: document?.payload ?? null,\n meta: document?.meta ?? null,\n document,\n history,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreListOptions {\n /** Filter by field values (equality match). */\n filter?: Record<string, unknown>;\n /** Sort field. Prefix with \"-\" for descending (e.g., \"-severity\"). */\n sort?: string;\n /** Max documents to return. Default: 20. */\n limit?: number;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreListReturn {\n /** Array of document payloads. */\n data: Array<Record<string, unknown>>;\n /** Full documents (with key, version, meta). */\n documents: StoreDocument[];\n /** Total count of matching documents. */\n total: number;\n /** Whether more documents exist beyond the current page. */\n hasMore: boolean;\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a list of documents from a store with optional filtering and sorting.\n *\n * @example\n * ```tsx\n * const { data, total } = useStoreList('active-alerts', {\n * filter: { severity: 'P1' },\n * sort: '-computedAt',\n * limit: 10,\n * });\n * ```\n */\nexport function useStoreList(storeName: string, options: UseStoreListOptions = {}): UseStoreListReturn {\n const { filter, sort, limit = 20, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [documents, setDocuments] = useState<StoreDocument[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n // Stable stringified deps for filter object\n const filterKey = filter ? JSON.stringify(filter) : '';\n\n const fetchList = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocuments(storeName, {\n filter: filterKey ? JSON.parse(filterKey) : undefined,\n sort,\n limit,\n signal: controller.signal,\n });\n setDocuments(result.documents);\n setTotal(result.total);\n setHasMore(result.hasMore);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch store list');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, filterKey, sort, limit]);\n\n const refetch = useCallback(() => {\n void fetchList();\n }, [fetchList]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchList();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchList]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchList();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchList, refreshInterval]);\n\n return {\n data: documents.map((d) => d.payload),\n documents,\n total,\n hasMore,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseSkillActionOptions {\n /** Store names this skill writes to (for context in the prompt). */\n stores?: string[];\n /** Whether to include a confirmation hint in the prompt. */\n confirm?: boolean;\n}\n\nexport interface UseSkillActionReturn {\n /** Execute the skill with the given parameters. */\n execute: (params?: Record<string, unknown>) => void;\n /** Whether the skill is currently running. */\n loading: boolean;\n /** The text result from the skill execution. */\n result: string | null;\n /** Error message if execution failed. */\n error: string | null;\n}\n\n/**\n * Invoke a skill via the chat agent.\n *\n * Under the hood, this sends a structured chat message asking the agent\n * to run the skill, then collects the text response.\n *\n * @example\n * ```tsx\n * const investigate = useSkillAction('deep-investigator', {\n * stores: ['active-alerts', 'incident-correlations'],\n * });\n *\n * <button onClick={() => investigate.execute({ correlationId: '123' })}>\n * Investigate\n * </button>\n * ```\n */\nexport function useSkillAction(\n skillName: string,\n options: UseSkillActionOptions = {},\n): UseSkillActionReturn {\n const { client } = useAmodalContext();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const execute = useCallback(\n (params?: Record<string, unknown>) => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setLoading(true);\n setResult(null);\n setError(null);\n\n // Build a structured prompt for the agent\n let prompt = `Run skill \"${skillName}\"`;\n if (params && Object.keys(params).length > 0) {\n prompt += ` with parameters: ${JSON.stringify(params)}`;\n }\n if (options.stores && options.stores.length > 0) {\n prompt += `. Write results to stores: ${options.stores.join(', ')}`;\n }\n if (options.confirm) {\n prompt += '. Confirm before writing.';\n }\n\n void (async () => {\n try {\n let text = '';\n for await (const event of client.chatStream(prompt, { signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n setResult(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Skill execution failed');\n }\n } finally {\n setLoading(false);\n abortRef.current = null;\n }\n })();\n },\n [client, skillName, options.stores, options.confirm],\n );\n\n return { execute, loading, result, error };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useCallback } from 'react';\n\n/**\n * Navigation function type.\n * In the runtime app, this is backed by React Router's navigate.\n * In standalone/embedded usage, the host app provides the implementation.\n */\nexport type NavigateFn = (pageName: string, params?: Record<string, string>) => void;\n\n/**\n * Context for providing a navigate function.\n * The runtime app sets this with React Router's navigate.\n * Standalone users can provide their own via NavigateProvider.\n */\nexport const NavigateContext = createContext<NavigateFn | null>(null);\n\n/**\n * Navigate between pages in the runtime app.\n *\n * In the runtime app, navigates to the page route.\n * In standalone/embedded usage, calls the host-provided navigate function.\n * If no NavigateProvider is present, returns a no-op.\n *\n * @example\n * ```tsx\n * const navigate = useNavigate();\n * navigate('incident-detail', { correlationId: '123' });\n * ```\n */\nexport function useNavigate(): NavigateFn {\n const navigateFn = useContext(NavigateContext);\n\n const noopNavigate = useCallback((_pageName: string, _params?: Record<string, string>) => {\n // No-op when no NavigateProvider is present\n }, []);\n\n return navigateFn ?? noopNavigate;\n}\n"],"names":["AmodalContext","createContext","AmodalProvider","runtimeUrl","appId","getToken","children","client","useMemo","RuntimeClient","value","jsx","useAmodalContext","ctx","useContext","initialState","messageCounter","createMessageId","chatReducer","state","action","userMessage","assistantMessage","msgs","last","blocks","lastBlock","toolCall","updatedToolCalls","updateCall","tc","updatedCalls","block","activeToolCalls","appendEvent","updatedConfirmations","doneMessages","lastMsg","stopRunning","stoppedCalls","stoppedBlocks","newUsage","useAmodalChat","options","dispatch","useReducer","sessionIdRef","useRef","abortControllerRef","callbacksRef","send","useCallback","text","controller","receivedDone","stream","_a","event","_c","_b","_e","_d","confirmation","_g","_f","_i","_h","err","_k","_j","stop","reset","respondToConfirmation","correlationId","approved","responseText","useEffect","ConfirmCard","onApprove","onDeny","isPending","jsxs","ReviewCard","AmodalChat","placeholder","renderText","renderToolCall","renderConfirmation","className","hookOptions","messages","isStreaming","input","setInput","useState","messagesEndRef","handleSubmit","e","trimmed","rootClass","msg","i","call","conf","handleApprove","handleDeny","AmodalAction","prompt","label","context","onComplete","onError","triggered","setTriggered","trigger","lastAssistant","m","pendingConfirmations","c","index","useAmodalBrief","autoFetch","brief","setBrief","isLoading","setIsLoading","error","setError","abortRef","mountedRef","fetchBrief","toolCalls","t","refresh","useAmodalInsight","status","setStatus","summary","setSummary","details","setDetails","fetchInsight","splitIndex","useAmodalTask","taskId","autoStream","progress","setProgress","result","setResult","events","setEvents","startedRef","start","prev","startRef","useAmodalQuery","data","setData","fetchQuery","refetch","useStore","storeName","key","refreshInterval","document","setDocument","history","setHistory","fetchDocument","timer","useStoreList","filter","sort","limit","documents","setDocuments","total","setTotal","hasMore","setHasMore","filterKey","fetchList","d","useSkillAction","skillName","loading","setLoading","params","NavigateContext","useNavigate","navigateFn","noopNavigate","_pageName","_params"],"mappings":";;;;;;AA0BA,MAAMA,IAAgBC,EAAyC,IAAI;AAK5D,SAASC,EAAe,EAAE,YAAAC,GAAY,OAAAC,GAAO,UAAAC,GAAU,UAAAC,KAAiC;AAC7F,QAAMC,IAASC;AAAA,IACb,MAAM,IAAIC,EAAc,EAAE,YAAAN,GAAY,OAAAC,GAAO,UAAAC,GAAU;AAAA,IACvD,CAACF,GAAYC,GAAOC,CAAQ;AAAA,EAAA,GAGxBK,IAAQF;AAAA,IACZ,OAAO,EAAE,QAAAD,GAAQ,YAAAJ,GAAY,OAAAC;IAC7B,CAACG,GAAQJ,GAAYC,CAAK;AAAA,EAAA;AAG5B,SAAO,gBAAAO,EAACX,EAAc,UAAd,EAAuB,OAAAU,GAAe,UAAAJ,EAAA,CAAS;AACzD;AAMO,SAASM,IAAuC;AACrD,QAAMC,IAAMC,EAAWd,CAAa;AACpC,MAAI,CAACa;AACH,UAAM,IAAI,MAAM,0DAA0D;AAE5E,SAAOA;AACT;ACvDA;AAAA;AAAA;AAAA;AAAA;AAkBA,MAAME,IAA0B;AAAA,EAC9B,UAAU,CAAA;AAAA,EACV,WAAW;AAAA,EACX,aAAa;AAAA,EACb,OAAO;AAAA,EACP,iBAAiB,CAAA;AAAA,EACjB,cAAc;AAAA,EACd,OAAO,EAAC,aAAa,GAAG,cAAc,EAAA;AACxC;AAEA,IAAIC,IAAiB;AAErB,SAASC,IAA0B;AACjC,SAAAD,KACO,OAAO,KAAK,IAAA,CAAK,IAAI,OAAOA,CAAc,CAAC;AACpD;AAEO,SAASE,EAAYC,GAAkBC,GAA+B;AAC3E,UAAQA,EAAO,MAAA;AAAA,IACb,KAAK,gBAAgB;AACnB,YAAMC,IAA2B;AAAA,QAC/B,MAAM;AAAA,QACN,IAAIJ,EAAA;AAAA,QACJ,MAAMG,EAAO;AAAA,QACb,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAY,GAE9BE,IAAyC;AAAA,QAC7C,MAAM;AAAA,QACN,IAAIL,EAAA;AAAA,QACJ,MAAM;AAAA,QACN,WAAW,CAAA;AAAA,QACX,eAAe,CAAA;AAAA,QACf,kBAAkB,CAAA;AAAA,QAClB,aAAa,CAAA;AAAA,QACb,SAAS,CAAA;AAAA,QACT,eAAe,CAAA;AAAA,QACf,YAAW,oBAAI,KAAA,GAAO,YAAA;AAAA,MAAY;AAEpC,aAAO;AAAA,QACL,GAAGE;AAAA,QACH,UAAU,CAAC,GAAGA,EAAM,UAAUE,GAAaC,CAAgB;AAAA,QAC3D,aAAa;AAAA,QACb,OAAO;AAAA,QACP,iBAAiB,CAAA;AAAA,MAAC;AAAA,IAEtB;AAAA,IACA,KAAK;AACH,aAAO,EAAE,GAAGH,GAAO,WAAWC,EAAO,UAAA;AAAA,IACvC,KAAK,qBAAqB;AACxB,YAAMG,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC;AACjC,UAAIC,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMC,IAAS,CAAC,GAAGD,EAAK,aAAa,GAC/BE,IAAYD,EAAOA,EAAO,SAAS,CAAC;AAC1C,QAAIC,KAAaA,EAAU,SAAS,SAClCD,EAAOA,EAAO,SAAS,CAAC,IAAI,EAAE,MAAM,QAAQ,MAAMC,EAAU,OAAON,EAAO,QAAA,IAE1EK,EAAO,KAAK,EAAE,MAAM,QAAQ,MAAML,EAAO,SAAS,GAEpDG,EAAKA,EAAK,SAAS,CAAC,IAAI,EAAE,GAAGC,GAAM,MAAMA,EAAK,OAAOJ,EAAO,SAAS,eAAeK,EAAA;AAAA,MACtF;AACA,aAAO,EAAE,GAAGN,GAAO,UAAUI,EAAA;AAAA,IAC/B;AAAA,IACA,KAAK,0BAA0B;AAC7B,YAAMA,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC,GAC3BI,IAAyB;AAAA,QAC7B,QAAQP,EAAO;AAAA,QACf,UAAUA,EAAO;AAAA,QACjB,YAAYA,EAAO;AAAA,QACnB,QAAQ;AAAA,MAAA;AAEV,UAAII,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMI,IAAmB,CAAC,GAAGJ,EAAK,WAAWG,CAAQ,GAC/CF,IAAS,CAAC,GAAGD,EAAK,aAAa,GAC/BE,IAAYD,EAAOA,EAAO,SAAS,CAAC;AAC1C,QAAIC,KAAaA,EAAU,SAAS,eAClCD,EAAOA,EAAO,SAAS,CAAC,IAAI,EAAE,MAAM,cAAc,OAAO,CAAC,GAAGC,EAAU,OAAOC,CAAQ,EAAA,IAEtFF,EAAO,KAAK,EAAE,MAAM,cAAc,OAAO,CAACE,CAAQ,GAAG,GAEvDJ,EAAKA,EAAK,SAAS,CAAC,IAAI,EAAE,GAAGC,GAAM,WAAWI,GAAkB,eAAeH,EAAA;AAAA,MACjF;AACA,aAAO;AAAA,QACL,GAAGN;AAAA,QACH,UAAUI;AAAA,QACV,iBAAiB,CAAC,GAAGJ,EAAM,iBAAiBQ,CAAQ;AAAA,MAAA;AAAA,IAExD;AAAA,IACA,KAAK,2BAA2B;AAC9B,YAAMJ,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC;AACjC,UAAIC,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMK,IAAa,CAACC,MAClBA,EAAG,WAAWV,EAAO,SACjB;AAAA,UACE,GAAGU;AAAA,UACH,QAAQV,EAAO;AAAA,UACf,QAAQA,EAAO;AAAA,UACf,aAAaA,EAAO;AAAA,UACpB,OAAOA,EAAO;AAAA,QAAA,IAEhBU,GACAC,IAAeP,EAAK,UAAU,IAAIK,CAAU,GAC5CJ,IAASD,EAAK,cAAc;AAAA,UAAI,CAACQ,MACrCA,EAAM,SAAS,eACX,EAAE,GAAGA,GAAO,OAAOA,EAAM,MAAM,IAAIH,CAAU,MAC7CG;AAAA,QAAA;AAEN,QAAAT,EAAKA,EAAK,SAAS,CAAC,IAAI,EAAE,GAAGC,GAAM,WAAWO,GAAc,eAAeN,EAAA;AAAA,MAC7E;AACA,YAAMQ,IAAkBd,EAAM,gBAAgB;AAAA,QAC5C,CAACW,MAAOA,EAAG,WAAWV,EAAO;AAAA,MAAA;AAE/B,aAAO,EAAE,GAAGD,GAAO,UAAUI,GAAM,iBAAAU,EAAA;AAAA,IACrC;AAAA,IACA,KAAK,yBAAyB;AAC5B,YAAMV,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC;AACjC,UAAIC,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMU,IAAc,CAACJ,MACnBA,EAAG,WAAWV,EAAO,eACjB,EAAE,GAAGU,GAAI,gBAAgB,CAAC,GAAIA,EAAG,kBAAkB,CAAA,GAAKV,EAAO,KAAK,MACpEU,GACAC,IAAeP,EAAK,UAAU,IAAIU,CAAW,GAC7CT,IAASD,EAAK,cAAc;AAAA,UAAI,CAACQ,MACrCA,EAAM,SAAS,eACX,EAAE,GAAGA,GAAO,OAAOA,EAAM,MAAM,IAAIE,CAAW,MAC9CF;AAAA,QAAA;AAEN,QAAAT,EAAKA,EAAK,SAAS,CAAC,IAAI,EAAE,GAAGC,GAAM,WAAWO,GAAc,eAAeN,EAAA;AAAA,MAC7E;AACA,aAAO,EAAE,GAAGN,GAAO,UAAUI,EAAA;AAAA,IAC/B;AAAA,IACA,KAAK,iBAAiB;AACpB,YAAMA,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC;AACjC,UAAIC,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMQ,IAAsB;AAAA,UAC1B,MAAM;AAAA,UACN,YAAYZ,EAAO;AAAA,UACnB,MAAMA,EAAO;AAAA,QAAA;AAEf,QAAAG,EAAKA,EAAK,SAAS,CAAC,IAAI;AAAA,UACtB,GAAGC;AAAA,UACH,eAAe,CAAC,GAAGA,EAAK,eAAeQ,CAAK;AAAA,QAAA;AAAA,MAEhD;AACA,aAAO,EAAE,GAAGb,GAAO,UAAUI,EAAA;AAAA,IAC/B;AAAA,IACA,KAAK,gCAAgC;AACnC,YAAMA,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC;AACjC,UAAIC,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMQ,IAAsB;AAAA,UAC1B,MAAM;AAAA,UACN,cAAcZ,EAAO;AAAA,QAAA;AAEvB,QAAAG,EAAKA,EAAK,SAAS,CAAC,IAAI;AAAA,UACtB,GAAGC;AAAA,UACH,eAAe,CAAC,GAAGA,EAAK,eAAeJ,EAAO,YAAY;AAAA,UAC1D,eAAe,CAAC,GAAGI,EAAK,eAAeQ,CAAK;AAAA,QAAA;AAAA,MAEhD;AACA,aAAO,EAAE,GAAGb,GAAO,UAAUI,EAAA;AAAA,IAC/B;AAAA,IACA,KAAK,0BAA0B;AAC7B,YAAMA,IAAO,CAAC,GAAGJ,EAAM,QAAQ,GACzBK,IAAOD,EAAKA,EAAK,SAAS,CAAC;AACjC,UAAIC,KAAQA,EAAK,SAAS,kBAAkB;AAC1C,cAAMW,IAAuBX,EAAK,cAAc;AAAA,UAAI,CAAC,MACnD,EAAE,kBAAkBJ,EAAO,gBACvB,EAAE,GAAG,GAAG,QAASA,EAAO,WAAW,aAAa,aAChD;AAAA,QAAA,GAEAK,IAASD,EAAK,cAAc;AAAA,UAAI,CAACQ,MACrCA,EAAM,SAAS,kBAAkBA,EAAM,aAAa,kBAAkBZ,EAAO,gBACzE,EAAE,GAAGY,GAAO,cAAc,EAAE,GAAGA,EAAM,cAAc,QAASZ,EAAO,WAAW,aAAa,SAAA,MAC3FY;AAAA,QAAA;AAEN,QAAAT,EAAKA,EAAK,SAAS,CAAC,IAAI,EAAE,GAAGC,GAAM,eAAeW,GAAsB,eAAeV,EAAA;AAAA,MACzF;AACA,aAAO,EAAE,GAAGN,GAAO,UAAUI,EAAA;AAAA,IAC/B;AAAA,IACA,KAAK;AACH,aAAO,EAAE,GAAGJ,GAAO,aAAa,IAAO,OAAOC,EAAO,SAAS,iBAAiB,GAAC;AAAA,IAClF,KAAK,eAAe;AAClB,YAAMgB,IAAe,CAAC,GAAGjB,EAAM,QAAQ,GACjCkB,IAAUD,EAAaA,EAAa,SAAS,CAAC;AACpD,UAAIC,KAAWA,EAAQ,SAAS,kBAAkB;AAChD,cAAMC,IAAc,CAACR,MACnBA,EAAG,WAAW,YAAY,EAAE,GAAGA,GAAI,QAAQ,SAAS,OAAO,cAAcA,GACrES,IAAeF,EAAQ,UAAU,IAAIC,CAAW,GAChDE,IAAgBH,EAAQ,cAAc;AAAA,UAAI,CAACL,MAC/CA,EAAM,SAAS,eACX,EAAE,GAAGA,GAAO,OAAOA,EAAM,MAAM,IAAIM,CAAW,MAC9CN;AAAA,QAAA;AAEN,QAAAI,EAAaA,EAAa,SAAS,CAAC,IAAI,EAAE,GAAGC,GAAS,WAAWE,GAAc,eAAeC,EAAA;AAAA,MAChG;AACA,YAAMC,IAAWrB,EAAO,QACpB,EAAC,aAAaD,EAAM,MAAM,cAAcC,EAAO,MAAM,aAAa,cAAcD,EAAM,MAAM,eAAeC,EAAO,MAAM,iBACxHD,EAAM;AACV,aAAO,EAAE,GAAGA,GAAO,UAAUiB,GAAc,aAAa,IAAO,iBAAiB,CAAA,GAAI,OAAOK,EAAA;AAAA,IAC7F;AAAA,IACA,KAAK;AACH,aAAO,EAAE,GAAG1B,EAAA;AAAA,IACd;AACE,aAAOI;AAAA,EAAA;AAEb;AA8BO,SAASuB,EAAcC,GAAqD;AACjF,QAAM,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAACO,GAAOyB,CAAQ,IAAIC,EAAW3B,GAAaH,CAAY,GACxD+B,IAAeC,GAAsBJ,KAAA,gBAAAA,EAAS,qBAAoB,IAAI,GACtEK,IAAqBD,EAA+B,IAAI,GACxDE,IAAeF,EAAOJ,CAAO;AACnC,EAAAM,EAAa,UAAUN,GAEvBG,EAAa,UAAU3B,EAAM,aAAa2B,EAAa;AAEvD,QAAMI,IAAOC;AAAA,IACX,CAACC,MAAiB;AAChB,UAAIjC,EAAM,YAAa;AAEvB,MAAAyB,EAAS,EAAE,MAAM,gBAAgB,MAAAQ,EAAA,CAAM;AAEvC,YAAMC,IAAa,IAAI,gBAAA;AACvB,MAAAL,EAAmB,UAAUK,IAEX,YAAY;;AAC5B,YAAIC,IAAe;AACnB,YAAI;AACF,gBAAMC,IAAShD,EAAO,WAAW6C,GAAM;AAAA,YACrC,WAAWN,EAAa,WAAW;AAAA,YACnC,UAASU,IAAAP,EAAa,YAAb,gBAAAO,EAAsB;AAAA,YAC/B,QAAQH,EAAW;AAAA,UAAA,CACpB;AAED,2BAAiBI,KAASF;AACxB,oBAAQE,EAAM,MAAA;AAAA,cACZ,KAAK;AACH,gBAAAb,EAAS,EAAE,MAAM,eAAe,WAAWa,EAAM,YAAY,IAC7DC,KAAAC,IAAAV,EAAa,YAAb,gBAAAU,EAAsB,qBAAtB,QAAAD,EAAA,KAAAC,GAAyCF,EAAM;AAC/C;AAAA,cACF,KAAK;AACH,gBAAAb,EAAS,EAAE,MAAM,qBAAqB,SAASa,EAAM,SAAS;AAC9D;AAAA,cACF,KAAK;AACH,gBAAAb,EAAS;AAAA,kBACP,MAAM;AAAA,kBACN,QAAQa,EAAM;AAAA,kBACd,UAAUA,EAAM;AAAA,kBAChB,YAAYA,EAAM;AAAA,gBAAA,CACnB;AACD;AAAA,cACF,KAAK;AACH,gBAAAb,EAAS;AAAA,kBACP,MAAM;AAAA,kBACN,QAAQa,EAAM;AAAA,kBACd,QAAQA,EAAM;AAAA,kBACd,QAAQA,EAAM;AAAA,kBACd,aAAaA,EAAM;AAAA,kBACnB,OAAOA,EAAM;AAAA,gBAAA,CACd,IACDG,KAAAC,IAAAZ,EAAa,YAAb,gBAAAY,EAAsB,eAAtB,QAAAD,EAAA,KAAAC,GAAmC;AAAA,kBACjC,QAAQJ,EAAM;AAAA,kBACd,UAAU;AAAA,kBACV,YAAY,CAAA;AAAA,kBACZ,QAAQA,EAAM;AAAA,kBACd,QAAQA,EAAM;AAAA,kBACd,aAAaA,EAAM;AAAA,kBACnB,OAAOA,EAAM;AAAA,gBAAA;AAEf;AAAA,cACF,KAAK;AACH,gBAAAb,EAAS;AAAA,kBACP,MAAM;AAAA,kBACN,cAAca,EAAM;AAAA,kBACpB,OAAO;AAAA,oBACL,WAAWA,EAAM;AAAA,oBACjB,WAAWA,EAAM;AAAA,oBACjB,UAAUA,EAAM;AAAA,oBAChB,UAAUA,EAAM;AAAA,oBAChB,QAAQA,EAAM;AAAA,oBACd,MAAMA,EAAM;AAAA,oBACZ,OAAOA,EAAM;AAAA,oBACb,WAAWA,EAAM;AAAA,kBAAA;AAAA,gBACnB,CACD;AACD;AAAA,cACF,KAAK;AACH,gBAAAb,EAAS;AAAA,kBACP,MAAM;AAAA,kBACN,YAAYa,EAAM;AAAA,kBAClB,MAAMA,EAAM;AAAA,gBAAA,CACb;AACD;AAAA,cACF,KAAK,yBAAyB;AAC5B,sBAAMK,IAAiC;AAAA,kBACrC,UAAUL,EAAM;AAAA,kBAChB,QAAQA,EAAM;AAAA,kBACd,QAAQA,EAAM;AAAA,kBACd,WAAWA,EAAM;AAAA,kBACjB,QAAQA,EAAM;AAAA,kBACd,gBAAgBA,EAAM;AAAA,kBACtB,eAAeA,EAAM;AAAA,kBACrB,QAAQ;AAAA,gBAAA;AAEV,gBAAAb,EAAS,EAAE,MAAM,gCAAgC,cAAAkB,EAAA,CAAc,IAC/DC,KAAAC,IAAAf,EAAa,YAAb,gBAAAe,EAAsB,mBAAtB,QAAAD,EAAA,KAAAC,GAAuCF;AACvC;AAAA,cACF;AAAA,cACA,KAAK;AACH,gBAAAlB,EAAS,EAAE,MAAM,gBAAgB,SAASa,EAAM,SAAS;AACzD;AAAA,cACF,KAAK;AACH,gBAAAH,IAAe,IACfV,EAAS;AAAA,kBACP,MAAM;AAAA,kBACN,OAAOa,EAAM,QAAQ,EAAC,aAAaA,EAAM,MAAM,cAAc,cAAcA,EAAM,MAAM,cAAA,IAAiB;AAAA,gBAAA,CACzG,IACDQ,KAAAC,IAAAjB,EAAa,YAAb,gBAAAiB,EAAsB,gBAAtB,QAAAD,EAAA,KAAAC;AACA;AAAA,cACF;AACE;AAAA,YAAA;AAAA,QAGR,SAASC,GAAK;AACZ,UAAMA,aAAe,gBAAgBA,EAAI,SAAS,gBAChDvB,EAAS;AAAA,YACP,MAAM;AAAA,YACN,SAASuB,aAAe,QAAQA,EAAI,UAAU;AAAA,UAAA,CAC/C;AAAA,QAEL,UAAA;AACE,UAAAnB,EAAmB,UAAU,MACzB,CAACM,KAAgB,CAACD,EAAW,OAAO,YACtCT,EAAS,EAAE,MAAM,eAAe,IAChCwB,KAAAC,IAAApB,EAAa,YAAb,gBAAAoB,EAAsB,gBAAtB,QAAAD,EAAA,KAAAC;AAAA,QAEJ;AAAA,MACF,GAEK;AAAA,IACP;AAAA,IACA,CAAC9D,GAAQY,EAAM,WAAW;AAAA,EAAA,GAGtBmD,IAAOnB,EAAY,MAAM;AAC7B,IAAIH,EAAmB,YACrBA,EAAmB,QAAQ,MAAA,GAC3BA,EAAmB,UAAU,OAE/BJ,EAAS,EAAE,MAAM,eAAe;AAAA,EAClC,GAAG,CAAA,CAAE,GAEC2B,IAAQpB,EAAY,MAAM;AAC9B,IAAIH,EAAmB,YACrBA,EAAmB,QAAQ,MAAA,GAC3BA,EAAmB,UAAU,OAE/BJ,EAAS,EAAE,MAAM,SAAS;AAAA,EAC5B,GAAG,CAAA,CAAE,GAEC4B,IAAwBrB;AAAA,IAC5B,CAACsB,GAAuBC,MAAsB;AAC5C,MAAA9B,EAAS,EAAE,MAAM,0BAA0B,eAAA6B,GAAe,UAAAC,GAAU;AAGpE,YAAMC,IAAeD,IACjB,sCAAsCD,CAAa,MACnD,mCAAmCA,CAAa;AAGpD,MAAKtD,EAAM,eACT+B,EAAKyB,CAAY;AAAA,IAErB;AAAA,IACA,CAACzB,GAAM/B,EAAM,WAAW;AAAA,EAAA;AAI1B,SAAAyD;AAAA,IACE,MAAM,MAAM;AACV,MAAI5B,EAAmB,WACrBA,EAAmB,QAAQ,MAAA;AAAA,IAE/B;AAAA,IACA,CAAA;AAAA,EAAC,GAGI;AAAA,IACL,UAAU7B,EAAM;AAAA,IAChB,MAAA+B;AAAA,IACA,MAAAoB;AAAA,IACA,aAAanD,EAAM;AAAA,IACnB,iBAAiBA,EAAM;AAAA,IACvB,WAAWA,EAAM;AAAA,IACjB,OAAOA,EAAM;AAAA,IACb,OAAOA,EAAM;AAAA,IACb,OAAAoD;AAAA,IACA,uBAAAC;AAAA,EAAA;AAEJ;ACncA;AAAA;AAAA;AAAA;AAAA;AAiBO,SAASK,EAAY,EAAE,cAAAf,GAAc,WAAAgB,GAAW,QAAAC,KAA4B;AACjF,QAAMC,IAAYlB,EAAa,WAAW;AAE1C,SACE,gBAAAmB,EAAC,OAAA,EAAI,WAAU,uBAAsB,eAAY,gBAC/C,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA;AAAA,MAAA,gBAAAtE,EAAC,QAAA,EAAK,WAAU,+BAA+B,UAAAmD,EAAa,QAAO;AAAA,MACnE,gBAAAnD,EAAC,QAAA,EAAK,WAAU,iCAAiC,YAAa,SAAA,CAAS;AAAA,IAAA,GACzE;AAAA,IACA,gBAAAA,EAAC,KAAA,EAAE,WAAU,+BAA+B,YAAa,QAAO;AAAA,IAC/DqE,IACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,gCACb,UAAA;AAAA,MAAA,gBAAAtE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAASmE;AAAA,UACT,eAAY;AAAA,UACb,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,gBAAAnE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAASoE;AAAA,UACT,eAAY;AAAA,UACb,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,EAAA,CACF,IAEA,gBAAApE,EAAC,OAAA,EAAI,WAAU,+BAA8B,eAAY,kBACtD,UAAAmD,EAAa,WAAW,aAAa,aAAa,SAAA,CACrD;AAAA,EAAA,GAEJ;AAEJ;ACnDA;AAAA;AAAA;AAAA;AAAA;AAiBO,SAASoB,EAAW,EAAE,cAAApB,GAAc,WAAAgB,GAAW,QAAAC,KAA2B;AAC/E,QAAMC,IAAYlB,EAAa,WAAW;AAE1C,SACE,gBAAAmB,EAAC,OAAA,EAAI,WAAU,sBAAqB,eAAY,eAC9C,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,8BACb,UAAA;AAAA,MAAA,gBAAAtE,EAAC,QAAA,EAAK,WAAU,8BAA8B,UAAAmD,EAAa,QAAO;AAAA,MAClE,gBAAAnD,EAAC,QAAA,EAAK,WAAU,gCAAgC,YAAa,UAAS;AAAA,MACrEmD,EAAa,aACZ,gBAAAnD,EAAC,QAAA,EAAK,WAAU,6BAA4B,eAAY,oBAAmB,UAAA,YAAA,CAE3E;AAAA,IAAA,GAEJ;AAAA,IACCmD,EAAa,kBACZ,gBAAAmB,EAAC,OAAA,EAAI,WAAU,kCAAiC,UAAA;AAAA,MAAA;AAAA,MACjCnB,EAAa;AAAA,IAAA,GAC5B;AAAA,IAEF,gBAAAnD,EAAC,KAAA,EAAE,WAAU,8BAA8B,YAAa,QAAO;AAAA,IAC9DmD,EAAa,UAAU,OAAO,KAAKA,EAAa,MAAM,EAAE,SAAS,KAChE,gBAAAmB,EAAC,OAAA,EAAI,WAAU,8BAA6B,eAAY,iBACtD,UAAA;AAAA,MAAA,gBAAAtE,EAAC,OAAA,EAAI,WAAU,oCAAmC,UAAA,cAAU;AAAA,MAC5D,gBAAAA,EAAC,OAAA,EAAI,WAAU,mCACZ,UAAA,KAAK,UAAUmD,EAAa,QAAQ,MAAM,CAAC,EAAA,CAC9C;AAAA,IAAA,GACF;AAAA,IAEDkB,IACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA;AAAA,MAAA,gBAAAtE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAASmE;AAAA,UACT,eAAY;AAAA,UACb,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAGD,gBAAAnE;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,SAASoE;AAAA,UACT,eAAY;AAAA,UACb,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,EAAA,CACF,IAEA,gBAAApE,EAAC,OAAA,EAAI,WAAU,8BAA6B,eAAY,iBACrD,UAAAmD,EAAa,WAAW,aAAa,aAAa,SAAA,CACrD;AAAA,EAAA,GAEJ;AAEJ;ACvCO,SAASqB,GAAW;AAAA,EACzB,aAAAC,IAAc;AAAA,EACd,YAAAC;AAAA,EACA,gBAAAC;AAAA,EACA,oBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,GAAGC;AACL,GAAoB;AAClB,QAAM,EAAE,UAAAC,GAAU,MAAAxC,GAAM,aAAAyC,GAAa,uBAAAnB,EAAA,IAA0B9B,EAAc+C,CAAW,GAClF,CAACG,GAAOC,CAAQ,IAAIC,EAAS,EAAE,GAC/BC,IAAiBhD,EAAuB,IAAI,GAE5CiD,IAAe7C;AAAA,IACnB,CAAC8C,MAAiB;AAChB,MAAAA,EAAE,eAAA;AACF,YAAMC,IAAUN,EAAM,KAAA;AACtB,MAAIM,EAAQ,WAAW,KAAKP,MAC5BE,EAAS,EAAE,GACX3C,EAAKgD,CAAO;AAAA,IACd;AAAA,IACA,CAACN,GAAOD,GAAazC,CAAI;AAAA,EAAA,GAGrBiD,IAAY,CAAC,eAAeX,CAAS,EAAE,OAAO,OAAO,EAAE,KAAK,GAAG;AAErE,SACE,gBAAAP,EAAC,OAAA,EAAI,WAAWkB,GAAW,eAAY,eACrC,UAAA;AAAA,IAAA,gBAAAlB,EAAC,OAAA,EAAI,WAAU,yBAAwB,eAAY,gBAChD,UAAA;AAAA,MAAAS,EAAS,IAAI,CAACU,MAAQ;AACrB,gBAAQA,EAAI,MAAA;AAAA,UACV,KAAK;AACH,mBACE,gBAAAzF,EAAC,SAAiB,WAAU,mDAAkD,eAAY,gBACvF,UAAAyF,EAAI,QADGA,EAAI,EAEd;AAAA,UAEJ,KAAK;AACH,mBACE,gBAAAzF,EAAC,OAAA,EAAiB,WAAU,wDAAuD,eAAY,qBAC5F,UAAAyF,EAAI,cAAc,IAAI,CAACpE,GAAOqE,MAAM;AACnC,sBAAQrE,EAAM,MAAA;AAAA,gBACZ,KAAK;AACH,yBACE,gBAAArB,EAAC,OAAA,EAA8B,WAAU,qBACtC,cAAa0E,EAAWrD,EAAM,IAAI,IAAIA,EAAM,QADrC,QAAQ,OAAOqE,CAAC,CAAC,EAE3B;AAAA,gBAEJ,KAAK;AACH,yBACE,gBAAA1F,EAAC,OAAA,EAA+B,WAAU,2BACvC,YAAM,MAAM;AAAA,oBAAI,CAAC2F,MAChBhB,IACE,gBAAA3E,EAAC,OAAA,EAAuB,YAAe2F,CAAI,EAAA,GAAjCA,EAAK,MAA8B,IAE7C,gBAAArB,EAAC,OAAA,EAAsB,WAAU,0BAAyB,eAAY,aACpE,UAAA;AAAA,sBAAA,gBAAAtE,EAAC,QAAA,EAAK,WAAU,0BAA0B,UAAA2F,EAAK,UAAS;AAAA,sBACxD,gBAAA3F,EAAC,QAAA,EAAK,WAAU,4BAA4B,YAAK,OAAA,CAAO;AAAA,oBAAA,EAAA,GAFhD2F,EAAK,MAGf;AAAA,kBAAA,EAEJ,GAVQ,SAAS,OAAOD,CAAC,CAAC,EAW5B;AAAA,gBAEJ,KAAK,gBAAgB;AACnB,wBAAME,IAAOvE,EAAM,cACbwE,IAAgB,MAAM;AAC1B,oBAAID,EAAK,iBACP/B,EAAsB+B,EAAK,eAAe,EAAI;AAAA,kBAElD,GACME,IAAa,MAAM;AACvB,oBAAIF,EAAK,iBACP/B,EAAsB+B,EAAK,eAAe,EAAK;AAAA,kBAEnD;AACA,yBAAIhB,IACK,gBAAA5E,EAAC,OAAA,EAA+B,UAAA4E,EAAmBgB,GAAMC,GAAeC,CAAU,EAAA,GAAxE,QAAQ,OAAOJ,CAAC,CAAC,EAAyD,IAEzFE,EAAK,aAAcA,EAAK,UAAU,OAAO,KAAKA,EAAK,MAAM,EAAE,SAAS,IAC/D,gBAAA5F,EAACuE,GAAA,EAAqC,cAAcqB,GAAM,WAAWC,GAAe,QAAQC,EAAA,GAA3E,QAAQ,OAAOJ,CAAC,CAAC,EAAsE,IAE1G,gBAAA1F,EAACkE,GAAA,EAAsC,cAAc0B,GAAM,WAAWC,GAAe,QAAQC,EAAA,GAA3E,QAAQ,OAAOJ,CAAC,CAAC,EAAsE;AAAA,gBAClH;AAAA,gBACA,KAAK;AACH,yBACE,gBAAA1F,EAAC,OAAA,EAAgC,WAAU,uBAAsB,eAAY,UAC1E,UAAAqB,EAAM,WAAA,GADC,UAAU,OAAOqE,CAAC,CAAC,EAE7B;AAAA,gBAEJ;AACE,yBAAO;AAAA,cAAA;AAAA,YAEb,CAAC,EAAA,GArDOD,EAAI,EAsDd;AAAA,UAEJ,KAAK;AACH,mBACE,gBAAAzF,EAAC,SAAiB,WAAU,oDAAmD,eAAY,iBACxF,UAAAyF,EAAI,WADGA,EAAI,EAEd;AAAA,UAEJ;AACE,mBAAO;AAAA,QAAA;AAAA,MAEb,CAAC;AAAA,MACD,gBAAAzF,EAAC,OAAA,EAAI,KAAKoF,EAAA,CAAgB;AAAA,IAAA,GAC5B;AAAA,sBACC,QAAA,EAAK,WAAU,0BAAyB,UAAUC,GAAc,eAAY,aAC3E,UAAA;AAAA,MAAA,gBAAArF;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,OAAOiF;AAAA,UACP,UAAU,CAACK,MAAMJ,EAASI,EAAE,OAAO,KAAK;AAAA,UACxC,aAAAb;AAAA,UACA,UAAUO;AAAA,UACV,eAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,gBAAAhF;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,WAAU;AAAA,UACV,MAAK;AAAA,UACL,UAAUgF,KAAeC,EAAM,KAAA,EAAO,WAAW;AAAA,UACjD,eAAY;AAAA,UACb,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAED,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;AChIO,SAASc,GAAa,EAAE,QAAAC,GAAQ,OAAAC,GAAO,SAAAC,GAAS,YAAAC,GAAY,SAAAC,KAA8B;AAC/F,QAAM,CAACC,GAAWC,CAAY,IAAInB,EAAS,EAAK,GAE1C,EAAE,UAAAJ,GAAU,MAAAxC,GAAM,aAAAyC,GAAa,uBAAAnB,EAAA,IAA0B9B,EAAc;AAAA,IAC3E,SAAAmE;AAAA,IACA,aAAa,MAAM;AACjB,YAAMxE,IAAUqD,EAASA,EAAS,SAAS,CAAC;AAC5C,MAAIrD,KAAWA,EAAQ,SAAS,mBAC9ByE,KAAA,QAAAA,EAAazE,EAAQ,QACZA,KAAWA,EAAQ,SAAS,YACrC0E,KAAA,QAAAA,EAAU1E,EAAQ;AAAA,IAEtB;AAAA,EAAA,CACD,GAEK6E,IAAU/D,EAAY,MAAM;AAChC,IAAI6D,KAAarB,MACjBsB,EAAa,EAAI,GACjB/D,EAAKyD,CAAM;AAAA,EACb,GAAG,CAACK,GAAWrB,GAAazC,GAAMyD,CAAM,CAAC,GAEnCQ,IAAgB,CAAC,GAAGzB,CAAQ,EAAE,QAAA,EAAU,KAAK,CAAC0B,MAAMA,EAAE,SAAS,gBAAgB,GAC/EC,IACJF,KAAiBA,EAAc,SAAS,mBACpCA,EAAc,cAAc,OAAO,CAACG,MAAMA,EAAE,WAAW,SAAS,IAChE,CAAA,GAEA/B,IAAqB,CAACzB,GAAgCyD,MAAkB;AAC5E,UAAMf,IAAgB,MAAM;AAC1B,MAAI1C,EAAa,iBACfU,EAAsBV,EAAa,eAAe,EAAI;AAAA,IAE1D,GACM2C,IAAa,MAAM;AACvB,MAAI3C,EAAa,iBACfU,EAAsBV,EAAa,eAAe,EAAK;AAAA,IAE3D;AAEA,WAAIA,EAAa,aAAcA,EAAa,UAAU,OAAO,KAAKA,EAAa,MAAM,EAAE,SAAS,IAE5F,gBAAAnD;AAAA,MAACuE;AAAA,MAAA;AAAA,QAEC,cAAApB;AAAA,QACA,WAAW0C;AAAA,QACX,QAAQC;AAAA,MAAA;AAAA,MAHH3C,EAAa,iBAAiB,OAAOyD,CAAK;AAAA,IAAA,IASnD,gBAAA5G;AAAA,MAACkE;AAAA,MAAA;AAAA,QAEC,cAAAf;AAAA,QACA,WAAW0C;AAAA,QACX,QAAQC;AAAA,MAAA;AAAA,MAHH3C,EAAa,iBAAiB,OAAOyD,CAAK;AAAA,IAAA;AAAA,EAMrD;AAEA,SAAKP,IAaH,gBAAA/B,EAAC,OAAA,EAAI,WAAU,iBAAgB,eAAY,oBACxC,UAAA;AAAA,IAAAU,uBACE,OAAA,EAAI,WAAU,0BAAyB,eAAY,kBAAiB,UAAA,iBAErE;AAAA,IAEDwB,KAAiBA,EAAc,SAAS,oBAAoBA,EAAc,QACzE,gBAAAxG,EAAC,OAAA,EAAI,WAAU,yBAAwB,eAAY,iBAChD,YAAc,MACjB;AAAA,IAED0G,EAAqB,IAAI9B,CAAkB;AAAA,EAAA,GAC9C,IAvBE,gBAAA5E;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,SAASuG;AAAA,MACT,eAAY;AAAA,MAEX,UAAAN,KAAS;AAAA,IAAA;AAAA,EAAA;AAoBlB;ACnHA;AAAA;AAAA;AAAA;AAAA;AA6BO,SAASY,GAAe7E,GAAsD;AACnF,QAAM,EAAE,QAAAgE,GAAQ,SAAAE,GAAS,WAAAY,IAAY,OAAS9E,GACxC,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAAC8G,GAAOC,CAAQ,IAAI7B,EAA6B,IAAI,GACrD,CAAC8B,GAAWC,CAAY,IAAI/B,EAAS,EAAK,GAC1C,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI,GAC9CkF,IAAalF,EAAO,EAAK,GAEzBmF,IAAa/E,EAAY,YAAY;AACzC,IAAI6E,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,UAAM3E,IAAa,IAAI,gBAAA;AACvB,IAAA2E,EAAS,UAAU3E,GAEnBwE,EAAa,EAAI,GACjBE,EAAS,IAAI;AAEb,QAAI;AACF,UAAI3E,IAAO;AACX,YAAM+E,IAA4B,CAAA;AAElC,uBAAiB1E,KAASlD,EAAO,WAAWoG,GAAQ,EAAE,SAAAE,GAAS,QAAQxD,EAAW,OAAA,CAAQ;AACxF,gBAAQI,EAAM,MAAA;AAAA,UACZ,KAAK;AACH,YAAAL,KAAQK,EAAM;AACd;AAAA,UACF,KAAK;AACH,YAAA0E,EAAU,KAAK;AAAA,cACb,QAAQ1E,EAAM;AAAA,cACd,UAAUA,EAAM;AAAA,cAChB,YAAYA,EAAM;AAAA,cAClB,QAAQ;AAAA,YAAA,CACT;AACD;AAAA,UACF,KAAK,oBAAoB;AACvB,kBAAM3B,IAAKqG,EAAU,KAAK,CAACC,MAAMA,EAAE,WAAW3E,EAAM,OAAO;AAC3D,YAAI3B,MACFA,EAAG,SAAS2B,EAAM,QAClB3B,EAAG,SAAS2B,EAAM,QAClB3B,EAAG,cAAc2B,EAAM,aACvB3B,EAAG,QAAQ2B,EAAM;AAEnB;AAAA,UACF;AAAA,UACA,KAAK;AACH,YAAAsE,EAAStE,EAAM,OAAO;AACtB;AAAA,UACF;AACE;AAAA,QAAA;AAIN,MAAAkE,EAAS,EAAE,MAAAvE,GAAM,WAAA+E,GAAW;AAAA,IAC9B,SAAShE,GAAK;AACZ,MAAMA,aAAe,gBAAgBA,EAAI,SAAS,gBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,eAAe;AAAA,IAEjE,UAAA;AACE,MAAA0D,EAAa,EAAK,GAClBG,EAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAACzH,GAAQoG,GAAQE,CAAO,CAAC,GAEtBwB,IAAUlF,EAAY,MAAM;AAChC,IAAK+E,EAAA;AAAA,EACP,GAAG,CAACA,CAAU,CAAC;AAEf,SAAAtD,EAAU,OACJ6C,KAAa,CAACQ,EAAW,YAC3BA,EAAW,UAAU,IAChBC,EAAA,IAGA,MAAM;AACX,IAAIF,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,IACC,CAACP,GAAWS,CAAU,CAAC,GAEnB,EAAE,OAAAR,GAAO,WAAAE,GAAW,OAAAE,GAAO,SAAAO,EAAA;AACpC;ACjHA;AAAA;AAAA;AAAA;AAAA;AAgCO,SAASC,GAAiB3F,GAA0D;AACzF,QAAM,EAAE,QAAAgE,GAAQ,SAAAE,GAAS,WAAAY,IAAY,OAAS9E,GACxC,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAAC2H,GAAQC,CAAS,IAAI1C,EAAkC,MAAM,GAC9D,CAAC2C,GAASC,CAAU,IAAI5C,EAAS,EAAE,GACnC,CAAC6C,GAASC,CAAU,IAAI9C,EAAS,EAAE,GACnC,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI,GAC9CkF,IAAalF,EAAO,EAAK,GAEzB8F,IAAe1F,EAAY,YAAY;AAC3C,IAAI6E,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,UAAM3E,IAAa,IAAI,gBAAA;AACvB,IAAA2E,EAAS,UAAU3E,GAEnBmF,EAAU,SAAS,GACnBT,EAAS,IAAI,GACbW,EAAW,EAAE,GACbE,EAAW,EAAE;AAEb,QAAI;AACF,UAAIxF,IAAO;AAEX,uBAAiBK,KAASlD,EAAO,WAAWoG,GAAQ,EAAE,SAAAE,GAAS,QAAQxD,EAAW,OAAA,CAAQ;AACxF,gBAAQI,EAAM,MAAA;AAAA,UACZ,KAAK;AACH,YAAAL,KAAQK,EAAM;AACd;AAAA,UACF,KAAK;AACH,YAAAsE,EAAStE,EAAM,OAAO,GACtB+E,EAAU,OAAO;AACjB;AAAA,UACF;AACE;AAAA,QAAA;AAKN,YAAMM,IAAa1F,EAAK,QAAQ;AAAA;AAAA,CAAM;AACtC,MAAI0F,KAAc,KAChBJ,EAAWtF,EAAK,MAAM,GAAG0F,CAAU,EAAE,MAAM,GAC3CF,EAAWxF,EAAK,MAAM0F,IAAa,CAAC,EAAE,MAAM,KAE5CJ,EAAWtF,EAAK,MAAM,GAExBoF,EAAU,MAAM;AAAA,IAClB,SAASrE,GAAK;AACZ,MAAMA,aAAe,gBAAgBA,EAAI,SAAS,iBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,eAAe,GAC7DqE,EAAU,OAAO;AAAA,IAErB,UAAA;AACE,MAAAR,EAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAACzH,GAAQoG,GAAQE,CAAO,CAAC,GAEtBwB,IAAUlF,EAAY,MAAM;AAChC,IAAK0F,EAAA;AAAA,EACP,GAAG,CAACA,CAAY,CAAC;AAEjB,SAAAjE,EAAU,OACJ6C,KAAa,CAACQ,EAAW,YAC3BA,EAAW,UAAU,IAChBY,EAAA,IAGA,MAAM;AACX,IAAIb,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,IACC,CAACP,GAAWoB,CAAY,CAAC,GAErB,EAAE,QAAAN,GAAQ,SAAAE,GAAS,SAAAE,GAAS,WAAWJ,MAAW,WAAW,OAAAT,GAAO,SAAAO,EAAA;AAC7E;AC7GA;AAAA;AAAA;AAAA;AAAA;AA8BO,SAASU,GAAcpG,GAAoD;AAChF,QAAM,EAAE,QAAAqG,GAAQ,YAAAC,IAAa,GAAA,IAAStG,GAChC,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAAC2H,GAAQC,CAAS,IAAI1C,EAAmC,MAAM,GAC/D,CAACoD,GAAUC,CAAW,IAAIrD,EAAS,EAAE,GACrC,CAACsD,GAAQC,CAAS,IAAIvD,EAAS,EAAE,GACjC,CAACwD,GAAQC,CAAS,IAAIzD,EAAqB,CAAA,CAAE,GAC7C,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI,GAC9CyG,IAAazG,EAAO,EAAK,GAEzB0G,IAAQtG,EAAY,YAAY;AACpC,IAAI6E,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,UAAM3E,IAAa,IAAI,gBAAA;AACvB,IAAA2E,EAAS,UAAU3E,GAEnBmF,EAAU,SAAS,GACnBT,EAAS,IAAI,GACbwB,EAAU,CAAA,CAAE,GACZF,EAAU,EAAE,GACZF,EAAY,EAAE;AAEd,QAAI;AACF,UAAI/F,IAAO;AAEX,uBAAiBK,KAASlD,EAAO,WAAWyI,GAAQ3F,EAAW,MAAM;AAGnE,gBAFAkG,EAAU,CAACG,MAAS,CAAC,GAAGA,GAAMjG,CAAK,CAAC,GAE5BA,EAAM,MAAA;AAAA,UACZ,KAAK;AACH,YAAAL,KAAQK,EAAM,SACd4F,EAAUjG,CAAI;AACd;AAAA,UACF,KAAK;AACH,YAAA+F,EAAY,WAAW1F,EAAM,SAAS,KAAK;AAC3C;AAAA,UACF,KAAK;AACH,YAAA0F,EAAY,EAAE;AACd;AAAA,UACF,KAAK;AACH,YAAApB,EAAStE,EAAM,OAAO,GACtB+E,EAAU,OAAO;AACjB;AAAA,UACF,KAAK;AACH,YAAAA,EAAU,WAAW;AACrB;AAAA,UACF;AACE;AAAA,QAAA;AAKN,MAAID,MAAW,aACbC,EAAU,WAAW;AAAA,IAEzB,SAASrE,GAAK;AACZ,MAAMA,aAAe,gBAAgBA,EAAI,SAAS,iBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,eAAe,GAC7DqE,EAAU,OAAO;AAAA,IAErB,UAAA;AACE,MAAAR,EAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAACzH,GAAQyI,GAAQT,CAAM,CAAC,GAErBjE,IAAOnB,EAAY,MAAM;AAC7B,IAAI6E,EAAS,YACXA,EAAS,QAAQ,MAAA,GACjBA,EAAS,UAAU;AAAA,EAEvB,GAAG,CAAA,CAAE,GAEC2B,IAAW5G,EAAO0G,CAAK;AAC7B,SAAAE,EAAS,UAAUF,GAEnB7E,EAAU,OACJqE,KAAc,CAACO,EAAW,YAC5BA,EAAW,UAAU,IAChBG,EAAS,QAAA,IAGT,MAAM;AACX,IAAI3B,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,IACC,CAACiB,CAAU,CAAC,GAER;AAAA,IACL,QAAAV;AAAA,IACA,UAAAW;AAAA,IACA,QAAAE;AAAA,IACA,QAAAE;AAAA,IACA,OAAAxB;AAAA,IACA,OAAO,MAAM,KAAK2B,EAAA;AAAA,IAClB,MAAAnF;AAAA,EAAA;AAEJ;AClIA;AAAA;AAAA;AAAA;AAAA;AA0BO,SAASsF,GAAejH,GAAsD;AACnF,QAAM,EAAE,QAAAgE,GAAQ,SAAAE,GAAS,WAAAY,IAAY,OAAS9E,GACxC,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAACiJ,GAAMC,CAAO,IAAIhE,EAAwB,IAAI,GAC9C,CAAC8B,GAAWC,CAAY,IAAI/B,EAAS,EAAK,GAC1C,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI,GAC9CkF,IAAalF,EAAO,EAAK,GAEzBgH,IAAa5G,EAAY,YAAY;AACzC,IAAI6E,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,UAAM3E,IAAa,IAAI,gBAAA;AACvB,IAAA2E,EAAS,UAAU3E,GAEnBwE,EAAa,EAAI,GACjBE,EAAS,IAAI;AAEb,QAAI;AACF,UAAI3E,IAAO;AAEX,uBAAiBK,KAASlD,EAAO,WAAWoG,GAAQ,EAAE,SAAAE,GAAS,QAAQxD,EAAW,OAAA,CAAQ;AACxF,gBAAQI,EAAM,MAAA;AAAA,UACZ,KAAK;AACH,YAAAL,KAAQK,EAAM;AACd;AAAA,UACF,KAAK;AACH,YAAAsE,EAAStE,EAAM,OAAO;AACtB;AAAA,UACF;AACE;AAAA,QAAA;AAIN,MAAAqG,EAAQ1G,CAAI;AAAA,IACd,SAASe,GAAK;AACZ,MAAMA,aAAe,gBAAgBA,EAAI,SAAS,gBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,eAAe;AAAA,IAEjE,UAAA;AACE,MAAA0D,EAAa,EAAK,GAClBG,EAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAACzH,GAAQoG,GAAQE,CAAO,CAAC,GAEtBmD,IAAU7G,EAAY,MAAM;AAChC,IAAK4G,EAAA;AAAA,EACP,GAAG,CAACA,CAAU,CAAC;AAEf,SAAAnF,EAAU,OACJ6C,KAAa,CAACQ,EAAW,YAC3BA,EAAW,UAAU,IAChB8B,EAAA,IAGA,MAAM;AACX,IAAI/B,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,IACC,CAACP,GAAWsC,CAAU,CAAC,GAEnB,EAAE,MAAAF,GAAM,WAAAjC,GAAW,OAAAE,GAAO,SAAAkC,EAAA;AACnC;AC3FA;AAAA;AAAA;AAAA;AAAA;AA6CO,SAASC,GAASC,GAAmBvH,GAA0C;AACpF,QAAM,EAAE,KAAAwH,GAAK,iBAAAC,IAAkB,IAAA,IAAUzH,GACnC,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAACyJ,GAAUC,CAAW,IAAIxE,EAA+B,IAAI,GAC7D,CAACyE,GAASC,CAAU,IAAI1E,EAA0B,CAAA,CAAE,GACpD,CAAC8B,GAAWC,CAAY,IAAI/B,EAAS,EAAI,GACzC,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI,GAE9C0H,IAAgBtH,EAAY,YAAY;AAC5C,IAAI6E,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,UAAM3E,IAAa,IAAI,gBAAA;AACvB,IAAA2E,EAAS,UAAU3E;AAEnB,QAAI;AACF,YAAM+F,IAAS,MAAM7I,EAAO,iBAAiB2J,GAAWC,GAAK9G,EAAW,MAAM;AAC9E,MAAAiH,EAAYlB,EAAO,QAAQ,GAC3BoB,EAAWpB,EAAO,OAAO,GACzBrB,EAAS,IAAI;AAAA,IACf,SAAS5D,GAAK;AACZ,MAAMA,aAAe,gBAAgBA,EAAI,SAAS,gBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,0BAA0B;AAAA,IAE5E,UAAA;AACE,MAAA0D,EAAa,EAAK,GAClBG,EAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAACzH,GAAQ2J,GAAWC,CAAG,CAAC,GAErBH,IAAU7G,EAAY,MAAM;AAChC,IAAKsH,EAAA;AAAA,EACP,GAAG,CAACA,CAAa,CAAC;AAGlB,SAAA7F,EAAU,OACRiD,EAAa,EAAI,GACZ4C,EAAA,GAEE,MAAM;AACX,IAAIzC,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,IACC,CAACyC,CAAa,CAAC,GAGlB7F,EAAU,MAAM;AACd,QAAIwF,KAAmB,EAAG;AAE1B,UAAMM,IAAQ,YAAY,MAAM;AAC9B,MAAKD,EAAA;AAAA,IACP,GAAGL,CAAe;AAElB,WAAO,MAAM,cAAcM,CAAK;AAAA,EAClC,GAAG,CAACD,GAAeL,CAAe,CAAC,GAE5B;AAAA,IACL,OAAMC,KAAA,gBAAAA,EAAU,YAAW;AAAA,IAC3B,OAAMA,KAAA,gBAAAA,EAAU,SAAQ;AAAA,IACxB,UAAAA;AAAA,IACA,SAAAE;AAAA,IACA,WAAA3C;AAAA,IACA,OAAAE;AAAA,IACA,SAAAkC;AAAA,EAAA;AAEJ;ACjHA;AAAA;AAAA;AAAA;AAAA;AAkDO,SAASW,GAAaT,GAAmBvH,IAA+B,IAAwB;AACrG,QAAM,EAAE,QAAAiI,GAAQ,MAAAC,GAAM,OAAAC,IAAQ,IAAI,iBAAAV,IAAkB,QAAUzH,GACxD,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAACmK,GAAWC,CAAY,IAAIlF,EAA0B,CAAA,CAAE,GACxD,CAACmF,GAAOC,CAAQ,IAAIpF,EAAS,CAAC,GAC9B,CAACqF,GAASC,CAAU,IAAItF,EAAS,EAAK,GACtC,CAAC8B,GAAWC,CAAY,IAAI/B,EAAS,EAAI,GACzC,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI,GAG9CsI,IAAYT,IAAS,KAAK,UAAUA,CAAM,IAAI,IAE9CU,IAAYnI,EAAY,YAAY;AACxC,IAAI6E,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,UAAM3E,IAAa,IAAI,gBAAA;AACvB,IAAA2E,EAAS,UAAU3E;AAEnB,QAAI;AACF,YAAM+F,IAAS,MAAM7I,EAAO,kBAAkB2J,GAAW;AAAA,QACvD,QAAQmB,IAAY,KAAK,MAAMA,CAAS,IAAI;AAAA,QAC5C,MAAAR;AAAA,QACA,OAAAC;AAAA,QACA,QAAQzH,EAAW;AAAA,MAAA,CACpB;AACD,MAAA2H,EAAa5B,EAAO,SAAS,GAC7B8B,EAAS9B,EAAO,KAAK,GACrBgC,EAAWhC,EAAO,OAAO,GACzBrB,EAAS,IAAI;AAAA,IACf,SAAS5D,GAAK;AACZ,MAAMA,aAAe,gBAAgBA,EAAI,SAAS,gBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,4BAA4B;AAAA,IAE9E,UAAA;AACE,MAAA0D,EAAa,EAAK,GAClBG,EAAS,UAAU;AAAA,IACrB;AAAA,EACF,GAAG,CAACzH,GAAQ2J,GAAWmB,GAAWR,GAAMC,CAAK,CAAC,GAExCd,IAAU7G,EAAY,MAAM;AAChC,IAAKmI,EAAA;AAAA,EACP,GAAG,CAACA,CAAS,CAAC;AAGd,SAAA1G,EAAU,OACRiD,EAAa,EAAI,GACZyD,EAAA,GAEE,MAAM;AACX,IAAItD,EAAS,WACXA,EAAS,QAAQ,MAAA;AAAA,EAErB,IACC,CAACsD,CAAS,CAAC,GAGd1G,EAAU,MAAM;AACd,QAAIwF,KAAmB,EAAG;AAE1B,UAAMM,IAAQ,YAAY,MAAM;AAC9B,MAAKY,EAAA;AAAA,IACP,GAAGlB,CAAe;AAElB,WAAO,MAAM,cAAcM,CAAK;AAAA,EAClC,GAAG,CAACY,GAAWlB,CAAe,CAAC,GAExB;AAAA,IACL,MAAMW,EAAU,IAAI,CAACQ,MAAMA,EAAE,OAAO;AAAA,IACpC,WAAAR;AAAA,IACA,OAAAE;AAAA,IACA,SAAAE;AAAA,IACA,WAAAvD;AAAA,IACA,OAAAE;AAAA,IACA,SAAAkC;AAAA,EAAA;AAEJ;AChIA;AAAA;AAAA;AAAA;AAAA;AA4CO,SAASwB,GACdC,GACA9I,IAAiC,IACX;AACtB,QAAM,EAAE,QAAApC,EAAA,IAAWK,EAAA,GACb,CAAC8K,GAASC,CAAU,IAAI7F,EAAS,EAAK,GACtC,CAACsD,GAAQC,CAAS,IAAIvD,EAAwB,IAAI,GAClD,CAACgC,GAAOC,CAAQ,IAAIjC,EAAwB,IAAI,GAChDkC,IAAWjF,EAA+B,IAAI;AAwDpD,SAAO,EAAE,SAtDOI;AAAA,IACd,CAACyI,MAAqC;AACpC,MAAI5D,EAAS,WACXA,EAAS,QAAQ,MAAA;AAGnB,YAAM3E,IAAa,IAAI,gBAAA;AACvB,MAAA2E,EAAS,UAAU3E,GAEnBsI,EAAW,EAAI,GACftC,EAAU,IAAI,GACdtB,EAAS,IAAI;AAGb,UAAIpB,IAAS,cAAc8E,CAAS;AACpC,MAAIG,KAAU,OAAO,KAAKA,CAAM,EAAE,SAAS,MACzCjF,KAAU,qBAAqB,KAAK,UAAUiF,CAAM,CAAC,KAEnDjJ,EAAQ,UAAUA,EAAQ,OAAO,SAAS,MAC5CgE,KAAU,8BAA8BhE,EAAQ,OAAO,KAAK,IAAI,CAAC,KAE/DA,EAAQ,YACVgE,KAAU,+BAGN,YAAY;AAChB,YAAI;AACF,cAAIvD,IAAO;AACX,2BAAiBK,KAASlD,EAAO,WAAWoG,GAAQ,EAAE,QAAQtD,EAAW,OAAA,CAAQ;AAC/E,oBAAQI,EAAM,MAAA;AAAA,cACZ,KAAK;AACH,gBAAAL,KAAQK,EAAM;AACd;AAAA,cACF,KAAK;AACH,gBAAAsE,EAAStE,EAAM,OAAO;AACtB;AAAA,cACF;AACE;AAAA,YAAA;AAGN,UAAA4F,EAAUjG,CAAI;AAAA,QAChB,SAASe,GAAK;AACZ,UAAMA,aAAe,gBAAgBA,EAAI,SAAS,gBAChD4D,EAAS5D,aAAe,QAAQA,EAAI,UAAU,wBAAwB;AAAA,QAE1E,UAAA;AACE,UAAAwH,EAAW,EAAK,GAChB3D,EAAS,UAAU;AAAA,QACrB;AAAA,MACF,GAAA;AAAA,IACF;AAAA,IACA,CAACzH,GAAQkL,GAAW9I,EAAQ,QAAQA,EAAQ,OAAO;AAAA,EAAA,GAGnC,SAAA+I,GAAS,QAAAtC,GAAQ,OAAAtB,EAAA;AACrC;AC7GA;AAAA;AAAA;AAAA;AAAA;AAoBO,MAAM+D,IAAkB5L,EAAiC,IAAI;AAe7D,SAAS6L,KAA0B;AACxC,QAAMC,IAAajL,EAAW+K,CAAe,GAEvCG,IAAe7I,EAAY,CAAC8I,GAAmBC,MAAqC;AAAA,EAE1F,GAAG,CAAA,CAAE;AAEL,SAAOH,KAAcC;AACvB;"}
1
+ {"version":3,"file":"react.js","sources":["../src/provider.tsx","../src/hooks/useAmodalChat.ts","../src/components/ConfirmCard.tsx","../src/components/ReviewCard.tsx","../src/chat.tsx","../src/components/AmodalAction.tsx","../src/hooks/useAmodalBrief.ts","../src/hooks/useAmodalInsight.ts","../src/hooks/useAmodalTask.ts","../src/hooks/useAmodalQuery.ts","../src/hooks/useStore.ts","../src/hooks/useStoreList.ts","../src/hooks/useSkillAction.ts","../src/hooks/useNavigate.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { RuntimeClient } from './client/runtime-client';\n\nexport interface AmodalProviderProps {\n /** Base URL of the Amodal runtime server (e.g., \"http://localhost:3001\"). */\n runtimeUrl: string;\n /** App identifier sent in every request body. */\n appId: string;\n /** Optional async token getter for auth headers. */\n getToken?: () => string | Promise<string> | null | undefined;\n children: ReactNode;\n}\n\ninterface AmodalContextValue {\n client: RuntimeClient;\n runtimeUrl: string;\n appId: string;\n}\n\nconst AmodalContext = createContext<AmodalContextValue | null>(null);\n\n/**\n * Provides a RuntimeClient to all child hooks and components.\n */\nexport function AmodalProvider({ runtimeUrl, appId, getToken, children }: AmodalProviderProps) {\n const client = useMemo(\n () => new RuntimeClient({ runtimeUrl, appId, getToken }),\n [runtimeUrl, appId, getToken],\n );\n\n const value = useMemo(\n () => ({ client, runtimeUrl, appId }),\n [client, runtimeUrl, appId],\n );\n\n return <AmodalContext.Provider value={value}>{children}</AmodalContext.Provider>;\n}\n\n/**\n * Access the RuntimeClient and config from the nearest AmodalProvider.\n * Throws if called outside of an AmodalProvider.\n */\nexport function useAmodalContext(): AmodalContextValue {\n const ctx = useContext(AmodalContext);\n if (!ctx) {\n throw new Error('useAmodalContext must be used within an <AmodalProvider>');\n }\n return ctx;\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useReducer, useRef } from 'react';\nimport type {\n ChatState,\n ChatAction,\n ChatMessage,\n AssistantTextMessage,\n ToolCallInfo,\n ContentBlock,\n ConfirmationInfo,\n} from '../types';\nimport { useAmodalContext } from '../provider';\n\nconst initialState: ChatState = {\n messages: [],\n sessionId: null,\n isStreaming: false,\n error: null,\n activeToolCalls: [],\n isHistorical: false,\n usage: {inputTokens: 0, outputTokens: 0},\n};\n\nlet messageCounter = 0;\n\nfunction createMessageId(): string {\n messageCounter++;\n return `msg-${Date.now()}-${String(messageCounter)}`;\n}\n\nexport function chatReducer(state: ChatState, action: ChatAction): ChatState {\n switch (action.type) {\n case 'SEND_MESSAGE': {\n const userMessage: ChatMessage = {\n type: 'user',\n id: createMessageId(),\n text: action.text,\n timestamp: new Date().toISOString(),\n };\n const assistantMessage: AssistantTextMessage = {\n type: 'assistant_text',\n id: createMessageId(),\n text: '',\n toolCalls: [],\n confirmations: [],\n skillActivations: [],\n kbProposals: [],\n widgets: [],\n contentBlocks: [],\n timestamp: new Date().toISOString(),\n };\n return {\n ...state,\n messages: [...state.messages, userMessage, assistantMessage],\n isStreaming: true,\n error: null,\n activeToolCalls: [],\n };\n }\n case 'STREAM_INIT':\n return { ...state, sessionId: action.sessionId };\n case 'STREAM_TEXT_DELTA': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'text') {\n blocks[blocks.length - 1] = { type: 'text', text: lastBlock.text + action.content };\n } else {\n blocks.push({ type: 'text', text: action.content });\n }\n msgs[msgs.length - 1] = { ...last, text: last.text + action.content, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_TOOL_CALL_START': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n const toolCall: ToolCallInfo = {\n toolId: action.toolId,\n toolName: action.toolName,\n parameters: action.parameters,\n status: 'running',\n };\n if (last && last.type === 'assistant_text') {\n const updatedToolCalls = [...last.toolCalls, toolCall];\n const blocks = [...last.contentBlocks];\n const lastBlock = blocks[blocks.length - 1];\n if (lastBlock && lastBlock.type === 'tool_calls') {\n blocks[blocks.length - 1] = { type: 'tool_calls', calls: [...lastBlock.calls, toolCall] };\n } else {\n blocks.push({ type: 'tool_calls', calls: [toolCall] });\n }\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedToolCalls, contentBlocks: blocks };\n }\n return {\n ...state,\n messages: msgs,\n activeToolCalls: [...state.activeToolCalls, toolCall],\n };\n }\n case 'STREAM_TOOL_CALL_RESULT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updateCall = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.toolId\n ? {\n ...tc,\n status: action.status,\n result: action.result,\n parameters: action.parameters ?? tc.parameters,\n duration_ms: action.duration_ms,\n error: action.error,\n }\n : tc;\n const updatedCalls = last.toolCalls.map(updateCall);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(updateCall) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n const activeToolCalls = state.activeToolCalls.filter(\n (tc) => tc.toolId !== action.toolId,\n );\n return { ...state, messages: msgs, activeToolCalls };\n }\n case 'STREAM_SUBAGENT_EVENT': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const appendEvent = (tc: ToolCallInfo): ToolCallInfo =>\n tc.toolId === action.parentToolId\n ? { ...tc, subagentEvents: [...(tc.subagentEvents ?? []), action.event] }\n : tc;\n const updatedCalls = last.toolCalls.map(appendEvent);\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(appendEvent) }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, toolCalls: updatedCalls, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_WIDGET': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'widget',\n widgetType: action.widgetType,\n data: action.data,\n };\n msgs[msgs.length - 1] = {\n ...last,\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_CONFIRMATION_REQUIRED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const block: ContentBlock = {\n type: 'confirmation',\n confirmation: action.confirmation,\n };\n msgs[msgs.length - 1] = {\n ...last,\n confirmations: [...last.confirmations, action.confirmation],\n contentBlocks: [...last.contentBlocks, block],\n };\n }\n return { ...state, messages: msgs };\n }\n case 'CONFIRMATION_RESPONDED': {\n const msgs = [...state.messages];\n const last = msgs[msgs.length - 1];\n if (last && last.type === 'assistant_text') {\n const updatedConfirmations = last.confirmations.map((c) =>\n c.correlationId === action.correlationId\n ? { ...c, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] }\n : c,\n );\n const blocks = last.contentBlocks.map((block) =>\n block.type === 'confirmation' && block.confirmation.correlationId === action.correlationId\n ? { ...block, confirmation: { ...block.confirmation, status: (action.approved ? 'approved' : 'denied') as ConfirmationInfo['status'] } }\n : block,\n );\n msgs[msgs.length - 1] = { ...last, confirmations: updatedConfirmations, contentBlocks: blocks };\n }\n return { ...state, messages: msgs };\n }\n case 'STREAM_ERROR':\n return { ...state, isStreaming: false, error: action.message, activeToolCalls: [] };\n case 'STREAM_DONE': {\n const doneMessages = [...state.messages];\n const lastMsg = doneMessages[doneMessages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n const stopRunning = (tc: ToolCallInfo): ToolCallInfo =>\n tc.status === 'running' ? { ...tc, status: 'error', error: 'Stopped' } : tc;\n const stoppedCalls = lastMsg.toolCalls.map(stopRunning);\n const stoppedBlocks = lastMsg.contentBlocks.map((block) =>\n block.type === 'tool_calls'\n ? { ...block, calls: block.calls.map(stopRunning) }\n : block,\n );\n doneMessages[doneMessages.length - 1] = { ...lastMsg, toolCalls: stoppedCalls, contentBlocks: stoppedBlocks };\n }\n const newUsage = action.usage\n ? {inputTokens: state.usage.inputTokens + action.usage.inputTokens, outputTokens: state.usage.outputTokens + action.usage.outputTokens}\n : state.usage;\n return { ...state, messages: doneMessages, isStreaming: false, activeToolCalls: [], usage: newUsage };\n }\n case 'RESET':\n return { ...initialState };\n default:\n return state;\n }\n}\n\nexport interface UseAmodalChatOptions {\n /** Pre-seed session ID for resuming a previous session. */\n initialSessionId?: string | null;\n /** Additional context sent with each chat message. */\n context?: Record<string, unknown>;\n /** Called when the SSE stream ends. */\n onStreamEnd?: () => void;\n /** Called when a session ID is received from the server. */\n onSessionCreated?: (sessionId: string) => void;\n /** Called on each tool call result. */\n onToolCall?: (call: ToolCallInfo) => void;\n /** Called when a confirmation is required. */\n onConfirmation?: (confirmation: ConfirmationInfo) => void;\n}\n\nexport interface UseAmodalChatReturn {\n messages: ChatMessage[];\n send: (text: string) => void;\n stop: () => void;\n isStreaming: boolean;\n activeToolCalls: ToolCallInfo[];\n sessionId: string | null;\n error: string | null;\n usage: {inputTokens: number; outputTokens: number};\n reset: () => void;\n respondToConfirmation: (correlationId: string, approved: boolean) => void;\n}\n\nexport function useAmodalChat(options?: UseAmodalChatOptions): UseAmodalChatReturn {\n const { client } = useAmodalContext();\n const [state, dispatch] = useReducer(chatReducer, initialState);\n const sessionIdRef = useRef<string | null>(options?.initialSessionId ?? null);\n const abortControllerRef = useRef<AbortController | null>(null);\n const callbacksRef = useRef(options);\n callbacksRef.current = options;\n\n sessionIdRef.current = state.sessionId ?? sessionIdRef.current;\n\n const send = useCallback(\n (text: string) => {\n if (state.isStreaming) return;\n\n dispatch({ type: 'SEND_MESSAGE', text });\n\n const controller = new AbortController();\n abortControllerRef.current = controller;\n\n const runStream = async () => {\n let receivedDone = false;\n try {\n const stream = client.chatStream(text, {\n sessionId: sessionIdRef.current ?? undefined,\n context: callbacksRef.current?.context,\n signal: controller.signal,\n });\n\n for await (const event of stream) {\n switch (event.type) {\n case 'init':\n dispatch({ type: 'STREAM_INIT', sessionId: event.session_id });\n callbacksRef.current?.onSessionCreated?.(event.session_id);\n break;\n case 'text_delta':\n dispatch({ type: 'STREAM_TEXT_DELTA', content: event.content });\n break;\n case 'tool_call_start':\n dispatch({\n type: 'STREAM_TOOL_CALL_START',\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n });\n break;\n case 'tool_call_result':\n dispatch({\n type: 'STREAM_TOOL_CALL_RESULT',\n toolId: event.tool_id,\n status: event.status,\n result: event.result,\n parameters: event.parameters,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n callbacksRef.current?.onToolCall?.({\n toolId: event.tool_id,\n toolName: '',\n parameters: {},\n status: event.status,\n result: event.result,\n duration_ms: event.duration_ms,\n error: event.error,\n });\n break;\n case 'subagent_event':\n dispatch({\n type: 'STREAM_SUBAGENT_EVENT',\n parentToolId: event.parent_tool_id,\n event: {\n agentName: event.agent_name,\n eventType: event.event_type,\n toolName: event.tool_name,\n toolArgs: event.tool_args,\n result: event.result,\n text: event.text,\n error: event.error,\n timestamp: event.timestamp,\n },\n });\n break;\n case 'widget':\n dispatch({\n type: 'STREAM_WIDGET',\n widgetType: event.widget_type,\n data: event.data,\n });\n break;\n case 'confirmation_required': {\n const confirmation: ConfirmationInfo = {\n endpoint: event.endpoint,\n method: event.method,\n reason: event.reason,\n escalated: event.escalated,\n params: event.params,\n connectionName: event.connection_name,\n correlationId: event.correlation_id,\n status: 'pending',\n };\n dispatch({ type: 'STREAM_CONFIRMATION_REQUIRED', confirmation });\n callbacksRef.current?.onConfirmation?.(confirmation);\n break;\n }\n case 'error':\n dispatch({ type: 'STREAM_ERROR', message: event.message });\n break;\n case 'done':\n receivedDone = true;\n dispatch({\n type: 'STREAM_DONE',\n usage: event.usage ? {inputTokens: event.usage.input_tokens, outputTokens: event.usage.output_tokens} : undefined,\n });\n callbacksRef.current?.onStreamEnd?.();\n break;\n default:\n break;\n }\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n dispatch({\n type: 'STREAM_ERROR',\n message: err instanceof Error ? err.message : 'Unknown error',\n });\n }\n } finally {\n abortControllerRef.current = null;\n if (!receivedDone && !controller.signal.aborted) {\n dispatch({ type: 'STREAM_DONE' });\n callbacksRef.current?.onStreamEnd?.();\n }\n }\n };\n\n void runStream();\n },\n [client, state.isStreaming],\n );\n\n const stop = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'STREAM_DONE' });\n }, []);\n\n const reset = useCallback(() => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n abortControllerRef.current = null;\n }\n dispatch({ type: 'RESET' });\n }, []);\n\n const respondToConfirmation = useCallback(\n (correlationId: string, approved: boolean) => {\n dispatch({ type: 'CONFIRMATION_RESPONDED', correlationId, approved });\n\n // Send approval/denial as a follow-up chat message\n const responseText = approved\n ? `I approve the action (correlation: ${correlationId})`\n : `I deny the action (correlation: ${correlationId})`;\n\n // Queue the response after the current stream ends\n if (!state.isStreaming) {\n send(responseText);\n }\n },\n [send, state.isStreaming],\n );\n\n // Abort on unmount\n useEffect(\n () => () => {\n if (abortControllerRef.current) {\n abortControllerRef.current.abort();\n }\n },\n [],\n );\n\n return {\n messages: state.messages,\n send,\n stop,\n isStreaming: state.isStreaming,\n activeToolCalls: state.activeToolCalls,\n sessionId: state.sessionId,\n error: state.error,\n usage: state.usage,\n reset,\n respondToConfirmation,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ConfirmCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Simple confirmation card: shows endpoint + method + reason, approve/deny buttons.\n */\nexport function ConfirmCard({ confirmation, onApprove, onDeny }: ConfirmCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-confirm-card\" data-testid=\"confirm-card\">\n <div className=\"amodal-confirm-card__header\">\n <span className=\"amodal-confirm-card__method\">{confirmation.method}</span>\n <span className=\"amodal-confirm-card__endpoint\">{confirmation.endpoint}</span>\n </div>\n <p className=\"amodal-confirm-card__reason\">{confirmation.reason}</p>\n {isPending ? (\n <div className=\"amodal-confirm-card__actions\">\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"confirm-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-confirm-card__btn amodal-confirm-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"confirm-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-confirm-card__status\" data-testid=\"confirm-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport type { ConfirmationInfo } from '../types';\n\nexport interface ReviewCardProps {\n confirmation: ConfirmationInfo;\n onApprove: () => void;\n onDeny: () => void;\n}\n\n/**\n * Structured review card: all params, reason, escalation badge, approve/deny.\n */\nexport function ReviewCard({ confirmation, onApprove, onDeny }: ReviewCardProps) {\n const isPending = confirmation.status === 'pending';\n\n return (\n <div className=\"amodal-review-card\" data-testid=\"review-card\">\n <div className=\"amodal-review-card__header\">\n <span className=\"amodal-review-card__method\">{confirmation.method}</span>\n <span className=\"amodal-review-card__endpoint\">{confirmation.endpoint}</span>\n {confirmation.escalated && (\n <span className=\"amodal-review-card__badge\" data-testid=\"escalation-badge\">\n Escalated\n </span>\n )}\n </div>\n {confirmation.connectionName && (\n <div className=\"amodal-review-card__connection\">\n Connection: {confirmation.connectionName}\n </div>\n )}\n <p className=\"amodal-review-card__reason\">{confirmation.reason}</p>\n {confirmation.params && Object.keys(confirmation.params).length > 0 && (\n <div className=\"amodal-review-card__params\" data-testid=\"review-params\">\n <div className=\"amodal-review-card__params-title\">Parameters</div>\n <pre className=\"amodal-review-card__params-body\">\n {JSON.stringify(confirmation.params, null, 2)}\n </pre>\n </div>\n )}\n {isPending ? (\n <div className=\"amodal-review-card__actions\">\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--approve\"\n onClick={onApprove}\n data-testid=\"review-approve\"\n >\n Approve\n </button>\n <button\n className=\"amodal-review-card__btn amodal-review-card__btn--deny\"\n onClick={onDeny}\n data-testid=\"review-deny\"\n >\n Deny\n </button>\n </div>\n ) : (\n <div className=\"amodal-review-card__status\" data-testid=\"review-status\">\n {confirmation.status === 'approved' ? 'Approved' : 'Denied'}\n </div>\n )}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport type { FormEvent } from 'react';\nimport type { ConfirmationInfo, ToolCallInfo } from './types';\nimport { useAmodalChat } from './hooks/useAmodalChat';\nimport type { UseAmodalChatOptions } from './hooks/useAmodalChat';\nimport { ConfirmCard } from './components/ConfirmCard';\nimport { ReviewCard } from './components/ReviewCard';\n\nexport interface AmodalChatProps extends UseAmodalChatOptions {\n /** Placeholder text for the input bar. */\n placeholder?: string;\n /** Custom renderer for text content blocks. */\n renderText?: (text: string) => React.ReactNode;\n /** Custom renderer for tool call blocks. */\n renderToolCall?: (call: ToolCallInfo) => React.ReactNode;\n /** Custom renderer for confirmation blocks. */\n renderConfirmation?: (confirmation: ConfirmationInfo, onApprove: () => void, onDeny: () => void) => React.ReactNode;\n /** CSS class name for the root element. */\n className?: string;\n}\n\n/**\n * Full chat component — message list, input bar, renders confirmations inline.\n */\nexport function AmodalChat({\n placeholder = 'Type a message...',\n renderText,\n renderToolCall,\n renderConfirmation,\n className,\n ...hookOptions\n}: AmodalChatProps) {\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat(hookOptions);\n const [input, setInput] = useState('');\n const messagesEndRef = useRef<HTMLDivElement>(null);\n\n const handleSubmit = useCallback(\n (e: FormEvent) => {\n e.preventDefault();\n const trimmed = input.trim();\n if (trimmed.length === 0 || isStreaming) return;\n setInput('');\n send(trimmed);\n },\n [input, isStreaming, send],\n );\n\n const rootClass = ['amodal-chat', className].filter(Boolean).join(' ');\n\n return (\n <div className={rootClass} data-testid=\"amodal-chat\">\n <div className=\"amodal-chat__messages\" data-testid=\"message-list\">\n {messages.map((msg) => {\n switch (msg.type) {\n case 'user':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--user\" data-testid=\"user-message\">\n {msg.text}\n </div>\n );\n case 'assistant_text':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--assistant\" data-testid=\"assistant-message\">\n {msg.contentBlocks.map((block, i) => {\n switch (block.type) {\n case 'text':\n return (\n <div key={`text-${String(i)}`} className=\"amodal-chat__text\">\n {renderText ? renderText(block.text) : block.text}\n </div>\n );\n case 'tool_calls':\n return (\n <div key={`tools-${String(i)}`} className=\"amodal-chat__tool-calls\">\n {block.calls.map((call) =>\n renderToolCall ? (\n <div key={call.toolId}>{renderToolCall(call)}</div>\n ) : (\n <div key={call.toolId} className=\"amodal-chat__tool-call\" data-testid=\"tool-call\">\n <span className=\"amodal-chat__tool-name\">{call.toolName}</span>\n <span className=\"amodal-chat__tool-status\">{call.status}</span>\n </div>\n ),\n )}\n </div>\n );\n case 'confirmation': {\n const conf = block.confirmation;\n const handleApprove = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (conf.correlationId) {\n respondToConfirmation(conf.correlationId, false);\n }\n };\n if (renderConfirmation) {\n return <div key={`conf-${String(i)}`}>{renderConfirmation(conf, handleApprove, handleDeny)}</div>;\n }\n if (conf.escalated || (conf.params && Object.keys(conf.params).length > 0)) {\n return <ReviewCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n return <ConfirmCard key={`conf-${String(i)}`} confirmation={conf} onApprove={handleApprove} onDeny={handleDeny} />;\n }\n case 'widget':\n return (\n <div key={`widget-${String(i)}`} className=\"amodal-chat__widget\" data-testid=\"widget\">\n {block.widgetType}\n </div>\n );\n default:\n return null;\n }\n })}\n </div>\n );\n case 'error':\n return (\n <div key={msg.id} className=\"amodal-chat__message amodal-chat__message--error\" data-testid=\"error-message\">\n {msg.message}\n </div>\n );\n default:\n return null;\n }\n })}\n <div ref={messagesEndRef} />\n </div>\n <form className=\"amodal-chat__input-bar\" onSubmit={handleSubmit} data-testid=\"input-bar\">\n <input\n className=\"amodal-chat__input\"\n value={input}\n onChange={(e) => setInput(e.target.value)}\n placeholder={placeholder}\n disabled={isStreaming}\n data-testid=\"chat-input\"\n />\n <button\n className=\"amodal-chat__send\"\n type=\"submit\"\n disabled={isStreaming || input.trim().length === 0}\n data-testid=\"send-button\"\n >\n Send\n </button>\n </form>\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useState } from 'react';\nimport type { ConfirmationInfo } from '../types';\nimport { useAmodalChat } from '../hooks/useAmodalChat';\nimport { ConfirmCard } from './ConfirmCard';\nimport { ReviewCard } from './ReviewCard';\n\nexport interface AmodalActionProps {\n /** The prompt to send when the action is triggered. */\n prompt: string;\n /** Label for the trigger button. */\n label?: string;\n /** Additional context sent with the chat message. */\n context?: Record<string, unknown>;\n /** Called when the action completes. */\n onComplete?: (text: string) => void;\n /** Called on error. */\n onError?: (error: string) => void;\n}\n\n/**\n * One-shot action: triggers a chat stream with a prompt, shows confirmation inline.\n */\nexport function AmodalAction({ prompt, label, context, onComplete, onError }: AmodalActionProps) {\n const [triggered, setTriggered] = useState(false);\n\n const { messages, send, isStreaming, respondToConfirmation } = useAmodalChat({\n context,\n onStreamEnd: () => {\n const lastMsg = messages[messages.length - 1];\n if (lastMsg && lastMsg.type === 'assistant_text') {\n onComplete?.(lastMsg.text);\n } else if (lastMsg && lastMsg.type === 'error') {\n onError?.(lastMsg.message);\n }\n },\n });\n\n const trigger = useCallback(() => {\n if (triggered || isStreaming) return;\n setTriggered(true);\n send(prompt);\n }, [triggered, isStreaming, send, prompt]);\n\n const lastAssistant = [...messages].reverse().find((m) => m.type === 'assistant_text');\n const pendingConfirmations: ConfirmationInfo[] =\n lastAssistant && lastAssistant.type === 'assistant_text'\n ? lastAssistant.confirmations.filter((c) => c.status === 'pending')\n : [];\n\n const renderConfirmation = (confirmation: ConfirmationInfo, index: number) => {\n const handleApprove = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, true);\n }\n };\n const handleDeny = () => {\n if (confirmation.correlationId) {\n respondToConfirmation(confirmation.correlationId, false);\n }\n };\n\n if (confirmation.escalated || (confirmation.params && Object.keys(confirmation.params).length > 0)) {\n return (\n <ReviewCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n }\n\n return (\n <ConfirmCard\n key={confirmation.correlationId ?? String(index)}\n confirmation={confirmation}\n onApprove={handleApprove}\n onDeny={handleDeny}\n />\n );\n };\n\n if (!triggered) {\n return (\n <button\n className=\"amodal-action__trigger\"\n onClick={trigger}\n data-testid=\"action-trigger\"\n >\n {label ?? 'Run'}\n </button>\n );\n }\n\n return (\n <div className=\"amodal-action\" data-testid=\"action-container\">\n {isStreaming && (\n <div className=\"amodal-action__loading\" data-testid=\"action-loading\">\n Processing...\n </div>\n )}\n {lastAssistant && lastAssistant.type === 'assistant_text' && lastAssistant.text && (\n <div className=\"amodal-action__result\" data-testid=\"action-result\">\n {lastAssistant.text}\n </div>\n )}\n {pendingConfirmations.map(renderConfirmation)}\n </div>\n );\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { BriefResult, ToolCallInfo } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalBriefOptions {\n /** The prompt to send for the brief. */\n prompt: string;\n /** Additional context sent with the request. */\n context?: Record<string, unknown>;\n /** If true, the brief is fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalBriefReturn {\n brief: BriefResult | null;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with a brief prompt, collects the full response.\n */\nexport function useAmodalBrief(options: UseAmodalBriefOptions): UseAmodalBriefReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [brief, setBrief] = useState<BriefResult | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchBrief = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n const toolCalls: ToolCallInfo[] = [];\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'tool_call_start':\n toolCalls.push({\n toolId: event.tool_id,\n toolName: event.tool_name,\n parameters: event.parameters,\n status: 'running',\n });\n break;\n case 'tool_call_result': {\n const tc = toolCalls.find((t) => t.toolId === event.tool_id);\n if (tc) {\n tc.status = event.status;\n tc.result = event.result;\n tc.duration_ms = event.duration_ms;\n tc.error = event.error;\n }\n break;\n }\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setBrief({ text, toolCalls });\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchBrief();\n }, [fetchBrief]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchBrief();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchBrief]);\n\n return { brief, isLoading, error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { InsightResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalInsightOptions {\n /** The insight prompt to send. */\n prompt: string;\n /** Additional context for the insight. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport interface UseAmodalInsightReturn {\n status: InsightResult['status'];\n summary: string;\n details: string;\n isLoading: boolean;\n error: string | null;\n refresh: () => void;\n}\n\n/**\n * Sends a chat with an insight prompt, collects a structured response.\n * Splits the response at the first double newline into summary and details.\n */\nexport function useAmodalInsight(options: UseAmodalInsightOptions): UseAmodalInsightReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<InsightResult['status']>('idle');\n const [summary, setSummary] = useState('');\n const [details, setDetails] = useState('');\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchInsight = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('loading');\n setError(null);\n setSummary('');\n setDetails('');\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n default:\n break;\n }\n }\n\n // Split at first double newline\n const splitIndex = text.indexOf('\\n\\n');\n if (splitIndex >= 0) {\n setSummary(text.slice(0, splitIndex).trim());\n setDetails(text.slice(splitIndex + 2).trim());\n } else {\n setSummary(text.trim());\n }\n setStatus('done');\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refresh = useCallback(() => {\n void fetchInsight();\n }, [fetchInsight]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchInsight();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchInsight]);\n\n return { status, summary, details, isLoading: status === 'loading', error, refresh };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { SSEEvent, TaskStatusValue } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalTaskOptions {\n /** The task ID to stream. */\n taskId: string;\n /** If true, starts streaming automatically on mount. Defaults to true. */\n autoStream?: boolean;\n}\n\nexport interface UseAmodalTaskReturn {\n status: TaskStatusValue | 'idle';\n progress: string;\n result: string;\n events: SSEEvent[];\n error: string | null;\n start: () => void;\n stop: () => void;\n}\n\n/**\n * Streams GET /task/:id/stream events.\n */\nexport function useAmodalTask(options: UseAmodalTaskOptions): UseAmodalTaskReturn {\n const { taskId, autoStream = true } = options;\n const { client } = useAmodalContext();\n const [status, setStatus] = useState<TaskStatusValue | 'idle'>('idle');\n const [progress, setProgress] = useState('');\n const [result, setResult] = useState('');\n const [events, setEvents] = useState<SSEEvent[]>([]);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const startedRef = useRef(false);\n\n const start = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setStatus('running');\n setError(null);\n setEvents([]);\n setResult('');\n setProgress('');\n\n try {\n let text = '';\n\n for await (const event of client.streamTask(taskId, controller.signal)) {\n setEvents((prev) => [...prev, event]);\n\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n setResult(text);\n break;\n case 'tool_call_start':\n setProgress(`Running ${event.tool_name}...`);\n break;\n case 'tool_call_result':\n setProgress('');\n break;\n case 'error':\n setError(event.message);\n setStatus('error');\n return;\n case 'done':\n setStatus('completed');\n return;\n default:\n break;\n }\n }\n\n // Stream ended without done event\n if (status === 'running') {\n setStatus('completed');\n }\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n setStatus('error');\n }\n } finally {\n abortRef.current = null;\n }\n }, [client, taskId, status]);\n\n const stop = useCallback(() => {\n if (abortRef.current) {\n abortRef.current.abort();\n abortRef.current = null;\n }\n }, []);\n\n const startRef = useRef(start);\n startRef.current = start;\n\n useEffect(() => {\n if (autoStream && !startedRef.current) {\n startedRef.current = true;\n void startRef.current();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoStream]);\n\n return {\n status,\n progress,\n result,\n events,\n error,\n start: () => void start(),\n stop,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { QueryResult } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseAmodalQueryOptions {\n /** The query prompt. */\n prompt: string;\n /** Additional context. */\n context?: Record<string, unknown>;\n /** If true, fetched automatically on mount. Defaults to true. */\n autoFetch?: boolean;\n}\n\nexport type UseAmodalQueryReturn = QueryResult<string> & {\n refetch: () => void;\n};\n\n/**\n * Non-streaming query. Collects the full response text.\n */\nexport function useAmodalQuery(options: UseAmodalQueryOptions): UseAmodalQueryReturn {\n const { prompt, context, autoFetch = true } = options;\n const { client } = useAmodalContext();\n const [data, setData] = useState<string | null>(null);\n const [isLoading, setIsLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n const mountedRef = useRef(false);\n\n const fetchQuery = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setIsLoading(true);\n setError(null);\n\n try {\n let text = '';\n\n for await (const event of client.chatStream(prompt, { context, signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n\n setData(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Unknown error');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, prompt, context]);\n\n const refetch = useCallback(() => {\n void fetchQuery();\n }, [fetchQuery]);\n\n useEffect(() => {\n if (autoFetch && !mountedRef.current) {\n mountedRef.current = true;\n void fetchQuery();\n }\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [autoFetch, fetchQuery]);\n\n return { data, isLoading, error, refetch };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument, StoreDocumentMeta } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreOptions {\n /** Document key to fetch. */\n key: string;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreReturn {\n /** Document payload (the entity data). */\n data: Record<string, unknown> | null;\n /** Document metadata (computedAt, ttl, stale, trace, etc.). */\n meta: StoreDocumentMeta | null;\n /** Full document (key, version, payload, meta). */\n document: StoreDocument | null;\n /** Version history (most recent first). */\n history: StoreDocument[];\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a single document from a store by key.\n *\n * @example\n * ```tsx\n * const { data, meta, isLoading } = useStore('deal-health', { key: `deal:${dealId}` });\n * if (data) {\n * console.log(data.score, data.severity);\n * }\n * ```\n */\nexport function useStore(storeName: string, options: UseStoreOptions): UseStoreReturn {\n const { key, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [document, setDocument] = useState<StoreDocument | null>(null);\n const [history, setHistory] = useState<StoreDocument[]>([]);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const fetchDocument = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocument(storeName, key, controller.signal);\n setDocument(result.document);\n setHistory(result.history);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch document');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, key]);\n\n const refetch = useCallback(() => {\n void fetchDocument();\n }, [fetchDocument]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchDocument();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchDocument]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchDocument();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchDocument, refreshInterval]);\n\n return {\n data: document?.payload ?? null,\n meta: document?.meta ?? null,\n document,\n history,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\nimport type { StoreDocument } from '../types';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseStoreListOptions {\n /** Filter by field values (equality match). */\n filter?: Record<string, unknown>;\n /** Sort field. Prefix with \"-\" for descending (e.g., \"-severity\"). */\n sort?: string;\n /** Max documents to return. Default: 20. */\n limit?: number;\n /** Auto-refresh interval in milliseconds. Set to 0 to disable. Default: 30000. */\n refreshInterval?: number;\n}\n\nexport interface UseStoreListReturn {\n /** Array of document payloads. */\n data: Array<Record<string, unknown>>;\n /** Full documents (with key, version, meta). */\n documents: StoreDocument[];\n /** Total count of matching documents. */\n total: number;\n /** Whether more documents exist beyond the current page. */\n hasMore: boolean;\n /** Whether the initial fetch is in progress. */\n isLoading: boolean;\n /** Error message if the fetch failed. */\n error: string | null;\n /** Manually trigger a refetch. */\n refetch: () => void;\n}\n\n/**\n * Fetch a list of documents from a store with optional filtering and sorting.\n *\n * @example\n * ```tsx\n * const { data, total } = useStoreList('active-alerts', {\n * filter: { severity: 'P1' },\n * sort: '-computedAt',\n * limit: 10,\n * });\n * ```\n */\nexport function useStoreList(storeName: string, options: UseStoreListOptions = {}): UseStoreListReturn {\n const { filter, sort, limit = 20, refreshInterval = 30000 } = options;\n const { client } = useAmodalContext();\n const [documents, setDocuments] = useState<StoreDocument[]>([]);\n const [total, setTotal] = useState(0);\n const [hasMore, setHasMore] = useState(false);\n const [isLoading, setIsLoading] = useState(true);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n // Stable stringified deps for filter object\n const filterKey = filter ? JSON.stringify(filter) : '';\n\n const fetchList = useCallback(async () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n try {\n const result = await client.getStoreDocuments(storeName, {\n filter: filterKey ? JSON.parse(filterKey) : undefined,\n sort,\n limit,\n signal: controller.signal,\n });\n setDocuments(result.documents);\n setTotal(result.total);\n setHasMore(result.hasMore);\n setError(null);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Failed to fetch store list');\n }\n } finally {\n setIsLoading(false);\n abortRef.current = null;\n }\n }, [client, storeName, filterKey, sort, limit]);\n\n const refetch = useCallback(() => {\n void fetchList();\n }, [fetchList]);\n\n // Initial fetch\n useEffect(() => {\n setIsLoading(true);\n void fetchList();\n\n return () => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n };\n }, [fetchList]);\n\n // Auto-refresh\n useEffect(() => {\n if (refreshInterval <= 0) return;\n\n const timer = setInterval(() => {\n void fetchList();\n }, refreshInterval);\n\n return () => clearInterval(timer);\n }, [fetchList, refreshInterval]);\n\n return {\n data: documents.map((d) => d.payload),\n documents,\n total,\n hasMore,\n isLoading,\n error,\n refetch,\n };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { useCallback, useRef, useState } from 'react';\nimport { useAmodalContext } from '../provider';\n\nexport interface UseSkillActionOptions {\n /** Store names this skill writes to (for context in the prompt). */\n stores?: string[];\n /** Whether to include a confirmation hint in the prompt. */\n confirm?: boolean;\n}\n\nexport interface UseSkillActionReturn {\n /** Execute the skill with the given parameters. */\n execute: (params?: Record<string, unknown>) => void;\n /** Whether the skill is currently running. */\n loading: boolean;\n /** The text result from the skill execution. */\n result: string | null;\n /** Error message if execution failed. */\n error: string | null;\n}\n\n/**\n * Invoke a skill via the chat agent.\n *\n * Under the hood, this sends a structured chat message asking the agent\n * to run the skill, then collects the text response.\n *\n * @example\n * ```tsx\n * const investigate = useSkillAction('deep-investigator', {\n * stores: ['active-alerts', 'incident-correlations'],\n * });\n *\n * <button onClick={() => investigate.execute({ correlationId: '123' })}>\n * Investigate\n * </button>\n * ```\n */\nexport function useSkillAction(\n skillName: string,\n options: UseSkillActionOptions = {},\n): UseSkillActionReturn {\n const { client } = useAmodalContext();\n const [loading, setLoading] = useState(false);\n const [result, setResult] = useState<string | null>(null);\n const [error, setError] = useState<string | null>(null);\n const abortRef = useRef<AbortController | null>(null);\n\n const execute = useCallback(\n (params?: Record<string, unknown>) => {\n if (abortRef.current) {\n abortRef.current.abort();\n }\n\n const controller = new AbortController();\n abortRef.current = controller;\n\n setLoading(true);\n setResult(null);\n setError(null);\n\n // Build a structured prompt for the agent\n let prompt = `Run skill \"${skillName}\"`;\n if (params && Object.keys(params).length > 0) {\n prompt += ` with parameters: ${JSON.stringify(params)}`;\n }\n if (options.stores && options.stores.length > 0) {\n prompt += `. Write results to stores: ${options.stores.join(', ')}`;\n }\n if (options.confirm) {\n prompt += '. Confirm before writing.';\n }\n\n void (async () => {\n try {\n let text = '';\n for await (const event of client.chatStream(prompt, { signal: controller.signal })) {\n switch (event.type) {\n case 'text_delta':\n text += event.content;\n break;\n case 'error':\n setError(event.message);\n break;\n default:\n break;\n }\n }\n setResult(text);\n } catch (err) {\n if (!(err instanceof DOMException && err.name === 'AbortError')) {\n setError(err instanceof Error ? err.message : 'Skill execution failed');\n }\n } finally {\n setLoading(false);\n abortRef.current = null;\n }\n })();\n },\n [client, skillName, options.stores, options.confirm],\n );\n\n return { execute, loading, result, error };\n}\n","/**\n * @license\n * Copyright 2025 Amodal Labs, Inc.\n * SPDX-License-Identifier: MIT\n */\n\nimport { createContext, useContext, useCallback } from 'react';\n\n/**\n * Navigation function type.\n * In the runtime app, this is backed by React Router's navigate.\n * In standalone/embedded usage, the host app provides the implementation.\n */\nexport type NavigateFn = (pageName: string, params?: Record<string, string>) => void;\n\n/**\n * Context for providing a navigate function.\n * The runtime app sets this with React Router's navigate.\n * Standalone users can provide their own via NavigateProvider.\n */\nexport const NavigateContext = createContext<NavigateFn | null>(null);\n\n/**\n * Navigate between pages in the runtime app.\n *\n * In the runtime app, navigates to the page route.\n * In standalone/embedded usage, calls the host-provided navigate function.\n * If no NavigateProvider is present, returns a no-op.\n *\n * @example\n * ```tsx\n * const navigate = useNavigate();\n * navigate('incident-detail', { correlationId: '123' });\n * ```\n */\nexport function useNavigate(): NavigateFn {\n const navigateFn = useContext(NavigateContext);\n\n const noopNavigate = useCallback((_pageName: string, _params?: Record<string, string>) => {\n // No-op when no NavigateProvider is present\n }, []);\n\n return navigateFn ?? noopNavigate;\n}\n"],"names":["AmodalContext","createContext","AmodalProvider","runtimeUrl","appId","getToken","children","client","useMemo","RuntimeClient","value","jsx","useAmodalContext","ctx","useContext","initialState","messageCounter","createMessageId","chatReducer","state","action","userMessage","assistantMessage","msgs","last","blocks","lastBlock","toolCall","updatedToolCalls","updateCall","tc","updatedCalls","block","activeToolCalls","appendEvent","updatedConfirmations","doneMessages","lastMsg","stopRunning","stoppedCalls","stoppedBlocks","newUsage","useAmodalChat","options","dispatch","useReducer","sessionIdRef","useRef","abortControllerRef","callbacksRef","send","useCallback","text","controller","receivedDone","stream","_a","event","_c","_b","_e","_d","confirmation","_g","_f","_i","_h","err","_k","_j","stop","reset","respondToConfirmation","correlationId","approved","responseText","useEffect","ConfirmCard","onApprove","onDeny","isPending","jsxs","ReviewCard","AmodalChat","placeholder","renderText","renderToolCall","renderConfirmation","className","hookOptions","messages","isStreaming","input","setInput","useState","messagesEndRef","handleSubmit","e","trimmed","rootClass","msg","i","call","conf","handleApprove","handleDeny","AmodalAction","prompt","label","context","onComplete","onError","triggered","setTriggered","trigger","lastAssistant","m","pendingConfirmations","c","index","useAmodalBrief","autoFetch","brief","setBrief","isLoading","setIsLoading","error","setError","abortRef","mountedRef","fetchBrief","toolCalls","t","refresh","useAmodalInsight","status","setStatus","summary","setSummary","details","setDetails","fetchInsight","splitIndex","useAmodalTask","taskId","autoStream","progress","setProgress","result","setResult","events","setEvents","startedRef","start","prev","startRef","useAmodalQuery","data","setData","fetchQuery","refetch","useStore","storeName","key","refreshInterval","document","setDocument","history","setHistory","fetchDocument","timer","useStoreList","filter","sort","limit","documents","setDocuments","total","setTotal","hasMore","setHasMore","filterKey","fetchList","d","useSkillAction","skillName","loading","setLoading","params","NavigateContext","useNavigate","navigateFn","noopNavigate","_pageName","_params"],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -26,6 +26,7 @@ export interface SSEToolCallResultEvent {
26
26
  tool_id: string;
27
27
  status: 'success' | 'error';
28
28
  result?: unknown;
29
+ parameters?: Record<string, unknown>;
29
30
  duration_ms?: number;
30
31
  error?: string;
31
32
  timestamp: string;
@@ -309,6 +310,7 @@ export type ChatAction = {
309
310
  toolId: string;
310
311
  status: 'success' | 'error';
311
312
  result?: unknown;
313
+ parameters?: Record<string, unknown>;
312
314
  duration_ms?: number;
313
315
  error?: string;
314
316
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amodalai/react",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "React bindings for Amodal agent runtime",
5
5
  "license": "MIT",
6
6
  "repository": {