@teleforge-ai/anya 0.5.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/README.md +69 -0
- package/assets/anya.jpg +0 -0
- package/assets/anya.png +0 -0
- package/dist/chat/session.d.ts +15 -0
- package/dist/chat/session.d.ts.map +1 -0
- package/dist/chat/session.js +59 -0
- package/dist/chat/session.js.map +1 -0
- package/dist/chat/stream.d.ts +13 -0
- package/dist/chat/stream.d.ts.map +1 -0
- package/dist/chat/stream.js +86 -0
- package/dist/chat/stream.js.map +1 -0
- package/dist/commands/providerFactory.d.ts +12 -0
- package/dist/commands/providerFactory.d.ts.map +1 -0
- package/dist/commands/providerFactory.js +73 -0
- package/dist/commands/providerFactory.js.map +1 -0
- package/dist/config/encryption.d.ts +3 -0
- package/dist/config/encryption.d.ts.map +1 -0
- package/dist/config/encryption.js +47 -0
- package/dist/config/encryption.js.map +1 -0
- package/dist/config/schema.d.ts +94 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +28 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/store.d.ts +40 -0
- package/dist/config/store.d.ts.map +1 -0
- package/dist/config/store.js +195 -0
- package/dist/config/store.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +97 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/anthropic.d.ts +10 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +128 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/base.d.ts +39 -0
- package/dist/providers/base.d.ts.map +1 -0
- package/dist/providers/base.js +28 -0
- package/dist/providers/base.js.map +1 -0
- package/dist/providers/custom.d.ts +11 -0
- package/dist/providers/custom.d.ts.map +1 -0
- package/dist/providers/custom.js +90 -0
- package/dist/providers/custom.js.map +1 -0
- package/dist/providers/deepseek.d.ts +10 -0
- package/dist/providers/deepseek.d.ts.map +1 -0
- package/dist/providers/deepseek.js +88 -0
- package/dist/providers/deepseek.js.map +1 -0
- package/dist/providers/google.d.ts +10 -0
- package/dist/providers/google.d.ts.map +1 -0
- package/dist/providers/google.js +131 -0
- package/dist/providers/google.js.map +1 -0
- package/dist/providers/groq.d.ts +10 -0
- package/dist/providers/groq.d.ts.map +1 -0
- package/dist/providers/groq.js +88 -0
- package/dist/providers/groq.js.map +1 -0
- package/dist/providers/index.d.ts +10 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +39 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/mistral.d.ts +10 -0
- package/dist/providers/mistral.d.ts.map +1 -0
- package/dist/providers/mistral.js +88 -0
- package/dist/providers/mistral.js.map +1 -0
- package/dist/providers/ollama.d.ts +11 -0
- package/dist/providers/ollama.d.ts.map +1 -0
- package/dist/providers/ollama.js +82 -0
- package/dist/providers/ollama.js.map +1 -0
- package/dist/providers/openai.d.ts +10 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +127 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/opencode.d.ts +11 -0
- package/dist/providers/opencode.d.ts.map +1 -0
- package/dist/providers/opencode.js +99 -0
- package/dist/providers/opencode.js.map +1 -0
- package/dist/providers/openrouter.d.ts +10 -0
- package/dist/providers/openrouter.d.ts.map +1 -0
- package/dist/providers/openrouter.js +119 -0
- package/dist/providers/openrouter.js.map +1 -0
- package/dist/providers/together.d.ts +10 -0
- package/dist/providers/together.d.ts.map +1 -0
- package/dist/providers/together.js +88 -0
- package/dist/providers/together.js.map +1 -0
- package/dist/providers/xai.d.ts +10 -0
- package/dist/providers/xai.d.ts.map +1 -0
- package/dist/providers/xai.js +88 -0
- package/dist/providers/xai.js.map +1 -0
- package/dist/tui/ansi.d.ts +49 -0
- package/dist/tui/ansi.d.ts.map +1 -0
- package/dist/tui/ansi.js +208 -0
- package/dist/tui/ansi.js.map +1 -0
- package/dist/tui/components/anyaArt.d.ts +2 -0
- package/dist/tui/components/anyaArt.d.ts.map +1 -0
- package/dist/tui/components/anyaArt.js +20 -0
- package/dist/tui/components/anyaArt.js.map +1 -0
- package/dist/tui/components/dialog.d.ts +15 -0
- package/dist/tui/components/dialog.d.ts.map +1 -0
- package/dist/tui/components/dialog.js +115 -0
- package/dist/tui/components/dialog.js.map +1 -0
- package/dist/tui/components/messages.d.ts +10 -0
- package/dist/tui/components/messages.d.ts.map +1 -0
- package/dist/tui/components/messages.js +100 -0
- package/dist/tui/components/messages.js.map +1 -0
- package/dist/tui/render.d.ts +3 -0
- package/dist/tui/render.d.ts.map +1 -0
- package/dist/tui/render.js +137 -0
- package/dist/tui/render.js.map +1 -0
- package/dist/tui/screen.d.ts +19 -0
- package/dist/tui/screen.d.ts.map +1 -0
- package/dist/tui/screen.js +98 -0
- package/dist/tui/screen.js.map +1 -0
- package/dist/tui/state.d.ts +41 -0
- package/dist/tui/state.d.ts.map +1 -0
- package/dist/tui/state.js +306 -0
- package/dist/tui/state.js.map +1 -0
- package/dist/ui/App.d.ts +3 -0
- package/dist/ui/App.d.ts.map +1 -0
- package/dist/ui/App.js +207 -0
- package/dist/ui/App.js.map +1 -0
- package/dist/ui/components/CommandPalette.d.ts +8 -0
- package/dist/ui/components/CommandPalette.d.ts.map +1 -0
- package/dist/ui/components/CommandPalette.js +63 -0
- package/dist/ui/components/CommandPalette.js.map +1 -0
- package/dist/ui/components/HomeScreen.d.ts +8 -0
- package/dist/ui/components/HomeScreen.d.ts.map +1 -0
- package/dist/ui/components/HomeScreen.js +29 -0
- package/dist/ui/components/HomeScreen.js.map +1 -0
- package/dist/ui/components/ImageRenderer.d.ts +8 -0
- package/dist/ui/components/ImageRenderer.d.ts.map +1 -0
- package/dist/ui/components/ImageRenderer.js +42 -0
- package/dist/ui/components/ImageRenderer.js.map +1 -0
- package/dist/ui/components/InputBox.d.ts +12 -0
- package/dist/ui/components/InputBox.d.ts.map +1 -0
- package/dist/ui/components/InputBox.js +96 -0
- package/dist/ui/components/InputBox.js.map +1 -0
- package/dist/ui/components/MessageList.d.ts +13 -0
- package/dist/ui/components/MessageList.d.ts.map +1 -0
- package/dist/ui/components/MessageList.js +10 -0
- package/dist/ui/components/MessageList.js.map +1 -0
- package/dist/ui/components/ModelSelector.d.ts +9 -0
- package/dist/ui/components/ModelSelector.d.ts.map +1 -0
- package/dist/ui/components/ModelSelector.js +77 -0
- package/dist/ui/components/ModelSelector.js.map +1 -0
- package/dist/ui/components/ProviderForm.d.ts +8 -0
- package/dist/ui/components/ProviderForm.d.ts.map +1 -0
- package/dist/ui/components/ProviderForm.js +88 -0
- package/dist/ui/components/ProviderForm.js.map +1 -0
- package/dist/ui/components/SettingsPanel.d.ts +7 -0
- package/dist/ui/components/SettingsPanel.d.ts.map +1 -0
- package/dist/ui/components/SettingsPanel.js +87 -0
- package/dist/ui/components/SettingsPanel.js.map +1 -0
- package/dist/ui/components/StatusBar.d.ts +8 -0
- package/dist/ui/components/StatusBar.d.ts.map +1 -0
- package/dist/ui/components/StatusBar.js +15 -0
- package/dist/ui/components/StatusBar.js.map +1 -0
- package/dist/ui/components/StatusDashboard.d.ts +7 -0
- package/dist/ui/components/StatusDashboard.d.ts.map +1 -0
- package/dist/ui/components/StatusDashboard.js +29 -0
- package/dist/ui/components/StatusDashboard.js.map +1 -0
- package/dist/ui/components/TitleBar.d.ts +8 -0
- package/dist/ui/components/TitleBar.d.ts.map +1 -0
- package/dist/ui/components/TitleBar.js +7 -0
- package/dist/ui/components/TitleBar.js.map +1 -0
- package/dist/ui/hooks/useConfig.d.ts +28 -0
- package/dist/ui/hooks/useConfig.d.ts.map +1 -0
- package/dist/ui/hooks/useConfig.js +20 -0
- package/dist/ui/hooks/useConfig.js.map +1 -0
- package/dist/ui/hooks/useModels.d.ts +10 -0
- package/dist/ui/hooks/useModels.d.ts.map +1 -0
- package/dist/ui/hooks/useModels.js +30 -0
- package/dist/ui/hooks/useModels.js.map +1 -0
- package/dist/ui/hooks/useProviders.d.ts +18 -0
- package/dist/ui/hooks/useProviders.d.ts.map +1 -0
- package/dist/ui/hooks/useProviders.js +56 -0
- package/dist/ui/hooks/useProviders.js.map +1 -0
- package/dist/ui/theme.d.ts +22 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +99 -0
- package/dist/ui/theme.js.map +1 -0
- package/dist/utils/fuzzysearch.d.ts +8 -0
- package/dist/utils/fuzzysearch.d.ts.map +1 -0
- package/dist/utils/fuzzysearch.js +19 -0
- package/dist/utils/fuzzysearch.js.map +1 -0
- package/dist/utils/image.d.ts +8 -0
- package/dist/utils/image.d.ts.map +1 -0
- package/dist/utils/image.js +63 -0
- package/dist/utils/image.js.map +1 -0
- package/dist/utils/json.d.ts +2 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +9 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.d.ts +19 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +23 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/terminal.d.ts +11 -0
- package/dist/utils/terminal.d.ts.map +1 -0
- package/dist/utils/terminal.js +38 -0
- package/dist/utils/terminal.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../../src/ui/components/CommandPalette.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HomeScreen.d.ts","sourceRoot":"","sources":["../../../src/ui/components/HomeScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AASlD,UAAU,KAAK;IACb,UAAU,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,KAAK,qBA6EtC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { loadConfig } from '../../config/store.js';
|
|
5
|
+
import { ALL_PROVIDERS } from '../../providers/base.js';
|
|
6
|
+
import { CONNECT_PROVIDERS } from '../../commands/providerFactory.js';
|
|
7
|
+
import { ImageRenderer } from './ImageRenderer.js';
|
|
8
|
+
import { getAnyaAsciiArt } from '../../utils/image.js';
|
|
9
|
+
import { readPackageJson } from '../../utils/json.js';
|
|
10
|
+
export function HomeScreen(props) {
|
|
11
|
+
const config = loadConfig();
|
|
12
|
+
const [cols, setCols] = useState(process.stdout.columns || 80);
|
|
13
|
+
const hasLeft = cols >= 80;
|
|
14
|
+
const pw = Math.floor((cols - 4) / 2);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const onResize = () => { setCols(process.stdout.columns || 80); };
|
|
17
|
+
process.stdout.on('resize', onResize);
|
|
18
|
+
return () => { process.stdout.removeListener('resize', onResize); };
|
|
19
|
+
}, []);
|
|
20
|
+
const activeProvider = ALL_PROVIDERS.find((p) => p.id === config.activeProvider);
|
|
21
|
+
const connectedCount = Object.keys(config.providers).filter((k) => config.providers[k]?.apiKey).length;
|
|
22
|
+
const isConnected = !!config.providers[config.activeProvider]?.apiKey;
|
|
23
|
+
const tips = ['Type / for commands', 'Tab to switch modes', '/connect to add provider', '/models to browse', '/settings to customize', 'Ctrl+P for palette'];
|
|
24
|
+
const tip = tips[Math.floor(Math.random() * tips.length)];
|
|
25
|
+
const leftPanel = (_jsxs(Box, { flexDirection: "column", flexGrow: 1, paddingX: 1, children: [_jsx(Box, { borderStyle: "round", borderColor: "#FF69B4", paddingX: 1, paddingY: 1, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#FF1493", bold: true, children: "Anya AI CLI" }), _jsxs(Text, { color: "#CC99AA", children: ["Multi-provider AI assistant v", readPackageJson().version] })] }) }), _jsx(Box, { borderStyle: "round", borderColor: "#FF69B4", paddingX: 1, paddingY: 1, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#FF1493", bold: true, children: "Provider Status" }), _jsxs(Box, { children: [_jsx(Text, { color: isConnected ? '#4CAF50' : '#F44336', children: isConnected ? '●' : '○' }), _jsxs(Text, { color: "#333333", children: [" ", activeProvider?.name || 'No provider'] }), isConnected ? _jsxs(Text, { color: "#CC99AA", children: [" (", config.activeModel, ")"] }) : null] }), _jsxs(Text, { color: "#CC99AA", children: [connectedCount, " / ", ALL_PROVIDERS.length, " configured"] })] }) }), _jsx(Box, { borderStyle: "round", borderColor: "#FF69B4", paddingX: 1, paddingY: 1, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#FF1493", bold: true, children: "Quick Commands" }), CONNECT_PROVIDERS.slice(0, 6).map((p) => (_jsxs(Box, { children: [_jsxs(Text, { color: "#333333", children: [" /connect ", p.id] }), _jsxs(Text, { color: "#CC99AA", children: [" \u2014 ", p.name] })] }, p.id)))] }) }), _jsx(Box, { borderStyle: "round", borderColor: "#FF69B4", paddingX: 1, paddingY: 1, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "#FF1493", bold: true, children: "Help" }), _jsx(Text, { color: "#CC99AA", children: " /connect /models /settings" }), _jsx(Text, { color: "#CC99AA", children: " /status /help /quit" })] }) })] }));
|
|
26
|
+
const rightPanel = (_jsxs(Box, { flexDirection: "column", alignItems: "center", justifyContent: "center", width: pw, children: [props.showImage ? _jsx(ImageRenderer, { width: pw }) : (_jsx(Box, { flexDirection: "column", alignItems: "center", children: getAnyaAsciiArt(pw).map((line, i) => _jsx(Text, { color: "#FF69B4", children: line }, i)) })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#CC99AA", children: tip }) })] }));
|
|
27
|
+
return (_jsx(Box, { flexDirection: "column", width: "100%", children: _jsxs(Box, { flexDirection: "row", flexGrow: 1, children: [_jsx(Box, { flexGrow: 1, width: hasLeft ? pw : cols - 2, children: leftPanel }), hasLeft ? _jsx(Box, { width: pw, children: rightPanel }) : null] }) }));
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=HomeScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HomeScreen.js","sourceRoot":"","sources":["../../../src/ui/components/HomeScreen.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageRenderer.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ImageRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAKlD,UAAU,KAAK;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,4BAkDzC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { renderImage } from '../../utils/image.js';
|
|
5
|
+
import { detectTerminal } from '../../utils/terminal.js';
|
|
6
|
+
export function ImageRenderer(props) {
|
|
7
|
+
const [imageOutput, setImageOutput] = useState('');
|
|
8
|
+
const [asciiArt, setAsciiArt] = useState([]);
|
|
9
|
+
const term = detectTerminal();
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
if (!props.visible)
|
|
12
|
+
return;
|
|
13
|
+
const result = renderImage(props.width);
|
|
14
|
+
if ('data' in result) {
|
|
15
|
+
setImageOutput(result.data);
|
|
16
|
+
setAsciiArt([]);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
setImageOutput('');
|
|
20
|
+
setAsciiArt(result.ascii);
|
|
21
|
+
}
|
|
22
|
+
}, [props.width, props.visible]);
|
|
23
|
+
if (!props.visible)
|
|
24
|
+
return null;
|
|
25
|
+
if (term.supportsImages && imageOutput) {
|
|
26
|
+
return _jsx(Text, { children: imageOutput });
|
|
27
|
+
}
|
|
28
|
+
if (asciiArt.length > 0) {
|
|
29
|
+
return (_jsx(Box, { flexDirection: "column", alignItems: "center", children: asciiArt.map((line, i) => (_jsx(Text, { color: "#FF69B4", children: line }, i))) }));
|
|
30
|
+
}
|
|
31
|
+
const w = Math.min(props.width - 2, 34);
|
|
32
|
+
const fallback = [
|
|
33
|
+
` ┌${'─'.repeat(w)}┐`,
|
|
34
|
+
` │ ★ Anya AI CLI ★ │`,
|
|
35
|
+
` │ Command Line Assistant │`,
|
|
36
|
+
` │ anya@cli ~ ready │`,
|
|
37
|
+
` └${'─'.repeat(w)}┘`,
|
|
38
|
+
` ♥ ♥ ♥ ♥ ♥`,
|
|
39
|
+
];
|
|
40
|
+
return (_jsx(Box, { flexDirection: "column", alignItems: "center", children: fallback.map((line, i) => (_jsx(Text, { color: "#FF69B4", children: line }, i))) }));
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=ImageRenderer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ImageRenderer.js","sourceRoot":"","sources":["../../../src/ui/components/ImageRenderer.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAOxD,MAAM,UAAU,aAAa,CAAC,KAAY;IACxC,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;IAClD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAE7B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,OAAM;QAC1B,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QACvC,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;YACrB,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YAC3B,WAAW,CAAC,EAAE,CAAC,CAAA;QACjB,CAAC;aAAM,CAAC;YACN,cAAc,CAAC,EAAE,CAAC,CAAA;YAClB,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;IAEhC,IAAI,CAAC,KAAK,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAE/B,IAAI,IAAI,CAAC,cAAc,IAAI,WAAW,EAAE,CAAC;QACvC,OAAO,KAAC,IAAI,cAAE,WAAW,GAAQ,CAAA;IACnC,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,YAC5C,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,CAAS,EAAE,EAAE,CAAC,CACzC,KAAC,IAAI,IAAS,KAAK,EAAC,SAAS,YAAE,IAAI,IAAxB,CAAC,CAA+B,CAC5C,CAAC,GACE,CACP,CAAA;IACH,CAAC;IAED,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACvC,MAAM,QAAQ,GAAG;QACf,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;QACrB,gCAAgC;QAChC,kCAAkC;QAClC,kCAAkC;QAClC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;QACrB,aAAa;KACd,CAAA;IAED,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,QAAQ,YAC5C,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,CAAS,EAAE,EAAE,CAAC,CACzC,KAAC,IAAI,IAAS,KAAK,EAAC,SAAS,YAAE,IAAI,IAAxB,CAAC,CAA+B,CAC5C,CAAC,GACE,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
onSubmit: (value: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
mode?: string;
|
|
6
|
+
modelName?: string;
|
|
7
|
+
onSlash?: () => void;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare function InputBox(props: Props): React.JSX.Element;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=InputBox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputBox.d.ts","sourceRoot":"","sources":["../../../src/ui/components/InputBox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAwC,MAAM,OAAO,CAAA;AAG5D,UAAU,KAAK;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,qBAmGpC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useRef, useCallback } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
export function InputBox(props) {
|
|
5
|
+
const [value, setValue] = useState('');
|
|
6
|
+
const [cursor, setCursor] = useState(0);
|
|
7
|
+
const [history, setHistory] = useState([]);
|
|
8
|
+
const [historyIdx, setHistoryIdx] = useState(-1);
|
|
9
|
+
const valueRef = useRef(value);
|
|
10
|
+
valueRef.current = value;
|
|
11
|
+
const submitValue = useCallback(() => {
|
|
12
|
+
const t = valueRef.current.trim();
|
|
13
|
+
if (!t)
|
|
14
|
+
return;
|
|
15
|
+
props.onSubmit(t);
|
|
16
|
+
setHistory((p) => [...p, t]);
|
|
17
|
+
setHistoryIdx(-1);
|
|
18
|
+
setValue('');
|
|
19
|
+
setCursor(0);
|
|
20
|
+
}, [props]);
|
|
21
|
+
useInput((input, key) => {
|
|
22
|
+
if (props.disabled)
|
|
23
|
+
return;
|
|
24
|
+
if (key.return && !key.shift) {
|
|
25
|
+
submitValue();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (key.escape) {
|
|
29
|
+
setValue('');
|
|
30
|
+
setCursor(0);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (key.upArrow && !key.ctrl) {
|
|
34
|
+
if (history.length > 0) {
|
|
35
|
+
const ni = Math.min(historyIdx + 1, history.length - 1);
|
|
36
|
+
setHistoryIdx(ni);
|
|
37
|
+
const h = history[history.length - 1 - ni];
|
|
38
|
+
setValue(h);
|
|
39
|
+
setCursor(h.length);
|
|
40
|
+
}
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (key.downArrow && !key.ctrl) {
|
|
44
|
+
if (historyIdx > 0) {
|
|
45
|
+
const ni = historyIdx - 1;
|
|
46
|
+
setHistoryIdx(ni);
|
|
47
|
+
const h = history[history.length - 1 - ni];
|
|
48
|
+
setValue(h);
|
|
49
|
+
setCursor(h.length);
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
setHistoryIdx(-1);
|
|
53
|
+
setValue('');
|
|
54
|
+
setCursor(0);
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (key.leftArrow) {
|
|
59
|
+
setCursor((p) => Math.max(0, p - 1));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
if (key.rightArrow) {
|
|
63
|
+
setCursor((p) => Math.min(value.length, p + 1));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (key.backspace || key.delete) {
|
|
67
|
+
if (cursor > 0) {
|
|
68
|
+
setValue((p) => p.slice(0, cursor - 1) + p.slice(cursor));
|
|
69
|
+
setCursor((p) => p - 1);
|
|
70
|
+
}
|
|
71
|
+
return;
|
|
72
|
+
}
|
|
73
|
+
if (key.ctrl && input === 'p') {
|
|
74
|
+
props.onSlash?.();
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (key.tab)
|
|
78
|
+
return;
|
|
79
|
+
if (key.return && key.shift) {
|
|
80
|
+
setValue((p) => p.slice(0, cursor) + '\n' + p.slice(cursor));
|
|
81
|
+
setCursor((p) => p + 1);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (input && input.length === 1 && input >= ' ') {
|
|
85
|
+
setValue((p) => p.slice(0, cursor) + input + p.slice(cursor));
|
|
86
|
+
setCursor((p) => p + 1);
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
const display = value || props.placeholder || 'Ask anything...';
|
|
90
|
+
const color = value ? '#333333' : '#CC99AA';
|
|
91
|
+
const lines = display.split('\n');
|
|
92
|
+
const displayLine = lines.length > 0 ? lines[lines.length - 1] : display;
|
|
93
|
+
const lineCount = lines.length;
|
|
94
|
+
return (_jsx(Box, { flexDirection: "column", width: "100%", children: _jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", paddingX: 1, paddingY: lineCount > 1 ? 0 : 0, children: [lines.map((line, i) => (_jsx(Box, { children: _jsx(Text, { color: color, children: line || ' ' }) }, i))), _jsxs(Box, { marginTop: lineCount > 1 ? 0 : 0, children: [_jsx(Text, { color: "#FF69B4", children: props.mode || 'Build' }), _jsx(Text, { children: " \u00B7 " }), _jsx(Text, { color: "#CC99AA", children: props.modelName || 'No provider' })] })] }) }));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=InputBox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputBox.js","sourceRoot":"","sources":["../../../src/ui/components/InputBox.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Msg {
|
|
3
|
+
role: 'user' | 'assistant' | 'system';
|
|
4
|
+
content: string;
|
|
5
|
+
timing?: string;
|
|
6
|
+
}
|
|
7
|
+
interface Props {
|
|
8
|
+
messages: Msg[];
|
|
9
|
+
loading?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function MessageList(props: Props): React.JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=MessageList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageList.d.ts","sourceRoot":"","sources":["../../../src/ui/components/MessageList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,UAAU,GAAG;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAA;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,GAAG,EAAE,CAAA;IACf,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,qBAqDvC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from 'ink';
|
|
3
|
+
export function MessageList(props) {
|
|
4
|
+
if (props.messages.length === 0 && !props.loading) {
|
|
5
|
+
return (_jsx(Box, { flexDirection: "column", alignItems: "flex-start", paddingY: 1, children: _jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", paddingX: 2, paddingY: 1, children: [_jsx(Text, { color: "#FF1493", bold: true, children: "Anya AI CLI v0.5.0" }), _jsx(Text, { color: "#CC99AA", children: "Multi-provider AI assistant" }), _jsx(Text, { color: "#FFB6C1", children: "~ Waku Waku! ~" }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#CC99AA", children: "Type a message to chat, or / for commands" }) })] }) }));
|
|
6
|
+
}
|
|
7
|
+
const msgs = props.messages;
|
|
8
|
+
return (_jsxs(Box, { flexDirection: "column", flexGrow: 1, children: [msgs.map((msg, i) => (_jsx(Box, { flexDirection: "column", marginBottom: 1, children: msg.role === 'user' ? (_jsxs(Box, { children: [_jsx(Text, { color: "#FF69B4", children: "\u25CF " }), _jsx(Text, { color: "#333333", children: msg.content })] })) : msg.role === 'system' ? (_jsx(Box, { children: _jsxs(Text, { color: "#CC99AA", children: ["\u2699 ", msg.content] }) })) : (_jsxs(Box, { flexDirection: "column", children: [_jsx(Box, { children: _jsx(Text, { color: "#FF1493", children: msg.content }) }), msg.timing ? (_jsx(Box, { children: _jsxs(Text, { color: "#CC99AA", children: [" \u2514 ", msg.timing] }) })) : null] })) }, i))), props.loading ? (_jsxs(Box, { children: [_jsx(Text, { color: "#FF1493", children: "\u280B " }), _jsx(Text, { color: "#CC99AA", children: "Thinking..." })] })) : null] }));
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=MessageList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MessageList.js","sourceRoot":"","sources":["../../../src/ui/components/MessageList.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAA;AAa/B,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAC,YAAY,EAAC,QAAQ,EAAE,CAAC,YAC7D,MAAC,GAAG,IAAC,WAAW,EAAC,OAAO,EAAC,WAAW,EAAC,SAAS,EAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,aAC5F,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,EAAC,IAAI,yCAA0B,EACpD,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,4CAAmC,EACxD,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,+BAAsB,EAC3C,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,0DAAiD,GAClE,IACF,GACF,CACP,CAAA;IACH,CAAC;IAED,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAA;IAE3B,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACpC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,CAAS,EAAE,EAAE,CAAC,CACjC,KAAC,GAAG,IAAS,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,YAChD,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,CACrB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,wBAAU,EAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,GAAG,CAAC,OAAO,GAAQ,IACtC,CACP,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAC1B,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,wBAAI,GAAG,CAAC,OAAO,IAAQ,GACxC,CACP,CAAC,CAAC,CAAC,CACF,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,GAAG,CAAC,OAAO,GAAQ,GACtC,EACL,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CACZ,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAC,SAAS,yBAAK,GAAG,CAAC,MAAM,IAAQ,GACxC,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,IArBO,CAAC,CAsBL,CACP,CAAC,EACD,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,wBAAU,EAC/B,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,4BAAmB,IACpC,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
interface Props {
|
|
3
|
+
providerId?: string;
|
|
4
|
+
onSelect: (modelId: string) => void;
|
|
5
|
+
onBack: () => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function ModelSelector(props: Props): React.JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ModelSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelSelector.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ModelSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAA;AAMlD,UAAU,KAAK;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,qBAsEzC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState, useEffect } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import { ALL_PROVIDERS } from '../../providers/base.js';
|
|
5
|
+
import { fetchModelsFromProvider } from '../../commands/providerFactory.js';
|
|
6
|
+
import { loadConfig, setModel, addRecentModel, isFavorite } from '../../config/store.js';
|
|
7
|
+
export function ModelSelector(props) {
|
|
8
|
+
const config = loadConfig();
|
|
9
|
+
const pid = props.providerId || config.activeProvider;
|
|
10
|
+
const [models, setModels] = useState([]);
|
|
11
|
+
const [loading, setLoading] = useState(true);
|
|
12
|
+
const [selIdx, setSelIdx] = useState(0);
|
|
13
|
+
const [search, setSearch] = useState('');
|
|
14
|
+
useEffect(() => {
|
|
15
|
+
setLoading(true);
|
|
16
|
+
const prov = ALL_PROVIDERS.find((p) => p.id === pid);
|
|
17
|
+
if (prov && prov.models.length > 0) {
|
|
18
|
+
setModels(prov.models.map((m) => ({ id: m, name: m, provider: pid })));
|
|
19
|
+
setLoading(false);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
fetchModelsFromProvider(pid).then((fetched) => {
|
|
23
|
+
if (fetched.length > 0) {
|
|
24
|
+
setModels(fetched);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const p2 = ALL_PROVIDERS.find((p3) => p3.id === pid);
|
|
28
|
+
if (p2)
|
|
29
|
+
setModels(p2.models.map((m) => ({ id: m, name: m, provider: pid })));
|
|
30
|
+
}
|
|
31
|
+
}).catch(() => {
|
|
32
|
+
const p2 = ALL_PROVIDERS.find((p3) => p3.id === pid);
|
|
33
|
+
if (p2)
|
|
34
|
+
setModels(p2.models.map((m) => ({ id: m, name: m, provider: pid })));
|
|
35
|
+
}).finally(() => setLoading(false));
|
|
36
|
+
}, [pid]);
|
|
37
|
+
const filtered = search.trim()
|
|
38
|
+
? models.filter((m) => m.id.toLowerCase().includes(search.toLowerCase()))
|
|
39
|
+
: models;
|
|
40
|
+
useInput((input, key) => {
|
|
41
|
+
if (key.escape) {
|
|
42
|
+
props.onBack();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (key.return) {
|
|
46
|
+
if (filtered[selIdx]) {
|
|
47
|
+
setModel(pid, filtered[selIdx].id);
|
|
48
|
+
addRecentModel(filtered[selIdx].id);
|
|
49
|
+
props.onSelect(filtered[selIdx].id);
|
|
50
|
+
}
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (key.upArrow) {
|
|
54
|
+
setSelIdx((p) => Math.max(0, p - 1));
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (key.downArrow) {
|
|
58
|
+
setSelIdx((p) => Math.min(filtered.length - 1, p + 1));
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (key.backspace || key.delete) {
|
|
62
|
+
setSearch((p) => p.slice(0, -1));
|
|
63
|
+
setSelIdx(0);
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (input && input.length === 1 && input >= ' ') {
|
|
67
|
+
setSearch((p) => p + input);
|
|
68
|
+
setSelIdx(0);
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
if (loading)
|
|
73
|
+
return _jsx(Box, { children: _jsx(Text, { color: "#CC99AA", children: "Loading models..." }) });
|
|
74
|
+
const display = filtered.slice(0, 15);
|
|
75
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", paddingY: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", width: 70, padding: 1, children: [_jsxs(Text, { color: "#FF1493", children: ["Model Selector \u2014 ", pid] }), _jsx(Box, { children: _jsx(Text, { color: "#CC99AA", children: search || 'Search models...' }) }), display.map((m, i) => (_jsxs(Box, { children: [_jsx(Text, { color: i === selIdx ? '#FF1493' : '#CC99AA', children: i === selIdx ? '▶ ' : ' ' }), _jsx(Text, { color: i === selIdx ? '#FF1493' : '#333333', children: m.name }), _jsxs(Text, { color: "#CC99AA", children: [" (", m.provider, ")"] }), isFavorite(m.id) ? _jsx(Text, { color: "#FFD700", children: " \u2605" }) : null] }, m.id))), filtered.length > 15 ? _jsxs(Text, { color: "#CC99AA", children: ["...and ", filtered.length - 15, " more"] }) : null] }), _jsx(Text, { color: "#CC99AA", children: "Type to search \u2191/\u2193 Enter Esc" })] }));
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=ModelSelector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelSelector.js","sourceRoot":"","sources":["../../../src/ui/components/ModelSelector.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderForm.d.ts","sourceRoot":"","sources":["../../../src/ui/components/ProviderForm.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,UAAU,KAAK;IACb,UAAU,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,qBAuFxC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import { CONNECT_PROVIDERS } from '../../commands/providerFactory.js';
|
|
5
|
+
import { setApiKey } from '../../config/store.js';
|
|
6
|
+
export function ProviderForm(props) {
|
|
7
|
+
const [step, setStep] = useState('select');
|
|
8
|
+
const [selIdx, setSelIdx] = useState(0);
|
|
9
|
+
const [apiKeyInput, setApiKeyInput] = useState('');
|
|
10
|
+
const [showKey, setShowKey] = useState(false);
|
|
11
|
+
const filtered = CONNECT_PROVIDERS.filter((p) => p.needsKey);
|
|
12
|
+
const selected = filtered[selIdx];
|
|
13
|
+
useInput((input, key) => {
|
|
14
|
+
if (step === 'select') {
|
|
15
|
+
if (key.escape) {
|
|
16
|
+
props.onBack();
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
if (key.return) {
|
|
20
|
+
if (selected) {
|
|
21
|
+
setStep('key');
|
|
22
|
+
setShowKey(false);
|
|
23
|
+
}
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (key.upArrow) {
|
|
27
|
+
setSelIdx((p) => Math.max(0, p - 1));
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (key.downArrow) {
|
|
31
|
+
setSelIdx((p) => Math.min(filtered.length - 1, p + 1));
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (input && input.length === 1 && input >= ' ') {
|
|
35
|
+
const idx = filtered.findIndex((p2) => p2.id.startsWith(input.toLowerCase()));
|
|
36
|
+
if (idx >= 0)
|
|
37
|
+
setSelIdx(idx);
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (step === 'key') {
|
|
42
|
+
if (key.escape) {
|
|
43
|
+
setStep('select');
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (key.return) {
|
|
47
|
+
if (apiKeyInput.trim())
|
|
48
|
+
setStep('confirm');
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (key.backspace || key.delete) {
|
|
52
|
+
setApiKeyInput((p) => p.slice(0, -1));
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (key.tab) {
|
|
56
|
+
setShowKey((p) => !p);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (input && input.length === 1 && input >= ' ') {
|
|
60
|
+
setApiKeyInput((p) => p + input);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if (step === 'confirm') {
|
|
65
|
+
if (key.escape) {
|
|
66
|
+
setStep('key');
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (key.return) {
|
|
70
|
+
setApiKey(selected.id, apiKeyInput.trim());
|
|
71
|
+
props.onComplete(selected.id);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (input === 'n' || input === 'N') {
|
|
75
|
+
setStep('key');
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
if (step === 'select') {
|
|
81
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", paddingY: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", width: 60, padding: 1, children: [_jsx(Text, { color: "#FF1493", children: "Select a provider to connect:" }), filtered.map((p, i) => (_jsxs(Box, { children: [_jsx(Text, { color: i === selIdx ? '#FF1493' : '#CC99AA', children: i === selIdx ? '▶ ' : ' ' }), _jsx(Text, { color: i === selIdx ? '#FF1493' : '#333333', children: p.name }), _jsxs(Text, { color: "#CC99AA", children: [" \u2014 ", p.desc] })] }, p.id)))] }), _jsx(Text, { color: "#CC99AA", children: "\u2191/\u2193 Enter Esc" })] }));
|
|
82
|
+
}
|
|
83
|
+
if (step === 'key') {
|
|
84
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", paddingY: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", width: 60, padding: 1, children: [_jsxs(Text, { color: "#FF1493", children: ["Provider: ", selected?.name] }), _jsx(Text, { color: "#CC99AA", children: selected?.desc }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "#333333", children: ["API Key", selected?.env ? ` (${selected.env})` : '', ":"] }) }), _jsx(Box, { children: _jsxs(Text, { color: "#333333", children: ["[", showKey ? apiKeyInput : '*'.repeat(apiKeyInput.length) || '________________', "]"] }) }), _jsx(Text, { color: "#CC99AA", children: "Tab toggle Enter continue" })] }), _jsx(Text, { color: "#CC99AA", children: "Esc back" })] }));
|
|
85
|
+
}
|
|
86
|
+
return (_jsx(Box, { flexDirection: "column", alignItems: "center", paddingY: 1, children: _jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", width: 40, padding: 1, children: [_jsxs(Text, { color: "#FF1493", children: ["Save API key for ", selected?.name, "?"] }), _jsx(Box, { marginTop: 1, children: _jsxs(Text, { color: "#333333", children: ["Key: ", apiKeyInput.slice(0, 4), "****", apiKeyInput.slice(-4)] }) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: "#CC99AA", children: "Enter confirm Esc edit N cancel" }) })] }) }));
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=ProviderForm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProviderForm.js","sourceRoot":"","sources":["../../../src/ui/components/ProviderForm.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsPanel.d.ts","sourceRoot":"","sources":["../../../src/ui/components/SettingsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAKvC,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAMD,wBAAgB,aAAa,CAAC,KAAK,EAAE,KAAK,qBA8EzC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput } from 'ink';
|
|
4
|
+
import { loadConfig, updateSettings } from '../../config/store.js';
|
|
5
|
+
import { THEME_MODES } from '../theme.js';
|
|
6
|
+
export function SettingsPanel(props) {
|
|
7
|
+
const config = loadConfig();
|
|
8
|
+
const [selIdx, setSelIdx] = useState(0);
|
|
9
|
+
const [editMode, setEditMode] = useState(false);
|
|
10
|
+
const [editValue, setEditValue] = useState('');
|
|
11
|
+
const settings = [
|
|
12
|
+
{ id: 'theme', label: 'Theme', value: config.theme, type: 'select', options: Object.keys(THEME_MODES).map((k) => ({ label: k.charAt(0).toUpperCase() + k.slice(1), value: k })) },
|
|
13
|
+
{ id: 'defaultProvider', label: 'Default Provider', value: config.defaultProvider, type: 'select', options: [{ label: 'OpenAI', value: 'openai' }, { label: 'Anthropic', value: 'anthropic' }, { label: 'Google', value: 'google' }, { label: 'OpenRouter', value: 'openrouter' }] },
|
|
14
|
+
{ id: 'defaultModel', label: 'Default Model', value: config.defaultModel, type: 'string' },
|
|
15
|
+
{ id: 'imageVisibility', label: 'Show Image', value: config.imageVisibility ? 'true' : 'false', type: 'toggle' },
|
|
16
|
+
{ id: 'telemetry', label: 'Telemetry', value: config.telemetry ? 'true' : 'false', type: 'toggle' },
|
|
17
|
+
{ id: 'updateChannel', label: 'Update Channel', value: config.updateChannel, type: 'select', options: [{ label: 'Stable', value: 'stable' }, { label: 'Beta', value: 'beta' }, { label: 'Nightly', value: 'nightly' }] },
|
|
18
|
+
];
|
|
19
|
+
useInput((input, key) => {
|
|
20
|
+
if (editMode) {
|
|
21
|
+
if (key.escape) {
|
|
22
|
+
setEditMode(false);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
if (key.return) {
|
|
26
|
+
const item = settings[selIdx];
|
|
27
|
+
if (item) {
|
|
28
|
+
updateSettings({ [item.id]: item.type === 'toggle' ? editValue === 'true' : editValue });
|
|
29
|
+
setEditMode(false);
|
|
30
|
+
}
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
if (key.upArrow) {
|
|
34
|
+
const item = settings[selIdx];
|
|
35
|
+
if (item?.options) {
|
|
36
|
+
const idx = item.options.findIndex((o) => o.value === editValue);
|
|
37
|
+
setEditValue(item.options[Math.max(0, idx - 1)].value);
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (key.downArrow) {
|
|
42
|
+
const item = settings[selIdx];
|
|
43
|
+
if (item?.options) {
|
|
44
|
+
const idx = item.options.findIndex((o) => o.value === editValue);
|
|
45
|
+
setEditValue(item.options[Math.min(item.options.length - 1, idx + 1)].value);
|
|
46
|
+
}
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (key.backspace || key.delete) {
|
|
50
|
+
setEditValue((p) => p.slice(0, -1));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (input && input.length === 1 && input >= ' ') {
|
|
54
|
+
setEditValue((p) => p + input);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (key.escape) {
|
|
60
|
+
props.onClose();
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
if (key.return) {
|
|
64
|
+
const item = settings[selIdx];
|
|
65
|
+
if (item) {
|
|
66
|
+
if (item.type === 'toggle') {
|
|
67
|
+
updateSettings({ [item.id]: item.value === 'true' ? false : true });
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
setEditMode(true);
|
|
71
|
+
setEditValue(item.value);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
if (key.upArrow) {
|
|
77
|
+
setSelIdx((p) => Math.max(0, p - 1));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (key.downArrow) {
|
|
81
|
+
setSelIdx((p) => Math.min(settings.length - 1, p + 1));
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return (_jsxs(Box, { flexDirection: "column", alignItems: "center", paddingY: 1, children: [_jsxs(Box, { borderStyle: "round", borderColor: "#FF69B4", flexDirection: "column", width: 60, padding: 1, children: [_jsx(Text, { color: "#FF1493", children: "Settings" }), settings.map((item, i) => (_jsxs(Box, { children: [_jsx(Text, { color: i === selIdx ? '#FF1493' : '#CC99AA', children: i === selIdx ? '▶ ' : ' ' }), _jsxs(Text, { color: i === selIdx ? '#FF1493' : '#333333', children: [item.label, ":"] }), _jsxs(Text, { color: "#CC99AA", children: [" ", editMode && i === selIdx ? `${editValue} (editing)` : ` ${item.value}`] })] }, item.id)))] }), _jsx(Text, { color: "#CC99AA", children: "\u2191/\u2193 Enter Esc" })] }));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=SettingsPanel.js.map
|