@ai-matrx/chat 0.7.7 → 0.7.9
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/CHANGELOG.md +12 -0
- package/dist/agents/components/chat/chat-quick-actions.config.d.ts +0 -8
- package/dist/agents/components/chat/chat-quick-actions.config.js +2 -1
- package/dist/agents/components/inputs/smart-input/InputActionButtons.d.ts +2 -2
- package/dist/agents/components/inputs/smart-input/InputActionButtons.js +3 -1
- package/dist/agents/components/inputs/smart-input/SmartAgentInputStacked.js +8 -3
- package/dist/agents/components/messages-display/AgentConversationDisplay.js +1 -1
- package/dist/agents/components/messages-display/assistant/AgentEmptyMessageDisplay.js +4 -4
- package/dist/agents/components/messages-display/assistant/AssistantMessageFooter.js +4 -2
- package/dist/agents/components/messages-display/assistant/AssistantNoAnswer.js +1 -1
- package/dist/agents/components/messages-display/assistant/BreathingOrb.js +1 -1
- package/dist/agents/components/messages-display/assistant/InPlaceAnswerEditor.js +1 -1
- package/dist/agents/components/messages-display/citations/MessageSourcesRow.js +1 -1
- package/dist/agents/components/messages-display/conversation-tools/ConversationFindBar.js +4 -4
- package/dist/agents/components/messages-display/message-options/EditHistoryDialog.js +7 -7
- package/dist/agents/components/messages-display/user/AgentUserMessage.js +4 -4
- package/dist/agents/components/messages-display/user/CollabNoteMessage.js +2 -2
- package/dist/agents/components/messages-display/user/FirstTurnVariables.js +3 -3
- package/dist/agents/components/messages-display/user/PendingSendMessage.js +4 -4
- package/dist/agents/components/messages-display/user/RemarksTranscriptView.js +7 -7
- package/dist/agents/components/messages-display/user/ResourceAttachmentTile.js +9 -9
- package/dist/agents/components/messages-display/user/ResourceEditableToggleSamples.js +4 -4
- package/dist/agents/components/messages-display/user/UserActionBar.js +3 -3
- package/dist/agents/components/messages-display/user/UserMessageAttachmentStyleComparison.js +12 -12
- package/dist/agents/components/messages-display/user/UserMessageChipsDemo.js +19 -19
- package/dist/agents/components/messages-display/user/UserMessageHybridTileSamples.js +22 -22
- package/dist/agents/components/run/AgentRunnerPage.js +4 -4
- package/dist/agents/components/run/AssistantError.js +1 -1
- package/dist/agents/components/run/AssistantWarning.js +1 -1
- package/dist/agents/components/run/GenerationJobCard.js +5 -5
- package/dist/agents/components/run/IncompleteNote.js +1 -1
- package/dist/agents/components/run/RunJobWorkingLine.js +1 -1
- package/dist/agents/components/shared/AgentConversationColumn.js +1 -1
- package/dist/agents/components/shared/AgentHeaderMobile.js +6 -6
- package/dist/agents/components/shared/AgentModeController.js +1 -1
- package/dist/agents/components/shared/AutoInjectionSwitch.js +6 -6
- package/dist/agents/components/shared/DesktopFilterPanel.js +8 -8
- package/dist/agents/components/shared/transcript-layout.d.ts +9 -8
- package/dist/agents/components/shared/transcript-layout.js +2 -2
- package/dist/agents/components/smart/AgentRunner.js +1 -1
- package/dist/agents/components/smart/CreateWithAiTabs.js +1 -1
- package/dist/cx-chat/components/agent/agents.d.ts +0 -5
- package/dist/cx-chat/components/agent/agents.js +4 -3
- package/dist/cx-chat/components/agent/local-agents.d.ts +0 -6
- package/dist/cx-chat/components/agent/local-agents.js +3 -2
- package/dist/host/request-headers.js +3 -1
- package/dist/surfaces/manifests/agent-builder.manifest.d.ts +8 -0
- package/dist/surfaces/manifests/agent-builder.manifest.js +62 -2
- package/dist/tool-call-visualization/components/ArtifactResultBar.js +4 -4
- package/dist/tool-call-visualization/components/ChatResultColumn.d.ts +1 -1
- package/dist/tool-call-visualization/components/ToolCallBatch.js +2 -2
- package/dist/tool-call-visualization/components/ToolCallVisualization.js +5 -5
- package/dist/tool-call-visualization/components/ToolTabBodies.js +12 -12
- package/dist/tool-call-visualization/components/ToolUpdatesOverlay.js +4 -4
- package/dist/tool-call-visualization/configured-rows/ConfiguredToolRow.js +8 -8
- package/dist/tool-call-visualization/configured-rows/CopyToolButton.js +1 -1
- package/dist/tool-call-visualization/configured-rows/ToolProgressView.js +7 -7
- package/dist/tool-call-visualization/configured-rows/field-components.js +6 -6
- package/dist/tool-call-visualization/registry/GenericRenderer.js +4 -4
- package/dist/tool-call-visualization/renderers/_shared-entity/EmptyResultCard.js +1 -1
- package/dist/tool-call-visualization/renderers/_shared-entity/EntityCard.js +5 -5
- package/dist/tool-call-visualization/renderers/_shared-entity/PartPeekPopover.js +2 -2
- package/dist/tool-call-visualization/renderers/_shared-entity/ToolGlyph.js +1 -1
- package/dist/tool-call-visualization/renderers/_shared-entity/ToolResultCard.js +6 -6
- package/dist/tool-call-visualization/renderers/agent-call/AgentCallInline.js +5 -5
- package/dist/tool-call-visualization/renderers/agent-call/CollabCallCard.js +4 -4
- package/dist/tool-call-visualization/renderers/agent-call/ImageGenerationResult.js +1 -1
- package/dist/tool-call-visualization/renderers/ask/AskInline.js +3 -3
- package/dist/tool-call-visualization/renderers/ask-person/AskPersonInline.js +2 -2
- package/dist/tool-call-visualization/renderers/cloud-browser/CloudBrowserRunCard.js +5 -5
- package/dist/tool-call-visualization/renderers/ctx/CtxBatchInline.js +3 -3
- package/dist/tool-call-visualization/renderers/ctx/CtxGetInline.js +2 -2
- package/dist/tool-call-visualization/renderers/ctx/CtxItemCard.js +3 -3
- package/dist/tool-call-visualization/renderers/ctx/CtxPatchInline.js +6 -6
- package/dist/tool-call-visualization/renderers/dictionary/DictEntryList.js +12 -12
- package/dist/tool-call-visualization/renderers/dictionary/DictionaryOverlay.js +5 -5
- package/dist/tool-call-visualization/renderers/fs/FsInline.js +7 -7
- package/dist/tool-call-visualization/renderers/news-api/NewsInline.js +17 -17
- package/dist/tool-call-visualization/renderers/news-api/NewsOverlay.js +12 -12
- package/dist/tool-call-visualization/renderers/random-wheel/RandomWheelInline.js +34 -34
- package/dist/tool-call-visualization/renderers/records/RecordsInline.js +1 -1
- package/dist/tool-call-visualization/renderers/research/ResearchInline.js +10 -10
- package/dist/tool-call-visualization/renderers/research/ResearchOverlay.js +19 -19
- package/dist/tool-call-visualization/renderers/research/SubagentReportBlock.js +11 -11
- package/dist/tool-call-visualization/renderers/scrape/ScrapeInline.js +18 -18
- package/dist/tool-call-visualization/renderers/scrape/ScrapeOverlay.js +17 -17
- package/dist/tool-call-visualization/renderers/search/SearchInline.js +30 -30
- package/dist/tool-call-visualization/renderers/search/SearchOverlay.js +40 -40
- package/dist/tool-call-visualization/renderers/shell/ShellInline.js +3 -3
- package/dist/tool-call-visualization/renderers/skill/SkillInline.js +5 -5
- package/dist/tool-call-visualization/renderers/sql/DbSchemaInline.js +7 -7
- package/dist/tool-call-visualization/renderers/sql/SqlInline.js +4 -4
- package/dist/tool-call-visualization/renderers/workbook/WorkbookGrid.js +4 -4
- package/dist/tool-call-visualization/renderers/workbook/WorkbookInline.js +2 -2
- package/dist/tool-call-visualization/renderers/workbook/WorkbookOverlay.js +7 -7
- package/dist/tool-call-visualization/renderers/working-document/PatchDiffInline.js +3 -3
- package/dist/tool-call-visualization/result-fields/EmptyResult.js +1 -1
- package/dist/tool-call-visualization/result-fields/KeyValueGrid.js +9 -9
- package/dist/tool-call-visualization/result-fields/ResultFile.js +4 -4
- package/dist/tool-call-visualization/result-fields/ResultJson.js +1 -1
- package/dist/tool-call-visualization/result-fields/ResultMedia.js +2 -2
- package/dist/tool-call-visualization/result-fields/ResultScalar.js +2 -2
- package/dist/tool-call-visualization/result-fields/ResultTable.js +10 -10
- package/dist/tool-call-visualization/result-fields/ResultValue.js +7 -7
- package/dist/tool-call-visualization/result-fields/ShortId.js +3 -3
- package/dist/tool-call-visualization/result-fields/ToolErrorCard.js +4 -4
- package/dist/tool-call-visualization/result-fields/UrlChips.js +3 -3
- package/dist/tool-call-visualization/surface-write/SurfaceWriteDiff.js +2 -2
- package/dist/tool-call-visualization/surface-write/SurfaceWriteStress.js +1 -1
- package/dist/tool-call-visualization/window-panel/ToolCallWindowPanel.js +9 -9
- package/dist/ui/mandates-storage/mandateStorage.d.ts +420 -0
- package/dist/ui/mandates-storage/shortcutStorage.d.ts +105 -0
- package/dist/ui/projectCreateAiDebug.d.ts +0 -5
- package/dist/ui/projectCreateAiDebug.js +2 -1
- package/package.json +23 -13
|
@@ -45,7 +45,7 @@ function RadioSelect({
|
|
|
45
45
|
onClick: () => onChange(opt.value),
|
|
46
46
|
className: cn(
|
|
47
47
|
"flex items-center gap-2 px-3 py-1.5 rounded-md text-sm transition-colors text-left",
|
|
48
|
-
value === opt.value ? "bg-primary/10 text-primary-ink font-medium" : "text-
|
|
48
|
+
value === opt.value ? "bg-primary/10 text-primary-ink font-medium" : "text-muted-foreground hover:bg-muted hover:text-foreground"
|
|
49
49
|
),
|
|
50
50
|
children: [
|
|
51
51
|
/* @__PURE__ */ jsx(
|
|
@@ -86,7 +86,7 @@ function MultiSelectChips({
|
|
|
86
86
|
};
|
|
87
87
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-2", children: [
|
|
88
88
|
items.length > 5 && /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5 px-2 h-7 rounded-md bg-muted/50 border border-border/50", children: [
|
|
89
|
-
/* @__PURE__ */ jsx(Search, { className: "h-3 w-3 text-
|
|
89
|
+
/* @__PURE__ */ jsx(Search, { className: "h-3 w-3 text-muted-foreground shrink-0" }),
|
|
90
90
|
/* @__PURE__ */ jsx(
|
|
91
91
|
"input",
|
|
92
92
|
{
|
|
@@ -94,7 +94,7 @@ function MultiSelectChips({
|
|
|
94
94
|
placeholder: searchPlaceholder,
|
|
95
95
|
value: searchQ,
|
|
96
96
|
onChange: (e) => setSearchQ(e.target.value),
|
|
97
|
-
className: "flex-1 bg-transparent text-xs text-
|
|
97
|
+
className: "flex-1 bg-transparent text-xs text-foreground placeholder:text-muted-foreground/50 outline-none"
|
|
98
98
|
}
|
|
99
99
|
),
|
|
100
100
|
searchQ && /* @__PURE__ */ jsx(Button, { variant: "quiet", icon: /* @__PURE__ */ jsx(X, {}), "aria-label": "Clear search", onClick: () => setSearchQ("") })
|
|
@@ -107,7 +107,7 @@ function MultiSelectChips({
|
|
|
107
107
|
return /* @__PURE__ */ jsx(Chip, { asChild: true, pressed: isSelected, label: item, children: /* @__PURE__ */ jsx("button", { type: "button", onClick: () => toggle(item) }) }, item);
|
|
108
108
|
})
|
|
109
109
|
] }) }),
|
|
110
|
-
filtered.length === 0 && searchQ && /* @__PURE__ */ jsx("p", { className: "text-xs text-
|
|
110
|
+
filtered.length === 0 && searchQ && /* @__PURE__ */ jsx("p", { className: "text-xs text-muted-foreground", children: "No matches" })
|
|
111
111
|
] });
|
|
112
112
|
}
|
|
113
113
|
function FilterSection({
|
|
@@ -117,7 +117,7 @@ function FilterSection({
|
|
|
117
117
|
}) {
|
|
118
118
|
return /* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
119
119
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-1.5", children: [
|
|
120
|
-
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-
|
|
120
|
+
/* @__PURE__ */ jsx("span", { className: "text-xs font-semibold text-foreground uppercase tracking-wider", children: label }),
|
|
121
121
|
active && /* @__PURE__ */ jsx("span", { className: "w-1.5 h-1.5 rounded-full bg-primary" })
|
|
122
122
|
] }),
|
|
123
123
|
children
|
|
@@ -194,7 +194,7 @@ function DesktopFilterPanel({
|
|
|
194
194
|
maxHeight: "var(--radix-popover-content-available-height, calc(100dvh - 120px))"
|
|
195
195
|
},
|
|
196
196
|
children: [
|
|
197
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-2.5 border-b border-
|
|
197
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-4 py-2.5 border-b border-border shrink-0", children: [
|
|
198
198
|
/* @__PURE__ */ jsx("span", { className: "text-sm font-semibold", children: "Filters & Sort" }),
|
|
199
199
|
activeFilterCount > 0 && /* @__PURE__ */ jsx(Button, { variant: "quiet", tone: "primary", icon: /* @__PURE__ */ jsx(RotateCcw, {}), onClick: resetFilters, children: "Reset all" })
|
|
200
200
|
] }),
|
|
@@ -267,7 +267,7 @@ function DesktopFilterPanel({
|
|
|
267
267
|
{
|
|
268
268
|
className: cn(
|
|
269
269
|
"w-8 h-[18px] rounded-full relative transition-colors shrink-0",
|
|
270
|
-
favoritesFirst ? "bg-primary" : "bg-
|
|
270
|
+
favoritesFirst ? "bg-primary" : "bg-muted border border-border"
|
|
271
271
|
),
|
|
272
272
|
children: /* @__PURE__ */ jsx(
|
|
273
273
|
"span",
|
|
@@ -280,7 +280,7 @@ function DesktopFilterPanel({
|
|
|
280
280
|
)
|
|
281
281
|
}
|
|
282
282
|
),
|
|
283
|
-
/* @__PURE__ */ jsx("span", { className: "text-
|
|
283
|
+
/* @__PURE__ */ jsx("span", { className: "text-foreground", children: "Pin favorites to top" })
|
|
284
284
|
]
|
|
285
285
|
}
|
|
286
286
|
) })
|
|
@@ -1,24 +1,25 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* How a host lays the ONE conversation column out (HOST-OWNED-SOURCE-PLAN P28e look bar).
|
|
3
3
|
*
|
|
4
|
-
* Knobs, never forks:
|
|
5
|
-
*
|
|
4
|
+
* Knobs, never forks: a host that says nothing gets the default look (flat compact user turn,
|
|
5
|
+
* actions on hover). Matrx 2 (desktop) fills its pane, starts at the left edge and draws the
|
|
6
6
|
* person's turn as a compact block — the look its coding screen had before the column.
|
|
7
7
|
*
|
|
8
8
|
* - `width`: "reading" (the canonical `max-w-3xl` reading column) | "fill" (the host's pane).
|
|
9
9
|
* - `align`: "center" | "start" — where a reading-width column sits in a wider pane.
|
|
10
|
-
* - `userMessage`: "
|
|
11
|
-
* "
|
|
12
|
-
* - `answerActions`: "
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* - `userMessage`: "compact" (DEFAULT: a flat tight block; only a genuinely long message
|
|
11
|
+
* collapses) | "card" (the bordered card that collapses a long message behind a chevron).
|
|
12
|
+
* - `answerActions`: "hover" (DEFAULT: the action row is revealed on hover / keyboard focus, and
|
|
13
|
+
* always on touch — its height is reserved, so revealing it moves nothing; a finished answer ends
|
|
14
|
+
* on its last word) | "latest" (the latest answer's row is always visible, older ones on hover) |
|
|
15
|
+
* "shown" (every answer's row always visible).
|
|
15
16
|
*/
|
|
16
17
|
import { type ReactNode } from "react";
|
|
17
18
|
export interface TranscriptLayout {
|
|
18
19
|
width?: "reading" | "fill";
|
|
19
20
|
align?: "center" | "start";
|
|
20
21
|
userMessage?: "card" | "compact";
|
|
21
|
-
answerActions?: "shown" | "hover";
|
|
22
|
+
answerActions?: "shown" | "latest" | "hover";
|
|
22
23
|
}
|
|
23
24
|
export declare const DEFAULT_TRANSCRIPT_LAYOUT: Required<TranscriptLayout>;
|
|
24
25
|
export declare function resolveTranscriptLayout(layout?: TranscriptLayout): Required<TranscriptLayout>;
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
const DEFAULT_TRANSCRIPT_LAYOUT = {
|
|
7
7
|
width: "reading",
|
|
8
8
|
align: "center",
|
|
9
|
-
userMessage: "
|
|
10
|
-
answerActions: "
|
|
9
|
+
userMessage: "compact",
|
|
10
|
+
answerActions: "hover"
|
|
11
11
|
};
|
|
12
12
|
const TranscriptLayoutContext = createContext(DEFAULT_TRANSCRIPT_LAYOUT);
|
|
13
13
|
function resolveTranscriptLayout(layout) {
|
|
@@ -130,7 +130,7 @@ function AgentRunnerFrame({
|
|
|
130
130
|
{
|
|
131
131
|
className: `relative mx-auto h-full w-full max-w-[800px] overflow-hidden bg-background ${className}`,
|
|
132
132
|
children: [
|
|
133
|
-
showTitle && title && /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 z-10 px-4 py-2 border-b border-
|
|
133
|
+
showTitle && title && /* @__PURE__ */ jsx("div", { className: "absolute top-0 left-0 right-0 z-10 px-4 py-2 border-b border-border bg-background", children: /* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground truncate", children: title }) }),
|
|
134
134
|
/* @__PURE__ */ jsx(
|
|
135
135
|
"div",
|
|
136
136
|
{
|
|
@@ -71,7 +71,7 @@ function CreateWithAiTabs({
|
|
|
71
71
|
};
|
|
72
72
|
return /* @__PURE__ */ jsxs("div", { className: cn("flex h-full min-h-0 flex-col", className), children: [
|
|
73
73
|
/* @__PURE__ */ jsx("div", { className: cn("flex-shrink-0 px-1 pb-3", headerClassName), children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
74
|
-
/* @__PURE__ */ jsxs("div", { className: "inline-flex w-full items-center gap-1 rounded-lg bg-
|
|
74
|
+
/* @__PURE__ */ jsxs("div", { className: "inline-flex w-full items-center gap-1 rounded-lg bg-muted p-1", children: [
|
|
75
75
|
/* @__PURE__ */ jsx(
|
|
76
76
|
ModeButton,
|
|
77
77
|
{
|
|
@@ -5,11 +5,6 @@ import type { WelcomeAgent } from "../ChatWelcomeServer.js";
|
|
|
5
5
|
* demo root page resolves it.
|
|
6
6
|
*/
|
|
7
7
|
export declare const CX_DEFAULT_MANDATE_KEY: "chat.cx_default";
|
|
8
|
-
/**
|
|
9
|
-
* SEED MIRROR of the `chat.cx_default` mandate's system default — kept only
|
|
10
|
-
* as the loud-fallback display seed (`getDefaultAgent`) when resolution fails
|
|
11
|
-
* on this dev surface. Nothing launches from it.
|
|
12
|
-
*/
|
|
13
8
|
export declare const DEFAULT_AGENT_ID = "ce7c5e71-cbdc-4ed1-8dd9-a7eac930b6b8";
|
|
14
9
|
export declare const MATRX_CHAT_AGENT: WelcomeAgent;
|
|
15
10
|
/**
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { MANDATE_KEYS } from "@ai-matrx/agents/mandates";
|
|
2
2
|
const CX_DEFAULT_MANDATE_KEY = MANDATE_KEYS.chat__cx_default;
|
|
3
|
-
const
|
|
3
|
+
const MATRX_CHAT_SEED_AGENT_ID = "ce7c5e71-cbdc-4ed1-8dd9-a7eac930b6b8";
|
|
4
|
+
const DEFAULT_AGENT_ID = MATRX_CHAT_SEED_AGENT_ID;
|
|
4
5
|
const MATRX_CHAT_AGENT = {
|
|
5
|
-
promptId:
|
|
6
|
+
promptId: MATRX_CHAT_SEED_AGENT_ID,
|
|
6
7
|
name: "Matrx Chat",
|
|
7
8
|
description: "Fully customizable agent.",
|
|
8
9
|
variableDefaults: [
|
|
@@ -86,7 +87,7 @@ const MATRX_CHAT_AGENT = {
|
|
|
86
87
|
]
|
|
87
88
|
};
|
|
88
89
|
const BUILTIN_AGENTS = {
|
|
89
|
-
|
|
90
|
+
[MATRX_CHAT_SEED_AGENT_ID]: MATRX_CHAT_AGENT,
|
|
90
91
|
"3ca61863-43cf-49cd-8da5-7e0a4b192867": {
|
|
91
92
|
promptId: "3ca61863-43cf-49cd-8da5-7e0a4b192867",
|
|
92
93
|
name: "Custom Chat",
|
|
@@ -9,12 +9,6 @@ export interface AgentOption {
|
|
|
9
9
|
promptId: string;
|
|
10
10
|
variableDefaults?: VariableDefinition[];
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* SEED MIRROR of the `chat.default_new_chat` mandate's system default. Runtime
|
|
14
|
-
* paths resolve the mandate (see `features/mandates`); this constant remains
|
|
15
|
-
* only as the demo conversation page's loud-fallback and for the (currently
|
|
16
|
-
* unconsumed) `useInstanceBootstrap` URL-parse fallback.
|
|
17
|
-
*/
|
|
18
12
|
export declare const DEFAULT_AGENT_ID = "6b6b4e45-4699-4860-8dea-d8a60e07d69a";
|
|
19
13
|
export declare const DEFAULT_AGENTS: AgentOption[];
|
|
20
14
|
/** The response-mode strip under the composer, in render order. */
|
|
@@ -8,14 +8,15 @@ import {
|
|
|
8
8
|
Lightbulb
|
|
9
9
|
} from "lucide-react";
|
|
10
10
|
import { MANDATE_KEYS } from "@ai-matrx/agents/mandates";
|
|
11
|
-
const
|
|
11
|
+
const GENERAL_CHAT_SEED_AGENT_ID = "6b6b4e45-4699-4860-8dea-d8a60e07d69a";
|
|
12
|
+
const DEFAULT_AGENT_ID = GENERAL_CHAT_SEED_AGENT_ID;
|
|
12
13
|
const DEFAULT_AGENTS = [
|
|
13
14
|
{
|
|
14
15
|
id: "general-chat",
|
|
15
16
|
name: "General Chat",
|
|
16
17
|
description: "Helpful general assistant.",
|
|
17
18
|
icon: React.createElement(MessageCircle, { size: 18 }),
|
|
18
|
-
promptId:
|
|
19
|
+
promptId: GENERAL_CHAT_SEED_AGENT_ID,
|
|
19
20
|
variableDefaults: []
|
|
20
21
|
},
|
|
21
22
|
{
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { credentialToHeaders } from "@ai-matrx/data";
|
|
2
2
|
import { adminLaneHeadersFor } from "./server/admin-lane.js";
|
|
3
|
+
import { isChatHostConfigured } from "./configure.js";
|
|
3
4
|
function chatRequestHeaders(credential, organizationId) {
|
|
4
5
|
const presented = credential.accessToken ? { kind: "user", accessToken: credential.accessToken } : credential.fingerprintId ? { kind: "guest", fingerprintId: credential.fingerprintId } : null;
|
|
5
6
|
const headers = credentialToHeaders(presented);
|
|
@@ -7,7 +8,8 @@ function chatRequestHeaders(credential, organizationId) {
|
|
|
7
8
|
return {
|
|
8
9
|
...headers,
|
|
9
10
|
"X-Organization-Id": organizationId,
|
|
10
|
-
|
|
11
|
+
// The admin lane is the configured host's rule; a host still being resolved has none yet.
|
|
12
|
+
...isChatHostConfigured() ? adminLaneHeadersFor(organizationId) : {}
|
|
11
13
|
};
|
|
12
14
|
}
|
|
13
15
|
export {
|
|
@@ -80,4 +80,12 @@ export declare function createAgentBuilderScope(values: {
|
|
|
80
80
|
variable_custom_component?: unknown;
|
|
81
81
|
variable_binding?: unknown;
|
|
82
82
|
variable_json?: object;
|
|
83
|
+
test_run_conversation_id?: string;
|
|
84
|
+
test_run_variables?: Record<string, unknown>;
|
|
85
|
+
test_run_user_input?: string;
|
|
86
|
+
test_run_response?: string;
|
|
87
|
+
test_run_transcript?: {
|
|
88
|
+
role: string;
|
|
89
|
+
text: string;
|
|
90
|
+
}[];
|
|
83
91
|
}): SurfaceScopePayload;
|
|
@@ -42,9 +42,66 @@ const groups = [
|
|
|
42
42
|
label: "Focused variable",
|
|
43
43
|
sortOrder: 700,
|
|
44
44
|
description: "The single variable definition the user is editing right now in the variable editor."
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "test_run",
|
|
48
|
+
label: "Test run",
|
|
49
|
+
sortOrder: 800,
|
|
50
|
+
description: "The person's latest run of this agent in the builder's test panel: the values it ran with, what they typed, the answer and the whole exchange."
|
|
45
51
|
}
|
|
46
52
|
];
|
|
47
53
|
const surfaceSpecific = [
|
|
54
|
+
// ── Test run (800-840) — Agent Factory R58: the helper beside the builder sees the run ──
|
|
55
|
+
{
|
|
56
|
+
name: "test_run_conversation_id",
|
|
57
|
+
label: "Test run conversation",
|
|
58
|
+
description: "Id of the conversation the person last ran this agent in, in the builder's test panel. Absent until they run it.",
|
|
59
|
+
valueType: "string",
|
|
60
|
+
alwaysAvailable: false,
|
|
61
|
+
typicalCharCount: 36,
|
|
62
|
+
group: "test_run",
|
|
63
|
+
sortOrder: 800
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
name: "test_run_variables",
|
|
67
|
+
label: "Test run variables",
|
|
68
|
+
description: "The variable values the agent ran with in that test run (name \u2192 value). Absent until the person runs it.",
|
|
69
|
+
valueType: "object",
|
|
70
|
+
alwaysAvailable: false,
|
|
71
|
+
typicalCharCount: 600,
|
|
72
|
+
group: "test_run",
|
|
73
|
+
sortOrder: 810
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
name: "test_run_user_input",
|
|
77
|
+
label: "Test run input",
|
|
78
|
+
description: "What the person typed in their latest test-run turn. Empty when they only filled variables.",
|
|
79
|
+
valueType: "string",
|
|
80
|
+
alwaysAvailable: false,
|
|
81
|
+
typicalCharCount: 300,
|
|
82
|
+
group: "test_run",
|
|
83
|
+
sortOrder: 820
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: "test_run_response",
|
|
87
|
+
label: "Test run answer",
|
|
88
|
+
description: "The agent's latest answer in the test run, as the person read it. Absent while it is still answering.",
|
|
89
|
+
valueType: "string",
|
|
90
|
+
alwaysAvailable: false,
|
|
91
|
+
typicalCharCount: 3e3,
|
|
92
|
+
group: "test_run",
|
|
93
|
+
sortOrder: 830
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
name: "test_run_transcript",
|
|
97
|
+
label: "Test run transcript",
|
|
98
|
+
description: "The whole test-run conversation in order, one { role, text } per message (person and agent turns). Use it to judge the answer against what was asked.",
|
|
99
|
+
valueType: "array",
|
|
100
|
+
alwaysAvailable: false,
|
|
101
|
+
typicalCharCount: 6e3,
|
|
102
|
+
group: "test_run",
|
|
103
|
+
sortOrder: 840
|
|
104
|
+
},
|
|
48
105
|
// ── Agent identity (300-339) ──────────────────────────────────────────
|
|
49
106
|
{
|
|
50
107
|
name: "agent_id",
|
|
@@ -577,8 +634,11 @@ Read the values this way:
|
|
|
577
634
|
- \`agent_is_read_only\` being true means the user cannot save \u2014 propose, do not
|
|
578
635
|
promise to apply.
|
|
579
636
|
|
|
580
|
-
You are helping AUTHOR an agent.
|
|
581
|
-
|
|
637
|
+
You are helping AUTHOR an agent. When the person runs it in the builder's test
|
|
638
|
+
panel, the \`test_run_*\` values carry that run: the variables it ran with, what
|
|
639
|
+
they typed, the answer, and the whole exchange \u2014 judge the answer against the
|
|
640
|
+
agent's job and suggest what to change. Absent \`test_run_*\` values mean it has
|
|
641
|
+
not been run here yet.
|
|
582
642
|
|
|
583
643
|
You can also WRITE here, but only to the authored prose: the system
|
|
584
644
|
instruction, description, name, category, and tags. Everything that decides
|
|
@@ -92,7 +92,7 @@ function ArtifactResultBar({
|
|
|
92
92
|
}
|
|
93
93
|
},
|
|
94
94
|
className: cn(
|
|
95
|
-
"group/bar flex w-full cursor-pointer items-center gap-3 border border-border/50 bg-
|
|
95
|
+
"group/bar flex w-full cursor-pointer items-center gap-3 border border-border/50 bg-card px-4 py-2.5 text-left transition-colors hover:bg-accent/30",
|
|
96
96
|
// Collapsed: a full pill. Expanded: the letterhead of the attached
|
|
97
97
|
// document — square bottom, no bottom border, the body continues it.
|
|
98
98
|
peekExpanded ? "rounded-t-xl border-b-0" : "rounded-xl"
|
|
@@ -106,8 +106,8 @@ function ArtifactResultBar({
|
|
|
106
106
|
}
|
|
107
107
|
),
|
|
108
108
|
/* @__PURE__ */ jsxs("span", { className: "min-w-0 flex-1", children: [
|
|
109
|
-
/* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-medium text-
|
|
110
|
-
/* @__PURE__ */ jsxs("span", { className: "block truncate text-xs text-
|
|
109
|
+
/* @__PURE__ */ jsx("span", { className: "block truncate text-sm font-medium text-foreground", children: title }),
|
|
110
|
+
/* @__PURE__ */ jsxs("span", { className: "block truncate text-xs text-muted-foreground", children: [
|
|
111
111
|
meta.noun,
|
|
112
112
|
" \xB7 ",
|
|
113
113
|
artifact.verbPast
|
|
@@ -121,7 +121,7 @@ function ArtifactResultBar({
|
|
|
121
121
|
tabIndex: 0,
|
|
122
122
|
onClick: (e) => e.stopPropagation(),
|
|
123
123
|
onKeyDown: (e) => e.stopPropagation(),
|
|
124
|
-
className: "flex shrink-0 cursor-pointer items-center gap-1.5 rounded-xl border border-border/70 bg-background/60 px-2.5 py-1.5 text-xs font-medium text-
|
|
124
|
+
className: "flex shrink-0 cursor-pointer items-center gap-1.5 rounded-xl border border-border/70 bg-background/60 px-2.5 py-1.5 text-xs font-medium text-muted-foreground transition-colors hover:bg-accent/40 hover:text-foreground",
|
|
125
125
|
"aria-label": "Open options",
|
|
126
126
|
children: [
|
|
127
127
|
/* @__PURE__ */ jsx(PanelRightOpen, { className: "size-3.5" }),
|
|
@@ -6,7 +6,7 @@ import React from "react";
|
|
|
6
6
|
* In the real conversation, a tool card sits inside `AgentConversationColumn`'s
|
|
7
7
|
* centered content (`w-full max-w-3xl mx-auto px-2`) directly on the plain
|
|
8
8
|
* conversation surface — NO surrounding card, border, padding, or background
|
|
9
|
-
* change. Tools that look fine inside a decorative `bg-
|
|
9
|
+
* change. Tools that look fine inside a decorative `bg-card` demo panel can
|
|
10
10
|
* render badly in chat (stray borders, odd bg shifts). Previewing in anything
|
|
11
11
|
* but this column lies about how the tool actually renders, so every gallery /
|
|
12
12
|
* "in action" preview must wrap its `ToolCallVisualization` in this.
|
|
@@ -131,8 +131,8 @@ const ToolCallBatch = ({
|
|
|
131
131
|
text: `Running ${count} tools\u2026`,
|
|
132
132
|
className: "truncate font-sans text-sm leading-relaxed tracking-wide"
|
|
133
133
|
}
|
|
134
|
-
) : /* @__PURE__ */ jsx("span", { className: "truncate font-sans text-sm leading-relaxed tracking-wide text-
|
|
135
|
-
isExpanded ? /* @__PURE__ */ jsx(ChevronDown, { className: "h-3.5 w-3.5 shrink-0 text-
|
|
134
|
+
) : /* @__PURE__ */ jsx("span", { className: "truncate font-sans text-sm leading-relaxed tracking-wide text-muted-foreground", children: label }),
|
|
135
|
+
isExpanded ? /* @__PURE__ */ jsx(ChevronDown, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" })
|
|
136
136
|
]
|
|
137
137
|
}
|
|
138
138
|
),
|
|
@@ -282,7 +282,7 @@ const ToolCallVisualizationInner = ({
|
|
|
282
282
|
) : /* @__PURE__ */ jsx(
|
|
283
283
|
"span",
|
|
284
284
|
{
|
|
285
|
-
className: "truncate font-sans text-sm leading-relaxed tracking-wide text-
|
|
285
|
+
className: "truncate font-sans text-sm leading-relaxed tracking-wide text-muted-foreground",
|
|
286
286
|
title: guardRouting?.tooltip,
|
|
287
287
|
children: phaseLabel
|
|
288
288
|
}
|
|
@@ -298,7 +298,7 @@ const ToolCallVisualizationInner = ({
|
|
|
298
298
|
querySubtitle
|
|
299
299
|
] }))
|
|
300
300
|
] }),
|
|
301
|
-
isExpanded ? /* @__PURE__ */ jsx(ChevronDown, { className: "h-3.5 w-3.5 shrink-0 text-
|
|
301
|
+
isExpanded ? /* @__PURE__ */ jsx(ChevronDown, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }) : /* @__PURE__ */ jsx(ChevronRight, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
|
|
302
302
|
/* @__PURE__ */ jsxs("span", { className: "flex shrink-0 items-center gap-0.5 opacity-0 transition-opacity focus-within:opacity-100 group-hover/toolcard:opacity-100", children: [
|
|
303
303
|
/* @__PURE__ */ jsx(
|
|
304
304
|
"span",
|
|
@@ -316,7 +316,7 @@ const ToolCallVisualizationInner = ({
|
|
|
316
316
|
handleOpenWindowPanel();
|
|
317
317
|
}
|
|
318
318
|
},
|
|
319
|
-
className: "cursor-pointer rounded p-0.5 text-
|
|
319
|
+
className: "cursor-pointer rounded p-0.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
320
320
|
title: "Open in floating window",
|
|
321
321
|
children: /* @__PURE__ */ jsx(PanelRightOpen, { className: "h-3 w-3" })
|
|
322
322
|
}
|
|
@@ -339,7 +339,7 @@ const ToolCallVisualizationInner = ({
|
|
|
339
339
|
setIsOverlayOpen(true);
|
|
340
340
|
}
|
|
341
341
|
},
|
|
342
|
-
className: "cursor-pointer rounded p-0.5 text-
|
|
342
|
+
className: "cursor-pointer rounded p-0.5 text-muted-foreground transition-colors hover:bg-muted hover:text-foreground",
|
|
343
343
|
title: "Open fullscreen overlay",
|
|
344
344
|
children: /* @__PURE__ */ jsx(Maximize2, { className: "h-3 w-3" })
|
|
345
345
|
}
|
|
@@ -372,7 +372,7 @@ const ToolCallVisualizationInner = ({
|
|
|
372
372
|
const entryParked = parkedOnPersonOf(entry, suspendedCallIds);
|
|
373
373
|
const InlineRenderer = isErrored || entryWait || entryParked ? null : getInlineRenderer(entry.toolName);
|
|
374
374
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
375
|
-
entries.length > 1 && /* @__PURE__ */ jsx("div", { className: "mb-1 text-[10px] font-semibold uppercase tracking-wide text-
|
|
375
|
+
entries.length > 1 && /* @__PURE__ */ jsx("div", { className: "mb-1 text-[10px] font-semibold uppercase tracking-wide text-muted-foreground", children: groupDisplayName }),
|
|
376
376
|
entryParked ? /* @__PURE__ */ jsx(
|
|
377
377
|
ParkedOnPersonCard,
|
|
378
378
|
{
|
|
@@ -34,8 +34,8 @@ const InputView = ({
|
|
|
34
34
|
const args = entry.arguments ?? {};
|
|
35
35
|
const argCount = Object.keys(args).length;
|
|
36
36
|
return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col", children: [
|
|
37
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center justify-between border-b border-
|
|
38
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-
|
|
37
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center justify-between border-b border-border bg-muted/30 px-3 py-1.5", children: [
|
|
38
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground", children: [
|
|
39
39
|
/* @__PURE__ */ jsx(Settings2, { className: "h-3.5 w-3.5" }),
|
|
40
40
|
/* @__PURE__ */ jsx("span", { children: "Tool input" }),
|
|
41
41
|
/* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "px-1.5 py-0 text-[10px]", children: [
|
|
@@ -102,9 +102,9 @@ const ErrorView = ({
|
|
|
102
102
|
const hasArgs = Object.keys(args).length > 0;
|
|
103
103
|
const bundle = buildToolEntryBundle(entry);
|
|
104
104
|
return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col", children: [
|
|
105
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center justify-between border-b border-
|
|
106
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-
|
|
107
|
-
routed ? /* @__PURE__ */ jsx(Route, { className: "h-3.5 w-3.5 text-
|
|
105
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center justify-between border-b border-border bg-muted/30 px-3 py-1.5", children: [
|
|
106
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground", children: [
|
|
107
|
+
routed ? /* @__PURE__ */ jsx(Route, { className: "h-3.5 w-3.5 text-muted-foreground" }) : /* @__PURE__ */ jsx(CircleAlert, { className: "h-3.5 w-3.5 text-destructive" }),
|
|
108
108
|
/* @__PURE__ */ jsx("span", { children: routed ? "Routed" : "Error" }),
|
|
109
109
|
entry.errorType && /* @__PURE__ */ jsxs(
|
|
110
110
|
Badge,
|
|
@@ -134,11 +134,11 @@ const ErrorView = ({
|
|
|
134
134
|
] }),
|
|
135
135
|
/* @__PURE__ */ jsxs("div", { className: "flex-1 space-y-4 overflow-auto px-3 py-3", children: [
|
|
136
136
|
/* @__PURE__ */ jsxs("div", { className: "space-y-1.5", children: [
|
|
137
|
-
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-
|
|
138
|
-
message ? /* @__PURE__ */ jsx("p", { className: "whitespace-pre-wrap break-words text-sm leading-relaxed text-
|
|
137
|
+
/* @__PURE__ */ jsx("p", { className: "text-sm font-medium text-foreground", children: label }),
|
|
138
|
+
message ? /* @__PURE__ */ jsx("p", { className: "whitespace-pre-wrap break-words text-sm leading-relaxed text-muted-foreground", children: message }) : /* @__PURE__ */ jsx("p", { className: "text-sm italic text-muted-foreground", children: "No error message was recorded. Check the Raw tab for events." })
|
|
139
139
|
] }),
|
|
140
|
-
hasArgs && /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 border-t border-
|
|
141
|
-
/* @__PURE__ */ jsx("p", { className: "text-[11px] font-medium uppercase tracking-wide text-
|
|
140
|
+
hasArgs && /* @__PURE__ */ jsxs("div", { className: "space-y-1.5 border-t border-border pt-3", children: [
|
|
141
|
+
/* @__PURE__ */ jsx("p", { className: "text-[11px] font-medium uppercase tracking-wide text-muted-foreground", children: "Input that failed" }),
|
|
142
142
|
/* @__PURE__ */ jsx(KeyValueGrid, { value: args, density: "full" })
|
|
143
143
|
] })
|
|
144
144
|
] })
|
|
@@ -149,8 +149,8 @@ const RawDataView = ({
|
|
|
149
149
|
}) => {
|
|
150
150
|
const bundle = buildToolEntryBundle(entry);
|
|
151
151
|
return /* @__PURE__ */ jsxs("div", { className: "flex h-full flex-col", children: [
|
|
152
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center justify-between border-b border-
|
|
153
|
-
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-
|
|
152
|
+
/* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center justify-between border-b border-border bg-muted/30 px-3 py-1.5", children: [
|
|
153
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2 text-xs text-muted-foreground", children: [
|
|
154
154
|
/* @__PURE__ */ jsx(FileCode2, { className: "h-3.5 w-3.5" }),
|
|
155
155
|
/* @__PURE__ */ jsx("span", { children: "All" }),
|
|
156
156
|
/* @__PURE__ */ jsxs(Badge, { variant: "outline", className: "px-1.5 py-0 text-[10px]", children: [
|
|
@@ -172,7 +172,7 @@ const RawDataView = ({
|
|
|
172
172
|
}
|
|
173
173
|
)
|
|
174
174
|
] }),
|
|
175
|
-
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden p-2", children: /* @__PURE__ */ jsx("div", { className: "h-full min-h-[280px] overflow-hidden rounded-md border border-
|
|
175
|
+
/* @__PURE__ */ jsx("div", { className: "min-h-0 flex-1 overflow-hidden p-2", children: /* @__PURE__ */ jsx("div", { className: "h-full min-h-[280px] overflow-hidden rounded-md border border-border bg-card", children: /* @__PURE__ */ jsx(JsonInspector, { showSource: true, data: bundle }) }) })
|
|
176
176
|
] });
|
|
177
177
|
};
|
|
178
178
|
const EntryResultsBody = ({ entry, conversationId: conversationIdProp }) => {
|
|
@@ -19,8 +19,8 @@ import {
|
|
|
19
19
|
import { Button } from "@ai-matrx/design-system/controls";
|
|
20
20
|
const EntrySelector = ({ entries, selectedCallId, onSelect }) => {
|
|
21
21
|
if (entries.length <= 1) return null;
|
|
22
|
-
return /* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center gap-1.5 overflow-x-auto border-b border-
|
|
23
|
-
/* @__PURE__ */ jsx("span", { className: "mr-1 flex-shrink-0 text-xs text-
|
|
22
|
+
return /* @__PURE__ */ jsxs("div", { className: "flex flex-shrink-0 items-center gap-1.5 overflow-x-auto border-b border-border bg-muted/40 px-3 py-1.5 scrollbar-none", children: [
|
|
23
|
+
/* @__PURE__ */ jsx("span", { className: "mr-1 flex-shrink-0 text-xs text-muted-foreground", children: "Tool" }),
|
|
24
24
|
entries.map((entry, idx) => {
|
|
25
25
|
const label = getToolDisplayName(entry.toolName);
|
|
26
26
|
const isActive = entry.callId === selectedCallId;
|
|
@@ -72,7 +72,7 @@ const InputTabContent = ({ entries, selectedCallId, onSelect }) => {
|
|
|
72
72
|
onSelect
|
|
73
73
|
}
|
|
74
74
|
),
|
|
75
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: entry ? /* @__PURE__ */ jsx(InputView, { entry }) : /* @__PURE__ */ jsx("div", { className: "p-8 text-center text-
|
|
75
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: entry ? /* @__PURE__ */ jsx(InputView, { entry }) : /* @__PURE__ */ jsx("div", { className: "p-8 text-center text-muted-foreground", children: /* @__PURE__ */ jsx("p", { className: "text-sm", children: "No tool data available" }) }) })
|
|
76
76
|
] });
|
|
77
77
|
};
|
|
78
78
|
const RawTabContent = ({ entries, selectedCallId, onSelect }) => {
|
|
@@ -86,7 +86,7 @@ const RawTabContent = ({ entries, selectedCallId, onSelect }) => {
|
|
|
86
86
|
onSelect
|
|
87
87
|
}
|
|
88
88
|
),
|
|
89
|
-
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: entry ? /* @__PURE__ */ jsx(RawDataView, { entry }) : /* @__PURE__ */ jsx("div", { className: "p-8 text-center text-
|
|
89
|
+
/* @__PURE__ */ jsx("div", { className: "flex-1 overflow-hidden", children: entry ? /* @__PURE__ */ jsx(RawDataView, { entry }) : /* @__PURE__ */ jsx("div", { className: "p-8 text-center text-muted-foreground", children: /* @__PURE__ */ jsx("p", { className: "text-sm", children: "No tool data available" }) }) })
|
|
90
90
|
] });
|
|
91
91
|
};
|
|
92
92
|
const ToolUpdatesOverlay = ({
|
|
@@ -40,7 +40,7 @@ function ConfiguredToolRow({ entry, kind, cfg }) {
|
|
|
40
40
|
kind === "server" && /* @__PURE__ */ jsx(
|
|
41
41
|
ChevronRight,
|
|
42
42
|
{
|
|
43
|
-
className: `size-3 shrink-0 text-
|
|
43
|
+
className: `size-3 shrink-0 text-muted-foreground transition-transform ${open ? "rotate-90" : ""}`
|
|
44
44
|
}
|
|
45
45
|
),
|
|
46
46
|
/* @__PURE__ */ jsx(
|
|
@@ -53,18 +53,18 @@ function ConfiguredToolRow({ entry, kind, cfg }) {
|
|
|
53
53
|
spin: shouldSpin
|
|
54
54
|
}
|
|
55
55
|
),
|
|
56
|
-
headerLabel && /* @__PURE__ */ jsx("span", { className: cn("truncate text-
|
|
56
|
+
headerLabel && /* @__PURE__ */ jsx("span", { className: cn("truncate text-foreground", shimmer && "min-w-0"), children: shimmer ? /* @__PURE__ */ jsx(ShimmerText, { text: headerLabel }) : headerLabel }),
|
|
57
57
|
infoText && /* @__PURE__ */ jsx(
|
|
58
58
|
"span",
|
|
59
59
|
{
|
|
60
60
|
className: cn(
|
|
61
|
-
"text-
|
|
61
|
+
"text-muted-foreground",
|
|
62
62
|
inline.isMultiline ? "whitespace-pre-wrap" : "truncate"
|
|
63
63
|
),
|
|
64
64
|
children: infoText
|
|
65
65
|
}
|
|
66
66
|
),
|
|
67
|
-
phase !== "started" && entry.endedAt && /* @__PURE__ */ jsxs("span", { className: "ml-auto text-[10px] text-
|
|
67
|
+
phase !== "started" && entry.endedAt && /* @__PURE__ */ jsxs("span", { className: "ml-auto text-[10px] text-muted-foreground", children: [
|
|
68
68
|
Math.max(1, entry.endedAt - entry.startedAt),
|
|
69
69
|
"ms"
|
|
70
70
|
] })
|
|
@@ -144,7 +144,7 @@ function ExpandedBody({ entry, cfg, skipResults = false }) {
|
|
|
144
144
|
const preClass = "mt-0.5 max-h-48 overflow-auto rounded-md bg-background/60 p-1.5 text-[11px] leading-snug";
|
|
145
145
|
function SectionLabel({ label, children }) {
|
|
146
146
|
return /* @__PURE__ */ jsxs("div", { children: [
|
|
147
|
-
/* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase tracking-wide text-
|
|
147
|
+
/* @__PURE__ */ jsx("div", { className: "text-[10px] uppercase tracking-wide text-muted-foreground", children: label }),
|
|
148
148
|
children
|
|
149
149
|
] });
|
|
150
150
|
}
|
|
@@ -167,7 +167,7 @@ function renderStandardDisplay(value, displayType) {
|
|
|
167
167
|
const entries = Object.entries(value);
|
|
168
168
|
if (entries.length === 0) return null;
|
|
169
169
|
if (displayType === "values-only") {
|
|
170
|
-
return /* @__PURE__ */ jsx("ul", { className: "mt-0.5 list-disc space-y-0.5 pl-4 text-[11px] text-
|
|
170
|
+
return /* @__PURE__ */ jsx("ul", { className: "mt-0.5 list-disc space-y-0.5 pl-4 text-[11px] text-foreground", children: entries.map(([k, v]) => /* @__PURE__ */ jsx("li", { children: stringifyValue(v) }, k)) });
|
|
171
171
|
}
|
|
172
172
|
return /* @__PURE__ */ jsx("div", { className: "mt-0.5 grid grid-cols-[minmax(0,auto)_1fr] gap-x-2 gap-y-0.5 text-[11px]", children: entries.map(([k, v]) => /* @__PURE__ */ jsx(FieldRow, { k, v }, k)) });
|
|
173
173
|
}
|
|
@@ -175,8 +175,8 @@ function renderStandardDisplay(value, displayType) {
|
|
|
175
175
|
}
|
|
176
176
|
function FieldRow({ k, v }) {
|
|
177
177
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
178
|
-
/* @__PURE__ */ jsx("span", { className: "font-medium text-
|
|
179
|
-
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-
|
|
178
|
+
/* @__PURE__ */ jsx("span", { className: "font-medium text-muted-foreground", children: k }),
|
|
179
|
+
/* @__PURE__ */ jsx("span", { className: "min-w-0 truncate text-foreground", children: stringifyValue(v) })
|
|
180
180
|
] });
|
|
181
181
|
}
|
|
182
182
|
function CustomResults({ result, keysInfo }) {
|
|
@@ -49,7 +49,7 @@ function CopyToolButton({ data, className }) {
|
|
|
49
49
|
title: copied ? "Copied!" : "Copy tool data",
|
|
50
50
|
"aria-label": "Copy tool data",
|
|
51
51
|
className: cn(
|
|
52
|
-
"inline-flex size-5 shrink-0 items-center justify-center rounded text-
|
|
52
|
+
"inline-flex size-5 shrink-0 items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-muted/60 hover:text-foreground focus:opacity-100 group-hover:opacity-100",
|
|
53
53
|
copied && "opacity-100 text-emerald-600 dark:text-emerald-400",
|
|
54
54
|
className
|
|
55
55
|
),
|