@vibesdotdev/studio 0.0.0-stage → 1.0.0-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +18 -0
- package/README.md +46 -2
- package/VIBES.md +120 -0
- package/dist/cli/plugin.d.ts +11 -0
- package/dist/cli/plugin.d.ts.map +1 -0
- package/dist/cli/plugin.js +18 -0
- package/dist/cli/plugin.js.map +1 -0
- package/dist/cli/studio.descriptor.d.ts +9 -0
- package/dist/cli/studio.descriptor.d.ts.map +1 -0
- package/dist/cli/studio.descriptor.js +39 -0
- package/dist/cli/studio.descriptor.js.map +1 -0
- package/dist/client.d.ts +12 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +27 -0
- package/dist/client.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/logger.d.ts +10 -0
- package/dist/logger.d.ts.map +1 -0
- package/dist/logger.js +41 -0
- package/dist/logger.js.map +1 -0
- package/dist/logging/studio.logger.descriptor.d.ts +7 -0
- package/dist/logging/studio.logger.descriptor.d.ts.map +1 -0
- package/dist/logging/studio.logger.descriptor.js +14 -0
- package/dist/logging/studio.logger.descriptor.js.map +1 -0
- package/dist/logging/studio.output.descriptor.d.ts +4 -0
- package/dist/logging/studio.output.descriptor.d.ts.map +1 -0
- package/dist/logging/studio.output.descriptor.js +22 -0
- package/dist/logging/studio.output.descriptor.js.map +1 -0
- package/dist/prompts/index.d.ts +7 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +7 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/studio-system.prompt.d.ts +49 -0
- package/dist/prompts/studio-system.prompt.d.ts.map +1 -0
- package/dist/prompts/studio-system.prompt.descriptor.d.ts +345 -0
- package/dist/prompts/studio-system.prompt.descriptor.d.ts.map +1 -0
- package/dist/prompts/studio-system.prompt.descriptor.js +22 -0
- package/dist/prompts/studio-system.prompt.descriptor.js.map +1 -0
- package/dist/prompts/studio-system.prompt.js +116 -0
- package/dist/prompts/studio-system.prompt.js.map +1 -0
- package/dist/schemas/auth.d.ts +43 -0
- package/dist/schemas/auth.d.ts.map +1 -0
- package/dist/schemas/auth.js +19 -0
- package/dist/schemas/auth.js.map +1 -0
- package/dist/schemas/continuity.d.ts +51 -0
- package/dist/schemas/continuity.d.ts.map +1 -0
- package/dist/schemas/continuity.js +35 -0
- package/dist/schemas/continuity.js.map +1 -0
- package/dist/schemas/history.d.ts +6 -0
- package/dist/schemas/history.d.ts.map +1 -0
- package/dist/schemas/history.js +6 -0
- package/dist/schemas/history.js.map +1 -0
- package/dist/schemas/logging.d.ts +63 -0
- package/dist/schemas/logging.d.ts.map +1 -0
- package/dist/schemas/logging.js +26 -0
- package/dist/schemas/logging.js.map +1 -0
- package/dist/schemas/theme.d.ts +9 -0
- package/dist/schemas/theme.d.ts.map +1 -0
- package/dist/schemas/theme.js +2 -0
- package/dist/schemas/theme.js.map +1 -0
- package/dist/services/schemas/studio-gateway.d.ts +34 -0
- package/dist/services/schemas/studio-gateway.d.ts.map +1 -0
- package/dist/services/schemas/studio-gateway.js +21 -0
- package/dist/services/schemas/studio-gateway.js.map +1 -0
- package/dist/studio.consumer.plugin.d.ts +8 -0
- package/dist/studio.consumer.plugin.d.ts.map +1 -0
- package/dist/studio.consumer.plugin.js +29 -0
- package/dist/studio.consumer.plugin.js.map +1 -0
- package/dist/studio.core.plugin.d.ts +4 -0
- package/dist/studio.core.plugin.d.ts.map +1 -0
- package/dist/studio.core.plugin.js +23 -0
- package/dist/studio.core.plugin.js.map +1 -0
- package/dist/studio.plugin.d.ts +3 -0
- package/dist/studio.plugin.d.ts.map +1 -0
- package/dist/studio.plugin.js +3 -0
- package/dist/studio.plugin.js.map +1 -0
- package/dist/theme.d.ts +67 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +38 -0
- package/dist/theme.js.map +1 -0
- package/dist/tui/plugin.d.ts +13 -0
- package/dist/tui/plugin.d.ts.map +1 -0
- package/dist/tui/plugin.js +29 -0
- package/dist/tui/plugin.js.map +1 -0
- package/dist/tui/studio-apps.descriptor.d.ts +11 -0
- package/dist/tui/studio-apps.descriptor.d.ts.map +1 -0
- package/dist/tui/studio-apps.descriptor.js +27 -0
- package/dist/tui/studio-apps.descriptor.js.map +1 -0
- package/dist/tui/studio-apps.impl.consumer.d.ts +12 -0
- package/dist/tui/studio-apps.impl.consumer.d.ts.map +1 -0
- package/dist/tui/studio-apps.impl.consumer.js +23 -0
- package/dist/tui/studio-apps.impl.consumer.js.map +1 -0
- package/dist/tui/studio-auth.d.ts +8 -0
- package/dist/tui/studio-auth.d.ts.map +1 -0
- package/dist/tui/studio-auth.js +56 -0
- package/dist/tui/studio-auth.js.map +1 -0
- package/dist/tui/studio-gateway-home.d.ts +56 -0
- package/dist/tui/studio-gateway-home.d.ts.map +1 -0
- package/dist/tui/studio-gateway-home.js +352 -0
- package/dist/tui/studio-gateway-home.js.map +1 -0
- package/dist/tui/studio-gateway.actions.d.ts +8 -0
- package/dist/tui/studio-gateway.actions.d.ts.map +1 -0
- package/dist/tui/studio-gateway.actions.js +133 -0
- package/dist/tui/studio-gateway.actions.js.map +1 -0
- package/dist/tui/studio-gateway.descriptor.d.ts +14 -0
- package/dist/tui/studio-gateway.descriptor.d.ts.map +1 -0
- package/dist/tui/studio-gateway.descriptor.js +33 -0
- package/dist/tui/studio-gateway.descriptor.js.map +1 -0
- package/dist/tui/studio-gateway.impl.consumer.d.ts +32 -0
- package/dist/tui/studio-gateway.impl.consumer.d.ts.map +1 -0
- package/dist/tui/studio-gateway.impl.consumer.js +422 -0
- package/dist/tui/studio-gateway.impl.consumer.js.map +1 -0
- package/dist/tui/studio-gateway.logic.d.ts +55 -0
- package/dist/tui/studio-gateway.logic.d.ts.map +1 -0
- package/dist/tui/studio-gateway.logic.js +255 -0
- package/dist/tui/studio-gateway.logic.js.map +1 -0
- package/dist/tui/studio-home-sessions.d.ts +14 -0
- package/dist/tui/studio-home-sessions.d.ts.map +1 -0
- package/dist/tui/studio-home-sessions.js +190 -0
- package/dist/tui/studio-home-sessions.js.map +1 -0
- package/dist/tui/studio-home.config.descriptor.d.ts +29 -0
- package/dist/tui/studio-home.config.descriptor.d.ts.map +1 -0
- package/dist/tui/studio-home.config.descriptor.js +20 -0
- package/dist/tui/studio-home.config.descriptor.js.map +1 -0
- package/dist/tui/studio-sign-in.d.ts +19 -0
- package/dist/tui/studio-sign-in.d.ts.map +1 -0
- package/dist/tui/studio-sign-in.js +71 -0
- package/dist/tui/studio-sign-in.js.map +1 -0
- package/dist/tui/studio-ui-state.config.descriptor.d.ts +17 -0
- package/dist/tui/studio-ui-state.config.descriptor.d.ts.map +1 -0
- package/dist/tui/studio-ui-state.config.descriptor.js +35 -0
- package/dist/tui/studio-ui-state.config.descriptor.js.map +1 -0
- package/package.json +123 -4
|
@@ -0,0 +1,422 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "@opentui/react/jsx-runtime";
|
|
2
|
+
import { useState, useMemo, useCallback, useEffect } from 'react';
|
|
3
|
+
import { DSButton, DSText, PageHeader, PageLayout, focusElement, navStore, dsBase, dsColors, dsMeasure } from '@vibesdotdev/tui';
|
|
4
|
+
import { useViewport } from '@vibesdotdev/tui';
|
|
5
|
+
import { useKeyboardLayer, registerAction, useOptionalKeybindDispatcherContext } from '@vibesdotdev/tui/input';
|
|
6
|
+
import { LogProvider, LogPanel, GlobalAppHeader, GlobalStatusBar, ScreenStatusProvider, useContributeScreenStatus, useScreenStatusValue, useLogAppender } from '@vibesdotdev/tui/shell';
|
|
7
|
+
import { ErrorBoundary } from '@vibesdotdev/tui/components/feedback';
|
|
8
|
+
import { discoverTuiApps } from '@vibesdotdev/tui/gateway';
|
|
9
|
+
import { buildHomeAppCards, findPageOwningRoute, formatStudioSurfaceIcon, normalizeRoute } from "./studio-gateway.logic.js";
|
|
10
|
+
import { handleGatewayPrefixResult, submitGatewayInput } from "./studio-gateway.actions.js";
|
|
11
|
+
import { GatewayHome, CommandComposer, COMPOSER_ID } from "./studio-gateway-home.js";
|
|
12
|
+
import { loadStudioIdentity } from "./studio-auth.js";
|
|
13
|
+
import { RouteStateTextSchema, StudioLaunchPropsSchema } from "../services/schemas/studio-gateway.js";
|
|
14
|
+
import { SignInOverlay } from "./studio-sign-in.js";
|
|
15
|
+
function StudioGatewayApp(props) {
|
|
16
|
+
const { runtime, navigate, onExit } = props;
|
|
17
|
+
const [input, setInput] = useState('');
|
|
18
|
+
const [message, setMessage] = useState(null);
|
|
19
|
+
const rt = runtime;
|
|
20
|
+
const launch = StudioLaunchPropsSchema.parse(props);
|
|
21
|
+
const initialPageArg = launch.args?.page ?? '';
|
|
22
|
+
const fastMode = launch.args?.fast !== undefined || launch.options?.fast !== undefined;
|
|
23
|
+
const [homeNotice] = useState(fastMode ? { text: 'Fast mode: setup checks and heavy panels skipped.', tone: 'muted' } : null);
|
|
24
|
+
const [startupMs, setStartupMs] = useState(null);
|
|
25
|
+
const [logPanelOpen, setLogPanelOpen] = useState(false);
|
|
26
|
+
// Platform identity for the status line's auth slot and the home sign-in
|
|
27
|
+
// affordance. `authVersion` bumps after an in-TUI sign-in so dependents
|
|
28
|
+
// (home's Continue band) refetch against the fresh credentials.
|
|
29
|
+
const [identity, setIdentity] = useState(null);
|
|
30
|
+
const [identityLoaded, setIdentityLoaded] = useState(false);
|
|
31
|
+
const [authVersion, setAuthVersion] = useState(0);
|
|
32
|
+
const [signInOpen, setSignInOpen] = useState(false);
|
|
33
|
+
useEffect(() => {
|
|
34
|
+
setStartupMs(Date.now() - startTime);
|
|
35
|
+
}, []);
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
let cancelled = false;
|
|
38
|
+
void loadStudioIdentity(rt).then((resolved) => {
|
|
39
|
+
if (cancelled)
|
|
40
|
+
return;
|
|
41
|
+
setIdentity(resolved.status === 'signed-in' ? resolved.identity : null);
|
|
42
|
+
if (resolved.status === 'failed' || resolved.status === 'unavailable') {
|
|
43
|
+
setMessage(resolved.message);
|
|
44
|
+
}
|
|
45
|
+
setIdentityLoaded(true);
|
|
46
|
+
});
|
|
47
|
+
return () => {
|
|
48
|
+
cancelled = true;
|
|
49
|
+
};
|
|
50
|
+
}, [rt, authVersion]);
|
|
51
|
+
const pages = useMemo(() => discoverTuiApps(rt), [rt]);
|
|
52
|
+
const appPages = useMemo(() => pages.filter((p) => p.id !== 'studio.gateway'), [pages]);
|
|
53
|
+
const homeApps = useMemo(() => buildHomeAppCards(appPages), [appPages]);
|
|
54
|
+
const commands = useMemo(() => {
|
|
55
|
+
// SAFETY: registration admits every `tui/command` descriptor through the kind's canonical schema.
|
|
56
|
+
const d = rt.assets('tui/command').descriptors();
|
|
57
|
+
return d.sort((a, b) => (a.order ?? 999) - (b.order ?? 999));
|
|
58
|
+
}, [rt]);
|
|
59
|
+
const [activePath, setActivePath] = useState('/');
|
|
60
|
+
const [routeState, setRouteState] = useState(null);
|
|
61
|
+
const isStandalone = navigate === undefined;
|
|
62
|
+
const navigateTo = useCallback((path, state) => {
|
|
63
|
+
const normalized = normalizeRoute(path);
|
|
64
|
+
if (navigate) {
|
|
65
|
+
navigate(normalized, state);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
setActivePath(normalized);
|
|
69
|
+
setRouteState(state ?? null);
|
|
70
|
+
}, [navigate]);
|
|
71
|
+
// Publish this app's real router so overlays mounted OUTSIDE its React
|
|
72
|
+
// subtree — the command palette and the keybind bridge — can navigate.
|
|
73
|
+
// Only when standalone: embedded, the parent owns routing (navigateTo already
|
|
74
|
+
// delegates to it) and there is a real top-level router elsewhere. Clear on
|
|
75
|
+
// unmount so a torn-down gateway leaves no stale navigate in the singleton.
|
|
76
|
+
useEffect(() => {
|
|
77
|
+
if (!isStandalone)
|
|
78
|
+
return;
|
|
79
|
+
navStore.publish(navigateTo);
|
|
80
|
+
return () => navStore.publish(null);
|
|
81
|
+
}, [isStandalone, navigateTo]);
|
|
82
|
+
useEffect(() => {
|
|
83
|
+
if (!initialPageArg)
|
|
84
|
+
return;
|
|
85
|
+
navigateTo(normalizeRoute(initialPageArg));
|
|
86
|
+
}, [initialPageArg, navigateTo]);
|
|
87
|
+
const handleSubmit = useCallback(async () => submitGatewayInput(input, commands, pages, rt, navigateTo, setInput, setMessage), [input, commands, pages, rt, navigateTo]);
|
|
88
|
+
const handlePrefixResult = useCallback((result) => handleGatewayPrefixResult(result, navigateTo, setInput, setMessage), [navigateTo]);
|
|
89
|
+
const activePage = useMemo(() => {
|
|
90
|
+
if (!isStandalone || activePath === '/')
|
|
91
|
+
return null;
|
|
92
|
+
return findPageOwningRoute(pages, activePath) ?? null;
|
|
93
|
+
}, [isStandalone, activePath, pages]);
|
|
94
|
+
const currentPageTitle = activePath === '/' ? 'home' : (activePage?.title ?? activePath.replace(/^\//, ''));
|
|
95
|
+
useKeyboardLayer('global', (key) => {
|
|
96
|
+
if (key.ctrl && key.name === '`') {
|
|
97
|
+
setLogPanelOpen((value) => !value);
|
|
98
|
+
return true;
|
|
99
|
+
}
|
|
100
|
+
if (isStandalone && activePath !== '/' && key.name === 'escape') {
|
|
101
|
+
navigateTo('/');
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
// In a PTY Ctrl+H commonly arrives as the ASCII backspace byte, not
|
|
105
|
+
// a structured ctrl+h event. Keep normal DEL backspace out of this path.
|
|
106
|
+
const terminalCtrlH = key.sequence === '\u0008' || key.name === '\u0008';
|
|
107
|
+
if ((key.ctrl && key.name === 'h') || terminalCtrlH) {
|
|
108
|
+
navigateTo('/');
|
|
109
|
+
return true;
|
|
110
|
+
}
|
|
111
|
+
return false;
|
|
112
|
+
}, { description: 'Studio global shortcuts' });
|
|
113
|
+
// Register programmatic action handlers so callers can trigger these via
|
|
114
|
+
// executeAction('toggleLogs') / executeAction('navigateHome'). These mirror the keyboard-layer bindings
|
|
115
|
+
// above and are the sanctioned programmatic entry point for tests and other
|
|
116
|
+
// surfaces that don't want to synthesize raw key events.
|
|
117
|
+
useEffect(() => {
|
|
118
|
+
const unregisterToggleLogs = registerAction('toggleLogs', () => {
|
|
119
|
+
setLogPanelOpen((value) => !value);
|
|
120
|
+
});
|
|
121
|
+
const unregisterNavigateHome = registerAction('navigateHome', () => {
|
|
122
|
+
navigateTo('/');
|
|
123
|
+
});
|
|
124
|
+
// Any route can raise the sign-in overlay via executeAction('signIn')
|
|
125
|
+
// instead of pointing the user at a shell command — auth is gateway
|
|
126
|
+
// chrome, like the palette.
|
|
127
|
+
const unregisterSignIn = registerAction('signIn', () => {
|
|
128
|
+
setSignInOpen(true);
|
|
129
|
+
});
|
|
130
|
+
return () => {
|
|
131
|
+
unregisterToggleLogs();
|
|
132
|
+
unregisterNavigateHome();
|
|
133
|
+
unregisterSignIn();
|
|
134
|
+
};
|
|
135
|
+
}, [navigateTo]);
|
|
136
|
+
const renderContent = () => {
|
|
137
|
+
if (isStandalone && activePath !== '/') {
|
|
138
|
+
if (!activePage) {
|
|
139
|
+
return (_jsx(MissingRoute, { activePath: activePath, pages: pages, navigateTo: navigateTo, onOpenLogs: () => setLogPanelOpen(true), command: {
|
|
140
|
+
runtime: rt,
|
|
141
|
+
input,
|
|
142
|
+
onInputChange: setInput,
|
|
143
|
+
onPrefixResult: handlePrefixResult,
|
|
144
|
+
onSubmit: handleSubmit
|
|
145
|
+
} }));
|
|
146
|
+
}
|
|
147
|
+
const PageContent = activePage.content;
|
|
148
|
+
return (_jsx(StudioRouteFrame, { page: activePage, activePath: activePath, routeState: routeState, navigateTo: navigateTo, onOpenLogs: () => setLogPanelOpen(true), command: {
|
|
149
|
+
runtime: rt,
|
|
150
|
+
input,
|
|
151
|
+
onInputChange: setInput,
|
|
152
|
+
onPrefixResult: handlePrefixResult,
|
|
153
|
+
onSubmit: handleSubmit
|
|
154
|
+
}, children: _jsx(PageContent, { navigate: navigateTo, embedded: true, route: activePath, routeState: routeState ?? undefined, ...(routeState ?? {}) }) }));
|
|
155
|
+
}
|
|
156
|
+
return (_jsx(GatewayHome, { runtime: rt, input: input, onInputChange: setInput, notice: message ? { text: message, tone: 'muted' } : homeNotice, apps: homeApps, identity: identity, identityLoaded: identityLoaded, authVersion: authVersion, defaultModelLabel: null, navigateTo: navigateTo, onPrefixResult: handlePrefixResult, onSubmit: handleSubmit, onSignIn: () => setSignInOpen(true) }));
|
|
157
|
+
};
|
|
158
|
+
// Build identity from the runtime this app was handed (RC04: a declared build fact, not an env knob).
|
|
159
|
+
const version = rt.getEnv('VIBES_VERSION') ?? 'dev';
|
|
160
|
+
const gitHash = rt.getEnv('VIBES_GIT_HASH') ?? '';
|
|
161
|
+
// Open the REAL command palette (the shell listens for `app.palette`).
|
|
162
|
+
// Only when no dispatcher is mounted does the button fall back to focusing
|
|
163
|
+
// the composer — and then it says so, instead of claiming a palette opened.
|
|
164
|
+
const keybindDispatcher = useOptionalKeybindDispatcherContext();
|
|
165
|
+
return (_jsx(LogProvider, { children: _jsx(ScreenStatusProvider, { children: _jsxs("box", { style: { flexDirection: 'column', flexGrow: 1 }, children: [_jsx(GlobalAppHeader, { appName: "Vibes", version: version, gitHash: gitHash || undefined, currentPage: currentPageTitle, paletteLabel: "commands", onOpenCommandPalette: () => {
|
|
166
|
+
if (keybindDispatcher) {
|
|
167
|
+
keybindDispatcher.execute('app.palette');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
focusElement(COMPOSER_ID, 'keyboard');
|
|
171
|
+
setMessage('Composer focused — Ctrl+P opens the command palette.');
|
|
172
|
+
} }), _jsx("box", { style: {
|
|
173
|
+
flexDirection: 'column',
|
|
174
|
+
flexGrow: 1,
|
|
175
|
+
flexShrink: 1,
|
|
176
|
+
minHeight: 0,
|
|
177
|
+
overflow: 'hidden'
|
|
178
|
+
}, children: _jsx(RouteBoundary, { route: activePath, onExit: onExit, children: renderContent() }) }), _jsx(LogPanel, { visible: logPanelOpen, onClose: () => setLogPanelOpen(false), height: 12 }), _jsx(SignInOverlay, { runtime: rt, open: signInOpen, onClose: () => setSignInOpen(false), onSignedIn: (signedIn) => {
|
|
179
|
+
setIdentity(signedIn);
|
|
180
|
+
setIdentityLoaded(true);
|
|
181
|
+
setAuthVersion((value) => value + 1);
|
|
182
|
+
setMessage(signedIn.email ? `Signed in as ${signedIn.email}.` : 'Signed in.');
|
|
183
|
+
} }), _jsx(GatewayFacts, { authLabel: identity?.email ?? 'local' }), _jsx(GatewayStatusBar, { connection: "connected" }), _jsx(StartupDiagnostics, { pageCount: pages.length, startupMs: startupMs, fastMode: fastMode })] }) }) }));
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* The single gateway-owned status line. Reads the resolved screen-status
|
|
187
|
+
* contribution (facts + hints, already de-duplicated one-owner-per-slot) and
|
|
188
|
+
* renders it once. The connection indicator is gateway-owned (passed as a prop);
|
|
189
|
+
* everything else is contributed by the active route. When a route contributes
|
|
190
|
+
* no hints, one universal `? help` affordance keeps help discoverable on-page.
|
|
191
|
+
* The permanent mode badge is off (`showMode={false}`): input IS modal, but
|
|
192
|
+
* mode's only practical consequence (Enter = send) rides the contributed hint
|
|
193
|
+
* line rather than narrating `INS · global` as permanent chrome.
|
|
194
|
+
*/
|
|
195
|
+
/**
|
|
196
|
+
* Gateway-owned facts for the one status line. Auth is a single, calm story:
|
|
197
|
+
* when the platform identity is known (via `vibes auth login` or the in-TUI
|
|
198
|
+
* sign-in) the slot reads the signed-in email; otherwise it reads `local` — a
|
|
199
|
+
* locally-running studio is authenticated on the machine it runs on (never
|
|
200
|
+
* "not signed in", the lie Drew's /chat review caught). Auth lives HERE, not
|
|
201
|
+
* in the header, so it is stated exactly once. Priority is low so a route
|
|
202
|
+
* could refine it, though none needs to.
|
|
203
|
+
*/
|
|
204
|
+
function GatewayFacts({ authLabel }) {
|
|
205
|
+
useContributeScreenStatus('studio.gateway', {
|
|
206
|
+
facts: [{ slot: 'auth', value: authLabel, priority: -10, tone: 'muted' }]
|
|
207
|
+
});
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
function GatewayStatusBar({ connection }) {
|
|
211
|
+
const { facts, hints } = useScreenStatusValue();
|
|
212
|
+
const hintItems = hints.length > 0
|
|
213
|
+
? hints.map((hint) => ({ keys: hint.keys, label: hint.label }))
|
|
214
|
+
: [{ keys: '?', label: 'help' }];
|
|
215
|
+
return _jsx(GlobalStatusBar, { connection: connection, facts: facts, hints: hintItems, showMode: false });
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Debug vitals live behind the logs surface, never on user pages. The page
|
|
219
|
+
* count and cold-start timing that used to clutter the status bar are appended
|
|
220
|
+
* once to the in-process log buffer (open with Ctrl+`), where an operator who
|
|
221
|
+
* actually wants them can look.
|
|
222
|
+
*/
|
|
223
|
+
function StartupDiagnostics({ pageCount, startupMs, fastMode }) {
|
|
224
|
+
const appendLog = useLogAppender();
|
|
225
|
+
useEffect(() => {
|
|
226
|
+
if (startupMs === null)
|
|
227
|
+
return;
|
|
228
|
+
appendLog('debug', `studio ready — ${pageCount} routes, ${startupMs}ms cold start${fastMode ? ' (fast mode)' : ''}`, 'studio.gateway');
|
|
229
|
+
}, [appendLog, pageCount, startupMs, fastMode]);
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* The gateway's route error boundary. A caught route error lands in the log
|
|
234
|
+
* panel; Exit hands control to the host's exit; keying on the route lets Esc,
|
|
235
|
+
* Ctrl+H and navigateHome leave a crashed route.
|
|
236
|
+
*/
|
|
237
|
+
function RouteBoundary({ route, onExit, children }) {
|
|
238
|
+
const appendLog = useLogAppender();
|
|
239
|
+
const logger = useMemo(() => ({
|
|
240
|
+
debug: (message, meta) => appendLog('debug', message, 'studio.gateway', meta),
|
|
241
|
+
warn: (message, meta) => appendLog('warn', message, 'studio.gateway', meta),
|
|
242
|
+
error: (message, meta) => appendLog('error', message, 'studio.gateway', meta)
|
|
243
|
+
}), [appendLog]);
|
|
244
|
+
return (_jsx(ErrorBoundary, { logger: logger, onCleanup: onExit, children: children }, route));
|
|
245
|
+
}
|
|
246
|
+
const startTime = Date.now();
|
|
247
|
+
function routeStateText(routeState, key) {
|
|
248
|
+
return RouteStateTextSchema.parse(routeState?.[key]);
|
|
249
|
+
}
|
|
250
|
+
function hasWorkContext(routeState) {
|
|
251
|
+
return (routeState?.newRoom === true ||
|
|
252
|
+
Boolean(routeStateText(routeState, 'codeSessionId')) ||
|
|
253
|
+
Boolean(routeStateText(routeState, 'sessionId')));
|
|
254
|
+
}
|
|
255
|
+
export function StudioRouteFrame({ page, children, activePath, routeState, navigateTo, onOpenLogs }) {
|
|
256
|
+
const { width, height } = useViewport();
|
|
257
|
+
const compact = width <= 90 || height <= 28;
|
|
258
|
+
return (_jsxs(PageLayout, { noScroll: true, padding: compact ? 0 : 1, header: hasWorkContext(routeState) ? undefined : (_jsx(RoutePageHeader, { page: page, activePath: activePath, compact: compact, navigateTo: navigateTo, onOpenLogs: onOpenLogs })), children: [_jsx(RouteNoticeBar, { routeState: routeState, compact: compact }), _jsx(WorkContextBar, { routeState: routeState }), _jsx("box", { style: { flexDirection: 'column', flexGrow: 1, minHeight: 0, overflow: 'hidden' }, children: children })] }));
|
|
259
|
+
}
|
|
260
|
+
export function MissingRoute({ activePath, pages, navigateTo, command }) {
|
|
261
|
+
const { width, height } = useViewport();
|
|
262
|
+
const compact = width <= 90 || height <= 28;
|
|
263
|
+
// The FULL catalog — a sliced list here reads as "this is everything" and
|
|
264
|
+
// makes unlisted-but-registered routes look nonexistent.
|
|
265
|
+
const availablePages = pages.filter((page) => page.id !== 'studio.gateway');
|
|
266
|
+
// Recovery hints flow through the one status line, not a second footer bar.
|
|
267
|
+
useContributeScreenStatus('studio.missing-route', {
|
|
268
|
+
hints: [
|
|
269
|
+
{ keys: '/', label: 'command' },
|
|
270
|
+
{ keys: 'Ctrl+H', label: 'home' },
|
|
271
|
+
{ keys: '?', label: 'help' }
|
|
272
|
+
]
|
|
273
|
+
});
|
|
274
|
+
return (_jsx(PageLayout, { noScroll: true, padding: compact ? 0 : 1, header: _jsx(PageHeader, { title: "Page not found", description: `${activePath} isn't available here. Choose a page below, or go Home.`, onBack: () => navigateTo('/'), backLabel: "Home", zone: "studio-route" }), children: _jsxs("box", { style: {
|
|
275
|
+
border: true,
|
|
276
|
+
borderColor: dsColors.warning.solid,
|
|
277
|
+
padding: compact ? 0 : 1,
|
|
278
|
+
flexDirection: 'column',
|
|
279
|
+
gap: compact ? 0 : 1,
|
|
280
|
+
flexGrow: 1,
|
|
281
|
+
flexShrink: 1,
|
|
282
|
+
minHeight: 0,
|
|
283
|
+
overflow: 'hidden'
|
|
284
|
+
}, children: [_jsx(RouteCommandComposer, { command: command, compact: compact }), _jsx("box", { style: { flexDirection: 'row', flexWrap: 'wrap', gap: 1, flexShrink: 0 }, children: availablePages.map((page) => (_jsx(DSButton, { id: `missing-route-${page.id}`, label: page.title, icon: formatStudioSurfaceIcon(page.descriptor), size: "xs", variant: "ghost", color: "secondary", zone: "studio-route", onClick: () => navigateTo(page.path) }, page.id))) }), _jsx(MissingRouteRuntimeBand, { activePath: activePath, compact: compact, pages: availablePages, navigateTo: navigateTo }), availablePages.length === 0 && (_jsx("text", { style: { fg: dsBase.mutedForeground }, children: "Nothing is available here yet." }))] }) }));
|
|
285
|
+
}
|
|
286
|
+
function RouteCommandComposer({ command, compact }) {
|
|
287
|
+
return (_jsx(CommandComposer, { runtime: command.runtime, input: command.input, onInputChange: command.onInputChange, onPrefixResult: command.onPrefixResult, onSubmit: command.onSubmit, compact: compact, label: "Command", zone: "studio-route", placeholder: compact ? 'Command, /apps, /home...' : 'Run /command, /goto route, or ask from this screen...' }));
|
|
288
|
+
}
|
|
289
|
+
// Cheap Levenshtein — route paths are short, so the O(m·n) table is trivial and
|
|
290
|
+
// lets a typo'd path ("/ai/routers") point at the real one ("/ai/router").
|
|
291
|
+
function routeEditDistance(a, b) {
|
|
292
|
+
const m = a.length;
|
|
293
|
+
const n = b.length;
|
|
294
|
+
let prev = Array.from({ length: n + 1 }, (_, j) => j);
|
|
295
|
+
let curr = Array.from({ length: n + 1 }, () => 0);
|
|
296
|
+
for (let i = 1; i <= m; i++) {
|
|
297
|
+
curr[0] = i;
|
|
298
|
+
for (let j = 1; j <= n; j++) {
|
|
299
|
+
curr[j] = Math.min(prev[j] + 1, curr[j - 1] + 1, prev[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
|
|
300
|
+
}
|
|
301
|
+
[prev, curr] = [curr, prev];
|
|
302
|
+
}
|
|
303
|
+
return prev[n];
|
|
304
|
+
}
|
|
305
|
+
// Closest registered route to what was requested — but only when it's a genuine
|
|
306
|
+
// near-miss, so we never suggest a wildly different surface as "did you mean".
|
|
307
|
+
function nearestRegisteredRoute(activePath, pages) {
|
|
308
|
+
const target = activePath.toLowerCase();
|
|
309
|
+
let best = null;
|
|
310
|
+
let bestScore = Number.POSITIVE_INFINITY;
|
|
311
|
+
for (const page of pages) {
|
|
312
|
+
const score = routeEditDistance(target, page.path.toLowerCase());
|
|
313
|
+
if (score < bestScore) {
|
|
314
|
+
bestScore = score;
|
|
315
|
+
best = page;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
const tolerance = Math.max(2, Math.floor(target.length * 0.4));
|
|
319
|
+
return best && bestScore > 0 && bestScore <= tolerance ? best : null;
|
|
320
|
+
}
|
|
321
|
+
// Registered routes sharing the requested path's top segment are surfaced so
|
|
322
|
+
// a dropped sub-route reads as dropped, not nonexistent.
|
|
323
|
+
function siblingRegisteredRoutes(activePath, pages) {
|
|
324
|
+
const segment = activePath.split('/').filter(Boolean)[0];
|
|
325
|
+
if (!segment)
|
|
326
|
+
return [];
|
|
327
|
+
return pages.filter((page) => page.path.split('/').filter(Boolean)[0] === segment && page.path !== activePath);
|
|
328
|
+
}
|
|
329
|
+
function MissingRouteRuntimeBand({ activePath, compact, pages, navigateTo }) {
|
|
330
|
+
const suggestion = nearestRegisteredRoute(activePath, pages);
|
|
331
|
+
const siblings = siblingRegisteredRoutes(activePath, pages);
|
|
332
|
+
const looksLikeRoute = activePath.startsWith('/') && activePath.length > 1;
|
|
333
|
+
const topSegment = activePath.split('/').filter(Boolean)[0];
|
|
334
|
+
return (_jsxs("box", { style: {
|
|
335
|
+
flexDirection: 'column',
|
|
336
|
+
justifyContent: 'flex-start',
|
|
337
|
+
gap: 1,
|
|
338
|
+
flexShrink: 0,
|
|
339
|
+
paddingLeft: compact ? 0 : 1,
|
|
340
|
+
paddingRight: compact ? 0 : 1
|
|
341
|
+
}, children: [suggestion ? (_jsxs("box", { style: { flexDirection: 'row', alignItems: 'center', gap: 1, flexShrink: 0 }, children: [_jsx("text", { style: { fg: dsColors.primary.solid }, children: "Did you mean" }), _jsx(DSButton, { id: "missing-route-suggestion", label: suggestion.path, size: "xs", variant: "outlined", color: "primary", zone: "studio-route", onClick: () => navigateTo(suggestion.path) }), _jsx("text", { style: { fg: dsBase.mutedForeground }, children: "?" })] })) : looksLikeRoute ? (_jsx("text", { style: { fg: dsBase.mutedForeground }, children: `That page isn't part of this workspace.` })) : null, !compact && siblings.length > 0 ? (_jsx("text", { style: { fg: dsBase.mutedForeground }, children: `Other /${topSegment} pages: ${siblings
|
|
342
|
+
.slice(0, 4)
|
|
343
|
+
.map((page) => page.path)
|
|
344
|
+
.join(' ')}` })) : null] }));
|
|
345
|
+
}
|
|
346
|
+
function RoutePageHeader({ page, activePath, compact, navigateTo, }) {
|
|
347
|
+
const descriptor = page.descriptor;
|
|
348
|
+
const route = normalizeRoute(activePath ?? page.path);
|
|
349
|
+
return (_jsx(PageHeader, { title: `${formatStudioSurfaceIcon(descriptor)} ${page.title}`, description: compact ? compactRouteSubtitle(page, route) : formatRouteSubtitle(page, route), actions: _jsx("box", { style: { flexDirection: 'row', gap: 1, flexShrink: 0 }, children: _jsx(DSButton, { id: "route-home", label: "Home", size: "sm", variant: "ghost", color: "secondary", onClick: () => navigateTo('/') }) }), zone: "studio-route" }));
|
|
350
|
+
}
|
|
351
|
+
function WorkContextBar({ routeState }) {
|
|
352
|
+
const codeSessionId = routeStateText(routeState, 'codeSessionId');
|
|
353
|
+
const sessionId = routeStateText(routeState, 'sessionId');
|
|
354
|
+
if (!hasWorkContext(routeState))
|
|
355
|
+
return null;
|
|
356
|
+
const initialTitle = routeStateText(routeState, 'initialTitle');
|
|
357
|
+
const initialMessage = routeStateText(routeState, 'initialMessage');
|
|
358
|
+
const title = compactRouteNotice(initialTitle || initialMessage || 'New work');
|
|
359
|
+
const workspaceRoot = routeStateText(routeState, 'workspaceRoot');
|
|
360
|
+
const place = workspaceRoot
|
|
361
|
+
? (workspaceRoot.split('/').filter(Boolean).at(-1) ?? workspaceRoot)
|
|
362
|
+
: 'local workspace';
|
|
363
|
+
const identity = codeSessionId || sessionId;
|
|
364
|
+
return (_jsxs("box", { style: {
|
|
365
|
+
border: ['bottom'],
|
|
366
|
+
borderColor: dsColors.primary.solid,
|
|
367
|
+
// Page shell already owns the outer gutter; use the design token
|
|
368
|
+
// (not a raw numeric paddingLeft/Right) so check:tui-spacing stays green.
|
|
369
|
+
paddingLeft: dsMeasure.gutter,
|
|
370
|
+
paddingRight: dsMeasure.gutter,
|
|
371
|
+
flexDirection: 'row',
|
|
372
|
+
alignItems: 'center',
|
|
373
|
+
gap: 1,
|
|
374
|
+
flexShrink: 0,
|
|
375
|
+
overflow: 'hidden'
|
|
376
|
+
}, children: [_jsx(DSText, { color: dsColors.primary.solid, bold: true, style: { flexShrink: 0 }, children: "Work" }), _jsx("text", { style: { fg: dsBase.foreground, flexShrink: 1 }, children: title }), _jsx("text", { style: { fg: dsBase.mutedForeground, flexShrink: 0 }, children: identity ? `${place} · ${identity.slice(0, 12)}` : place })] }));
|
|
377
|
+
}
|
|
378
|
+
function RouteNoticeBar({ routeState, compact }) {
|
|
379
|
+
const title = routeStateText(routeState, 'routeNoticeTitle');
|
|
380
|
+
const body = routeStateText(routeState, 'routeNoticeBody');
|
|
381
|
+
if (!title && !body)
|
|
382
|
+
return null;
|
|
383
|
+
const headline = title || 'Context';
|
|
384
|
+
const detail = body || 'This route was opened by Studio.';
|
|
385
|
+
return (_jsxs("box", { style: {
|
|
386
|
+
border: ['bottom'],
|
|
387
|
+
borderColor: dsColors.warning.solid,
|
|
388
|
+
paddingLeft: 1,
|
|
389
|
+
paddingRight: 1,
|
|
390
|
+
flexDirection: 'row',
|
|
391
|
+
alignItems: 'center',
|
|
392
|
+
gap: 1,
|
|
393
|
+
flexShrink: 0,
|
|
394
|
+
overflow: 'hidden'
|
|
395
|
+
}, children: [_jsx(DSText, { color: dsColors.warning.solid, bold: true, style: { flexShrink: 0 }, children: `${headline}:` }), _jsx("text", { style: { fg: dsBase.mutedForeground, flexShrink: 1 }, children: compact ? compactRouteNotice(detail) : detail })] }));
|
|
396
|
+
}
|
|
397
|
+
function compactRouteNotice(value) {
|
|
398
|
+
if (value.length <= 56)
|
|
399
|
+
return value;
|
|
400
|
+
return `${value.slice(0, 53).trimEnd()}...`;
|
|
401
|
+
}
|
|
402
|
+
function formatRouteDescription(page) {
|
|
403
|
+
const raw = page.descriptor.description ?? '';
|
|
404
|
+
const description = raw.trim().replace(/\.$/, '');
|
|
405
|
+
return description || `${page.title} workspace`;
|
|
406
|
+
}
|
|
407
|
+
function formatRouteSubtitle(page, route) {
|
|
408
|
+
return `${formatRouteDescription(page)} · ${route}`;
|
|
409
|
+
}
|
|
410
|
+
function compactRouteSubtitle(page, route) {
|
|
411
|
+
const description = formatRouteDescription(page);
|
|
412
|
+
if (description.length <= 48)
|
|
413
|
+
return `${description} · ${route}`;
|
|
414
|
+
// Clip on a word boundary — a mid-word cut ("cloud o...") reads as a defect.
|
|
415
|
+
const slice = description.slice(0, 45);
|
|
416
|
+
const cut = slice.lastIndexOf(' ');
|
|
417
|
+
const kept = (cut > 24 ? slice.slice(0, cut) : slice).trimEnd().replace(/[,—–·]+$/, '');
|
|
418
|
+
return `${kept}... · ${route}`;
|
|
419
|
+
}
|
|
420
|
+
const impl = { component: StudioGatewayApp };
|
|
421
|
+
export default impl;
|
|
422
|
+
//# sourceMappingURL=studio-gateway.impl.consumer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-gateway.impl.consumer.js","sourceRoot":"","sources":["../../src/tui/studio-gateway.impl.consumer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { TuiCommandDescriptor } from '@vibesdotdev/tui/schemas/tui-command';
|
|
2
|
+
import type { PrefixResult } from '@vibesdotdev/tui/kinds/tui-prefix';
|
|
3
|
+
import { type GatewayPage } from '@vibesdotdev/tui/gateway';
|
|
4
|
+
import { normalizeRoute } from '@vibesdotdev/tui/shell';
|
|
5
|
+
import type { AppCard, RouteState } from '../services/schemas/studio-gateway.ts';
|
|
6
|
+
export { normalizeRoute };
|
|
7
|
+
export type { AppCard, RouteState };
|
|
8
|
+
export declare function buildAppCards(appPages: GatewayPage[]): AppCard[];
|
|
9
|
+
export declare function buildAppCatalog(appPages: GatewayPage[]): {
|
|
10
|
+
primary: AppCard[];
|
|
11
|
+
ops: AppCard[];
|
|
12
|
+
dev: AppCard[];
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* The home directory: every navigable app in one list (home groups them by
|
|
16
|
+
* user task, not by this audience taxonomy). De-duplicated because a
|
|
17
|
+
* descriptor without an explicit audience can match more than one fallback
|
|
18
|
+
* category set.
|
|
19
|
+
*/
|
|
20
|
+
export declare function buildHomeAppCards(appPages: GatewayPage[]): AppCard[];
|
|
21
|
+
/**
|
|
22
|
+
* THE DESCRIPTOR OWNS ITS ICON. Studio's only jobs here are grid safety
|
|
23
|
+
* (an emoji is double-width and breaks column alignment, so it degrades to a
|
|
24
|
+
* bullet) and a fallback when a surface declares nothing.
|
|
25
|
+
*
|
|
26
|
+
* This used to consult a hard-coded `STUDIO_SURFACE_ICONS` map that listed ~19
|
|
27
|
+
* OTHER packages' surface ids — so studio, an infrastructure package, decided how
|
|
28
|
+
* chat/pm/secrets/knowledge/... presented themselves, and a descriptor's own
|
|
29
|
+
* `icon` was silently ignored. Two costs, both real: adding a surface meant
|
|
30
|
+
* editing studio, and the map had drifted into letters (`B` for AI Benchmarks,
|
|
31
|
+
* `S` for AI Scorecard) sitting beside geometric glyphs, plus heavy collisions
|
|
32
|
+
* (one glyph for three unrelated surfaces). Constitution: infrastructure packages
|
|
33
|
+
* are not feature owners.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatStudioSurfaceIcon(surface: {
|
|
36
|
+
id?: string;
|
|
37
|
+
icon?: string;
|
|
38
|
+
audience?: string;
|
|
39
|
+
}): string;
|
|
40
|
+
export declare function findCommandMatch(commands: TuiCommandDescriptor[], trigger: string): TuiCommandDescriptor | undefined;
|
|
41
|
+
export declare function findPageMatch(pages: GatewayPage[], trigger: string): GatewayPage | undefined;
|
|
42
|
+
export declare function findPageOwningRoute(pages: GatewayPage[], route: string): GatewayPage | undefined;
|
|
43
|
+
export declare function findPageByQuery(pages: GatewayPage[], query: string): GatewayPage | undefined;
|
|
44
|
+
export declare function getCommandTriggers(commands: TuiCommandDescriptor[], pages: GatewayPage[]): string[];
|
|
45
|
+
export declare function suggestCommandTriggers(commands: TuiCommandDescriptor[], pages: GatewayPage[], trigger: string, limit?: number): string[];
|
|
46
|
+
export declare function searchGatewayItems(commands: TuiCommandDescriptor[], pages: GatewayPage[], query: string, limit?: number): string[];
|
|
47
|
+
export declare function buildHelpMessage(commands: TuiCommandDescriptor[], pages: GatewayPage[]): string;
|
|
48
|
+
export declare function buildAppsMessage(pages: GatewayPage[]): string;
|
|
49
|
+
export declare function applyPrefixResult(result: PrefixResult, handlers: {
|
|
50
|
+
navigateTo: (route: string, state?: RouteState) => void;
|
|
51
|
+
setInput: (value: string) => void;
|
|
52
|
+
sendMessage: (text: string) => void;
|
|
53
|
+
setMessage: (value: string | null) => void;
|
|
54
|
+
}): void;
|
|
55
|
+
//# sourceMappingURL=studio-gateway.logic.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"studio-gateway.logic.d.ts","sourceRoot":"","sources":["../../src/tui/studio-gateway.logic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,KAAK,WAAW,EAAkC,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,uCAAuC,CAAC;AAEjF,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;AAqCpC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAEhE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE;;;;EAMtD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,OAAO,EAAE,CAUpE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAMT;AAoBD,wBAAgB,gBAAgB,CAC/B,QAAQ,EAAE,oBAAoB,EAAE,EAChC,OAAO,EAAE,MAAM,GACb,oBAAoB,GAAG,SAAS,CAQlC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAS5F;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAUhG;AAWD,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAa5F;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,CAYnG;AAED,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,SAAI,GACP,MAAM,EAAE,CAmBV;AAED,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,oBAAoB,EAAE,EAChC,KAAK,EAAE,WAAW,EAAE,EACpB,KAAK,EAAE,MAAM,EACb,KAAK,SAAI,GACP,MAAM,EAAE,CAoBV;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAI/F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAM7D;AAED,wBAAgB,iBAAiB,CAChC,MAAM,EAAE,YAAY,EACnB,QAAQ,EAAE;IACT,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IACxD,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CAC5C,GACC,IAAI,CAqBN"}
|