@agents24/chat-react 0.5.36 → 0.5.37

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 (40) hide show
  1. package/dist/{chunk-INO5DSSJ.js → chunk-DWDHK4FZ.js} +3 -4
  2. package/dist/chunk-DWDHK4FZ.js.map +1 -0
  3. package/dist/generated/delegation-types.d.ts +3 -2
  4. package/dist/generated/run-usage.d.ts +11 -0
  5. package/dist/registry/agents24-chat.json +13 -13
  6. package/dist/runtime/index.cjs +25 -9
  7. package/dist/runtime/index.cjs.map +1 -1
  8. package/dist/runtime/index.js +24 -7
  9. package/dist/runtime/index.js.map +1 -1
  10. package/dist/runtime/input-contract.d.ts +1 -1
  11. package/dist/runtime/use-agent-chat-hitl.d.ts +2 -2
  12. package/dist/runtime/use-agent-chat-runtime.d.ts +4 -6
  13. package/dist/scaffold/app.d.ts +2 -2
  14. package/dist/scaffold/components/chat/chat-composer.d.ts +2 -1
  15. package/dist/scaffold/components/chat/chat-message.d.ts +2 -2
  16. package/dist/scaffold/components/chat/message-parts.d.ts +2 -2
  17. package/dist/scaffold/index.cjs +17 -13
  18. package/dist/scaffold/index.cjs.map +1 -1
  19. package/dist/scaffold/index.js +11 -7
  20. package/dist/scaffold/index.js.map +1 -1
  21. package/dist/styles.css +7 -0
  22. package/dist/ui/agent-chat-composer.d.ts +2 -1
  23. package/dist/ui/agent-chat-message.d.ts +6 -2
  24. package/dist/ui/agent-response-timeline.d.ts +11 -3
  25. package/dist/ui/ask-user-interaction.d.ts +5 -1
  26. package/dist/ui/hitl-submission-status.d.ts +22 -0
  27. package/dist/ui/index.cjs +514 -337
  28. package/dist/ui/index.cjs.map +1 -1
  29. package/dist/ui/index.d.ts +1 -0
  30. package/dist/ui/index.js +510 -335
  31. package/dist/ui/index.js.map +1 -1
  32. package/dist/ui/use-agent-chat-composer.d.ts +17 -2
  33. package/dist/ui/use-audio-recorder.d.ts +15 -2
  34. package/package.json +3 -3
  35. package/scaffold/src/app.tsx +2 -1
  36. package/scaffold/src/components/chat/chat-composer.tsx +5 -3
  37. package/scaffold/src/components/chat/chat-message.tsx +3 -3
  38. package/scaffold/src/components/chat/chat-shell.tsx +2 -1
  39. package/scaffold/src/components/chat/message-parts.tsx +6 -6
  40. package/dist/chunk-INO5DSSJ.js.map +0 -1
package/dist/styles.css CHANGED
@@ -235,12 +235,19 @@ button.a24-tool-trigger:focus-visible { outline: 2px solid var(--a24-focus); out
235
235
  .a24-chat-message { display: flex; flex-direction: column; min-width: 0; width: 100%; }
236
236
  .a24-chat-message--user { gap: 0; max-width: 100%; }
237
237
  .a24-chat-message--assistant { gap: .5rem; max-width: 100%; }
238
+ .a24-chat-message-action-row--assistant { opacity: 1; pointer-events: auto; transition: opacity 150ms ease; }
239
+ @media (hover: hover) and (pointer: fine) {
240
+ .a24-chat-message-action-row--assistant { opacity: 0; pointer-events: none; }
241
+ [data-slot="message"]:is(:hover, :focus-within) .a24-chat-message-action-row--assistant,
242
+ .a24-chat-message-action-row--assistant:has([data-state="open"]) { opacity: 1; pointer-events: auto; }
243
+ }
238
244
  .a24-chat-completion-actions { animation: a24-chat-completion-actions-in 200ms cubic-bezier(.2, 0, 0, 1) both; }
239
245
  @keyframes a24-chat-completion-actions-in {
240
246
  from { filter: blur(4px); opacity: 0; transform: translateY(4px); }
241
247
  to { filter: blur(0); opacity: 1; transform: translateY(0); }
242
248
  }
243
249
  @media (prefers-reduced-motion: reduce) {
250
+ .a24-chat-message-action-row--assistant { transition: none; }
244
251
  .a24-chat-completion-actions { animation: none; }
245
252
  }
246
253
  .a24-chat-message-action-row--user { align-items: center; align-self: flex-start; display: flex; gap: .5rem; height: 2rem; margin-left: auto; margin-top: .25rem; padding-inline: .25rem; transition: opacity 150ms ease; width: auto; }
@@ -20,6 +20,7 @@ export type AgentChatComposerProps = {
20
20
  disabled?: boolean;
21
21
  forceExpanded?: boolean;
22
22
  focusKey?: string | null;
23
+ scopeKey?: string | null;
23
24
  inputToolbarContent?: React.ReactNode;
24
25
  isRunning?: boolean;
25
26
  isCancelling?: boolean;
@@ -34,4 +35,4 @@ export type AgentChatComposerProps = {
34
35
  } | null;
35
36
  textareaRef?: React.Ref<HTMLTextAreaElement>;
36
37
  };
37
- export declare function AgentChatComposer({ inputContract, recordingEnabled, contextWindow, accept, allowAttachments, className, disabled, forceExpanded, focusKey, inputToolbarContent, isRunning, isCancelling, onAttachmentCountChange, onStop, onSubmit, placeholder, restoredDraft, textareaRef, }: AgentChatComposerProps): import("react/jsx-runtime").JSX.Element;
38
+ export declare function AgentChatComposer({ inputContract, recordingEnabled, contextWindow, accept, allowAttachments, className, disabled, forceExpanded, focusKey, scopeKey, inputToolbarContent, isRunning, isCancelling, onAttachmentCountChange, onStop, onSubmit, placeholder, restoredDraft, textareaRef, }: AgentChatComposerProps): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,5 @@
1
+ import type { HitlSubmissionOptions } from "@agents24/react";
2
+ import type { HitlSubmissionLabels } from "./hitl-submission-status";
1
3
  import * as React from "react";
2
4
  import type { ChatHitlPart, ChatHitlResponse, ChatMessage } from "../types";
3
5
  import { type ChatAttachmentContentResolver } from "./adapters";
@@ -19,10 +21,12 @@ export type AgentChatMessageProps = {
19
21
  className?: string;
20
22
  contentClassName?: string;
21
23
  dir?: "ltr" | "rtl";
24
+ hitlLabels?: Partial<HitlSubmissionLabels>;
25
+ onHitlPaint?: (durationMs: number) => void;
22
26
  getHitlActionState?: (part: ChatHitlPart) => AgentChatPartActionState | undefined;
23
27
  message: ChatMessage;
24
28
  nodeActivityMode?: "default" | "all" | "hidden";
25
- onHitlAction?: (part: ChatHitlPart, response: ChatHitlResponse) => void;
29
+ onHitlAction?: (part: ChatHitlPart, response: ChatHitlResponse, options?: HitlSubmissionOptions) => void;
26
30
  Timeline?: AgentChatTimelineComponent;
27
31
  renderAssistantContent?: (input: {
28
32
  isStreaming: boolean;
@@ -45,4 +49,4 @@ export declare function AgentChatUserMessageActionRow({ children, className, }:
45
49
  children: React.ReactNode;
46
50
  className?: string;
47
51
  }): import("react/jsx-runtime").JSX.Element;
48
- export declare function AgentChatMessage({ actionHandlers, additionalActions, actions, actionsClassName, attachmentContentResolver, className, contentClassName, dir, getHitlActionState, message, nodeActivityMode, onHitlAction, Timeline, renderAssistantContent, renderUserContent, showAssistantAttachments, streamingMessageId, userMessageCollapsedLines, userMessageContent, userMessageCollapseThreshold, userMessageShowLessLabel, userMessageShowMoreLabel, }: AgentChatMessageProps): import("react/jsx-runtime").JSX.Element;
52
+ export declare function AgentChatMessage({ actionHandlers, additionalActions, actions, actionsClassName, attachmentContentResolver, className, contentClassName, dir, getHitlActionState, hitlLabels, onHitlPaint, message, nodeActivityMode, onHitlAction, Timeline, renderAssistantContent, renderUserContent, showAssistantAttachments, streamingMessageId, userMessageCollapsedLines, userMessageContent, userMessageCollapseThreshold, userMessageShowLessLabel, userMessageShowMoreLabel, }: AgentChatMessageProps): import("react/jsx-runtime").JSX.Element;
@@ -1,3 +1,5 @@
1
+ import type { HitlSubmissionOptions } from "@agents24/react";
2
+ import { type HitlSubmissionLabels } from "./hitl-submission-status";
1
3
  import * as React from "react";
2
4
  import type { ChatHitlPart, ChatHitlResponse, ChatMessage, ChatNodeActivityPart, ChatPart, ChatToolPart, ChatUiBlocksPart } from "../types";
3
5
  import type { McpConnectRequiredStatus } from "./mcp-connect-required-card";
@@ -6,14 +8,18 @@ import { type AgentChatToolSlots, type AgentChatToolViewMode } from "./tool-sess
6
8
  export type AgentChatPartActionState = {
7
9
  status?: McpConnectRequiredStatus | string;
8
10
  error?: string | null;
11
+ action?: string;
12
+ retry?: () => Promise<void>;
9
13
  };
10
14
  export type HitlActionState = AgentChatPartActionState;
11
15
  export type AgentResponseTimelineProps = {
16
+ hitlLabels?: Partial<HitlSubmissionLabels>;
17
+ onHitlPaint?: (durationMs: number) => void;
12
18
  getHitlActionState?: (part: ChatHitlPart) => AgentChatPartActionState | undefined;
13
19
  isLoading?: boolean;
14
20
  message: ChatMessage;
15
21
  nodeActivityMode?: "default" | "all" | "hidden";
16
- onHitlAction?: (part: ChatHitlPart, response: ChatHitlResponse) => void;
22
+ onHitlAction?: (part: ChatHitlPart, response: ChatHitlResponse, options?: HitlSubmissionOptions) => void;
17
23
  onNodeSelect?: (part: ChatNodeActivityPart) => void;
18
24
  parts?: readonly ChatPart[];
19
25
  renderUiBlocks?: (part: ChatUiBlocksPart) => React.ReactNode;
@@ -36,6 +42,8 @@ export declare function AgentChatToolGroup({ activeToolId, parts, }: {
36
42
  export type AgentChatPartProps = {
37
43
  activeToolId?: string | null;
38
44
  getHitlActionState?: AgentResponseTimelineProps["getHitlActionState"];
45
+ hitlLabels?: AgentResponseTimelineProps["hitlLabels"];
46
+ onHitlPaint?: AgentResponseTimelineProps["onHitlPaint"];
39
47
  isLoading?: boolean;
40
48
  isTextStreaming?: boolean;
41
49
  message: ChatMessage;
@@ -44,5 +52,5 @@ export type AgentChatPartProps = {
44
52
  responseProps?: AgentResponseTimelineProps["responseProps"];
45
53
  toolSlots?: AgentChatToolSlots;
46
54
  };
47
- export declare function AgentChatPart({ activeToolId, getHitlActionState, isLoading, isTextStreaming, message, onHitlAction, part, responseProps, toolSlots, }: AgentChatPartProps): import("react/jsx-runtime").JSX.Element | null;
48
- export declare function AgentResponseTimeline({ getHitlActionState, isLoading, message, nodeActivityMode, onHitlAction, onNodeSelect, parts: displayParts, renderUiBlocks, responseProps, toolSlots, toolViewMode, }: AgentResponseTimelineProps): import("react/jsx-runtime").JSX.Element;
55
+ export declare function AgentChatPart({ activeToolId, getHitlActionState, hitlLabels, onHitlPaint, isLoading, isTextStreaming, message, onHitlAction, part, responseProps, toolSlots, }: AgentChatPartProps): import("react/jsx-runtime").JSX.Element | null;
56
+ export declare function AgentResponseTimeline({ getHitlActionState, hitlLabels, onHitlPaint, isLoading, message, nodeActivityMode, onHitlAction, onNodeSelect, parts: displayParts, renderUiBlocks, responseProps, toolSlots, toolViewMode, }: AgentResponseTimelineProps): import("react/jsx-runtime").JSX.Element;
@@ -1,8 +1,12 @@
1
+ import { type HitlSubmissionLabels, type HitlSubmissionPresentation } from "./hitl-submission-status";
1
2
  import type { ChatHitlAnswer, ChatHitlPart } from "../types";
2
3
  export type AskUserInteractionProps = {
3
4
  error?: string | null;
5
+ submission?: HitlSubmissionPresentation;
6
+ submissionLabels?: Partial<HitlSubmissionLabels>;
7
+ onSubmissionPaint?: (durationMs: number) => void;
4
8
  isBusy?: boolean;
5
9
  onSubmit?: (answers: ChatHitlAnswer[]) => void;
6
10
  part: ChatHitlPart;
7
11
  };
8
- export declare function AskUserInteraction({ error, isBusy, onSubmit, part, }: AskUserInteractionProps): import("react/jsx-runtime").JSX.Element;
12
+ export declare function AskUserInteraction({ error, submission, submissionLabels, onSubmissionPaint, isBusy, onSubmit, part, }: AskUserInteractionProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,22 @@
1
+ export type HitlSubmissionLabels = {
2
+ submitting: string;
3
+ checking: string;
4
+ uncertain: string;
5
+ retry: string;
6
+ accepted: string;
7
+ approved: string;
8
+ rejected: string;
9
+ };
10
+ export declare const defaultHitlSubmissionLabels: HitlSubmissionLabels;
11
+ export type HitlSubmissionPresentation = {
12
+ status?: string;
13
+ action?: string;
14
+ retry?: () => Promise<void>;
15
+ };
16
+ export declare function isHitlSubmissionCompact(state?: HitlSubmissionPresentation): boolean;
17
+ /** Also available to host-owned approval cards; keeps their decision feedback consistent. */
18
+ export declare function HitlSubmissionStatus({ state, labels: overrides, onPaint }: {
19
+ state: HitlSubmissionPresentation;
20
+ labels?: Partial<HitlSubmissionLabels>;
21
+ onPaint?: (durationMs: number) => void;
22
+ }): import("react/jsx-runtime").JSX.Element;