@flamingo-stack/openframe-frontend-core 0.0.351-snapshot.20260701140524 → 0.0.351
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/{chunk-ED72ZQV7.cjs → chunk-46Z3O6SN.cjs} +5 -5
- package/dist/{chunk-ED72ZQV7.cjs.map → chunk-46Z3O6SN.cjs.map} +1 -1
- package/dist/{chunk-N7BREY67.js → chunk-4WVVMKMC.js} +4 -4
- package/dist/{chunk-IM5HXLFT.js → chunk-5F45BY24.js} +2 -2
- package/dist/{chunk-42PSJKMY.cjs → chunk-63ISTNQW.cjs} +25 -25
- package/dist/{chunk-42PSJKMY.cjs.map → chunk-63ISTNQW.cjs.map} +1 -1
- package/dist/{chunk-HSZJGPVA.js → chunk-A6YFD2SK.js} +116 -173
- package/dist/chunk-A6YFD2SK.js.map +1 -0
- package/dist/{chunk-K2NJ5VHQ.cjs → chunk-BMQ5CBFD.cjs} +62 -62
- package/dist/{chunk-K2NJ5VHQ.cjs.map → chunk-BMQ5CBFD.cjs.map} +1 -1
- package/dist/{chunk-3QWEET5C.js → chunk-DJZ64AF6.js} +2 -2
- package/dist/{chunk-TM455OW5.js → chunk-EKU6D26E.js} +4 -4
- package/dist/{chunk-FU5KF6MA.cjs → chunk-GJZL72ON.cjs} +7 -7
- package/dist/{chunk-FU5KF6MA.cjs.map → chunk-GJZL72ON.cjs.map} +1 -1
- package/dist/{chunk-QP7TLRLH.cjs → chunk-HMUIRZ46.cjs} +115 -172
- package/dist/chunk-HMUIRZ46.cjs.map +1 -0
- package/dist/{chunk-JQGLBAGS.js → chunk-JBWB3U3P.js} +2 -2
- package/dist/{chunk-FQ4VGHPO.js → chunk-MLW25MGY.js} +2 -2
- package/dist/{chunk-HPVOWKIO.cjs → chunk-NEIOYJIE.cjs} +15 -15
- package/dist/{chunk-HPVOWKIO.cjs.map → chunk-NEIOYJIE.cjs.map} +1 -1
- package/dist/{chunk-IHXJKIFM.cjs → chunk-NIRMBPFP.cjs} +12 -12
- package/dist/{chunk-IHXJKIFM.cjs.map → chunk-NIRMBPFP.cjs.map} +1 -1
- package/dist/{chunk-M247JWGY.js → chunk-Q3VK7WI2.js} +4 -4
- package/dist/{chunk-DY4Y7QQB.cjs → chunk-QGBJKB6V.cjs} +31 -31
- package/dist/{chunk-DY4Y7QQB.cjs.map → chunk-QGBJKB6V.cjs.map} +1 -1
- package/dist/{chunk-T2ARJIH6.cjs → chunk-TH3HPNMO.cjs} +56 -56
- package/dist/{chunk-T2ARJIH6.cjs.map → chunk-TH3HPNMO.cjs.map} +1 -1
- package/dist/{chunk-RTKRXPPG.cjs → chunk-UQFTSFIF.cjs} +26 -26
- package/dist/{chunk-RTKRXPPG.cjs.map → chunk-UQFTSFIF.cjs.map} +1 -1
- package/dist/{chunk-7CTSKYAV.js → chunk-VY6AAUCK.js} +2 -2
- package/dist/{chunk-3SYTPXCP.cjs → chunk-VZ7TICMR.cjs} +37 -37
- package/dist/{chunk-3SYTPXCP.cjs.map → chunk-VZ7TICMR.cjs.map} +1 -1
- package/dist/{chunk-GGCOLMNS.js → chunk-WB2EWYSF.js} +2 -2
- package/dist/{chunk-ZRLPXSZC.cjs → chunk-XZVVLO4V.cjs} +9 -9
- package/dist/{chunk-ZRLPXSZC.cjs.map → chunk-XZVVLO4V.cjs.map} +1 -1
- package/dist/{chunk-66D3JL6J.js → chunk-YBL3JURC.js} +4 -4
- package/dist/{chunk-ONMA32BY.js → chunk-YIFJJCFB.js} +2 -2
- package/dist/components/case-studies/index.cjs +8 -8
- package/dist/components/case-studies/index.js +2 -2
- package/dist/components/chat/approval-batch-message.d.ts +1 -7
- package/dist/components/chat/approval-batch-message.d.ts.map +1 -1
- package/dist/components/chat/approval-request-message.d.ts.map +1 -1
- package/dist/components/chat/chat-message-enhanced.d.ts.map +1 -1
- package/dist/components/chat/index.cjs +2 -2
- package/dist/components/chat/index.js +1 -1
- package/dist/components/chat/tool-call-blocks.d.ts.map +1 -1
- package/dist/components/chat/tool-execution-display.d.ts.map +1 -1
- package/dist/components/chat/types/component.types.d.ts +0 -6
- package/dist/components/chat/types/component.types.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +3 -3
- package/dist/components/contact/index.js +2 -2
- package/dist/components/docs/index.cjs +5 -5
- package/dist/components/docs/index.js +4 -4
- package/dist/components/embeds/index.cjs +3 -3
- package/dist/components/embeds/index.js +2 -2
- package/dist/components/faq/index.cjs +3 -3
- package/dist/components/faq/index.js +2 -2
- package/dist/components/features/index.cjs +2 -2
- package/dist/components/features/index.js +1 -1
- package/dist/components/help-center-pages/index.cjs +20 -20
- package/dist/components/help-center-pages/index.js +11 -11
- package/dist/components/index.cjs +120 -120
- package/dist/components/index.js +9 -9
- package/dist/components/navigation/index.cjs +2 -2
- package/dist/components/navigation/index.js +1 -1
- package/dist/components/onboarding-guides/index.cjs +5 -5
- package/dist/components/onboarding-guides/index.js +4 -4
- package/dist/components/related-content/index.cjs +3 -3
- package/dist/components/related-content/index.js +2 -2
- package/dist/components/tickets/index.cjs +5 -5
- package/dist/components/tickets/index.js +4 -4
- package/dist/components/ui/index.cjs +2 -2
- package/dist/components/ui/index.js +1 -1
- package/dist/index.cjs +2 -2
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/components/chat/approval-batch-message.tsx +27 -82
- package/src/components/chat/approval-request-message.tsx +19 -27
- package/src/components/chat/chat-message-enhanced.tsx +0 -3
- package/src/components/chat/tool-call-blocks.tsx +6 -17
- package/src/components/chat/tool-execution-display.tsx +8 -23
- package/src/components/chat/types/component.types.ts +0 -6
- package/src/stories/ToolExecutionDisplay.stories.tsx +1 -1
- package/dist/chunk-HSZJGPVA.js.map +0 -1
- package/dist/chunk-QP7TLRLH.cjs.map +0 -1
- package/src/stories/ApprovalBatchMessage.stories.tsx +0 -169
- package/src/stories/ApprovalBatchMessageClient.stories.tsx +0 -172
- package/src/stories/ApprovalRequestMessage.stories.tsx +0 -95
- package/src/stories/ToolExecutionDisplayClient.stories.tsx +0 -64
- /package/dist/{chunk-N7BREY67.js.map → chunk-4WVVMKMC.js.map} +0 -0
- /package/dist/{chunk-IM5HXLFT.js.map → chunk-5F45BY24.js.map} +0 -0
- /package/dist/{chunk-3QWEET5C.js.map → chunk-DJZ64AF6.js.map} +0 -0
- /package/dist/{chunk-TM455OW5.js.map → chunk-EKU6D26E.js.map} +0 -0
- /package/dist/{chunk-JQGLBAGS.js.map → chunk-JBWB3U3P.js.map} +0 -0
- /package/dist/{chunk-FQ4VGHPO.js.map → chunk-MLW25MGY.js.map} +0 -0
- /package/dist/{chunk-M247JWGY.js.map → chunk-Q3VK7WI2.js.map} +0 -0
- /package/dist/{chunk-7CTSKYAV.js.map → chunk-VY6AAUCK.js.map} +0 -0
- /package/dist/{chunk-GGCOLMNS.js.map → chunk-WB2EWYSF.js.map} +0 -0
- /package/dist/{chunk-66D3JL6J.js.map → chunk-YBL3JURC.js.map} +0 -0
- /package/dist/{chunk-ONMA32BY.js.map → chunk-YIFJJCFB.js.map} +0 -0
|
@@ -4,7 +4,7 @@ import { forwardRef, useState } from "react"
|
|
|
4
4
|
import { cn } from "../../utils/cn"
|
|
5
5
|
import { Button } from "../ui/button"
|
|
6
6
|
import { Tag } from "../ui/tag"
|
|
7
|
-
import {
|
|
7
|
+
import { CheckCircle, XCircle } from "lucide-react"
|
|
8
8
|
import type { ApprovalRequestMessageProps } from "./types"
|
|
9
9
|
import type { ApprovalRequestField } from "./types/message.types"
|
|
10
10
|
|
|
@@ -18,16 +18,13 @@ import type { ApprovalRequestField } from "./types/message.types"
|
|
|
18
18
|
*/
|
|
19
19
|
function ApprovalFieldList({ fields }: { fields: ApprovalRequestField[] }) {
|
|
20
20
|
return (
|
|
21
|
-
<dl className="flex flex-col gap-2.5 mt-
|
|
21
|
+
<dl className="flex flex-col gap-2.5 mt-1">
|
|
22
22
|
{fields.map((f, i) => (
|
|
23
23
|
<div key={i} className="flex flex-col gap-0.5">
|
|
24
|
-
{/* NOTE: 11px DM Sans small-caps label has no ODS composite token
|
|
25
|
-
(h5 is Azeret Mono, h6 is 14px) — flagged for a future caption
|
|
26
|
-
token; kept as-is rather than forcing a mismatched h-class. */}
|
|
27
24
|
<dt className="font-['DM_Sans'] font-semibold text-[11px] uppercase tracking-wide text-ods-text-tertiary leading-4">
|
|
28
25
|
{f.label}
|
|
29
26
|
</dt>
|
|
30
|
-
<dd className="text-
|
|
27
|
+
<dd className="font-['DM_Sans'] text-sm text-ods-text-primary leading-5 whitespace-pre-wrap break-words">
|
|
31
28
|
{f.value}
|
|
32
29
|
</dd>
|
|
33
30
|
</div>
|
|
@@ -52,9 +49,9 @@ function ApprovalCardBody({
|
|
|
52
49
|
data: ApprovalRequestMessageProps['data']
|
|
53
50
|
}) {
|
|
54
51
|
return (
|
|
55
|
-
<div className="flex flex-col gap-
|
|
56
|
-
<div className="bg-ods-bg border border-ods-border rounded-md p-
|
|
57
|
-
<code className="text-
|
|
52
|
+
<div className="flex flex-col gap-1">
|
|
53
|
+
<div className="bg-ods-bg border border-ods-border rounded-md p-3 flex gap-2 items-start max-h-32 overflow-y-auto">
|
|
54
|
+
<code className="font-['DM_Sans'] font-medium text-sm text-ods-text-primary flex-1 leading-5 whitespace-pre-wrap break-words">
|
|
58
55
|
{data.command}
|
|
59
56
|
</code>
|
|
60
57
|
{data.icon && (
|
|
@@ -67,7 +64,7 @@ function ApprovalCardBody({
|
|
|
67
64
|
<ApprovalFieldList fields={data.fields} />
|
|
68
65
|
) : (
|
|
69
66
|
data.explanation && (
|
|
70
|
-
<p className="text-
|
|
67
|
+
<p className="font-['DM_Sans'] font-medium text-sm text-ods-text-secondary leading-5 whitespace-pre-line break-words">
|
|
71
68
|
{data.explanation}
|
|
72
69
|
</p>
|
|
73
70
|
)
|
|
@@ -77,10 +74,7 @@ function ApprovalCardBody({
|
|
|
77
74
|
}
|
|
78
75
|
|
|
79
76
|
const ApprovalRequestMessage = forwardRef<HTMLDivElement, ApprovalRequestMessageProps>(
|
|
80
|
-
|
|
81
|
-
// can forward it uniformly); the legacy single-command card has no
|
|
82
|
-
// icon/divider to vary, so it renders identically for admin and client today.
|
|
83
|
-
({ className, data, onApprove, onReject, status = 'pending', assistantType: _assistantType, ...props }, ref) => {
|
|
77
|
+
({ className, data, onApprove, onReject, status = 'pending', ...props }, ref) => {
|
|
84
78
|
const [isProcessing, setIsProcessing] = useState(false)
|
|
85
79
|
|
|
86
80
|
const handleApprove = async () => {
|
|
@@ -105,14 +99,14 @@ const ApprovalRequestMessage = forwardRef<HTMLDivElement, ApprovalRequestMessage
|
|
|
105
99
|
<div
|
|
106
100
|
ref={ref}
|
|
107
101
|
className={cn(
|
|
108
|
-
"bg-ods-card border border-ods-border rounded-md p-
|
|
102
|
+
"bg-ods-card border border-ods-border rounded-md p-4 mb-2 flex flex-col gap-4",
|
|
109
103
|
className
|
|
110
104
|
)}
|
|
111
105
|
{...props}
|
|
112
106
|
>
|
|
113
107
|
<ApprovalCardBody data={data} />
|
|
114
108
|
{status === 'pending' ? (
|
|
115
|
-
<div className="flex gap-
|
|
109
|
+
<div className="flex gap-4 items-center">
|
|
116
110
|
<Button
|
|
117
111
|
size="small-legacy"
|
|
118
112
|
variant="accent"
|
|
@@ -120,8 +114,8 @@ const ApprovalRequestMessage = forwardRef<HTMLDivElement, ApprovalRequestMessage
|
|
|
120
114
|
disabled={isProcessing}
|
|
121
115
|
className={cn(
|
|
122
116
|
"bg-ods-accent hover:bg-ods-accent/90",
|
|
123
|
-
"text-
|
|
124
|
-
"px-
|
|
117
|
+
"font-mono font-medium md:!text-sm text-ods-bg uppercase tracking-[-0.28px]",
|
|
118
|
+
"px-2 py-1 h-auto"
|
|
125
119
|
)}
|
|
126
120
|
>
|
|
127
121
|
Approve
|
|
@@ -133,8 +127,8 @@ const ApprovalRequestMessage = forwardRef<HTMLDivElement, ApprovalRequestMessage
|
|
|
133
127
|
disabled={isProcessing}
|
|
134
128
|
className={cn(
|
|
135
129
|
"bg-ods-card border-ods-border",
|
|
136
|
-
"text-
|
|
137
|
-
"hover:bg-ods-bg px-
|
|
130
|
+
"font-mono font-medium md:!text-sm text-ods-text-primary uppercase tracking-[-0.28px]",
|
|
131
|
+
"hover:bg-ods-bg px-2 py-1 h-auto"
|
|
138
132
|
)}
|
|
139
133
|
>
|
|
140
134
|
Reject
|
|
@@ -142,13 +136,11 @@ const ApprovalRequestMessage = forwardRef<HTMLDivElement, ApprovalRequestMessage
|
|
|
142
136
|
</div>
|
|
143
137
|
) : (
|
|
144
138
|
<div className="flex">
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
<
|
|
149
|
-
|
|
150
|
-
<Tag label="Rejected" variant="error" icon={<XCircle className="w-4 h-4" />} />
|
|
151
|
-
)}
|
|
139
|
+
<Tag
|
|
140
|
+
label={status === 'approved' ? 'Approved' : 'Rejected'}
|
|
141
|
+
variant={status === 'approved' ? 'success' : 'error'}
|
|
142
|
+
icon={status === 'approved' ? <CheckCircle className="w-4 h-4" /> : <XCircle className="w-4 h-4" />}
|
|
143
|
+
/>
|
|
152
144
|
</div>
|
|
153
145
|
)}
|
|
154
146
|
</div>
|
|
@@ -537,7 +537,6 @@ const ChatMessageEnhanced = forwardRef<HTMLDivElement, ChatMessageEnhancedProps>
|
|
|
537
537
|
<ToolExecutionDisplay
|
|
538
538
|
key={index}
|
|
539
539
|
message={segment.data}
|
|
540
|
-
assistantType={assistantType}
|
|
541
540
|
/>
|
|
542
541
|
)
|
|
543
542
|
} else if (segment.type === 'approval_request') {
|
|
@@ -548,7 +547,6 @@ const ChatMessageEnhanced = forwardRef<HTMLDivElement, ChatMessageEnhancedProps>
|
|
|
548
547
|
status={segment.status}
|
|
549
548
|
onApprove={segment.onApprove}
|
|
550
549
|
onReject={segment.onReject}
|
|
551
|
-
assistantType={assistantType}
|
|
552
550
|
/>
|
|
553
551
|
)
|
|
554
552
|
} else if (segment.type === 'approval_batch') {
|
|
@@ -560,7 +558,6 @@ const ChatMessageEnhanced = forwardRef<HTMLDivElement, ChatMessageEnhancedProps>
|
|
|
560
558
|
resolvedByName={segment.resolvedByName}
|
|
561
559
|
onApprove={segment.onApprove}
|
|
562
560
|
onReject={segment.onReject}
|
|
563
|
-
assistantType={assistantType}
|
|
564
561
|
/>
|
|
565
562
|
)
|
|
566
563
|
} else if (segment.type === 'error') {
|
|
@@ -3,17 +3,6 @@
|
|
|
3
3
|
import { cn } from "../../utils/cn"
|
|
4
4
|
import { formatToolArgValue, formatToolResult } from "./utils/tool-call-helpers"
|
|
5
5
|
|
|
6
|
-
/**
|
|
7
|
-
* Monospace code body shared by ArgRow / ResultBlock.
|
|
8
|
-
*
|
|
9
|
-
* NOTE: ODS exposes no mono/code typography token (only the composite
|
|
10
|
-
* `text-h1`–`text-h6` DM Sans / Azeret-Mono headings), so the 12px code size
|
|
11
|
-
* stays as `text-xs` here. Flagged for a future `text-code` token rather than
|
|
12
|
-
* forcing an h-class that would change the intended density.
|
|
13
|
-
*/
|
|
14
|
-
const CODE_PRE_CLASS =
|
|
15
|
-
"bg-ods-bg border border-ods-border rounded-md p-[var(--spacing-system-sf)] w-full max-h-64 overflow-auto text-xs leading-5 text-ods-text-primary font-mono whitespace-pre"
|
|
16
|
-
|
|
17
6
|
/**
|
|
18
7
|
* Single arg row: inline `key: value` or labeled `<pre>` block.
|
|
19
8
|
* Shared between ApprovalBatchMessage and ToolExecutionDisplay so both
|
|
@@ -24,7 +13,7 @@ export function ArgRow({ argKey, value }: { argKey: string; value: unknown }) {
|
|
|
24
13
|
|
|
25
14
|
if (formatted.kind === "inline") {
|
|
26
15
|
return (
|
|
27
|
-
<div className="flex gap-
|
|
16
|
+
<div className="flex gap-1 items-start w-full">
|
|
28
17
|
<span className="shrink-0 text-ods-text-secondary">{argKey}:</span>
|
|
29
18
|
<span className="flex-1 min-w-0 text-ods-text-primary break-all">{formatted.text}</span>
|
|
30
19
|
</div>
|
|
@@ -32,9 +21,9 @@ export function ArgRow({ argKey, value }: { argKey: string; value: unknown }) {
|
|
|
32
21
|
}
|
|
33
22
|
|
|
34
23
|
return (
|
|
35
|
-
<div className="flex flex-col gap-
|
|
24
|
+
<div className="flex flex-col gap-1 items-start w-full">
|
|
36
25
|
<span className="text-ods-text-secondary">{argKey}:</span>
|
|
37
|
-
<pre className=
|
|
26
|
+
<pre className="bg-ods-bg border border-ods-border rounded-md p-3 w-full max-h-64 overflow-auto text-xs leading-5 text-ods-text-primary font-mono whitespace-pre">
|
|
38
27
|
<code>{formatted.text}</code>
|
|
39
28
|
</pre>
|
|
40
29
|
</div>
|
|
@@ -51,7 +40,7 @@ export function ResultBlock({ result, className }: { result: string | undefined
|
|
|
51
40
|
|
|
52
41
|
if (formatted.kind === "inline") {
|
|
53
42
|
return (
|
|
54
|
-
<div className={cn("flex flex-col gap-
|
|
43
|
+
<div className={cn("flex flex-col gap-1 items-start w-full", className)}>
|
|
55
44
|
<span className="text-ods-text-secondary">Result:</span>
|
|
56
45
|
<span className="text-ods-text-primary break-all">{formatted.text}</span>
|
|
57
46
|
</div>
|
|
@@ -59,9 +48,9 @@ export function ResultBlock({ result, className }: { result: string | undefined
|
|
|
59
48
|
}
|
|
60
49
|
|
|
61
50
|
return (
|
|
62
|
-
<div className={cn("flex flex-col gap-
|
|
51
|
+
<div className={cn("flex flex-col gap-1 items-start w-full", className)}>
|
|
63
52
|
<span className="text-ods-text-secondary">Result:</span>
|
|
64
|
-
<pre className=
|
|
53
|
+
<pre className="bg-ods-bg border border-ods-border rounded-md p-3 w-full max-h-64 overflow-auto text-xs leading-5 text-ods-text-primary font-mono whitespace-pre">
|
|
65
54
|
<code>{formatted.text}</code>
|
|
66
55
|
</pre>
|
|
67
56
|
</div>
|
|
@@ -15,10 +15,9 @@ import type { ToolExecutionDisplayProps } from "./types"
|
|
|
15
15
|
const COMMAND_BODY_KEYS = new Set<string>(COMMAND_BODY_ARG_KEYS)
|
|
16
16
|
|
|
17
17
|
const ToolExecutionDisplay = forwardRef<HTMLDivElement, ToolExecutionDisplayProps>(
|
|
18
|
-
({ className, message,
|
|
18
|
+
({ className, message, ...props }, ref) => {
|
|
19
19
|
const [expanded, setExpanded] = useState(false)
|
|
20
20
|
const { innerRef, containerStyle } = useCollapsible({ expanded })
|
|
21
|
-
const isClient = assistantType === "fae"
|
|
22
21
|
|
|
23
22
|
const isExecuting = message.type === "EXECUTING_TOOL"
|
|
24
23
|
const isExecuted = message.type === "EXECUTED_TOOL"
|
|
@@ -55,8 +54,6 @@ const ToolExecutionDisplay = forwardRef<HTMLDivElement, ToolExecutionDisplayProp
|
|
|
55
54
|
<div
|
|
56
55
|
ref={ref}
|
|
57
56
|
className={cn(
|
|
58
|
-
// The command running block keeps its bordered box in both chats
|
|
59
|
-
// (Figma 1972-6109). CLIENT (Fae) only drops the tool icon below.
|
|
60
57
|
"bg-ods-card border border-ods-border rounded-[6px] overflow-hidden w-full flex flex-col",
|
|
61
58
|
className,
|
|
62
59
|
)}
|
|
@@ -67,14 +64,12 @@ const ToolExecutionDisplay = forwardRef<HTMLDivElement, ToolExecutionDisplayProp
|
|
|
67
64
|
className="flex gap-[var(--spacing-system-xs)] items-start p-[var(--spacing-system-s)] cursor-pointer text-left w-full"
|
|
68
65
|
onClick={() => setExpanded((prev) => !prev)}
|
|
69
66
|
>
|
|
70
|
-
|
|
71
|
-
<
|
|
72
|
-
|
|
73
|
-
</div>
|
|
74
|
-
)}
|
|
67
|
+
<div className="flex items-center justify-center shrink-0 w-5 h-5">
|
|
68
|
+
<ToolIcon toolType={integratedToolType} size={16} />
|
|
69
|
+
</div>
|
|
75
70
|
<div
|
|
76
71
|
className={cn(
|
|
77
|
-
"flex-1 min-w-0 text-
|
|
72
|
+
"flex-1 min-w-0 text-sm font-medium leading-5",
|
|
78
73
|
expanded
|
|
79
74
|
? "text-ods-text-primary whitespace-pre-wrap break-all"
|
|
80
75
|
: "text-ods-text-secondary line-clamp-2 max-h-10 break-all",
|
|
@@ -91,23 +86,13 @@ const ToolExecutionDisplay = forwardRef<HTMLDivElement, ToolExecutionDisplayProp
|
|
|
91
86
|
<div className="w-full" style={containerStyle}>
|
|
92
87
|
<div ref={innerRef}>
|
|
93
88
|
{hasBody && (
|
|
94
|
-
<div className="flex flex-col gap-
|
|
89
|
+
<div className="flex flex-col gap-2 items-start w-full text-sm font-medium leading-5 p-3 bg-ods-card">
|
|
95
90
|
{argEntries.map(([key, value]) => (
|
|
96
91
|
<ArgRow key={key} argKey={key} value={value} />
|
|
97
92
|
))}
|
|
98
|
-
{hasResult &&
|
|
99
|
-
<ResultBlock
|
|
100
|
-
result={message.result}
|
|
101
|
-
className={argEntries.length > 0 ? "mt-[var(--spacing-system-xsf)]" : undefined}
|
|
102
|
-
/>
|
|
103
|
-
)}
|
|
93
|
+
{hasResult && <ResultBlock result={message.result} />}
|
|
104
94
|
{isExecuting && (
|
|
105
|
-
<div
|
|
106
|
-
className={cn(
|
|
107
|
-
"flex flex-col gap-[var(--spacing-system-xxs)] items-start w-full",
|
|
108
|
-
argEntries.length > 0 && "mt-[var(--spacing-system-xsf)]",
|
|
109
|
-
)}
|
|
110
|
-
>
|
|
95
|
+
<div className="flex flex-col gap-1 items-start w-full">
|
|
111
96
|
<span className="text-ods-text-secondary">Result:</span>
|
|
112
97
|
<DotsLoaderIcon size={16} className="text-ods-text-secondary" />
|
|
113
98
|
</div>
|
|
@@ -461,9 +461,6 @@ export interface ChatTypingIndicatorProps extends HTMLAttributes<HTMLDivElement>
|
|
|
461
461
|
|
|
462
462
|
export interface ToolExecutionDisplayProps extends HTMLAttributes<HTMLDivElement> {
|
|
463
463
|
message: ToolExecutionData
|
|
464
|
-
/** Chat identity. `'fae'` (client) hides the tool icon; `'mingo'`/undefined
|
|
465
|
-
* keep the admin layout. */
|
|
466
|
-
assistantType?: AssistantType
|
|
467
464
|
}
|
|
468
465
|
|
|
469
466
|
// ========== Approval Request Message Props ==========
|
|
@@ -474,9 +471,6 @@ export interface ApprovalRequestMessageProps extends HTMLAttributes<HTMLDivEleme
|
|
|
474
471
|
onReject?: (requestId?: string) => void | Promise<void>
|
|
475
472
|
status?: ChatApprovalStatus
|
|
476
473
|
disabled?: boolean
|
|
477
|
-
/** Chat identity; drives the CLIENT (Fae) styling. Accepted for parity with
|
|
478
|
-
* the batch card. `'fae'` = client, `'mingo'`/undefined = admin. */
|
|
479
|
-
assistantType?: AssistantType
|
|
480
474
|
}
|
|
481
475
|
|
|
482
476
|
// ========== Error Message Display Props ==========
|