@stigmer/react 3.12.9 → 3.14.0-dev.20260910084630
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/cursor-accounts/CursorAccountsConsole.d.ts +3 -2
- package/cursor-accounts/CursorAccountsConsole.d.ts.map +1 -1
- package/cursor-accounts/CursorAccountsConsole.js +3 -2
- package/cursor-accounts/CursorAccountsConsole.js.map +1 -1
- package/cursor-accounts/MemberCoverageTable.d.ts +11 -3
- package/cursor-accounts/MemberCoverageTable.d.ts.map +1 -1
- package/cursor-accounts/MemberCoverageTable.js +70 -42
- package/cursor-accounts/MemberCoverageTable.js.map +1 -1
- package/cursor-accounts/MemberKeysPanel.d.ts.map +1 -1
- package/cursor-accounts/MemberKeysPanel.js +4 -1
- package/cursor-accounts/MemberKeysPanel.js.map +1 -1
- package/internal/ResizableSplit.d.ts +1 -1
- package/package.json +4 -4
- package/provider-standing/useProviderStanding.d.ts +1 -1
- package/provider-standing/useProviderStanding.js +1 -1
- package/sidebar/SettingsSidebar.d.ts.map +1 -1
- package/sidebar/SettingsSidebar.js +3 -3
- package/sidebar/SettingsSidebar.js.map +1 -1
- package/sidebar/WorkspaceSidebar.d.ts +1 -1
- package/sidebar/WorkspaceSidebar.d.ts.map +1 -1
- package/sidebar/WorkspaceSidebar.js +19 -15
- package/sidebar/WorkspaceSidebar.js.map +1 -1
- package/sidebar/chrome.d.ts +21 -7
- package/sidebar/chrome.d.ts.map +1 -1
- package/sidebar/chrome.js +25 -7
- package/sidebar/chrome.js.map +1 -1
- package/src/cursor-accounts/CursorAccountsConsole.tsx +3 -2
- package/src/cursor-accounts/MemberCoverageTable.tsx +222 -200
- package/src/cursor-accounts/MemberKeysPanel.tsx +25 -1
- package/src/cursor-accounts/__tests__/CursorAccountsConsole.test.tsx +64 -8
- package/src/cursor-accounts/__tests__/MemberCoverageTable.layout.test.tsx +212 -0
- package/src/internal/ResizableSplit.tsx +1 -1
- package/src/provider-standing/useProviderStanding.ts +1 -1
- package/src/sidebar/SettingsSidebar.tsx +11 -5
- package/src/sidebar/WorkspaceSidebar.tsx +75 -67
- package/src/sidebar/__tests__/SettingsSidebar.test.tsx +6 -2
- package/src/sidebar/chrome.tsx +29 -15
- package/src/workflow/__tests__/WorkflowExecutionViewer.reconciliation.test.tsx +11 -9
- package/src/workflow/__tests__/WorkflowTaskThread.test.tsx +54 -2
- package/src/workflow/thread/WorkflowTaskThread.tsx +47 -22
- package/styles.css +1 -1
- package/workflow/thread/WorkflowTaskThread.js +34 -11
- package/workflow/thread/WorkflowTaskThread.js.map +1 -1
|
@@ -8,7 +8,7 @@ import { recentActivityStatusBadge } from "../activity/entry-status-badge.js";
|
|
|
8
8
|
import { UNSTYLED_LIST } from "../internal/element-resets.js";
|
|
9
9
|
import { ScrollArea } from "../internal/scroll-area.js";
|
|
10
10
|
import { Tooltip, TooltipProvider, TooltipTrigger, TooltipContent, } from "../internal/tooltip.js";
|
|
11
|
-
import { SidebarChrome, SidebarSeparator, navRowClassName } from "./chrome.js";
|
|
11
|
+
import { SidebarChrome, SidebarSeparator, navRowClassName, sectionLabelClassName, } from "./chrome.js";
|
|
12
12
|
/**
|
|
13
13
|
* The console's workspace-zone sidebar: org switcher, primary navigation
|
|
14
14
|
* (New Session / Dashboard / Conversations / Library), time-bucketed
|
|
@@ -22,7 +22,7 @@ import { SidebarChrome, SidebarSeparator, navRowClassName } from "./chrome.js";
|
|
|
22
22
|
* from the product because it *is* the product (stigmer/stigmer#317).
|
|
23
23
|
*
|
|
24
24
|
* Layout note: the sidebar fills its container's height and defines no
|
|
25
|
-
* width — the console's app shell owns the `w-
|
|
25
|
+
* width — the console's app shell owns the `w-60` (240px) column.
|
|
26
26
|
*
|
|
27
27
|
* @example
|
|
28
28
|
* ```tsx
|
|
@@ -39,20 +39,20 @@ import { SidebarChrome, SidebarSeparator, navRowClassName } from "./chrome.js";
|
|
|
39
39
|
export function WorkspaceSidebar({ activeNav = null, renderLink, recentActivity, activeSessionId = null, activeExecutionId = null, renderEntryAccessory, conversationsBadgeCount, footer, isOpen = true, onCollapse, onOrgChanged, now, }) {
|
|
40
40
|
const { entries, isLoading = false, error = null } = recentActivity;
|
|
41
41
|
const groups = useMemo(() => groupRecentActivityByTime(entries, now), [entries, now]);
|
|
42
|
-
return (_jsxs(SidebarChrome, { ariaLabel: "Main navigation", isOpen: isOpen, onCollapse: onCollapse, onOrgChanged: onOrgChanged, footer: footer, children: [_jsx(PrimaryNavRow, { id: "new-session", href: "/", label: "New Session", icon: Plus, active: activeNav === "new-session", renderLink: renderLink }), _jsx(PrimaryNavRow, { id: "dashboard", href: "/dashboard", label: "Dashboard", icon: LayoutDashboard, active: activeNav === "dashboard", renderLink: renderLink }), _jsx(PrimaryNavRow, { id: "conversations", href: "/conversations", label: "Conversations", icon: MessagesSquare, active: activeNav === "conversations", renderLink: renderLink, accessory: conversationsBadgeCount !== undefined && conversationsBadgeCount > 0 ? (_jsx(WantsHumanBadge, { count: conversationsBadgeCount })) : null }), _jsx(PrimaryNavRow, { id: "library", href: "/library", label: "Library", icon: Library, active: activeNav === "library", renderLink: renderLink }), _jsx(SidebarSeparator, {}), _jsx(ScrollArea, { className: "stg:flex-1", children: _jsxs("div", { className: "stg:p-3", children: [_jsx("p", { className:
|
|
42
|
+
return (_jsxs(SidebarChrome, { ariaLabel: "Main navigation", isOpen: isOpen, onCollapse: onCollapse, onOrgChanged: onOrgChanged, footer: footer, children: [_jsxs("div", { className: "stg:flex stg:flex-none stg:flex-col stg:gap-0.5 stg:px-3 stg:py-1", children: [_jsx(PrimaryNavRow, { id: "new-session", href: "/", label: "New Session", icon: Plus, active: activeNav === "new-session", renderLink: renderLink }), _jsx(PrimaryNavRow, { id: "dashboard", href: "/dashboard", label: "Dashboard", icon: LayoutDashboard, active: activeNav === "dashboard", renderLink: renderLink }), _jsx(PrimaryNavRow, { id: "conversations", href: "/conversations", label: "Conversations", icon: MessagesSquare, active: activeNav === "conversations", renderLink: renderLink, accessory: conversationsBadgeCount !== undefined && conversationsBadgeCount > 0 ? (_jsx(WantsHumanBadge, { count: conversationsBadgeCount })) : null }), _jsx(PrimaryNavRow, { id: "library", href: "/library", label: "Library", icon: Library, active: activeNav === "library", renderLink: renderLink })] }), _jsx(SidebarSeparator, {}), _jsx(ScrollArea, { className: "stg:flex-1", children: _jsxs("div", { className: "stg:p-3", children: [_jsx("p", { className: `${sectionLabelClassName()} stg:mb-2`, children: "Recents" }), isLoading ? (_jsx(RecentsSkeletons, {})) : error ? (_jsx(RecentsError, { message: error.message })) : groups.length === 0 ? (_jsx(RecentsEmptyState, {})) : (_jsx(ActivityGroupList, { groups: groups, activeSessionId: activeSessionId, activeExecutionId: activeExecutionId, renderLink: renderLink, renderEntryAccessory: renderEntryAccessory, now: now }))] }) })] }));
|
|
43
43
|
}
|
|
44
44
|
// ---------------------------------------------------------------------------
|
|
45
45
|
// Internals
|
|
46
46
|
// ---------------------------------------------------------------------------
|
|
47
47
|
function PrimaryNavRow({ id, href, label, icon: Icon, active, renderLink, accessory = null, }) {
|
|
48
|
-
return
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
48
|
+
return renderLink({
|
|
49
|
+
id,
|
|
50
|
+
href,
|
|
51
|
+
active,
|
|
52
|
+
className: navRowClassName(active),
|
|
53
|
+
"aria-current": active ? "page" : undefined,
|
|
54
|
+
children: (_jsxs(_Fragment, { children: [_jsx(Icon, { className: "stg:size-4 stg:shrink-0" }), label, accessory] })),
|
|
55
|
+
});
|
|
56
56
|
}
|
|
57
57
|
/**
|
|
58
58
|
* The Conversations row's count pill: how many conversations want a
|
|
@@ -67,7 +67,7 @@ function WantsHumanBadge({ count }) {
|
|
|
67
67
|
: `${count} conversations need a human` })] }));
|
|
68
68
|
}
|
|
69
69
|
function ActivityGroupList({ groups, activeSessionId, activeExecutionId, renderLink, renderEntryAccessory, now, }) {
|
|
70
|
-
return (_jsx(TooltipProvider, { children: _jsx("div", { className: "stg:space-y-4", children: groups.map((group) => (_jsxs("div", { children: [_jsx("p", { className: "stg:text-sidebar-muted-foreground stg:mb-1 stg:px-2 stg:text-[10px] stg:font-medium stg:tracking-
|
|
70
|
+
return (_jsx(TooltipProvider, { children: _jsx("div", { className: "stg:space-y-4", children: groups.map((group) => (_jsxs("div", { children: [_jsx("p", { className: "stg:text-sidebar-muted-foreground stg:mb-1 stg:px-2 stg:text-[10px] stg:font-medium stg:tracking-wide stg:uppercase", children: group.label }), _jsx("ul", { className: `${UNSTYLED_LIST} stg:space-y-0.5`, role: "list", children: group.entries.map((entry) => (_jsx(ActivityEntry, { entry: entry, activeSessionId: activeSessionId, activeExecutionId: activeExecutionId, renderLink: renderLink, renderEntryAccessory: renderEntryAccessory, now: now }, entry.id))) })] }, group.label))) }) }));
|
|
71
71
|
}
|
|
72
72
|
const ActivityEntry = memo(function ActivityEntry({ entry, activeSessionId, activeExecutionId, renderLink, renderEntryAccessory, now, }) {
|
|
73
73
|
const isSession = entry.type === "session";
|
|
@@ -90,11 +90,15 @@ const ActivityEntry = memo(function ActivityEntry({ entry, activeSessionId, acti
|
|
|
90
90
|
});
|
|
91
91
|
return (_jsx("li", { children: _jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { render: row }), _jsx(TooltipContent, { side: "right", sideOffset: 12, children: entry.subject })] }) }));
|
|
92
92
|
});
|
|
93
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Recents rows are denser than primary nav: 12px text, top-aligned icon.
|
|
95
|
+
* Same state grammar as `navRowClassName` — muted at rest, accent fill
|
|
96
|
+
* when active, constant weight so activation never shifts text width.
|
|
97
|
+
*/
|
|
94
98
|
function cnActivityRow(active) {
|
|
95
99
|
return active
|
|
96
|
-
? "stg:flex stg:items-start stg:gap-2 stg:rounded-
|
|
97
|
-
: "stg:flex stg:items-start stg:gap-2 stg:rounded-
|
|
100
|
+
? "stg:flex stg:items-start stg:gap-2 stg:rounded-md stg:px-2 stg:py-1 stg:text-xs stg:transition-colors stg:bg-sidebar-accent stg:text-sidebar-accent-foreground"
|
|
101
|
+
: "stg:flex stg:items-start stg:gap-2 stg:rounded-md stg:px-2 stg:py-1 stg:text-xs stg:transition-colors stg:text-sidebar-muted-foreground stg:hover:bg-sidebar-accent stg:hover:text-sidebar-accent-foreground";
|
|
98
102
|
}
|
|
99
103
|
function RecentsSkeletons() {
|
|
100
104
|
return (_jsx("div", { className: "stg:space-y-2 stg:px-2", "aria-busy": "true", "aria-label": "Loading sessions", children: Array.from({ length: 5 }, (_, i) => (_jsx("div", { className: "stg:bg-sidebar-muted stg:h-5 stg:animate-pulse stg:rounded", style: { width: `${70 + Math.sin(i * 1.5) * 20}%` } }, i))) }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSidebar.js","sourceRoot":"","sources":["../../src/sidebar/WorkspaceSidebar.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,OAAO,EAAkB,MAAM,OAAO,CAAC;AACtD,OAAO,EACL,IAAI,EACJ,eAAe,EACf,OAAO,EACP,aAAa,EACb,cAAc,EACd,QAAQ,GAET,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,OAAO,EACP,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,wBAAwB,CAAC;AAChC,OAAO,
|
|
1
|
+
{"version":3,"file":"WorkspaceSidebar.js","sourceRoot":"","sources":["../../src/sidebar/WorkspaceSidebar.tsx"],"names":[],"mappings":"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"}
|
package/sidebar/chrome.d.ts
CHANGED
|
@@ -35,13 +35,27 @@ export declare function SidebarChrome({ ariaLabel, isOpen, onCollapse, onOrgChan
|
|
|
35
35
|
/** Hairline separator between sidebar sections. */
|
|
36
36
|
export declare function SidebarSeparator(): import("react/jsx-runtime").JSX.Element;
|
|
37
37
|
/**
|
|
38
|
-
* The one nav-row class recipe both sidebars share:
|
|
39
|
-
* 16px icons (sized by callers), 8px/
|
|
38
|
+
* The one nav-row class recipe both sidebars share: 13px/16px regular
|
|
39
|
+
* labels, 16px icons (sized by callers), 8px/4px padding — 24px rows.
|
|
40
|
+
* The explicit `leading-4` is load-bearing: without it the inherited
|
|
41
|
+
* line-height (~1.5) pads every row to ~28px, and across a full column
|
|
42
|
+
* of rows that difference alone decides whether the sidebar breathes.
|
|
43
|
+
* 24px also stays exactly at the WCAG 2.5.8 minimum pointer-target size.
|
|
40
44
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
45
|
+
* Resting rows are muted so the navigation recedes and the content leads;
|
|
46
|
+
* the active row carries the accent fill, hover brightens to the accent
|
|
47
|
+
* foreground. Font weight is constant across states — state is expressed
|
|
48
|
+
* through color and fill only, so activating a row never shifts its text
|
|
49
|
+
* width. The muted-on-sidebar pairing is held to WCAG AA by the theme's
|
|
50
|
+
* contrast contract (sdk/theme/src/contract/pairs.ts) in every preset.
|
|
43
51
|
*/
|
|
44
|
-
export declare function navRowClassName(active: boolean
|
|
45
|
-
|
|
46
|
-
|
|
52
|
+
export declare function navRowClassName(active: boolean): string;
|
|
53
|
+
/**
|
|
54
|
+
* The section-label recipe both sidebars share (settings group labels,
|
|
55
|
+
* the Recents heading): 11px/16px medium uppercase in the muted sidebar
|
|
56
|
+
* tone. Spacing around a label stays with the caller — it is a layout
|
|
57
|
+
* concern; this recipe owns only the typography, so the two sidebars
|
|
58
|
+
* cannot drift.
|
|
59
|
+
*/
|
|
60
|
+
export declare function sectionLabelClassName(): string;
|
|
47
61
|
//# sourceMappingURL=chrome.d.ts.map
|
package/sidebar/chrome.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/sidebar/chrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;
|
|
1
|
+
{"version":3,"file":"chrome.d.ts","sourceRoot":"","sources":["../../src/sidebar/chrome.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2DAA2D,CAAC;AAe9F,2DAA2D;AAC3D,MAAM,WAAW,kBAAkB;IACjC,gDAAgD;IAChD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACjC,6CAA6C;IAC7C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,IAAI,CAAC;IACpD;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,EAC5B,SAAS,EACT,MAAa,EACb,UAAU,EACV,YAAY,EACZ,MAAM,EACN,QAAQ,GACT,EAAE,kBAAkB,2CAuCpB;AAED,mDAAmD;AACnD,wBAAgB,gBAAgB,4CAM/B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAOvD;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAE9C"}
|
package/sidebar/chrome.js
CHANGED
|
@@ -19,15 +19,33 @@ export function SidebarSeparator() {
|
|
|
19
19
|
return (_jsx("div", { className: "stg:px-3 stg:py-1", children: _jsx("div", { className: "stg:bg-sidebar-border stg:h-px" }) }));
|
|
20
20
|
}
|
|
21
21
|
/**
|
|
22
|
-
* The one nav-row class recipe both sidebars share:
|
|
23
|
-
* 16px icons (sized by callers), 8px/
|
|
22
|
+
* The one nav-row class recipe both sidebars share: 13px/16px regular
|
|
23
|
+
* labels, 16px icons (sized by callers), 8px/4px padding — 24px rows.
|
|
24
|
+
* The explicit `leading-4` is load-bearing: without it the inherited
|
|
25
|
+
* line-height (~1.5) pads every row to ~28px, and across a full column
|
|
26
|
+
* of rows that difference alone decides whether the sidebar breathes.
|
|
27
|
+
* 24px also stays exactly at the WCAG 2.5.8 minimum pointer-target size.
|
|
24
28
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
29
|
+
* Resting rows are muted so the navigation recedes and the content leads;
|
|
30
|
+
* the active row carries the accent fill, hover brightens to the accent
|
|
31
|
+
* foreground. Font weight is constant across states — state is expressed
|
|
32
|
+
* through color and fill only, so activating a row never shifts its text
|
|
33
|
+
* width. The muted-on-sidebar pairing is held to WCAG AA by the theme's
|
|
34
|
+
* contrast contract (sdk/theme/src/contract/pairs.ts) in every preset.
|
|
27
35
|
*/
|
|
28
|
-
export function navRowClassName(active
|
|
29
|
-
return cn("stg:flex stg:items-center stg:gap-2 stg:rounded-
|
|
36
|
+
export function navRowClassName(active) {
|
|
37
|
+
return cn("stg:flex stg:items-center stg:gap-2 stg:rounded-md stg:px-2 stg:py-1 stg:text-[13px] stg:leading-4 stg:transition-colors", active
|
|
30
38
|
? "stg:bg-sidebar-accent stg:text-sidebar-accent-foreground"
|
|
31
|
-
:
|
|
39
|
+
: "stg:text-sidebar-muted-foreground stg:hover:bg-sidebar-accent stg:hover:text-sidebar-accent-foreground");
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The section-label recipe both sidebars share (settings group labels,
|
|
43
|
+
* the Recents heading): 11px/16px medium uppercase in the muted sidebar
|
|
44
|
+
* tone. Spacing around a label stays with the caller — it is a layout
|
|
45
|
+
* concern; this recipe owns only the typography, so the two sidebars
|
|
46
|
+
* cannot drift.
|
|
47
|
+
*/
|
|
48
|
+
export function sectionLabelClassName() {
|
|
49
|
+
return "stg:text-sidebar-muted-foreground stg:px-2 stg:text-[11px] stg:leading-4 stg:font-medium stg:tracking-wide stg:uppercase";
|
|
32
50
|
}
|
|
33
51
|
//# sourceMappingURL=chrome.js.map
|
package/sidebar/chrome.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/sidebar/chrome.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"chrome.js","sourceRoot":"","sources":["../../src/sidebar/chrome.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,KAAK,EAAkB,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAwC7D;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,SAAS,EACT,MAAM,GAAG,IAAI,EACb,UAAU,EACV,YAAY,EACZ,MAAM,EACN,QAAQ,GACW;IACnB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAC;IACtB,OAAO,CACL,eACE,EAAE,EAAE,KAAK,gBACG,SAAS,EACrB,SAAS,EAAC,6EAA6E,aAGvF,eAAK,SAAS,EAAC,qEAAqE,aAClF,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,UAAU,mBACJ,MAAM,mBACN,KAAK,gBACT,kBAAkB,EAC7B,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,qFAAqF,EACrF,sEAAsE,EACtE,sFAAsF,EACtF,6FAA6F,CAC9F,YAED,KAAC,SAAS,IAAC,SAAS,EAAC,YAAY,GAAG,GAC7B,EACT,cAAK,SAAS,EAAC,wBAAwB,YACrC,KAAC,WAAW,IAAC,YAAY,EAAE,YAAY,GAAI,GACvC,IACF,EAEL,QAAQ,EAGT,cAAK,SAAS,EAAC,wEAAwE,YACpF,MAAM,GACH,IACF,CACP,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,gBAAgB;IAC9B,OAAO,CACL,cAAK,SAAS,EAAC,mBAAmB,YAChC,cAAK,SAAS,EAAC,gCAAgC,GAAG,GAC9C,CACP,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,eAAe,CAAC,MAAe;IAC7C,OAAO,EAAE,CACP,0HAA0H,EAC1H,MAAM;QACJ,CAAC,CAAC,0DAA0D;QAC5D,CAAC,CAAC,wGAAwG,CAC7G,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,0HAA0H,CAAC;AACpI,CAAC"}
|
|
@@ -44,8 +44,9 @@ type Flow =
|
|
|
44
44
|
* categories (on team with key / on team without key / key held but
|
|
45
45
|
* not on team), each row carrying Cursor's pool-usage percentages
|
|
46
46
|
* (first-party / API) and cycle spend dollars (included / on-demand).
|
|
47
|
-
*
|
|
48
|
-
* invite link when the operator has configured one
|
|
47
|
+
* The off-team group header offers one-click copy of the account's
|
|
48
|
+
* Cursor team invite link when the operator has configured one (one
|
|
49
|
+
* button for the group — the link is account-level).
|
|
49
50
|
*
|
|
50
51
|
* Requires `can_manage_cursor_accounts` on `platform:stigmer` —
|
|
51
52
|
* non-operators see the designed access notice. Key material never
|