@nuvin/components 0.1.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/dist/MarkdownBody-XBNXK6P4.js +121 -0
- package/dist/app/App.d.ts +24 -0
- package/dist/app/App.d.ts.map +1 -0
- package/dist/app/AppShell.d.ts +13 -0
- package/dist/app/AppShell.d.ts.map +1 -0
- package/dist/app/Header.d.ts +11 -0
- package/dist/app/Header.d.ts.map +1 -0
- package/dist/app/SessionSubHeader.d.ts +15 -0
- package/dist/app/SessionSubHeader.d.ts.map +1 -0
- package/dist/app/WorkspacePanel.d.ts +15 -0
- package/dist/app/WorkspacePanel.d.ts.map +1 -0
- package/dist/app/app-shell.styles.d.ts +11 -0
- package/dist/app/app-shell.styles.d.ts.map +1 -0
- package/dist/app/route-components.d.ts +46 -0
- package/dist/app/route-components.d.ts.map +1 -0
- package/dist/app/routes.d.ts +11 -0
- package/dist/app/routes.d.ts.map +1 -0
- package/dist/assets/fonts/inter-latin-400-normal.woff2 +0 -0
- package/dist/assets/fonts/inter-latin-500-normal.woff2 +0 -0
- package/dist/assets/fonts/inter-latin-600-normal.woff2 +0 -0
- package/dist/assets/fonts/inter-latin-700-normal.woff2 +0 -0
- package/dist/assets/fonts/jetbrains-mono-latin-400-normal.woff2 +0 -0
- package/dist/assets/fonts/jetbrains-mono-latin-500-normal.woff2 +0 -0
- package/dist/assets/fonts/jetbrains-mono-latin-600-normal.woff2 +0 -0
- package/dist/assets/fonts/jetbrains-mono-latin-700-normal.woff2 +0 -0
- package/dist/chunk-TLWTUPOJ.js +10 -0
- package/dist/features/account/auth-gate.d.ts +17 -0
- package/dist/features/account/auth-gate.d.ts.map +1 -0
- package/dist/features/account/index.d.ts +3 -0
- package/dist/features/account/index.d.ts.map +1 -0
- package/dist/features/composer/Composer.d.ts +39 -0
- package/dist/features/composer/Composer.d.ts.map +1 -0
- package/dist/features/composer/QuestionCard.d.ts +21 -0
- package/dist/features/composer/QuestionCard.d.ts.map +1 -0
- package/dist/features/composer/context-status.d.ts +6 -0
- package/dist/features/composer/context-status.d.ts.map +1 -0
- package/dist/features/composer/index.d.ts +2 -0
- package/dist/features/composer/index.d.ts.map +1 -0
- package/dist/features/config/CloudProviderSetup.d.ts +12 -0
- package/dist/features/config/CloudProviderSetup.d.ts.map +1 -0
- package/dist/features/config/OnboardingGate.d.ts +22 -0
- package/dist/features/config/OnboardingGate.d.ts.map +1 -0
- package/dist/features/config/ProviderManager.d.ts +15 -0
- package/dist/features/config/ProviderManager.d.ts.map +1 -0
- package/dist/features/config/WorkspaceManager.d.ts +13 -0
- package/dist/features/config/WorkspaceManager.d.ts.map +1 -0
- package/dist/features/config/config-client.d.ts +49 -0
- package/dist/features/config/config-client.d.ts.map +1 -0
- package/dist/features/config/index.d.ts +10 -0
- package/dist/features/config/index.d.ts.map +1 -0
- package/dist/features/config/protocol-config-client.d.ts +22 -0
- package/dist/features/config/protocol-config-client.d.ts.map +1 -0
- package/dist/features/config/rest-config-client.d.ts +4 -0
- package/dist/features/config/rest-config-client.d.ts.map +1 -0
- package/dist/features/config/use-provider-status.d.ts +8 -0
- package/dist/features/config/use-provider-status.d.ts.map +1 -0
- package/dist/features/daemon-switcher/DaemonAvatar.d.ts +16 -0
- package/dist/features/daemon-switcher/DaemonAvatar.d.ts.map +1 -0
- package/dist/features/daemon-switcher/DaemonRail.d.ts +18 -0
- package/dist/features/daemon-switcher/DaemonRail.d.ts.map +1 -0
- package/dist/features/daemon-switcher/DaemonSwitcher.d.ts +17 -0
- package/dist/features/daemon-switcher/DaemonSwitcher.d.ts.map +1 -0
- package/dist/features/daemon-switcher/index.d.ts +7 -0
- package/dist/features/daemon-switcher/index.d.ts.map +1 -0
- package/dist/features/diff/DiffView.d.ts +13 -0
- package/dist/features/diff/DiffView.d.ts.map +1 -0
- package/dist/features/diff/diff.d.ts +23 -0
- package/dist/features/diff/diff.d.ts.map +1 -0
- package/dist/features/diff/index.d.ts +4 -0
- package/dist/features/diff/index.d.ts.map +1 -0
- package/dist/features/launcher/SessionItem.d.ts +12 -0
- package/dist/features/launcher/SessionItem.d.ts.map +1 -0
- package/dist/features/launcher/SessionSidebar.d.ts +24 -0
- package/dist/features/launcher/SessionSidebar.d.ts.map +1 -0
- package/dist/features/launcher/index.d.ts +5 -0
- package/dist/features/launcher/index.d.ts.map +1 -0
- package/dist/features/launcher/session-sidebar-model.d.ts +77 -0
- package/dist/features/launcher/session-sidebar-model.d.ts.map +1 -0
- package/dist/features/launcher/session-status.d.ts +9 -0
- package/dist/features/launcher/session-status.d.ts.map +1 -0
- package/dist/features/launcher/use-daemon-history.d.ts +17 -0
- package/dist/features/launcher/use-daemon-history.d.ts.map +1 -0
- package/dist/features/new-session/StartScreen.d.ts +31 -0
- package/dist/features/new-session/StartScreen.d.ts.map +1 -0
- package/dist/features/new-session/index.d.ts +3 -0
- package/dist/features/new-session/index.d.ts.map +1 -0
- package/dist/features/new-session/start-screen.styles.d.ts +46 -0
- package/dist/features/new-session/start-screen.styles.d.ts.map +1 -0
- package/dist/features/picker/Picker.d.ts +23 -0
- package/dist/features/picker/Picker.d.ts.map +1 -0
- package/dist/features/picker/PickerSession.d.ts +8 -0
- package/dist/features/picker/PickerSession.d.ts.map +1 -0
- package/dist/features/picker/index.d.ts +6 -0
- package/dist/features/picker/index.d.ts.map +1 -0
- package/dist/features/picker/picker-model.d.ts +31 -0
- package/dist/features/picker/picker-model.d.ts.map +1 -0
- package/dist/features/tabs/Tab.d.ts +8 -0
- package/dist/features/tabs/Tab.d.ts.map +1 -0
- package/dist/features/tabs/TabBar.d.ts +7 -0
- package/dist/features/tabs/TabBar.d.ts.map +1 -0
- package/dist/features/tabs/index.d.ts +8 -0
- package/dist/features/tabs/index.d.ts.map +1 -0
- package/dist/features/tabs/tab-model.d.ts +39 -0
- package/dist/features/tabs/tab-model.d.ts.map +1 -0
- package/dist/features/tabs/tab.styles.d.ts +9 -0
- package/dist/features/tabs/tab.styles.d.ts.map +1 -0
- package/dist/features/theme/ThemeToggle.d.ts +8 -0
- package/dist/features/theme/ThemeToggle.d.ts.map +1 -0
- package/dist/features/theme/index.d.ts +5 -0
- package/dist/features/theme/index.d.ts.map +1 -0
- package/dist/features/theme/themes.d.ts +13 -0
- package/dist/features/theme/themes.d.ts.map +1 -0
- package/dist/features/theme/use-theme-mode.d.ts +3 -0
- package/dist/features/theme/use-theme-mode.d.ts.map +1 -0
- package/dist/features/transcript/components/AssistantMessage.d.ts +21 -0
- package/dist/features/transcript/components/AssistantMessage.d.ts.map +1 -0
- package/dist/features/transcript/components/ChildMessagesContext.d.ts +27 -0
- package/dist/features/transcript/components/ChildMessagesContext.d.ts.map +1 -0
- package/dist/features/transcript/components/CodeBlock.d.ts +5 -0
- package/dist/features/transcript/components/CodeBlock.d.ts.map +1 -0
- package/dist/features/transcript/components/MarkdownBody.d.ts +17 -0
- package/dist/features/transcript/components/MarkdownBody.d.ts.map +1 -0
- package/dist/features/transcript/components/MessageList.d.ts +24 -0
- package/dist/features/transcript/components/MessageList.d.ts.map +1 -0
- package/dist/features/transcript/components/NestedMessageListContext.d.ts +18 -0
- package/dist/features/transcript/components/NestedMessageListContext.d.ts.map +1 -0
- package/dist/features/transcript/components/ProcessingIndicator.d.ts +5 -0
- package/dist/features/transcript/components/ProcessingIndicator.d.ts.map +1 -0
- package/dist/features/transcript/components/styles-test-utils.d.ts +6 -0
- package/dist/features/transcript/components/styles-test-utils.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/BareLine.d.ts +14 -0
- package/dist/features/transcript/components/tool-display/BareLine.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/Card.d.ts +31 -0
- package/dist/features/transcript/components/tool-display/Card.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/Turn.d.ts +15 -0
- package/dist/features/transcript/components/tool-display/Turn.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/index.d.ts +3 -0
- package/dist/features/transcript/components/tool-display/index.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/AskUserRenderer.d.ts +4 -0
- package/dist/features/transcript/components/tool-display/renderers/AskUserRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/AssignTaskRenderer.d.ts +9 -0
- package/dist/features/transcript/components/tool-display/renderers/AssignTaskRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/BareToolRenderer.d.ts +8 -0
- package/dist/features/transcript/components/tool-display/renderers/BareToolRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/BashRenderer.d.ts +11 -0
- package/dist/features/transcript/components/tool-display/renderers/BashRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/FileEditRenderer.d.ts +4 -0
- package/dist/features/transcript/components/tool-display/renderers/FileEditRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/FileNewRenderer.d.ts +4 -0
- package/dist/features/transcript/components/tool-display/renderers/FileNewRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/TodoWriteRenderer.d.ts +4 -0
- package/dist/features/transcript/components/tool-display/renderers/TodoWriteRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/renderers/UnknownRenderer.d.ts +4 -0
- package/dist/features/transcript/components/tool-display/renderers/UnknownRenderer.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/tool-icon.d.ts +4 -0
- package/dist/features/transcript/components/tool-display/tool-icon.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/tool-meta.d.ts +9 -0
- package/dist/features/transcript/components/tool-display/tool-meta.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/tool-variants.d.ts +8 -0
- package/dist/features/transcript/components/tool-display/tool-variants.d.ts.map +1 -0
- package/dist/features/transcript/components/tool-display/types.d.ts +11 -0
- package/dist/features/transcript/components/tool-display/types.d.ts.map +1 -0
- package/dist/features/transcript/hooks/use-live-tick.d.ts +8 -0
- package/dist/features/transcript/hooks/use-live-tick.d.ts.map +1 -0
- package/dist/features/transcript/hooks/use-revealed-text.d.ts +28 -0
- package/dist/features/transcript/hooks/use-revealed-text.d.ts.map +1 -0
- package/dist/features/transcript/index.d.ts +6 -0
- package/dist/features/transcript/index.d.ts.map +1 -0
- package/dist/features/transcript/lib/message-groups.d.ts +9 -0
- package/dist/features/transcript/lib/message-groups.d.ts.map +1 -0
- package/dist/features/transcript/lib/preview-lines.d.ts +27 -0
- package/dist/features/transcript/lib/preview-lines.d.ts.map +1 -0
- package/dist/features/transcript/lib/processing-state.d.ts +16 -0
- package/dist/features/transcript/lib/processing-state.d.ts.map +1 -0
- package/dist/features/transcript/lib/reasoning-label.d.ts +9 -0
- package/dist/features/transcript/lib/reasoning-label.d.ts.map +1 -0
- package/dist/features/transcript/lib/tool-format-utils.d.ts +29 -0
- package/dist/features/transcript/lib/tool-format-utils.d.ts.map +1 -0
- package/dist/features/transcript/lib/tool-formatters.d.ts +45 -0
- package/dist/features/transcript/lib/tool-formatters.d.ts.map +1 -0
- package/dist/features/transcript/lib/tool-status.d.ts +39 -0
- package/dist/features/transcript/lib/tool-status.d.ts.map +1 -0
- package/dist/features/transcript/lib/transcript-rows.d.ts +15 -0
- package/dist/features/transcript/lib/transcript-rows.d.ts.map +1 -0
- package/dist/features/transcript/lib/turn-groups.d.ts +20 -0
- package/dist/features/transcript/lib/turn-groups.d.ts.map +1 -0
- package/dist/features/transcript/lib/turn-summary.d.ts +11 -0
- package/dist/features/transcript/lib/turn-summary.d.ts.map +1 -0
- package/dist/features/workflows/WorkflowsPanel.d.ts +11 -0
- package/dist/features/workflows/WorkflowsPanel.d.ts.map +1 -0
- package/dist/features/workflows/index.d.ts +3 -0
- package/dist/features/workflows/index.d.ts.map +1 -0
- package/dist/index.d.ts +45 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7877 -0
- package/dist/session/client-commands.d.ts +26 -0
- package/dist/session/client-commands.d.ts.map +1 -0
- package/dist/session/commands.d.ts +9 -0
- package/dist/session/commands.d.ts.map +1 -0
- package/dist/session/directory-source.d.ts +101 -0
- package/dist/session/directory-source.d.ts.map +1 -0
- package/dist/session/directory-status.d.ts +8 -0
- package/dist/session/directory-status.d.ts.map +1 -0
- package/dist/session/directory.d.ts +41 -0
- package/dist/session/directory.d.ts.map +1 -0
- package/dist/session/index.d.ts +16 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/snapshot.d.ts +11 -0
- package/dist/session/snapshot.d.ts.map +1 -0
- package/dist/session/store.d.ts +96 -0
- package/dist/session/store.d.ts.map +1 -0
- package/dist/session/tool-timing.d.ts +14 -0
- package/dist/session/tool-timing.d.ts.map +1 -0
- package/dist/session/transport.d.ts +187 -0
- package/dist/session/transport.d.ts.map +1 -0
- package/dist/session/types.d.ts +73 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/use-directory.d.ts +54 -0
- package/dist/session/use-directory.d.ts.map +1 -0
- package/dist/session/use-session-transport.d.ts +10 -0
- package/dist/session/use-session-transport.d.ts.map +1 -0
- package/dist/shared/hooks/use-stick-to-bottom-sentinel.d.ts +64 -0
- package/dist/shared/hooks/use-stick-to-bottom-sentinel.d.ts.map +1 -0
- package/dist/shared/lib/navigation.d.ts +20 -0
- package/dist/shared/lib/navigation.d.ts.map +1 -0
- package/dist/shared/lib/toast.d.ts +35 -0
- package/dist/shared/lib/toast.d.ts.map +1 -0
- package/dist/shared/lib/utils.d.ts +3 -0
- package/dist/shared/lib/utils.d.ts.map +1 -0
- package/dist/shared/ui/CopyButton.d.ts +6 -0
- package/dist/shared/ui/CopyButton.d.ts.map +1 -0
- package/dist/shared/ui/avatar.d.ts +9 -0
- package/dist/shared/ui/avatar.d.ts.map +1 -0
- package/dist/shared/ui/badge.d.ts +8 -0
- package/dist/shared/ui/badge.d.ts.map +1 -0
- package/dist/shared/ui/button.d.ts +11 -0
- package/dist/shared/ui/button.d.ts.map +1 -0
- package/dist/shared/ui/command.d.ts +10 -0
- package/dist/shared/ui/command.d.ts.map +1 -0
- package/dist/shared/ui/confirm-dialog.d.ts +17 -0
- package/dist/shared/ui/confirm-dialog.d.ts.map +1 -0
- package/dist/shared/ui/dropdown-menu.d.ts +9 -0
- package/dist/shared/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/shared/ui/input.d.ts +3 -0
- package/dist/shared/ui/input.d.ts.map +1 -0
- package/dist/shared/ui/kbd.d.ts +3 -0
- package/dist/shared/ui/kbd.d.ts.map +1 -0
- package/dist/shared/ui/popover.d.ts +7 -0
- package/dist/shared/ui/popover.d.ts.map +1 -0
- package/dist/shared/ui/scroll-area.d.ts +5 -0
- package/dist/shared/ui/scroll-area.d.ts.map +1 -0
- package/dist/shared/ui/tabs.d.ts +7 -0
- package/dist/shared/ui/tabs.d.ts.map +1 -0
- package/dist/shared/ui/toast.d.ts +7 -0
- package/dist/shared/ui/toast.d.ts.map +1 -0
- package/dist/shared/ui/tooltip.d.ts +7 -0
- package/dist/shared/ui/tooltip.d.ts.map +1 -0
- package/dist/styles/base.css +49 -0
- package/dist/styles/components.css +206 -0
- package/dist/styles/effects.css +76 -0
- package/dist/styles/fonts.css +49 -0
- package/dist/styles/index.css +14 -0
- package/dist/styles/styles.test.ts +45 -0
- package/dist/styles/themes.css +33 -0
- package/dist/styles/tokens.css +245 -0
- package/dist/styles/tokens.test.ts +113 -0
- package/dist/test-setup.d.ts +29 -0
- package/dist/test-setup.d.ts.map +1 -0
- package/package.json +71 -0
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import {
|
|
2
|
+
cn
|
|
3
|
+
} from "./chunk-TLWTUPOJ.js";
|
|
4
|
+
|
|
5
|
+
// src/features/transcript/components/MarkdownBody.tsx
|
|
6
|
+
import "katex/dist/katex.min.css";
|
|
7
|
+
import "streamdown/styles.css";
|
|
8
|
+
import rehypeKatex from "rehype-katex";
|
|
9
|
+
import remarkMath from "remark-math";
|
|
10
|
+
import { Streamdown } from "streamdown";
|
|
11
|
+
|
|
12
|
+
// src/features/transcript/components/CodeBlock.tsx
|
|
13
|
+
import { useState } from "react";
|
|
14
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
|
+
function CodeBlock({ code, language }) {
|
|
16
|
+
const [copied, setCopied] = useState(false);
|
|
17
|
+
const handleCopy = () => {
|
|
18
|
+
void navigator.clipboard?.writeText(code).then(() => {
|
|
19
|
+
setCopied(true);
|
|
20
|
+
setTimeout(() => setCopied(false), 1500);
|
|
21
|
+
}).catch(() => {
|
|
22
|
+
});
|
|
23
|
+
};
|
|
24
|
+
return /* @__PURE__ */ jsxs("div", { className: "group relative my-3 overflow-hidden rounded-lg border border-border-default bg-surface-inset", children: [
|
|
25
|
+
/* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between border-b border-border-subtle px-3 py-1.5", children: [
|
|
26
|
+
/* @__PURE__ */ jsx("span", { className: "font-mono text-[10px] uppercase tracking-wide text-fg-tertiary", children: language || "text" }),
|
|
27
|
+
/* @__PURE__ */ jsx(
|
|
28
|
+
"button",
|
|
29
|
+
{
|
|
30
|
+
type: "button",
|
|
31
|
+
onClick: handleCopy,
|
|
32
|
+
className: cn(
|
|
33
|
+
"rounded px-1.5 py-0.5 font-mono text-[10px] text-fg-tertiary transition",
|
|
34
|
+
"opacity-0 hover:text-fg-secondary group-hover:opacity-100 focus-visible:opacity-100"
|
|
35
|
+
),
|
|
36
|
+
children: copied ? "Copied" : "Copy"
|
|
37
|
+
}
|
|
38
|
+
)
|
|
39
|
+
] }),
|
|
40
|
+
/* @__PURE__ */ jsx("pre", { className: "overflow-x-auto px-3 py-2.5 text-[12.5px] leading-[1.55]", children: /* @__PURE__ */ jsx("code", { className: "font-mono text-fg-primary", children: code }) })
|
|
41
|
+
] });
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// src/features/transcript/components/MarkdownBody.tsx
|
|
45
|
+
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
46
|
+
var mathPlugin = {
|
|
47
|
+
name: "katex",
|
|
48
|
+
type: "math",
|
|
49
|
+
remarkPlugin: remarkMath,
|
|
50
|
+
rehypePlugin: rehypeKatex
|
|
51
|
+
};
|
|
52
|
+
function denormalizeHref(href) {
|
|
53
|
+
if (!href) return href;
|
|
54
|
+
const match = /^(https?:\/\/[^/?#]+)\/$/.exec(href);
|
|
55
|
+
return match ? match[1] : href;
|
|
56
|
+
}
|
|
57
|
+
var proseClasses = cn(
|
|
58
|
+
"text-[13.5px] leading-[1.6] text-fg-primary",
|
|
59
|
+
"[&>*:first-child]:mt-0 [&>*:last-child]:mb-0",
|
|
60
|
+
"[&_p]:my-2",
|
|
61
|
+
"[&_ul]:my-2 [&_ul]:list-disc [&_ul]:pl-5 [&_ol]:my-2 [&_ol]:list-decimal [&_ol]:pl-5 [&_li]:my-0.5",
|
|
62
|
+
"[&_h1]:mb-1.5 [&_h1]:mt-3 [&_h1]:text-[16px] [&_h1]:font-semibold",
|
|
63
|
+
"[&_h2]:mb-1.5 [&_h2]:mt-3 [&_h2]:text-[15px] [&_h2]:font-semibold",
|
|
64
|
+
"[&_h3]:mb-1 [&_h3]:mt-2.5 [&_h3]:text-[14px] [&_h3]:font-semibold",
|
|
65
|
+
"[&_blockquote]:border-l-2 [&_blockquote]:border-border-strong [&_blockquote]:pl-3 [&_blockquote]:text-fg-secondary"
|
|
66
|
+
// Tables are styled by streamdown's own table block (themed via the shadcn
|
|
67
|
+
// token bridge in tokens.css); don't hand-style th/td here or the two conflict.
|
|
68
|
+
);
|
|
69
|
+
function MarkdownBody({
|
|
70
|
+
text,
|
|
71
|
+
streaming = false
|
|
72
|
+
}) {
|
|
73
|
+
return /* @__PURE__ */ jsx2("div", { className: proseClasses, children: /* @__PURE__ */ jsx2(
|
|
74
|
+
Streamdown,
|
|
75
|
+
{
|
|
76
|
+
mode: streaming ? "streaming" : "static",
|
|
77
|
+
plugins: { math: mathPlugin },
|
|
78
|
+
components: {
|
|
79
|
+
// Intercept block code at the <pre> level: read the language + raw text
|
|
80
|
+
// from the hast node so bare (no-language) fences are still treated as
|
|
81
|
+
// blocks, then render our dependency-free CodeBlock (no Shiki).
|
|
82
|
+
pre: ({ node }) => {
|
|
83
|
+
const codeNode = node?.children?.[0];
|
|
84
|
+
const classes = codeNode?.properties?.className;
|
|
85
|
+
const className = Array.isArray(classes) ? classes.join(" ") : String(classes ?? "");
|
|
86
|
+
const language = /language-(\w+)/.exec(className)?.[1] ?? "";
|
|
87
|
+
const code = (codeNode?.children?.[0]?.value ?? "").replace(/\n$/, "");
|
|
88
|
+
return /* @__PURE__ */ jsx2(CodeBlock, { code, language });
|
|
89
|
+
},
|
|
90
|
+
// Inline code only (block code is intercepted at the <pre> level above).
|
|
91
|
+
inlineCode: ({ className, children }) => /* @__PURE__ */ jsx2(
|
|
92
|
+
"code",
|
|
93
|
+
{
|
|
94
|
+
className: cn(
|
|
95
|
+
"rounded bg-surface-inset px-1 py-0.5 font-mono text-[0.85em] text-fg-primary",
|
|
96
|
+
className
|
|
97
|
+
),
|
|
98
|
+
children
|
|
99
|
+
}
|
|
100
|
+
),
|
|
101
|
+
// streamdown's default renders bold as a styled <span>; emit a real
|
|
102
|
+
// <strong> so the rendered markup uses semantic emphasis elements.
|
|
103
|
+
strong: ({ children }) => /* @__PURE__ */ jsx2("strong", { className: "font-semibold", children }),
|
|
104
|
+
a: ({ href, children }) => /* @__PURE__ */ jsx2(
|
|
105
|
+
"a",
|
|
106
|
+
{
|
|
107
|
+
href: denormalizeHref(href),
|
|
108
|
+
target: "_blank",
|
|
109
|
+
rel: "noreferrer noopener",
|
|
110
|
+
className: "text-accent underline underline-offset-2 hover:text-accent-hover",
|
|
111
|
+
children
|
|
112
|
+
}
|
|
113
|
+
)
|
|
114
|
+
},
|
|
115
|
+
children: text
|
|
116
|
+
}
|
|
117
|
+
) });
|
|
118
|
+
}
|
|
119
|
+
export {
|
|
120
|
+
MarkdownBody as default
|
|
121
|
+
};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ComponentType, ReactNode } from "react";
|
|
2
|
+
import { type ConfigClient } from "@/features/config";
|
|
3
|
+
import { type DirectorySource } from "@/session";
|
|
4
|
+
export type AppProps = {
|
|
5
|
+
configClient?: ConfigClient;
|
|
6
|
+
/** Cloud: the account-backed daemon source (default: local /api/servers). */
|
|
7
|
+
directorySource?: DirectorySource;
|
|
8
|
+
slots?: {
|
|
9
|
+
railFooter?: ReactNode;
|
|
10
|
+
AddDaemonModal?: ComponentType<{
|
|
11
|
+
open: boolean;
|
|
12
|
+
onClose: () => void;
|
|
13
|
+
}>;
|
|
14
|
+
};
|
|
15
|
+
/** Onboarding mode (web spec §7): "global" = today's app-wide OnboardingGate;
|
|
16
|
+
* "per-daemon" = badge unconfigured daemons + per-StartScreen provider setup. */
|
|
17
|
+
onboarding?: "global" | "per-daemon";
|
|
18
|
+
};
|
|
19
|
+
export type AppBodyProps = Omit<AppProps, "directorySource">;
|
|
20
|
+
declare function AppBody({ configClient: injectedClient, slots, onboarding, mode, }?: AppBodyProps & {
|
|
21
|
+
mode?: "home" | "shell";
|
|
22
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export { AppBody };
|
|
24
|
+
//# sourceMappingURL=App.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../src/app/App.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,aAAa,EAAa,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjE,OAAO,EAEL,KAAK,YAAY,EAKlB,MAAM,mBAAmB,CAAC;AAU3B,OAAO,EACL,KAAK,eAAe,EAiBrB,MAAM,WAAW,CAAC;AAMnB,MAAM,MAAM,QAAQ,GAAG;IACrB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,6EAA6E;IAC7E,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,KAAK,CAAC,EAAE;QACN,UAAU,CAAC,EAAE,SAAS,CAAC;QACvB,cAAc,CAAC,EAAE,aAAa,CAAC;YAAE,IAAI,EAAE,OAAO,CAAC;YAAC,OAAO,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC,CAAC;KACxE,CAAC;IACF;qFACiF;IACjF,UAAU,CAAC,EAAE,QAAQ,GAAG,YAAY,CAAC;CACtC,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;AAE7D,iBAAS,OAAO,CAAC,EACf,YAAY,EAAE,cAAc,EAC5B,KAAK,EACL,UAAqB,EACrB,IAAa,GACd,GAAE,YAAY,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAO,2CAqsBjD;AAED,OAAO,EAAE,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface AppShellProps {
|
|
3
|
+
rail: ReactNode;
|
|
4
|
+
sidebar: ReactNode;
|
|
5
|
+
panel: ReactNode;
|
|
6
|
+
/** Mobile drawer open state (rail+sidebar overlay below sm). */
|
|
7
|
+
drawerOpen?: boolean;
|
|
8
|
+
onCloseDrawer?: () => void;
|
|
9
|
+
/** When true, the sidebar grid track narrows to the 48px icon rail (sm+). */
|
|
10
|
+
sidebarCollapsed?: boolean;
|
|
11
|
+
}
|
|
12
|
+
export declare function AppShell({ rail, sidebar, panel, drawerOpen, onCloseDrawer, sidebarCollapsed, }: AppShellProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=AppShell.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../src/app/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAiBvC,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,SAAS,CAAC;IACjB,gEAAgE;IAChE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,IAAI,CAAC;IAC3B,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,UAAkB,EAClB,aAAa,EACb,gBAAwB,GACzB,EAAE,aAAa,2CAmCf"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ThemeMode } from "@/features/theme";
|
|
2
|
+
export declare const headerShellClassName = "mx-auto flex w-full max-w-6xl flex-col gap-3 lg:flex-row lg:items-end lg:justify-between";
|
|
3
|
+
export declare const headerTitleClassName = "text-xl font-semibold tracking-tight text-[var(--color-text)] sm:text-2xl";
|
|
4
|
+
export declare const showSessionTape = false;
|
|
5
|
+
interface HeaderProps {
|
|
6
|
+
onToggleTheme: () => void;
|
|
7
|
+
themeMode: ThemeMode;
|
|
8
|
+
}
|
|
9
|
+
export declare function Header({ onToggleTheme, themeMode }: HeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=Header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/app/Header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,eAAO,MAAM,oBAAoB,6FAC2D,CAAC;AAC7F,eAAO,MAAM,oBAAoB,8EAC4C,CAAC;AAC9E,eAAO,MAAM,eAAe,QAAQ,CAAC;AAErC,UAAU,WAAW;IACnB,aAAa,EAAE,MAAM,IAAI,CAAC;IAC1B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,WAAW,2CAc/D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export declare const subHeaderClassName = "flex flex-row items-center gap-1.5 px-3 py-1 font-mono text-xs text-[var(--color-muted)] border-b border-[var(--color-border)] bg-[var(--color-panel)]";
|
|
2
|
+
export declare const subHeaderCwdClassName = "truncate max-w-[40ch] text-[var(--color-text)] opacity-70";
|
|
3
|
+
export declare const subHeaderSepClassName = "opacity-40 select-none";
|
|
4
|
+
export declare const subHeaderConnDotClassName = "ml-auto inline-block w-2 h-2 shrink-0";
|
|
5
|
+
export declare const subHeaderConnDotConnectedClassName = "ml-auto inline-block w-2 h-2 shrink-0 bg-[var(--color-accent)] opacity-80";
|
|
6
|
+
export declare const subHeaderConnDotDisconnectedClassName = "ml-auto inline-block w-2 h-2 shrink-0 bg-[var(--color-muted)] opacity-40";
|
|
7
|
+
interface SessionSubHeaderProps {
|
|
8
|
+
cwd: string;
|
|
9
|
+
modelName: string;
|
|
10
|
+
approvalMode: string;
|
|
11
|
+
connected: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function SessionSubHeader({ cwd, modelName, approvalMode, connected, }: SessionSubHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=SessionSubHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionSubHeader.d.ts","sourceRoot":"","sources":["../../src/app/SessionSubHeader.tsx"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,2JAC2H,CAAC;AAE3J,eAAO,MAAM,qBAAqB,8DAA8D,CAAC;AAEjG,eAAO,MAAM,qBAAqB,2BAA2B,CAAC;AAE9D,eAAO,MAAM,yBAAyB,0CAA0C,CAAC;AAEjF,eAAO,MAAM,kCAAkC,8EAAqE,CAAC;AAErH,eAAO,MAAM,qCAAqC,6EAAoE,CAAC;AAEvH,UAAU,qBAAqB;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,GAAG,EACH,SAAS,EACT,YAAY,EACZ,SAAS,GACV,EAAE,qBAAqB,2CAkBvB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface WorkspacePanelProps {
|
|
3
|
+
daemonName: string;
|
|
4
|
+
sessionTitle: string;
|
|
5
|
+
/** Active workspace name. Surfaced in the breadcrumb or on the path line
|
|
6
|
+
* depending on whether a cwd is present. */
|
|
7
|
+
workspace?: string;
|
|
8
|
+
/** Working directory of the active session; rendered on the second header line. */
|
|
9
|
+
cwd?: string;
|
|
10
|
+
busy: boolean;
|
|
11
|
+
body: ReactNode;
|
|
12
|
+
composer: ReactNode;
|
|
13
|
+
}
|
|
14
|
+
export declare function WorkspacePanel({ daemonName, sessionTitle, workspace, cwd, busy, body, composer, }: WorkspacePanelProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=WorkspacePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspacePanel.d.ts","sourceRoot":"","sources":["../../src/app/WorkspacePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,WAAW,mBAAmB;IAClC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB;iDAC6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,EAC7B,UAAU,EACV,YAAY,EACZ,SAAS,EACT,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,EAAE,mBAAmB,2CA6GrB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const appShellClassName = "relative grid h-dvh overflow-hidden bg-surface-base text-fg-primary grid-cols-[minmax(0,1fr)]";
|
|
2
|
+
export declare const sidebarExpandedColsClassName = "sm:grid-cols-[52px_256px_minmax(0,1fr)]";
|
|
3
|
+
export declare const sidebarCollapsedColsClassName = "sm:grid-cols-[52px_48px_minmax(0,1fr)]";
|
|
4
|
+
export declare const railColumnClassName = "hidden min-h-0 sm:block";
|
|
5
|
+
export declare const sidebarColumnClassName = "hidden min-h-0 sm:block";
|
|
6
|
+
export declare const panelColumnClassName = "min-h-0 min-w-0";
|
|
7
|
+
export declare const drawerOverlayClassName = "absolute inset-y-0 left-0 z-40 flex transition-transform duration-200 ease-out sm:hidden";
|
|
8
|
+
export declare const drawerOpenClassName = "translate-x-0";
|
|
9
|
+
export declare const drawerClosedClassName = "-translate-x-full";
|
|
10
|
+
export declare const drawerScrimClassName = "absolute inset-0 z-30 bg-black/40 sm:hidden";
|
|
11
|
+
//# sourceMappingURL=app-shell.styles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-shell.styles.d.ts","sourceRoot":"","sources":["../../src/app/app-shell.styles.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,iBAAiB,kGACmE,CAAC;AAGlG,eAAO,MAAM,4BAA4B,4CAA4C,CAAC;AACtF,eAAO,MAAM,6BAA6B,2CAA2C,CAAC;AAGtF,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAC7D,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,oBAAoB,oBAAoB,CAAC;AAGtD,eAAO,MAAM,sBAAsB,6FACyD,CAAC;AAC7F,eAAO,MAAM,mBAAmB,kBAAkB,CAAC;AACnD,eAAO,MAAM,qBAAqB,sBAAsB,CAAC;AAGzD,eAAO,MAAM,oBAAoB,gDAAgD,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { type DirectorySource } from "@/session";
|
|
2
|
+
import { type AppBodyProps } from "./App";
|
|
3
|
+
/**
|
|
4
|
+
* Always-mounted layout-route element (spec §4). Owns the transport/directory
|
|
5
|
+
* bootstrap and the router-less navigate bridge (registerNavigate, moved here
|
|
6
|
+
* from the deleted route-sync so transport.ts's appNavigate keeps working).
|
|
7
|
+
* React Router keeps this mounted across every descendant navigation.
|
|
8
|
+
*/
|
|
9
|
+
export declare function RootLayout({ directorySource }: {
|
|
10
|
+
directorySource?: DirectorySource;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
/**
|
|
13
|
+
* Home is always the picker (spec §8): drop any session selection + resolution
|
|
14
|
+
* gate on mount. Picker liveness is mode-split (spec §5.3): local keeps a
|
|
15
|
+
* directory socket to every daemon; cloud holds zero sockets and polls REST.
|
|
16
|
+
*/
|
|
17
|
+
export declare function Picker(props: AppBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
/**
|
|
19
|
+
* Connect-on-entry (spec §5.2) + daemon scoping (spec §5.1). Acquires this
|
|
20
|
+
* route's :daemon directory link; once the directory is ready, bounces an
|
|
21
|
+
* unknown daemon to the picker (with a toast). Scope is URL-derived downstream
|
|
22
|
+
* (App reads useParams().daemon — no selectedDaemon store field). Nested param
|
|
23
|
+
* changes keep this mounted.
|
|
24
|
+
*/
|
|
25
|
+
export declare function DaemonLayout(): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
/**
|
|
27
|
+
* New-session draft (spec §5.1/§5.4): ensure the daemon's addressable draft tab
|
|
28
|
+
* and activate it. One draft per daemon; a reload starts a fresh draft (the tabs
|
|
29
|
+
* map is rebuilt empty). The effect is passive, so a synchronous first commit
|
|
30
|
+
* renders the shell from the current store before the draft activates.
|
|
31
|
+
*
|
|
32
|
+
* The in-pane resolution gate is DERIVED from the URL params + pool + meta now
|
|
33
|
+
* (spec §6): the draft route has no :sessionId, so AppBody's derived gate is
|
|
34
|
+
* null on the draft shell — navigating here from an unreachable session self-
|
|
35
|
+
* clears the gate without any store write.
|
|
36
|
+
*/
|
|
37
|
+
export declare function DraftView(props: AppBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
/**
|
|
39
|
+
* The selected session (spec §4/§5.1). ensureAttached resolves live → attach,
|
|
40
|
+
* cold → read-only transcript, offline → in-pane unreachable gate, 404 → picker
|
|
41
|
+
* + toast. Re-runs when the directory view / daemon meta resolves (loading →
|
|
42
|
+
* ready, offline → online for the retry gate). Unmount does NOTHING to the
|
|
43
|
+
* socket — the pool keeps it warm (LRU-only eviction).
|
|
44
|
+
*/
|
|
45
|
+
export declare function SessionView(props: AppBodyProps): import("react/jsx-runtime").JSX.Element;
|
|
46
|
+
//# sourceMappingURL=route-components.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-components.d.ts","sourceRoot":"","sources":["../../src/app/route-components.tsx"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,eAAe,EAYrB,MAAM,WAAW,CAAC;AAInB,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAEnD;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EAAE,eAAe,EAAE,EAAE;IAAE,eAAe,CAAC,EAAE,eAAe,CAAA;CAAE,2CAmBpF;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,YAAY,2CAQzC;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,4CA0B3B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,YAAY,2CAY5C;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,YAAY,2CAU9C"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type RouteObject } from "react-router";
|
|
2
|
+
import type { AppBodyProps, AppProps } from "./App";
|
|
3
|
+
/**
|
|
4
|
+
* Element-bearing route children (web spec §4). RootLayout (the layout-route
|
|
5
|
+
* element) owns the bootstrap and never unmounts. Phase 3 lands the <Navigate
|
|
6
|
+
* replace> redirects deferred from Phase 1 (the daemon index → /new, the
|
|
7
|
+
* catch-all → /) now that route-sync no longer owns redirects.
|
|
8
|
+
*/
|
|
9
|
+
export declare function appRouteChildren(bodyProps?: AppBodyProps): RouteObject[];
|
|
10
|
+
export declare function buildRoutes(props?: AppProps): RouteObject[];
|
|
11
|
+
//# sourceMappingURL=routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes.d.ts","sourceRoot":"","sources":["../../src/app/routes.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAGpD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,GAAE,YAAiB,GAAG,WAAW,EAAE,CAc5E;AAED,wBAAgB,WAAW,CAAC,KAAK,GAAE,QAAa,GAAG,WAAW,EAAE,CAS/D"}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth seam (web spec §5/§11): components NEVER import Clerk. The cloud
|
|
3
|
+
* composition root bridges Clerk's useAuth() into this interface; the local
|
|
4
|
+
* build uses the always-open localAuthGate. getToken() resolves a fresh
|
|
5
|
+
* Clerk session JWT per call (Clerk handles refresh) — null when signed out
|
|
6
|
+
* or in local mode.
|
|
7
|
+
*/
|
|
8
|
+
export interface AuthGate {
|
|
9
|
+
isReady: boolean;
|
|
10
|
+
isSignedIn: boolean;
|
|
11
|
+
userId: string | null;
|
|
12
|
+
getToken(): Promise<string | null>;
|
|
13
|
+
}
|
|
14
|
+
export declare const localAuthGate: AuthGate;
|
|
15
|
+
export declare const AuthGateContext: import("react").Context<AuthGate>;
|
|
16
|
+
export declare function useAuthGate(): AuthGate;
|
|
17
|
+
//# sourceMappingURL=auth-gate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth-gate.d.ts","sourceRoot":"","sources":["../../../src/features/account/auth-gate.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CACpC;AAED,eAAO,MAAM,aAAa,EAAE,QAK3B,CAAC;AAEF,eAAO,MAAM,eAAe,mCAAyC,CAAC;AAEtE,wBAAgB,WAAW,IAAI,QAAQ,CAEtC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/account/index.ts"],"names":[],"mappings":"AAGA,YAAY,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { QueuedMessageView, SlashCommandDescriptor } from "@nuvin/session/protocol";
|
|
2
|
+
import type { FormEvent } from "react";
|
|
3
|
+
import { type WebSessionSnapshot } from "@/session";
|
|
4
|
+
export declare const composerShellClassName = "mx-auto w-full max-w-6xl space-y-2 sm:space-y-3";
|
|
5
|
+
export declare const composerFormClassName = "p-0";
|
|
6
|
+
export declare const composerActionsClassName = "mt-2 grid grid-cols-2 gap-2 sm:mt-3 sm:flex sm:grid-cols-none sm:items-center sm:justify-between sm:gap-3";
|
|
7
|
+
export declare const approvalContentClassName = "min-w-0";
|
|
8
|
+
export declare const approvalArgsClassName = "mt-2 max-w-full whitespace-pre-wrap break-words rounded-md border border-border-subtle bg-surface-sunken p-2 font-mono text-xs leading-5 text-fg-secondary";
|
|
9
|
+
export declare const approvalDiffClassName = "mt-2 overflow-hidden rounded-md border border-border-subtle";
|
|
10
|
+
export declare const approvalActionsClassName = "grid grid-cols-3 gap-2";
|
|
11
|
+
export declare const approvalButtonClassName = "min-w-0 whitespace-nowrap";
|
|
12
|
+
export declare function composerPrimaryActionLabel(busy: boolean): string;
|
|
13
|
+
interface ComposerProps {
|
|
14
|
+
activeApproval: WebSessionSnapshot["approval"]["active"];
|
|
15
|
+
activeQuestion?: WebSessionSnapshot["question"]["active"];
|
|
16
|
+
busy: boolean;
|
|
17
|
+
contextWindowLimit?: number;
|
|
18
|
+
contextWindowUsage?: number;
|
|
19
|
+
currentTokens?: number;
|
|
20
|
+
inputDisabled: boolean;
|
|
21
|
+
modelName?: string;
|
|
22
|
+
pendingApprovalCount: number;
|
|
23
|
+
persona?: string;
|
|
24
|
+
/** Messages queued for auto-send after the current turn (server-authoritative). */
|
|
25
|
+
queued?: QueuedMessageView[];
|
|
26
|
+
/** Active tab key; the composer reads/writes that tab's draft in the store. */
|
|
27
|
+
tabKey: string | null;
|
|
28
|
+
onSubmit(event: FormEvent<HTMLFormElement>): void;
|
|
29
|
+
/** Server + client-side slash command descriptors for the autocomplete popup. */
|
|
30
|
+
slashCommands?: SlashCommandDescriptor[];
|
|
31
|
+
}
|
|
32
|
+
export declare function Composer({ activeApproval, activeQuestion, busy, contextWindowLimit, contextWindowUsage, currentTokens, inputDisabled, modelName, onSubmit, pendingApprovalCount, persona, queued, tabKey, slashCommands, }: ComposerProps): import("react/jsx-runtime").JSX.Element;
|
|
33
|
+
export declare function ApprovalCard({ input, pendingCount, toolName, }: {
|
|
34
|
+
input: unknown;
|
|
35
|
+
pendingCount: number;
|
|
36
|
+
toolName: string;
|
|
37
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export {};
|
|
39
|
+
//# sourceMappingURL=Composer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Composer.d.ts","sourceRoot":"","sources":["../../../src/features/composer/Composer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAEzF,OAAO,KAAK,EAAkB,SAAS,EAAiB,MAAM,OAAO,CAAC;AAUtE,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,WAAW,CAAC;AAWnB,eAAO,MAAM,sBAAsB,oDAAoD,CAAC;AACxF,eAAO,MAAM,qBAAqB,QAAQ,CAAC;AAC3C,eAAO,MAAM,wBAAwB,8GACwE,CAAC;AAC9G,eAAO,MAAM,wBAAwB,YAAY,CAAC;AAClD,eAAO,MAAM,qBAAqB,+JAC4H,CAAC;AAC/J,eAAO,MAAM,qBAAqB,gEAAgE,CAAC;AACnG,eAAO,MAAM,wBAAwB,2BAA2B,CAAC;AACjE,eAAO,MAAM,uBAAuB,8BAA8B,CAAC;AACnE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAEhE;AAED,UAAU,aAAa;IACrB,cAAc,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IACzD,cAAc,CAAC,EAAE,kBAAkB,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,EAAE,OAAO,CAAC;IACd,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,mFAAmF;IACnF,MAAM,CAAC,EAAE,iBAAiB,EAAE,CAAC;IAC7B,+EAA+E;IAC/E,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC;IAClD,iFAAiF;IACjF,aAAa,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAC1C;AAED,wBAAgB,QAAQ,CAAC,EACvB,cAAc,EACd,cAAqB,EACrB,IAAI,EACJ,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,SAAS,EACT,QAAQ,EACR,oBAAoB,EACpB,OAAO,EACP,MAAW,EACX,MAAM,EACN,aAAa,GACd,EAAE,aAAa,2CA0Yf;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,YAAY,EACZ,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB,2CA+MA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { AskUserAnswers, AskUserQuestionRequest } from "@nuvin/agent-core/shared";
|
|
2
|
+
export declare const questionCardClassName = "rounded-lg border border-border-default bg-surface-raised p-4 shadow-[var(--shadow-md)]";
|
|
3
|
+
type QuestionCardProps = {
|
|
4
|
+
question: AskUserQuestionRequest;
|
|
5
|
+
onSubmit: (answers: AskUserAnswers) => void;
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Web-native form for answering an active AskUser question (parity with the CLI
|
|
9
|
+
* `AskUserQuestionInteractive`, mouse-first instead of keyboard-driven).
|
|
10
|
+
*
|
|
11
|
+
* Questions are shown ONE AT A TIME, like the TUI: the card renders the current
|
|
12
|
+
* question with a `topic` label and an `N / total` counter, and the user walks
|
|
13
|
+
* the set with Back / Next. Single-select questions auto-advance the moment a
|
|
14
|
+
* real option is picked; multi-select questions wait for an explicit Next. The
|
|
15
|
+
* final question swaps Next for Submit, which stays disabled until every
|
|
16
|
+
* question has a non-empty answer. On submit it builds the `AskUserAnswers` map
|
|
17
|
+
* (`Record<questionId, string | string[]>`) keyed by `question.id`.
|
|
18
|
+
*/
|
|
19
|
+
export declare function QuestionCard({ question, onSubmit }: QuestionCardProps): import("react/jsx-runtime").JSX.Element | null;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=QuestionCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"QuestionCard.d.ts","sourceRoot":"","sources":["../../../src/features/composer/QuestionCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EAEd,sBAAsB,EACvB,MAAM,0BAA0B,CAAC;AAQlC,eAAO,MAAM,qBAAqB,4FACyD,CAAC;AAE5F,KAAK,iBAAiB,GAAG;IACvB,QAAQ,EAAE,sBAAsB,CAAC;IACjC,QAAQ,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;CAC7C,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,iBAAiB,kDAwNrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-status.d.ts","sourceRoot":"","sources":["../../../src/features/composer/context-status.ts"],"names":[],"mappings":"AAsBA,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,MAAM,GAAG,IAAI,CAShB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { approvalActionsClassName, approvalArgsClassName, approvalButtonClassName, approvalContentClassName, Composer, composerActionsClassName, composerFormClassName, composerPrimaryActionLabel, composerShellClassName, } from "./Composer";
|
|
2
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/features/composer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,QAAQ,EACR,wBAAwB,EACxB,qBAAqB,EACrB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ProtocolConfigClient } from "./protocol-config-client";
|
|
2
|
+
export type CloudProviderSetupProps = {
|
|
3
|
+
client: ProtocolConfigClient;
|
|
4
|
+
daemonLabel: string;
|
|
5
|
+
/** Called after a successful setProviderAuth (so App can re-poll status). */
|
|
6
|
+
onConfigured: () => void;
|
|
7
|
+
};
|
|
8
|
+
/** Per-daemon provider setup (web spec §7): manage credentials + default on a
|
|
9
|
+
* remote daemon's EXISTING providers over the protocol. Cannot create/delete
|
|
10
|
+
* named providers (locked decision 1). */
|
|
11
|
+
export declare function CloudProviderSetup({ client, daemonLabel, onConfigured }: CloudProviderSetupProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=CloudProviderSetup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CloudProviderSetup.d.ts","sourceRoot":"","sources":["../../../src/features/config/CloudProviderSetup.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,MAAM,uBAAuB,GAAG;IACpC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,6EAA6E;IAC7E,YAAY,EAAE,MAAM,IAAI,CAAC;CAC1B,CAAC;AAEF;;0CAE0C;AAC1C,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,EAAE,uBAAuB,2CAiJhG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
import type { ConfigClient } from "@/features/config/config-client";
|
|
3
|
+
export type OnboardingGateProps = {
|
|
4
|
+
/** Injected config client (real or fake in tests). */
|
|
5
|
+
client: ConfigClient;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* First-run onboarding gate (spec §9). On mount it loads the provider list and,
|
|
10
|
+
* once it *successfully* resolves to an empty / all-unauthed set, blocks the app
|
|
11
|
+
* body and renders the named-provider add flow ({@link ProviderManagerPanel}).
|
|
12
|
+
* As soon as a provider with `hasAuth` exists, the body renders.
|
|
13
|
+
*
|
|
14
|
+
* FAIL-OPEN (load-bearing): while the list is still loading — and on a
|
|
15
|
+
* rejected/malformed `listProviders()` — the gate renders `children` rather than
|
|
16
|
+
* blocking. This is what keeps the existing App suites green: those tests stub
|
|
17
|
+
* `fetch` to a non-`{providers}` body (and pass no config client), so the default
|
|
18
|
+
* client's `listProviders()` rejects/parses to nothing → the gate stays open and
|
|
19
|
+
* the normal body renders. Only a successfully-resolved empty list blocks.
|
|
20
|
+
*/
|
|
21
|
+
export declare function OnboardingGate({ client, children }: OnboardingGateProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
//# sourceMappingURL=OnboardingGate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnboardingGate.d.ts","sourceRoot":"","sources":["../../../src/features/config/OnboardingGate.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAoC,MAAM,OAAO,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAGpE,MAAM,MAAM,mBAAmB,GAAG;IAChC,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;CACrB,CAAC;AAUF;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,mBAAmB,2CAgDvE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ConfigClient } from "@/features/config/config-client";
|
|
2
|
+
export type ProviderManagerPanelProps = {
|
|
3
|
+
/** Injected config client (real or fake in tests). */
|
|
4
|
+
client: ConfigClient;
|
|
5
|
+
/** Fired after each successful mutation (add/remove/set-default) — lets a
|
|
6
|
+
* host (e.g. the OnboardingGate) re-evaluate the provider list. */
|
|
7
|
+
onChange?: () => void;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Named-provider (credential) manager — list / add / remove / set-default
|
|
11
|
+
* (spec §3/§9). Presentational: all I/O goes through the injected
|
|
12
|
+
* {@link ConfigClient}; the list reloads after every successful mutation.
|
|
13
|
+
*/
|
|
14
|
+
export declare function ProviderManagerPanel({ client, onChange }: ProviderManagerPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=ProviderManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderManager.d.ts","sourceRoot":"","sources":["../../../src/features/config/ProviderManager.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAe,MAAM,iCAAiC,CAAC;AAcjF,MAAM,MAAM,yBAAyB,GAAG;IACtC,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;IACrB;uEACmE;IACnE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAUF;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,yBAAyB,2CAiMnF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ConfigClient } from "@/features/config/config-client";
|
|
2
|
+
export type WorkspaceManagerPanelProps = {
|
|
3
|
+
/** Injected config client (real or fake in tests). */
|
|
4
|
+
client: ConfigClient;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Workspace manager — list / create / set active provider / per-item toggle
|
|
8
|
+
* (spec §4/§5). Presentational: all I/O goes through the injected
|
|
9
|
+
* {@link ConfigClient}; the workspace list reloads after every successful
|
|
10
|
+
* mutation. The active-provider `<select>` is populated from the provider list.
|
|
11
|
+
*/
|
|
12
|
+
export declare function WorkspaceManagerPanel({ client }: WorkspaceManagerPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=WorkspaceManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkspaceManager.d.ts","sourceRoot":"","sources":["../../../src/features/config/WorkspaceManager.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,iCAAiC,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG;IACvC,sDAAsD;IACtD,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAUF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,EAAE,MAAM,EAAE,EAAE,0BAA0B,2CA0M3E"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
export type WebProvider = {
|
|
2
|
+
name: string;
|
|
3
|
+
surface?: string;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
defaultModel?: string;
|
|
6
|
+
hasAuth: boolean;
|
|
7
|
+
isActive: boolean;
|
|
8
|
+
};
|
|
9
|
+
export type WebWorkspaceOption = {
|
|
10
|
+
name: string;
|
|
11
|
+
root: string;
|
|
12
|
+
adhoc: boolean;
|
|
13
|
+
providerLabel: string;
|
|
14
|
+
};
|
|
15
|
+
export type AddProviderInput = {
|
|
16
|
+
name: string;
|
|
17
|
+
surface: string;
|
|
18
|
+
baseUrl?: string;
|
|
19
|
+
apiKey: string;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* Provider-config seam (web spec §7 / P6 seam 1). Two implementations:
|
|
23
|
+
* - REST (local, unchanged): rest-config-client.ts → the CLI web server's
|
|
24
|
+
* /api/providers* + /api/workspaces* surface.
|
|
25
|
+
* - Protocol (cloud): protocol-config-client.ts → the P1 provider-config
|
|
26
|
+
* DaemonCommands on the SELECTED daemon's directory socket.
|
|
27
|
+
* ProviderConfigClient is the shared subset (what OnboardingGate needs);
|
|
28
|
+
* ConfigClient is the full local REST surface existing components consume.
|
|
29
|
+
*/
|
|
30
|
+
export interface ProviderConfigClient {
|
|
31
|
+
listProviders(): Promise<WebProvider[]>;
|
|
32
|
+
setDefaultProvider(name: string): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
export interface ConfigClient extends ProviderConfigClient {
|
|
35
|
+
addProvider(input: AddProviderInput): Promise<void>;
|
|
36
|
+
removeProvider(name: string): Promise<void>;
|
|
37
|
+
listWorkspaces(): Promise<WebWorkspaceOption[]>;
|
|
38
|
+
createWorkspace(name: string, opts: {
|
|
39
|
+
root?: string;
|
|
40
|
+
}): Promise<void>;
|
|
41
|
+
patchWorkspace(name: string, patch: {
|
|
42
|
+
activeProvider?: string;
|
|
43
|
+
toggle?: {
|
|
44
|
+
key: string;
|
|
45
|
+
enabled: boolean;
|
|
46
|
+
};
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=config-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-client.d.ts","sourceRoot":"","sources":["../../../src/features/config/config-client.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnG;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,aAAa,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,YAAa,SAAQ,oBAAoB;IACxD,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpD,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAChD,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,cAAc,CACZ,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAA;KAAE,GAC7E,OAAO,CAAC,IAAI,CAAC,CAAC;CAClB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { CloudProviderSetup } from "./CloudProviderSetup";
|
|
2
|
+
export type { AddProviderInput, ConfigClient, ProviderConfigClient, WebProvider, WebWorkspaceOption, } from "./config-client";
|
|
3
|
+
export { OnboardingGate } from "./OnboardingGate";
|
|
4
|
+
export { ProviderManagerPanel } from "./ProviderManager";
|
|
5
|
+
export type { ProtocolConfigClient, ProtocolConfigClientOptions, } from "./protocol-config-client";
|
|
6
|
+
export { createProtocolConfigClient } from "./protocol-config-client";
|
|
7
|
+
export { createConfigClient } from "./rest-config-client";
|
|
8
|
+
export { useProviderStatus } from "./use-provider-status";
|
|
9
|
+
export { WorkspaceManagerPanel } from "./WorkspaceManager";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|