@reforma/components 0.3.2 → 0.4.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/Composer/parts.d.ts +1 -1
- package/dist/Composer/parts.d.ts.map +1 -1
- package/dist/Composer/parts.js +102 -98
- package/dist/Composer/parts.js.map +1 -1
- package/dist/Composer/reforma/Composer.module.css +1 -1
- package/dist/Composer/reforma/Composer.module.css.js +24 -22
- package/dist/Composer/reforma/Composer.module.css.js.map +1 -1
- package/dist/Composer/types.d.ts +1 -1
- package/dist/Composer/types.d.ts.map +1 -1
- package/dist/Modal/Modal.d.ts +2 -2
- package/dist/Modal/Modal.d.ts.map +1 -1
- package/dist/Modal/Modal.js +6 -3
- package/dist/Modal/Modal.js.map +1 -1
- package/dist/SettingsLayout/SettingsLayout.d.ts +1 -0
- package/dist/SettingsLayout/SettingsLayout.d.ts.map +1 -1
- package/dist/SettingsLayout/SettingsLayout.js +332 -292
- package/dist/SettingsLayout/SettingsLayout.js.map +1 -1
- package/dist/SettingsLayout/SettingsLayout.module.css +1 -1
- package/dist/SettingsLayout/SettingsLayout.module.css.js +20 -18
- package/dist/SettingsLayout/SettingsLayout.module.css.js.map +1 -1
- package/dist/chat/Attachment/Attachment.d.ts.map +1 -1
- package/dist/chat/Attachment/Attachment.js +14 -16
- package/dist/chat/Attachment/Attachment.js.map +1 -1
- package/dist/chat/Attachment/Attachment.module.css +1 -1
- package/dist/chat/Message/turn/MessageAssistantBody.d.ts.map +1 -1
- package/dist/chat/Message/turn/MessageAssistantBody.js +53 -40
- package/dist/chat/Message/turn/MessageAssistantBody.js.map +1 -1
- package/dist/chat/Tool/Tool.d.ts.map +1 -1
- package/dist/chat/Tool/Tool.js +77 -75
- package/dist/chat/Tool/Tool.js.map +1 -1
- package/dist/chat/Tool/agent/AgentTool.d.ts.map +1 -1
- package/dist/chat/Tool/agent/AgentTool.js +18 -17
- package/dist/chat/Tool/agent/AgentTool.js.map +1 -1
- package/dist/chat/Tool/check-page/CheckPageTool.d.ts +4 -0
- package/dist/chat/Tool/check-page/CheckPageTool.d.ts.map +1 -0
- package/dist/chat/Tool/check-page/CheckPageTool.js +75 -0
- package/dist/chat/Tool/check-page/CheckPageTool.js.map +1 -0
- package/dist/chat/Tool/check-page/index.d.ts +2 -0
- package/dist/chat/Tool/check-page/index.d.ts.map +1 -0
- package/dist/chat/Tool/check-page/index.js +5 -0
- package/dist/chat/Tool/check-page/index.js.map +1 -0
- package/dist/index.js +156 -155
- package/dist/modals/ConfirmModal.d.ts +2 -0
- package/dist/modals/ConfirmModal.d.ts.map +1 -1
- package/dist/modals/ConfirmModal.js +88 -60
- package/dist/modals/ConfirmModal.js.map +1 -1
- package/dist/modals/index.d.ts +1 -1
- package/dist/modals/index.d.ts.map +1 -1
- package/dist/modals/index.js +2 -1
- package/package.json +5 -13
- package/dist/node_modules/clsx/dist/clsx.js +0 -18
- package/dist/node_modules/clsx/dist/clsx.js.map +0 -1
- package/dist/node_modules/react-aria/dist/private/interactions/useFocusable.js +0 -17
- package/dist/node_modules/react-aria/dist/private/interactions/useFocusable.js.map +0 -1
- package/dist/node_modules/react-aria/dist/private/utils/useObjectRef.js +0 -34
- package/dist/node_modules/react-aria/dist/private/utils/useObjectRef.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/errors.js +0 -38
- package/dist/node_modules/zod/v4/classic/errors.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/parse.js +0 -21
- package/dist/node_modules/zod/v4/classic/parse.js.map +0 -1
- package/dist/node_modules/zod/v4/classic/schemas.js +0 -822
- package/dist/node_modules/zod/v4/classic/schemas.js.map +0 -1
- package/dist/node_modules/zod/v4/core/api.js +0 -561
- package/dist/node_modules/zod/v4/core/api.js.map +0 -1
- package/dist/node_modules/zod/v4/core/checks.js +0 -262
- package/dist/node_modules/zod/v4/core/checks.js.map +0 -1
- package/dist/node_modules/zod/v4/core/core.js +0 -97
- package/dist/node_modules/zod/v4/core/core.js.map +0 -1
- package/dist/node_modules/zod/v4/core/doc.js +0 -35
- package/dist/node_modules/zod/v4/core/doc.js.map +0 -1
- package/dist/node_modules/zod/v4/core/errors.js +0 -79
- package/dist/node_modules/zod/v4/core/errors.js.map +0 -1
- package/dist/node_modules/zod/v4/core/json-schema-processors.js +0 -308
- package/dist/node_modules/zod/v4/core/json-schema-processors.js.map +0 -1
- package/dist/node_modules/zod/v4/core/memoizer.js +0 -203
- package/dist/node_modules/zod/v4/core/memoizer.js.map +0 -1
- package/dist/node_modules/zod/v4/core/parse.js +0 -113
- package/dist/node_modules/zod/v4/core/parse.js.map +0 -1
- package/dist/node_modules/zod/v4/core/regexes.js +0 -59
- package/dist/node_modules/zod/v4/core/regexes.js.map +0 -1
- package/dist/node_modules/zod/v4/core/registries.js +0 -41
- package/dist/node_modules/zod/v4/core/registries.js.map +0 -1
- package/dist/node_modules/zod/v4/core/schemas.js +0 -1104
- package/dist/node_modules/zod/v4/core/schemas.js.map +0 -1
- package/dist/node_modules/zod/v4/core/to-json-schema.js +0 -380
- package/dist/node_modules/zod/v4/core/to-json-schema.js.map +0 -1
- package/dist/node_modules/zod/v4/core/util.js +0 -465
- package/dist/node_modules/zod/v4/core/util.js.map +0 -1
- package/dist/node_modules/zod/v4/core/versions.js +0 -9
- package/dist/node_modules/zod/v4/core/versions.js.map +0 -1
- package/dist/node_modules/zod/v4/locales/en.js +0 -97
- package/dist/node_modules/zod/v4/locales/en.js.map +0 -1
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { ChevronDown as A } from "@reforma/icons/8";
|
|
2
2
|
import { cn as C } from "@reforma/lib";
|
|
3
|
-
import { observer as
|
|
4
|
-
import { Button as
|
|
5
|
-
import { Collapsible as
|
|
6
|
-
import { For as
|
|
7
|
-
import { Show as
|
|
3
|
+
import { observer as T } from "mobx-react-lite";
|
|
4
|
+
import { Button as F } from "../../../Button/Button.js";
|
|
5
|
+
import { Collapsible as y, useCollapsible as P, CollapsibleTrigger as L, CollapsibleContent as M } from "../../../Collapsible/Collapsible.js";
|
|
6
|
+
import { For as W } from "../../../For/For.js";
|
|
7
|
+
import { Show as w } from "../../../Show/Show.js";
|
|
8
8
|
import { ConversationPendingLoader as S } from "../../Conversation/ConversationPendingLoader.js";
|
|
9
|
-
import { streamingPhaseActiveIndex as
|
|
9
|
+
import { streamingPhaseActiveIndex as N, partsFromSegmentGroups as j } from "../normalize/normalizeMessageParts.js";
|
|
10
10
|
import { MessagePhaseSection as B } from "../segments/MessagePhaseSection.js";
|
|
11
11
|
import v from "./Message.module.css.js";
|
|
12
|
-
import { useMessageTurn as
|
|
13
|
-
import { splitFinishedWork as
|
|
12
|
+
import { useMessageTurn as E } from "./messageTurnContext.js";
|
|
13
|
+
import { splitFinishedWork as $, workedForLabel as D } from "./workedCollapse.js";
|
|
14
14
|
import { jsx as r, jsxs as d, Fragment as b } from "react/jsx-runtime";
|
|
15
15
|
function G(t) {
|
|
16
16
|
const e = [];
|
|
@@ -32,27 +32,27 @@ function k({
|
|
|
32
32
|
phaseActiveIndex: u,
|
|
33
33
|
getPhaseStats: o,
|
|
34
34
|
lastPart: p,
|
|
35
|
-
loaderParts:
|
|
35
|
+
loaderParts: f,
|
|
36
36
|
markTail: a
|
|
37
37
|
}) {
|
|
38
|
-
return /* @__PURE__ */ r(
|
|
38
|
+
return /* @__PURE__ */ r(W, {
|
|
39
39
|
each: t,
|
|
40
|
-
children: (i,
|
|
41
|
-
isLast:
|
|
40
|
+
children: (i, c, {
|
|
41
|
+
isLast: g
|
|
42
42
|
}) => {
|
|
43
|
-
const
|
|
43
|
+
const m = a && g;
|
|
44
44
|
return /* @__PURE__ */ r(B, {
|
|
45
45
|
segment: i,
|
|
46
46
|
messageId: e,
|
|
47
47
|
isStreaming: s,
|
|
48
48
|
isLiveMessage: n,
|
|
49
|
-
isLastSegment:
|
|
50
|
-
streamActive: l && (
|
|
49
|
+
isLastSegment: m,
|
|
50
|
+
streamActive: l && (m || c === u),
|
|
51
51
|
fileStats: i.layout === "grouped" ? o?.(j(i.groups)) : void 0,
|
|
52
|
-
children:
|
|
52
|
+
children: m && s ? /* @__PURE__ */ r(S, {
|
|
53
53
|
lastPart: p,
|
|
54
54
|
messageId: e,
|
|
55
|
-
parts:
|
|
55
|
+
parts: f
|
|
56
56
|
}) : null
|
|
57
57
|
}, `${e}-${i.index}`);
|
|
58
58
|
}
|
|
@@ -63,10 +63,10 @@ function I({
|
|
|
63
63
|
}) {
|
|
64
64
|
const {
|
|
65
65
|
state: e
|
|
66
|
-
} =
|
|
67
|
-
return /* @__PURE__ */ r(
|
|
66
|
+
} = P();
|
|
67
|
+
return /* @__PURE__ */ r(L, {
|
|
68
68
|
asChild: !0,
|
|
69
|
-
children: /* @__PURE__ */ d(
|
|
69
|
+
children: /* @__PURE__ */ d(F, {
|
|
70
70
|
type: "button",
|
|
71
71
|
variant: "inline",
|
|
72
72
|
color: "secondary",
|
|
@@ -80,24 +80,37 @@ function I({
|
|
|
80
80
|
});
|
|
81
81
|
}
|
|
82
82
|
function O({
|
|
83
|
+
children: t
|
|
84
|
+
}) {
|
|
85
|
+
const {
|
|
86
|
+
state: e
|
|
87
|
+
} = P();
|
|
88
|
+
return /* @__PURE__ */ r(w, {
|
|
89
|
+
when: e.isExpanded,
|
|
90
|
+
children: /* @__PURE__ */ r(M, {
|
|
91
|
+
className: v.workedPanel,
|
|
92
|
+
children: t
|
|
93
|
+
})
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
function R({
|
|
83
97
|
label: t,
|
|
84
98
|
children: e
|
|
85
99
|
}) {
|
|
86
|
-
return /* @__PURE__ */ d(
|
|
100
|
+
return /* @__PURE__ */ d(y, {
|
|
87
101
|
className: v.worked,
|
|
88
102
|
defaultOpen: !1,
|
|
89
103
|
children: [/* @__PURE__ */ r(I, {
|
|
90
104
|
label: t
|
|
91
|
-
}), /* @__PURE__ */ r(
|
|
92
|
-
className: v.workedPanel,
|
|
105
|
+
}), /* @__PURE__ */ r(O, {
|
|
93
106
|
children: e
|
|
94
107
|
})]
|
|
95
108
|
});
|
|
96
109
|
}
|
|
97
|
-
const
|
|
110
|
+
const te = T(({
|
|
98
111
|
hideSources: t = !1
|
|
99
112
|
} = {}) => {
|
|
100
|
-
const e =
|
|
113
|
+
const e = E();
|
|
101
114
|
if (e?.role !== "assistant" || e.message.role !== "assistant")
|
|
102
115
|
return null;
|
|
103
116
|
const {
|
|
@@ -107,31 +120,31 @@ const re = P(({
|
|
|
107
120
|
turnActive: u,
|
|
108
121
|
isStreaming: o,
|
|
109
122
|
isLastMessage: p,
|
|
110
|
-
getPhaseStats:
|
|
111
|
-
} = e, a = t ? G(n) : n, i = e.message.parts,
|
|
123
|
+
getPhaseStats: f
|
|
124
|
+
} = e, a = t ? G(n) : n, i = e.message.parts, c = e.message.metadata;
|
|
112
125
|
if (a.length === 0 && !o)
|
|
113
126
|
return null;
|
|
114
|
-
const
|
|
127
|
+
const g = N(a, o), m = $(a, {
|
|
115
128
|
streaming: o,
|
|
116
|
-
cancelled:
|
|
129
|
+
cancelled: c?.stopReason === "cancelled"
|
|
117
130
|
}), h = {
|
|
118
131
|
messageId: s,
|
|
119
132
|
isStreaming: o,
|
|
120
133
|
isLiveMessage: p,
|
|
121
134
|
turnActive: u,
|
|
122
|
-
phaseActiveIndex:
|
|
123
|
-
getPhaseStats:
|
|
135
|
+
phaseActiveIndex: g,
|
|
136
|
+
getPhaseStats: f,
|
|
124
137
|
lastPart: l,
|
|
125
138
|
loaderParts: i
|
|
126
139
|
};
|
|
127
|
-
return /* @__PURE__ */ r(
|
|
128
|
-
when:
|
|
140
|
+
return /* @__PURE__ */ r(w, {
|
|
141
|
+
when: m,
|
|
129
142
|
fallback: /* @__PURE__ */ d(b, {
|
|
130
143
|
children: [/* @__PURE__ */ r(k, {
|
|
131
144
|
...h,
|
|
132
145
|
segments: a,
|
|
133
146
|
markTail: !0
|
|
134
|
-
}), /* @__PURE__ */ r(
|
|
147
|
+
}), /* @__PURE__ */ r(w, {
|
|
135
148
|
when: o && a.length === 0,
|
|
136
149
|
children: /* @__PURE__ */ r(S, {
|
|
137
150
|
lastPart: l,
|
|
@@ -140,23 +153,23 @@ const re = P(({
|
|
|
140
153
|
})
|
|
141
154
|
})]
|
|
142
155
|
}),
|
|
143
|
-
children: (
|
|
144
|
-
children: [/* @__PURE__ */ r(
|
|
145
|
-
label:
|
|
156
|
+
children: (x) => /* @__PURE__ */ d(b, {
|
|
157
|
+
children: [/* @__PURE__ */ r(R, {
|
|
158
|
+
label: D(c?.startedAt, c?.endedAt),
|
|
146
159
|
children: /* @__PURE__ */ r(k, {
|
|
147
160
|
...h,
|
|
148
|
-
segments:
|
|
161
|
+
segments: x.work,
|
|
149
162
|
markTail: !1
|
|
150
163
|
})
|
|
151
164
|
}), /* @__PURE__ */ r(k, {
|
|
152
165
|
...h,
|
|
153
|
-
segments: [
|
|
166
|
+
segments: [x.answer],
|
|
154
167
|
markTail: !0
|
|
155
168
|
})]
|
|
156
169
|
})
|
|
157
170
|
});
|
|
158
171
|
});
|
|
159
172
|
export {
|
|
160
|
-
|
|
173
|
+
te as MessageAssistantBody
|
|
161
174
|
};
|
|
162
175
|
//# sourceMappingURL=MessageAssistantBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MessageAssistantBody.js","sources":["../../../../src/chat/Message/turn/MessageAssistantBody.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from '@reforma/icons/8';\nimport { cn } from '@reforma/lib';\nimport { observer } from 'mobx-react-lite';\n\nimport { Button } from '../../../Button';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n useCollapsible,\n} from '../../../Collapsible';\nimport { For } from '../../../For';\nimport { Show } from '../../../Show';\nimport { ConversationPendingLoader } from '../../Conversation/ConversationPendingLoader';\nimport { partsFromSegmentGroups, streamingPhaseActiveIndex } from '../normalize/normalizeMessageParts';\nimport { MessagePhaseSection } from '../segments';\nimport styles from './Message.module.css';\nimport { useMessageTurn } from './messageTurnContext';\nimport { splitFinishedWork, workedForLabel } from './workedCollapse';\n\nimport type { ReactNode } from 'react';\nimport type { MessageSegment } from '../normalize/normalizeMessageParts';\nimport type { ReformaUIMessagePart } from '../types';\nimport type { GetPhaseStats } from './messageTurnContext';\n\nfunction segmentsWithoutSources(segments: readonly MessageSegment[]): MessageSegment[] {\n const next: MessageSegment[] = [];\n\n for (const segment of segments) {\n const groups = segment.groups.filter(group => group.kind !== 'sources');\n\n if (groups.length > 0) {\n next.push({ ...segment, groups });\n }\n }\n\n return next;\n}\n\ntype SegmentListProps = {\n segments: readonly MessageSegment[];\n messageId: string;\n isStreaming: boolean;\n isLiveMessage: boolean;\n turnActive: boolean;\n phaseActiveIndex: number;\n getPhaseStats: GetPhaseStats | undefined;\n lastPart: ReformaUIMessagePart | undefined;\n loaderParts: readonly ReformaUIMessagePart[];\n /** Work under the spoiler is not the message tail, so its phases stay closed. */\n markTail: boolean;\n};\n\nfunction AssistantSegments({\n segments,\n messageId,\n isStreaming,\n isLiveMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n markTail,\n}: SegmentListProps) {\n return (\n <For each={ segments }>\n { (segment, segIndex, { isLast }) => {\n const isLastSegment = markTail && isLast;\n\n return (\n <MessagePhaseSection\n key={ `${ messageId }-${ segment.index }` }\n segment={ segment }\n messageId={ messageId }\n isStreaming={ isStreaming }\n isLiveMessage={ isLiveMessage }\n isLastSegment={ isLastSegment }\n streamActive={ turnActive && (isLastSegment || segIndex === phaseActiveIndex) }\n fileStats={\n segment.layout === 'grouped'\n ? getPhaseStats?.(partsFromSegmentGroups(segment.groups))\n : undefined\n }\n >\n { isLastSegment && isStreaming\n ? (\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n )\n : null }\n </MessagePhaseSection>\n );\n } }\n </For>\n );\n}\n\nfunction WorkedTrigger({ label }: { label: string }) {\n const { state } = useCollapsible();\n\n return (\n <CollapsibleTrigger asChild>\n <Button\n type=\"button\"\n variant=\"inline\"\n color=\"secondary\"\n className={ styles.workedTrigger }\n >\n { label }\n <ChevronDown\n className={ cn('chevron', 'next') }\n aria-expanded={ state.isExpanded }\n aria-hidden\n />\n </Button>\n </CollapsibleTrigger>\n );\n}\n\nfunction WorkedFor({ label, children }: { label: string; children: ReactNode }) {\n return (\n <Collapsible className={ styles.worked } defaultOpen={ false }>\n <WorkedTrigger label={ label } />\n <CollapsibleContent className={ styles.workedPanel }>\n { children }\n </CollapsibleContent>\n </Collapsible>\n );\n}\n\n/**\n * Assistant turn segments and streaming pending loader.\n * A finished text answer folds the work into one \"Worked for …\" disclosure.\n * Cancelled turns and turns that do not end on text keep the phase rows open.\n */\nexport const MessageAssistantBody = observer(({\n hideSources = false,\n}: {\n /** Editor footer owns citations — drop in-body Sources groups. */\n hideSources?: boolean;\n} = {}) => {\n const turn = useMessageTurn();\n\n if (turn?.role !== 'assistant' || turn.message.role !== 'assistant') {\n return null;\n }\n\n const {\n messageId,\n segments: rawSegments,\n lastPart,\n turnActive,\n isStreaming,\n isLastMessage,\n getPhaseStats,\n } = turn;\n const segments = hideSources ? segmentsWithoutSources(rawSegments) : rawSegments;\n const loaderParts = turn.message.parts;\n const metadata = turn.message.metadata;\n\n if (segments.length === 0 && !isStreaming) {\n return null;\n }\n\n const phaseActiveIndex = streamingPhaseActiveIndex(segments, isStreaming);\n const finished = splitFinishedWork(segments, {\n streaming: isStreaming,\n cancelled: metadata?.stopReason === 'cancelled',\n });\n const listProps = {\n messageId,\n isStreaming,\n isLiveMessage: isLastMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n };\n\n return (\n <Show\n when={ finished }\n fallback={ (\n <>\n <AssistantSegments\n { ...listProps }\n segments={ segments }\n markTail\n />\n <Show when={ isStreaming && segments.length === 0 }>\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n </Show>\n </>\n ) }\n >\n { split => (\n <>\n <WorkedFor label={ workedForLabel(metadata?.startedAt, metadata?.endedAt) }>\n <AssistantSegments\n { ...listProps }\n segments={ split.work }\n markTail={ false }\n />\n </WorkedFor>\n <AssistantSegments\n { ...listProps }\n segments={ [split.answer] }\n markTail\n />\n </>\n ) }\n </Show>\n );\n});\n"],"names":["segmentsWithoutSources","segments","next","segment","groups","group","AssistantSegments","messageId","isStreaming","isLiveMessage","turnActive","phaseActiveIndex","getPhaseStats","lastPart","loaderParts","markTail","For","segIndex","isLast","isLastSegment","MessagePhaseSection","partsFromSegmentGroups","_jsx","ConversationPendingLoader","WorkedTrigger","label","state","useCollapsible","CollapsibleTrigger","Button","styles","ChevronDown","cn","WorkedFor","children","Collapsible","CollapsibleContent","MessageAssistantBody","observer","hideSources","turn","useMessageTurn","rawSegments","isLastMessage","metadata","streamingPhaseActiveIndex","finished","splitFinishedWork","listProps","Show","_Fragment","split","_jsxs","workedForLabel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MessageAssistantBody.js","sources":["../../../../src/chat/Message/turn/MessageAssistantBody.tsx"],"sourcesContent":["'use client';\n\nimport { ChevronDown } from '@reforma/icons/8';\nimport { cn } from '@reforma/lib';\nimport { observer } from 'mobx-react-lite';\n\nimport { Button } from '../../../Button';\nimport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n useCollapsible,\n} from '../../../Collapsible';\nimport { For } from '../../../For';\nimport { Show } from '../../../Show';\nimport { ConversationPendingLoader } from '../../Conversation/ConversationPendingLoader';\nimport { partsFromSegmentGroups, streamingPhaseActiveIndex } from '../normalize/normalizeMessageParts';\nimport { MessagePhaseSection } from '../segments';\nimport styles from './Message.module.css';\nimport { useMessageTurn } from './messageTurnContext';\nimport { splitFinishedWork, workedForLabel } from './workedCollapse';\n\nimport type { ReactNode } from 'react';\nimport type { MessageSegment } from '../normalize/normalizeMessageParts';\nimport type { ReformaUIMessagePart } from '../types';\nimport type { GetPhaseStats } from './messageTurnContext';\n\nfunction segmentsWithoutSources(segments: readonly MessageSegment[]): MessageSegment[] {\n const next: MessageSegment[] = [];\n\n for (const segment of segments) {\n const groups = segment.groups.filter(group => group.kind !== 'sources');\n\n if (groups.length > 0) {\n next.push({ ...segment, groups });\n }\n }\n\n return next;\n}\n\ntype SegmentListProps = {\n segments: readonly MessageSegment[];\n messageId: string;\n isStreaming: boolean;\n isLiveMessage: boolean;\n turnActive: boolean;\n phaseActiveIndex: number;\n getPhaseStats: GetPhaseStats | undefined;\n lastPart: ReformaUIMessagePart | undefined;\n loaderParts: readonly ReformaUIMessagePart[];\n /** Work under the spoiler is not the message tail, so its phases stay closed. */\n markTail: boolean;\n};\n\nfunction AssistantSegments({\n segments,\n messageId,\n isStreaming,\n isLiveMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n markTail,\n}: SegmentListProps) {\n return (\n <For each={ segments }>\n { (segment, segIndex, { isLast }) => {\n const isLastSegment = markTail && isLast;\n\n return (\n <MessagePhaseSection\n key={ `${ messageId }-${ segment.index }` }\n segment={ segment }\n messageId={ messageId }\n isStreaming={ isStreaming }\n isLiveMessage={ isLiveMessage }\n isLastSegment={ isLastSegment }\n streamActive={ turnActive && (isLastSegment || segIndex === phaseActiveIndex) }\n fileStats={\n segment.layout === 'grouped'\n ? getPhaseStats?.(partsFromSegmentGroups(segment.groups))\n : undefined\n }\n >\n { isLastSegment && isStreaming\n ? (\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n )\n : null }\n </MessagePhaseSection>\n );\n } }\n </For>\n );\n}\n\nfunction WorkedTrigger({ label }: { label: string }) {\n const { state } = useCollapsible();\n\n return (\n <CollapsibleTrigger asChild>\n <Button\n type=\"button\"\n variant=\"inline\"\n color=\"secondary\"\n className={ styles.workedTrigger }\n >\n { label }\n <ChevronDown\n className={ cn('chevron', 'next') }\n aria-expanded={ state.isExpanded }\n aria-hidden\n />\n </Button>\n </CollapsibleTrigger>\n );\n}\n\n/** Closed panel stays out of the DOM. `hidden=until-found` is still a flex item and keeps `.worked`'s gap. */\nfunction WorkedPanel({ children }: { children: ReactNode }) {\n const { state } = useCollapsible();\n\n return (\n <Show when={ state.isExpanded }>\n <CollapsibleContent className={ styles.workedPanel }>\n { children }\n </CollapsibleContent>\n </Show>\n );\n}\n\nfunction WorkedFor({ label, children }: { label: string; children: ReactNode }) {\n return (\n <Collapsible className={ styles.worked } defaultOpen={ false }>\n <WorkedTrigger label={ label } />\n <WorkedPanel>{ children }</WorkedPanel>\n </Collapsible>\n );\n}\n\n/**\n * Assistant turn segments and streaming pending loader.\n * A finished text answer folds the work into one \"Worked for …\" disclosure.\n * Cancelled turns and turns that do not end on text keep the phase rows open.\n */\nexport const MessageAssistantBody = observer(({\n hideSources = false,\n}: {\n /** Editor footer owns citations — drop in-body Sources groups. */\n hideSources?: boolean;\n} = {}) => {\n const turn = useMessageTurn();\n\n if (turn?.role !== 'assistant' || turn.message.role !== 'assistant') {\n return null;\n }\n\n const {\n messageId,\n segments: rawSegments,\n lastPart,\n turnActive,\n isStreaming,\n isLastMessage,\n getPhaseStats,\n } = turn;\n const segments = hideSources ? segmentsWithoutSources(rawSegments) : rawSegments;\n const loaderParts = turn.message.parts;\n const metadata = turn.message.metadata;\n\n if (segments.length === 0 && !isStreaming) {\n return null;\n }\n\n const phaseActiveIndex = streamingPhaseActiveIndex(segments, isStreaming);\n const finished = splitFinishedWork(segments, {\n streaming: isStreaming,\n cancelled: metadata?.stopReason === 'cancelled',\n });\n const listProps = {\n messageId,\n isStreaming,\n isLiveMessage: isLastMessage,\n turnActive,\n phaseActiveIndex,\n getPhaseStats,\n lastPart,\n loaderParts,\n };\n\n return (\n <Show\n when={ finished }\n fallback={ (\n <>\n <AssistantSegments\n { ...listProps }\n segments={ segments }\n markTail\n />\n <Show when={ isStreaming && segments.length === 0 }>\n <ConversationPendingLoader\n lastPart={ lastPart }\n messageId={ messageId }\n parts={ loaderParts }\n />\n </Show>\n </>\n ) }\n >\n { split => (\n <>\n <WorkedFor label={ workedForLabel(metadata?.startedAt, metadata?.endedAt) }>\n <AssistantSegments\n { ...listProps }\n segments={ split.work }\n markTail={ false }\n />\n </WorkedFor>\n <AssistantSegments\n { ...listProps }\n segments={ [split.answer] }\n markTail\n />\n </>\n ) }\n </Show>\n );\n});\n"],"names":["segmentsWithoutSources","segments","next","segment","groups","group","AssistantSegments","messageId","isStreaming","isLiveMessage","turnActive","phaseActiveIndex","getPhaseStats","lastPart","loaderParts","markTail","For","segIndex","isLast","isLastSegment","MessagePhaseSection","partsFromSegmentGroups","_jsx","ConversationPendingLoader","WorkedTrigger","label","state","useCollapsible","CollapsibleTrigger","Button","styles","ChevronDown","cn","WorkedPanel","children","Show","CollapsibleContent","WorkedFor","Collapsible","MessageAssistantBody","observer","hideSources","turn","useMessageTurn","rawSegments","isLastMessage","metadata","streamingPhaseActiveIndex","finished","splitFinishedWork","listProps","_Fragment","split","_jsxs","workedForLabel"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../../src/chat/Tool/Tool.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Tool.d.ts","sourceRoot":"","sources":["../../../src/chat/Tool/Tool.tsx"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAqDjD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC,GAAG,MAAM,CAexE;AAgBD,qGAAqG;AACrG,wBAAgB,IAAI,CAAC,EACjB,IAAI,EACJ,sBAAsB,EACtB,YAAY,EACZ,UAAU,GACb,EAAE,iBAAiB,sCAoBnB"}
|
package/dist/chat/Tool/Tool.js
CHANGED
|
@@ -1,128 +1,130 @@
|
|
|
1
|
-
import { isToolUIPart as g, getToolName as
|
|
2
|
-
import { useChatHandlers as
|
|
3
|
-
import { AgentTool as
|
|
4
|
-
import { AskUserQuestionTool as
|
|
5
|
-
import { BashTool as
|
|
6
|
-
import {
|
|
1
|
+
import { isToolUIPart as g, getToolName as s } from "ai";
|
|
2
|
+
import { useChatHandlers as h } from "../ChatContext.js";
|
|
3
|
+
import { AgentTool as S } from "./agent/AgentTool.js";
|
|
4
|
+
import { AskUserQuestionTool as P } from "./ask-user-question/AskUserQuestionTool.js";
|
|
5
|
+
import { BashTool as v } from "./bash/BashTool.js";
|
|
6
|
+
import { CheckPageTool as G } from "./check-page/CheckPageTool.js";
|
|
7
|
+
import { ChooseDesignDirectionTool as C } from "./choose-design-direction/ChooseDesignDirectionTool.js";
|
|
7
8
|
import { CreateDirectoryTool as E } from "./create-directory/CreateDirectoryTool.js";
|
|
8
9
|
import { DefaultTool as y } from "./default/Default.js";
|
|
9
|
-
import { DevServerRestartTool as
|
|
10
|
-
import { DevServerStatusTool as
|
|
10
|
+
import { DevServerRestartTool as I } from "./dev-server/DevServerRestartTool.js";
|
|
11
|
+
import { DevServerStatusTool as F } from "./dev-server/DevServerStatusTool.js";
|
|
11
12
|
import { EditTool as i } from "./edit/EditTool.js";
|
|
12
|
-
import { FetchTool as
|
|
13
|
-
import { GetBackgroundResultTool as
|
|
13
|
+
import { FetchTool as b } from "./fetch/FetchTool.js";
|
|
14
|
+
import { GetBackgroundResultTool as k } from "./get-background-result/GetBackgroundResultTool.js";
|
|
14
15
|
import { isGetErrorsToolName as A, GetErrorsTool as u, GET_ERRORS_TOOL_NAME as M } from "./get-errors/GetErrorsTool.js";
|
|
15
16
|
import { GlobTool as N } from "./glob/GlobTool.js";
|
|
16
|
-
import { GrepTool as
|
|
17
|
+
import { GrepTool as B } from "./grep/GrepTool.js";
|
|
17
18
|
import { ImageAssetTool as l } from "./image-asset/ImageAssetTool.js";
|
|
18
|
-
import { InstallDepsTool as
|
|
19
|
-
import { InstallPlugin as
|
|
20
|
-
import { ListDirectoryTool as
|
|
19
|
+
import { InstallDepsTool as L } from "./install-dependencies/InstallDependenciesTool.js";
|
|
20
|
+
import { InstallPlugin as _ } from "./install-plugin/InstallPlugin.js";
|
|
21
|
+
import { ListDirectoryTool as j } from "./list-directory/ListDirectoryTool.js";
|
|
21
22
|
import { CallDynamicTool as p } from "./mcp-tools/CallDynamicTool.js";
|
|
22
|
-
import { GetDynamicToolsTool as
|
|
23
|
-
import { GetMcpResourcesTool as
|
|
24
|
-
import { McpAuth as
|
|
25
|
-
import { parsePrefixedMcpToolName as
|
|
26
|
-
import { MemoryTool as
|
|
27
|
-
import { MoveFileTool as
|
|
28
|
-
import { CreatePlanTool as
|
|
29
|
-
import { PreambleTool as
|
|
30
|
-
import { BuildTool as
|
|
31
|
-
import { ProjectEnvTool as
|
|
32
|
-
import { ReadFilesTool as
|
|
33
|
-
import { ReadLintsTool as
|
|
34
|
-
import { RemoveFileTool as
|
|
35
|
-
import { ScaffoldProjectTool as
|
|
36
|
-
import { CaptureScreenshotTool as
|
|
37
|
-
import { SkillTool as
|
|
38
|
-
import { WaitingTool as
|
|
23
|
+
import { GetDynamicToolsTool as O } from "./mcp-tools/GetDynamicToolsTool.js";
|
|
24
|
+
import { GetMcpResourcesTool as W } from "./mcp-tools/GetMcpResourcesTool.js";
|
|
25
|
+
import { McpAuth as x } from "./mcp-tools/McpAuth.js";
|
|
26
|
+
import { parsePrefixedMcpToolName as U, parseCallDynamicToolInput as d } from "./mcp-tools/parseCallDynamicToolInput.js";
|
|
27
|
+
import { MemoryTool as c } from "./memory/MemoryTool.js";
|
|
28
|
+
import { MoveFileTool as Q } from "./move-file/MoveFileTool.js";
|
|
29
|
+
import { CreatePlanTool as T } from "./plan/CreatePlanTool.js";
|
|
30
|
+
import { PreambleTool as w } from "./preamble/PreambleTool.js";
|
|
31
|
+
import { BuildTool as H } from "./project-build/BuildTool.js";
|
|
32
|
+
import { ProjectEnvTool as $ } from "./project-env/ProjectEnvTool.js";
|
|
33
|
+
import { ReadFilesTool as q } from "./read/ReadFilesTool.js";
|
|
34
|
+
import { ReadLintsTool as z } from "./read-lints/ReadLintsTool.js";
|
|
35
|
+
import { RemoveFileTool as J } from "./remove-file/RemoveFileTool.js";
|
|
36
|
+
import { ScaffoldProjectTool as K } from "./scaffold-project/ScaffoldProjectTool.js";
|
|
37
|
+
import { CaptureScreenshotTool as V } from "./screenshot/CaptureScreenshotTool.js";
|
|
38
|
+
import { SkillTool as X } from "./skill/SkillTool.js";
|
|
39
|
+
import { WaitingTool as Y } from "./waiting/WaitingTool.js";
|
|
39
40
|
import { WebSearchTool as n } from "./web-search/WebSearchTool.js";
|
|
40
|
-
import { jsx as
|
|
41
|
-
const
|
|
41
|
+
import { jsx as Z } from "react/jsx-runtime";
|
|
42
|
+
const a = {
|
|
42
43
|
default: y,
|
|
43
|
-
Agent:
|
|
44
|
-
CreatePlan:
|
|
44
|
+
Agent: S,
|
|
45
|
+
CreatePlan: T,
|
|
45
46
|
EditPlan: i,
|
|
46
|
-
ReadPlan:
|
|
47
|
+
ReadPlan: T,
|
|
47
48
|
WebSearch: n,
|
|
48
49
|
// Vendor stream / legacy names (canonical local name is `WebSearch`).
|
|
49
50
|
web_search: n,
|
|
50
51
|
google_search: n,
|
|
51
|
-
PageScreenshot:
|
|
52
|
+
PageScreenshot: V,
|
|
53
|
+
CheckPage: G,
|
|
52
54
|
ImageGen: l,
|
|
53
55
|
SearchImage: l,
|
|
54
56
|
ImportAsset: l,
|
|
55
|
-
Fetch:
|
|
56
|
-
Read:
|
|
57
|
-
ReadLints:
|
|
58
|
-
RemoveFile:
|
|
59
|
-
DevServerRestart:
|
|
60
|
-
DevServerStatus:
|
|
61
|
-
ScaffoldProject:
|
|
57
|
+
Fetch: b,
|
|
58
|
+
Read: q,
|
|
59
|
+
ReadLints: z,
|
|
60
|
+
RemoveFile: J,
|
|
61
|
+
DevServerRestart: I,
|
|
62
|
+
DevServerStatus: F,
|
|
63
|
+
ScaffoldProject: K,
|
|
62
64
|
CreateDirectory: E,
|
|
63
|
-
MoveFile:
|
|
64
|
-
Preamble:
|
|
65
|
-
ProjectEnv:
|
|
66
|
-
GetDynamicTools:
|
|
67
|
-
GetMcpResources:
|
|
65
|
+
MoveFile: Q,
|
|
66
|
+
Preamble: w,
|
|
67
|
+
ProjectEnv: $,
|
|
68
|
+
GetDynamicTools: O,
|
|
69
|
+
GetMcpResources: W,
|
|
68
70
|
CallDynamicTool: p,
|
|
69
|
-
McpAuth:
|
|
70
|
-
InstallPlugin:
|
|
71
|
+
McpAuth: x,
|
|
72
|
+
InstallPlugin: _,
|
|
71
73
|
Glob: N,
|
|
72
|
-
Grep:
|
|
73
|
-
InstallDeps:
|
|
74
|
-
Skill:
|
|
75
|
-
Remember:
|
|
76
|
-
Forget:
|
|
77
|
-
Waiting:
|
|
78
|
-
ListDirectory:
|
|
74
|
+
Grep: B,
|
|
75
|
+
InstallDeps: L,
|
|
76
|
+
Skill: X,
|
|
77
|
+
Remember: c,
|
|
78
|
+
Forget: c,
|
|
79
|
+
Waiting: Y,
|
|
80
|
+
ListDirectory: j,
|
|
79
81
|
Write: i,
|
|
80
82
|
Edit: i,
|
|
81
|
-
Bash:
|
|
82
|
-
Build:
|
|
83
|
-
GetBackgroundResult:
|
|
84
|
-
AskUserQuestion:
|
|
85
|
-
ChooseDesignDirection:
|
|
83
|
+
Bash: v,
|
|
84
|
+
Build: H,
|
|
85
|
+
GetBackgroundResult: k,
|
|
86
|
+
AskUserQuestion: P,
|
|
87
|
+
ChooseDesignDirection: C,
|
|
86
88
|
[M]: u
|
|
87
89
|
};
|
|
88
|
-
function
|
|
89
|
-
const r =
|
|
90
|
+
function oo(o) {
|
|
91
|
+
const r = s(o);
|
|
90
92
|
if (r !== "CallDynamicTool")
|
|
91
93
|
return r;
|
|
92
94
|
const {
|
|
93
95
|
toolName: e
|
|
94
|
-
} = d(o.input), t =
|
|
96
|
+
} = d(o.input), t = a[e];
|
|
95
97
|
return !t || t === p ? r : e;
|
|
96
98
|
}
|
|
97
|
-
function
|
|
98
|
-
const r =
|
|
99
|
-
return r ===
|
|
99
|
+
function ro(o) {
|
|
100
|
+
const r = oo(o);
|
|
101
|
+
return r === s(o) ? o : {
|
|
100
102
|
...o,
|
|
101
103
|
type: `tool-${r}`,
|
|
102
104
|
input: d(o.input).mcpInput
|
|
103
105
|
};
|
|
104
106
|
}
|
|
105
|
-
function
|
|
107
|
+
function Ho({
|
|
106
108
|
part: o,
|
|
107
109
|
onToolApprovalResponse: r,
|
|
108
110
|
onToolOutput: e,
|
|
109
111
|
onOpenPath: t
|
|
110
112
|
}) {
|
|
111
|
-
const R =
|
|
113
|
+
const R = h({
|
|
112
114
|
onToolApprovalResponse: r,
|
|
113
115
|
onToolOutput: e,
|
|
114
116
|
onOpenPath: t
|
|
115
117
|
});
|
|
116
118
|
if (!g(o))
|
|
117
119
|
return null;
|
|
118
|
-
const f =
|
|
119
|
-
return /* @__PURE__ */
|
|
120
|
+
const f = ro(o), m = s(f), D = A(m) ? u : a[m] ?? (U(m) ? p : a.default);
|
|
121
|
+
return /* @__PURE__ */ Z(D, {
|
|
120
122
|
part: f,
|
|
121
123
|
...R
|
|
122
124
|
});
|
|
123
125
|
}
|
|
124
126
|
export {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
+
Ho as Tool,
|
|
128
|
+
oo as renderedToolName
|
|
127
129
|
};
|
|
128
130
|
//# sourceMappingURL=Tool.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tool.js","sources":["../../../src/chat/Tool/Tool.tsx"],"sourcesContent":["import { getToolName, isToolUIPart } from 'ai';\n\nimport { useChatHandlers } from '../ChatContext';\nimport { AgentTool } from './agent';\nimport { AskUserQuestionTool } from './ask-user-question';\nimport { BashTool } from './bash';\nimport { ChooseDesignDirectionTool } from './choose-design-direction';\nimport { CreateDirectoryTool } from './create-directory';\nimport { DefaultTool } from './default/Default';\nimport { DevServerRestartTool, DevServerStatusTool } from './dev-server';\nimport { EditTool } from './edit';\nimport { FetchTool } from './fetch';\nimport { GetBackgroundResultTool } from './get-background-result';\nimport { GET_ERRORS_TOOL_NAME, GetErrorsTool, isGetErrorsToolName } from './get-errors';\nimport { GlobTool } from './glob';\nimport { GrepTool } from './grep';\nimport { ImageAssetTool } from './image-asset';\nimport { InstallDepsTool } from './install-dependencies';\nimport { InstallPlugin } from './install-plugin/InstallPlugin';\nimport { ListDirectoryTool } from './list-directory';\nimport { CallDynamicTool, GetDynamicToolsTool, GetMcpResourcesTool, McpAuth, parseCallDynamicToolInput, parsePrefixedMcpToolName } from './mcp-tools';\nimport { MemoryTool } from './memory';\nimport { MoveFileTool } from './move-file';\nimport { CreatePlanTool } from './plan/CreatePlanTool';\nimport { PreambleTool } from './preamble';\nimport { BuildTool } from './project-build';\nimport { ProjectEnvTool } from './project-env';\nimport { ReadFilesTool } from './read';\nimport { ReadLintsTool } from './read-lints';\nimport { RemoveFileTool } from './remove-file';\nimport { ScaffoldProjectTool } from './scaffold-project/ScaffoldProjectTool';\nimport { CaptureScreenshotTool } from './screenshot';\nimport { SkillTool } from './skill';\nimport { WaitingTool } from './waiting/WaitingTool';\nimport { WebSearchTool } from './web-search';\n\nimport type { ToolRendererProps } from './types';\n\ntype ToolRenderer = (props: ToolRendererProps) => ReturnType<typeof DefaultTool>;\n\nconst TOOL_RENDERERS: Record<string, ToolRenderer> = {\n default: DefaultTool,\n Agent: AgentTool,\n CreatePlan: CreatePlanTool,\n EditPlan: EditTool,\n ReadPlan: CreatePlanTool,\n WebSearch: WebSearchTool,\n // Vendor stream / legacy names (canonical local name is `WebSearch`).\n web_search: WebSearchTool,\n google_search: WebSearchTool,\n PageScreenshot: CaptureScreenshotTool,\n ImageGen: ImageAssetTool,\n SearchImage: ImageAssetTool,\n ImportAsset: ImageAssetTool,\n Fetch: FetchTool,\n Read: ReadFilesTool,\n ReadLints: ReadLintsTool,\n RemoveFile: RemoveFileTool,\n DevServerRestart: DevServerRestartTool,\n DevServerStatus: DevServerStatusTool,\n ScaffoldProject: ScaffoldProjectTool,\n CreateDirectory: CreateDirectoryTool,\n MoveFile: MoveFileTool,\n Preamble: PreambleTool,\n ProjectEnv: ProjectEnvTool,\n GetDynamicTools: GetDynamicToolsTool,\n GetMcpResources: GetMcpResourcesTool,\n CallDynamicTool,\n McpAuth,\n InstallPlugin,\n Glob: GlobTool,\n Grep: GrepTool,\n InstallDeps: InstallDepsTool,\n Skill: SkillTool,\n Remember: MemoryTool,\n Forget: MemoryTool,\n Waiting: WaitingTool,\n ListDirectory: ListDirectoryTool,\n Write: EditTool,\n Edit: EditTool,\n Bash: BashTool,\n Build: BuildTool,\n GetBackgroundResult: GetBackgroundResultTool,\n AskUserQuestion: AskUserQuestionTool,\n ChooseDesignDirection: ChooseDesignDirectionTool,\n [GET_ERRORS_TOOL_NAME]: GetErrorsTool,\n};\n\n/**\n * Deferred builtins arrive as `CallDynamicTool`. Use that tool's own card when one exists.\n * @internal\n */\nexport function renderedToolName(part: ToolRendererProps['part']): string {\n const name = getToolName(part);\n\n if (name !== 'CallDynamicTool') {\n return name;\n }\n\n const { toolName } = parseCallDynamicToolInput(part.input);\n const renderer = TOOL_RENDERERS[toolName];\n\n if (!renderer || renderer === CallDynamicTool) {\n return name;\n }\n\n return toolName;\n}\n\nfunction partForRenderer(part: ToolRendererProps['part']): ToolRendererProps['part'] {\n const name = renderedToolName(part);\n\n if (name === getToolName(part)) {\n return part;\n }\n\n return {\n ...part,\n type: `tool-${ name }`,\n input: parseCallDynamicToolInput(part.input).mcpInput,\n } as ToolRendererProps['part'];\n}\n\n/** Renders one AI SDK tool UI part: routes to a compact tool UI or the default collapsible shell. */\nexport function Tool({\n part,\n onToolApprovalResponse,\n onToolOutput,\n onOpenPath,\n}: ToolRendererProps) {\n const handlers = useChatHandlers({ onToolApprovalResponse, onToolOutput, onOpenPath });\n\n if (!isToolUIPart(part)) {\n return null;\n }\n\n const presented = partForRenderer(part);\n const name = getToolName(presented);\n const ToolRenderer = isGetErrorsToolName(name)\n ? GetErrorsTool\n : TOOL_RENDERERS[name]\n ?? (parsePrefixedMcpToolName(name) ? CallDynamicTool : TOOL_RENDERERS.default);\n\n return (\n <ToolRenderer\n part={ presented }\n { ...handlers }\n />\n );\n}\n"],"names":["TOOL_RENDERERS","DefaultTool","AgentTool","CreatePlanTool","EditTool","WebSearchTool","CaptureScreenshotTool","ImageAssetTool","FetchTool","ReadFilesTool","ReadLintsTool","RemoveFileTool","DevServerRestartTool","DevServerStatusTool","ScaffoldProjectTool","CreateDirectoryTool","MoveFileTool","PreambleTool","ProjectEnvTool","GetDynamicToolsTool","GetMcpResourcesTool","CallDynamicTool","McpAuth","InstallPlugin","GlobTool","GrepTool","InstallDepsTool","SkillTool","MemoryTool","WaitingTool","ListDirectoryTool","BashTool","BuildTool","GetBackgroundResultTool","AskUserQuestionTool","ChooseDesignDirectionTool","GET_ERRORS_TOOL_NAME","GetErrorsTool","renderedToolName","part","name","getToolName","toolName","parseCallDynamicToolInput","renderer","partForRenderer","Tool","onToolApprovalResponse","onToolOutput","onOpenPath","handlers","useChatHandlers","isToolUIPart","presented","ToolRenderer","isGetErrorsToolName","parsePrefixedMcpToolName"],"mappings":"
|
|
1
|
+
{"version":3,"file":"Tool.js","sources":["../../../src/chat/Tool/Tool.tsx"],"sourcesContent":["import { getToolName, isToolUIPart } from 'ai';\n\nimport { useChatHandlers } from '../ChatContext';\nimport { AgentTool } from './agent';\nimport { AskUserQuestionTool } from './ask-user-question';\nimport { BashTool } from './bash';\nimport { CheckPageTool } from './check-page';\nimport { ChooseDesignDirectionTool } from './choose-design-direction';\nimport { CreateDirectoryTool } from './create-directory';\nimport { DefaultTool } from './default/Default';\nimport { DevServerRestartTool, DevServerStatusTool } from './dev-server';\nimport { EditTool } from './edit';\nimport { FetchTool } from './fetch';\nimport { GetBackgroundResultTool } from './get-background-result';\nimport { GET_ERRORS_TOOL_NAME, GetErrorsTool, isGetErrorsToolName } from './get-errors';\nimport { GlobTool } from './glob';\nimport { GrepTool } from './grep';\nimport { ImageAssetTool } from './image-asset';\nimport { InstallDepsTool } from './install-dependencies';\nimport { InstallPlugin } from './install-plugin/InstallPlugin';\nimport { ListDirectoryTool } from './list-directory';\nimport { CallDynamicTool, GetDynamicToolsTool, GetMcpResourcesTool, McpAuth, parseCallDynamicToolInput, parsePrefixedMcpToolName } from './mcp-tools';\nimport { MemoryTool } from './memory';\nimport { MoveFileTool } from './move-file';\nimport { CreatePlanTool } from './plan/CreatePlanTool';\nimport { PreambleTool } from './preamble';\nimport { BuildTool } from './project-build';\nimport { ProjectEnvTool } from './project-env';\nimport { ReadFilesTool } from './read';\nimport { ReadLintsTool } from './read-lints';\nimport { RemoveFileTool } from './remove-file';\nimport { ScaffoldProjectTool } from './scaffold-project/ScaffoldProjectTool';\nimport { CaptureScreenshotTool } from './screenshot';\nimport { SkillTool } from './skill';\nimport { WaitingTool } from './waiting/WaitingTool';\nimport { WebSearchTool } from './web-search';\n\nimport type { ToolRendererProps } from './types';\n\ntype ToolRenderer = (props: ToolRendererProps) => ReturnType<typeof DefaultTool>;\n\nconst TOOL_RENDERERS: Record<string, ToolRenderer> = {\n default: DefaultTool,\n Agent: AgentTool,\n CreatePlan: CreatePlanTool,\n EditPlan: EditTool,\n ReadPlan: CreatePlanTool,\n WebSearch: WebSearchTool,\n // Vendor stream / legacy names (canonical local name is `WebSearch`).\n web_search: WebSearchTool,\n google_search: WebSearchTool,\n PageScreenshot: CaptureScreenshotTool,\n CheckPage: CheckPageTool,\n ImageGen: ImageAssetTool,\n SearchImage: ImageAssetTool,\n ImportAsset: ImageAssetTool,\n Fetch: FetchTool,\n Read: ReadFilesTool,\n ReadLints: ReadLintsTool,\n RemoveFile: RemoveFileTool,\n DevServerRestart: DevServerRestartTool,\n DevServerStatus: DevServerStatusTool,\n ScaffoldProject: ScaffoldProjectTool,\n CreateDirectory: CreateDirectoryTool,\n MoveFile: MoveFileTool,\n Preamble: PreambleTool,\n ProjectEnv: ProjectEnvTool,\n GetDynamicTools: GetDynamicToolsTool,\n GetMcpResources: GetMcpResourcesTool,\n CallDynamicTool,\n McpAuth,\n InstallPlugin,\n Glob: GlobTool,\n Grep: GrepTool,\n InstallDeps: InstallDepsTool,\n Skill: SkillTool,\n Remember: MemoryTool,\n Forget: MemoryTool,\n Waiting: WaitingTool,\n ListDirectory: ListDirectoryTool,\n Write: EditTool,\n Edit: EditTool,\n Bash: BashTool,\n Build: BuildTool,\n GetBackgroundResult: GetBackgroundResultTool,\n AskUserQuestion: AskUserQuestionTool,\n ChooseDesignDirection: ChooseDesignDirectionTool,\n [GET_ERRORS_TOOL_NAME]: GetErrorsTool,\n};\n\n/**\n * Deferred builtins arrive as `CallDynamicTool`. Use that tool's own card when one exists.\n * @internal\n */\nexport function renderedToolName(part: ToolRendererProps['part']): string {\n const name = getToolName(part);\n\n if (name !== 'CallDynamicTool') {\n return name;\n }\n\n const { toolName } = parseCallDynamicToolInput(part.input);\n const renderer = TOOL_RENDERERS[toolName];\n\n if (!renderer || renderer === CallDynamicTool) {\n return name;\n }\n\n return toolName;\n}\n\nfunction partForRenderer(part: ToolRendererProps['part']): ToolRendererProps['part'] {\n const name = renderedToolName(part);\n\n if (name === getToolName(part)) {\n return part;\n }\n\n return {\n ...part,\n type: `tool-${ name }`,\n input: parseCallDynamicToolInput(part.input).mcpInput,\n } as ToolRendererProps['part'];\n}\n\n/** Renders one AI SDK tool UI part: routes to a compact tool UI or the default collapsible shell. */\nexport function Tool({\n part,\n onToolApprovalResponse,\n onToolOutput,\n onOpenPath,\n}: ToolRendererProps) {\n const handlers = useChatHandlers({ onToolApprovalResponse, onToolOutput, onOpenPath });\n\n if (!isToolUIPart(part)) {\n return null;\n }\n\n const presented = partForRenderer(part);\n const name = getToolName(presented);\n const ToolRenderer = isGetErrorsToolName(name)\n ? GetErrorsTool\n : TOOL_RENDERERS[name]\n ?? (parsePrefixedMcpToolName(name) ? CallDynamicTool : TOOL_RENDERERS.default);\n\n return (\n <ToolRenderer\n part={ presented }\n { ...handlers }\n />\n );\n}\n"],"names":["TOOL_RENDERERS","DefaultTool","AgentTool","CreatePlanTool","EditTool","WebSearchTool","CaptureScreenshotTool","CheckPageTool","ImageAssetTool","FetchTool","ReadFilesTool","ReadLintsTool","RemoveFileTool","DevServerRestartTool","DevServerStatusTool","ScaffoldProjectTool","CreateDirectoryTool","MoveFileTool","PreambleTool","ProjectEnvTool","GetDynamicToolsTool","GetMcpResourcesTool","CallDynamicTool","McpAuth","InstallPlugin","GlobTool","GrepTool","InstallDepsTool","SkillTool","MemoryTool","WaitingTool","ListDirectoryTool","BashTool","BuildTool","GetBackgroundResultTool","AskUserQuestionTool","ChooseDesignDirectionTool","GET_ERRORS_TOOL_NAME","GetErrorsTool","renderedToolName","part","name","getToolName","toolName","parseCallDynamicToolInput","renderer","partForRenderer","Tool","onToolApprovalResponse","onToolOutput","onOpenPath","handlers","useChatHandlers","isToolUIPart","presented","ToolRenderer","isGetErrorsToolName","parsePrefixedMcpToolName"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAMA,IAAiB;AAAA,EACrB,SAASC;AAAA,EACT,OAAOC;AAAA,EACP,YAAYC;AAAA,EACZ,UAAUC;AAAA,EACV,UAAUD;AAAA,EACV,WAAWE;AAAA;AAAA,EAEX,YAAYA;AAAA,EACZ,eAAeA;AAAA,EACf,gBAAgBC;AAAA,EAChB,WAAWC;AAAA,EACX,UAAUC;AAAA,EACV,aAAaA;AAAA,EACb,aAAaA;AAAA,EACb,OAAOC;AAAA,EACP,MAAMC;AAAA,EACN,WAAWC;AAAA,EACX,YAAYC;AAAA,EACZ,kBAAkBC;AAAA,EAClB,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,UAAUC;AAAA,EACV,UAAUC;AAAA,EACV,YAAYC;AAAA,EACZ,iBAAiBC;AAAA,EACjB,iBAAiBC;AAAA,EACjB,iBAAAC;AAAA,EACA,SAAAC;AAAA,EACA,eAAAC;AAAA,EACA,MAAMC;AAAA,EACN,MAAMC;AAAA,EACN,aAAaC;AAAA,EACb,OAAOC;AAAA,EACP,UAAUC;AAAA,EACV,QAAQA;AAAA,EACR,SAASC;AAAA,EACT,eAAeC;AAAA,EACf,OAAO3B;AAAA,EACP,MAAMA;AAAA,EACN,MAAM4B;AAAA,EACN,OAAOC;AAAA,EACP,qBAAqBC;AAAA,EACrB,iBAAiBC;AAAA,EACjB,uBAAuBC;AAAA,EACvB,CAACC,CAAoB,GAAGC;AAC1B;AAMO,SAASC,GAAiBC,GAAM;AACrC,QAAMC,IAAOC,EAAYF,CAAI;AAC7B,MAAIC,MAAS;AACX,WAAOA;AAET,QAAM;AAAA,IACJ,UAAAE;AAAA,EAAA,IACEC,EAA0BJ,EAAK,KAAK,GAClCK,IAAW7C,EAAe2C,CAAQ;AACxC,SAAI,CAACE,KAAYA,MAAavB,IACrBmB,IAEFE;AACT;AACA,SAASG,GAAgBN,GAAM;AAC7B,QAAMC,IAAOF,GAAiBC,CAAI;AAClC,SAAIC,MAASC,EAAYF,CAAI,IACpBA,IAEF;AAAA,IACL,GAAGA;AAAA,IACH,MAAM,QAAQC,CAAI;AAAA,IAClB,OAAOG,EAA0BJ,EAAK,KAAK,EAAE;AAAA,EAAA;AAEjD;AAGO,SAASO,GAAK;AAAA,EACnB,MAAAP;AAAA,EACA,wBAAAQ;AAAA,EACA,cAAAC;AAAA,EACA,YAAAC;AACF,GAAG;AACD,QAAMC,IAAWC,EAAgB;AAAA,IAC/B,wBAAAJ;AAAA,IACA,cAAAC;AAAA,IACA,YAAAC;AAAA,EAAA,CACD;AACD,MAAI,CAACG,EAAab,CAAI;AACpB,WAAO;AAET,QAAMc,IAAYR,GAAgBN,CAAI,GAChCC,IAAOC,EAAYY,CAAS,GAC5BC,IAAeC,EAAoBf,CAAI,IAAIH,IAAgBtC,EAAeyC,CAAI,MAAMgB,EAAyBhB,CAAI,IAAInB,IAAkBtB,EAAe;AAC5J,2BAAyBuD,GAAc;AAAA,IACrC,MAAMD;AAAA,IACN,GAAGH;AAAA,EAAA,CACJ;AACH;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentTool.d.ts","sourceRoot":"","sources":["../../../../src/chat/Tool/agent/AgentTool.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"AgentTool.d.ts","sourceRoot":"","sources":["../../../../src/chat/Tool/agent/AgentTool.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA8IlD,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAChC,IAAI,EAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,EAC3C,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAW3E;AAED,qFAAqF;AACrF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CA0BpG;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,KAAK,EAAE;IACnC,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,MAAM,GAAG,SAAS,CAcrB;AAiFD,mDAAmD;AACnD,eAAO,MAAM,SAAS,cAAuB,iBAAiB;8BAAjB,iBAAiB;CA6C5D,CAAC"}
|
|
@@ -3,10 +3,10 @@ import { ProgressLoader as I } from "@reforma/icons/assets";
|
|
|
3
3
|
import { humanizeString as k, basename as T, plural as w } from "@reforma/lib";
|
|
4
4
|
import { isToolUIPart as N, getToolName as F } from "ai";
|
|
5
5
|
import { observer as U } from "mobx-react-lite";
|
|
6
|
-
import { Box as
|
|
6
|
+
import { Box as C } from "../../../Box/Box.js";
|
|
7
7
|
import { Pressable as B } from "react-aria-components";
|
|
8
8
|
import { Shimmer as G } from "../../../Shimmer/Shimmer.js";
|
|
9
|
-
import { Show as
|
|
9
|
+
import { Show as g } from "../../../Show/Show.js";
|
|
10
10
|
import { Text as m } from "../../../Text/Text.js";
|
|
11
11
|
import { useChat as M } from "../../ChatContext.js";
|
|
12
12
|
import { useMessageTurn as O } from "../../Message/turn/messageTurnContext.js";
|
|
@@ -15,7 +15,7 @@ import { ToolShellCard as _ } from "../shell/ToolShellCard.js";
|
|
|
15
15
|
import { useToolProgress as D } from "../shell/toolProgress.js";
|
|
16
16
|
import V from "../shell/ToolShellCard.module.css.js";
|
|
17
17
|
import h from "./AgentTool.module.css.js";
|
|
18
|
-
import { jsx as o, jsxs as
|
|
18
|
+
import { jsx as o, jsxs as S } from "react/jsx-runtime";
|
|
19
19
|
const z = {
|
|
20
20
|
research: "Explore",
|
|
21
21
|
shell: "Shell",
|
|
@@ -98,6 +98,7 @@ const K = {
|
|
|
98
98
|
Preamble: (e) => i(e.content),
|
|
99
99
|
ReadLints: () => "Checking lints",
|
|
100
100
|
PageScreenshot: () => "Capturing screenshot",
|
|
101
|
+
CheckPage: () => "Checking pages",
|
|
101
102
|
DevServerStatus: () => "Checking project",
|
|
102
103
|
ImportAsset: () => "Importing asset",
|
|
103
104
|
CreatePlan: () => "Creating plan",
|
|
@@ -142,13 +143,13 @@ function Z({
|
|
|
142
143
|
stalled: a,
|
|
143
144
|
onOpen: c
|
|
144
145
|
}) {
|
|
145
|
-
const l = a ? W : e, u = /* @__PURE__ */ C
|
|
146
|
+
const l = a ? W : e, u = /* @__PURE__ */ S(C, {
|
|
146
147
|
align: "center",
|
|
147
148
|
direction: "row",
|
|
148
149
|
fullWidth: !0,
|
|
149
150
|
gap: "md",
|
|
150
151
|
padding: "md",
|
|
151
|
-
children: [/* @__PURE__ */ o(
|
|
152
|
+
children: [/* @__PURE__ */ o(g, {
|
|
152
153
|
when: n,
|
|
153
154
|
fallback: /* @__PURE__ */ o(x, {
|
|
154
155
|
"aria-hidden": !0
|
|
@@ -157,10 +158,10 @@ function Z({
|
|
|
157
158
|
"aria-hidden": !0,
|
|
158
159
|
size: 14
|
|
159
160
|
})
|
|
160
|
-
}), /* @__PURE__ */ C
|
|
161
|
+
}), /* @__PURE__ */ S(C, {
|
|
161
162
|
gap: "xxs",
|
|
162
163
|
grow: !0,
|
|
163
|
-
children: [/* @__PURE__ */ o(
|
|
164
|
+
children: [/* @__PURE__ */ o(g, {
|
|
164
165
|
when: n,
|
|
165
166
|
fallback: /* @__PURE__ */ o(m, {
|
|
166
167
|
className: h.title,
|
|
@@ -173,7 +174,7 @@ function Z({
|
|
|
173
174
|
duration: 1,
|
|
174
175
|
children: l
|
|
175
176
|
})
|
|
176
|
-
}), /* @__PURE__ */ o(
|
|
177
|
+
}), /* @__PURE__ */ o(g, {
|
|
177
178
|
when: n ? t : void 0,
|
|
178
179
|
children: (s) => /* @__PURE__ */ o(m, {
|
|
179
180
|
color: "secondary",
|
|
@@ -181,7 +182,7 @@ function Z({
|
|
|
181
182
|
variant: "sm",
|
|
182
183
|
children: s
|
|
183
184
|
})
|
|
184
|
-
}), /* @__PURE__ */ o(
|
|
185
|
+
}), /* @__PURE__ */ o(g, {
|
|
185
186
|
when: r,
|
|
186
187
|
children: (s) => /* @__PURE__ */ o(m, {
|
|
187
188
|
color: "danger",
|
|
@@ -196,7 +197,7 @@ function Z({
|
|
|
196
197
|
className: V.tool,
|
|
197
198
|
collapsible: !1,
|
|
198
199
|
"data-slot": "agent-tool",
|
|
199
|
-
children: /* @__PURE__ */ o(
|
|
200
|
+
children: /* @__PURE__ */ o(g, {
|
|
200
201
|
when: c,
|
|
201
202
|
fallback: u,
|
|
202
203
|
children: (s) => /* @__PURE__ */ o(B, {
|
|
@@ -219,20 +220,20 @@ const Te = U(({
|
|
|
219
220
|
} = D(e.state, a);
|
|
220
221
|
if (!N(e) || F(e) !== "Agent")
|
|
221
222
|
return null;
|
|
222
|
-
const u = j(e), s = e.state === "output-available" ? q(e.output) : void 0,
|
|
223
|
+
const u = j(e), s = e.state === "output-available" ? q(e.output) : void 0, f = u.useFailureLabel || !!s, v = R(e), A = p(v), y = H(v), L = Q(n), P = X({
|
|
223
224
|
live: c,
|
|
224
|
-
failed:
|
|
225
|
+
failed: f,
|
|
225
226
|
stalled: l,
|
|
226
227
|
needsUser: a,
|
|
227
228
|
activity: L
|
|
228
|
-
}), b = i(e.output?.childThreadId) ?? i(n?.childThreadId),
|
|
229
|
+
}), b = i(e.output?.childThreadId) ?? i(n?.childThreadId), E = !!(b && r && !f), $ = s ?? u.problemText ?? u.tooltip;
|
|
229
230
|
return /* @__PURE__ */ o(Z, {
|
|
230
|
-
activity:
|
|
231
|
+
activity: P,
|
|
231
232
|
errorText: $,
|
|
232
|
-
onOpen:
|
|
233
|
-
running: c && !
|
|
233
|
+
onOpen: E ? () => r?.(b, A) : void 0,
|
|
234
|
+
running: c && !f && !l,
|
|
234
235
|
stalled: l,
|
|
235
|
-
title: c && !
|
|
236
|
+
title: c && !f && !l ? y.live : y.done
|
|
236
237
|
});
|
|
237
238
|
});
|
|
238
239
|
export {
|