@cellarnode/ui 0.195.2 → 0.196.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/agent/activity-ledger.d.ts +28 -0
- package/dist/agent/activity-ledger.d.ts.map +1 -0
- package/dist/agent/activity-ledger.js +50 -0
- package/dist/agent/activity-ledger.js.map +1 -0
- package/dist/agent/approval-ledger.d.ts +27 -0
- package/dist/agent/approval-ledger.d.ts.map +1 -0
- package/dist/agent/approval-ledger.js +39 -0
- package/dist/agent/approval-ledger.js.map +1 -0
- package/dist/agent/composer.d.ts +27 -0
- package/dist/agent/composer.d.ts.map +1 -0
- package/dist/agent/composer.js +50 -0
- package/dist/agent/composer.js.map +1 -0
- package/dist/agent/confirm-card.d.ts +58 -0
- package/dist/agent/confirm-card.d.ts.map +1 -0
- package/dist/agent/confirm-card.js +127 -0
- package/dist/agent/confirm-card.js.map +1 -0
- package/dist/agent/confirm-guards.d.ts +36 -0
- package/dist/agent/confirm-guards.d.ts.map +1 -0
- package/dist/agent/confirm-guards.js +44 -0
- package/dist/agent/confirm-guards.js.map +1 -0
- package/dist/agent/conversation.d.ts +41 -0
- package/dist/agent/conversation.d.ts.map +1 -0
- package/dist/agent/conversation.js +77 -0
- package/dist/agent/conversation.js.map +1 -0
- package/dist/agent/copy.d.ts +5 -0
- package/dist/agent/copy.d.ts.map +1 -0
- package/dist/agent/copy.js +10 -0
- package/dist/agent/copy.js.map +1 -0
- package/dist/agent/fixtures.d.ts +20 -0
- package/dist/agent/fixtures.d.ts.map +1 -0
- package/dist/agent/fixtures.js +197 -0
- package/dist/agent/fixtures.js.map +1 -0
- package/dist/agent/index.d.ts +24 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +24 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/masked-value.d.ts +20 -0
- package/dist/agent/masked-value.d.ts.map +1 -0
- package/dist/agent/masked-value.js +19 -0
- package/dist/agent/masked-value.js.map +1 -0
- package/dist/agent/message.d.ts +32 -0
- package/dist/agent/message.d.ts.map +1 -0
- package/dist/agent/message.js +47 -0
- package/dist/agent/message.js.map +1 -0
- package/dist/agent/panel-frame.d.ts +23 -0
- package/dist/agent/panel-frame.d.ts.map +1 -0
- package/dist/agent/panel-frame.js +17 -0
- package/dist/agent/panel-frame.js.map +1 -0
- package/dist/agent/readiness-checklist.d.ts +49 -0
- package/dist/agent/readiness-checklist.d.ts.map +1 -0
- package/dist/agent/readiness-checklist.js +104 -0
- package/dist/agent/readiness-checklist.js.map +1 -0
- package/dist/agent/schema.d.ts +418 -0
- package/dist/agent/schema.d.ts.map +1 -0
- package/dist/agent/schema.js +137 -0
- package/dist/agent/schema.js.map +1 -0
- package/dist/agent/states.d.ts +44 -0
- package/dist/agent/states.d.ts.map +1 -0
- package/dist/agent/states.js +70 -0
- package/dist/agent/states.js.map +1 -0
- package/dist/agent/thinking.d.ts +14 -0
- package/dist/agent/thinking.d.ts.map +1 -0
- package/dist/agent/thinking.js +12 -0
- package/dist/agent/thinking.js.map +1 -0
- package/dist/agent/thread-list.d.ts +25 -0
- package/dist/agent/thread-list.d.ts.map +1 -0
- package/dist/agent/thread-list.js +39 -0
- package/dist/agent/thread-list.js.map +1 -0
- package/dist/agent/tool-call-card.d.ts +24 -0
- package/dist/agent/tool-call-card.d.ts.map +1 -0
- package/dist/agent/tool-call-card.js +36 -0
- package/dist/agent/tool-call-card.js.map +1 -0
- package/dist/agent/ui.d.ts +13 -0
- package/dist/agent/ui.d.ts.map +1 -0
- package/dist/agent/ui.js +22 -0
- package/dist/agent/ui.js.map +1 -0
- package/dist/mcp-connect/brand-marks.d.ts +18 -0
- package/dist/mcp-connect/brand-marks.d.ts.map +1 -0
- package/dist/mcp-connect/brand-marks.js +15 -0
- package/dist/mcp-connect/brand-marks.js.map +1 -0
- package/dist/mcp-connect/clients.d.ts +18 -0
- package/dist/mcp-connect/clients.d.ts.map +1 -0
- package/dist/mcp-connect/clients.js +15 -0
- package/dist/mcp-connect/clients.js.map +1 -0
- package/dist/mcp-connect/index.d.ts +7 -0
- package/dist/mcp-connect/index.d.ts.map +1 -0
- package/dist/mcp-connect/index.js +4 -0
- package/dist/mcp-connect/index.js.map +1 -0
- package/dist/mcp-connect/mcp-connect-panel.d.ts +87 -0
- package/dist/mcp-connect/mcp-connect-panel.d.ts.map +1 -0
- package/dist/mcp-connect/mcp-connect-panel.js +145 -0
- package/dist/mcp-connect/mcp-connect-panel.js.map +1 -0
- package/dist/portfolio-import/session/import-job.d.ts.map +1 -1
- package/dist/portfolio-import/session/import-job.js +2 -1
- package/dist/portfolio-import/session/import-job.js.map +1 -1
- package/dist/portfolio-import/session/list-all-confirmations.d.ts +8 -0
- package/dist/portfolio-import/session/list-all-confirmations.d.ts.map +1 -0
- package/dist/portfolio-import/session/list-all-confirmations.js +30 -0
- package/dist/portfolio-import/session/list-all-confirmations.js.map +1 -0
- package/dist/realtime/job-status/schemas.d.ts +2 -2
- package/package.json +9 -1
- package/src/theme/tokens.css +10 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/agent/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;GAIG;AAEH,yGAAyG;AACzG,eAAO,MAAM,YAAY;;;iBAA6D,CAAC;AACvF,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD,eAAO,MAAM,eAAe;;;mBAM1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,QAAQ,GAAI,GAAG,OAAO,KAAG,CAAC,IAAI,MAA2C,CAAC;AAEvF,eAAO,MAAM,UAAU;;;;;EAA0D,CAAC;AAClF,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,eAAe;;;;;;;;;;iBAI1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D,eAAO,MAAM,oBAAoB;;;;;;;;;;EAU/B,CAAC;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAEvE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAuBzB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;iBAMrB,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAEnD,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;iBASzB,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAE3D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAO5B,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAEjE,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAOxB,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE7D,eAAO,MAAM,wBAAwB;;;;;;;;;EASnC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE/E,eAAO,MAAM,YAAY;;;;;iBAKvB,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAEvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsB7B,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAQ1B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* @internal Experimental. Colocated Zod schemas for the `@cellarnode/ui/agent`
|
|
4
|
+
* primitives. Components take already-reduced state (from AG-UI events), so the
|
|
5
|
+
* same shapes feed the stories, the host's reducer and, later, non-web channels.
|
|
6
|
+
*/
|
|
7
|
+
/** A value the BFF has masked. `display` is what a human may see; the raw value never reaches the UI. */
|
|
8
|
+
export const MaskedSchema = z.object({ masked: z.literal(true), display: z.string() });
|
|
9
|
+
export const CellValueSchema = z.union([
|
|
10
|
+
z.string(),
|
|
11
|
+
z.number(),
|
|
12
|
+
z.boolean(),
|
|
13
|
+
z.null(),
|
|
14
|
+
MaskedSchema,
|
|
15
|
+
]);
|
|
16
|
+
export const isMasked = (v) => MaskedSchema.safeParse(v).success;
|
|
17
|
+
export const RiskSchema = z.enum(["read", "reversible", "destructive", "costly"]);
|
|
18
|
+
export const ChangeRowSchema = z.object({
|
|
19
|
+
label: z.string(),
|
|
20
|
+
before: CellValueSchema.optional(),
|
|
21
|
+
after: CellValueSchema.optional(),
|
|
22
|
+
});
|
|
23
|
+
export const ApprovalStatusSchema = z.enum([
|
|
24
|
+
"pending",
|
|
25
|
+
"confirming",
|
|
26
|
+
"approved_running",
|
|
27
|
+
"succeeded",
|
|
28
|
+
"failed",
|
|
29
|
+
"rejected",
|
|
30
|
+
"expired",
|
|
31
|
+
"superseded",
|
|
32
|
+
"cap_reached",
|
|
33
|
+
]);
|
|
34
|
+
export const ApprovalSchema = z.object({
|
|
35
|
+
approvalId: z.string(),
|
|
36
|
+
tool: z.string(),
|
|
37
|
+
method: z.string(),
|
|
38
|
+
routeTemplate: z.string(),
|
|
39
|
+
intent: z.string(),
|
|
40
|
+
/** Server-provided before/after. When absent the card shows the persisted request body. */
|
|
41
|
+
changes: z.array(ChangeRowSchema).optional(),
|
|
42
|
+
/** The persisted request body, never a regenerated one. */
|
|
43
|
+
body: z.unknown().optional(),
|
|
44
|
+
risk: RiskSchema,
|
|
45
|
+
taint: z.object({ sources: z.array(z.string()).min(1) }).optional(),
|
|
46
|
+
cost: z.object({ label: z.string(), capRemaining: z.string().optional() }).optional(),
|
|
47
|
+
/** ISO 8601 with offset. An unparseable value is treated as already expired. */
|
|
48
|
+
expiresAt: z.iso.datetime({ offset: true }),
|
|
49
|
+
/** ISO 8601. Orders approvals: the newest pending one is the only live one. */
|
|
50
|
+
createdAt: z.iso.datetime({ offset: true }),
|
|
51
|
+
/** Exact text the admin must type before Confirm enables. Tiering lives in the host's risk table. */
|
|
52
|
+
confirmPhrase: z.string().min(1).optional(),
|
|
53
|
+
status: ApprovalStatusSchema,
|
|
54
|
+
resultSummary: z.string().optional(),
|
|
55
|
+
error: z.string().optional(),
|
|
56
|
+
decidedAt: z.string().optional(),
|
|
57
|
+
});
|
|
58
|
+
export const StepSchema = z.object({
|
|
59
|
+
id: z.string(),
|
|
60
|
+
kind: z.enum(["candidates", "decision", "toolCall", "note"]),
|
|
61
|
+
status: z.enum(["running", "done", "failed"]),
|
|
62
|
+
title: z.string(),
|
|
63
|
+
detail: z.string().optional(),
|
|
64
|
+
});
|
|
65
|
+
export const ToolCallSchema = z.object({
|
|
66
|
+
id: z.string(),
|
|
67
|
+
name: z.string(),
|
|
68
|
+
status: z.enum(["pending", "running", "succeeded", "failed", "retrying"]),
|
|
69
|
+
/** Already redacted by the BFF. Masked entries are marked. */
|
|
70
|
+
args: z.record(z.string(), CellValueSchema).optional(),
|
|
71
|
+
durationMs: z.number().optional(),
|
|
72
|
+
resultSummary: z.string().optional(),
|
|
73
|
+
error: z.string().optional(),
|
|
74
|
+
});
|
|
75
|
+
export const MessagePartSchema = z.discriminatedUnion("type", [
|
|
76
|
+
z.object({ type: z.literal("text"), text: z.string() }),
|
|
77
|
+
z.object({ type: z.literal("thinking"), summary: z.string() }),
|
|
78
|
+
z.object({ type: z.literal("toolCall"), call: ToolCallSchema }),
|
|
79
|
+
z.object({ type: z.literal("approval"), approval: ApprovalSchema }),
|
|
80
|
+
/** A host-rendered domain card (admin OrgCard etc.). The host owns `cardType`. */
|
|
81
|
+
z.object({ type: z.literal("card"), cardType: z.string(), data: z.unknown() }),
|
|
82
|
+
]);
|
|
83
|
+
export const MessageSchema = z.object({
|
|
84
|
+
id: z.string(),
|
|
85
|
+
role: z.enum(["user", "assistant"]),
|
|
86
|
+
parts: z.array(MessagePartSchema),
|
|
87
|
+
streaming: z.boolean().optional(),
|
|
88
|
+
stopped: z.boolean().optional(),
|
|
89
|
+
failed: z.boolean().optional(),
|
|
90
|
+
});
|
|
91
|
+
export const ConversationStatusSchema = z.enum([
|
|
92
|
+
"idle",
|
|
93
|
+
"streaming",
|
|
94
|
+
"awaitingApproval",
|
|
95
|
+
"interrupted",
|
|
96
|
+
"error",
|
|
97
|
+
"authExpired",
|
|
98
|
+
"capReached",
|
|
99
|
+
"unavailable",
|
|
100
|
+
]);
|
|
101
|
+
export const ThreadSchema = z.object({
|
|
102
|
+
id: z.string(),
|
|
103
|
+
title: z.string(),
|
|
104
|
+
updatedAt: z.string(),
|
|
105
|
+
preview: z.string().optional(),
|
|
106
|
+
});
|
|
107
|
+
export const ReadinessGapSchema = z.object({
|
|
108
|
+
path: z.string(),
|
|
109
|
+
label: z.string(),
|
|
110
|
+
reason: z.string(),
|
|
111
|
+
severity: z.enum(["blocker", "acknowledgement", "recommendation"]),
|
|
112
|
+
currentValue: CellValueSchema.optional(),
|
|
113
|
+
expected: z
|
|
114
|
+
.object({
|
|
115
|
+
type: z.enum(["text", "number", "year", "select"]),
|
|
116
|
+
unit: z.string().optional(),
|
|
117
|
+
format: z.string().optional(),
|
|
118
|
+
})
|
|
119
|
+
.optional(),
|
|
120
|
+
allowedValues: z.array(z.object({ value: z.string(), label: z.string() })).optional(),
|
|
121
|
+
hint: z.string().optional(),
|
|
122
|
+
suggestedValue: z
|
|
123
|
+
.object({
|
|
124
|
+
value: z.string(),
|
|
125
|
+
source: z.string(),
|
|
126
|
+
confidence: z.enum(["high", "medium", "low"]),
|
|
127
|
+
})
|
|
128
|
+
.optional(),
|
|
129
|
+
});
|
|
130
|
+
export const ReadinessSchema = z.object({
|
|
131
|
+
variantId: z.string(),
|
|
132
|
+
productName: z.string(),
|
|
133
|
+
ready: z.boolean(),
|
|
134
|
+
completionPercent: z.number().min(0).max(100),
|
|
135
|
+
sections: z.array(z.object({ id: z.string(), label: z.string(), gaps: z.array(ReadinessGapSchema) })),
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/agent/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface AgentEmptyStateCopy {
|
|
2
|
+
headline: string;
|
|
3
|
+
description: string;
|
|
4
|
+
suggestionsLabel: string;
|
|
5
|
+
noThreadsHeadline: string;
|
|
6
|
+
noThreadsDescription: string;
|
|
7
|
+
}
|
|
8
|
+
export interface AgentEmptyStateProps {
|
|
9
|
+
variant?: "first-run" | "no-threads";
|
|
10
|
+
/** Approved example questions. */
|
|
11
|
+
suggestions?: readonly string[];
|
|
12
|
+
onSuggestion?: (text: string) => void;
|
|
13
|
+
copy?: Partial<AgentEmptyStateCopy>;
|
|
14
|
+
}
|
|
15
|
+
/** @internal First-run state with suggestion chips, or the no-threads variant. */
|
|
16
|
+
export declare function AgentEmptyState({ variant, suggestions, onSuggestion, copy, }: AgentEmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export type AgentErrorKind = "generic" | "interrupted" | "authExpired" | "capReached" | "unavailable" | "runGone";
|
|
18
|
+
export interface AgentErrorCopy {
|
|
19
|
+
genericTitle: string;
|
|
20
|
+
genericBody: string;
|
|
21
|
+
interruptedTitle: string;
|
|
22
|
+
interruptedBody: string;
|
|
23
|
+
authExpiredTitle: string;
|
|
24
|
+
authExpiredBody: string;
|
|
25
|
+
capReachedTitle: string;
|
|
26
|
+
capReachedBody: string;
|
|
27
|
+
unavailableTitle: string;
|
|
28
|
+
unavailableBody: string;
|
|
29
|
+
runGoneTitle: string;
|
|
30
|
+
runGoneBody: string;
|
|
31
|
+
retry: string;
|
|
32
|
+
refetch: string;
|
|
33
|
+
signIn: string;
|
|
34
|
+
}
|
|
35
|
+
export interface AgentErrorProps {
|
|
36
|
+
kind: AgentErrorKind;
|
|
37
|
+
/** Action for the kind: retry (generic/unavailable), refetch (interrupted), sign in (authExpired). */
|
|
38
|
+
onAction?: () => void;
|
|
39
|
+
copy?: Partial<AgentErrorCopy>;
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
/** @internal Error banner: colour + icon + text, one action where the kind has one. */
|
|
43
|
+
export declare function AgentError({ kind, onAction, copy, className }: AgentErrorProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
//# sourceMappingURL=states.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"states.d.ts","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"AAcA,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AASD,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IACrC,kCAAkC;IAClC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;CACrC;AAED,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,EAC9B,OAAqB,EACrB,WAAgB,EAChB,YAAY,EACZ,IAAI,GACL,EAAE,oBAAoB,2CAmCtB;AAED,MAAM,MAAM,cAAc,GACtB,SAAS,GACT,aAAa,GACb,aAAa,GACb,YAAY,GACZ,aAAa,GACb,SAAS,CAAC;AAEd,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB;AAsCD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,cAAc,CAAC;IACrB,sGAAsG;IACtG,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,IAAI,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,uFAAuF;AACvF,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,eAAe,2CAqC9E"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AlertTriangle, ClockAlert, LogIn, MessageSquareText, PlugZap, WalletMinimal, } from "lucide-react";
|
|
3
|
+
import { EmptyState } from "../components/empty-state.js";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
import { useCopy } from "./copy.js";
|
|
6
|
+
import { agentButton, focusRing } from "./ui.js";
|
|
7
|
+
const EMPTY_COPY = {
|
|
8
|
+
headline: "Ask about the platform",
|
|
9
|
+
description: "Look something up, then confirm before anything is changed.",
|
|
10
|
+
suggestionsLabel: "Try asking",
|
|
11
|
+
noThreadsHeadline: "No conversations yet",
|
|
12
|
+
noThreadsDescription: "Your conversations are kept for the retention period, then removed.",
|
|
13
|
+
};
|
|
14
|
+
/** @internal First-run state with suggestion chips, or the no-threads variant. */
|
|
15
|
+
export function AgentEmptyState({ variant = "first-run", suggestions = [], onSuggestion, copy, }) {
|
|
16
|
+
const c = useCopy(EMPTY_COPY, copy);
|
|
17
|
+
const noThreads = variant === "no-threads";
|
|
18
|
+
return (_jsx(EmptyState, { tone: "brand", icon: _jsx(MessageSquareText, { "aria-hidden": true, className: "size-5" }), headline: noThreads ? c.noThreadsHeadline : c.headline, description: noThreads ? c.noThreadsDescription : c.description, entranceMotion: false, actions: !noThreads && suggestions.length > 0 ? (_jsx("div", { role: "group", "aria-label": c.suggestionsLabel, className: "flex flex-wrap justify-center gap-2", children: suggestions.map((s) => (_jsx("button", { type: "button", onClick: () => onSuggestion?.(s), className: cn("rounded-full bg-muted px-3 py-1.5 text-sm/5 text-foreground transition-colors duration-[var(--duration-micro)] hover:bg-muted/70", focusRing), children: s }, s))) })) : undefined }));
|
|
19
|
+
}
|
|
20
|
+
const ERROR_COPY = {
|
|
21
|
+
genericTitle: "Something went wrong",
|
|
22
|
+
genericBody: "The request did not complete. Nothing was changed.",
|
|
23
|
+
interruptedTitle: "Run interrupted",
|
|
24
|
+
interruptedBody: "The connection dropped while the agent was working. Reload the conversation to see where it stopped.",
|
|
25
|
+
authExpiredTitle: "Session expired",
|
|
26
|
+
authExpiredBody: "Sign in again to continue. Your conversation is kept.",
|
|
27
|
+
capReachedTitle: "Daily limit reached",
|
|
28
|
+
capReachedBody: "The daily cap for paid actions is used up. Read-only questions still work.",
|
|
29
|
+
unavailableTitle: "Agent unavailable",
|
|
30
|
+
unavailableBody: "The agent service is not responding. Try again in a few minutes.",
|
|
31
|
+
runGoneTitle: "Approval expired",
|
|
32
|
+
runGoneBody: "That approval is no longer valid. Ask the agent to propose the change again.",
|
|
33
|
+
retry: "Try again",
|
|
34
|
+
refetch: "Reload conversation",
|
|
35
|
+
signIn: "Sign in",
|
|
36
|
+
};
|
|
37
|
+
const ERROR_ICON = {
|
|
38
|
+
generic: _jsx(AlertTriangle, { "aria-hidden": true, className: "size-4" }),
|
|
39
|
+
interrupted: _jsx(PlugZap, { "aria-hidden": true, className: "size-4" }),
|
|
40
|
+
authExpired: _jsx(LogIn, { "aria-hidden": true, className: "size-4" }),
|
|
41
|
+
capReached: _jsx(WalletMinimal, { "aria-hidden": true, className: "size-4" }),
|
|
42
|
+
unavailable: _jsx(PlugZap, { "aria-hidden": true, className: "size-4" }),
|
|
43
|
+
runGone: _jsx(ClockAlert, { "aria-hidden": true, className: "size-4" }),
|
|
44
|
+
};
|
|
45
|
+
const ERROR_TONE = {
|
|
46
|
+
generic: "danger",
|
|
47
|
+
interrupted: "warning",
|
|
48
|
+
authExpired: "warning",
|
|
49
|
+
capReached: "warning",
|
|
50
|
+
unavailable: "danger",
|
|
51
|
+
runGone: "warning",
|
|
52
|
+
};
|
|
53
|
+
/** @internal Error banner: colour + icon + text, one action where the kind has one. */
|
|
54
|
+
export function AgentError({ kind, onAction, copy, className }) {
|
|
55
|
+
const c = useCopy(ERROR_COPY, copy);
|
|
56
|
+
const title = c[`${kind}Title`];
|
|
57
|
+
const body = c[`${kind}Body`];
|
|
58
|
+
const actionLabel = kind === "interrupted"
|
|
59
|
+
? c.refetch
|
|
60
|
+
: kind === "authExpired"
|
|
61
|
+
? c.signIn
|
|
62
|
+
: kind === "generic" || kind === "unavailable"
|
|
63
|
+
? c.retry
|
|
64
|
+
: null;
|
|
65
|
+
const tone = ERROR_TONE[kind];
|
|
66
|
+
return (_jsxs("div", { role: "alert", "data-kind": kind, className: cn("flex items-start gap-3 rounded-xl p-3 text-sm/5", tone === "danger"
|
|
67
|
+
? "bg-[var(--tone-danger-soft)] text-[var(--tone-danger-fg)]"
|
|
68
|
+
: "bg-[var(--tone-warning-soft)] text-[var(--tone-warning-fg)]", className), children: [_jsx("span", { className: "mt-0.5 shrink-0", children: ERROR_ICON[kind] }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsx("p", { className: "font-medium", children: title }), _jsx("p", { className: "mt-0.5", children: body }), actionLabel && onAction && (_jsx("button", { type: "button", onClick: onAction, className: cn(agentButton.quiet, "mt-2"), children: actionLabel }))] })] }));
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=states.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"states.js","sourceRoot":"","sources":["../../src/agent/states.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface AgentThinkingCopy {
|
|
2
|
+
working: string;
|
|
3
|
+
elapsed: string;
|
|
4
|
+
}
|
|
5
|
+
export interface AgentThinkingProps {
|
|
6
|
+
/** One-line summary of what the agent is doing. Raw model reasoning is never shown. */
|
|
7
|
+
label?: string;
|
|
8
|
+
elapsedMs?: number;
|
|
9
|
+
copy?: Partial<AgentThinkingCopy>;
|
|
10
|
+
className?: string;
|
|
11
|
+
}
|
|
12
|
+
/** @internal Status line: the orb as the single ambient mark plus a one-line summary. */
|
|
13
|
+
export declare function AgentThinking({ label, elapsedMs, copy, className }: AgentThinkingProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=thinking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking.d.ts","sourceRoot":"","sources":["../../src/agent/thinking.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,kBAAkB;IACjC,uFAAuF;IACvF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,yFAAyF;AACzF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CAiBtF"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { AgenticOrb } from "../agentic-orb/index.js";
|
|
3
|
+
import { cn } from "../lib/utils.js";
|
|
4
|
+
import { useCopy } from "./copy.js";
|
|
5
|
+
const DEFAULT_COPY = { working: "Working", elapsed: "{seconds}s" };
|
|
6
|
+
/** @internal Status line: the orb as the single ambient mark plus a one-line summary. */
|
|
7
|
+
export function AgentThinking({ label, elapsedMs, copy, className }) {
|
|
8
|
+
const c = useCopy(DEFAULT_COPY, copy);
|
|
9
|
+
const text = label ?? c.working;
|
|
10
|
+
return (_jsxs("div", { role: "status", className: cn("flex items-center gap-2 text-sm/5 text-muted-foreground", className), children: [_jsx(AgenticOrb, { state: "thinking", size: 28, label: "" }), _jsx("span", { children: text }), elapsedMs !== undefined && (_jsx("span", { className: "tabular-nums text-xs/4", children: c.elapsed.replace("{seconds}", String(Math.floor(elapsedMs / 1000))) }))] }));
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=thinking.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking.js","sourceRoot":"","sources":["../../src/agent/thinking.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAMjC,MAAM,YAAY,GAAsB,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;AAUtF,yFAAyF;AACzF,MAAM,UAAU,aAAa,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAsB;IACrF,MAAM,CAAC,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC;IAChC,OAAO,CACL,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,EAAE,CAAC,yDAAyD,EAAE,SAAS,CAAC,aAEnF,KAAC,UAAU,IAAC,KAAK,EAAC,UAAU,EAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAC,EAAE,GAAG,EAClD,yBAAO,IAAI,GAAQ,EAClB,SAAS,KAAK,SAAS,IAAI,CAC1B,eAAM,SAAS,EAAC,wBAAwB,YACrC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,GAChE,CACR,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AgentThread } from "./schema.js";
|
|
2
|
+
export interface AgentThreadListCopy {
|
|
3
|
+
search: string;
|
|
4
|
+
noResults: string;
|
|
5
|
+
delete: string;
|
|
6
|
+
deleteTitle: string;
|
|
7
|
+
deleteBody: string;
|
|
8
|
+
deleteConfirm: string;
|
|
9
|
+
cancel: string;
|
|
10
|
+
retention: string;
|
|
11
|
+
list: string;
|
|
12
|
+
}
|
|
13
|
+
export interface AgentThreadListProps {
|
|
14
|
+
threads: readonly AgentThread[];
|
|
15
|
+
activeId?: string;
|
|
16
|
+
onSelect: (id: string) => void;
|
|
17
|
+
onDelete: (id: string) => void;
|
|
18
|
+
retentionDays?: number;
|
|
19
|
+
formatTime?: (iso: string) => string;
|
|
20
|
+
copy?: Partial<AgentThreadListCopy>;
|
|
21
|
+
className?: string;
|
|
22
|
+
}
|
|
23
|
+
/** @internal Thread list with search, select and confirm-first delete. */
|
|
24
|
+
export declare function AgentThreadList({ threads, activeId, onSelect, onDelete, retentionDays, formatTime, copy, className, }: AgentThreadListProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
//# sourceMappingURL=thread-list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-list.d.ts","sourceRoot":"","sources":["../../src/agent/thread-list.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAI5C,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAaD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,CAAC;IACrC,IAAI,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,aAAkB,EAClB,UAAqB,EACrB,IAAI,EACJ,SAAS,GACV,EAAE,oBAAoB,2CAiFtB"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useMemo, useState } from "react";
|
|
3
|
+
import { Trash2 } from "lucide-react";
|
|
4
|
+
import { ConfirmationDialog } from "../components/confirmation-dialog.js";
|
|
5
|
+
import { cn } from "../lib/utils.js";
|
|
6
|
+
import { fmt, useCopy } from "./copy.js";
|
|
7
|
+
import { AgentEmptyState } from "./states.js";
|
|
8
|
+
import { focusRing } from "./ui.js";
|
|
9
|
+
const DEFAULT_COPY = {
|
|
10
|
+
search: "Search conversations",
|
|
11
|
+
noResults: "No conversations match.",
|
|
12
|
+
delete: "Delete conversation: {title}",
|
|
13
|
+
deleteTitle: "Delete this conversation?",
|
|
14
|
+
deleteBody: "It is removed for good and cannot be restored.",
|
|
15
|
+
deleteConfirm: "Delete",
|
|
16
|
+
cancel: "Cancel",
|
|
17
|
+
retention: "Conversations are kept for {days} days.",
|
|
18
|
+
list: "Conversations",
|
|
19
|
+
};
|
|
20
|
+
/** @internal Thread list with search, select and confirm-first delete. */
|
|
21
|
+
export function AgentThreadList({ threads, activeId, onSelect, onDelete, retentionDays = 30, formatTime = (s) => s, copy, className, }) {
|
|
22
|
+
const c = useCopy(DEFAULT_COPY, copy);
|
|
23
|
+
const [q, setQ] = useState("");
|
|
24
|
+
const [pendingDelete, setPendingDelete] = useState(null);
|
|
25
|
+
const shown = useMemo(() => {
|
|
26
|
+
const needle = q.trim().toLowerCase();
|
|
27
|
+
return needle
|
|
28
|
+
? threads.filter((t) => `${t.title} ${t.preview ?? ""}`.toLowerCase().includes(needle))
|
|
29
|
+
: threads;
|
|
30
|
+
}, [threads, q]);
|
|
31
|
+
if (threads.length === 0)
|
|
32
|
+
return _jsx(AgentEmptyState, { variant: "no-threads" });
|
|
33
|
+
return (_jsxs("div", { className: cn("flex flex-col gap-3", className), children: [_jsx("input", { type: "search", "aria-label": c.search, placeholder: c.search, value: q, onChange: (e) => setQ(e.target.value), className: cn("w-full rounded-lg border border-input bg-background px-3 py-1.5 text-sm/5", focusRing) }), shown.length === 0 ? (_jsx("p", { className: "py-6 text-center text-sm/5 text-muted-foreground", children: c.noResults })) : (_jsx("ul", { "aria-label": c.list, className: "flex flex-col gap-1", children: shown.map((t) => (_jsxs("li", { className: "group flex items-center gap-1 rounded-xl hover:bg-muted", children: [_jsxs("button", { type: "button", "aria-current": t.id === activeId ? "true" : undefined, onClick: () => onSelect(t.id), className: cn("min-w-0 flex-1 rounded-xl px-3 py-2 text-left", focusRing, t.id === activeId && "bg-muted"), children: [_jsx("span", { className: "block truncate text-sm/5 font-medium text-foreground", children: t.title }), _jsxs("span", { className: "block truncate text-xs/4 text-muted-foreground", children: [formatTime(t.updatedAt), t.preview ? ` · ${t.preview}` : ""] })] }), _jsx("button", { type: "button", "aria-label": fmt(c.delete, { title: t.title }), onClick: () => setPendingDelete(t), className: cn("mr-1 inline-flex size-8 shrink-0 items-center justify-center rounded-lg text-muted-foreground hover:text-[var(--tone-danger-fg)]", focusRing), children: _jsx(Trash2, { "aria-hidden": true, className: "size-4" }) })] }, t.id))) })), _jsx("p", { className: "text-xs/4 text-muted-foreground", children: fmt(c.retention, { days: retentionDays }) }), _jsx(ConfirmationDialog, { open: pendingDelete !== null, onClose: () => setPendingDelete(null), onConfirm: () => {
|
|
34
|
+
if (pendingDelete)
|
|
35
|
+
onDelete(pendingDelete.id);
|
|
36
|
+
setPendingDelete(null);
|
|
37
|
+
}, title: c.deleteTitle, description: pendingDelete ? `${pendingDelete.title}. ${c.deleteBody}` : c.deleteBody, confirmLabel: c.deleteConfirm, cancelLabel: c.cancel, tone: "danger" })] }));
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=thread-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thread-list.js","sourceRoot":"","sources":["../../src/agent/thread-list.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { AgentToolCall } from "./schema.js";
|
|
2
|
+
export interface AgentToolCallCopy {
|
|
3
|
+
pending: string;
|
|
4
|
+
running: string;
|
|
5
|
+
succeeded: string;
|
|
6
|
+
failed: string;
|
|
7
|
+
retrying: string;
|
|
8
|
+
showArguments: string;
|
|
9
|
+
hideArguments: string;
|
|
10
|
+
retry: string;
|
|
11
|
+
duration: string;
|
|
12
|
+
noArguments: string;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentToolCallCardProps {
|
|
15
|
+
call: AgentToolCall;
|
|
16
|
+
onRetry?: (id: string) => void;
|
|
17
|
+
/** Slot for a result (table, diff rows). */
|
|
18
|
+
children?: React.ReactNode;
|
|
19
|
+
copy?: Partial<AgentToolCallCopy>;
|
|
20
|
+
className?: string;
|
|
21
|
+
}
|
|
22
|
+
/** @internal Tool-call card: header, arguments disclosure (masked values marked), result slot, retry on failure. */
|
|
23
|
+
export declare function AgentToolCallCard({ call, onRetry, children, copy, className, }: AgentToolCallCardProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=tool-call-card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-card.d.ts","sourceRoot":"","sources":["../../src/agent/tool-call-card.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB;AAyBD,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,oHAAoH;AACpH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,IAAI,EACJ,SAAS,GACV,EAAE,sBAAsB,2CA2FxB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { AlertCircle, CheckCircle2, ChevronRight, CircleDashed, Loader2, RotateCw, } from "lucide-react";
|
|
4
|
+
import { cn } from "../lib/utils.js";
|
|
5
|
+
import { fmt, useCopy } from "./copy.js";
|
|
6
|
+
import { MaskedValue } from "./masked-value.js";
|
|
7
|
+
import { agentButton, focusRing, toneChip } from "./ui.js";
|
|
8
|
+
const DEFAULT_COPY = {
|
|
9
|
+
pending: "Queued",
|
|
10
|
+
running: "Running",
|
|
11
|
+
succeeded: "Done",
|
|
12
|
+
failed: "Failed",
|
|
13
|
+
retrying: "Retrying",
|
|
14
|
+
showArguments: "Show arguments",
|
|
15
|
+
hideArguments: "Hide arguments",
|
|
16
|
+
retry: "Retry",
|
|
17
|
+
duration: "{seconds}s",
|
|
18
|
+
noArguments: "No arguments",
|
|
19
|
+
};
|
|
20
|
+
const STATUS = {
|
|
21
|
+
pending: { tone: "neutral", icon: CircleDashed, key: "pending" },
|
|
22
|
+
running: { tone: "info", icon: Loader2, key: "running", spin: true },
|
|
23
|
+
succeeded: { tone: "success", icon: CheckCircle2, key: "succeeded" },
|
|
24
|
+
failed: { tone: "danger", icon: AlertCircle, key: "failed" },
|
|
25
|
+
retrying: { tone: "warning", icon: RotateCw, key: "retrying", spin: true },
|
|
26
|
+
};
|
|
27
|
+
/** @internal Tool-call card: header, arguments disclosure (masked values marked), result slot, retry on failure. */
|
|
28
|
+
export function AgentToolCallCard({ call, onRetry, children, copy, className, }) {
|
|
29
|
+
const c = useCopy(DEFAULT_COPY, copy);
|
|
30
|
+
const [open, setOpen] = useState(false);
|
|
31
|
+
const s = STATUS[call.status];
|
|
32
|
+
const args = Object.entries(call.args ?? {});
|
|
33
|
+
return (_jsxs("div", { "data-status": call.status, className: cn("rounded-xl bg-card p-2.5 text-sm/5 ring-1 ring-border/60", className), children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: cn("inline-flex size-5 shrink-0 items-center justify-center rounded-full", toneChip[s.tone]), children: _jsx(s.icon, { "aria-hidden": true, className: cn("size-3", s.spin && "animate-spin motion-reduce:animate-none") }) }), _jsx("span", { className: "min-w-0 flex-1 truncate font-mono text-xs/5 text-foreground", children: call.name }), _jsx("span", { className: cn("rounded-full px-2 py-0.5 text-xs/4 font-medium", toneChip[s.tone]), children: c[s.key] }), call.durationMs !== undefined && (_jsx("span", { className: "text-xs/4 tabular-nums text-muted-foreground", children: fmt(c.duration, { seconds: (call.durationMs / 1000).toFixed(1) }) }))] }), call.status === "failed" && (_jsxs("div", { className: "mt-2 flex items-start justify-between gap-2", children: [_jsx("p", { className: "text-[var(--tone-danger-fg)]", children: call.error }), onRetry && (_jsx("button", { type: "button", className: agentButton.quiet, onClick: () => onRetry(call.id), children: c.retry }))] })), call.resultSummary && call.status === "succeeded" && (_jsx("p", { className: "mt-1.5 text-muted-foreground", children: call.resultSummary })), children && _jsx("div", { className: "mt-2", children: children }), call.args && (_jsxs("div", { className: "mt-1.5", children: [_jsxs("button", { type: "button", "aria-expanded": open, onClick: () => setOpen((v) => !v), className: cn("inline-flex min-h-6 items-center gap-1 rounded-md text-xs/4 text-muted-foreground hover:text-foreground", focusRing), children: [_jsx(ChevronRight, { "aria-hidden": true, className: cn("size-3.5 transition-transform duration-[var(--duration-micro)] motion-reduce:transition-none", open && "rotate-90") }), open ? c.hideArguments : c.showArguments] }), open &&
|
|
34
|
+
(args.length === 0 ? (_jsx("p", { className: "mt-1 text-xs/5 text-muted-foreground", children: c.noArguments })) : (_jsx("dl", { className: "mt-1 grid grid-cols-[minmax(0,8rem)_1fr] gap-x-3 gap-y-1 rounded-lg bg-muted p-2.5 text-xs/5", children: args.map(([k, v]) => (_jsxs("div", { className: "contents", children: [_jsx("dt", { className: "truncate font-mono text-muted-foreground", children: k }), _jsx("dd", { className: "min-w-0 break-words font-mono text-foreground", children: _jsx(MaskedValue, { value: v }) })] }, k))) })))] }))] }));
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=tool-call-card.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-call-card.js","sourceRoot":"","sources":["../../src/agent/tool-call-card.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** @internal Shared class recipes. Every colour routes through `--tone-*` or semantic tokens. */
|
|
2
|
+
export declare const focusRing = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring";
|
|
3
|
+
export declare const agentButton: {
|
|
4
|
+
readonly primary: string;
|
|
5
|
+
readonly danger: string;
|
|
6
|
+
readonly quiet: string;
|
|
7
|
+
readonly ghost: string;
|
|
8
|
+
};
|
|
9
|
+
export type Tone = "brand" | "success" | "warning" | "danger" | "info" | "neutral";
|
|
10
|
+
export declare const toneChip: Record<Tone, string>;
|
|
11
|
+
/** Double-bezel surface used by the lib's chat primitives: hairline ring + soft shadow. */
|
|
12
|
+
export declare const bezel = "rounded-2xl bg-card shadow-[var(--shadow-soft)] ring-1 ring-border/60";
|
|
13
|
+
//# sourceMappingURL=ui.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/agent/ui.ts"],"names":[],"mappings":"AAEA,iGAAiG;AACjG,eAAO,MAAM,SAAS,sFAC+D,CAAC;AAMtF,eAAO,MAAM,WAAW;;;;;CAQd,CAAC;AAEX,MAAM,MAAM,IAAI,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnF,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAOzC,CAAC;AAEF,2FAA2F;AAC3F,eAAO,MAAM,KAAK,0EAA0E,CAAC"}
|
package/dist/agent/ui.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.js";
|
|
2
|
+
/** @internal Shared class recipes. Every colour routes through `--tone-*` or semantic tokens. */
|
|
3
|
+
export const focusRing = "focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring";
|
|
4
|
+
const buttonBase = "inline-flex min-h-8 min-w-8 items-center justify-center gap-1.5 rounded-lg px-3 text-sm/5 font-medium transition-[background-color,color,box-shadow] duration-[var(--duration-micro)] ease-[var(--ease-emphasized)] disabled:cursor-not-allowed disabled:opacity-50 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 " +
|
|
5
|
+
focusRing;
|
|
6
|
+
export const agentButton = {
|
|
7
|
+
primary: cn(buttonBase, "bg-primary py-1.5 text-primary-foreground hover:bg-primary/90"),
|
|
8
|
+
danger: cn(buttonBase, "bg-[var(--tone-danger-solid)] py-1.5 text-[var(--tone-danger-solid-fg)] hover:opacity-90"),
|
|
9
|
+
quiet: cn(buttonBase, "bg-muted py-1.5 text-foreground hover:bg-muted/70"),
|
|
10
|
+
ghost: cn(buttonBase, "py-1.5 text-muted-foreground hover:bg-muted hover:text-foreground"),
|
|
11
|
+
};
|
|
12
|
+
export const toneChip = {
|
|
13
|
+
brand: "bg-[var(--tone-brand-soft)] text-[var(--tone-brand-fg)]",
|
|
14
|
+
success: "bg-[var(--tone-success-soft)] text-[var(--tone-success-fg)]",
|
|
15
|
+
warning: "bg-[var(--tone-warning-soft)] text-[var(--tone-warning-fg)]",
|
|
16
|
+
danger: "bg-[var(--tone-danger-soft)] text-[var(--tone-danger-fg)]",
|
|
17
|
+
info: "bg-[var(--tone-info-soft)] text-[var(--tone-info-fg)]",
|
|
18
|
+
neutral: "bg-[var(--tone-neutral-soft)] text-[var(--tone-neutral-fg)]",
|
|
19
|
+
};
|
|
20
|
+
/** Double-bezel surface used by the lib's chat primitives: hairline ring + soft shadow. */
|
|
21
|
+
export const bezel = "rounded-2xl bg-card shadow-[var(--shadow-soft)] ring-1 ring-border/60";
|
|
22
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/agent/ui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,MAAM,cAAc,CAAC;AAElC,iGAAiG;AACjG,MAAM,CAAC,MAAM,SAAS,GACpB,mFAAmF,CAAC;AAEtF,MAAM,UAAU,GACd,gUAAgU;IAChU,SAAS,CAAC;AAEZ,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,EAAE,CAAC,UAAU,EAAE,+DAA+D,CAAC;IACxF,MAAM,EAAE,EAAE,CACR,UAAU,EACV,0FAA0F,CAC3F;IACD,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,mDAAmD,CAAC;IAC1E,KAAK,EAAE,EAAE,CAAC,UAAU,EAAE,mEAAmE,CAAC;CAClF,CAAC;AAIX,MAAM,CAAC,MAAM,QAAQ,GAAyB;IAC5C,KAAK,EAAE,yDAAyD;IAChE,OAAO,EAAE,6DAA6D;IACtE,OAAO,EAAE,6DAA6D;IACtE,MAAM,EAAE,2DAA2D;IACnE,IAAI,EAAE,uDAAuD;IAC7D,OAAO,EAAE,6DAA6D;CACvE,CAAC;AAEF,2FAA2F;AAC3F,MAAM,CAAC,MAAM,KAAK,GAAG,uEAAuE,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
/**
|
|
3
|
+
* Client marks for the "Connect your AI assistant" panel (CEL-2357). Inline SVG, no network, no files.
|
|
4
|
+
* Sources and licences for every mark are recorded in ./README.md. A mark is NEVER recoloured beyond
|
|
5
|
+
* its documented brand colour and is never placed on a filled plate: see the README before editing.
|
|
6
|
+
*
|
|
7
|
+
* Pass `title` to expose a mark as an image (`role="img"`, `aria-label`, `<title>`). Without it the
|
|
8
|
+
* mark is decorative (`aria-hidden`), which is what the panel uses because every tab names its client.
|
|
9
|
+
*/
|
|
10
|
+
export interface BrandMarkProps extends Omit<React.SVGProps<SVGSVGElement>, "title" | "children"> {
|
|
11
|
+
/** Accessible name. Omit when the client's name is already next to the mark. */
|
|
12
|
+
title?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Claude. Brand colour #D97757 (Anthropic's published "Claude orange"). Path: simple-icons, CC0-1.0. */
|
|
15
|
+
export declare function ClaudeMark({ title, ...props }: BrandMarkProps): import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
/** ChatGPT, drawn as the OpenAI blossom in the text colour (OpenAI's mark is single colour). Path: @lobehub/icons-static-svg, MIT. */
|
|
17
|
+
export declare function ChatGptMark({ title, ...props }: BrandMarkProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=brand-marks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-marks.d.ts","sourceRoot":"","sources":["../../src/mcp-connect/brand-marks.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B;;;;;;;GAOG;AACH,MAAM,WAAW,cAAe,SAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC/F,gFAAgF;IAChF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAQD,yGAAyG;AACzG,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAa7D;AAED,sIAAsI;AACtI,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,cAAc,2CAc9D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
function a11y(title) {
|
|
3
|
+
return title
|
|
4
|
+
? { role: "img", "aria-label": title }
|
|
5
|
+
: { "aria-hidden": true, focusable: false };
|
|
6
|
+
}
|
|
7
|
+
/** Claude. Brand colour #D97757 (Anthropic's published "Claude orange"). Path: simple-icons, CC0-1.0. */
|
|
8
|
+
export function ClaudeMark({ title, ...props }) {
|
|
9
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "#D97757", xmlns: "http://www.w3.org/2000/svg", ...a11y(title), ...props, children: [title ? _jsx("title", { children: title }) : null, _jsx("path", { d: "m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z" })] }));
|
|
10
|
+
}
|
|
11
|
+
/** ChatGPT, drawn as the OpenAI blossom in the text colour (OpenAI's mark is single colour). Path: @lobehub/icons-static-svg, MIT. */
|
|
12
|
+
export function ChatGptMark({ title, ...props }) {
|
|
13
|
+
return (_jsxs("svg", { viewBox: "0 0 24 24", fill: "currentColor", fillRule: "evenodd", xmlns: "http://www.w3.org/2000/svg", ...a11y(title), ...props, children: [title ? _jsx("title", { children: title }) : null, _jsx("path", { d: "M9.205 8.658v-2.26c0-.19.072-.333.238-.428l4.543-2.616c.619-.357 1.356-.523 2.117-.523 2.854 0 4.662 2.212 4.662 4.566 0 .167 0 .357-.024.547l-4.71-2.759a.797.797 0 00-.856 0l-5.97 3.473zm10.609 8.8V12.06c0-.333-.143-.57-.429-.737l-5.97-3.473 1.95-1.118a.433.433 0 01.476 0l4.543 2.617c1.309.76 2.189 2.378 2.189 3.948 0 1.808-1.07 3.473-2.76 4.163zM7.802 12.703l-1.95-1.142c-.167-.095-.239-.238-.239-.428V5.899c0-2.545 1.95-4.472 4.591-4.472 1 0 1.927.333 2.712.928L8.23 5.067c-.285.166-.428.404-.428.737v6.898zM12 15.128l-2.795-1.57v-3.33L12 8.658l2.795 1.57v3.33L12 15.128zm1.796 7.23c-1 0-1.927-.332-2.712-.927l4.686-2.712c.285-.166.428-.404.428-.737v-6.898l1.974 1.142c.167.095.238.238.238.428v5.233c0 2.545-1.974 4.472-4.614 4.472zm-5.637-5.303l-4.544-2.617c-1.308-.761-2.188-2.378-2.188-3.948A4.482 4.482 0 014.21 6.327v5.423c0 .333.143.571.428.738l5.947 3.449-1.95 1.118a.432.432 0 01-.476 0zm-.262 3.9c-2.688 0-4.662-2.021-4.662-4.519 0-.19.024-.38.047-.57l4.686 2.71c.286.167.571.167.856 0l5.97-3.448v2.26c0 .19-.07.333-.237.428l-4.543 2.616c-.619.357-1.356.523-2.117.523zm5.899 2.83a5.947 5.947 0 005.827-4.756C22.287 18.339 24 15.84 24 13.296c0-1.665-.713-3.282-1.998-4.448.119-.5.19-.999.19-1.498 0-3.401-2.759-5.947-5.946-5.947-.642 0-1.26.095-1.88.31A5.962 5.962 0 0010.205 0a5.947 5.947 0 00-5.827 4.757C1.713 5.447 0 7.945 0 10.49c0 1.666.713 3.283 1.998 4.448-.119.5-.19 1-.19 1.499 0 3.401 2.759 5.946 5.946 5.946.642 0 1.26-.095 1.88-.309a5.96 5.96 0 004.162 1.713z" })] }));
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=brand-marks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-marks.js","sourceRoot":"","sources":["../../src/mcp-connect/brand-marks.tsx"],"names":[],"mappings":";AAeA,SAAS,IAAI,CAAC,KAAyB;IACrC,OAAO,KAAK;QACV,CAAC,CAAE,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAY;QACjD,CAAC,CAAE,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAY,CAAC;AAC3D,CAAC;AAED,yGAAyG;AACzG,MAAM,UAAU,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAkB;IAC5D,OAAO,CACL,eACE,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,SAAS,EACd,KAAK,EAAC,4BAA4B,KAC9B,IAAI,CAAC,KAAK,CAAC,KACX,KAAK,aAER,KAAK,CAAC,CAAC,CAAC,0BAAQ,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EACtC,eAAM,CAAC,EAAC,qxDAAqxD,GAAG,IAC5xD,CACP,CAAC;AACJ,CAAC;AAED,sIAAsI;AACtI,MAAM,UAAU,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,KAAK,EAAkB;IAC7D,OAAO,CACL,eACE,OAAO,EAAC,WAAW,EACnB,IAAI,EAAC,cAAc,EACnB,QAAQ,EAAC,SAAS,EAClB,KAAK,EAAC,4BAA4B,KAC9B,IAAI,CAAC,KAAK,CAAC,KACX,KAAK,aAER,KAAK,CAAC,CAAC,CAAC,0BAAQ,KAAK,GAAS,CAAC,CAAC,CAAC,IAAI,EACtC,eAAM,CAAC,EAAC,+8CAA+8C,GAAG,IACt9C,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The assistants the panel walks a non-technical person through. Developer tools (command line,
|
|
3
|
+
* JSON config files, one-click editor installs) are deliberately not here: this panel is for
|
|
4
|
+
* people who use an assistant in the browser or the desktop app.
|
|
5
|
+
*/
|
|
6
|
+
export type McpClientId = "claude" | "chatgpt";
|
|
7
|
+
export declare const MCP_CLIENT_IDS: readonly McpClientId[];
|
|
8
|
+
/**
|
|
9
|
+
* Vendor documentation each client's steps were verified against on 2026-10-08.
|
|
10
|
+
*
|
|
11
|
+
* - Claude custom connectors: https://support.claude.com/en/articles/11175166
|
|
12
|
+
* (Customize, Connectors, Add, Add custom connector; Team and Enterprise owners use
|
|
13
|
+
* Organization settings, then Connectors)
|
|
14
|
+
* - ChatGPT: https://developers.openai.com/api/docs/mcp
|
|
15
|
+
* (Settings, Security and login, Developer mode; then Plugins, plus button, link)
|
|
16
|
+
*/
|
|
17
|
+
export declare const MCP_VENDOR_DOCS: Record<McpClientId, string>;
|
|
18
|
+
//# sourceMappingURL=clients.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clients.d.ts","sourceRoot":"","sources":["../../src/mcp-connect/clients.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE/C,eAAO,MAAM,cAAc,EAAE,SAAS,WAAW,EAA0B,CAAC;AAE5E;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAIvD,CAAC"}
|