@elench/shell 0.1.7 → 0.1.9

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.
@@ -0,0 +1,192 @@
1
+ import { type ReactNode } from "react";
2
+ import type { ShellTab, ShellTabTarget, ShellTabTone } from "./lib/shell/types.js";
3
+ import { type ShellApiRequestInit } from "./lib/shell/api.js";
4
+ type Value<T> = T | ((ctx: ShellViewContext) => T);
5
+ export type ShellResourceDefinition = {
6
+ path: Value<string>;
7
+ init?: Value<ShellApiRequestInit | undefined>;
8
+ enabled?: Value<boolean>;
9
+ staleTime?: number;
10
+ };
11
+ export type ShellCommandDefinition<TInput = unknown, TOutput = unknown> = {
12
+ path: Value<string>;
13
+ init?: Value<ShellApiRequestInit | undefined>;
14
+ body?: (input: TInput, ctx: ShellViewContext) => unknown;
15
+ invalidates?: string[];
16
+ onSuccess?: (output: TOutput, input: TInput, helpers: ShellCommandHelpers) => void;
17
+ };
18
+ export type ShellCommandHelpers = {
19
+ closeTab: (id: string) => void;
20
+ invalidate: (ids: string[]) => void;
21
+ openTab: (tab: ShellWorkbenchTab, options?: {
22
+ preview?: boolean;
23
+ }) => void;
24
+ pinTab: (id: string) => void;
25
+ };
26
+ export type ShellResourceState<T = unknown> = {
27
+ data: T | undefined;
28
+ error: Error | null;
29
+ isError: boolean;
30
+ isLoading: boolean;
31
+ isPending: boolean;
32
+ refetch: () => void;
33
+ };
34
+ export type ShellCommandState<TInput = unknown, TOutput = unknown> = {
35
+ data: TOutput | undefined;
36
+ error: Error | null;
37
+ isError: boolean;
38
+ isPending: boolean;
39
+ run: (input: TInput) => void;
40
+ runAsync: (input: TInput) => Promise<TOutput>;
41
+ };
42
+ export type ShellViewContext = {
43
+ app: ShellWorkbenchAppDefinition;
44
+ commands: Record<string, ShellCommandState>;
45
+ resources: Record<string, ShellResourceState>;
46
+ section: ShellWorkbenchSectionDefinition;
47
+ tab: ShellWorkbenchTab;
48
+ };
49
+ export type ShellWorkbenchTab<TTarget extends ShellTabTarget = ShellTabTarget> = ShellTab & {
50
+ sectionId: string;
51
+ title: string;
52
+ target: TTarget;
53
+ };
54
+ export type ShellTabInput<TTarget extends ShellTabTarget = ShellTabTarget> = {
55
+ id: string;
56
+ title: string;
57
+ description?: string;
58
+ target: TTarget;
59
+ tone?: ShellTabTone;
60
+ };
61
+ export type ShellSidebarItemDefinition = {
62
+ tab: ShellWorkbenchTab;
63
+ icon?: ReactNode;
64
+ openMode?: "preview" | "pinned";
65
+ };
66
+ export type ShellSidebarSectionDefinition = {
67
+ title: string;
68
+ items: ShellSidebarItemDefinition[];
69
+ };
70
+ export type ShellSidebarNewDefinition = {
71
+ noun: string;
72
+ tab: ShellWorkbenchTab;
73
+ };
74
+ export type ShellWorkbenchSectionDefinition = {
75
+ id: string;
76
+ label: string;
77
+ icon: ReactNode;
78
+ sidebar?: {
79
+ newItem?: ShellSidebarNewDefinition;
80
+ sections?: ShellSidebarSectionDefinition[];
81
+ };
82
+ status?: Value<ReactNode>;
83
+ tabs: ShellWorkbenchTab[];
84
+ view: Value<ShellViewNode>;
85
+ inspector?: Value<ShellInspectorField[]>;
86
+ };
87
+ export type ShellWorkbenchAppDefinition = {
88
+ id: string;
89
+ title: string;
90
+ apiBase?: string;
91
+ resources?: Record<string, ShellResourceDefinition>;
92
+ commands?: Record<string, ShellCommandDefinition>;
93
+ sections: ShellWorkbenchSectionDefinition[];
94
+ storageNamespace?: string;
95
+ };
96
+ export type ShellMetricDefinition = {
97
+ title: string;
98
+ value: ReactNode;
99
+ description?: ReactNode;
100
+ };
101
+ export type ShellRowStatus = "healthy" | "degraded" | "failed" | "unknown";
102
+ export type ShellRowDefinition = {
103
+ title: ReactNode;
104
+ detail?: ReactNode;
105
+ meta?: ReactNode;
106
+ status?: ShellRowStatus;
107
+ };
108
+ export type ShellInspectorField = {
109
+ label: string;
110
+ value: ReactNode;
111
+ };
112
+ export type ShellViewNode = {
113
+ type: "page";
114
+ title: ReactNode;
115
+ description?: ReactNode;
116
+ eyebrow?: ReactNode;
117
+ actions?: ShellViewNode[];
118
+ children?: ShellViewNode[];
119
+ } | {
120
+ type: "metrics";
121
+ items: ShellMetricDefinition[];
122
+ } | {
123
+ type: "columns";
124
+ children: ShellViewNode[];
125
+ } | {
126
+ type: "stack";
127
+ children: ShellViewNode[];
128
+ } | {
129
+ type: "section";
130
+ title: string;
131
+ children: ShellViewNode[];
132
+ } | {
133
+ type: "rows";
134
+ rows: ShellRowDefinition[];
135
+ empty?: {
136
+ title: string;
137
+ description: string;
138
+ };
139
+ } | {
140
+ type: "code";
141
+ content: string;
142
+ } | {
143
+ type: "empty";
144
+ title: string;
145
+ description: string;
146
+ } | {
147
+ type: "loading";
148
+ label?: string;
149
+ } | {
150
+ type: "error";
151
+ title: string;
152
+ description: string;
153
+ retry?: () => void;
154
+ } | {
155
+ type: "button";
156
+ label: string;
157
+ icon?: ReactNode;
158
+ command: string;
159
+ input?: unknown;
160
+ } | {
161
+ type: "refresh";
162
+ label?: string;
163
+ icon?: ReactNode;
164
+ resources: string[];
165
+ } | {
166
+ type: "open-resource-form";
167
+ command: string;
168
+ fieldLabel: string;
169
+ buttonLabel: string;
170
+ defaultValue?: string;
171
+ } | {
172
+ type: "conversation";
173
+ command: string;
174
+ defaultMessage?: string;
175
+ emptyTitle: string;
176
+ emptyDescription: string;
177
+ side?: ShellViewNode[];
178
+ output?: (result: unknown) => string;
179
+ };
180
+ export declare function defineWorkbenchTab<TTarget extends ShellTabTarget>(sectionId: string, tab: ShellTabInput<TTarget>): ShellWorkbenchTab<TTarget>;
181
+ export declare function defineWorkbenchApp(app: ShellWorkbenchAppDefinition): ShellWorkbenchAppDefinition;
182
+ export declare function ShellWorkbench({ app, initialSectionId, }: {
183
+ app: ShellWorkbenchAppDefinition;
184
+ initialSectionId?: string;
185
+ }): import("react/jsx-runtime").JSX.Element;
186
+ export declare function ShellErrorBoundaryView({ error, onRetry, title, }: {
187
+ error: Error;
188
+ onRetry: () => void;
189
+ title?: string;
190
+ }): import("react/jsx-runtime").JSX.Element;
191
+ export {};
192
+ //# sourceMappingURL=workbench.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench.d.ts","sourceRoot":"","sources":["../src/workbench.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,377 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { createContext, startTransition, useContext, useEffect, useMemo, useState, } from "react";
4
+ import { QueryCache, QueryClient, QueryClientProvider, useQueries, useQueryClient, } from "@tanstack/react-query";
5
+ import { RefreshCcwIcon } from "lucide-react";
6
+ import { AppShell as AvocadoShellApp } from "./components/shell/app-shell.js";
7
+ import { SidebarActionRow } from "./components/shell/primitives/sidebar-action-row.js";
8
+ import { SidebarFrame } from "./components/shell/primitives/sidebar-frame.js";
9
+ import { SidebarNewButton } from "./components/shell/primitives/sidebar-new-button.js";
10
+ import { SidebarSection } from "./components/shell/primitives/sidebar-section.js";
11
+ import { WorkspaceFormHeader, WorkspacePageFrame, } from "./components/shell/primitives/workspace-page.js";
12
+ import { InspectorField, InspectorValue, } from "./components/shell/primitives/inspector-panel.js";
13
+ import { ThemeProvider } from "./hooks/use-theme.js";
14
+ import { useShellRegistry } from "./hooks/shell/shell-registry-provider.js";
15
+ import { useShellStore } from "./hooks/shell/use-shell-store.js";
16
+ import { createShellApiClient, } from "./lib/shell/api.js";
17
+ import { logger } from "./lib/infra/logger.js";
18
+ import { Button } from "./components/ui/button.js";
19
+ import { Input } from "./components/ui/input.js";
20
+ import { Textarea } from "./components/ui/textarea.js";
21
+ import { TooltipProvider } from "./components/ui/tooltip.js";
22
+ import { EmptyState, ErrorState, LoadingState, } from "./components/system/async-state.js";
23
+ import { StatusDot } from "./components/system/status.js";
24
+ import { cn } from "./lib/utils.js";
25
+ const queryLog = logger.named("query");
26
+ const WorkbenchContext = createContext(null);
27
+ function read(value, ctx) {
28
+ return typeof value === "function"
29
+ ? value(ctx)
30
+ : value;
31
+ }
32
+ export function defineWorkbenchTab(sectionId, tab) {
33
+ return {
34
+ ...tab,
35
+ sectionId,
36
+ mode: sectionId,
37
+ label: tab.title,
38
+ };
39
+ }
40
+ export function defineWorkbenchApp(app) {
41
+ if (app.sections.length === 0) {
42
+ throw new Error("Shell apps must define at least one section.");
43
+ }
44
+ const sectionIds = app.sections.map((section) => section.id);
45
+ if (new Set(sectionIds).size !== sectionIds.length) {
46
+ throw new Error("Shell sections must have unique ids.");
47
+ }
48
+ return app;
49
+ }
50
+ function createQueryClient() {
51
+ return new QueryClient({
52
+ queryCache: new QueryCache({
53
+ onError: (error, query) => {
54
+ queryLog
55
+ .event("query.error")
56
+ .setError(error)
57
+ .set("queryKey", JSON.stringify(query.queryKey))
58
+ .send();
59
+ },
60
+ }),
61
+ defaultOptions: {
62
+ queries: {
63
+ staleTime: 30000,
64
+ retry: 2,
65
+ refetchOnWindowFocus: true,
66
+ },
67
+ },
68
+ });
69
+ }
70
+ export function ShellWorkbench({ app, initialSectionId, }) {
71
+ const [queryClient] = useState(createQueryClient);
72
+ return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(ThemeProvider, { children: _jsx(TooltipProvider, { delayDuration: 150, children: _jsx(WorkbenchContext.Provider, { value: app, children: _jsx(AvocadoShellApp, { appTitle: app.title, initialActiveMode: initialSectionId ?? app.sections[0]?.id, workspaces: app.sections.map((section) => toWorkspace(app, section)), children: _jsx(CompactWorkspace, {}) }) }) }) }) }));
73
+ }
74
+ export function ShellErrorBoundaryView({ error, onRetry, title = "Something went wrong", }) {
75
+ return (_jsx(ErrorState, { title: title, description: error.message, action: _jsx(Button, { size: "sm", onClick: onRetry, children: "Try again" }), className: "min-h-[60vh]" }));
76
+ }
77
+ function useWorkbenchApp() {
78
+ const app = useContext(WorkbenchContext);
79
+ if (!app)
80
+ throw new Error("Shell workbench context is not available.");
81
+ return app;
82
+ }
83
+ function useApiFetch(app) {
84
+ return useMemo(() => createShellApiClient({ baseUrl: app.apiBase }), [app]);
85
+ }
86
+ function useWorkbenchContext(section, tab) {
87
+ const app = useWorkbenchApp();
88
+ const apiFetch = useApiFetch(app);
89
+ const queryClient = useQueryClient();
90
+ const store = useShellStore();
91
+ const [commandSnapshots, setCommandSnapshots] = useState({});
92
+ const resourceEntries = Object.entries(app.resources ?? {});
93
+ const resourceSpecs = resourceEntries.map(([id, resource]) => {
94
+ const emptyCtx = {
95
+ app,
96
+ commands: {},
97
+ resources: {},
98
+ section,
99
+ tab,
100
+ };
101
+ const path = read(resource.path, emptyCtx);
102
+ const enabled = resource.enabled ? read(resource.enabled, emptyCtx) : true;
103
+ const init = resource.init ? read(resource.init, emptyCtx) : undefined;
104
+ return { enabled, id, init, path, resource };
105
+ });
106
+ const resourceQueries = useQueries({
107
+ queries: resourceSpecs.map(({ enabled, id, init, path, resource }) => ({
108
+ queryKey: [app.id, "resource", id, path, init?.method ?? "GET"],
109
+ queryFn: () => apiFetch(path, init),
110
+ enabled,
111
+ staleTime: resource.staleTime,
112
+ })),
113
+ });
114
+ const resources = Object.fromEntries(resourceSpecs.map(({ id }, index) => {
115
+ const query = resourceQueries[index];
116
+ return [
117
+ id,
118
+ {
119
+ data: query.data,
120
+ error: query.error,
121
+ isError: query.isError,
122
+ isLoading: query.isLoading,
123
+ isPending: query.isPending,
124
+ refetch: () => void query.refetch(),
125
+ },
126
+ ];
127
+ }));
128
+ const helpers = {
129
+ closeTab: (id) => store.closeTab(id, { source: "app_shell" }),
130
+ invalidate: (ids) => {
131
+ for (const id of ids) {
132
+ void queryClient.invalidateQueries({
133
+ predicate: (query) => query.queryKey[0] === app.id &&
134
+ query.queryKey[1] === "resource" &&
135
+ (ids.length === 0 || query.queryKey[2] === id),
136
+ });
137
+ }
138
+ },
139
+ openTab: (nextTab, options) => {
140
+ store.setActiveMode(nextTab.sectionId, { source: "app_shell" });
141
+ store.openTab(toInternalTab(nextTab), {
142
+ source: "app_shell",
143
+ preview: options?.preview,
144
+ });
145
+ },
146
+ pinTab: (id) => store.pinTab(id, { source: "app_shell" }),
147
+ };
148
+ const commands = Object.fromEntries(Object.entries(app.commands ?? {}).map(([id, command]) => {
149
+ const snapshot = commandSnapshots[id] ?? {
150
+ data: undefined,
151
+ error: null,
152
+ isError: false,
153
+ isPending: false,
154
+ };
155
+ const runAsync = async (input) => {
156
+ setCommandSnapshots((current) => ({
157
+ ...current,
158
+ [id]: {
159
+ data: current[id]?.data,
160
+ error: null,
161
+ isError: false,
162
+ isPending: true,
163
+ },
164
+ }));
165
+ try {
166
+ const ctx = {
167
+ app,
168
+ commands: {},
169
+ resources,
170
+ section,
171
+ tab,
172
+ };
173
+ const path = read(command.path, ctx);
174
+ const init = command.init ? read(command.init, ctx) : undefined;
175
+ const body = command.body ? command.body(input, ctx) : input;
176
+ const output = await apiFetch(path, {
177
+ method: "POST",
178
+ ...init,
179
+ ...(body == null ? {} : { json: body }),
180
+ });
181
+ setCommandSnapshots((current) => ({
182
+ ...current,
183
+ [id]: {
184
+ data: output,
185
+ error: null,
186
+ isError: false,
187
+ isPending: false,
188
+ },
189
+ }));
190
+ helpers.invalidate(command.invalidates ?? Object.keys(app.resources ?? {}));
191
+ command.onSuccess?.(output, input, helpers);
192
+ return output;
193
+ }
194
+ catch (error) {
195
+ const nextError = error instanceof Error ? error : new Error(String(error));
196
+ setCommandSnapshots((current) => ({
197
+ ...current,
198
+ [id]: {
199
+ data: current[id]?.data,
200
+ error: nextError,
201
+ isError: true,
202
+ isPending: false,
203
+ },
204
+ }));
205
+ throw nextError;
206
+ }
207
+ };
208
+ return [
209
+ id,
210
+ {
211
+ data: snapshot.data,
212
+ error: snapshot.error,
213
+ isError: snapshot.isError,
214
+ isPending: snapshot.isPending,
215
+ run: (input) => {
216
+ void runAsync(input);
217
+ },
218
+ runAsync,
219
+ },
220
+ ];
221
+ }));
222
+ return { app, commands, resources, section, tab };
223
+ }
224
+ function toInternalTab(tab) {
225
+ return {
226
+ ...tab,
227
+ mode: tab.sectionId,
228
+ label: tab.title,
229
+ };
230
+ }
231
+ function toWorkspace(app, section) {
232
+ const Sidebar = () => _jsx(WorkbenchSidebar, { section: section });
233
+ const Workspace = ({ tab }) => {
234
+ if (!tab)
235
+ return _jsx("div", { "aria-label": "No open tab", className: "h-full" });
236
+ return (_jsx(WorkbenchTab, { section: section, tab: ensureWorkbenchTab(section, tab) }));
237
+ };
238
+ const Inspector = section.inspector
239
+ ? ({ tab }) => {
240
+ if (!tab) {
241
+ return _jsx(EmptyState, { title: "No tab selected", description: "" });
242
+ }
243
+ return (_jsx(WorkbenchInspector, { section: section, tab: ensureWorkbenchTab(section, tab) }));
244
+ }
245
+ : undefined;
246
+ return {
247
+ mode: section.id,
248
+ label: section.label,
249
+ icon: section.icon,
250
+ Sidebar,
251
+ Workspace,
252
+ Inspector,
253
+ };
254
+ }
255
+ function ensureWorkbenchTab(section, tab) {
256
+ const known = section.tabs.find((candidate) => candidate.id === tab.id);
257
+ return {
258
+ ...tab,
259
+ sectionId: tab.sectionId ?? tab.mode,
260
+ title: tab.title ?? tab.label,
261
+ target: tab.target,
262
+ ...(known ?? {}),
263
+ };
264
+ }
265
+ function WorkbenchSidebar({ section, }) {
266
+ const store = useShellStore();
267
+ const activeTabId = useShellStore((state) => state.activeTabId);
268
+ const sidebar = section.sidebar;
269
+ const open = (tab, preview) => {
270
+ store.setActiveMode(section.id, { source: "sidebar" });
271
+ store.openTab(toInternalTab(tab), { source: "sidebar", preview });
272
+ };
273
+ return (_jsxs(SidebarFrame, { title: section.label, children: [sidebar?.newItem ? (_jsx(SidebarNewButton, { noun: sidebar.newItem.noun, onClick: () => open(sidebar.newItem.tab, true) })) : null, sidebar?.sections?.map((group) => (_jsx(SidebarSection, { title: group.title, children: group.items.map((item) => (_jsx(SidebarActionRow, { active: activeTabId === item.tab.id, "aria-selected": activeTabId === item.tab.id, description: item.tab.description, icon: item.icon, onClick: () => open(item.tab, (item.openMode ?? "preview") === "preview"), onDoubleClick: () => store.pinTab(item.tab.id, { source: "sidebar" }), role: "tab", title: item.tab.title }, item.tab.id))) }, group.title)))] }));
274
+ }
275
+ function WorkbenchTab({ section, tab, }) {
276
+ const ctx = useWorkbenchContext(section, tab);
277
+ return _jsx(_Fragment, { children: renderNode(read(section.view, ctx), ctx) });
278
+ }
279
+ function WorkbenchInspector({ section, tab, }) {
280
+ const ctx = useWorkbenchContext(section, tab);
281
+ const fields = section.inspector ? read(section.inspector, ctx) : [];
282
+ return (_jsx("div", { className: "space-y-2", children: fields.map((field) => (_jsx(InspectorField, { label: field.label, value: _jsx(InspectorValue, { children: field.value }) }, field.label))) }));
283
+ }
284
+ function renderNode(node, ctx) {
285
+ switch (node.type) {
286
+ case "page":
287
+ return (_jsxs(WorkspacePageFrame, { width: "full", children: [_jsx(WorkspaceFormHeader, { actions: node.actions?.map((action, index) => (_jsx("span", { children: renderNode(action, ctx) }, index))), description: node.description, eyebrow: node.eyebrow, title: String(node.title) }), _jsx("div", { className: "space-y-6", children: node.children?.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) })] }));
288
+ case "metrics":
289
+ return (_jsx("div", { className: "grid gap-3 md:grid-cols-2 xl:grid-cols-4", children: node.items.map((item) => (_jsx(Metric, { ...item }, item.title))) }));
290
+ case "columns":
291
+ return (_jsx("div", { className: "grid gap-5 xl:grid-cols-[minmax(0,1fr)_minmax(20rem,0.7fr)]", children: node.children.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) }));
292
+ case "stack":
293
+ return (_jsx("div", { className: "space-y-5", children: node.children.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) }));
294
+ case "section":
295
+ return (_jsxs("section", { children: [_jsx("h2", { className: "mb-3 text-[13px] font-semibold text-fg", children: node.title }), _jsx("div", { className: "space-y-3", children: node.children.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) })] }));
296
+ case "rows":
297
+ return node.rows.length > 0 ? (_jsx("div", { className: "space-y-2", children: node.rows.map((row, index) => (_jsx(DataRow, { ...row }, index))) })) : node.empty ? (_jsx(EmptyState, { title: node.empty.title, description: node.empty.description, className: "min-h-[14rem]" })) : null;
298
+ case "code":
299
+ return (_jsx("pre", { className: "max-h-[32rem] min-h-[22rem] overflow-auto rounded-[10px] border border-border bg-bg-card p-4 font-mono text-[12px] leading-5 text-fg", children: node.content }));
300
+ case "empty":
301
+ return _jsx(EmptyState, { title: node.title, description: node.description });
302
+ case "loading":
303
+ return _jsx(LoadingState, { label: node.label });
304
+ case "error":
305
+ return (_jsx(ErrorState, { title: node.title, description: node.description, action: node.retry ? (_jsxs(Button, { size: "sm", variant: "outline", onClick: node.retry, children: [_jsx(RefreshCcwIcon, { className: "size-3.5" }), "Retry"] })) : undefined }));
306
+ case "button": {
307
+ const command = ctx.commands[node.command];
308
+ return (_jsxs(Button, { disabled: command?.isPending, onClick: () => command?.run(node.input), children: [node.icon, command?.isPending ? "Working..." : node.label] }));
309
+ }
310
+ case "refresh":
311
+ return (_jsxs(Button, { size: "sm", variant: "outline", onClick: () => node.resources.forEach((resourceId) => ctx.resources[resourceId]?.refetch()), children: [node.icon, node.label ?? "Refresh"] }));
312
+ case "open-resource-form":
313
+ return _jsx(OpenResourceForm, { node: node, ctx: ctx });
314
+ case "conversation":
315
+ return _jsx(Conversation, { node: node, ctx: ctx });
316
+ }
317
+ }
318
+ function Metric({ description, title, value }) {
319
+ return (_jsxs("div", { className: "rounded-[10px] border border-border bg-bg-card px-4 py-[14px]", children: [_jsx("p", { className: "mb-1.5 text-[11px] font-medium tracking-[0.06em] text-fg-tertiary uppercase", children: title }), _jsx("p", { className: "font-mono text-[22px] leading-[1.2] font-semibold text-fg", children: value }), description ? (_jsx("p", { className: "mt-1 text-[11.5px] text-fg-tertiary", children: description })) : null] }));
320
+ }
321
+ function DataRow({ detail, meta, status, title }) {
322
+ return (_jsxs("div", { className: "rounded-[10px] border border-border bg-bg-card px-4 py-3", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex min-w-0 items-center gap-2 text-[12px] font-medium text-fg", children: [_jsx(StatusDot, { status: status ?? "unknown", className: "shrink-0" }), _jsx("span", { className: "truncate", children: title })] }), meta ? (_jsx("div", { className: "shrink-0 text-[11px] text-fg-tertiary", children: meta })) : null] }), detail ? (_jsx("div", { className: "mt-1 truncate text-[11px] text-fg-tertiary", children: detail })) : null] }));
323
+ }
324
+ function OpenResourceForm({ ctx, node, }) {
325
+ const [value, setValue] = useState(node.defaultValue ?? "");
326
+ const command = ctx.commands[node.command];
327
+ return (_jsxs("div", { className: "max-w-xl space-y-3", children: [_jsx(Input, { "aria-label": node.fieldLabel, onChange: (event) => setValue(event.target.value), value: value }), _jsx(Button, { className: "w-full", disabled: command?.isPending || value.trim().length === 0, onClick: () => command?.run(value), children: command?.isPending ? "Opening..." : node.buttonLabel }), command?.isError ? (_jsx("div", { className: "rounded-md border border-destructive/30 bg-destructive/8 px-3 py-2 text-[12px] text-fg", children: command.error?.message ?? "Command failed." })) : null] }));
328
+ }
329
+ function Conversation({ ctx, node, }) {
330
+ const command = ctx.commands[node.command];
331
+ const defaultMessage = node.defaultMessage ?? "";
332
+ const [message, setMessage] = useState(defaultMessage);
333
+ const [turns, setTurns] = useState([]);
334
+ useEffect(() => {
335
+ if (message === defaultMessage)
336
+ return;
337
+ if (message.trim().length === 0)
338
+ return;
339
+ useShellStore.getState().pinTab(ctx.tab.id, { source: "app_shell" });
340
+ }, [ctx.tab.id, defaultMessage, message]);
341
+ const submit = () => {
342
+ const nextMessage = message.trim();
343
+ if (!nextMessage || !command)
344
+ return;
345
+ setTurns((current) => [...current, { role: "user", content: nextMessage }]);
346
+ command
347
+ .runAsync({ message: nextMessage })
348
+ .then((result) => {
349
+ const output = node.output
350
+ ? node.output(result)
351
+ : typeof result === "string"
352
+ ? result
353
+ : JSON.stringify(result, null, 2);
354
+ setTurns((current) => [
355
+ ...current,
356
+ { role: "assistant", content: output || "No output." },
357
+ ]);
358
+ startTransition(() => useShellStore.getState().pinTab(ctx.tab.id));
359
+ })
360
+ .catch((error) => {
361
+ setTurns((current) => [
362
+ ...current,
363
+ { role: "assistant", content: error.message },
364
+ ]);
365
+ });
366
+ };
367
+ return (_jsxs("div", { className: "grid min-h-[34rem] gap-4 lg:grid-cols-[minmax(0,1fr)_320px]", children: [_jsxs("div", { className: "flex min-h-0 flex-col rounded-[10px] border border-border bg-bg-card", children: [_jsx("div", { className: "min-h-0 flex-1 overflow-y-auto p-4", children: turns.length === 0 && !command?.data ? (_jsx(EmptyState, { title: node.emptyTitle, description: node.emptyDescription, className: "min-h-[22rem]" })) : (_jsx("div", { className: "space-y-3", children: turns.map((turn, index) => (_jsxs("div", { className: cn("rounded-lg border px-3 py-2 text-[13px] leading-6", turn.role === "user"
368
+ ? "border-primary/25 bg-primary/8"
369
+ : "border-border bg-bg-elevated"), children: [_jsx("div", { className: "mb-1 text-[11px] font-semibold tracking-[0.06em] text-fg-tertiary uppercase", children: turn.role }), _jsx("pre", { className: "whitespace-pre-wrap font-sans text-fg", children: turn.content })] }, `${turn.role}-${index}`))) })) }), _jsxs("div", { className: "border-t border-border p-3", children: [_jsx(Textarea, { className: "min-h-24 resize-none", onChange: (event) => setMessage(event.target.value), value: message }), _jsx("div", { className: "mt-3 flex items-center justify-end gap-3", children: _jsx(Button, { disabled: command?.isPending || message.trim().length === 0, onClick: submit, children: "Send" }) })] })] }), node.side ? (_jsx("div", { className: "space-y-3", children: node.side.map((child, index) => (_jsx("div", { children: renderNode(child, ctx) }, index))) })) : null] }));
370
+ }
371
+ function CompactWorkspace() {
372
+ const { activeTabWorkspace, activeModeWorkspace, activeTab } = useShellRegistry();
373
+ const Workspace = activeTabWorkspace?.Workspace ?? activeModeWorkspace?.Workspace ?? null;
374
+ const tab = activeTabWorkspace ? activeTab : null;
375
+ return Workspace ? _jsx(Workspace, { tab: tab }) : null;
376
+ }
377
+ //# sourceMappingURL=workbench.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workbench.js","sourceRoot":"","sources":["../src/workbench.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elench/shell",
3
- "version": "0.1.7",
3
+ "version": "0.1.9",
4
4
  "description": "The Avocado-derived Elench desktop shell packaged behind a public domain API.",
5
5
  "type": "module",
6
6
  "private": false,
@@ -29,6 +29,7 @@
29
29
  "react-dom": "^19.0.0"
30
30
  },
31
31
  "dependencies": {
32
+ "@tanstack/react-query": "^5.97.0",
32
33
  "class-variance-authority": "^0.7.1",
33
34
  "clsx": "^2.1.1",
34
35
  "cmdk": "^1.1.1",