@tyvm/knowhow 0.0.10 → 0.0.12
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/package.json +4 -1
- package/src/agents/base/base.ts +45 -0
- package/src/agents/researcher/researcher.ts +2 -1
- package/src/agents/tools/index.ts +1 -0
- package/src/agents/tools/list.ts +34 -0
- package/src/agents/tools/stringReplace.ts +51 -0
- package/src/chat.ts +2 -0
- package/src/clients/gemini.ts +2 -2
- package/src/clients/index.ts +11 -3
- package/src/clients/openai.ts +4 -4
- package/src/clients/xai.ts +4 -0
- package/src/config.ts +12 -3
- package/src/conversion.ts +3 -1
- package/src/embeddings.ts +3 -3
- package/src/hashes.ts +5 -0
- package/src/index.ts +13 -3
- package/src/services/EmbeddingService.ts +9 -3
- package/src/services/Mcp.ts +31 -14
- package/src/types.ts +16 -8
- package/ts_build/src/agents/base/base.d.ts +1 -0
- package/ts_build/src/agents/base/base.js +24 -0
- package/ts_build/src/agents/base/base.js.map +1 -1
- package/ts_build/src/agents/researcher/researcher.js +2 -0
- package/ts_build/src/agents/researcher/researcher.js.map +1 -1
- package/ts_build/src/agents/tools/index.d.ts +1 -0
- package/ts_build/src/agents/tools/index.js +1 -0
- package/ts_build/src/agents/tools/index.js.map +1 -1
- package/ts_build/src/agents/tools/list.js +33 -0
- package/ts_build/src/agents/tools/list.js.map +1 -1
- package/ts_build/src/agents/tools/stringReplace.d.ts +1 -0
- package/ts_build/src/agents/tools/stringReplace.js +62 -0
- package/ts_build/src/agents/tools/stringReplace.js.map +1 -0
- package/ts_build/src/chat.js +2 -0
- package/ts_build/src/chat.js.map +1 -1
- package/ts_build/src/clients/gemini.js +1 -1
- package/ts_build/src/clients/gemini.js.map +1 -1
- package/ts_build/src/clients/index.js +6 -2
- package/ts_build/src/clients/index.js.map +1 -1
- package/ts_build/src/clients/openai.js +3 -3
- package/ts_build/src/clients/openai.js.map +1 -1
- package/ts_build/src/clients/xai.js +4 -0
- package/ts_build/src/clients/xai.js.map +1 -1
- package/ts_build/src/commands/chat-ui.d.ts +1 -0
- package/ts_build/src/commands/chat-ui.js +14 -0
- package/ts_build/src/commands/chat-ui.js.map +1 -0
- package/ts_build/src/config.js +5 -2
- package/ts_build/src/config.js.map +1 -1
- package/ts_build/src/conversion.js +3 -1
- package/ts_build/src/conversion.js.map +1 -1
- package/ts_build/src/demo/chat-ui-demo.d.ts +3 -0
- package/ts_build/src/demo/chat-ui-demo.js +20 -0
- package/ts_build/src/demo/chat-ui-demo.js.map +1 -0
- package/ts_build/src/embeddings.js +2 -2
- package/ts_build/src/embeddings.js.map +1 -1
- package/ts_build/src/hashes.js +7 -0
- package/ts_build/src/hashes.js.map +1 -1
- package/ts_build/src/index.js +2 -2
- package/ts_build/src/index.js.map +1 -1
- package/ts_build/src/services/EmbeddingService.js +2 -2
- package/ts_build/src/services/EmbeddingService.js.map +1 -1
- package/ts_build/src/services/Mcp.d.ts +1 -0
- package/ts_build/src/services/Mcp.js +29 -12
- package/ts_build/src/services/Mcp.js.map +1 -1
- package/ts_build/src/services/MessagePreprocessor.d.ts +26 -0
- package/ts_build/src/services/MessagePreprocessor.js +190 -0
- package/ts_build/src/services/MessagePreprocessor.js.map +1 -0
- package/ts_build/src/services/__tests__/MessagePreprocessor.test.d.ts +1 -0
- package/ts_build/src/services/__tests__/MessagePreprocessor.test.js +117 -0
- package/ts_build/src/services/__tests__/MessagePreprocessor.test.js.map +1 -0
- package/ts_build/src/types.d.ts +11 -4
- package/ts_build/src/types.js +16 -9
- package/ts_build/src/types.js.map +1 -1
- package/ts_build/src/ui/InkChatUI.d.ts +1 -0
- package/ts_build/src/ui/InkChatUI.js +792 -0
- package/ts_build/src/ui/InkChatUI.js.map +1 -0
- package/ts_build/src/ui/components/ChatInterface.d.ts +15 -0
- package/ts_build/src/ui/components/ChatInterface.js +39 -0
- package/ts_build/src/ui/components/ChatInterface.js.map +1 -0
- package/ts_build/src/ui/components/ChatMessage.d.ts +8 -0
- package/ts_build/src/ui/components/ChatMessage.js +7 -0
- package/ts_build/src/ui/components/ChatMessage.js.map +1 -0
- package/ts_build/src/ui/components/CommandPalette.d.ts +8 -0
- package/ts_build/src/ui/components/CommandPalette.js +23 -0
- package/ts_build/src/ui/components/CommandPalette.js.map +1 -0
- package/ts_build/src/ui/components/InputBar.d.ts +8 -0
- package/ts_build/src/ui/components/InputBar.js +8 -0
- package/ts_build/src/ui/components/InputBar.js.map +1 -0
- package/ts_build/src/ui/components/Sidebar.d.ts +9 -0
- package/ts_build/src/ui/components/Sidebar.js +7 -0
- package/ts_build/src/ui/components/Sidebar.js.map +1 -0
- package/ts_build/src/ui/components/StatusBar.d.ts +10 -0
- package/ts_build/src/ui/components/StatusBar.js +8 -0
- package/ts_build/src/ui/components/StatusBar.js.map +1 -0
- package/ts_build/src/ui/demo.d.ts +3 -0
- package/ts_build/src/ui/demo.js +26 -0
- package/ts_build/src/ui/demo.js.map +1 -0
- package/ts_build/src/ui/index.d.ts +13 -0
- package/ts_build/src/ui/index.js +16 -0
- package/ts_build/src/ui/index.js.map +1 -0
- package/ts_build/tests/integration/OpenAI-MessagePreprocessor.test.d.ts +1 -0
- package/ts_build/tests/integration/OpenAI-MessagePreprocessor.test.js +148 -0
- package/ts_build/tests/integration/OpenAI-MessagePreprocessor.test.js.map +1 -0
- package/ts_build/tests/services/MessagePreprocessor.test.d.ts +1 -0
- package/ts_build/tests/services/MessagePreprocessor.test.js +117 -0
- package/ts_build/tests/services/MessagePreprocessor.test.js.map +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InkChatUI.js","sourceRoot":"","sources":["../../../src/ui/InkChatUI.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ChatInteraction } from '../../types';
|
|
3
|
+
interface ChatInterfaceProps {
|
|
4
|
+
aiName: string;
|
|
5
|
+
onMessage: (message: string) => Promise<string>;
|
|
6
|
+
onCommand: (command: string) => Promise<void>;
|
|
7
|
+
chatHistory: ChatInteraction[];
|
|
8
|
+
currentAgent: string;
|
|
9
|
+
currentProvider: string;
|
|
10
|
+
currentModel: string;
|
|
11
|
+
availableCommands: string[];
|
|
12
|
+
isThinking: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare const ChatInterface: React.FC<ChatInterfaceProps>;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { Box, Text, useInput, useApp } from 'ink';
|
|
4
|
+
import TextInput from 'ink-text-input';
|
|
5
|
+
export const ChatInterface = ({ aiName, onMessage, onCommand, chatHistory, currentAgent, currentProvider, currentModel, availableCommands, isThinking }) => {
|
|
6
|
+
const [input, setInput] = useState('');
|
|
7
|
+
const [showCommandPalette, setShowCommandPalette] = useState(false);
|
|
8
|
+
const [scrollOffset, setScrollOffset] = useState(0);
|
|
9
|
+
const { exit } = useApp();
|
|
10
|
+
useInput((input, key) => {
|
|
11
|
+
if (key.ctrl && input === 'c') {
|
|
12
|
+
exit();
|
|
13
|
+
}
|
|
14
|
+
if (key.ctrl && input === 'p') {
|
|
15
|
+
setShowCommandPalette(!showCommandPalette);
|
|
16
|
+
}
|
|
17
|
+
if (key.pageUp) {
|
|
18
|
+
setScrollOffset(Math.max(0, scrollOffset - 1));
|
|
19
|
+
}
|
|
20
|
+
if (key.pageDown) {
|
|
21
|
+
setScrollOffset(Math.min(chatHistory.length - 1, scrollOffset + 1));
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
const handleSubmit = async (value) => {
|
|
25
|
+
if (!value.trim())
|
|
26
|
+
return;
|
|
27
|
+
if (value.startsWith('/')) {
|
|
28
|
+
const command = value.slice(1);
|
|
29
|
+
await onCommand(command);
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
await onMessage(value);
|
|
33
|
+
}
|
|
34
|
+
setInput('');
|
|
35
|
+
};
|
|
36
|
+
const visibleHistory = chatHistory.slice(scrollOffset);
|
|
37
|
+
return (_jsxs(Box, { flexDirection: "column", height: "100%", children: [_jsx(Box, { borderStyle: "round", padding: 1, marginBottom: 1, children: _jsxs(Text, { color: "cyan", bold: true, children: [aiName, " Chat UI - Agent: ", currentAgent, " | Provider: ", currentProvider, " | Model: ", currentModel] }) }), _jsxs(Box, { flexDirection: "column", flexGrow: 1, padding: 1, children: [visibleHistory.map((interaction, index) => (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { color: "green", bold: true, children: ["\uD83E\uDDD1 You: ", interaction.input] }), _jsxs(Text, { color: "blue", children: ["\uD83E\uDD16 AI: ", interaction.output] })] }))), isThinking && (_jsx(Text, { color: "yellow", children: "\uD83E\uDD14 AI is thinking..." }))] }), showCommandPalette && (_jsx(Box, { borderStyle: "round", padding: 1, marginBottom: 1, children: _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "cyan", bold: true, children: "Available Commands:" }), availableCommands.map((cmd, index) => (_jsxs(Text, { color: "white", children: ["/", cmd] })))] }) })), _jsxs(Box, { borderStyle: "round", padding: 1, children: [_jsx(Text, { color: "gray", children: "\uD83D\uDCAC " }), _jsx(TextInput, { value: input, onChange: setInput, onSubmit: handleSubmit, placeholder: "Type your message or /command..." })] }), _jsx(Box, { padding: 1, children: _jsx(Text, { color: "gray", dimColor: true, children: "Ctrl+P: Commands | PgUp/PgDn: Scroll | Ctrl+C: Exit" }) })] }));
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=ChatInterface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatInterface.js","sourceRoot":"","sources":["../../../../src/ui/components/ChatInterface.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
export const ChatMessage = ({ interaction, index }) => {
|
|
5
|
+
return (_jsxs(Box, { flexDirection: "column", marginY: 1, children: [_jsxs(Box, { children: [_jsxs(Text, { color: "cyan", bold: true, children: ["[", index, "] User:"] }), _jsxs(Text, { children: [" ", interaction.input] })] }), interaction.output && (_jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "green", bold: true, children: "Assistant:" }), _jsxs(Text, { children: [" ", interaction.output] })] }))] }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=ChatMessage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChatMessage.js","sourceRoot":"","sources":["../../../../src/ui/components/ChatMessage.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAQhC,MAAM,CAAC,MAAM,WAAW,GAA+B,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE;IAChF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpC,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,wBACnB,KAAK,eACF,EACP,MAAC,IAAI,oBAAG,WAAW,CAAC,KAAK,IAAQ,IAC7B,EAEL,WAAW,CAAC,MAAM,IAAI,CACrB,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,EAAC,IAAI,iCAEjB,EACP,MAAC,IAAI,oBAAG,WAAW,CAAC,MAAM,IAAQ,IAC9B,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { useInput } from 'ink';
|
|
5
|
+
export const CommandPalette = ({ commands, onSelect, onClose, }) => {
|
|
6
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
7
|
+
useInput((input, key) => {
|
|
8
|
+
if (key.escape) {
|
|
9
|
+
onClose();
|
|
10
|
+
}
|
|
11
|
+
if (key.return) {
|
|
12
|
+
onSelect(commands[selectedIndex]);
|
|
13
|
+
}
|
|
14
|
+
if (key.upArrow) {
|
|
15
|
+
setSelectedIndex(Math.max(0, selectedIndex - 1));
|
|
16
|
+
}
|
|
17
|
+
if (key.downArrow) {
|
|
18
|
+
setSelectedIndex(Math.min(commands.length - 1, selectedIndex + 1));
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return (_jsxs(Box, { position: "absolute", top: 3, left: 2, right: 2, borderStyle: "double", borderColor: "cyan", backgroundColor: "black", flexDirection: "column", paddingX: 1, children: [_jsx(Text, { color: "cyan", bold: true, children: "Commands (Use arrow keys, Enter to select, Esc to close)" }), commands.map((command, index) => (_jsx(Box, { children: _jsx(Text, { color: index === selectedIndex ? "black" : "white", backgroundColor: index === selectedIndex ? "cyan" : undefined, children: command }) }, index)))] }));
|
|
22
|
+
};
|
|
23
|
+
//# sourceMappingURL=CommandPalette.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CommandPalette.js","sourceRoot":"","sources":["../../../../src/ui/components/CommandPalette.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAQ/B,MAAM,CAAC,MAAM,cAAc,GAAkC,CAAC,EAC5D,QAAQ,EACR,QAAQ,EACR,OAAO,GACR,EAAE,EAAE;IACH,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtD,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;QACnD,CAAC;QACD,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC;QACrE,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CACL,MAAC,GAAG,IACF,QAAQ,EAAC,UAAU,EACnB,GAAG,EAAE,CAAC,EACN,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,CAAC,EACR,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,eAAe,EAAC,OAAO,EACvB,aAAa,EAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,+EAEhB,EAEN,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAChC,KAAC,GAAG,cACF,KAAC,IAAI,IACH,KAAK,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAClD,eAAe,EAAE,KAAK,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,YAE5D,OAAO,GACH,IANC,KAAK,CAOT,CACP,CAAC,IACE,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { TextInput } from '@inkjs/ui';
|
|
5
|
+
export const InputBar = ({ onSubmit, placeholder, disabled = false, }) => {
|
|
6
|
+
return (_jsxs(Box, { borderStyle: "single", borderColor: "blue", paddingX: 1, children: [_jsx(Text, { color: "blue", bold: true, children: placeholder }), _jsx(TextInput, { onSubmit: onSubmit, placeholder: disabled ? "Agent is thinking..." : "Type your message...", isDisabled: disabled })] }));
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=InputBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputBar.js","sourceRoot":"","sources":["../../../../src/ui/components/InputBar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAQtC,MAAM,CAAC,MAAM,QAAQ,GAA4B,CAAC,EAChD,QAAQ,EACR,WAAW,EACX,QAAQ,GAAG,KAAK,GACjB,EAAE,EAAE;IACH,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,aACtD,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,kBACpB,WAAW,GACP,EACP,KAAC,SAAS,IACR,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,sBAAsB,EACvE,UAAU,EAAE,QAAQ,GACpB,IACE,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
export const Sidebar = ({ availableCommands, scrollOffset, totalMessages, maxHeight, }) => {
|
|
5
|
+
return (_jsxs(Box, { flexDirection: "column", width: 20, borderStyle: "single", borderColor: "gray", paddingX: 1, children: [_jsx(Text, { color: "gray", bold: true, children: "Commands" }), availableCommands.map((command, index) => (_jsx(Box, { children: _jsx(Text, { color: "cyan", children: command }) }, `command-${index}`))), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", bold: true, children: "History" }), _jsxs(Text, { color: "gray", children: [scrollOffset + 1, "-", Math.min(scrollOffset + maxHeight, totalMessages), " of ", totalMessages] })] }), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "gray", children: "Ctrl+P: Commands" }), _jsx(Text, { color: "gray", children: "PgUp/PgDn: Scroll" }), _jsx(Text, { color: "gray", children: "Ctrl+C: Exit" })] })] }));
|
|
6
|
+
};
|
|
7
|
+
//# sourceMappingURL=Sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../../../src/ui/components/Sidebar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAShC,MAAM,CAAC,MAAM,OAAO,GAA2B,CAAC,EAC9C,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,SAAS,GACV,EAAE,EAAE;IACH,OAAO,CACL,MAAC,GAAG,IACF,aAAa,EAAC,QAAQ,EACtB,KAAK,EAAE,EAAE,EACT,WAAW,EAAC,QAAQ,EACpB,WAAW,EAAC,MAAM,EAClB,QAAQ,EAAE,CAAC,aAEX,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,+BAEhB,EACN,iBAAiB,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CACzC,KAAC,GAAG,cACF,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YACf,OAAO,GACH,IAHC,WAAW,KAAK,EAAE,CAItB,CACP,CAAC,EAEF,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,EAAC,IAAI,8BAEhB,EACP,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aACf,YAAY,GAAG,CAAC,OAAG,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,SAAS,EAAE,aAAa,CAAC,UAAM,aAAa,IACnF,IACH,EAEN,MAAC,GAAG,IAAC,SAAS,EAAE,CAAC,aACf,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,iCAEX,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kCAEX,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,6BAEX,IACH,IACF,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Box, Text } from 'ink';
|
|
4
|
+
import { Spinner } from '@inkjs/ui';
|
|
5
|
+
export const StatusBar = ({ aiName, currentAgent, currentProvider, currentModel, isThinking, }) => {
|
|
6
|
+
return (_jsxs(Box, { borderStyle: "single", borderColor: "yellow", paddingX: 1, children: [_jsx(Text, { color: "yellow", bold: true, children: aiName }), _jsx(Text, { children: " | Agent: " }), _jsx(Text, { color: "green", children: currentAgent }), _jsx(Text, { children: " | Provider: " }), _jsx(Text, { color: "blue", children: currentProvider }), _jsx(Text, { children: " | Model: " }), _jsx(Text, { color: "magenta", children: currentModel }), isThinking && (_jsxs(Box, { marginLeft: 2, children: [_jsx(Spinner, { type: "dots" }), _jsx(Text, { color: "yellow", children: " Thinking..." })] }))] }));
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=StatusBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusBar.js","sourceRoot":"","sources":["../../../../src/ui/components/StatusBar.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC,MAAM,CAAC,MAAM,SAAS,GAA6B,CAAC,EAClD,MAAM,EACN,YAAY,EACZ,eAAe,EACf,YAAY,EACZ,UAAU,GACX,EAAE,EAAE;IACH,OAAO,CACL,MAAC,GAAG,IAAC,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aACxD,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,EAAC,IAAI,kBACtB,MAAM,GACF,EACP,KAAC,IAAI,6BAAkB,EACvB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,YAAY,GAAQ,EACzC,KAAC,IAAI,gCAAqB,EAC1B,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,YAAE,eAAe,GAAQ,EAC3C,KAAC,IAAI,6BAAkB,EACvB,KAAC,IAAI,IAAC,KAAK,EAAC,SAAS,YAAE,YAAY,GAAQ,EAE1C,UAAU,IAAI,CACb,MAAC,GAAG,IAAC,UAAU,EAAE,CAAC,aAChB,KAAC,OAAO,IAAC,IAAI,EAAC,MAAM,GAAG,EACvB,KAAC,IAAI,IAAC,KAAK,EAAC,QAAQ,6BAAoB,IACpC,CACP,IACG,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { startInkChatUI } from './index';
|
|
3
|
+
const main = async () => {
|
|
4
|
+
console.log('🚀 Starting Knowhow Chat UI Demo...\n');
|
|
5
|
+
console.log('Features:');
|
|
6
|
+
console.log('- Scrollable chat history (PgUp/PgDn)');
|
|
7
|
+
console.log('- Command palette (Ctrl+P)');
|
|
8
|
+
console.log('- Real-time agent feedback');
|
|
9
|
+
console.log('- Keyboard shortcuts (Ctrl+C to exit)');
|
|
10
|
+
console.log('- Interactive sidebar with commands\n');
|
|
11
|
+
try {
|
|
12
|
+
await startInkChatUI({
|
|
13
|
+
aiName: 'Knowhow',
|
|
14
|
+
plugins: ['embeddings', 'files', 'github']
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
console.error('❌ Error starting chat UI:', error);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
23
|
+
main();
|
|
24
|
+
}
|
|
25
|
+
export { main };
|
|
26
|
+
//# sourceMappingURL=demo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo.js","sourceRoot":"","sources":["../../../src/ui/demo.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;IACtB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACzB,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IAErD,IAAI,CAAC;QACH,MAAM,cAAc,CAAC;YACnB,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC;SAC3C,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,UAAU,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACpD,IAAI,EAAE,CAAC;AACT,CAAC;AAED,OAAO,EAAE,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { InkChatUI } from './InkChatUI';
|
|
2
|
+
export interface ChatUIConfig {
|
|
3
|
+
aiName: string;
|
|
4
|
+
plugins: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare const startInkChatUI: (config: ChatUIConfig) => Promise<void>;
|
|
7
|
+
export { InkChatUI };
|
|
8
|
+
export * from './components/ChatInterface';
|
|
9
|
+
export * from './components/ChatMessage';
|
|
10
|
+
export * from './components/InputBar';
|
|
11
|
+
export * from './components/StatusBar';
|
|
12
|
+
export * from './components/Sidebar';
|
|
13
|
+
export * from './components/CommandPalette';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { render } from 'ink';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { InkChatUI } from './InkChatUI';
|
|
4
|
+
export const startInkChatUI = async (config) => {
|
|
5
|
+
console.log("🎨 Starting Ink-based Chat UI...");
|
|
6
|
+
const app = React.createElement(InkChatUI);
|
|
7
|
+
render(app);
|
|
8
|
+
};
|
|
9
|
+
export { InkChatUI };
|
|
10
|
+
export * from './components/ChatInterface';
|
|
11
|
+
export * from './components/ChatMessage';
|
|
12
|
+
export * from './components/InputBar';
|
|
13
|
+
export * from './components/StatusBar';
|
|
14
|
+
export * from './components/Sidebar';
|
|
15
|
+
export * from './components/CommandPalette';
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,MAAoB,EAAiB,EAAE;IAC1E,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;IAChD,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAC,GAAG,CAAC,CAAC;AACd,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,cAAc,6BAA6B,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const openai_1 = require("../../src/clients/openai");
|
|
4
|
+
describe('OpenAI Client with MessagePreprocessor Integration', () => {
|
|
5
|
+
let client;
|
|
6
|
+
beforeEach(() => {
|
|
7
|
+
client = new openai_1.GenericOpenAiClient();
|
|
8
|
+
});
|
|
9
|
+
describe('Integration with MCP Browser Tool Responses', () => {
|
|
10
|
+
test('should process MCP browser tool response with large base64 image', async () => {
|
|
11
|
+
const largeBase64 = 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg=='.repeat(1000);
|
|
12
|
+
const mcpResponse = `{
|
|
13
|
+
"success": true,
|
|
14
|
+
"screenshot": "data:image/png;base64,${largeBase64}",
|
|
15
|
+
"metadata": {
|
|
16
|
+
"width": 1024,
|
|
17
|
+
"height": 768,
|
|
18
|
+
"timestamp": "2024-01-01T00:00:00Z"
|
|
19
|
+
}
|
|
20
|
+
}`;
|
|
21
|
+
const options = {
|
|
22
|
+
model: 'gpt-4o',
|
|
23
|
+
messages: [
|
|
24
|
+
{ role: 'user', content: 'Take a screenshot of this page' },
|
|
25
|
+
{ role: 'tool', name: 'browser_screenshot', content: mcpResponse }
|
|
26
|
+
]
|
|
27
|
+
};
|
|
28
|
+
const mockResponse = {
|
|
29
|
+
choices: [{ message: { role: 'assistant', content: 'I can see the screenshot you took.' } }],
|
|
30
|
+
model: 'gpt-4o',
|
|
31
|
+
usage: { prompt_tokens: 100, completion_tokens: 50, total_tokens: 150 }
|
|
32
|
+
};
|
|
33
|
+
jest.spyOn(client.chat.completions, 'create').mockResolvedValue(mockResponse);
|
|
34
|
+
const result = await client.createChatCompletion(options);
|
|
35
|
+
expect(result).toBeDefined();
|
|
36
|
+
expect(result.choices[0].message.content).toContain('screenshot');
|
|
37
|
+
const createCall = client.chat.completions.create.mock.calls[0][0];
|
|
38
|
+
expect(createCall.messages).toBeDefined();
|
|
39
|
+
const toolMessage = createCall.messages.find((msg) => msg.role === 'tool');
|
|
40
|
+
expect(toolMessage).toBeDefined();
|
|
41
|
+
expect(toolMessage.content).not.toContain(largeBase64);
|
|
42
|
+
expect(toolMessage.content).toContain('[Image: img_');
|
|
43
|
+
const imageMessages = createCall.messages.filter((msg) => msg.role === 'user' && msg.content && Array.isArray(msg.content) &&
|
|
44
|
+
msg.content.some((content) => content.type === 'image_url'));
|
|
45
|
+
expect(imageMessages.length).toBeGreaterThan(0);
|
|
46
|
+
});
|
|
47
|
+
test('should handle standalone base64 images in user messages', async () => {
|
|
48
|
+
const options = {
|
|
49
|
+
model: 'gpt-4o',
|
|
50
|
+
messages: [
|
|
51
|
+
{ role: 'user', content: 'Analyze this image: data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==' }
|
|
52
|
+
]
|
|
53
|
+
};
|
|
54
|
+
const mockResponse = {
|
|
55
|
+
choices: [{ message: { role: 'assistant', content: 'I can analyze this image.' } }],
|
|
56
|
+
model: 'gpt-4o',
|
|
57
|
+
usage: { prompt_tokens: 100, completion_tokens: 50, total_tokens: 150 }
|
|
58
|
+
};
|
|
59
|
+
jest.spyOn(client.chat.completions, 'create').mockResolvedValue(mockResponse);
|
|
60
|
+
const result = await client.createChatCompletion(options);
|
|
61
|
+
expect(result).toBeDefined();
|
|
62
|
+
expect(result.choices[0].message.content).toContain('image');
|
|
63
|
+
const createCall = client.chat.completions.create.mock.calls[0][0];
|
|
64
|
+
expect(createCall.messages).toBeDefined();
|
|
65
|
+
const userMessage = createCall.messages.find((msg) => msg.role === 'user' && typeof msg.content === 'string');
|
|
66
|
+
expect(userMessage.content).toContain('[Image: img_');
|
|
67
|
+
expect(userMessage.content).not.toContain('data:image/png;base64,');
|
|
68
|
+
const imageMessages = createCall.messages.filter((msg) => msg.role === 'user' && msg.content && Array.isArray(msg.content) &&
|
|
69
|
+
msg.content.some((content) => content.type === 'image_url'));
|
|
70
|
+
expect(imageMessages.length).toBeGreaterThan(0);
|
|
71
|
+
});
|
|
72
|
+
test('should handle multiple images in single conversation', async () => {
|
|
73
|
+
const mcpResponse = `{
|
|
74
|
+
"success": true,
|
|
75
|
+
"screenshot1": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
|
|
76
|
+
"screenshot2": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAABAAEDASIAAhEBAxEB/8QAFQABAQAAAAAAAAAAAAAAAAAAAAv/xAAUEAEAAAAAAAAAAAAAAAAAAAAA/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAX/xAAUEQEAAAAAAAAAAAAAAAAAAAAA/9oADAMBAAIRAxEAPwA/AB+G"
|
|
77
|
+
}`;
|
|
78
|
+
const options = {
|
|
79
|
+
model: 'gpt-4o',
|
|
80
|
+
messages: [
|
|
81
|
+
{ role: 'tool', name: 'browser_screenshot', content: mcpResponse }
|
|
82
|
+
]
|
|
83
|
+
};
|
|
84
|
+
const mockResponse = {
|
|
85
|
+
choices: [{ message: { role: 'assistant', content: 'I can see both screenshots.' } }],
|
|
86
|
+
model: 'gpt-4o',
|
|
87
|
+
usage: { prompt_tokens: 100, completion_tokens: 50, total_tokens: 150 }
|
|
88
|
+
};
|
|
89
|
+
jest.spyOn(client.chat.completions, 'create').mockResolvedValue(mockResponse);
|
|
90
|
+
const result = await client.createChatCompletion(options);
|
|
91
|
+
expect(result).toBeDefined();
|
|
92
|
+
expect(result.choices[0].message.content).toContain('screenshots');
|
|
93
|
+
const createCall = client.chat.completions.create.mock.calls[0][0];
|
|
94
|
+
expect(createCall.messages).toBeDefined();
|
|
95
|
+
const imageMessages = createCall.messages.filter((msg) => msg.role === 'user' && msg.content && Array.isArray(msg.content) &&
|
|
96
|
+
msg.content.some((content) => content.type === 'image_url'));
|
|
97
|
+
expect(imageMessages.length).toBe(2);
|
|
98
|
+
});
|
|
99
|
+
test('should handle malformed JSON in tool responses gracefully', async () => {
|
|
100
|
+
const mcpResponse = `{
|
|
101
|
+
"success": true,
|
|
102
|
+
"screenshot": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==",
|
|
103
|
+
"incomplete": "missing closing brace"
|
|
104
|
+
`;
|
|
105
|
+
const options = {
|
|
106
|
+
model: 'gpt-4o',
|
|
107
|
+
messages: [
|
|
108
|
+
{ role: 'tool', name: 'browser_screenshot', content: mcpResponse }
|
|
109
|
+
]
|
|
110
|
+
};
|
|
111
|
+
const mockResponse = {
|
|
112
|
+
choices: [{ message: { role: 'assistant', content: 'Processing completed.' } }],
|
|
113
|
+
model: 'gpt-4o',
|
|
114
|
+
usage: { prompt_tokens: 100, completion_tokens: 50, total_tokens: 150 }
|
|
115
|
+
};
|
|
116
|
+
jest.spyOn(client.chat.completions, 'create').mockResolvedValue(mockResponse);
|
|
117
|
+
const result = await client.createChatCompletion(options);
|
|
118
|
+
expect(result).toBeDefined();
|
|
119
|
+
expect(result.choices[0].message.content).toContain('Processing completed');
|
|
120
|
+
const createCall = client.chat.completions.create.mock.calls[0][0];
|
|
121
|
+
expect(createCall.messages).toBeDefined();
|
|
122
|
+
});
|
|
123
|
+
test('should pass through messages without images unchanged', async () => {
|
|
124
|
+
const options = {
|
|
125
|
+
model: 'gpt-4o',
|
|
126
|
+
messages: [
|
|
127
|
+
{ role: 'user', content: 'Hello, how are you?' },
|
|
128
|
+
{ role: 'assistant', content: 'I am doing well, thank you!' }
|
|
129
|
+
]
|
|
130
|
+
};
|
|
131
|
+
const mockResponse = {
|
|
132
|
+
choices: [{ message: { role: 'assistant', content: 'Great to hear!' } }],
|
|
133
|
+
model: 'gpt-4o',
|
|
134
|
+
usage: { prompt_tokens: 100, completion_tokens: 50, total_tokens: 150 }
|
|
135
|
+
};
|
|
136
|
+
jest.spyOn(client.chat.completions, 'create').mockResolvedValue(mockResponse);
|
|
137
|
+
const result = await client.createChatCompletion(options);
|
|
138
|
+
expect(result).toBeDefined();
|
|
139
|
+
expect(result.choices[0].message.content).toContain('Great to hear');
|
|
140
|
+
const createCall = client.chat.completions.create.mock.calls[0][0];
|
|
141
|
+
expect(createCall.messages).toBeDefined();
|
|
142
|
+
expect(createCall.messages.length).toBe(2);
|
|
143
|
+
expect(createCall.messages[0].content).toBe('Hello, how are you?');
|
|
144
|
+
expect(createCall.messages[1].content).toBe('I am doing well, thank you!');
|
|
145
|
+
});
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
//# sourceMappingURL=OpenAI-MessagePreprocessor.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAI-MessagePreprocessor.test.js","sourceRoot":"","sources":["../../../tests/integration/OpenAI-MessagePreprocessor.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|