@consciousclouds/operator-shell 0.1.0 → 0.2.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.
Files changed (93) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/README.md +80 -31
  3. package/dist/chief/ChiefDrawer.d.ts +34 -2
  4. package/dist/chief/ChiefDrawer.d.ts.map +1 -1
  5. package/dist/chief/ChiefDrawer.js +43 -30
  6. package/dist/chief/ChiefDrawer.js.map +1 -1
  7. package/dist/chief/ChiefHeaderBar.d.ts +19 -0
  8. package/dist/chief/ChiefHeaderBar.d.ts.map +1 -0
  9. package/dist/chief/ChiefHeaderBar.js +7 -0
  10. package/dist/chief/ChiefHeaderBar.js.map +1 -0
  11. package/dist/chief/ChiefMarkdown.d.ts +12 -0
  12. package/dist/chief/ChiefMarkdown.d.ts.map +1 -0
  13. package/dist/chief/ChiefMarkdown.js +95 -0
  14. package/dist/chief/ChiefMarkdown.js.map +1 -0
  15. package/dist/chief/ChiefPanel.d.ts +44 -1
  16. package/dist/chief/ChiefPanel.d.ts.map +1 -1
  17. package/dist/chief/ChiefPanel.js +79 -29
  18. package/dist/chief/ChiefPanel.js.map +1 -1
  19. package/dist/chief/ChiefRegion.d.ts +44 -1
  20. package/dist/chief/ChiefRegion.d.ts.map +1 -1
  21. package/dist/chief/ChiefRegion.js +63 -27
  22. package/dist/chief/ChiefRegion.js.map +1 -1
  23. package/dist/chief/ChiefSession.d.ts +46 -10
  24. package/dist/chief/ChiefSession.d.ts.map +1 -1
  25. package/dist/chief/ChiefSession.js +252 -6
  26. package/dist/chief/ChiefSession.js.map +1 -1
  27. package/dist/chief/ChiefTrigger.d.ts +26 -0
  28. package/dist/chief/ChiefTrigger.d.ts.map +1 -0
  29. package/dist/chief/ChiefTrigger.js +21 -0
  30. package/dist/chief/ChiefTrigger.js.map +1 -0
  31. package/dist/chief/conversation-adapter.d.ts +70 -0
  32. package/dist/chief/conversation-adapter.d.ts.map +1 -0
  33. package/dist/chief/conversation-adapter.js +26 -0
  34. package/dist/chief/conversation-adapter.js.map +1 -0
  35. package/dist/chief/conversation-identity.d.ts +48 -0
  36. package/dist/chief/conversation-identity.d.ts.map +1 -0
  37. package/dist/chief/conversation-identity.js +100 -0
  38. package/dist/chief/conversation-identity.js.map +1 -0
  39. package/dist/chief/personality-display.d.ts +56 -0
  40. package/dist/chief/personality-display.d.ts.map +1 -0
  41. package/dist/chief/personality-display.js +52 -0
  42. package/dist/chief/personality-display.js.map +1 -0
  43. package/dist/chief/turn-adapter.d.ts +45 -0
  44. package/dist/chief/turn-adapter.d.ts.map +1 -1
  45. package/dist/chief/use-chief-turn.d.ts +127 -14
  46. package/dist/chief/use-chief-turn.d.ts.map +1 -1
  47. package/dist/chief/use-chief-turn.js +284 -28
  48. package/dist/chief/use-chief-turn.js.map +1 -1
  49. package/dist/chief/use-controlled-open.d.ts +2 -0
  50. package/dist/chief/use-controlled-open.d.ts.map +1 -0
  51. package/dist/chief/use-controlled-open.js +27 -0
  52. package/dist/chief/use-controlled-open.js.map +1 -0
  53. package/dist/chief/use-smooth-stream.d.ts +8 -0
  54. package/dist/chief/use-smooth-stream.d.ts.map +1 -0
  55. package/dist/chief/use-smooth-stream.js +128 -0
  56. package/dist/chief/use-smooth-stream.js.map +1 -0
  57. package/dist/flavor/types.d.ts +36 -21
  58. package/dist/flavor/types.d.ts.map +1 -1
  59. package/dist/frame/ComposedWorkspace.d.ts +39 -0
  60. package/dist/frame/ComposedWorkspace.d.ts.map +1 -0
  61. package/dist/frame/ComposedWorkspace.js +94 -0
  62. package/dist/frame/ComposedWorkspace.js.map +1 -0
  63. package/dist/frame/OperatorShell.d.ts +115 -13
  64. package/dist/frame/OperatorShell.d.ts.map +1 -1
  65. package/dist/frame/OperatorShell.js +200 -12
  66. package/dist/frame/OperatorShell.js.map +1 -1
  67. package/dist/guard/permissions.d.ts +2 -2
  68. package/dist/guard/permissions.js +2 -2
  69. package/dist/header/OperatorHeader.d.ts +15 -2
  70. package/dist/header/OperatorHeader.d.ts.map +1 -1
  71. package/dist/header/OperatorHeader.js +3 -3
  72. package/dist/header/OperatorHeader.js.map +1 -1
  73. package/dist/icons/registry.d.ts +7 -1
  74. package/dist/icons/registry.d.ts.map +1 -1
  75. package/dist/icons/registry.js +31 -2
  76. package/dist/icons/registry.js.map +1 -1
  77. package/dist/index.d.ts +24 -11
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +43 -17
  80. package/dist/index.js.map +1 -1
  81. package/dist/sidebar/OperatorSidebar.d.ts +16 -1
  82. package/dist/sidebar/OperatorSidebar.d.ts.map +1 -1
  83. package/dist/sidebar/OperatorSidebar.js +13 -10
  84. package/dist/sidebar/OperatorSidebar.js.map +1 -1
  85. package/dist/workspace/FormWorkspace.d.ts +2 -3
  86. package/dist/workspace/FormWorkspace.d.ts.map +1 -1
  87. package/dist/workspace/FormWorkspace.js.map +1 -1
  88. package/dist/workspace/session-adapter.d.ts +95 -0
  89. package/dist/workspace/session-adapter.d.ts.map +1 -0
  90. package/dist/workspace/session-adapter.js +29 -0
  91. package/dist/workspace/session-adapter.js.map +1 -0
  92. package/package.json +10 -5
  93. package/styles/source.css +9 -0
@@ -2,11 +2,20 @@
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  /**
4
4
  * OperatorShell — the operator-console frame (the one experience abstraction
5
- * of an operator surface): full-width header, icon-collapsible sidebar, main
6
- * content, and the AI Region (Chief — rail or drawer, resolved from
7
- * flavor.chief.placement). Composed from the open shadcn
8
- * registry's sidebar patterns (sidebar-16's header-above-sidebar geometry,
9
- * sidebar-07's icon-collapsible rail) over @consciousclouds/ui primitives.
5
+ * of an operator surface): full-width header, icon-collapsible sidebar, the
6
+ * workspace (framed or edge-to-edge), and the AI Region (Chief — push,
7
+ * overlay, or rail).
8
+ *
9
+ * The neutral FRAME (the sidebar/inset layout skeleton — sidebar-16's
10
+ * header-above-sidebar geometry, sidebar-07's icon-collapsible rail — plus the
11
+ * assistant-panel placement mechanics, the main-region reflow, and the
12
+ * workspace chrome) is now delegated to @consciousclouds/shell-primitive's
13
+ * ShellFrame (mechanism). This shell owns the MEANING: the operator header +
14
+ * sidebar + command palette, the permission/inspector context, and Chief as
15
+ * the assistant slot (the primitive knows nothing of Chief). Chief's OPTIONALITY
16
+ * lives at the primitive level — ShellFrame's assistant slot is optional, which
17
+ * is what the future Business / Consumer shells frame around; an operator
18
+ * surface always has Chief, so `turnAdapter` stays required here.
10
19
  *
11
20
  * The shell owns the experience; the product injects meaning:
12
21
  * - `flavor` — the declarative surface manifest (nav, product context,
@@ -18,18 +27,33 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
18
27
  * - `inspectorViews` — the detail views for the Flavor's declared
19
28
  * inspector entity-kind references (the shell owns the
20
29
  * panel; the product owns the views),
21
- * - `icons` / `profile` — vocabulary and identity slot fillings.
30
+ * - `icons` / `profile` — vocabulary and identity slot fillings,
31
+ * - `personalityDisplay` — Chief display identity from the Factory
32
+ * personality record (D-Q2 seam: displayName literal;
33
+ * icon/accent as REFERENCES resolved through the icon
34
+ * registry and the Token System),
35
+ * - `chrome` — layout philosophy (DEFAULTS-AND-OVERRIDES: the SDK ships
36
+ * sensible defaults — push Chief + framed workspace — and
37
+ * the consuming app overrides at its composition root; a
38
+ * composition concern, deliberately NOT Flavor data).
22
39
  *
23
- * The frame owns the command palette's open state so the header's search
24
- * button and the ⌘K keybinding open the one shell-owned instance.
40
+ * The frame owns the command palette's open state (the header search button
41
+ * and ⌘K open the one instance) and the Chief panel's open state (the header
42
+ * ChiefTrigger, ⌘J, Esc, outside-click, and the scrim all drive the SAME
43
+ * value — one open state, whoever moves it).
25
44
  *
26
45
  * Brand and theme arrive from the layers below (BrandProvider /
27
46
  * ThemeProvider mounted by the app) — the shell only reads them.
28
47
  */
29
48
  import * as React from "react";
30
49
  import { useBrand } from "@consciousclouds/brand";
31
- import { SidebarInset, SidebarProvider } from "@consciousclouds/ui";
32
- import { ChiefRegion } from "../chief/ChiefRegion.js";
50
+ import { ShellFrame } from "@consciousclouds/shell-primitive";
51
+ import { PageTransition, Skeleton, cn } from "@consciousclouds/ui";
52
+ import { ComposedWorkspace } from "./ComposedWorkspace.js";
53
+ import { ChiefRegion, resolveChiefBehavior, } from "../chief/ChiefRegion.js";
54
+ import { ChiefTrigger } from "../chief/ChiefTrigger.js";
55
+ import { adoptConversationId, conversationStorageKey, getOrMintConversationId, } from "../chief/conversation-identity.js";
56
+ import { resolveChiefTitle, resolvePersonalityAccent, resolvePersonalityIcon, } from "../chief/personality-display.js";
33
57
  import { PermissionProvider } from "../guard/PermissionProvider.js";
34
58
  import { unknownPermissions } from "../guard/permissions.js";
35
59
  import { OperatorHeader } from "../header/OperatorHeader.js";
@@ -37,8 +61,112 @@ import { resolveIconFamily } from "../icons/registry.js";
37
61
  import { InspectorProvider } from "../inspector/InspectorProvider.js";
38
62
  import { CommandPalette } from "../palette/CommandPalette.js";
39
63
  import { OperatorSidebar } from "../sidebar/OperatorSidebar.js";
40
- export function OperatorShell({ flavor, turnAdapter, resolvePermission = unknownPermissions, runCommand, inspectorViews, searchSources, icons, profile, searchPlaceholder, workspaceSwitcher, children, }) {
64
+ export function OperatorShell({ flavor, turnAdapter, resolvePermission = unknownPermissions, runCommand, inspectorViews, searchSources, icons, profile, notifications, searchPlaceholder, personalityDisplay, chrome, workspaceSwitcher, canvasComponentMap, sessionAdapter, conversationAdapter, children, }) {
41
65
  const [paletteOpen, setPaletteOpen] = React.useState(false);
66
+ const [chiefOpen, setChiefOpen] = React.useState(false);
67
+ // The compose→center binder's state (shell-owned, NEVER a CCU-local useState):
68
+ // the workspace HANDLE — the canvas Chief composed this turn plus its provenance
69
+ // (composer/intent/conversation), plus (when the canvas arrived by REOPENING a
70
+ // kept composition) the kept identity. useChiefTurn surfaces canvas+meta via
71
+ // onComposed; openSession below sets all three. Null = show the product's page.
72
+ const [composed, setComposed] = React.useState(null);
73
+ // Center MOTION state — continuity, never decoration, and never simulated: 'composing'
74
+ // is driven by the REAL tool_start of a compose-class tool; 'opening' begins the moment
75
+ // a session row is clicked (instant response; the re-projection resolves behind it).
76
+ const [centerBusy, setCenterBusy] = React.useState(null);
77
+ // The Workspace-Sessions region's state (slice 5) — the kept compositions the
78
+ // injected SessionAdapter lists. Shell-owned like the composed handle; without
79
+ // an adapter it stays empty and the region never renders.
80
+ const [sessions, setSessions] = React.useState([]);
81
+ const refreshSessions = React.useCallback(async () => {
82
+ if (!sessionAdapter)
83
+ return;
84
+ try {
85
+ setSessions(await sessionAdapter.listCompositions());
86
+ }
87
+ catch {
88
+ /* the list is chrome; fail quiet */
89
+ }
90
+ }, [sessionAdapter]);
91
+ // Reopen a kept composition: the adapter RE-PROJECTS a fresh render (the
92
+ // deterministic composer read named by the stored intent) — restore is meaning
93
+ // re-derived, never persisted pixels — and the shell mounts it as the composed
94
+ // workspace, already kept. An EXPLICIT open (the operator clicked the row) also
95
+ // ADOPTS the session's owning conversation — "a conversation owns a workspace"
96
+ // (Canvas OS §4), so rejoining the workspace rejoins its thread and the next
97
+ // spoken turn records there. The mount-time hard-refresh restore does NOT adopt:
98
+ // it re-projects the operator's place without hijacking the current conversation.
99
+ const openSession = React.useCallback(async (workspaceId, opts) => {
100
+ if (!sessionAdapter)
101
+ return;
102
+ setCenterBusy("opening"); // instant response the moment the row is clicked — no hesitation
103
+ try {
104
+ const opened = await sessionAdapter.openComposition(workspaceId);
105
+ setComposed({
106
+ canvas: opened.canvas,
107
+ meta: {
108
+ composer: opened.source.composer,
109
+ intent: opened.source.intent,
110
+ conversationId: opened.conversationId ?? "",
111
+ // The workspace ANCHOR survives reopen — the canonical turn id the
112
+ // Session Binder restores to (previously dropped here; a defect).
113
+ ...(opened.source.turnId ? { turnId: opened.source.turnId } : {}),
114
+ },
115
+ kept: { workspaceId: opened.workspaceId, name: opened.name },
116
+ });
117
+ if (opts?.adoptConversation && opened.conversationId) {
118
+ adoptConversationId(conversationStorageKey(flavor.chief?.personalityRef), opened.conversationId);
119
+ }
120
+ }
121
+ catch (err) {
122
+ // An unopenable session must not take the shell down; the row stays listed.
123
+ console.warn("[operator-shell] openComposition failed:", err);
124
+ }
125
+ finally {
126
+ setCenterBusy(null);
127
+ }
128
+ }, [sessionAdapter, flavor.chief?.personalityRef]);
129
+ // HARD-REFRESH RESTORE (slice 5): on mount, load the sessions list and reopen
130
+ // a kept composition — it IS the operator's place ("walk up and your place is
131
+ // still there"). COHERENCE RULE (Canvas OS §4, "a conversation owns a
132
+ // workspace"): prefer the most recent workspace OWNED BY the active
133
+ // conversation (the thread localStorage restored), so the center and the
134
+ // continuing thread come back as one pair. Only when the active conversation
135
+ // owns no kept workspace does the globally most recent one stand in — without
136
+ // adopting its conversation (the operator's thread continuity wins; the full
137
+ // thread↔workspace reconciliation is the drawer-polish slice's read-seam
138
+ // hydration, not a rule to bake here). Everything re-derives through the adapter.
139
+ React.useEffect(() => {
140
+ if (!sessionAdapter)
141
+ return;
142
+ let cancelled = false;
143
+ (async () => {
144
+ try {
145
+ const list = await sessionAdapter.listCompositions();
146
+ if (cancelled)
147
+ return;
148
+ setSessions(list);
149
+ if (list.length === 0)
150
+ return;
151
+ const activeConversation = getOrMintConversationId(conversationStorageKey(flavor.chief?.personalityRef));
152
+ const owned = activeConversation
153
+ ? list.find((s) => s.conversationId === activeConversation)
154
+ : undefined;
155
+ await openSession((owned ?? list[0]).workspaceId);
156
+ }
157
+ catch {
158
+ /* no restore on a failed list — the product page stands */
159
+ }
160
+ })();
161
+ return () => {
162
+ cancelled = true;
163
+ };
164
+ // eslint-disable-next-line react-hooks/exhaustive-deps
165
+ }, [sessionAdapter]);
166
+ // The Chief trigger element, handed to the panel via getTriggerElement:
167
+ // excluded from outside-click dismissal; receives focus back on close.
168
+ const chiefTriggerRef = React.useRef(null);
169
+ const getChiefTrigger = React.useCallback(() => chiefTriggerRef.current, []);
42
170
  // The Brand's icon-family declaration (inert data from the layer below),
43
171
  // READ-AND-DEFAULTED here: the shell ships exactly one family (lucide, per
44
172
  // the license allowlist), so any other declaration resolves to it —
@@ -46,9 +174,69 @@ export function OperatorShell({ flavor, turnAdapter, resolvePermission = unknown
46
174
  // this same read starts selecting between built-in vocabularies.
47
175
  const brand = useBrand();
48
176
  const iconFamily = resolveIconFamily(brand.iconFamily);
177
+ // The chrome config — defaults-and-overrides (layout philosophy is a
178
+ // composition concern; the Flavor's legacy `placement` is honored as a
179
+ // hint only when the chrome declares nothing). These map onto the neutral
180
+ // ShellFrame placement contract: chiefBehavior → assistantBehavior,
181
+ // chiefWidth → assistantWidth, chiefOpen → assistantOpen.
182
+ const chiefBehavior = resolveChiefBehavior(chrome?.chiefBehavior, flavor.chief?.placement);
183
+ const chiefWidth = chrome?.chiefWidth ?? 420;
184
+ const workspaceChrome = chrome?.workspaceChrome ?? "framed";
185
+ const framed = workspaceChrome === "framed";
186
+ // Chief display identity (D-Q2): displayName literal; icon/accent as
187
+ // REFERENCES resolved through the icon registry + the Token System.
188
+ const chiefTitle = resolveChiefTitle(personalityDisplay, flavor.chief?.title);
189
+ const ChiefIcon = resolvePersonalityIcon(personalityDisplay, icons, iconFamily);
190
+ const chiefAccent = resolvePersonalityAccent(personalityDisplay?.accentRef);
49
191
  return (
50
192
  // The guard context: pages below read the SAME injected resolution the
51
193
  // sidebar and palette gate on (usePermission / RouteGuard, contracts §5).
52
- _jsx(PermissionProvider, { resolver: resolvePermission, children: _jsx(InspectorProvider, { entityKinds: flavor.inspector?.entityKinds, views: inspectorViews, children: _jsxs(SidebarProvider, { className: "h-svh flex-col overflow-hidden", style: { "--header-height": "3.5rem" }, children: [_jsx(OperatorHeader, { profile: profile, searchPlaceholder: searchPlaceholder, onSearchOpen: () => setPaletteOpen(true) }), _jsx(CommandPalette, { flavor: flavor, resolvePermission: resolvePermission, icons: icons, iconFamily: iconFamily, runCommand: runCommand, searchSources: searchSources, open: paletteOpen, onOpenChange: setPaletteOpen }), _jsxs("div", { className: "flex min-h-0 flex-1", children: [_jsx(OperatorSidebar, { flavor: flavor, resolvePermission: resolvePermission, icons: icons, iconFamily: iconFamily, workspaceSwitcher: workspaceSwitcher }), _jsxs(SidebarInset, { className: "min-h-0 flex-row overflow-hidden", children: [_jsx("div", { className: "min-w-0 flex-1 overflow-y-auto p-4 lg:p-6", children: children }), _jsx(ChiefRegion, { flavor: flavor, adapter: turnAdapter })] })] })] }) }) }));
194
+ // The neutral FRAME (layout skeleton + assistant-panel placement + reflow +
195
+ // workspace chrome) is delegated to @consciousclouds/shell-primitive; this
196
+ // shell keeps the MEANING — the guard/inspector context, the operator
197
+ // header + sidebar + command palette, and Chief as the ASSISTANT SLOT
198
+ // (with its trigger composed into the header).
199
+ _jsx(PermissionProvider, { resolver: resolvePermission, children: _jsx(InspectorProvider, { entityKinds: flavor.inspector?.entityKinds, views: inspectorViews, children: _jsx(ShellFrame, { assistantBehavior: chiefBehavior, assistantWidth: chiefWidth, assistantOpen: chiefOpen, workspaceChrome: workspaceChrome, header: _jsx(OperatorHeader, { profile: profile, notifications: notifications, searchPlaceholder: searchPlaceholder, onSearchOpen: () => setPaletteOpen(true), chiefTrigger: _jsx(ChiefTrigger, { ref: chiefTriggerRef, open: chiefOpen, onToggle: () => setChiefOpen((o) => !o), label: chiefTitle, icon: ChiefIcon, accentColor: chiefAccent,
200
+ // The rail is always visible at xl+ — no trigger needed
201
+ // there; below xl the rail's overlay fallback still wants it.
202
+ className: cn(chiefBehavior === "rail" && "xl:hidden") }) }), overlays: _jsx(CommandPalette, { flavor: flavor, resolvePermission: resolvePermission, icons: icons, iconFamily: iconFamily, runCommand: runCommand, searchSources: searchSources, open: paletteOpen, onOpenChange: setPaletteOpen }), sidebar: _jsx(OperatorSidebar, { flavor: flavor, resolvePermission: resolvePermission, icons: icons, iconFamily: iconFamily, workspaceSwitcher: workspaceSwitcher }),
203
+ // The AI Region — Chief is the operator surface's contribution to
204
+ // the assistant slot. Behavior/width/open come from the chrome
205
+ // config (mapped above); the turn flow is identical in every
206
+ // behavior. The primitive reflows the workspace around it.
207
+ assistant: _jsx(ChiefRegion, { flavor: flavor, adapter: turnAdapter, conversationAdapter: conversationAdapter,
208
+ // Kept workspaces (the drawer's Workspaces tab): a row click is an
209
+ // EXPLICIT open — it re-projects the workspace to the center AND
210
+ // rejoins its owning conversation (mint-or-adopt, slice 2a).
211
+ workspaces: sessionAdapter
212
+ ? {
213
+ items: sessions,
214
+ activeId: composed?.kept?.workspaceId,
215
+ onOpen: (id) => void openSession(id, { adoptConversation: true }),
216
+ }
217
+ : undefined, behavior: chiefBehavior, width: chiefWidth, variant: framed ? "card" : "flat", open: chiefOpen, onOpenChange: setChiefOpen, getTriggerElement: getChiefTrigger, personalityDisplay: personalityDisplay, icons: icons, iconFamily: iconFamily,
218
+ // The compose→center seam: a composed CanvasDefinition + its provenance
219
+ // are lifted to the shell, which mounts the canvas in the CENTER below
220
+ // (never inside the panel) and arms the Keep-composition gesture.
221
+ onComposed: (canvas, meta) => {
222
+ setComposed({ canvas, meta });
223
+ setCenterBusy(null);
224
+ }, onComposeActivity: (phase) => setCenterBusy((b) => phase === "composing"
225
+ ? "composing"
226
+ : b === "composing"
227
+ ? null
228
+ : b) }), children: centerBusy ? (
229
+ // The composing/opening interstitial — motion synchronized to REAL execution
230
+ // (a compose-class tool_start → the resolved canvas, or click → re-projection).
231
+ // Skeleton frames breathe with the motion tokens; never a simulated spinner.
232
+ _jsxs("div", { className: "flex h-full min-h-0 flex-col gap-3", "data-center-busy": centerBusy, children: [_jsx("span", { className: "animate-pulse text-xs font-medium uppercase tracking-wide text-muted-foreground", children: centerBusy === "composing"
233
+ ? "Composing workspace…"
234
+ : "Opening workspace…" }), _jsxs("div", { className: "grid gap-3 md:grid-cols-3", children: [_jsx(Skeleton, { className: "h-24" }), _jsx(Skeleton, { className: "h-24" }), _jsx(Skeleton, { className: "h-24" })] }), _jsx(Skeleton, { className: "h-40" }), _jsx(Skeleton, { className: "min-h-0 flex-1" })] })) : composed && canvasComponentMap ? (
235
+ // Keyed by workspace identity: switching sessions (or a fresh composition)
236
+ // crossfades through the shared PageTransition — the environment EVOLVES;
237
+ // the page never "changes".
238
+ _jsx(PageTransition, { transitionKey: composed.kept?.workspaceId ??
239
+ composed.canvas.correlationId ??
240
+ "composed", className: "min-h-full", children: _jsx(ComposedWorkspace, { canvas: composed.canvas, componentMap: canvasComponentMap, meta: composed.meta, sessionAdapter: sessionAdapter, kept: composed.kept, onKept: () => refreshSessions(), onDismiss: () => setComposed(null) }) })) : (children) }) }) }));
53
241
  }
54
242
  //# sourceMappingURL=OperatorShell.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorShell.js","sourceRoot":"","sources":["../../src/frame/OperatorShell.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AA2DhE,MAAM,UAAU,aAAa,CAAC,EAC5B,MAAM,EACN,WAAW,EACX,iBAAiB,GAAG,kBAAkB,EACtC,UAAU,EACV,cAAc,EACd,aAAa,EACb,KAAK,EACL,OAAO,EACP,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,GACW;IACnB,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAE5D,yEAAyE;IACzE,2EAA2E;IAC3E,oEAAoE;IACpE,0EAA0E;IAC1E,iEAAiE;IACjE,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAEvD,OAAO;IACL,uEAAuE;IACvE,0EAA0E;IAC1E,KAAC,kBAAkB,IAAC,QAAQ,EAAE,iBAAiB,YAC7C,KAAC,iBAAiB,IAChB,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAC1C,KAAK,EAAE,cAAc,YAErB,MAAC,eAAe,IACd,SAAS,EAAC,gCAAgC,EAC1C,KAAK,EAAE,EAAE,iBAAiB,EAAE,QAAQ,EAAyB,aAE7D,KAAC,cAAc,IACb,OAAO,EAAE,OAAO,EAChB,iBAAiB,EAAE,iBAAiB,EACpC,YAAY,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,GACxC,EACF,KAAC,cAAc,IACb,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,aAAa,EAC5B,IAAI,EAAE,WAAW,EACjB,YAAY,EAAE,cAAc,GAC5B,EACF,eAAK,SAAS,EAAC,qBAAqB,aAClC,KAAC,eAAe,IACd,MAAM,EAAE,MAAM,EACd,iBAAiB,EAAE,iBAAiB,EACpC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,iBAAiB,EAAE,iBAAiB,GACpC,EACF,MAAC,YAAY,IAAC,SAAS,EAAC,kCAAkC,aACxD,cAAK,SAAS,EAAC,2CAA2C,YAAE,QAAQ,GAAO,EAG3E,KAAC,WAAW,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAI,IACxC,IACX,IACU,GACA,GACD,CACtB,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"OperatorShell.js","sourceRoot":"","sources":["../../src/frame/OperatorShell.tsx"],"names":[],"mappings":"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"}
@@ -30,8 +30,8 @@ export type SyncPermissionResolver = (permission: string) => PermissionDecision;
30
30
  */
31
31
  export type PermissionResolver = (permission: string) => PermissionDecision | Promise<PermissionDecision>;
32
32
  /**
33
- * The permissive default for dev-open postures (CCU passes this in M1). It
34
- * exercises the seam without inventing governance the product doesn't have.
33
+ * The permissive resolver for dev-open postures. It exercises the seam
34
+ * without inventing governance the product doesn't have.
35
35
  */
36
36
  export declare const allowAllPermissions: SyncPermissionResolver;
37
37
  /**
@@ -19,8 +19,8 @@
19
19
  * usePermission / usePermissionDecisions / RouteGuard) lives beside it.
20
20
  */
21
21
  /**
22
- * The permissive default for dev-open postures (CCU passes this in M1). It
23
- * exercises the seam without inventing governance the product doesn't have.
22
+ * The permissive resolver for dev-open postures. It exercises the seam
23
+ * without inventing governance the product doesn't have.
24
24
  */
25
25
  export const allowAllPermissions = () => "allowed";
26
26
  /**
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * OperatorHeader — the top chrome: brand slot · sidebar trigger · search
3
- * (the command-palette trigger) · environment switcher · notifications ·
3
+ * (the command-palette trigger) · environment switcher · notifications slot ·
4
4
  * theme toggle · profile slot. The brand block renders through the Brand
5
5
  * Platform (BrandLogo + useBrand — the shell never bakes an image or a mark
6
6
  * string); the environment chrome renders through the published
@@ -20,6 +20,19 @@ export interface OperatorHeaderProps {
20
20
  searchPlaceholder?: string;
21
21
  /** Opens the command palette (wired by the frame). Absent ⇒ inert button. */
22
22
  onSearchOpen?: () => void;
23
+ /**
24
+ * The AI Region's header trigger (the frame mounts a ChiefTrigger here —
25
+ * the click twin of ⌘J). A slot, so custom composition roots may replace
26
+ * or omit it.
27
+ */
28
+ chiefTrigger?: React.ReactNode;
29
+ /**
30
+ * Product-injected notifications affordance (bell button, unread badge,
31
+ * dropdown — whatever the product's notification model is). A SLOT, not a
32
+ * built-in: the shell has no notification source, so absent ⇒ nothing
33
+ * renders — a missing affordance beats a fake one.
34
+ */
35
+ notifications?: React.ReactNode;
23
36
  }
24
- export declare function OperatorHeader({ profile, searchPlaceholder, onSearchOpen, }: OperatorHeaderProps): import("react/jsx-runtime").JSX.Element;
37
+ export declare function OperatorHeader({ profile, searchPlaceholder, onSearchOpen, chiefTrigger, notifications, }: OperatorHeaderProps): import("react/jsx-runtime").JSX.Element;
25
38
  //# sourceMappingURL=OperatorHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorHeader.d.ts","sourceRoot":"","sources":["../../src/header/OperatorHeader.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAUpC,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,iBAA6B,EAC7B,YAAY,GACb,EAAE,mBAAmB,2CAwDrB"}
1
+ {"version":3,"file":"OperatorHeader.d.ts","sourceRoot":"","sources":["../../src/header/OperatorHeader.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,KAAK,KAAK,MAAM,OAAO,CAAC;AAUpC,MAAM,WAAW,mBAAmB;IAClC,6EAA6E;IAC7E,OAAO,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,oEAAoE;IACpE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC/B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;CACjC;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,iBAA6B,EAC7B,YAAY,EACZ,YAAY,EACZ,aAAa,GACd,EAAE,mBAAmB,2CAyDrB"}
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Bell, Search } from "lucide-react";
3
+ import { Search } from "lucide-react";
4
4
  import { BrandLogo, useBrand } from "@consciousclouds/brand";
5
5
  import { Button, Separator, SidebarTrigger, cn } from "@consciousclouds/ui";
6
6
  import { EnvironmentSwitcher } from "./EnvironmentSwitcher.js";
7
7
  import { OperatorProfileMenu } from "./OperatorProfileMenu.js";
8
8
  import { ThemeToggle } from "./ThemeToggle.js";
9
- export function OperatorHeader({ profile, searchPlaceholder = "Search…", onSearchOpen, }) {
9
+ export function OperatorHeader({ profile, searchPlaceholder = "Search…", onSearchOpen, chiefTrigger, notifications, }) {
10
10
  const brand = useBrand();
11
- return (_jsx("header", { className: "sticky top-0 z-50 flex h-(--header-height) w-full shrink-0 items-center border-b border-border bg-background", children: _jsxs("div", { className: "flex w-full items-center gap-2 px-3 sm:px-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-md bg-primary text-sm font-bold text-primary-foreground lowercase", children: [_jsx(BrandLogo, { role: "icon", mode: "light", className: "max-h-full max-w-full dark:hidden" }), _jsx(BrandLogo, { role: "icon", mode: "dark", className: "hidden max-h-full max-w-full dark:block" })] }), _jsxs("div", { className: "leading-tight", children: [_jsx("div", { className: "text-sm font-semibold", children: brand.name }), brand.sub && _jsx("div", { className: "text-[11px] text-muted-foreground", children: brand.sub })] })] }), _jsx(Separator, { orientation: "vertical", className: "mx-1 hidden data-[orientation=vertical]:h-5 md:block" }), _jsx(SidebarTrigger, { className: "text-muted-foreground" }), _jsxs(Button, { type: "button", variant: "outline", onClick: onSearchOpen, className: cn("relative ml-2 hidden h-8 max-w-md flex-1 justify-start border-input bg-muted/50 px-2.5 font-normal text-muted-foreground shadow-none hover:bg-muted/80 md:inline-flex"), children: [_jsx(Search, { className: "size-4" }), _jsx("span", { className: "truncate", children: searchPlaceholder }), _jsxs("kbd", { className: "pointer-events-none absolute top-1/2 right-2 hidden h-5 -translate-y-1/2 items-center gap-1 rounded border bg-background px-1.5 font-mono text-[10px] font-medium select-none sm:inline-flex", children: [_jsx("span", { className: "text-xs", children: "\u2318" }), "K"] })] }), _jsxs("div", { className: "ml-auto flex items-center gap-1", children: [_jsx(EnvironmentSwitcher, { className: "mr-1" }), _jsx(Button, { variant: "ghost", size: "icon", "aria-label": "Notifications", children: _jsx(Bell, { className: "size-4" }) }), _jsx(ThemeToggle, {}), profile ?? _jsx(OperatorProfileMenu, {})] })] }) }));
11
+ return (_jsx("header", { className: "sticky top-0 z-50 flex h-(--header-height) w-full shrink-0 items-center border-b border-border bg-background", children: _jsxs("div", { className: "flex w-full items-center gap-2 px-3 sm:px-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsxs("div", { className: "flex size-7 shrink-0 items-center justify-center overflow-hidden rounded-md bg-primary text-sm font-bold text-primary-foreground lowercase", children: [_jsx(BrandLogo, { role: "icon", mode: "light", className: "max-h-full max-w-full dark:hidden" }), _jsx(BrandLogo, { role: "icon", mode: "dark", className: "hidden max-h-full max-w-full dark:block" })] }), _jsxs("div", { className: "leading-tight", children: [_jsx("div", { className: "text-sm font-semibold", children: brand.name }), brand.sub && _jsx("div", { className: "text-[11px] text-muted-foreground", children: brand.sub })] })] }), _jsx(Separator, { orientation: "vertical", className: "mx-1 hidden data-[orientation=vertical]:h-5 md:block" }), _jsx(SidebarTrigger, { className: "text-muted-foreground" }), _jsxs(Button, { type: "button", variant: "outline", onClick: onSearchOpen, className: cn("relative ml-2 hidden h-8 max-w-md flex-1 justify-start border-input bg-muted/50 px-2.5 font-normal text-muted-foreground shadow-none hover:bg-muted/80 md:inline-flex"), children: [_jsx(Search, { className: "size-4" }), _jsx("span", { className: "truncate", children: searchPlaceholder }), _jsxs("kbd", { className: "pointer-events-none absolute top-1/2 right-2 hidden h-5 -translate-y-1/2 items-center gap-1 rounded border bg-background px-1.5 font-mono text-[10px] font-medium select-none sm:inline-flex", children: [_jsx("span", { className: "text-xs", children: "\u2318" }), "K"] })] }), _jsxs("div", { className: "ml-auto flex items-center gap-1", children: [_jsx(EnvironmentSwitcher, { className: "mr-1" }), chiefTrigger, notifications, _jsx(ThemeToggle, {}), profile ?? _jsx(OperatorProfileMenu, {})] })] }) }));
12
12
  }
13
13
  //# sourceMappingURL=OperatorHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OperatorHeader.js","sourceRoot":"","sources":["../../src/header/OperatorHeader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAkBb,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAE5C,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAW/C,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,iBAAiB,GAAG,SAAS,EAC7B,YAAY,GACQ;IACpB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CACL,iBAAQ,SAAS,EAAC,8GAA8G,YAC9H,eAAK,SAAS,EAAC,6CAA6C,aAK1D,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,4IAA4I,aACzJ,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,mCAAmC,GAAG,EACpF,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,yCAAyC,GAAG,IACrF,EACN,eAAK,SAAS,EAAC,eAAe,aAC5B,cAAK,SAAS,EAAC,uBAAuB,YAAE,KAAK,CAAC,IAAI,GAAO,EACxD,KAAK,CAAC,GAAG,IAAI,cAAK,SAAS,EAAC,mCAAmC,YAAE,KAAK,CAAC,GAAG,GAAO,IAC9E,IACF,EAEN,KAAC,SAAS,IACR,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,sDAAsD,GAChE,EACF,KAAC,cAAc,IAAC,SAAS,EAAC,uBAAuB,GAAG,EAGpD,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,EAAE,CACX,uKAAuK,CACxK,aAED,KAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,GAAG,EAC7B,eAAM,SAAS,EAAC,UAAU,YAAE,iBAAiB,GAAQ,EACrD,eAAK,SAAS,EAAC,8LAA8L,aAC3M,eAAM,SAAS,EAAC,SAAS,uBAAS,SAC9B,IACC,EAET,eAAK,SAAS,EAAC,iCAAiC,aAG9C,KAAC,mBAAmB,IAAC,SAAS,EAAC,MAAM,GAAG,EACxC,KAAC,MAAM,IAAC,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,MAAM,gBAAY,eAAe,YAC5D,KAAC,IAAI,IAAC,SAAS,EAAC,QAAQ,GAAG,GACpB,EACT,KAAC,WAAW,KAAG,EACd,OAAO,IAAI,KAAC,mBAAmB,KAAG,IAC/B,IACF,GACC,CACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"OperatorHeader.js","sourceRoot":"","sources":["../../src/header/OperatorHeader.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAkBb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAE5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAwB/C,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,iBAAiB,GAAG,SAAS,EAC7B,YAAY,EACZ,YAAY,EACZ,aAAa,GACO;IACpB,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IAEzB,OAAO,CACL,iBAAQ,SAAS,EAAC,8GAA8G,YAC9H,eAAK,SAAS,EAAC,6CAA6C,aAK1D,eAAK,SAAS,EAAC,yBAAyB,aACtC,eAAK,SAAS,EAAC,4IAA4I,aACzJ,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,OAAO,EAAC,SAAS,EAAC,mCAAmC,GAAG,EACpF,KAAC,SAAS,IAAC,IAAI,EAAC,MAAM,EAAC,IAAI,EAAC,MAAM,EAAC,SAAS,EAAC,yCAAyC,GAAG,IACrF,EACN,eAAK,SAAS,EAAC,eAAe,aAC5B,cAAK,SAAS,EAAC,uBAAuB,YAAE,KAAK,CAAC,IAAI,GAAO,EACxD,KAAK,CAAC,GAAG,IAAI,cAAK,SAAS,EAAC,mCAAmC,YAAE,KAAK,CAAC,GAAG,GAAO,IAC9E,IACF,EAEN,KAAC,SAAS,IACR,WAAW,EAAC,UAAU,EACtB,SAAS,EAAC,sDAAsD,GAChE,EACF,KAAC,cAAc,IAAC,SAAS,EAAC,uBAAuB,GAAG,EAGpD,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,EAAE,CACX,uKAAuK,CACxK,aAED,KAAC,MAAM,IAAC,SAAS,EAAC,QAAQ,GAAG,EAC7B,eAAM,SAAS,EAAC,UAAU,YAAE,iBAAiB,GAAQ,EACrD,eAAK,SAAS,EAAC,8LAA8L,aAC3M,eAAM,SAAS,EAAC,SAAS,uBAAS,SAC9B,IACC,EAET,eAAK,SAAS,EAAC,iCAAiC,aAG9C,KAAC,mBAAmB,IAAC,SAAS,EAAC,MAAM,GAAG,EAEvC,YAAY,EAEZ,aAAa,EACd,KAAC,WAAW,KAAG,EACd,OAAO,IAAI,KAAC,mBAAmB,KAAG,IAC/B,IACF,GACC,CACV,CAAC;AACJ,CAAC"}
@@ -44,7 +44,13 @@ export declare const UNKNOWN_ICON: LucideIcon;
44
44
  export declare const SHIPPED_ICON_FAMILY: "lucide";
45
45
  /** A family this shell can actually render (today: exactly the shipped one). */
46
46
  export type ShippedIconFamily = typeof SHIPPED_ICON_FAMILY;
47
- /** The built-in operator vocabulary (kebab-case Lucide names). */
47
+ /**
48
+ * The built-in operator vocabulary (kebab-case Lucide names) — the common
49
+ * nouns of an operator console (infra, data, security, files, observability),
50
+ * so most Flavors declare nav without registering extensions. Unknown names
51
+ * still fail soft to `UNKNOWN_ICON`; products extend/override via the
52
+ * `icons` prop.
53
+ */
48
54
  export declare const OPERATOR_ICONS: IconRegistry;
49
55
  export declare function resolveIconFamily(declared?: string): ShippedIconFamily;
50
56
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/icons/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EAQL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,UAAyB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAG,QAAiB,CAAC;AAErD,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,OAAO,mBAAmB,CAAC;AAE3D,kEAAkE;AAClE,eAAO,MAAM,cAAc,EAAE,YAO5B,CAAC;AAiBF,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAItE;AAOD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAGZ"}
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/icons/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EA+BL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAC;AAEtB,8DAA8D;AAC9D,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC;AAEhE;;;;GAIG;AACH,eAAO,MAAM,YAAY,EAAE,UAAyB,CAAC;AAErD;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAG,QAAiB,CAAC;AAErD,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GAAG,OAAO,mBAAmB,CAAC;AAE3D;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,YA8B5B,CAAC;AAiBF,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAItE;AAOD;;;;;GAKG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,YAAY,EACzB,MAAM,CAAC,EAAE,MAAM,GACd,UAAU,CAGZ"}
@@ -26,7 +26,7 @@
26
26
  * a second family ships, it registers here and the Brand declaration
27
27
  * starts selecting between built-in vocabularies.
28
28
  */
29
- import { Activity, BarChart3, Bot, CircleDashed, Home, Plug, Waypoints, } from "lucide-react";
29
+ import { Activity, BarChart3, Bell, Book, Bot, Boxes, ChartLine, CircleDashed, Cloud, Cpu, Database, FileText, Folder, GitBranch, Globe, Home, Key, Layers, Package, Plug, Route, Search, Server, Settings, Shield, Terminal, Users, Waypoints, Workflow, Wrench, } from "lucide-react";
30
30
  /**
31
31
  * The deterministic unknown-icon fallback — the guaranteed end of every icon
32
32
  * resolution. One neutral glyph (a dashed circle: visibly "unresolved",
@@ -40,14 +40,43 @@ export const UNKNOWN_ICON = CircleDashed;
40
40
  * it ships and defaults the rest here.
41
41
  */
42
42
  export const SHIPPED_ICON_FAMILY = "lucide";
43
- /** The built-in operator vocabulary (kebab-case Lucide names). */
43
+ /**
44
+ * The built-in operator vocabulary (kebab-case Lucide names) — the common
45
+ * nouns of an operator console (infra, data, security, files, observability),
46
+ * so most Flavors declare nav without registering extensions. Unknown names
47
+ * still fail soft to `UNKNOWN_ICON`; products extend/override via the
48
+ * `icons` prop.
49
+ */
44
50
  export const OPERATOR_ICONS = {
45
51
  home: Home,
46
52
  bot: Bot,
47
53
  plug: Plug,
54
+ wrench: Wrench,
55
+ boxes: Boxes,
48
56
  activity: Activity,
49
57
  "bar-chart-3": BarChart3,
58
+ route: Route,
50
59
  waypoints: Waypoints,
60
+ settings: Settings,
61
+ users: Users,
62
+ database: Database,
63
+ server: Server,
64
+ shield: Shield,
65
+ key: Key,
66
+ globe: Globe,
67
+ folder: Folder,
68
+ "file-text": FileText,
69
+ search: Search,
70
+ bell: Bell,
71
+ layers: Layers,
72
+ terminal: Terminal,
73
+ cpu: Cpu,
74
+ cloud: Cloud,
75
+ package: Package,
76
+ "git-branch": GitBranch,
77
+ workflow: Workflow,
78
+ book: Book,
79
+ "chart-line": ChartLine,
51
80
  };
52
81
  /** Built-in vocabularies by family — where a second shipped family registers. */
53
82
  const FAMILY_REGISTRIES = {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/icons/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,GAAG,EACH,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,SAAS,GAEV,MAAM,cAAc,CAAC;AAKtB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe,YAAY,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAiB,CAAC;AAKrD,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE,SAAS;CACrB,CAAC;AAEF,iFAAiF;AACjF,MAAM,iBAAiB,GAAsD;IAC3E,CAAC,mBAAmB,CAAC,EAAE,cAAc;CACtC,CAAC;AAEF;;;;;GAKG;AACH,uEAAuE;AACvE,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,GAAW,EAAW,EAAE,CACtD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC;QAClE,CAAC,CAAE,QAA8B;QACjC,CAAC,CAAC,mBAAmB,CAAC;AAC1B,CAAC;AAED,wCAAwC;AACxC,SAAS,MAAM,CAAC,QAAkC,EAAE,IAAY;IAC9D,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,UAAyB,EACzB,MAAe;IAEf,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/icons/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,EACL,QAAQ,EACR,SAAS,EACT,IAAI,EACJ,IAAI,EACJ,GAAG,EACH,KAAK,EACL,SAAS,EACT,YAAY,EACZ,KAAK,EACL,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,IAAI,EACJ,GAAG,EACH,MAAM,EACN,OAAO,EACP,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,KAAK,EACL,SAAS,EACT,QAAQ,EACR,MAAM,GAEP,MAAM,cAAc,CAAC;AAKtB;;;;GAIG;AACH,MAAM,CAAC,MAAM,YAAY,GAAe,YAAY,CAAC;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,QAAiB,CAAC;AAKrD;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,GAAG;IACR,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,aAAa,EAAE,SAAS;IACxB,KAAK,EAAE,KAAK;IACZ,SAAS,EAAE,SAAS;IACpB,QAAQ,EAAE,QAAQ;IAClB,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,MAAM,EAAE,MAAM;IACd,WAAW,EAAE,QAAQ;IACrB,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,IAAI;IACV,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,QAAQ;IAClB,GAAG,EAAE,GAAG;IACR,KAAK,EAAE,KAAK;IACZ,OAAO,EAAE,OAAO;IAChB,YAAY,EAAE,SAAS;IACvB,QAAQ,EAAE,QAAQ;IAClB,IAAI,EAAE,IAAI;IACV,YAAY,EAAE,SAAS;CACxB,CAAC;AAEF,iFAAiF;AACjF,MAAM,iBAAiB,GAAsD;IAC3E,CAAC,mBAAmB,CAAC,EAAE,cAAc;CACtC,CAAC;AAEF;;;;;GAKG;AACH,uEAAuE;AACvE,MAAM,MAAM,GAAG,CAAC,MAAc,EAAE,GAAW,EAAW,EAAE,CACtD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAEpD,MAAM,UAAU,iBAAiB,CAAC,QAAiB;IACjD,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC;QAClE,CAAC,CAAE,QAA8B;QACjC,CAAC,CAAC,mBAAmB,CAAC;AAC1B,CAAC;AAED,wCAAwC;AACxC,SAAS,MAAM,CAAC,QAAkC,EAAE,IAAY;IAC9D,OAAO,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,UAAyB,EACzB,MAAe;IAEf,MAAM,QAAQ,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9D,OAAO,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,YAAY,CAAC;AAC5E,CAAC"}
package/dist/index.d.ts CHANGED
@@ -14,7 +14,11 @@
14
14
  * docs/design/frontend-platform-doctrine.md.
15
15
  */
16
16
  export { OperatorShell } from "./frame/OperatorShell.js";
17
- export type { OperatorShellProps } from "./frame/OperatorShell.js";
17
+ export type { OperatorShellChrome, OperatorShellProps, } from "./frame/OperatorShell.js";
18
+ export { ComposedWorkspace } from "./frame/ComposedWorkspace.js";
19
+ export type { ComposedWorkspaceProps } from "./frame/ComposedWorkspace.js";
20
+ export type { SessionAdapter, KeepCompositionRequest, KeptComposition, KeptCompositionSummary, OpenedComposition, CompositionSource, } from "./workspace/session-adapter.js";
21
+ export type { ComposedMeta } from "./chief/use-chief-turn.js";
18
22
  export { OperatorHeader } from "./header/OperatorHeader.js";
19
23
  export type { OperatorHeaderProps } from "./header/OperatorHeader.js";
20
24
  export { OperatorProfileMenu } from "./header/OperatorProfileMenu.js";
@@ -30,43 +34,52 @@ export type { IconRegistry, ShippedIconFamily } from "./icons/registry.js";
30
34
  export { CommandPalette } from "./palette/CommandPalette.js";
31
35
  export type { CommandPaletteProps } from "./palette/CommandPalette.js";
32
36
  export { derivePaletteGroups } from "./palette/commands.js";
33
- export type { PaletteAction, PaletteCommand, PaletteGroup } from "./palette/commands.js";
37
+ export type { PaletteAction, PaletteCommand, PaletteGroup, } from "./palette/commands.js";
34
38
  export { isSearchResult, permittedSearchSources, querySearchSources, } from "./palette/search-sources.js";
35
39
  export type { SearchResult, SearchResultAction, SearchResultGroup, SearchSource, } from "./palette/search-sources.js";
36
40
  export { useSearchResults } from "./palette/use-search-results.js";
37
41
  export type { OperatorCommandGroup, OperatorCommandItem, OperatorFlavor, OperatorFlavorChief, OperatorFlavorInspector, OperatorFlavorProduct, OperatorFlavorWorkspace, OperatorNavGroup, OperatorNavItem, } from "./flavor/types.js";
38
- export { InspectorProvider, useInspector } from "./inspector/InspectorProvider.js";
42
+ export { InspectorProvider, useInspector, } from "./inspector/InspectorProvider.js";
39
43
  export type { InspectorProviderProps } from "./inspector/InspectorProvider.js";
40
44
  export { resolveInspectorView } from "./inspector/types.js";
41
45
  export type { InspectorApi, InspectorOpenRequest, InspectorView, InspectorViewProps, InspectorViewRegistry, } from "./inspector/types.js";
42
- export { ChiefRegion } from "./chief/ChiefRegion.js";
43
- export type { ChiefRegionProps } from "./chief/ChiefRegion.js";
46
+ export { ChiefRegion, resolveChiefBehavior } from "./chief/ChiefRegion.js";
47
+ export type { ChiefBehavior, ChiefRegionProps } from "./chief/ChiefRegion.js";
44
48
  export { ChiefPanel } from "./chief/ChiefPanel.js";
45
49
  export type { ChiefPanelProps } from "./chief/ChiefPanel.js";
46
50
  export { ChiefDrawer } from "./chief/ChiefDrawer.js";
47
51
  export type { ChiefDrawerProps } from "./chief/ChiefDrawer.js";
48
52
  export { ChiefSession } from "./chief/ChiefSession.js";
49
53
  export type { ChiefSessionProps } from "./chief/ChiefSession.js";
54
+ export { ChiefTrigger } from "./chief/ChiefTrigger.js";
55
+ export type { ChiefTriggerProps } from "./chief/ChiefTrigger.js";
56
+ export { ChiefMarkdown } from "./chief/ChiefMarkdown.js";
57
+ export type { ChiefMarkdownProps } from "./chief/ChiefMarkdown.js";
58
+ export { resolveChiefTitle, resolvePersonalityAccent, resolvePersonalityIcon, } from "./chief/personality-display.js";
59
+ export type { PersonalityDisplay } from "./chief/personality-display.js";
50
60
  export { useChiefTurn } from "./chief/use-chief-turn.js";
51
- export type { ChiefTurnMeta, ChiefTurnSession, UseChiefTurnOptions, } from "./chief/use-chief-turn.js";
61
+ export type { ChiefTurnEntry, ChiefTurnMeta, ChiefTurnSession, UseChiefTurnOptions, } from "./chief/use-chief-turn.js";
62
+ export { adoptConversationId, conversationStorageKey, getOrMintConversationId, subscribeConversationId, } from "./chief/conversation-identity.js";
63
+ export type { ConversationAdapter, ConversationThreadSummary, ConversationTurn, ConversationTurnOutcome, } from "./chief/conversation-adapter.js";
64
+ export type { ChiefWorkspacesRegion } from "./chief/ChiefSession.js";
52
65
  export { CHIEF_SHORTCUT_KEY, CHIEF_SHORTCUT_LABEL, isChiefShortcut, useChiefShortcut, } from "./chief/use-chief-shortcut.js";
53
66
  export { directiveToHref } from "./chief/directive.js";
54
- export type { TurnAdapter, TurnAdapterHandle, TurnAdapterRequest, } from "./chief/turn-adapter.js";
55
- export { WorkspaceHost, WorkspaceUnavailable } from "./workspace/WorkspaceHost.js";
67
+ export type { TurnAdapter, TurnAdapterHandle, TurnAdapterRequest, TurnContext, } from "./chief/turn-adapter.js";
68
+ export { WorkspaceHost, WorkspaceUnavailable, } from "./workspace/WorkspaceHost.js";
56
69
  export type { WorkspaceHostProps } from "./workspace/WorkspaceHost.js";
57
70
  export { createWorkspaceRegistry } from "./workspace/registry.js";
58
71
  export type { WorkspaceRegistry } from "./workspace/registry.js";
59
72
  export { WORKSPACE_TYPE_IDS, isWorkspaceTypeId } from "./workspace/types.js";
60
73
  export type { AnyWorkspaceType, WorkspaceComponentProps, WorkspaceType, WorkspaceTypeId, } from "./workspace/types.js";
61
- export { CanvasWorkspace, canvasWorkspaceType } from "./workspace/CanvasWorkspace.js";
74
+ export { CanvasWorkspace, canvasWorkspaceType, } from "./workspace/CanvasWorkspace.js";
62
75
  export type { CanvasWorkspaceInput, CanvasWorkspaceSlots, } from "./workspace/CanvasWorkspace.js";
63
76
  export { DashboardWorkspace, dashboardWorkspaceType, } from "./workspace/DashboardWorkspace.js";
64
77
  export type { DashboardWorkspaceInput, DashboardWorkspaceSection, DashboardWorkspaceSlots, DashboardWorkspaceStat, } from "./workspace/DashboardWorkspace.js";
65
- export { TableWorkspace, tableWorkspaceType } from "./workspace/TableWorkspace.js";
78
+ export { TableWorkspace, tableWorkspaceType, } from "./workspace/TableWorkspace.js";
66
79
  export type { TableWorkspaceInput, TableWorkspaceSlots, } from "./workspace/TableWorkspace.js";
67
80
  export { FormWorkspace, formWorkspaceType } from "./workspace/FormWorkspace.js";
68
81
  export type { FormWorkspaceField, FormWorkspaceInput, FormWorkspaceSection, FormWorkspaceSlots, } from "./workspace/FormWorkspace.js";
69
- export { GraphWorkspace, graphWorkspaceType } from "./workspace/GraphWorkspace.js";
82
+ export { GraphWorkspace, graphWorkspaceType, } from "./workspace/GraphWorkspace.js";
70
83
  export type { GraphWorkspaceEdge, GraphWorkspaceInput, GraphWorkspaceKind, GraphWorkspaceNode, GraphWorkspaceNodeAttribute, GraphWorkspaceSlots, } from "./workspace/GraphWorkspace.js";
71
84
  export { allowAllPermissions, collectPermissionRefs, evaluatePermissions, gateStatus, isPermitted, toGateStatus, unknownPermissions, } from "./guard/permissions.js";
72
85
  export type { PermissionDecision, PermissionEvaluation, PermissionGateStatus, PermissionResolver, SyncPermissionResolver, } from "./guard/permissions.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}