@tacuchi/agent-workflow-cli 5.9.1 → 5.10.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/application/mcp-host-writer.d.ts.map +1 -1
- package/dist/application/mcp-host-writer.js +52 -7
- package/dist/application/mcp-host-writer.js.map +1 -1
- package/dist/application/self/mcp-config.d.ts +7 -1
- package/dist/application/self/mcp-config.d.ts.map +1 -1
- package/dist/application/self/mcp-config.js +79 -21
- package/dist/application/self/mcp-config.js.map +1 -1
- package/dist/cli/interactive-menu.d.ts +0 -1
- package/dist/cli/interactive-menu.d.ts.map +1 -1
- package/dist/cli/interactive-menu.js +0 -14
- package/dist/cli/interactive-menu.js.map +1 -1
- package/dist/cli/main.js +14 -10
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/tui/app.d.ts +17 -0
- package/dist/cli/tui/app.d.ts.map +1 -0
- package/dist/cli/tui/app.js +43 -0
- package/dist/cli/tui/app.js.map +1 -0
- package/dist/cli/tui/components/connections-table.d.ts +5 -0
- package/dist/cli/tui/components/connections-table.d.ts.map +1 -0
- package/dist/cli/tui/components/connections-table.js +10 -0
- package/dist/cli/tui/components/connections-table.js.map +1 -0
- package/dist/cli/tui/components/footer.d.ts +4 -0
- package/dist/cli/tui/components/footer.d.ts.map +1 -0
- package/dist/cli/tui/components/footer.js +6 -0
- package/dist/cli/tui/components/footer.js.map +1 -0
- package/dist/cli/tui/components/header.d.ts +5 -0
- package/dist/cli/tui/components/header.d.ts.map +1 -0
- package/dist/cli/tui/components/header.js +6 -0
- package/dist/cli/tui/components/header.js.map +1 -0
- package/dist/cli/tui/components/input-prompt.d.ts +9 -0
- package/dist/cli/tui/components/input-prompt.d.ts.map +1 -0
- package/dist/cli/tui/components/input-prompt.js +24 -0
- package/dist/cli/tui/components/input-prompt.js.map +1 -0
- package/dist/cli/tui/components/sectioned-menu.d.ts +17 -0
- package/dist/cli/tui/components/sectioned-menu.d.ts.map +1 -0
- package/dist/cli/tui/components/sectioned-menu.js +57 -0
- package/dist/cli/tui/components/sectioned-menu.js.map +1 -0
- package/dist/cli/tui/run.d.ts +4 -0
- package/dist/cli/tui/run.d.ts.map +1 -0
- package/dist/cli/tui/run.js +26 -0
- package/dist/cli/tui/run.js.map +1 -0
- package/dist/cli/tui/screens/main-menu.d.ts +8 -0
- package/dist/cli/tui/screens/main-menu.d.ts.map +1 -0
- package/dist/cli/tui/screens/main-menu.js +20 -0
- package/dist/cli/tui/screens/main-menu.js.map +1 -0
- package/dist/cli/tui/screens/mcp-done.d.ts +10 -0
- package/dist/cli/tui/screens/mcp-done.d.ts.map +1 -0
- package/dist/cli/tui/screens/mcp-done.js +19 -0
- package/dist/cli/tui/screens/mcp-done.js.map +1 -0
- package/dist/cli/tui/screens/mcp-wizard.d.ts +10 -0
- package/dist/cli/tui/screens/mcp-wizard.d.ts.map +1 -0
- package/dist/cli/tui/screens/mcp-wizard.js +91 -0
- package/dist/cli/tui/screens/mcp-wizard.js.map +1 -0
- package/package.json +6 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ExitCode } from "../../domain/types.js";
|
|
2
|
+
import type { MenuAction } from "../interactive-menu.js";
|
|
3
|
+
import type { CliContext } from "../types.js";
|
|
4
|
+
export type TuiResult = {
|
|
5
|
+
kind: "menu-action";
|
|
6
|
+
action: MenuAction;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "exit";
|
|
9
|
+
exitCode: ExitCode;
|
|
10
|
+
};
|
|
11
|
+
export interface AppProps {
|
|
12
|
+
version: string;
|
|
13
|
+
ctx: CliContext;
|
|
14
|
+
onResult: (result: TuiResult) => void;
|
|
15
|
+
}
|
|
16
|
+
export declare function App({ version, ctx, onResult }: AppProps): import("react/jsx-runtime").JSX.Element | null;
|
|
17
|
+
//# sourceMappingURL=app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/app.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAiB,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAK9C,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC3C;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,QAAQ,CAAA;CAAE,CAAC;AAIzC,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;CACvC;AAED,wBAAgB,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,QAAQ,kDAyDvD"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useApp } from "ink";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
import { MainMenu } from "./screens/main-menu.js";
|
|
5
|
+
import { McpDoneScreen } from "./screens/mcp-done.js";
|
|
6
|
+
import { McpWizardScreen } from "./screens/mcp-wizard.js";
|
|
7
|
+
export function App({ version, ctx, onResult }) {
|
|
8
|
+
const [screen, setScreen] = useState("menu");
|
|
9
|
+
const [mcpResult, setMcpResult] = useState(null);
|
|
10
|
+
const { exit } = useApp();
|
|
11
|
+
if (screen === "menu") {
|
|
12
|
+
return (_jsx(MainMenu, { version: version, onSelect: (action) => {
|
|
13
|
+
if (action === "mcp") {
|
|
14
|
+
setScreen("mcp");
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (action === "exit") {
|
|
18
|
+
onResult({ kind: "exit", exitCode: 0 });
|
|
19
|
+
exit();
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
onResult({ kind: "menu-action", action });
|
|
23
|
+
exit();
|
|
24
|
+
} }));
|
|
25
|
+
}
|
|
26
|
+
if (screen === "mcp") {
|
|
27
|
+
return (_jsx(McpWizardScreen, { version: version, ctx: ctx, onDone: (result) => {
|
|
28
|
+
setMcpResult(result);
|
|
29
|
+
setScreen("mcp-done");
|
|
30
|
+
} }));
|
|
31
|
+
}
|
|
32
|
+
if (screen === "mcp-done" && mcpResult) {
|
|
33
|
+
return (_jsx(McpDoneScreen, { version: version, result: mcpResult, onContinue: () => {
|
|
34
|
+
setMcpResult(null);
|
|
35
|
+
setScreen("menu");
|
|
36
|
+
}, onExit: () => {
|
|
37
|
+
onResult({ kind: "exit", exitCode: mcpResult.exitCode });
|
|
38
|
+
exit();
|
|
39
|
+
} }));
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/cli/tui/app.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAKjC,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAc1D,MAAM,UAAU,GAAG,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAY;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAS,MAAM,CAAC,CAAC;IACrD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAA0C,IAAI,CAAC,CAAC;IAC1F,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAE1B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CACL,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;gBACnB,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;oBACrB,SAAS,CAAC,KAAK,CAAC,CAAC;oBACjB,OAAO;gBACT,CAAC;gBACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;oBACtB,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;oBACxC,IAAI,EAAE,CAAC;oBACP,OAAO;gBACT,CAAC;gBACD,QAAQ,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;gBAC1C,IAAI,EAAE,CAAC;YACT,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,CACL,KAAC,eAAe,IACd,OAAO,EAAE,OAAO,EAChB,GAAG,EAAE,GAAG,EACR,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE;gBACjB,YAAY,CAAC,MAAM,CAAC,CAAC;gBACrB,SAAS,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,KAAK,UAAU,IAAI,SAAS,EAAE,CAAC;QACvC,OAAO,CACL,KAAC,aAAa,IACZ,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,GAAG,EAAE;gBACf,YAAY,CAAC,IAAI,CAAC,CAAC;gBACnB,SAAS,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,EACD,MAAM,EAAE,GAAG,EAAE;gBACX,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACzD,IAAI,EAAE,CAAC;YACT,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type SelfMcpConnectionView } from "../../../application/self/mcp-config.js";
|
|
2
|
+
export declare function ConnectionsTable({ connections }: {
|
|
3
|
+
connections: SelfMcpConnectionView[];
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
5
|
+
//# sourceMappingURL=connections-table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections-table.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/connections-table.tsx"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,yCAAyC,CAAC;AAEjD,wBAAgB,gBAAgB,CAAC,EAAE,WAAW,EAAE,EAAE;IAAE,WAAW,EAAE,qBAAqB,EAAE,CAAA;CAAE,2CAWzF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { formatConnectionsTable, } from "../../../application/self/mcp-config.js";
|
|
4
|
+
export function ConnectionsTable({ connections }) {
|
|
5
|
+
if (connections.length === 0) {
|
|
6
|
+
return (_jsx(Box, { children: _jsx(Text, { color: "gray", italic: true, children: "(sin conexiones registradas)" }) }));
|
|
7
|
+
}
|
|
8
|
+
return _jsx(Text, { children: formatConnectionsTable(connections) });
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=connections-table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connections-table.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/connections-table.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAEL,sBAAsB,GACvB,MAAM,yCAAyC,CAAC;AAEjD,MAAM,UAAU,gBAAgB,CAAC,EAAE,WAAW,EAA4C;IACxF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CACL,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,mDAElB,GACH,CACP,CAAC;IACJ,CAAC;IACD,OAAO,KAAC,IAAI,cAAE,sBAAsB,CAAC,WAAW,CAAC,GAAQ,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/footer.tsx"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,2CAMhD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"footer.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/footer.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,UAAU,MAAM,CAAC,EAAE,IAAI,EAAoB;IAC/C,OAAO,CACL,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,IAAI,GAAQ,GAC5B,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/header.tsx"],"names":[],"mappings":"AAEA,wBAAgB,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,2CAYnF"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
export function Header({ version, subtitle }) {
|
|
4
|
+
return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Box, { children: [_jsx(Text, { color: "cyan", bold: true, children: "agent-workflow" }), _jsxs(Text, { color: "gray", children: [" v", version] })] }), subtitle ? _jsx(Text, { color: "gray", children: subtitle }) : null] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=header.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,EAAE,QAAQ,EAA0C;IAClF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aACzC,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,qCAEhB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAI,OAAO,IAAQ,IACjC,EACL,QAAQ,CAAC,CAAC,CAAC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,QAAQ,GAAQ,CAAC,CAAC,CAAC,IAAI,IACnD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface InputPromptProps {
|
|
2
|
+
message: string;
|
|
3
|
+
defaultValue?: string;
|
|
4
|
+
validate?: (value: string) => boolean | string;
|
|
5
|
+
onSubmit: (value: string) => void;
|
|
6
|
+
isActive?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare function InputPrompt(props: InputPromptProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=input-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-prompt.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/input-prompt.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,GAAG,MAAM,CAAC;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAuClD"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { TextInput } from "@inkjs/ui";
|
|
3
|
+
import { Box, Text } from "ink";
|
|
4
|
+
import { useState } from "react";
|
|
5
|
+
export function InputPrompt(props) {
|
|
6
|
+
const { message, defaultValue, validate, onSubmit, isActive = true } = props;
|
|
7
|
+
const [error, setError] = useState();
|
|
8
|
+
const handleSubmit = (value) => {
|
|
9
|
+
if (validate) {
|
|
10
|
+
const result = validate(value);
|
|
11
|
+
if (result === true) {
|
|
12
|
+
setError(undefined);
|
|
13
|
+
onSubmit(value);
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
setError(typeof result === "string" ? result : "Valor inválido");
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
setError(undefined);
|
|
20
|
+
onSubmit(value);
|
|
21
|
+
};
|
|
22
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: "? " }), message] }), _jsx(Box, { marginLeft: 2, children: _jsx(TextInput, { isDisabled: !isActive, ...(defaultValue !== undefined ? { defaultValue } : {}), onSubmit: handleSubmit }) }), error ? (_jsx(Box, { marginLeft: 2, children: _jsx(Text, { color: "red", children: error }) })) : null] }));
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=input-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-prompt.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/input-prompt.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAUjC,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,KAAK,CAAC;IAC7E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAsB,CAAC;IAEzD,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,EAAE;QACrC,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;gBACpB,QAAQ,CAAC,SAAS,CAAC,CAAC;gBACpB,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;YACjE,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,SAAS,CAAC,CAAC;QACpB,QAAQ,CAAC,KAAK,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,mBAAU,EAC3B,OAAO,IACH,EACP,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,SAAS,IACR,UAAU,EAAE,CAAC,QAAQ,KACjB,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EACxD,QAAQ,EAAE,YAAY,GACtB,GACE,EACL,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,GAC5B,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type MenuItem<T extends string> = {
|
|
2
|
+
kind: "item";
|
|
3
|
+
label: string;
|
|
4
|
+
value: T;
|
|
5
|
+
description?: string;
|
|
6
|
+
} | {
|
|
7
|
+
kind: "section";
|
|
8
|
+
label?: string;
|
|
9
|
+
};
|
|
10
|
+
export interface SectionedMenuProps<T extends string> {
|
|
11
|
+
items: MenuItem<T>[];
|
|
12
|
+
onSelect: (value: T) => void;
|
|
13
|
+
isActive?: boolean;
|
|
14
|
+
defaultValue?: T;
|
|
15
|
+
}
|
|
16
|
+
export declare function SectionedMenu<T extends string>(props: SectionedMenuProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=sectioned-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sectioned-menu.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/components/sectioned-menu.tsx"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,MAAM,IACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,CAAC,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GAC/D;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAExC,MAAM,WAAW,kBAAkB,CAAC,CAAC,SAAS,MAAM;IAClD,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,CAAC,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,2CA6D3E"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { useState } from "react";
|
|
4
|
+
export function SectionedMenu(props) {
|
|
5
|
+
const { items, onSelect, isActive = true, defaultValue } = props;
|
|
6
|
+
const selectables = items
|
|
7
|
+
.map((item, index) => ({ item, index }))
|
|
8
|
+
.filter((entry) => {
|
|
9
|
+
return entry.item.kind === "item";
|
|
10
|
+
});
|
|
11
|
+
const initialFocus = (() => {
|
|
12
|
+
if (defaultValue === undefined)
|
|
13
|
+
return 0;
|
|
14
|
+
const found = selectables.findIndex((entry) => entry.item.value === defaultValue);
|
|
15
|
+
return found >= 0 ? found : 0;
|
|
16
|
+
})();
|
|
17
|
+
const [focused, setFocused] = useState(initialFocus);
|
|
18
|
+
useInput((_, key) => {
|
|
19
|
+
if (selectables.length === 0)
|
|
20
|
+
return;
|
|
21
|
+
if (key.upArrow) {
|
|
22
|
+
setFocused((current) => (current - 1 + selectables.length) % selectables.length);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (key.downArrow) {
|
|
26
|
+
setFocused((current) => (current + 1) % selectables.length);
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (key.return) {
|
|
30
|
+
const target = selectables[focused];
|
|
31
|
+
if (target)
|
|
32
|
+
onSelect(target.item.value);
|
|
33
|
+
}
|
|
34
|
+
}, { isActive });
|
|
35
|
+
const keyedItems = computeStableKeys(items);
|
|
36
|
+
return (_jsx(Box, { flexDirection: "column", children: keyedItems.map(({ item, index, key }) => {
|
|
37
|
+
if (item.kind === "section") {
|
|
38
|
+
if (!item.label) {
|
|
39
|
+
return _jsx(Text, { children: " " }, key);
|
|
40
|
+
}
|
|
41
|
+
return (_jsxs(Text, { color: "gray", dimColor: true, children: ["\u2500\u2500 ", item.label, " \u2500\u2500"] }, key));
|
|
42
|
+
}
|
|
43
|
+
const selectable = selectables.find((entry) => entry.index === index);
|
|
44
|
+
const isFocused = selectable?.index === selectables[focused]?.index;
|
|
45
|
+
return (_jsxs(Text, { ...(isFocused ? { color: "cyan" } : {}), children: [isFocused ? "❯ " : " ", item.label] }, key));
|
|
46
|
+
}) }));
|
|
47
|
+
}
|
|
48
|
+
function computeStableKeys(items) {
|
|
49
|
+
const counters = new Map();
|
|
50
|
+
return items.map((item, index) => {
|
|
51
|
+
const base = item.kind === "item" ? `i:${item.value}` : `s:${item.label ?? "blank"}`;
|
|
52
|
+
const seen = counters.get(base) ?? 0;
|
|
53
|
+
counters.set(base, seen + 1);
|
|
54
|
+
return { item, index, key: seen === 0 ? base : `${base}#${seen}` };
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=sectioned-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sectioned-menu.js","sourceRoot":"","sources":["../../../../src/cli/tui/components/sectioned-menu.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/run.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAO,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAsBjF"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { render } from "ink";
|
|
3
|
+
import { App } from "./app.js";
|
|
4
|
+
export async function runTui(version, ctx) {
|
|
5
|
+
return new Promise((resolve) => {
|
|
6
|
+
let resolved = false;
|
|
7
|
+
const settle = (result) => {
|
|
8
|
+
if (resolved)
|
|
9
|
+
return;
|
|
10
|
+
resolved = true;
|
|
11
|
+
resolve(result);
|
|
12
|
+
};
|
|
13
|
+
const instance = render(_jsx(App, { version: version, ctx: ctx, onResult: settle }), {
|
|
14
|
+
exitOnCtrlC: true,
|
|
15
|
+
});
|
|
16
|
+
instance
|
|
17
|
+
.waitUntilExit()
|
|
18
|
+
.then(() => settle({ kind: "exit", exitCode: 0 }))
|
|
19
|
+
.catch((err) => {
|
|
20
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
21
|
+
process.stderr.write(`tui error: ${message}\n`);
|
|
22
|
+
settle({ kind: "exit", exitCode: 1 });
|
|
23
|
+
});
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/cli/tui/run.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,GAAG,EAAkB,MAAM,UAAU,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,OAAe,EAAE,GAAe;IAC3D,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,EAAE;QACxC,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,MAAiB,EAAE,EAAE;YACnC,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC,CAAC;QAClB,CAAC,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAC,GAAG,IAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,GAAI,EAAE;YAC7E,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;QAEH,QAAQ;aACL,aAAa,EAAE;aACf,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;aACjD,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;YACtB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,OAAO,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MenuAction } from "../../interactive-menu.js";
|
|
2
|
+
export interface MainMenuProps {
|
|
3
|
+
version: string;
|
|
4
|
+
onSelect: (action: MenuAction) => void;
|
|
5
|
+
isActive?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function MainMenu({ version, onSelect, isActive }: MainMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=main-menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-menu.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/screens/main-menu.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAiB5D,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAe,EAAE,EAAE,aAAa,2CAQ7E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box } from "ink";
|
|
3
|
+
import { Footer } from "../components/footer.js";
|
|
4
|
+
import { Header } from "../components/header.js";
|
|
5
|
+
import { SectionedMenu } from "../components/sectioned-menu.js";
|
|
6
|
+
const MENU_ITEMS = [
|
|
7
|
+
{ kind: "section", label: "Verificar / configurar" },
|
|
8
|
+
{ kind: "item", label: "▸ Doctor (verificar instalación)", value: "doctor" },
|
|
9
|
+
{ kind: "item", label: "▸ Install / Update skill (manager bundled)", value: "install-skill" },
|
|
10
|
+
{ kind: "item", label: "▸ Configurar MCP database (dbhub)", value: "mcp" },
|
|
11
|
+
{ kind: "section", label: "Mantenimiento" },
|
|
12
|
+
{ kind: "item", label: "· Update CLI (npm i -g @tacuchi/agent-workflow-cli)", value: "update" },
|
|
13
|
+
{ kind: "item", label: "· Help (lista de comandos)", value: "help" },
|
|
14
|
+
{ kind: "section" },
|
|
15
|
+
{ kind: "item", label: "⏎ Salir", value: "exit" },
|
|
16
|
+
];
|
|
17
|
+
export function MainMenu({ version, onSelect, isActive = true }) {
|
|
18
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { version: version, subtitle: "Men\u00FA principal" }), _jsx(SectionedMenu, { items: MENU_ITEMS, onSelect: onSelect, isActive: isActive }), _jsx(Footer, { hint: "\u2191\u2193 navegar \u00B7 \u23CE seleccionar \u00B7 Ctrl-C salir" })] }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=main-menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main-menu.js","sourceRoot":"","sources":["../../../../src/cli/tui/screens/main-menu.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAiB,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAE/E,MAAM,UAAU,GAA2B;IACzC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,wBAAwB,EAAE;IACpD,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,kCAAkC,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC5E,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,4CAA4C,EAAE,KAAK,EAAE,eAAe,EAAE;IAC7F,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mCAAmC,EAAE,KAAK,EAAE,KAAK,EAAE;IAC1E,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;IAC3C,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,qDAAqD,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC/F,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,4BAA4B,EAAE,KAAK,EAAE,MAAM,EAAE;IACpE,EAAE,IAAI,EAAE,SAAS,EAAE;IACnB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;CAClD,CAAC;AAQF,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAiB;IAC5E,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAC,qBAAgB,GAAG,EACtD,KAAC,aAAa,IAAC,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAI,EAC5E,KAAC,MAAM,IAAC,IAAI,EAAC,oEAA2C,GAAG,IACvD,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { SelfMcpConfigData } from "../../../application/self/mcp-config.js";
|
|
2
|
+
import type { CommandResult } from "../../../domain/types.js";
|
|
3
|
+
export interface McpDoneScreenProps {
|
|
4
|
+
version: string;
|
|
5
|
+
result: CommandResult<SelfMcpConfigData>;
|
|
6
|
+
onContinue: () => void;
|
|
7
|
+
onExit: () => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function McpDoneScreen({ version, result, onContinue, onExit }: McpDoneScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=mcp-done.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-done.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/screens/mcp-done.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EAElB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAK9D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IACzC,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,IAAI,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,kBAAkB,2CA4BxF"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text, useInput } from "ink";
|
|
3
|
+
import { ConnectionsTable } from "../components/connections-table.js";
|
|
4
|
+
import { Footer } from "../components/footer.js";
|
|
5
|
+
import { Header } from "../components/header.js";
|
|
6
|
+
export function McpDoneScreen({ version, result, onContinue, onExit }) {
|
|
7
|
+
useInput((input, key) => {
|
|
8
|
+
if (key.return || input === "m" || input === "M")
|
|
9
|
+
onContinue();
|
|
10
|
+
if (input === "q" || input === "Q" || key.escape)
|
|
11
|
+
onExit();
|
|
12
|
+
});
|
|
13
|
+
const data = result.data;
|
|
14
|
+
const summary = data?.summary ?? (result.ok ? "Acción completada." : "Acción cancelada o falló.");
|
|
15
|
+
const connections = data?.connections ?? [];
|
|
16
|
+
const isCancel = data?.action === "cancel";
|
|
17
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { version: version, subtitle: "Resultado MCP" }), _jsx(Box, { marginBottom: 1, children: _jsxs(Text, { color: result.ok ? "green" : "red", children: [result.ok ? "✓ " : "✗ ", summary] }) }), !isCancel && connections.length > 0 ? (_jsx(Box, { flexDirection: "column", marginBottom: 1, children: _jsx(ConnectionsTable, { connections: connections }) })) : null, _jsx(Footer, { hint: "\u23CE volver al men\u00FA \u00B7 q salir" })] }));
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=mcp-done.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-done.js","sourceRoot":"","sources":["../../../../src/cli/tui/screens/mcp-done.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAM1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AASjD,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAsB;IACvF,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;YAAE,UAAU,EAAE,CAAC;QAC/D,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM;YAAE,MAAM,EAAE,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,IAAI,EAAE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC;IAClG,MAAM,WAAW,GAA4B,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;IACrE,MAAM,QAAQ,GAAG,IAAI,EAAE,MAAM,KAAK,QAAQ,CAAC;IAE3C,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAC,eAAe,GAAG,EACrD,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,MAAC,IAAI,IAAC,KAAK,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,aACrC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACvB,OAAO,IACH,GACH,EACL,CAAC,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACrC,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,YACzC,KAAC,gBAAgB,IAAC,WAAW,EAAE,WAAW,GAAI,GAC1C,CACP,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,MAAM,IAAC,IAAI,EAAC,2CAA4B,GAAG,IACxC,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { type SelfMcpConfigData } from "../../../application/self/mcp-config.js";
|
|
2
|
+
import type { CommandResult } from "../../../domain/types.js";
|
|
3
|
+
import type { CliContext } from "../../types.js";
|
|
4
|
+
export interface McpWizardScreenProps {
|
|
5
|
+
version: string;
|
|
6
|
+
ctx: CliContext;
|
|
7
|
+
onDone: (result: CommandResult<SelfMcpConfigData>) => void;
|
|
8
|
+
}
|
|
9
|
+
export declare function McpWizardScreen({ version, ctx, onDone }: McpWizardScreenProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=mcp-wizard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-wizard.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/screens/mcp-wizard.tsx"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAwBjD,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,UAAU,CAAC;IAChB,MAAM,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;CAC5D;AA0BD,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,oBAAoB,2CAwG7E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Spinner } from "@inkjs/ui";
|
|
3
|
+
import { Box, Text, useApp } from "ink";
|
|
4
|
+
import { useEffect, useRef, useState } from "react";
|
|
5
|
+
import { selfMcpConfig, } from "../../../application/self/mcp-config.js";
|
|
6
|
+
import { Footer } from "../components/footer.js";
|
|
7
|
+
import { Header } from "../components/header.js";
|
|
8
|
+
import { InputPrompt } from "../components/input-prompt.js";
|
|
9
|
+
import { SectionedMenu } from "../components/sectioned-menu.js";
|
|
10
|
+
function buildEmptyArgs() {
|
|
11
|
+
return {
|
|
12
|
+
rest: [],
|
|
13
|
+
plugin: {},
|
|
14
|
+
flags: new Set(),
|
|
15
|
+
values: new Map(),
|
|
16
|
+
valuesMulti: new Map(),
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function toMenuItem(choice) {
|
|
20
|
+
if (choice.type === "separator") {
|
|
21
|
+
const sep = choice;
|
|
22
|
+
return sep.separator !== undefined
|
|
23
|
+
? { kind: "section", label: sep.separator.replace(/^── | ──$/g, "") }
|
|
24
|
+
: { kind: "section" };
|
|
25
|
+
}
|
|
26
|
+
const item = choice;
|
|
27
|
+
const base = { kind: "item", label: item.name, value: item.value };
|
|
28
|
+
return item.description !== undefined ? { ...base, description: item.description } : base;
|
|
29
|
+
}
|
|
30
|
+
export function McpWizardScreen({ version, ctx, onDone }) {
|
|
31
|
+
const [activePrompt, setActivePrompt] = useState(null);
|
|
32
|
+
const [errorMessage, setErrorMessage] = useState();
|
|
33
|
+
const startedRef = useRef(false);
|
|
34
|
+
const { exit } = useApp();
|
|
35
|
+
useEffect(() => {
|
|
36
|
+
if (startedRef.current)
|
|
37
|
+
return;
|
|
38
|
+
startedRef.current = true;
|
|
39
|
+
const prompts = {
|
|
40
|
+
select(options) {
|
|
41
|
+
return new Promise((resolve) => {
|
|
42
|
+
const items = options.choices.map(toMenuItem);
|
|
43
|
+
const state = {
|
|
44
|
+
kind: "select",
|
|
45
|
+
message: options.message,
|
|
46
|
+
items,
|
|
47
|
+
resolve: (value) => {
|
|
48
|
+
setActivePrompt(null);
|
|
49
|
+
resolve(value);
|
|
50
|
+
},
|
|
51
|
+
...(options.default !== undefined ? { defaultValue: options.default } : {}),
|
|
52
|
+
};
|
|
53
|
+
setActivePrompt(state);
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
input(options) {
|
|
57
|
+
return new Promise((resolve) => {
|
|
58
|
+
const state = {
|
|
59
|
+
kind: "input",
|
|
60
|
+
message: options.message,
|
|
61
|
+
resolve: (value) => {
|
|
62
|
+
setActivePrompt(null);
|
|
63
|
+
resolve(value);
|
|
64
|
+
},
|
|
65
|
+
...(options.default !== undefined ? { defaultValue: options.default } : {}),
|
|
66
|
+
...(options.validate ? { validate: options.validate } : {}),
|
|
67
|
+
};
|
|
68
|
+
setActivePrompt(state);
|
|
69
|
+
});
|
|
70
|
+
},
|
|
71
|
+
};
|
|
72
|
+
selfMcpConfig(buildEmptyArgs(), ctx, prompts)
|
|
73
|
+
.then((result) => {
|
|
74
|
+
onDone(result);
|
|
75
|
+
})
|
|
76
|
+
.catch((err) => {
|
|
77
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
78
|
+
setErrorMessage(message);
|
|
79
|
+
exit();
|
|
80
|
+
});
|
|
81
|
+
}, [ctx, onDone, exit]);
|
|
82
|
+
if (errorMessage) {
|
|
83
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { version: version, subtitle: "Configurar MCP database (dbhub)" }), _jsxs(Text, { color: "red", children: ["Error: ", errorMessage] })] }));
|
|
84
|
+
}
|
|
85
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Header, { version: version, subtitle: "Configurar MCP database (dbhub)" }), activePrompt === null ? (_jsx(Box, { children: _jsx(Spinner, { label: "Procesando..." }) })) : activePrompt.kind === "select" ? (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: "? " }), activePrompt.message] }), _jsx(Box, { marginTop: 1, children: _jsx(SectionedMenu, { items: activePrompt.items, onSelect: (value) => activePrompt.resolve(value), ...(activePrompt.defaultValue !== undefined
|
|
86
|
+
? { defaultValue: activePrompt.defaultValue }
|
|
87
|
+
: {}) }) })] })) : (_jsx(InputPrompt, { message: activePrompt.message, ...(activePrompt.defaultValue !== undefined
|
|
88
|
+
? { defaultValue: activePrompt.defaultValue }
|
|
89
|
+
: {}), ...(activePrompt.validate ? { validate: activePrompt.validate } : {}), onSubmit: (value) => activePrompt.resolve(value) })), _jsx(Footer, { hint: "\u2191\u2193 navegar \u00B7 \u23CE confirmar \u00B7 Ctrl-C cancelar" })] }));
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=mcp-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-wizard.js","sourceRoot":"","sources":["../../../../src/cli/tui/screens/mcp-wizard.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tacuchi/agent-workflow-cli",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.10.0",
|
|
4
4
|
"description": "Agnostic runtime CLI for session-lifecycle workflows. Auto-detects namespace from any `.<ns>/sessions/` dir in CWD; falls back to 'agent-workflow'. Plugins can reclaim a fixed namespace via SessionStart hook (writes to `~/.config/agent-workflow/namespace`). Bundles the universal `agent-workflow` skill in the tarball — `self install-skill` copies it from the bundled location to `~/.claude/skills/agent-workflow/` and `~/.codex/skills/agent-workflow/` (dual-target by default; opt-out with `--target claude|codex`). Override the source with `--from <local-path>` for skill development.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -45,6 +45,8 @@
|
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"@biomejs/biome": "^1.9.4",
|
|
47
47
|
"@types/node": "^22.10.5",
|
|
48
|
+
"@types/react": "^18.3.28",
|
|
49
|
+
"ink-testing-library": "^4.0.0",
|
|
48
50
|
"typescript": "^5.7.3",
|
|
49
51
|
"vitest": "^2.1.8"
|
|
50
52
|
},
|
|
@@ -52,7 +54,10 @@
|
|
|
52
54
|
"access": "public"
|
|
53
55
|
},
|
|
54
56
|
"dependencies": {
|
|
57
|
+
"@inkjs/ui": "^2.0.0",
|
|
55
58
|
"@inquirer/prompts": "^7.10.1",
|
|
59
|
+
"ink": "^5.2.1",
|
|
60
|
+
"react": "^18.3.1",
|
|
56
61
|
"smol-toml": "^1.6.1"
|
|
57
62
|
}
|
|
58
63
|
}
|