@stigg/terminal 0.0.1-alpha → 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.
Files changed (148) hide show
  1. package/LICENSE +18 -12
  2. package/README.md +2 -2
  3. package/dist/api/graphql-client.js +1 -1
  4. package/dist/api/operations.js +1 -4
  5. package/dist/auth/callback-server.js +1 -2
  6. package/dist/bin.js +0 -0
  7. package/dist/cli.js +2 -7
  8. package/dist/headless/init-phase2.js +1 -1
  9. package/dist/headless/setup.js +2 -2
  10. package/dist/launch/agent.js +1 -3
  11. package/dist/mcp/clients/claude-code.js +1 -1
  12. package/dist/mcp/clients/codex.js +1 -1
  13. package/dist/mcp/writer.js +1 -3
  14. package/dist/ui/intro/LogoView.js +2 -7
  15. package/dist/ui/tui/App.js +1 -1
  16. package/dist/ui/tui/hooks/useKeyBindings.js +1 -1
  17. package/dist/ui/tui/hooks/useStdoutDimensions.js +1 -4
  18. package/dist/ui/tui/primitives/PickerMenu.js +3 -5
  19. package/dist/ui/tui/screens/EnvScreen.js +2 -2
  20. package/dist/ui/tui/steps/AccountStep.js +1 -4
  21. package/dist/ui/tui/steps/ApiKeyStep.js +1 -1
  22. package/dist/ui/tui/steps/ClientsStep.js +1 -3
  23. package/dist/ui/tui/steps/SummaryStep.js +1 -3
  24. package/package.json +9 -10
  25. package/dist/api/client.d.ts +0 -6
  26. package/dist/api/format-key.d.ts +0 -7
  27. package/dist/api/graphql-client.d.ts +0 -5
  28. package/dist/api/operations.d.ts +0 -65
  29. package/dist/api/types.d.ts +0 -18
  30. package/dist/auth/callback-server.d.ts +0 -14
  31. package/dist/auth/config.d.ts +0 -2
  32. package/dist/auth/oauth.d.ts +0 -17
  33. package/dist/auth/storage.d.ts +0 -6
  34. package/dist/bin.d.ts +0 -2
  35. package/dist/cli.d.ts +0 -1
  36. package/dist/commands/dash.d.ts +0 -1
  37. package/dist/commands/debug.d.ts +0 -1
  38. package/dist/commands/debug.js +0 -53
  39. package/dist/commands/env.d.ts +0 -1
  40. package/dist/commands/init.d.ts +0 -13
  41. package/dist/commands/mcp.d.ts +0 -7
  42. package/dist/commands/skills.d.ts +0 -6
  43. package/dist/headless/host-agent.d.ts +0 -19
  44. package/dist/headless/init-phase1.d.ts +0 -9
  45. package/dist/headless/init-phase2.d.ts +0 -36
  46. package/dist/headless/next-step-prompt.d.ts +0 -7
  47. package/dist/headless/options.d.ts +0 -30
  48. package/dist/headless/reporter.d.ts +0 -16
  49. package/dist/headless/setup.d.ts +0 -29
  50. package/dist/launch/agent.d.ts +0 -55
  51. package/dist/mcp/clients/base.d.ts +0 -49
  52. package/dist/mcp/clients/claude-code.d.ts +0 -22
  53. package/dist/mcp/clients/claude-desktop.d.ts +0 -9
  54. package/dist/mcp/clients/codex.d.ts +0 -13
  55. package/dist/mcp/clients/cursor.d.ts +0 -9
  56. package/dist/mcp/clients/index.d.ts +0 -7
  57. package/dist/mcp/clients/mcp-remote.d.ts +0 -11
  58. package/dist/mcp/clients/vscode.d.ts +0 -17
  59. package/dist/mcp/clients.d.ts +0 -4
  60. package/dist/mcp/clients.js +0 -50
  61. package/dist/mcp/config-merge.d.ts +0 -9
  62. package/dist/mcp/writer.d.ts +0 -6
  63. package/dist/setup/storage.d.ts +0 -21
  64. package/dist/skills/install.d.ts +0 -19
  65. package/dist/types.d.ts +0 -35
  66. package/dist/ui/components/Card.d.ts +0 -11
  67. package/dist/ui/components/Card.js +0 -19
  68. package/dist/ui/components/ContextRow.d.ts +0 -11
  69. package/dist/ui/components/ContextRow.js +0 -8
  70. package/dist/ui/components/Footer.d.ts +0 -10
  71. package/dist/ui/components/Footer.js +0 -9
  72. package/dist/ui/components/Header.d.ts +0 -11
  73. package/dist/ui/components/Header.js +0 -6
  74. package/dist/ui/components/JsonPreview.d.ts +0 -13
  75. package/dist/ui/components/JsonPreview.js +0 -25
  76. package/dist/ui/components/SectionTitle.d.ts +0 -6
  77. package/dist/ui/components/SectionTitle.js +0 -5
  78. package/dist/ui/hooks/useAsyncEffect.d.ts +0 -3
  79. package/dist/ui/hooks/useResize.d.ts +0 -4
  80. package/dist/ui/hooks/useResize.js +0 -20
  81. package/dist/ui/hud.d.ts +0 -15
  82. package/dist/ui/ink-theme.d.ts +0 -2
  83. package/dist/ui/ink-theme.js +0 -34
  84. package/dist/ui/intro/LogoView.d.ts +0 -12
  85. package/dist/ui/intro/MatrixIntro.d.ts +0 -6
  86. package/dist/ui/intro/MatrixIntro.js +0 -80
  87. package/dist/ui/intro/logo.d.ts +0 -6
  88. package/dist/ui/messages.d.ts +0 -5
  89. package/dist/ui/screens/DashScreen.d.ts +0 -6
  90. package/dist/ui/screens/DashScreen.js +0 -27
  91. package/dist/ui/screens/DebugScreen.d.ts +0 -6
  92. package/dist/ui/screens/DebugScreen.js +0 -39
  93. package/dist/ui/screens/InitScreen.d.ts +0 -6
  94. package/dist/ui/screens/InitScreen.js +0 -138
  95. package/dist/ui/screens/MenuScreen.d.ts +0 -7
  96. package/dist/ui/screens/MenuScreen.js +0 -38
  97. package/dist/ui/state.d.ts +0 -72
  98. package/dist/ui/steps/AccountStep.d.ts +0 -8
  99. package/dist/ui/steps/AccountStep.js +0 -42
  100. package/dist/ui/steps/ApiKeyStep.d.ts +0 -8
  101. package/dist/ui/steps/ApiKeyStep.js +0 -91
  102. package/dist/ui/steps/ClientsStep.d.ts +0 -10
  103. package/dist/ui/steps/ClientsStep.js +0 -69
  104. package/dist/ui/steps/CredentialKindStep.d.ts +0 -7
  105. package/dist/ui/steps/CredentialKindStep.js +0 -18
  106. package/dist/ui/steps/EnvironmentStep.d.ts +0 -8
  107. package/dist/ui/steps/EnvironmentStep.js +0 -37
  108. package/dist/ui/steps/LoginStep.d.ts +0 -7
  109. package/dist/ui/steps/LoginStep.js +0 -56
  110. package/dist/ui/steps/SkillsStep.d.ts +0 -7
  111. package/dist/ui/steps/SkillsStep.js +0 -7
  112. package/dist/ui/steps/SummaryStep.d.ts +0 -8
  113. package/dist/ui/steps/SummaryStep.js +0 -41
  114. package/dist/ui/steps/WritingStep.d.ts +0 -10
  115. package/dist/ui/steps/WritingStep.js +0 -96
  116. package/dist/ui/theme.d.ts +0 -53
  117. package/dist/ui/tui/App.d.ts +0 -10
  118. package/dist/ui/tui/components/ContextStrip.d.ts +0 -11
  119. package/dist/ui/tui/components/TitleBar.d.ts +0 -6
  120. package/dist/ui/tui/components/WizardChecklist.d.ts +0 -7
  121. package/dist/ui/tui/hooks/keyboard-hints-utils.d.ts +0 -26
  122. package/dist/ui/tui/hooks/useKeyBindings.d.ts +0 -14
  123. package/dist/ui/tui/hooks/useKeyboardHints.d.ts +0 -13
  124. package/dist/ui/tui/hooks/useStdoutDimensions.d.ts +0 -8
  125. package/dist/ui/tui/primitives/BlinkingLabel.d.ts +0 -19
  126. package/dist/ui/tui/primitives/ConfirmPrompt.d.ts +0 -16
  127. package/dist/ui/tui/primitives/KeyboardHintsBar.d.ts +0 -2
  128. package/dist/ui/tui/primitives/PickerMenu.d.ts +0 -38
  129. package/dist/ui/tui/primitives/PromptLabel.d.ts +0 -6
  130. package/dist/ui/tui/primitives/ScreenContainer.d.ts +0 -39
  131. package/dist/ui/tui/primitives/Spinner.d.ts +0 -7
  132. package/dist/ui/tui/screens/DashScreen.d.ts +0 -6
  133. package/dist/ui/tui/screens/DebugScreen.d.ts +0 -6
  134. package/dist/ui/tui/screens/DebugScreen.js +0 -48
  135. package/dist/ui/tui/screens/EnvScreen.d.ts +0 -6
  136. package/dist/ui/tui/screens/InitScreen.d.ts +0 -9
  137. package/dist/ui/tui/screens/MenuScreen.d.ts +0 -7
  138. package/dist/ui/tui/start-tui.d.ts +0 -11
  139. package/dist/ui/tui/steps/AccountStep.d.ts +0 -8
  140. package/dist/ui/tui/steps/ApiKeyStep.d.ts +0 -8
  141. package/dist/ui/tui/steps/ClientsStep.d.ts +0 -10
  142. package/dist/ui/tui/steps/CredentialKindStep.d.ts +0 -7
  143. package/dist/ui/tui/steps/CredentialKindStep.js +0 -18
  144. package/dist/ui/tui/steps/EnvironmentStep.d.ts +0 -8
  145. package/dist/ui/tui/steps/LoginStep.d.ts +0 -8
  146. package/dist/ui/tui/steps/SkillsStep.d.ts +0 -7
  147. package/dist/ui/tui/steps/SummaryStep.d.ts +0 -10
  148. package/dist/ui/tui/steps/WritingStep.d.ts +0 -10
@@ -1,19 +0,0 @@
1
- import React from 'react';
2
- interface BlinkingLabelProps {
3
- text: string;
4
- intervalMs?: number;
5
- color?: string;
6
- dimColor?: boolean;
7
- bold?: boolean;
8
- /** Visual cell width to reserve. Lets callers pad past JS string length when
9
- * the label contains emoji that render as 2 cells. */
10
- padWidth?: number;
11
- }
12
- /**
13
- * Hard blink — text alternates between fully visible and fully hidden.
14
- * Width is preserved during the off-frame via space padding so neighbours
15
- * don't reflow. Stays steady (no interval) when animations are disabled
16
- * (CI / NO_COLOR / dumb terminal / non-TTY).
17
- */
18
- export declare function BlinkingLabel({ text, intervalMs, color, dimColor, bold, padWidth, }: BlinkingLabelProps): React.ReactElement;
19
- export {};
@@ -1,16 +0,0 @@
1
- import React from 'react';
2
- interface ConfirmPromptProps {
3
- id: string;
4
- message?: string;
5
- defaultAnswer?: 'yes' | 'no';
6
- onConfirm: () => void;
7
- onCancel: () => void;
8
- }
9
- /**
10
- * y/n prompt. Enter triggers the default answer (yes by default). Esc is
11
- * intentionally not bound here — it bubbles up to the wizard host so the
12
- * standard "esc → back" navigation works on confirm-style steps too.
13
- * Registers hints: `y yes`, `n no`, `enter <default>`.
14
- */
15
- export declare function ConfirmPrompt({ id, message, defaultAnswer, onConfirm, onCancel, }: ConfirmPromptProps): React.ReactElement;
16
- export {};
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare function KeyboardHintsBar(): React.ReactElement;
@@ -1,38 +0,0 @@
1
- import React from 'react';
2
- export interface PickerOption<T> {
3
- label: string;
4
- value: T;
5
- /** Short inline trailing text (rendered same-line, dimmed). */
6
- hint?: string;
7
- /** Dimmed secondary line rendered under the label (e.g. a long path). */
8
- description?: string;
9
- disabled?: boolean;
10
- }
11
- interface BasePickerMenuProps<T> {
12
- id: string;
13
- message?: string;
14
- options: PickerOption<T>[];
15
- centered?: boolean;
16
- optionMarginBottom?: number;
17
- /** When set, render at most this many options at a time and scroll the
18
- * viewport as focus moves out of view. */
19
- visibleCount?: number;
20
- }
21
- interface SinglePickerMenuProps<T> extends BasePickerMenuProps<T> {
22
- mode?: 'single';
23
- defaultValue?: T;
24
- /** When true, prefix each label with `[N] ` and bind number keys 1..9 to
25
- * jump-select the matching option. */
26
- numbered?: boolean;
27
- onSelect: (value: T) => void;
28
- onChange?: (value: T) => void;
29
- }
30
- interface MultiPickerMenuProps<T> extends BasePickerMenuProps<T> {
31
- mode: 'multi';
32
- defaultValue?: T[];
33
- onSelect: (values: T[]) => void;
34
- onChange?: (values: T[]) => void;
35
- }
36
- export type PickerMenuProps<T> = SinglePickerMenuProps<T> | MultiPickerMenuProps<T>;
37
- export declare function PickerMenu<T>(props: PickerMenuProps<T>): React.ReactElement;
38
- export {};
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- interface PromptLabelProps {
3
- children: React.ReactNode;
4
- }
5
- export declare function PromptLabel({ children }: PromptLabelProps): React.ReactElement;
6
- export {};
@@ -1,39 +0,0 @@
1
- import React from 'react';
2
- interface ScreenContainerProps {
3
- children: React.ReactNode;
4
- /**
5
- * Optional full-terminal-width content rendered between the TitleBar and
6
- * the centered body. Receives the live terminal column count so chrome
7
- * (e.g. the menu's Logo + particle tail) can size to the screen edge.
8
- */
9
- chrome?: (cols: number) => React.ReactNode;
10
- }
11
- /**
12
- * Always-on shell that wraps every screen.
13
- *
14
- * outer column (full terminal width × full terminal height)
15
- * → KeyboardHintsProvider
16
- * → TitleBar (full terminal width — lime strip bleeds edge to edge)
17
- * → spacer (1 row — keeps the chrome / body off the title bar)
18
- * → chrome?(cols) (full-width, currently only the menu Logo)
19
- * → body wrapper (column-flex, full width, alignItems="center")
20
- * → inner column (width = clamped 80..120, paddingX=1)
21
- * → children (overflow hidden)
22
- * → spacer (1 row gap between content and the hints bar)
23
- * → KeyboardHintsBar
24
- *
25
- * Two flex details are load-bearing here:
26
- * 1. The outer body wrapper sets `flexDirection="column"` explicitly. Without
27
- * it, Yoga defaults to row, and `alignItems="center"` would center the
28
- * inner column vertically instead of horizontally — pinning the body to
29
- * the left edge and pushing it to the vertical middle of the screen.
30
- * 2. Clamping the inner column while leaving the outer wrapper full-width is
31
- * what produces the "body centered in the middle of the terminal" effect
32
- * — empty gutters appear on both sides in wide terminals.
33
- *
34
- * No `flexGrow` on the body so it stays at its natural height and the
35
- * KeyboardHintsBar tucks directly under the content. Leftover vertical space
36
- * falls below the hints bar at the bottom of the terminal.
37
- */
38
- export declare function ScreenContainer({ children, chrome }: ScreenContainerProps): React.ReactElement;
39
- export {};
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- interface SpinnerProps {
3
- label?: string;
4
- intervalMs?: number;
5
- }
6
- export declare function Spinner({ label, intervalMs }: SpinnerProps): React.ReactElement;
7
- export {};
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- interface Props {
3
- onDone: () => void;
4
- }
5
- export declare function DashScreen({ onDone }: Props): React.ReactElement;
6
- export {};
@@ -1,6 +0,0 @@
1
- import React from "react";
2
- interface Props {
3
- onDone: () => void;
4
- }
5
- export declare function DebugScreen({ onDone }: Props): React.ReactElement;
6
- export {};
@@ -1,48 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from "ink";
3
- import { Colors } from "../../theme.js";
4
- import { KeyMatch, } from "../hooks/keyboard-hints-utils.js";
5
- import { useKeyBindings } from "../hooks/useKeyBindings.js";
6
- import { PromptLabel } from "../primitives/PromptLabel.js";
7
- const SAMPLE_LOGS = [
8
- {
9
- time: "16:42:13.221",
10
- level: "INFO",
11
- source: "feature.access",
12
- message: "customer=acme_corp has_access=true plan=growth feature=ai_credits",
13
- },
14
- {
15
- time: "16:42:14.034",
16
- level: "INFO",
17
- source: "usage.report",
18
- message: "customer=acme_corp feature=api_calls value=1 source=mcp",
19
- },
20
- {
21
- time: "16:42:18.512",
22
- level: "WARN",
23
- source: "entitlement.exceeded",
24
- message: "customer=acme_corp feature=api_calls usage=1001 limit=1000 reset_at=2026-07-01",
25
- },
26
- {
27
- time: "16:42:21.118",
28
- level: "INFO",
29
- source: "subscription.updated",
30
- message: "customer=acme_corp from=growth to=growth_v2 status=active",
31
- },
32
- ];
33
- const LEVEL_COLOR = {
34
- INFO: "green",
35
- WARN: "yellow",
36
- ERROR: "red",
37
- };
38
- export function DebugScreen({ onDone }) {
39
- useKeyBindings("debug", [
40
- {
41
- match: KeyMatch.AnyChar,
42
- label: "any key",
43
- action: "menu",
44
- handler: onDone,
45
- },
46
- ]);
47
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PromptLabel, { children: "debug \u00B7 audit + usage logs" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "Streaming audit + usage logs (placeholder, sample output)\u2026" }) }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: SAMPLE_LOGS.map((log, i) => (_jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: log.time }), " ", _jsx(Text, { color: LEVEL_COLOR[log.level], children: log.level.padEnd(5) }), " ", _jsx(Text, { color: Colors.accent, children: log.source.padEnd(22) }), " ", log.message] }, i))) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { dimColor: true, children: "(placeholder \u2014 the real command will live-tail audit + usage events with `--since`, `--follow`, `--filter` flags.)" }) })] }));
48
- }
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- interface Props {
3
- onDone: () => void;
4
- }
5
- export declare function EnvScreen({ onDone }: Props): React.ReactElement;
6
- export {};
@@ -1,9 +0,0 @@
1
- import React from 'react';
2
- import type { LaunchRequest } from '../../../launch/agent.js';
3
- interface Props {
4
- onDone: () => void;
5
- onLaunch: (req: LaunchRequest) => void;
6
- callbackPort?: number;
7
- }
8
- export declare function InitScreen({ onDone, onLaunch, callbackPort }: Props): React.ReactElement;
9
- export {};
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- export type MenuChoice = 'init' | 'env' | 'dash' | 'exit';
3
- interface Props {
4
- onPick: (choice: MenuChoice) => void;
5
- }
6
- export declare function MenuScreen({ onPick }: Props): React.ReactElement;
7
- export {};
@@ -1,11 +0,0 @@
1
- import type { LaunchRequest } from '../../launch/agent.js';
2
- import { type AppScreen } from './App.js';
3
- export interface StartTuiOptions {
4
- initialScreen?: AppScreen;
5
- callbackPort?: number;
6
- }
7
- export interface StartTuiResult {
8
- /** Set when the user chose to hand off into an agent from the summary screen. */
9
- launch?: LaunchRequest;
10
- }
11
- export declare function startTUI(opts?: StartTuiOptions): Promise<StartTuiResult>;
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import type { Action, WizardState } from '../../state.js';
3
- interface Props {
4
- state: WizardState;
5
- dispatch: React.Dispatch<Action>;
6
- }
7
- export declare function AccountStep({ state, dispatch }: Props): React.ReactElement;
8
- export {};
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import type { Action, WizardState } from '../../state.js';
3
- interface Props {
4
- state: WizardState;
5
- dispatch: React.Dispatch<Action>;
6
- }
7
- export declare function ApiKeyStep({ state, dispatch }: Props): React.ReactElement;
8
- export {};
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { type McpClient } from '../../../mcp/clients/index.js';
3
- import type { Action, WizardState } from '../../state.js';
4
- interface Props {
5
- state: WizardState;
6
- dispatch: React.Dispatch<Action>;
7
- clients: readonly McpClient[];
8
- }
9
- export declare function ClientsStep({ state, dispatch, clients }: Props): React.ReactElement;
10
- export {};
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { Action } from '../../state.js';
3
- interface Props {
4
- dispatch: React.Dispatch<Action>;
5
- }
6
- export declare function CredentialKindStep({ dispatch }: Props): React.ReactElement;
7
- export {};
@@ -1,18 +0,0 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { Box, Text } from 'ink';
3
- import { PickerMenu } from '../primitives/PickerMenu.js';
4
- export function CredentialKindStep({ dispatch }) {
5
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(PickerMenu, { id: "credentialKind", message: "Which credential should the MCP use?", defaultValue: 'scoped', options: [
6
- {
7
- label: 'API key · single env, limited permissions (recommended)',
8
- value: 'scoped',
9
- },
10
- {
11
- label: 'User JWT · broad access across envs (not yet supported)',
12
- value: 'jwt',
13
- disabled: true,
14
- },
15
- ], onSelect: (v) => {
16
- dispatch({ type: 'PICK_CRED_KIND', kind: v });
17
- } }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsx(Text, { dimColor: true, children: "API keys are safer (smaller blast radius if leaked) and the only kind Stigg's MCP server accepts today." }), _jsx(Text, { dimColor: true, children: "JWT support will return once the MCP server accepts Bearer auth." })] })] }));
18
- }
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import type { Action, WizardState } from '../../state.js';
3
- interface Props {
4
- state: WizardState;
5
- dispatch: React.Dispatch<Action>;
6
- }
7
- export declare function EnvironmentStep({ state, dispatch }: Props): React.ReactElement;
8
- export {};
@@ -1,8 +0,0 @@
1
- import React from 'react';
2
- import type { Action } from '../../state.js';
3
- interface Props {
4
- dispatch: React.Dispatch<Action>;
5
- callbackPort?: number;
6
- }
7
- export declare function LoginStep({ dispatch, callbackPort }: Props): React.ReactElement;
8
- export {};
@@ -1,7 +0,0 @@
1
- import React from 'react';
2
- import type { Action } from '../../state.js';
3
- interface Props {
4
- dispatch: React.Dispatch<Action>;
5
- }
6
- export declare function SkillsStep({ dispatch }: Props): React.ReactElement;
7
- export {};
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { type LaunchRequest } from '../../../launch/agent.js';
3
- import type { WizardState } from '../../state.js';
4
- interface Props {
5
- state: WizardState;
6
- onDone: () => void;
7
- onLaunch: (req: LaunchRequest) => void;
8
- }
9
- export declare function SummaryStep({ state, onDone, onLaunch }: Props): React.ReactElement;
10
- export {};
@@ -1,10 +0,0 @@
1
- import React from 'react';
2
- import { type McpClient } from '../../../mcp/clients/index.js';
3
- import type { Action, WizardState } from '../../state.js';
4
- interface Props {
5
- state: WizardState;
6
- dispatch: React.Dispatch<Action>;
7
- clients: readonly McpClient[];
8
- }
9
- export declare function WritingStep({ state, dispatch, clients }: Props): React.ReactElement;
10
- export {};