@parhelia/core 0.4.12873 → 0.4.12875

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/config/config.js +9 -2
  2. package/dist/config/config.js.map +1 -1
  3. package/dist/editor/client/EditorShell.js +8 -3
  4. package/dist/editor/client/EditorShell.js.map +1 -1
  5. package/dist/editor/client/editContext.d.ts +5 -0
  6. package/dist/editor/client/editContext.js.map +1 -1
  7. package/dist/editor/reviews/commentTargetPicker.d.ts +4 -0
  8. package/dist/editor/reviews/commentTargetPicker.js +4 -0
  9. package/dist/editor/reviews/commentTargetPicker.js.map +1 -1
  10. package/dist/editor/services/analyticsService.d.ts +131 -0
  11. package/dist/editor/services/analyticsService.js +17 -0
  12. package/dist/editor/services/analyticsService.js.map +1 -0
  13. package/dist/editor/settings/panels/McpAccessPanel.d.ts +3 -3
  14. package/dist/editor/settings/panels/McpAccessPanel.js +18 -38
  15. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -1
  16. package/dist/editor/settings/panels/McpGrantList.d.ts +8 -0
  17. package/dist/editor/settings/panels/McpGrantList.js +21 -0
  18. package/dist/editor/settings/panels/McpGrantList.js.map +1 -0
  19. package/dist/editor/settings/panels/McpServerPanel.d.ts +7 -0
  20. package/dist/editor/settings/panels/McpServerPanel.js +84 -0
  21. package/dist/editor/settings/panels/McpServerPanel.js.map +1 -0
  22. package/dist/editor/settings/panels/index.d.ts +1 -0
  23. package/dist/editor/settings/panels/index.js +1 -0
  24. package/dist/editor/settings/panels/index.js.map +1 -1
  25. package/dist/editor/sidebar/analytics/PagePerformance.d.ts +6 -0
  26. package/dist/editor/sidebar/analytics/PagePerformance.js +142 -0
  27. package/dist/editor/sidebar/analytics/PagePerformance.js.map +1 -0
  28. package/dist/editor/sidebar/analytics/analyticsFormat.d.ts +10 -0
  29. package/dist/editor/sidebar/analytics/analyticsFormat.js +57 -0
  30. package/dist/editor/sidebar/analytics/analyticsFormat.js.map +1 -0
  31. package/dist/editor/ui/PublishDialog.d.ts +5 -1
  32. package/dist/editor/ui/PublishDialog.js +98 -17
  33. package/dist/editor/ui/PublishDialog.js.map +1 -1
  34. package/dist/editor/ui/WorkboxItemsTable.d.ts +17 -2
  35. package/dist/editor/ui/WorkboxItemsTable.js +26 -12
  36. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  37. package/dist/editor/ui/publishReadiness.d.ts +11 -1
  38. package/dist/editor/ui/publishReadiness.js +34 -30
  39. package/dist/editor/ui/publishReadiness.js.map +1 -1
  40. package/dist/revision.d.ts +2 -2
  41. package/dist/revision.js +2 -2
  42. package/package.json +1 -1
@@ -127,6 +127,11 @@ export type AddCommentOptions = {
127
127
  * an explicit target, the focused field and unrelated selections are ignored.
128
128
  */
129
129
  itemId?: string;
130
+ /**
131
+ * The field as a whole (a plain click on it while picking): no range, even
132
+ * when a passage in it is, or was last, selected.
133
+ */
134
+ wholeField?: boolean;
130
135
  };
131
136
  type BridgeTextRangeQuery = NonNullable<QueryGeometryCommandPayload["textRanges"]>[number];
132
137
  export type ScrollIntoViewTarget = string | {
@@ -1 +1 @@
1
- {"version":3,"file":"editContext.js","sourceRoot":"","sources":["../../../src/editor/client/editContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,KAAK,EAAE,EAGZ,UAAU,EAEV,MAAM,GACP,MAAM,OAAO,CAAC;AA68Bf,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA8B,SAAS,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE5D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IAElC,OAAO,UAAU,CAAC;AACpB,CAAC;AAYD,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAC1C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAEtE,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB;IAChC,OAAO,mBAAmB,EAAE,EAAE,SAAS,IAAI,eAAe,CAAC;AAC7D,CAAC;AAED,MAAM,eAAe,GAAa,EAAE,CAAC;AAuCrC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AAEpE,mDAAmD;AACnD,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IAElC,OAAO,UAAU,CAAC;AACpB,CAAC;AAiBD,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC"}
1
+ {"version":3,"file":"editContext.js","sourceRoot":"","sources":["../../../src/editor/client/editContext.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;AAGb,OAAO,KAAK,EAAE,EAGZ,UAAU,EAEV,MAAM,GACP,MAAM,OAAO,CAAC;AAk9Bf,MAAM,WAAW,GAAG,KAAK,CAAC,aAAa,CAA8B,SAAS,CAAC,CAAC;AAChF,MAAM,CAAC,MAAM,mBAAmB,GAAG,WAAW,CAAC,QAAQ,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;AAE5D,MAAM,UAAU,iBAAiB;IAC/B,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;IACtC,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IAElC,OAAO,UAAU,CAAC;AACpB,CAAC;AAYD,MAAM,gBAAgB,GAAG,KAAK,CAAC,aAAa,CAC1C,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAG,gBAAgB,CAAC,QAAQ,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;AAEtE,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB;IAChC,OAAO,mBAAmB,EAAE,EAAE,SAAS,IAAI,eAAe,CAAC;AAC7D,CAAC;AAED,MAAM,eAAe,GAAa,EAAE,CAAC;AAuCrC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC;AAEpE,mDAAmD;AACnD,MAAM,UAAU,uBAAuB;IACrC,MAAM,YAAY,GAAG,oBAAoB,EAAE,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC;IACxC,UAAU,CAAC,OAAO,GAAG,YAAY,CAAC;IAElC,OAAO,UAAU,CAAC;AACpB,CAAC;AAiBD,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAE3C,SAAS,CAAC,CAAC;AAEb,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;AACxE,MAAM,CAAC,MAAM,yBAAyB,GAAG,iBAAiB,CAAC,QAAQ,CAAC"}
@@ -59,12 +59,16 @@ type CanvasPickContext = {
59
59
  addComment: (options?: {
60
60
  field?: FieldDescriptor;
61
61
  itemId?: string;
62
+ wholeField?: boolean;
62
63
  }) => void;
63
64
  };
64
65
  /**
65
66
  * The canvas half of picking, driven by the host bridge's own events so the
66
67
  * page stays interactive (text can be selected): a click picks the field or
67
68
  * component under the pointer, Escape or a right-click leaves the mode.
69
+ * A click picks the field as a whole: the click that ends a text selection
70
+ * arrives as a selection instead (see `isCanvasPickSelection`), so a passage
71
+ * still remembered at this point is a stale one.
68
72
  * Returns true when the interaction belonged to the picker and must not
69
73
  * reach the editor's normal handling (select, inline edit, context menu).
70
74
  */
@@ -60,6 +60,9 @@ export function useCommentTargetPicking() {
60
60
  * The canvas half of picking, driven by the host bridge's own events so the
61
61
  * page stays interactive (text can be selected): a click picks the field or
62
62
  * component under the pointer, Escape or a right-click leaves the mode.
63
+ * A click picks the field as a whole: the click that ends a text selection
64
+ * arrives as a selection instead (see `isCanvasPickSelection`), so a passage
65
+ * still remembered at this point is a stale one.
63
66
  * Returns true when the interaction belonged to the picker and must not
64
67
  * reach the editor's normal handling (select, inline edit, context menu).
65
68
  */
@@ -90,6 +93,7 @@ export function handleCanvasPickInteraction(interaction, editContext, page) {
90
93
  version: interaction.item.version ?? page?.version ?? 0,
91
94
  },
92
95
  },
96
+ wholeField: true,
93
97
  });
94
98
  }
95
99
  else if (interaction.componentId) {
@@ -1 +1 @@
1
- {"version":3,"file":"commentTargetPicker.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentTargetPicker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"commentTargetPicker.js","sourceRoot":"","sources":["../../../src/editor/reviews/commentTargetPicker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ export type AnalyticsStatus = "ok" | "not-configured" | "no-url" | "no-data" | "error";
2
+ export type AnalyticsDateWindow = {
3
+ startDate: string;
4
+ endDate: string;
5
+ };
6
+ export type AnalyticsWindowInfo = {
7
+ days: number;
8
+ current: AnalyticsDateWindow;
9
+ previous: AnalyticsDateWindow;
10
+ lastCompleteDay: string;
11
+ timeZone: string;
12
+ timeZoneResolved: boolean;
13
+ };
14
+ export type AnalyticsMetric = {
15
+ key: string;
16
+ label: string;
17
+ definition: string;
18
+ source?: string;
19
+ denominator?: string;
20
+ unit: "count" | "seconds" | "ratio" | "position";
21
+ current?: number;
22
+ previous?: number;
23
+ changePercent?: number;
24
+ };
25
+ export type AnalyticsBreakdownRow = {
26
+ label: string;
27
+ views: number;
28
+ users: number;
29
+ };
30
+ export type AnalyticsNamedCount = {
31
+ name: string;
32
+ current: number;
33
+ previous?: number;
34
+ };
35
+ export type AnalyticsTrendPoint = {
36
+ date: string;
37
+ views: number;
38
+ users: number;
39
+ };
40
+ export type AnalyticsQualityFlags = {
41
+ thresholded: boolean;
42
+ sampled: boolean;
43
+ rowsGroupedIntoOther: boolean;
44
+ emptyReason?: string;
45
+ notes: string[];
46
+ };
47
+ export type SearchQueryRow = {
48
+ query: string;
49
+ clicks: number;
50
+ impressions: number;
51
+ ctr: number;
52
+ position: number;
53
+ };
54
+ export type SearchConsoleReport = {
55
+ status: AnalyticsStatus;
56
+ message?: string;
57
+ property?: string;
58
+ current?: AnalyticsDateWindow;
59
+ previous?: AnalyticsDateWindow;
60
+ totals: AnalyticsMetric[];
61
+ topQueries: SearchQueryRow[];
62
+ searchConsoleUrl?: string;
63
+ };
64
+ export type ClaritySignal = {
65
+ key: string;
66
+ label: string;
67
+ definition: string;
68
+ sessionsPercent?: number;
69
+ sessions?: number;
70
+ count?: number;
71
+ };
72
+ export type ClarityPageReport = {
73
+ status: AnalyticsStatus;
74
+ message?: string;
75
+ projectId: string;
76
+ days: number;
77
+ fetchedAtUtc: string;
78
+ url?: string;
79
+ otherUrlVariants: number;
80
+ sessions?: number;
81
+ averageScrollDepthPercent?: number;
82
+ activeTimeSeconds?: number;
83
+ totalTimeSeconds?: number;
84
+ signals: ClaritySignal[];
85
+ notes: string[];
86
+ heatmapUrl?: string;
87
+ recordingsUrl?: string;
88
+ };
89
+ export type PageAnalyticsReport = {
90
+ status: AnalyticsStatus;
91
+ message?: string;
92
+ page?: {
93
+ itemId: string;
94
+ itemName?: string;
95
+ language: string;
96
+ siteName?: string;
97
+ host?: string;
98
+ pageUrls: string[];
99
+ pagePaths: string[];
100
+ };
101
+ window?: AnalyticsWindowInfo;
102
+ headline: AnalyticsMetric[];
103
+ sessionContext: AnalyticsMetric[];
104
+ keyEvents: AnalyticsNamedCount[];
105
+ trend: AnalyticsTrendPoint[];
106
+ channels: AnalyticsBreakdownRow[];
107
+ devices: AnalyticsBreakdownRow[];
108
+ countries: AnalyticsBreakdownRow[];
109
+ scroll90Events?: number;
110
+ outboundClicks: AnalyticsNamedCount[];
111
+ publishEvents: {
112
+ date: string;
113
+ userName?: string;
114
+ }[];
115
+ quality: AnalyticsQualityFlags;
116
+ ga4ReportUrl?: string;
117
+ search?: SearchConsoleReport;
118
+ clarity?: ClarityPageReport;
119
+ generatedAtUtc: string;
120
+ };
121
+ export type AnalyticsConnectionTestResult = {
122
+ siteName: string;
123
+ credentialOk: boolean;
124
+ credentialMessage?: string;
125
+ ga4Status?: AnalyticsStatus;
126
+ ga4Message?: string;
127
+ searchConsoleStatus?: AnalyticsStatus;
128
+ searchConsoleMessage?: string;
129
+ };
130
+ export declare function getPageAnalytics(itemId: string, language: string, siteName?: string, signal?: AbortSignal): Promise<PageAnalyticsReport>;
131
+ export declare function testAnalyticsConnection(siteName: string): Promise<AnalyticsConnectionTestResult>;
@@ -0,0 +1,17 @@
1
+ import { get } from "./serviceHelper";
2
+ export async function getPageAnalytics(itemId, language, siteName, signal) {
3
+ const params = new URLSearchParams({ itemId, language });
4
+ if (siteName)
5
+ params.set("site", siteName);
6
+ const result = await get(`/parhelia/analytics/page?${params.toString()}`, undefined, signal);
7
+ if (result.type !== "success" || !result.data)
8
+ throw new Error(result.summary || "Analytics could not be loaded.");
9
+ return result.data;
10
+ }
11
+ export async function testAnalyticsConnection(siteName) {
12
+ const result = await get(`/parhelia/analytics/test?site=${encodeURIComponent(siteName)}`);
13
+ if (result.type !== "success" || !result.data)
14
+ throw new Error(result.summary || "The connection test failed.");
15
+ return result.data;
16
+ }
17
+ //# sourceMappingURL=analyticsService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyticsService.js","sourceRoot":"","sources":["../../../src/editor/services/analyticsService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AA6HtC,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAc,EACd,QAAgB,EAChB,QAAiB,EACjB,MAAoB;IAEpB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IACzD,IAAI,QAAQ;QAAE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,MAAM,GAAG,CACtB,4BAA4B,MAAM,CAAC,QAAQ,EAAE,EAAE,EAC/C,SAAS,EACT,MAAM,CACP,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI;QAC3C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,gCAAgC,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,GAAG,CACtB,iCAAiC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAChE,CAAC;IACF,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI;QAC3C,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,6BAA6B,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * "MCP Access" settings: the MCP server address for clients, the user's connected clients
3
- * (with revoke), and for administrators the configuration status, all connections, registered
4
- * clients, and a settings form for the MCP Access settings item.
2
+ * Personal "MCP Access" settings: the MCP server address for clients and the user's own connected
3
+ * clients (with revoke). Server configuration and everyone's connections live in the System group's
4
+ * "MCP Server" panel.
5
5
  */
6
6
  export declare function McpAccessPanel(): import("react").JSX.Element;
7
7
  export default McpAccessPanel;
@@ -1,48 +1,35 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useCallback, useEffect, useMemo, useState } from "react";
3
- import { AlertCircle, KeyRound, PlugZap, RefreshCw, Settings } from "lucide-react";
3
+ import { AlertCircle, KeyRound, PlugZap, RefreshCw } from "lucide-react";
4
4
  import { Button } from "../../../components/ui/button";
5
- import { Alert, AlertDescription } from "../../../components/ui/alert";
6
5
  import { CopyButton } from "../../../components/ui/copy-button";
7
- import { DeleteButton } from "../../../components/ui/delete-button";
6
+ import { useEditContext } from "../../client/editContext";
8
7
  import { mcpAccessService, } from "../../services/mcpAccessService";
9
8
  import { SettingsCard as Card } from "../SettingsCard";
10
9
  import { SettingsPanelLayout } from "../SettingsPanelLayout";
11
10
  import { useRequiredSettingsHeaderActions } from "../SettingsHeaderActionsContext";
12
- import { McpAccessSettingsView } from "./McpAccessSettingsView";
13
- const scopeLabels = {
14
- "parhelia:read": "Read",
15
- "parhelia:write": "Change",
16
- "parhelia:agents": "Agents",
17
- };
18
- function formatDate(value) {
19
- if (!value)
20
- return "never";
21
- const date = new Date(value);
22
- return Number.isNaN(date.getTime()) ? value : date.toLocaleString();
23
- }
11
+ import { McpGrantList } from "./McpGrantList";
24
12
  const getErrorMessage = (error, fallback) => error instanceof Error ? error.message : fallback;
25
13
  /**
26
- * "MCP Access" settings: the MCP server address for clients, the user's connected clients
27
- * (with revoke), and for administrators the configuration status, all connections, registered
28
- * clients, and a settings form for the MCP Access settings item.
14
+ * Personal "MCP Access" settings: the MCP server address for clients and the user's own connected
15
+ * clients (with revoke). Server configuration and everyone's connections live in the System group's
16
+ * "MCP Server" panel.
29
17
  */
30
18
  export function McpAccessPanel() {
19
+ const editContext = useEditContext();
20
+ const isAdmin = editContext?.userInfo?.user?.isAdministrator ?? false;
31
21
  const setSettingsHeaderActions = useRequiredSettingsHeaderActions();
32
22
  const [status, setStatus] = useState(null);
33
23
  const [grants, setGrants] = useState([]);
34
- const [showAll, setShowAll] = useState(false);
35
24
  const [loading, setLoading] = useState(true);
36
25
  const [error, setError] = useState(null);
37
- const [showSettings, setShowSettings] = useState(false);
38
- const isAdmin = !!status?.settingsItemId;
39
26
  const load = useCallback(async () => {
40
27
  setLoading(true);
41
28
  setError(null);
42
29
  try {
43
30
  const [nextStatus, nextGrants] = await Promise.all([
44
31
  mcpAccessService.getStatus(),
45
- mcpAccessService.getGrants(showAll),
32
+ mcpAccessService.getGrants(),
46
33
  ]);
47
34
  setStatus(nextStatus);
48
35
  setGrants(nextGrants);
@@ -53,11 +40,11 @@ export function McpAccessPanel() {
53
40
  finally {
54
41
  setLoading(false);
55
42
  }
56
- }, [showAll]);
43
+ }, []);
57
44
  useEffect(() => {
58
45
  void load();
59
46
  }, [load]);
60
- const headerActions = useMemo(() => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { size: "sm", variant: "outline", onClick: () => void load(), disabled: loading, title: "Refresh", children: _jsx(RefreshCw, { className: loading ? "h-4 w-4 animate-spin" : "h-4 w-4", strokeWidth: 1 }) }), isAdmin && (_jsxs(Button, { size: "sm", variant: "outline", onClick: () => setShowSettings((value) => !value), "data-testid": "mcp-access-settings-toggle", children: [_jsx(Settings, { className: "mr-1 h-4 w-4", strokeWidth: 1 }), showSettings ? "Back to connections" : "Settings"] }))] })), [isAdmin, load, loading, showSettings]);
47
+ const headerActions = useMemo(() => (_jsx(Button, { size: "sm", variant: "outline", onClick: () => void load(), disabled: loading, title: "Refresh", children: _jsx(RefreshCw, { className: loading ? "h-4 w-4 animate-spin" : "h-4 w-4", strokeWidth: 1 }) })), [load, loading]);
61
48
  useEffect(() => {
62
49
  if (!setSettingsHeaderActions)
63
50
  return;
@@ -73,24 +60,17 @@ export function McpAccessPanel() {
73
60
  setError(getErrorMessage(e, "Failed to revoke the connection"));
74
61
  }
75
62
  };
76
- const deleteClient = async (clientKey) => {
77
- try {
78
- await mcpAccessService.deleteClient(clientKey);
79
- await load();
80
- }
81
- catch (e) {
82
- setError(getErrorMessage(e, "Failed to delete the client"));
83
- }
63
+ const openServerSettings = () => {
64
+ editContext?.switchWorkspace("settings", {
65
+ skipConfirmation: true,
66
+ urlParams: { ccpanel: "mcp-server" },
67
+ });
84
68
  };
85
69
  const serverUrl = status?.serverUrl ?? "";
86
70
  const claudeCommand = serverUrl ? `claude mcp add --transport http parhelia ${serverUrl}` : "";
87
- const mainContent = (_jsx(SettingsPanelLayout, { children: _jsxs("div", { className: "space-y-4", "data-testid": "mcp-access-panel", children: [error && (_jsxs("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red flex items-start gap-2 rounded border p-3 text-sm", children: [_jsx(AlertCircle, { className: "mt-0.5 h-4 w-4 shrink-0", strokeWidth: 1 }), _jsx("span", { children: error })] })), status && (_jsxs(Card, { icon: _jsx(PlugZap, { strokeWidth: 1 }), title: "Connect an MCP client", description: status.enabled
71
+ return (_jsx(SettingsPanelLayout, { children: _jsxs("div", { className: "space-y-4", "data-testid": "mcp-access-panel", children: [error && (_jsxs("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red flex items-start gap-2 rounded border p-3 text-sm", children: [_jsx(AlertCircle, { className: "mt-0.5 h-4 w-4 shrink-0", strokeWidth: 1 }), _jsx("span", { children: error })] })), status && (_jsx(Card, { icon: _jsx(PlugZap, { strokeWidth: 1 }), title: "Connect an MCP client", description: status.enabled
88
72
  ? "Add this server to Claude Code, Cursor or another MCP client and sign in when the client asks."
89
- : "The MCP server is switched off on this instance.", children: [status.enabled && serverUrl ? (_jsxs("div", { className: "space-y-3 text-sm", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { className: "bg-neutral-grey-5 rounded px-2 py-1 break-all", "data-testid": "mcp-server-url", children: serverUrl }), _jsx(CopyButton, { textToCopy: serverUrl, iconOnly: true })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { className: "bg-neutral-grey-5 rounded px-2 py-1 break-all", children: claudeCommand }), _jsx(CopyButton, { textToCopy: claudeCommand, iconOnly: true })] }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Register the server under the name \"parhelia\" so tool names stay within Claude's limits. The client opens a browser to ask for your approval." })] })) : (_jsx("p", { className: "text-neutral-grey-50 text-sm", children: isAdmin ? (_jsx(Button, { size: "sm", variant: "link", className: "h-auto p-0", onClick: () => setShowSettings(true), children: "Open the settings to enable it." })) : ("Ask an administrator to enable it.") })), isAdmin && status.problems.length > 0 && (_jsx(Alert, { variant: "warning", className: "mt-3", "data-testid": "mcp-access-problems", children: _jsx(AlertDescription, { children: _jsx("ul", { className: "list-disc space-y-1 pl-4", children: status.problems.map((problem) => (_jsx("li", { children: problem }, problem))) }) }) }))] })), _jsx(Card, { icon: _jsx(KeyRound, { strokeWidth: 1 }), title: showAll ? "All connections" : "Your connections", description: "MCP clients you allowed to act with your Sitecore permissions. Revoking stops them immediately, including agents they started.", headerActions: isAdmin ? (_jsx(Button, { size: "sm", variant: "ghost", onClick: () => setShowAll((value) => !value), children: showAll ? "Show mine" : "Show all users" })) : undefined, children: grants.length === 0 && !loading ? (_jsx("p", { className: "text-neutral-grey-50 text-sm", "data-testid": "mcp-grants-empty", children: "No connected clients." })) : (_jsx("ul", { className: "divide-border-default divide-y", "data-testid": "mcp-grants", children: grants.map((grant) => (_jsxs("li", { className: "flex items-center justify-between gap-3 py-2", "data-testid": "mcp-grant", children: [_jsxs("div", { className: "min-w-0 text-sm", children: [_jsx("div", { className: "truncate font-medium", children: grant.clientName }), _jsxs("div", { className: "text-neutral-grey-50 truncate text-xs", children: [grant.scopes.map((scope) => scopeLabels[scope] ?? scope).join(", "), grant.askBeforeWrites ? " · asks before changes" : "", showAll ? ` · ${grant.userName}` : "", ` · last used ${formatDate(grant.lastUsedAt)}`] })] }), _jsx(DeleteButton, { label: `Revoke ${grant.clientName}`, title: "Revoke", onClick: () => void revoke(grant), "data-testid": "mcp-grant-revoke" })] }, grant.grantId))) })) }), isAdmin && status?.clients && status.clients.length > 0 && (_jsx(Card, { icon: _jsx(Settings, { strokeWidth: 1 }), title: "Registered clients", description: "Clients known to the authorization server. Deleting a client revokes all its connections.", defaultCollapsed: "yes", collapsible: "yes", children: _jsx("ul", { className: "divide-border-default divide-y", children: status.clients.map((client) => (_jsxs("li", { className: "flex items-center justify-between gap-3 py-2", children: [_jsxs("div", { className: "min-w-0 text-sm", children: [_jsx("div", { className: "truncate font-medium", children: client.clientName }), _jsxs("div", { className: "text-neutral-grey-50 truncate text-xs", children: [client.kind, " \u00B7 ", client.clientId] })] }), client.clientKey && (_jsx(DeleteButton, { label: `Delete ${client.clientName}`, title: "Delete client", onClick: () => void deleteClient(client.clientKey) }))] }, `${client.kind}:${client.clientId}`))) }) }))] }) }));
90
- if (showSettings && isAdmin) {
91
- return _jsx(McpAccessSettingsView, { onSaved: () => void load() });
92
- }
93
- return mainContent;
73
+ : "The MCP server is not enabled on this instance.", children: status.enabled && serverUrl ? (_jsxs("div", { className: "space-y-3 text-sm", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { className: "bg-neutral-grey-5 rounded px-2 py-1 break-all", "data-testid": "mcp-server-url", children: serverUrl }), _jsx(CopyButton, { textToCopy: serverUrl, iconOnly: true })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { className: "bg-neutral-grey-5 rounded px-2 py-1 break-all", children: claudeCommand }), _jsx(CopyButton, { textToCopy: claudeCommand, iconOnly: true })] }), _jsx("p", { className: "text-neutral-grey-50 text-xs", children: "Register the server under the name \"parhelia\" so tool names stay within Claude's limits. The client opens a browser to ask for your approval." })] })) : (_jsx("p", { className: "text-neutral-grey-50 text-sm", children: isAdmin ? (_jsx(Button, { size: "sm", variant: "link", className: "h-auto p-0", onClick: openServerSettings, "data-testid": "mcp-access-open-server-settings", children: "Set it up under System \u203A MCP Server." })) : ("Ask an administrator to enable it.") })) })), _jsx(Card, { icon: _jsx(KeyRound, { strokeWidth: 1 }), title: "Your connections", description: "MCP clients you allowed to act with your Sitecore permissions. Revoking stops them immediately, including agents they started.", children: _jsx(McpGrantList, { grants: grants, loading: loading, onRevoke: (grant) => void revoke(grant) }) })] }) }));
94
74
  }
95
75
  export default McpAccessPanel;
96
76
  //# sourceMappingURL=McpAccessPanel.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"McpAccessPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/McpAccessPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"McpAccessPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/McpAccessPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { McpGrant } from "../../services/mcpAccessService";
2
+ /** The MCP connections (grants) of the "MCP Access" and "MCP Server" panels, each with a revoke button. */
3
+ export declare function McpGrantList({ grants, loading, showUserName, onRevoke, }: {
4
+ grants: McpGrant[];
5
+ loading: boolean;
6
+ showUserName?: boolean;
7
+ onRevoke: (grant: McpGrant) => void;
8
+ }): import("react").JSX.Element;
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { DeleteButton } from "../../../components/ui/delete-button";
3
+ const scopeLabels = {
4
+ "parhelia:read": "Read",
5
+ "parhelia:write": "Change",
6
+ "parhelia:agents": "Agents",
7
+ };
8
+ function formatDate(value) {
9
+ if (!value)
10
+ return "never";
11
+ const date = new Date(value);
12
+ return Number.isNaN(date.getTime()) ? value : date.toLocaleString();
13
+ }
14
+ /** The MCP connections (grants) of the "MCP Access" and "MCP Server" panels, each with a revoke button. */
15
+ export function McpGrantList({ grants, loading, showUserName = false, onRevoke, }) {
16
+ if (grants.length === 0 && !loading) {
17
+ return (_jsx("p", { className: "text-neutral-grey-50 text-sm", "data-testid": "mcp-grants-empty", children: "No connected clients." }));
18
+ }
19
+ return (_jsx("ul", { className: "divide-border-default divide-y", "data-testid": "mcp-grants", children: grants.map((grant) => (_jsxs("li", { className: "flex items-center justify-between gap-3 py-2", "data-testid": "mcp-grant", children: [_jsxs("div", { className: "min-w-0 text-sm", children: [_jsx("div", { className: "truncate font-medium", children: grant.clientName }), _jsxs("div", { className: "text-neutral-grey-50 truncate text-xs", children: [grant.scopes.map((scope) => scopeLabels[scope] ?? scope).join(", "), grant.askBeforeWrites ? " · asks before changes" : "", showUserName ? ` · ${grant.userName}` : "", ` · last used ${formatDate(grant.lastUsedAt)}`] })] }), _jsx(DeleteButton, { label: `Revoke ${grant.clientName}`, title: "Revoke", onClick: () => onRevoke(grant), "data-testid": "mcp-grant-revoke" })] }, grant.grantId))) }));
20
+ }
21
+ //# sourceMappingURL=McpGrantList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpGrantList.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/McpGrantList.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AAGpE,MAAM,WAAW,GAA2B;IAC1C,eAAe,EAAE,MAAM;IACvB,gBAAgB,EAAE,QAAQ;IAC1B,iBAAiB,EAAE,QAAQ;CAC5B,CAAC;AAEF,SAAS,UAAU,CAAC,KAAqB;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7B,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;AACtE,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,OAAO,EACP,YAAY,GAAG,KAAK,EACpB,QAAQ,GAMT;IACC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,OAAO,CACL,YAAG,SAAS,EAAC,8BAA8B,iBAAa,kBAAkB,sCAEtE,CACL,CAAC;IACJ,CAAC;IAED,OAAO,CACL,aAAI,SAAS,EAAC,gCAAgC,iBAAa,YAAY,YACpE,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CACrB,cAAwB,SAAS,EAAC,8CAA8C,iBAAa,WAAW,aACtG,eAAK,SAAS,EAAC,iBAAiB,aAC9B,cAAK,SAAS,EAAC,sBAAsB,YAAE,KAAK,CAAC,UAAU,GAAO,EAC9D,eAAK,SAAS,EAAC,uCAAuC,aACnD,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EACnE,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,EACrD,YAAY,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,EAC1C,gBAAgB,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,IAC3C,IACF,EACN,KAAC,YAAY,IACX,KAAK,EAAE,UAAU,KAAK,CAAC,UAAU,EAAE,EACnC,KAAK,EAAC,QAAQ,EACd,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,iBAClB,kBAAkB,GAC9B,KAfK,KAAK,CAAC,OAAO,CAgBjB,CACN,CAAC,GACC,CACN,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Administrator "MCP Server" settings (System group): whether the server runs, its configuration
3
+ * problems, every user's connections, the registered clients, and a settings form for the
4
+ * MCP Access settings item. Users connect their own clients in the personal "MCP Access" panel.
5
+ */
6
+ export declare function McpServerPanel(): import("react").JSX.Element;
7
+ export default McpServerPanel;
@@ -0,0 +1,84 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useMemo, useState } from "react";
3
+ import { AlertCircle, KeyRound, RefreshCw, ServerCog, Settings } from "lucide-react";
4
+ import { Button } from "../../../components/ui/button";
5
+ import { Alert, AlertDescription } from "../../../components/ui/alert";
6
+ import { CopyButton } from "../../../components/ui/copy-button";
7
+ import { DeleteButton } from "../../../components/ui/delete-button";
8
+ import { mcpAccessService, } from "../../services/mcpAccessService";
9
+ import { SettingsCard as Card } from "../SettingsCard";
10
+ import { SettingsPanelLayout } from "../SettingsPanelLayout";
11
+ import { useRequiredSettingsHeaderActions } from "../SettingsHeaderActionsContext";
12
+ import { McpAccessSettingsView } from "./McpAccessSettingsView";
13
+ import { McpGrantList } from "./McpGrantList";
14
+ const getErrorMessage = (error, fallback) => error instanceof Error ? error.message : fallback;
15
+ /**
16
+ * Administrator "MCP Server" settings (System group): whether the server runs, its configuration
17
+ * problems, every user's connections, the registered clients, and a settings form for the
18
+ * MCP Access settings item. Users connect their own clients in the personal "MCP Access" panel.
19
+ */
20
+ export function McpServerPanel() {
21
+ const setSettingsHeaderActions = useRequiredSettingsHeaderActions();
22
+ const [status, setStatus] = useState(null);
23
+ const [grants, setGrants] = useState([]);
24
+ const [loading, setLoading] = useState(true);
25
+ const [error, setError] = useState(null);
26
+ const [showSettings, setShowSettings] = useState(false);
27
+ // The status only carries the settings item for administrators, and only when the item exists.
28
+ const canEditSettings = !!status?.settingsItemId;
29
+ const load = useCallback(async () => {
30
+ setLoading(true);
31
+ setError(null);
32
+ try {
33
+ const [nextStatus, nextGrants] = await Promise.all([
34
+ mcpAccessService.getStatus(),
35
+ mcpAccessService.getGrants(true),
36
+ ]);
37
+ setStatus(nextStatus);
38
+ setGrants(nextGrants);
39
+ }
40
+ catch (e) {
41
+ setError(getErrorMessage(e, "Failed to load the MCP server status"));
42
+ }
43
+ finally {
44
+ setLoading(false);
45
+ }
46
+ }, []);
47
+ useEffect(() => {
48
+ void load();
49
+ }, [load]);
50
+ const headerActions = useMemo(() => (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Button, { size: "sm", variant: "outline", onClick: () => void load(), disabled: loading, title: "Refresh", children: _jsx(RefreshCw, { className: loading ? "h-4 w-4 animate-spin" : "h-4 w-4", strokeWidth: 1 }) }), canEditSettings && (_jsxs(Button, { size: "sm", variant: "outline", onClick: () => setShowSettings((value) => !value), "data-testid": "mcp-server-settings-toggle", children: [_jsx(Settings, { className: "mr-1 h-4 w-4", strokeWidth: 1 }), showSettings ? "Back to overview" : "Settings"] }))] })), [canEditSettings, load, loading, showSettings]);
51
+ useEffect(() => {
52
+ if (!setSettingsHeaderActions)
53
+ return;
54
+ setSettingsHeaderActions(headerActions);
55
+ return () => setSettingsHeaderActions(null);
56
+ }, [headerActions, setSettingsHeaderActions]);
57
+ const revoke = async (grant) => {
58
+ try {
59
+ await mcpAccessService.revokeGrant(grant.grantId);
60
+ await load();
61
+ }
62
+ catch (e) {
63
+ setError(getErrorMessage(e, "Failed to revoke the connection"));
64
+ }
65
+ };
66
+ const deleteClient = async (clientKey) => {
67
+ try {
68
+ await mcpAccessService.deleteClient(clientKey);
69
+ await load();
70
+ }
71
+ catch (e) {
72
+ setError(getErrorMessage(e, "Failed to delete the client"));
73
+ }
74
+ };
75
+ if (showSettings && canEditSettings) {
76
+ return _jsx(McpAccessSettingsView, { onSaved: () => void load() });
77
+ }
78
+ const serverUrl = status?.serverUrl ?? "";
79
+ return (_jsx(SettingsPanelLayout, { children: _jsxs("div", { className: "space-y-4", "data-testid": "mcp-server-panel", children: [error && (_jsxs("div", { className: "border-feedback-red bg-feedback-red-light text-feedback-red flex items-start gap-2 rounded border p-3 text-sm", children: [_jsx(AlertCircle, { className: "mt-0.5 h-4 w-4 shrink-0", strokeWidth: 1 }), _jsx("span", { children: error })] })), status && (_jsxs(Card, { icon: _jsx(ServerCog, { strokeWidth: 1 }), title: "Server", description: status.enabled
80
+ ? "The MCP server is running. Users connect their clients under Personal › MCP Access."
81
+ : "The MCP server is switched off on this instance.", children: [status.enabled && serverUrl ? (_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [_jsx("code", { className: "bg-neutral-grey-5 rounded px-2 py-1 break-all", "data-testid": "mcp-server-url", children: serverUrl }), _jsx(CopyButton, { textToCopy: serverUrl, iconOnly: true })] })) : (canEditSettings && (_jsx("p", { className: "text-neutral-grey-50 text-sm", children: _jsx(Button, { size: "sm", variant: "link", className: "h-auto p-0", onClick: () => setShowSettings(true), children: "Open the settings to enable it." }) }))), status.problems.length > 0 && (_jsx(Alert, { variant: "warning", className: "mt-3", "data-testid": "mcp-server-problems", children: _jsx(AlertDescription, { children: _jsx("ul", { className: "list-disc space-y-1 pl-4", children: status.problems.map((problem) => (_jsx("li", { children: problem }, problem))) }) }) }))] })), _jsx(Card, { icon: _jsx(KeyRound, { strokeWidth: 1 }), title: "All connections", description: "MCP clients that users allowed to act with their Sitecore permissions. Revoking stops a client immediately, including agents it started.", children: _jsx(McpGrantList, { grants: grants, loading: loading, showUserName: true, onRevoke: (grant) => void revoke(grant) }) }), status?.clients && status.clients.length > 0 && (_jsx(Card, { icon: _jsx(Settings, { strokeWidth: 1 }), title: "Registered clients", description: "Clients known to the authorization server. Deleting a client revokes all its connections.", defaultCollapsed: "yes", collapsible: "yes", children: _jsx("ul", { className: "divide-border-default divide-y", children: status.clients.map((client) => (_jsxs("li", { className: "flex items-center justify-between gap-3 py-2", children: [_jsxs("div", { className: "min-w-0 text-sm", children: [_jsx("div", { className: "truncate font-medium", children: client.clientName }), _jsxs("div", { className: "text-neutral-grey-50 truncate text-xs", children: [client.kind, " \u00B7 ", client.clientId] })] }), client.clientKey && (_jsx(DeleteButton, { label: `Delete ${client.clientName}`, title: "Delete client", onClick: () => void deleteClient(client.clientKey) }))] }, `${client.kind}:${client.clientId}`))) }) }))] }) }));
82
+ }
83
+ export default McpServerPanel;
84
+ //# sourceMappingURL=McpServerPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"McpServerPanel.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/McpServerPanel.tsx"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  export { ProvidersPanel } from "./ProvidersPanel";
7
7
  export { McpToolsPanel } from "./McpToolsPanel";
8
8
  export { McpAccessPanel } from "./McpAccessPanel";
9
+ export { McpServerPanel } from "./McpServerPanel";
9
10
  export { ModelsPanel } from "./ModelsPanel";
10
11
  export { AgentsPanel } from "./AgentsPanel";
11
12
  export { JavaScriptToolsPanel } from "./JavaScriptToolsPanel";
@@ -6,6 +6,7 @@
6
6
  export { ProvidersPanel } from "./ProvidersPanel";
7
7
  export { McpToolsPanel } from "./McpToolsPanel";
8
8
  export { McpAccessPanel } from "./McpAccessPanel";
9
+ export { McpServerPanel } from "./McpServerPanel";
9
10
  export { ModelsPanel } from "./ModelsPanel";
10
11
  export { AgentsPanel } from "./AgentsPanel";
11
12
  export { JavaScriptToolsPanel } from "./JavaScriptToolsPanel";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/editor/settings/panels/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,8BAA8B,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * "How much is this page used?" — GA4 metrics for the current item, site and language, plus
3
+ * Search Console when configured. Every number shows its definition and window; "no data" is
4
+ * never shown as zero.
5
+ */
6
+ export declare function PagePerformance(): import("react").JSX.Element | null;