@amodalai/react 0.1.13 → 0.1.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/hooks/useAmodalChat.d.ts.map +1 -1
- package/dist/react.js +72 -70
- package/dist/react.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -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,
|
|
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
|
|
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,
|
|
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
|
|
205
|
-
switch (
|
|
205
|
+
for await (const g of I)
|
|
206
|
+
switch (g.type) {
|
|
206
207
|
case "init":
|
|
207
|
-
e({ type: "STREAM_INIT", sessionId:
|
|
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:
|
|
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:
|
|
216
|
-
toolName:
|
|
217
|
-
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:
|
|
224
|
-
status:
|
|
225
|
-
result:
|
|
226
|
-
|
|
227
|
-
|
|
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:
|
|
231
|
+
toolId: g.tool_id,
|
|
230
232
|
toolName: "",
|
|
231
233
|
parameters: {},
|
|
232
|
-
status:
|
|
233
|
-
result:
|
|
234
|
-
duration_ms:
|
|
235
|
-
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:
|
|
243
|
+
parentToolId: g.parent_tool_id,
|
|
242
244
|
event: {
|
|
243
|
-
agentName:
|
|
244
|
-
eventType:
|
|
245
|
-
toolName:
|
|
246
|
-
toolArgs:
|
|
247
|
-
result:
|
|
248
|
-
text:
|
|
249
|
-
error:
|
|
250
|
-
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:
|
|
258
|
-
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:
|
|
264
|
-
method:
|
|
265
|
-
reason:
|
|
266
|
-
escalated:
|
|
267
|
-
params:
|
|
268
|
-
connectionName:
|
|
269
|
-
correlationId:
|
|
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:
|
|
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:
|
|
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,
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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
|
-
|
|
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 =
|
|
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:
|
|
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
|
|
594
|
-
m.current =
|
|
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:
|
|
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]),
|
|
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:
|
|
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
|
|
690
|
-
switch (
|
|
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 +=
|
|
694
|
+
d += p.content;
|
|
693
695
|
break;
|
|
694
696
|
case "error":
|
|
695
|
-
E(
|
|
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
|
|
725
|
-
c(
|
|
726
|
-
} catch (
|
|
727
|
-
|
|
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),
|
|
759
|
-
|
|
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
|
-
|
|
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),
|
|
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
|
-
|
|
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
|
-
|
|
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":"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"}
|
|
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
|
} | {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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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"}
|