@webless/agent 0.7.5 → 0.8.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.
package/dist/embed.js CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  resetAgentPanel,
10
10
  resolveAgentRuntimeConfig,
11
11
  submitAgentPanel
12
- } from "./chunk-CD6TKXGT.js";
12
+ } from "./chunk-JZPXXG76.js";
13
13
 
14
14
  // src/embed/mount.tsx
15
15
  import { createRoot } from "react-dom/client";
package/dist/react.cjs CHANGED
@@ -24,6 +24,7 @@ __export(react_exports, {
24
24
  AGENT_STRUCTURED_TOOL_INPUT_HEADER: () => AGENT_STRUCTURED_TOOL_INPUT_HEADER,
25
25
  AGENT_STRUCTURED_TOOL_INPUT_SCHEMA_VERSION: () => AGENT_STRUCTURED_TOOL_INPUT_SCHEMA_VERSION,
26
26
  AgentRail: () => AgentRail,
27
+ AgentTranscript: () => AgentTranscript,
27
28
  AgentWidget: () => AgentWidget,
28
29
  AssistEdgeTab: () => AssistEdgeTab,
29
30
  DEFAULT_AGENT_PLACEMENT: () => DEFAULT_AGENT_PLACEMENT,
@@ -3577,6 +3578,48 @@ var defaultDarkAgentRailTheme = {
3577
3578
  danger: "#ff8da1"
3578
3579
  };
3579
3580
 
3581
+ // src/react/lib/agent-theme.ts
3582
+ function agentThemeStyle(theme, resolvedColorScheme) {
3583
+ const brandedTheme = { ...defaultAgentRailTheme, ...theme };
3584
+ const resolvedTheme = resolvedColorScheme === "dark" ? {
3585
+ ...brandedTheme,
3586
+ brand: theme?.brand ?? defaultDarkAgentRailTheme.brand,
3587
+ brandDeep: theme?.brandDeep ?? defaultDarkAgentRailTheme.brandDeep,
3588
+ brandSoft: theme?.brandSoft ?? `color-mix(in srgb, ${theme?.brand ?? defaultDarkAgentRailTheme.brand} 18%, ${defaultDarkAgentRailTheme.surface})`,
3589
+ border: theme?.border ?? defaultDarkAgentRailTheme.border,
3590
+ danger: theme?.danger ?? defaultDarkAgentRailTheme.danger,
3591
+ onBrand: theme?.onBrand ?? defaultDarkAgentRailTheme.onBrand,
3592
+ success: theme?.success ?? defaultDarkAgentRailTheme.success,
3593
+ surface: theme?.surface ?? defaultDarkAgentRailTheme.surface,
3594
+ surfaceMuted: theme?.surfaceMuted ?? defaultDarkAgentRailTheme.surfaceMuted,
3595
+ text: theme?.text ?? defaultDarkAgentRailTheme.text,
3596
+ textMuted: theme?.textMuted ?? defaultDarkAgentRailTheme.textMuted,
3597
+ textSubtle: theme?.textSubtle ?? defaultDarkAgentRailTheme.textSubtle,
3598
+ visitorBubble: theme?.visitorBubble ?? theme?.brand ?? defaultDarkAgentRailTheme.visitorBubble
3599
+ } : brandedTheme;
3600
+ return {
3601
+ "--rail-width": resolvedTheme.railMaxWidth,
3602
+ "--as-rail-max-width": resolvedTheme.railMaxWidth,
3603
+ "--as-brand": resolvedTheme.brand,
3604
+ "--as-brand-soft": resolvedTheme.brandSoft,
3605
+ "--as-brand-deep": resolvedTheme.brandDeep,
3606
+ "--as-surface": resolvedTheme.surface,
3607
+ "--as-surface-muted": resolvedTheme.surfaceMuted,
3608
+ "--as-text": resolvedTheme.text,
3609
+ "--as-text-muted": resolvedTheme.textMuted,
3610
+ "--as-text-subtle": resolvedTheme.textSubtle,
3611
+ "--as-border": resolvedTheme.border,
3612
+ "--as-visitor-bubble": resolvedTheme.visitorBubble,
3613
+ "--as-visitor-text": resolvedTheme.visitorText,
3614
+ "--as-on-brand": resolvedTheme.onBrand,
3615
+ "--as-success": resolvedTheme.success,
3616
+ "--as-danger": resolvedTheme.danger,
3617
+ "--as-font-body": resolvedTheme.fontBody,
3618
+ "--as-font-display": resolvedTheme.fontDisplay,
3619
+ colorScheme: resolvedColorScheme
3620
+ };
3621
+ }
3622
+
3580
3623
  // src/react/hooks/useAgentColorScheme.ts
3581
3624
  var import_react4 = require("react");
3582
3625
  var DARK_MODE_QUERY = "(prefers-color-scheme: dark)";
@@ -6185,44 +6228,7 @@ function AgentRail({
6185
6228
  const [failedLogoUrl, setFailedLogoUrl] = (0, import_react14.useState)(null);
6186
6229
  const showBrandLogo = Boolean(resolvedBrandLogoUrl) && failedLogoUrl !== resolvedBrandLogoUrl;
6187
6230
  const resolvedColorScheme = useAgentColorScheme(colorScheme);
6188
- const brandedTheme = { ...defaultAgentRailTheme, ...theme };
6189
- const resolvedTheme = resolvedColorScheme === "dark" ? {
6190
- ...brandedTheme,
6191
- brand: theme?.brand ?? defaultDarkAgentRailTheme.brand,
6192
- brandDeep: theme?.brandDeep ?? defaultDarkAgentRailTheme.brandDeep,
6193
- brandSoft: theme?.brandSoft ?? `color-mix(in srgb, ${theme?.brand ?? defaultDarkAgentRailTheme.brand} 18%, ${defaultDarkAgentRailTheme.surface})`,
6194
- border: theme?.border ?? defaultDarkAgentRailTheme.border,
6195
- danger: theme?.danger ?? defaultDarkAgentRailTheme.danger,
6196
- onBrand: theme?.onBrand ?? defaultDarkAgentRailTheme.onBrand,
6197
- success: theme?.success ?? defaultDarkAgentRailTheme.success,
6198
- surface: theme?.surface ?? defaultDarkAgentRailTheme.surface,
6199
- surfaceMuted: theme?.surfaceMuted ?? defaultDarkAgentRailTheme.surfaceMuted,
6200
- text: theme?.text ?? defaultDarkAgentRailTheme.text,
6201
- textMuted: theme?.textMuted ?? defaultDarkAgentRailTheme.textMuted,
6202
- textSubtle: theme?.textSubtle ?? defaultDarkAgentRailTheme.textSubtle,
6203
- visitorBubble: theme?.visitorBubble ?? theme?.brand ?? defaultDarkAgentRailTheme.visitorBubble
6204
- } : brandedTheme;
6205
- const railStyle = {
6206
- "--rail-width": resolvedTheme.railMaxWidth,
6207
- "--as-rail-max-width": resolvedTheme.railMaxWidth,
6208
- "--as-brand": resolvedTheme.brand,
6209
- "--as-brand-soft": resolvedTheme.brandSoft,
6210
- "--as-brand-deep": resolvedTheme.brandDeep,
6211
- "--as-surface": resolvedTheme.surface,
6212
- "--as-surface-muted": resolvedTheme.surfaceMuted,
6213
- "--as-text": resolvedTheme.text,
6214
- "--as-text-muted": resolvedTheme.textMuted,
6215
- "--as-text-subtle": resolvedTheme.textSubtle,
6216
- "--as-border": resolvedTheme.border,
6217
- "--as-visitor-bubble": resolvedTheme.visitorBubble,
6218
- "--as-visitor-text": resolvedTheme.visitorText,
6219
- "--as-on-brand": resolvedTheme.onBrand,
6220
- "--as-success": resolvedTheme.success,
6221
- "--as-danger": resolvedTheme.danger,
6222
- "--as-font-body": resolvedTheme.fontBody,
6223
- "--as-font-display": resolvedTheme.fontDisplay,
6224
- colorScheme: resolvedColorScheme
6225
- };
6231
+ const railStyle = agentThemeStyle(theme, resolvedColorScheme);
6226
6232
  const pendingInputRequests = (state.pendingInputs ?? []).filter(
6227
6233
  (request) => shouldRenderVisitorInputCard(request) && (!state.pendingOffer || request.kind === "tool-approval")
6228
6234
  );
@@ -7118,12 +7124,71 @@ function AgentWidget({
7118
7124
  ) : null
7119
7125
  ] });
7120
7126
  }
7127
+
7128
+ // src/react/components/AgentTranscript/AgentTranscript.tsx
7129
+ var import_jsx_runtime20 = require("react/jsx-runtime");
7130
+ var timestampFormat = new Intl.DateTimeFormat("en-US", {
7131
+ month: "short",
7132
+ day: "numeric",
7133
+ hour: "numeric",
7134
+ minute: "2-digit",
7135
+ timeZone: "UTC"
7136
+ });
7137
+ function defaultTimestamp(createdAt) {
7138
+ return `${timestampFormat.format(createdAt)} UTC`;
7139
+ }
7140
+ function AgentTranscript({
7141
+ messages,
7142
+ theme,
7143
+ colorScheme,
7144
+ agentLabel = "Agent",
7145
+ visitorLabel = "Visitor",
7146
+ label = "Conversation transcript",
7147
+ formatTimestamp = defaultTimestamp
7148
+ }) {
7149
+ const scheme = useAgentColorScheme(colorScheme);
7150
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7151
+ "ol",
7152
+ {
7153
+ className: "webless-agent-root agent-transcript not-typeset",
7154
+ "data-not-typeset": "",
7155
+ "data-color-scheme": scheme,
7156
+ "aria-label": label,
7157
+ style: agentThemeStyle(theme, scheme),
7158
+ children: messages.map((message) => {
7159
+ const date = new Date(message.createdAt);
7160
+ const validTimestamp = Number.isFinite(date.getTime());
7161
+ return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
7162
+ "li",
7163
+ {
7164
+ className: `agent-transcript__message agent-transcript__message--${message.role}`,
7165
+ children: [
7166
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "agent-transcript__meta", children: [
7167
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { children: message.role === "visitor" ? visitorLabel : agentLabel }),
7168
+ validTimestamp ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("time", { dateTime: date.toISOString(), children: formatTimestamp(message.createdAt) }) : null
7169
+ ] }),
7170
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7171
+ MessageBubble,
7172
+ {
7173
+ message: message.role === "agent" ? { ...message, streaming: false } : message,
7174
+ bookingDisabled: true
7175
+ }
7176
+ )
7177
+ ]
7178
+ },
7179
+ message.id
7180
+ );
7181
+ })
7182
+ }
7183
+ );
7184
+ }
7121
7185
  // Annotate the CommonJS export names for ESM import in node:
7122
7186
  0 && (module.exports = {
7123
7187
  AGENT_ANSWER_FEEDBACK_EVENT_TYPE,
7124
7188
  AGENT_STRUCTURED_TOOL_INPUT_HEADER,
7125
7189
  AGENT_STRUCTURED_TOOL_INPUT_SCHEMA_VERSION,
7126
7190
  AgentRail,
7191
+ AgentTranscript,
7127
7192
  AgentWidget,
7128
7193
  AssistEdgeTab,
7129
7194
  DEFAULT_AGENT_PLACEMENT,