@actioneer/ads 0.2.4 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/components/ai-elements/chain-of-thought.d.ts +64 -2
  2. package/components/ai-elements/chain-of-thought.js +319 -100
  3. package/components/ai-elements/chart.d.ts +30 -0
  4. package/components/ai-elements/chart.js +303 -0
  5. package/components/ai-elements/index.d.ts +2 -0
  6. package/components/ai-elements/message.d.ts +12 -2
  7. package/components/ai-elements/message.js +133 -100
  8. package/components/ai-elements/research-activity.d.ts +45 -0
  9. package/components/ai-elements/research-activity.js +260 -0
  10. package/components/ai-elements/tool.js +42 -38
  11. package/components/answer.d.ts +16 -0
  12. package/components/answer.js +273 -249
  13. package/components/assistant-ui/attachment.js +5 -1
  14. package/components/assistant-ui/composer-deep-research.js +44 -29
  15. package/components/assistant-ui/composer-harness.js +45 -27
  16. package/components/assistant-ui/composer.js +16 -16
  17. package/components/assistant-ui/index.d.ts +0 -1
  18. package/components/assistant-ui/message.d.ts +7 -0
  19. package/components/assistant-ui/message.js +36 -36
  20. package/components/assistant-ui/thread.js +1 -1
  21. package/components/brand-texture.d.ts +37 -0
  22. package/components/brand-texture.js +54 -0
  23. package/components/code-block.d.ts +36 -0
  24. package/components/code-block.js +136 -0
  25. package/components/drawer.d.ts +1 -1
  26. package/components/file-dropzone.d.ts +32 -0
  27. package/components/file-dropzone.js +134 -0
  28. package/components/index.d.ts +10 -0
  29. package/components/index.js +482 -433
  30. package/components/infinite-canvas.d.ts +50 -0
  31. package/components/infinite-canvas.js +215 -0
  32. package/components/page-header.d.ts +22 -0
  33. package/components/page-header.js +52 -0
  34. package/components/resizable-panel.d.ts +29 -0
  35. package/components/resizable-panel.js +102 -0
  36. package/components/reveal.d.ts +36 -0
  37. package/components/reveal.js +35 -0
  38. package/components/scroll-area.d.ts +19 -0
  39. package/components/scroll-area.js +57 -0
  40. package/components/setting-row.d.ts +35 -0
  41. package/components/setting-row.js +86 -0
  42. package/components/sidebar.js +131 -131
  43. package/components/stepper.d.ts +32 -0
  44. package/components/stepper.js +113 -0
  45. package/components/table.js +16 -15
  46. package/components/tabs.js +1 -1
  47. package/lib/icons.d.ts +12 -0
  48. package/lib/icons.js +98 -95
  49. package/lib/motion.d.ts +5 -3
  50. package/lib/motion.js +28 -27
  51. package/llms.txt +122 -28
  52. package/manifest.json +871 -73
  53. package/package.json +2 -2
  54. package/styles.css +71 -28
  55. package/theme.css +19 -15
  56. package/components/assistant-ui/smart-message-text.d.ts +0 -15
  57. package/components/assistant-ui/smart-message-text.js +0 -29
@@ -0,0 +1,260 @@
1
+ "use client";
2
+ import { jsxs as t, jsx as e, Fragment as K } from "react/jsx-runtime";
3
+ import * as s from "react";
4
+ import { MotionConfig as Y, AnimatePresence as Z, motion as C } from "motion/react";
5
+ import { cva as I } from "class-variance-authority";
6
+ import { Collapsible as O, CollapsibleTrigger as j, CollapsibleContent as ee } from "../collapsible.js";
7
+ import { Spinner as L } from "../spinner.js";
8
+ import { Sparkles as M, ChevronDown as T } from "../../lib/icons.js";
9
+ import { EASE_OUT as V } from "../../lib/motion.js";
10
+ import { cn as m } from "../../lib/cn.js";
11
+ import { Shimmer as D } from "./shimmer.js";
12
+ const re = I("w-full", {
13
+ variants: {
14
+ status: {
15
+ active: "text-foreground",
16
+ complete: "text-secondary"
17
+ }
18
+ }
19
+ }), te = {
20
+ initial: {
21
+ opacity: 0,
22
+ transform: "translate3d(0, 7px, 0)",
23
+ filter: "blur(2px)"
24
+ },
25
+ animate: {
26
+ opacity: 1,
27
+ transform: "translate3d(0, 0, 0)",
28
+ filter: "blur(0px)",
29
+ transition: { duration: 0.18, ease: V }
30
+ },
31
+ exit: {
32
+ opacity: 0,
33
+ transform: "translate3d(0, -7px, 0)",
34
+ filter: "blur(2px)",
35
+ transition: { duration: 0.12, ease: V }
36
+ }
37
+ };
38
+ function F({
39
+ elapsed: r,
40
+ firstInsight: n,
41
+ sourceCount: d
42
+ }) {
43
+ return /* @__PURE__ */ t("span", { className: "flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1", children: [
44
+ /* @__PURE__ */ t("span", { children: [
45
+ "Researched ",
46
+ d,
47
+ " ",
48
+ d === 1 ? "source" : "sources"
49
+ ] }),
50
+ /* @__PURE__ */ e("span", { "aria-hidden": !0, className: "text-tertiary", children: "·" }),
51
+ /* @__PURE__ */ e("span", { className: "text-xs text-tertiary tabular-nums", children: r }),
52
+ n != null && /* @__PURE__ */ t(K, { children: [
53
+ /* @__PURE__ */ e("span", { "aria-hidden": !0, className: "text-tertiary", children: "·" }),
54
+ /* @__PURE__ */ t("span", { className: "text-xs text-tertiary", children: [
55
+ "first insight",
56
+ " ",
57
+ /* @__PURE__ */ e("span", { className: "tabular-nums", children: n })
58
+ ] })
59
+ ] })
60
+ ] });
61
+ }
62
+ const ae = s.forwardRef(
63
+ ({
64
+ status: r,
65
+ elapsed: n,
66
+ sourceCount: d,
67
+ firstInsight: N,
68
+ sticky: b = !1,
69
+ activity: o,
70
+ activityKey: P,
71
+ stepIndex: g,
72
+ stepCount: R,
73
+ summary: f,
74
+ open: w,
75
+ defaultOpen: U = !1,
76
+ onOpenChange: a,
77
+ children: _,
78
+ className: $,
79
+ role: q,
80
+ "aria-label": B,
81
+ "aria-busy": G,
82
+ ...H
83
+ }, J) => {
84
+ const c = w !== void 0, i = o != null, [Q, p] = s.useState(
85
+ !i && r === "active" || U
86
+ ), k = s.useRef(r), h = s.useRef(!1), S = s.useRef(null), x = s.useRef(null), y = c ? w : Q, v = !i && r === "active" || y;
87
+ s.useLayoutEffect(() => {
88
+ var E, A;
89
+ const u = k.current;
90
+ if (k.current = r, r === "active") {
91
+ u !== "active" && (h.current = !1), u !== "active" && !i && !c && p(!0);
92
+ return;
93
+ }
94
+ if (u !== "active" || h.current && i) return;
95
+ const z = document.activeElement;
96
+ z && ((E = S.current) != null && E.contains(z)) && ((A = x.current) == null || A.focus()), c || p(!1), a == null || a(!1);
97
+ }, [i, c, a, r]);
98
+ const W = s.useCallback(
99
+ (u) => {
100
+ !i && r !== "complete" || (h.current = !0, c || p(u), a == null || a(u));
101
+ },
102
+ [i, c, a, r]
103
+ ), l = r === "active", X = l ? `activity-${P ?? (typeof o == "string" ? o : "current")}` : "summary";
104
+ return /* @__PURE__ */ t(
105
+ O,
106
+ {
107
+ ref: J,
108
+ open: v,
109
+ onOpenChange: W,
110
+ role: q ?? "region",
111
+ "aria-label": B ?? "Research activity",
112
+ "aria-busy": G ?? (l || void 0),
113
+ ...H,
114
+ "data-slot": "research-activity",
115
+ "data-status": r,
116
+ className: m(re({ status: r }), $),
117
+ children: [
118
+ /* @__PURE__ */ e("span", { className: "sr-only", "aria-live": "polite", "aria-atomic": "true", children: l ? "Research in progress" : "Research complete" }),
119
+ i ? /* @__PURE__ */ e(j, { asChild: !0, children: /* @__PURE__ */ t(
120
+ "button",
121
+ {
122
+ ref: x,
123
+ type: "button",
124
+ "data-slot": "research-activity-trigger",
125
+ className: m(
126
+ "group/research-trigger flex min-h-9 w-full cursor-pointer items-center gap-2.5 rounded-sm py-1 text-left text-sm outline-none",
127
+ "transition-[color,transform] duration-(--duration-fast) ease-out hover:text-primary active:scale-(--scale-press)",
128
+ "focus-visible:ring-3 focus-visible:ring-ring motion-reduce:transition-none",
129
+ b && "sticky top-0 z-10 bg-background"
130
+ ),
131
+ children: [
132
+ /* @__PURE__ */ t("span", { className: "sr-only", children: [
133
+ v ? "Collapse" : "Expand",
134
+ " research activity:",
135
+ " "
136
+ ] }),
137
+ /* @__PURE__ */ e("span", { "aria-hidden": !0, className: "flex size-4 shrink-0 items-center justify-center", children: l ? /* @__PURE__ */ e(L, { size: "sm", color: "current", role: "presentation" }) : /* @__PURE__ */ e(M, { className: "size-4" }) }),
138
+ /* @__PURE__ */ e(Y, { reducedMotion: "user", children: /* @__PURE__ */ e("span", { className: "relative h-5 min-w-0 flex-1 overflow-hidden", children: /* @__PURE__ */ e(Z, { initial: !1, children: /* @__PURE__ */ e(
139
+ C.span,
140
+ {
141
+ variants: te,
142
+ initial: "initial",
143
+ animate: "animate",
144
+ exit: "exit",
145
+ className: "absolute inset-0 flex items-center truncate whitespace-nowrap",
146
+ children: l ? typeof o == "string" ? /* @__PURE__ */ e(D, { as: "span", className: "truncate text-sm", children: o }) : o : f !== void 0 ? f : /* @__PURE__ */ e(
147
+ F,
148
+ {
149
+ elapsed: n,
150
+ firstInsight: N,
151
+ sourceCount: d
152
+ }
153
+ )
154
+ },
155
+ X
156
+ ) }) }) }),
157
+ l && /* @__PURE__ */ t("span", { className: "shrink-0 text-xs text-tertiary tabular-nums", children: [
158
+ g != null && R != null && /* @__PURE__ */ t(K, { children: [
159
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Step " }),
160
+ g,
161
+ " of ",
162
+ R,
163
+ /* @__PURE__ */ e("span", { "aria-hidden": !0, children: " · " })
164
+ ] }),
165
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Elapsed " }),
166
+ n
167
+ ] }),
168
+ /* @__PURE__ */ e(
169
+ T,
170
+ {
171
+ "aria-hidden": !0,
172
+ className: m(
173
+ "size-4 shrink-0 text-tertiary transition-transform duration-(--duration-normal) ease-out motion-reduce:transition-none",
174
+ v && "rotate-180"
175
+ )
176
+ }
177
+ )
178
+ ]
179
+ }
180
+ ) }) : l ? /* @__PURE__ */ t(
181
+ "div",
182
+ {
183
+ "data-slot": "research-activity-header",
184
+ className: "flex min-h-9 w-full items-center gap-2.5 py-1 text-left",
185
+ children: [
186
+ /* @__PURE__ */ e(
187
+ L,
188
+ {
189
+ size: "sm",
190
+ color: "current",
191
+ role: "presentation",
192
+ "aria-hidden": !0
193
+ }
194
+ ),
195
+ /* @__PURE__ */ e(D, { as: "span", className: "text-sm", children: "Researching…" }),
196
+ /* @__PURE__ */ t("span", { className: "ml-auto shrink-0 text-xs text-tertiary tabular-nums", children: [
197
+ /* @__PURE__ */ e("span", { className: "sr-only", children: "Elapsed " }),
198
+ n
199
+ ] })
200
+ ]
201
+ }
202
+ ) : /* @__PURE__ */ e(j, { asChild: !0, children: /* @__PURE__ */ t(
203
+ "button",
204
+ {
205
+ ref: x,
206
+ type: "button",
207
+ "data-slot": "research-activity-trigger",
208
+ className: m(
209
+ "group/research-trigger flex min-h-9 w-full cursor-pointer items-center gap-2 rounded-sm py-1 text-left text-sm outline-none",
210
+ "transition-[color,transform] duration-(--duration-fast) ease-out hover:text-primary active:scale-(--scale-press)",
211
+ "focus-visible:ring-3 focus-visible:ring-ring motion-reduce:transition-none",
212
+ b && "sticky top-0 z-10 bg-background"
213
+ ),
214
+ children: [
215
+ /* @__PURE__ */ t("span", { className: "sr-only", children: [
216
+ y ? "Collapse" : "Expand",
217
+ " research activity:",
218
+ " "
219
+ ] }),
220
+ /* @__PURE__ */ e(M, { "aria-hidden": !0, className: "size-4 shrink-0" }),
221
+ /* @__PURE__ */ e("span", { className: "min-w-0 flex-1", children: f !== void 0 ? f : /* @__PURE__ */ e(
222
+ F,
223
+ {
224
+ elapsed: n,
225
+ firstInsight: N,
226
+ sourceCount: d
227
+ }
228
+ ) }),
229
+ /* @__PURE__ */ e(
230
+ T,
231
+ {
232
+ "aria-hidden": !0,
233
+ className: m(
234
+ "size-4 shrink-0 text-tertiary transition-transform duration-(--duration-normal) ease-out motion-reduce:transition-none",
235
+ y && "rotate-180"
236
+ )
237
+ }
238
+ )
239
+ ]
240
+ }
241
+ ) }),
242
+ /* @__PURE__ */ e(
243
+ ee,
244
+ {
245
+ ref: S,
246
+ forceMount: !0,
247
+ "data-slot": "research-activity-content",
248
+ className: "mt-3 overflow-hidden text-foreground outline-none data-[state=closed]:hidden",
249
+ children: _
250
+ }
251
+ )
252
+ ]
253
+ }
254
+ );
255
+ }
256
+ );
257
+ ae.displayName = "ResearchActivity";
258
+ export {
259
+ ae as ResearchActivity
260
+ };
@@ -4,48 +4,52 @@ import { isValidElement as c } from "react";
4
4
  import { Collapsible as u, CollapsibleContent as m, CollapsibleTrigger as p } from "../collapsible.js";
5
5
  import { Badge as f } from "../badge.js";
6
6
  import { Wrench as g, ChevronDown as h, CloseCircle as x, CheckCircle as b, Clock as N, CircleDashed as v } from "../../lib/icons.js";
7
- import { cn as t } from "../../lib/cn.js";
8
- const y = ({ className: e, ...n }) => /* @__PURE__ */ o(
7
+ import { cn as r } from "../../lib/cn.js";
8
+ const w = ({ className: e, ...t }) => /* @__PURE__ */ o(
9
9
  u,
10
10
  {
11
- className: t(
11
+ className: r(
12
12
  "not-prose group/tool w-full overflow-hidden rounded-xl bg-card",
13
13
  e
14
14
  ),
15
- ...n
15
+ ...t
16
16
  }
17
17
  );
18
- y.displayName = "Tool";
19
- const w = {
18
+ w.displayName = "Tool";
19
+ const y = {
20
20
  "input-streaming": { label: "Pending", color: "default", icon: v },
21
21
  "input-available": { label: "Running", color: "info", icon: N, pulse: !0 },
22
22
  "output-available": { label: "Completed", color: "success", icon: b },
23
23
  "output-error": { label: "Error", color: "danger", icon: x }
24
24
  }, C = ({ state: e }) => {
25
- const { label: n, color: r, icon: a, pulse: i } = w[e];
26
- return /* @__PURE__ */ l(f, { variant: "soft", color: r, children: [
25
+ const { label: t, color: n, icon: a, pulse: i } = y[e];
26
+ return /* @__PURE__ */ l(f, { variant: "soft", color: n, children: [
27
27
  /* @__PURE__ */ o(
28
28
  a,
29
29
  {
30
- className: t(
30
+ className: r(
31
31
  "size-3",
32
32
  i && "animate-pulse motion-reduce:animate-none"
33
33
  ),
34
34
  "aria-hidden": !0
35
35
  }
36
36
  ),
37
- n
37
+ t
38
38
  ] });
39
- }, T = ({
39
+ };
40
+ function T(e) {
41
+ return e.split("-").slice(1).join("-") || e;
42
+ }
43
+ const S = ({
40
44
  className: e,
41
- title: n,
42
- type: r,
45
+ title: t,
46
+ type: n,
43
47
  state: a,
44
48
  ...i
45
49
  }) => /* @__PURE__ */ l(
46
50
  p,
47
51
  {
48
- className: t(
52
+ className: r(
49
53
  "group/tool-header flex w-full items-center justify-between gap-4 px-4 py-3 text-left transition-colors hover:bg-muted motion-reduce:transition-none",
50
54
  "outline-none focus-visible:ring-3 focus-visible:ring-ring",
51
55
  e
@@ -54,7 +58,7 @@ const w = {
54
58
  children: [
55
59
  /* @__PURE__ */ l("div", { className: "flex items-center gap-2", children: [
56
60
  /* @__PURE__ */ o(g, { className: "size-4 shrink-0 text-tertiary", "aria-hidden": !0 }),
57
- /* @__PURE__ */ o("span", { className: "font-medium text-base", children: n ?? r.split("-").slice(1).join("-") }),
61
+ /* @__PURE__ */ o("span", { className: "font-medium text-base", children: t ?? T(n) }),
58
62
  /* @__PURE__ */ o(C, { state: a })
59
63
  ] }),
60
64
  /* @__PURE__ */ o(
@@ -67,50 +71,50 @@ const w = {
67
71
  ]
68
72
  }
69
73
  );
70
- T.displayName = "ToolHeader";
71
- const S = ({ className: e, ...n }) => /* @__PURE__ */ o(
74
+ S.displayName = "ToolHeader";
75
+ const j = ({ className: e, ...t }) => /* @__PURE__ */ o(
72
76
  m,
73
77
  {
74
- className: t(
78
+ className: r(
75
79
  "overflow-hidden text-foreground outline-none",
76
80
  "data-[state=closed]:pointer-events-none",
77
81
  e
78
82
  ),
79
- ...n
83
+ ...t
80
84
  }
81
85
  );
82
- S.displayName = "ToolContent";
86
+ j.displayName = "ToolContent";
83
87
  const s = ({
84
88
  code: e,
85
- className: n
89
+ className: t
86
90
  }) => /* @__PURE__ */ o(
87
91
  "pre",
88
92
  {
89
- className: t(
93
+ className: r(
90
94
  "overflow-x-auto rounded-md bg-surface p-3 text-xs leading-relaxed text-foreground tabular-nums",
91
- n
95
+ t
92
96
  ),
93
97
  children: /* @__PURE__ */ o("code", { children: e })
94
98
  }
95
- ), d = ({ children: e }) => /* @__PURE__ */ o("h4", { className: "text-xs font-medium uppercase tracking-wide text-tertiary", children: e }), j = ({ className: e, input: n, ...r }) => /* @__PURE__ */ l("div", { className: t("space-y-2 overflow-hidden p-4", e), ...r, children: [
99
+ ), d = ({ children: e }) => /* @__PURE__ */ o("h4", { className: "text-xs font-medium uppercase tracking-wide text-tertiary", children: e }), k = ({ className: e, input: t, ...n }) => /* @__PURE__ */ l("div", { className: r("space-y-2 overflow-hidden p-4", e), ...n, children: [
96
100
  /* @__PURE__ */ o(d, { children: "Parameters" }),
97
- /* @__PURE__ */ o(s, { code: JSON.stringify(n, null, 2) })
101
+ /* @__PURE__ */ o(s, { code: JSON.stringify(t, null, 2) })
98
102
  ] });
99
- j.displayName = "ToolInput";
100
- const k = (e) => typeof e == "object" && e !== null && !c(e) ? /* @__PURE__ */ o(s, { code: JSON.stringify(e, null, 2) }) : typeof e == "string" ? /* @__PURE__ */ o("div", { className: "rounded-md bg-surface p-3 text-xs leading-relaxed text-foreground whitespace-pre-wrap", children: e }) : e, O = ({
103
+ k.displayName = "ToolInput";
104
+ const O = (e) => typeof e == "object" && e !== null && !c(e) ? /* @__PURE__ */ o(s, { code: JSON.stringify(e, null, 2) }) : typeof e == "string" ? /* @__PURE__ */ o("div", { className: "rounded-md bg-surface p-3 text-xs leading-relaxed text-foreground whitespace-pre-wrap", children: e }) : e, P = ({
101
105
  className: e,
102
- output: n,
103
- errorText: r,
106
+ output: t,
107
+ errorText: n,
104
108
  ...a
105
- }) => n || r ? /* @__PURE__ */ l("div", { className: t("space-y-2 p-4", e), ...a, children: [
106
- /* @__PURE__ */ o(d, { children: r ? "Error" : "Result" }),
107
- r ? /* @__PURE__ */ o("div", { className: "rounded-md bg-danger-50 p-3 text-xs leading-relaxed text-danger-700 whitespace-pre-wrap", children: r }) : /* @__PURE__ */ o("div", { className: "overflow-x-auto text-xs text-foreground [&_table]:w-full", children: k(n) })
109
+ }) => t || n ? /* @__PURE__ */ l("div", { className: r("space-y-2 p-4", e), ...a, children: [
110
+ /* @__PURE__ */ o(d, { children: n ? "Error" : "Result" }),
111
+ n ? /* @__PURE__ */ o("div", { className: "rounded-md bg-danger-50 p-3 text-xs leading-relaxed text-danger-700 whitespace-pre-wrap", children: n }) : /* @__PURE__ */ o("div", { className: "overflow-x-auto text-xs text-foreground [&_table]:w-full", children: O(t) })
108
112
  ] }) : null;
109
- O.displayName = "ToolOutput";
113
+ P.displayName = "ToolOutput";
110
114
  export {
111
- y as Tool,
112
- S as ToolContent,
113
- T as ToolHeader,
114
- j as ToolInput,
115
- O as ToolOutput
115
+ w as Tool,
116
+ j as ToolContent,
117
+ S as ToolHeader,
118
+ k as ToolInput,
119
+ P as ToolOutput
116
120
  };
@@ -20,6 +20,7 @@ export declare const AnswerSourceSchema: z.ZodObject<{
20
20
  id: z.ZodString;
21
21
  label: z.ZodString;
22
22
  description: z.ZodOptional<z.ZodString>;
23
+ href: z.ZodOptional<z.ZodString>;
23
24
  }, z.core.$strip>;
24
25
  export declare const AnswerSignalSchema: z.ZodObject<{
25
26
  label: z.ZodOptional<z.ZodString>;
@@ -104,6 +105,7 @@ export declare const ComparisonAnswerSchema: z.ZodObject<{
104
105
  id: z.ZodString;
105
106
  label: z.ZodString;
106
107
  description: z.ZodOptional<z.ZodString>;
108
+ href: z.ZodOptional<z.ZodString>;
107
109
  }, z.core.$strip>>>;
108
110
  }, z.core.$strip>;
109
111
  export declare const TrendAnswerSchema: z.ZodObject<{
@@ -203,6 +205,7 @@ export declare const TrendAnswerSchema: z.ZodObject<{
203
205
  id: z.ZodString;
204
206
  label: z.ZodString;
205
207
  description: z.ZodOptional<z.ZodString>;
208
+ href: z.ZodOptional<z.ZodString>;
206
209
  }, z.core.$strip>>>;
207
210
  }, z.core.$strip>;
208
211
  export declare const StatusAnswerSchema: z.ZodObject<{
@@ -257,6 +260,7 @@ export declare const StatusAnswerSchema: z.ZodObject<{
257
260
  id: z.ZodString;
258
261
  label: z.ZodString;
259
262
  description: z.ZodOptional<z.ZodString>;
263
+ href: z.ZodOptional<z.ZodString>;
260
264
  }, z.core.$strip>>>;
261
265
  }, z.core.$strip>;
262
266
  export declare const BreakdownAnswerSchema: z.ZodObject<{
@@ -303,6 +307,7 @@ export declare const BreakdownAnswerSchema: z.ZodObject<{
303
307
  id: z.ZodString;
304
308
  label: z.ZodString;
305
309
  description: z.ZodOptional<z.ZodString>;
310
+ href: z.ZodOptional<z.ZodString>;
306
311
  }, z.core.$strip>>>;
307
312
  }, z.core.$strip>;
308
313
  export declare const ExplanationAnswerSchema: z.ZodObject<{
@@ -336,6 +341,7 @@ export declare const ExplanationAnswerSchema: z.ZodObject<{
336
341
  id: z.ZodString;
337
342
  label: z.ZodString;
338
343
  description: z.ZodOptional<z.ZodString>;
344
+ href: z.ZodOptional<z.ZodString>;
339
345
  }, z.core.$strip>>>;
340
346
  }, z.core.$strip>;
341
347
  /** The complete model-facing contract. No free-form layout nodes are allowed. */
@@ -410,6 +416,7 @@ export declare const AnswerSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
410
416
  id: z.ZodString;
411
417
  label: z.ZodString;
412
418
  description: z.ZodOptional<z.ZodString>;
419
+ href: z.ZodOptional<z.ZodString>;
413
420
  }, z.core.$strip>>>;
414
421
  }, z.core.$strip>, z.ZodObject<{
415
422
  kind: z.ZodLiteral<"trend">;
@@ -508,6 +515,7 @@ export declare const AnswerSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
508
515
  id: z.ZodString;
509
516
  label: z.ZodString;
510
517
  description: z.ZodOptional<z.ZodString>;
518
+ href: z.ZodOptional<z.ZodString>;
511
519
  }, z.core.$strip>>>;
512
520
  }, z.core.$strip>, z.ZodObject<{
513
521
  kind: z.ZodLiteral<"status">;
@@ -561,6 +569,7 @@ export declare const AnswerSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
561
569
  id: z.ZodString;
562
570
  label: z.ZodString;
563
571
  description: z.ZodOptional<z.ZodString>;
572
+ href: z.ZodOptional<z.ZodString>;
564
573
  }, z.core.$strip>>>;
565
574
  }, z.core.$strip>, z.ZodObject<{
566
575
  kind: z.ZodLiteral<"breakdown">;
@@ -606,6 +615,7 @@ export declare const AnswerSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
606
615
  id: z.ZodString;
607
616
  label: z.ZodString;
608
617
  description: z.ZodOptional<z.ZodString>;
618
+ href: z.ZodOptional<z.ZodString>;
609
619
  }, z.core.$strip>>>;
610
620
  }, z.core.$strip>, z.ZodObject<{
611
621
  kind: z.ZodLiteral<"explanation">;
@@ -638,6 +648,7 @@ export declare const AnswerSpecSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
638
648
  id: z.ZodString;
639
649
  label: z.ZodString;
640
650
  description: z.ZodOptional<z.ZodString>;
651
+ href: z.ZodOptional<z.ZodString>;
641
652
  }, z.core.$strip>>>;
642
653
  }, z.core.$strip>], "kind">;
643
654
  export type AnswerTone = z.infer<typeof AnswerToneSchema>;
@@ -724,6 +735,7 @@ export declare const answerTool: {
724
735
  id: z.ZodString;
725
736
  label: z.ZodString;
726
737
  description: z.ZodOptional<z.ZodString>;
738
+ href: z.ZodOptional<z.ZodString>;
727
739
  }, z.core.$strip>>>;
728
740
  }, z.core.$strip>, z.ZodObject<{
729
741
  kind: z.ZodLiteral<"trend">;
@@ -822,6 +834,7 @@ export declare const answerTool: {
822
834
  id: z.ZodString;
823
835
  label: z.ZodString;
824
836
  description: z.ZodOptional<z.ZodString>;
837
+ href: z.ZodOptional<z.ZodString>;
825
838
  }, z.core.$strip>>>;
826
839
  }, z.core.$strip>, z.ZodObject<{
827
840
  kind: z.ZodLiteral<"status">;
@@ -875,6 +888,7 @@ export declare const answerTool: {
875
888
  id: z.ZodString;
876
889
  label: z.ZodString;
877
890
  description: z.ZodOptional<z.ZodString>;
891
+ href: z.ZodOptional<z.ZodString>;
878
892
  }, z.core.$strip>>>;
879
893
  }, z.core.$strip>, z.ZodObject<{
880
894
  kind: z.ZodLiteral<"breakdown">;
@@ -920,6 +934,7 @@ export declare const answerTool: {
920
934
  id: z.ZodString;
921
935
  label: z.ZodString;
922
936
  description: z.ZodOptional<z.ZodString>;
937
+ href: z.ZodOptional<z.ZodString>;
923
938
  }, z.core.$strip>>>;
924
939
  }, z.core.$strip>, z.ZodObject<{
925
940
  kind: z.ZodLiteral<"explanation">;
@@ -952,6 +967,7 @@ export declare const answerTool: {
952
967
  id: z.ZodString;
953
968
  label: z.ZodString;
954
969
  description: z.ZodOptional<z.ZodString>;
970
+ href: z.ZodOptional<z.ZodString>;
955
971
  }, z.core.$strip>>>;
956
972
  }, z.core.$strip>], "kind">;
957
973
  };