@love-moon/cli2sdk 0.1.4 → 0.2.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/bin/{tmates_test_cli.js → aiden_test_cli.js} +25 -16
- package/dist/bin/aiden_test_cli.js.map +1 -0
- package/dist/bin/cli2sdk2cli.d.ts +2 -0
- package/dist/bin/cli2sdk2cli.js +280 -0
- package/dist/bin/cli2sdk2cli.js.map +1 -0
- package/dist/bin/kimi_test_cli.d.ts +2 -0
- package/dist/bin/kimi_test_cli.js +84 -0
- package/dist/bin/kimi_test_cli.js.map +1 -0
- package/dist/core/base.d.ts +1 -1
- package/dist/core/base.js +3 -0
- package/dist/core/base.js.map +1 -1
- package/dist/core/chat_session.d.ts +11 -0
- package/dist/core/chat_session.js +33 -5
- package/dist/core/chat_session.js.map +1 -1
- package/dist/core/router.d.ts +2 -2
- package/dist/core/router.js +20 -4
- package/dist/core/router.js.map +1 -1
- package/dist/index.d.ts +10 -3
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/providers/aiden.d.ts +15 -0
- package/dist/providers/aiden.js +169 -0
- package/dist/providers/aiden.js.map +1 -0
- package/dist/providers/claude.d.ts +10 -0
- package/dist/providers/claude.js +52 -3
- package/dist/providers/claude.js.map +1 -1
- package/dist/providers/codex.d.ts +10 -0
- package/dist/providers/codex.js +53 -1
- package/dist/providers/codex.js.map +1 -1
- package/dist/providers/kimi.d.ts +14 -0
- package/dist/providers/kimi.js +160 -0
- package/dist/providers/kimi.js.map +1 -0
- package/dist/types/provider.d.ts +12 -1
- package/package.json +4 -3
- package/dist/bin/tmates_test_cli.js.map +0 -1
- package/dist/providers/tmates.d.ts +0 -10
- package/dist/providers/tmates.js +0 -36
- package/dist/providers/tmates.js.map +0 -1
- /package/dist/bin/{tmates_test_cli.d.ts → aiden_test_cli.d.ts} +0 -0
|
@@ -20,17 +20,16 @@ const main = async () => {
|
|
|
20
20
|
const { prompt, flags } = parseArgs(process.argv.slice(2));
|
|
21
21
|
const streamMode = flags.has("--stream");
|
|
22
22
|
const interactive = flags.has("--interactive") || !prompt;
|
|
23
|
-
const
|
|
24
|
-
const
|
|
25
|
-
? process.env.
|
|
26
|
-
:
|
|
23
|
+
const aidenCommand = process.env.CLI2SDK_AIDEN_BIN;
|
|
24
|
+
const aidenArgs = process.env.CLI2SDK_AIDEN_ARGS
|
|
25
|
+
? process.env.CLI2SDK_AIDEN_ARGS.split(" ").filter(Boolean)
|
|
26
|
+
: undefined;
|
|
27
27
|
const sdk = cli2sdk({
|
|
28
|
-
provider: "
|
|
29
|
-
|
|
30
|
-
command:
|
|
31
|
-
args:
|
|
32
|
-
env: process.env
|
|
33
|
-
timeoutMs: 60000
|
|
28
|
+
provider: "aiden",
|
|
29
|
+
aiden: {
|
|
30
|
+
command: aidenCommand,
|
|
31
|
+
args: aidenArgs,
|
|
32
|
+
env: process.env
|
|
34
33
|
}
|
|
35
34
|
});
|
|
36
35
|
if (!interactive) {
|
|
@@ -39,8 +38,12 @@ const main = async () => {
|
|
|
39
38
|
process.exit(1);
|
|
40
39
|
}
|
|
41
40
|
if (streamMode) {
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
for await (const chunk of sdk.stream(prompt)) {
|
|
42
|
+
if (chunk.delta) {
|
|
43
|
+
process.stdout.write(chunk.delta);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
process.stdout.write("\n");
|
|
44
47
|
}
|
|
45
48
|
else {
|
|
46
49
|
const result = await sdk.run(prompt);
|
|
@@ -57,12 +60,18 @@ const main = async () => {
|
|
|
57
60
|
break;
|
|
58
61
|
}
|
|
59
62
|
if (streamMode) {
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
process.stdout.write("Aiden> ");
|
|
64
|
+
for await (const chunk of sdk.stream(question, { history: chat.getHistory() })) {
|
|
65
|
+
if (chunk.delta) {
|
|
66
|
+
process.stdout.write(chunk.delta);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
process.stdout.write("\n");
|
|
70
|
+
await chat.ask(question);
|
|
62
71
|
}
|
|
63
72
|
else {
|
|
64
73
|
const answer = await chat.ask(question);
|
|
65
|
-
console.log(`
|
|
74
|
+
console.log(`Aiden> ${answer.text}`);
|
|
66
75
|
}
|
|
67
76
|
}
|
|
68
77
|
rl.close();
|
|
@@ -71,4 +80,4 @@ main().catch((error) => {
|
|
|
71
80
|
console.error("cli2sdk test CLI failed:", error);
|
|
72
81
|
process.exitCode = 1;
|
|
73
82
|
});
|
|
74
|
-
//# sourceMappingURL=
|
|
83
|
+
//# sourceMappingURL=aiden_test_cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aiden_test_cli.js","sourceRoot":"","sources":["../../src/bin/aiden_test_cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import readline from "node:readline/promises";
|
|
4
|
+
import { cli2sdk } from "../index.js";
|
|
5
|
+
const parseArgs = (argv) => {
|
|
6
|
+
let command;
|
|
7
|
+
let commandArgs = [];
|
|
8
|
+
let stream = false;
|
|
9
|
+
let debug = false;
|
|
10
|
+
let persistent = true; // 默认启用持续会话
|
|
11
|
+
let i = 0;
|
|
12
|
+
while (i < argv.length) {
|
|
13
|
+
if (argv[i] === "--help" || argv[i] === "-h") {
|
|
14
|
+
usage();
|
|
15
|
+
process.exit(0);
|
|
16
|
+
}
|
|
17
|
+
else if (argv[i] === "--debug" || argv[i] === "-d") {
|
|
18
|
+
debug = true;
|
|
19
|
+
}
|
|
20
|
+
else if (argv[i] === "--command" && i + 1 < argv.length) {
|
|
21
|
+
// Parse the entire command line from --command
|
|
22
|
+
let fullCommandLine = argv[++i];
|
|
23
|
+
// Also include any additional arguments that are not options
|
|
24
|
+
while (i + 1 < argv.length && !argv[i + 1].startsWith("-")) {
|
|
25
|
+
fullCommandLine += " " + argv[++i];
|
|
26
|
+
}
|
|
27
|
+
// Parse command and arguments from the full command line
|
|
28
|
+
// This handles quoted strings, like --command "echo hello world"
|
|
29
|
+
const parsed = parseCommandLine(fullCommandLine);
|
|
30
|
+
command = parsed[0];
|
|
31
|
+
commandArgs = parsed.slice(1);
|
|
32
|
+
}
|
|
33
|
+
else if (argv[i] === "--stream") {
|
|
34
|
+
stream = true;
|
|
35
|
+
}
|
|
36
|
+
else if (argv[i].startsWith("-")) {
|
|
37
|
+
console.error(`Unknown option: ${argv[i]}`);
|
|
38
|
+
usage();
|
|
39
|
+
process.exit(1);
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
// If argument is not an option, treat as part of command
|
|
43
|
+
if (!command) {
|
|
44
|
+
console.error("Error: Command must be preceded by --command option");
|
|
45
|
+
usage();
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
commandArgs.push(argv[i]);
|
|
49
|
+
}
|
|
50
|
+
i++;
|
|
51
|
+
}
|
|
52
|
+
if (!command) {
|
|
53
|
+
console.error("Error: --command is required");
|
|
54
|
+
usage();
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
return { command, args: commandArgs, stream, debug, persistent };
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Parse a command line string into an array, handling quoted arguments
|
|
61
|
+
* This supports both single and double quotes
|
|
62
|
+
*/
|
|
63
|
+
function parseCommandLine(cmdLine) {
|
|
64
|
+
const args = [];
|
|
65
|
+
let currentArg = "";
|
|
66
|
+
let quoteChar = null;
|
|
67
|
+
for (let i = 0; i < cmdLine.length; i++) {
|
|
68
|
+
const char = cmdLine[i];
|
|
69
|
+
if (char === "'" || char === '"') {
|
|
70
|
+
if (quoteChar === char) {
|
|
71
|
+
// Close quote
|
|
72
|
+
quoteChar = null;
|
|
73
|
+
}
|
|
74
|
+
else if (quoteChar === null) {
|
|
75
|
+
// Open new quote
|
|
76
|
+
quoteChar = char;
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
// Inside a quote, add the character as-is
|
|
80
|
+
currentArg += char;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else if (char === " " && !quoteChar) {
|
|
84
|
+
if (currentArg.length > 0) {
|
|
85
|
+
args.push(currentArg);
|
|
86
|
+
currentArg = "";
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
currentArg += char;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (currentArg.length > 0) {
|
|
94
|
+
args.push(currentArg);
|
|
95
|
+
}
|
|
96
|
+
if (quoteChar) {
|
|
97
|
+
console.error("Error: Unclosed quote in command line");
|
|
98
|
+
usage();
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
// Special fix for commands like: bash -c "echo; sleep 5"
|
|
102
|
+
// This fixes cases where we have quoted strings with spaces after -c flag
|
|
103
|
+
const fixedArgs = [];
|
|
104
|
+
let i = 0;
|
|
105
|
+
while (i < args.length) {
|
|
106
|
+
let arg = args[i];
|
|
107
|
+
// If arg is "-c" or "/c" (Windows), the next argument should be treated as single string
|
|
108
|
+
if (arg === "-c" || arg === "/c") {
|
|
109
|
+
fixedArgs.push(arg);
|
|
110
|
+
if (i + 1 < args.length) {
|
|
111
|
+
// Collect all remaining args as a single string to preserve spaces
|
|
112
|
+
let cArg = args.slice(i + 1).join(" ");
|
|
113
|
+
// Remove any leading/trailing quotes if they still exist
|
|
114
|
+
if (cArg.startsWith('"') && cArg.endsWith('"')) {
|
|
115
|
+
cArg = cArg.slice(1, -1);
|
|
116
|
+
}
|
|
117
|
+
else if (cArg.startsWith("'") && cArg.endsWith("'")) {
|
|
118
|
+
cArg = cArg.slice(1, -1);
|
|
119
|
+
}
|
|
120
|
+
fixedArgs.push(cArg);
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
else {
|
|
125
|
+
// Remove any leading/trailing quotes from normal args
|
|
126
|
+
if (arg.startsWith('"') && arg.endsWith('"')) {
|
|
127
|
+
arg = arg.slice(1, -1);
|
|
128
|
+
}
|
|
129
|
+
else if (arg.startsWith("'") && arg.endsWith("'")) {
|
|
130
|
+
arg = arg.slice(1, -1);
|
|
131
|
+
}
|
|
132
|
+
fixedArgs.push(arg);
|
|
133
|
+
}
|
|
134
|
+
i++;
|
|
135
|
+
}
|
|
136
|
+
return fixedArgs;
|
|
137
|
+
}
|
|
138
|
+
const usage = () => {
|
|
139
|
+
console.log(`
|
|
140
|
+
Usage: cli2sdk2cli --command <full-command-line> [--stream] [--debug | -d]
|
|
141
|
+
|
|
142
|
+
Test tool for cli2sdk that loads a specified command and enables interactive conversation.
|
|
143
|
+
|
|
144
|
+
Options:
|
|
145
|
+
--command <full-command-line> Required: The complete command line to load
|
|
146
|
+
(e.g., 'echo Hello World', 'claude --output-format json')
|
|
147
|
+
--stream Optional: Enable streaming mode for responses
|
|
148
|
+
--debug, -d Optional: Show detailed debug information
|
|
149
|
+
(includes spawned command, sent messages, and CLI outputs)
|
|
150
|
+
--help Show this help message
|
|
151
|
+
|
|
152
|
+
Examples:
|
|
153
|
+
# Test with simple echo command
|
|
154
|
+
cli2sdk2cli --command "echo Hello from cli2sdk"
|
|
155
|
+
|
|
156
|
+
# Test with Claude CLI (if available) in streaming mode
|
|
157
|
+
cli2sdk2cli --command "claude --output-format json --stream" --stream
|
|
158
|
+
|
|
159
|
+
# Test with custom Python script with debug output
|
|
160
|
+
cli2sdk2cli --command "python3 /path/to/your/script.py --verbose" --debug
|
|
161
|
+
|
|
162
|
+
# Test with persistent session (keeps process running)
|
|
163
|
+
cli2sdk2cli --command "python3 -c 'import time; while True: i = input(); print(f\"You said: {i}\")'" --persistent
|
|
164
|
+
`);
|
|
165
|
+
};
|
|
166
|
+
const main = async () => {
|
|
167
|
+
const { command, args, stream, debug, persistent } = parseArgs(process.argv.slice(2));
|
|
168
|
+
console.log("=".repeat(80));
|
|
169
|
+
console.log(`cli2sdk2cli - Interactive Test Tool`);
|
|
170
|
+
console.log("=".repeat(80));
|
|
171
|
+
console.log(`Command: ${command}`);
|
|
172
|
+
if (args.length > 0) {
|
|
173
|
+
console.log(`Arguments: ${args.join(' ')}`);
|
|
174
|
+
}
|
|
175
|
+
console.log(`Streaming: ${stream}`);
|
|
176
|
+
console.log(`Debug: ${debug}`);
|
|
177
|
+
console.log(`Persistent Session: ${persistent}`);
|
|
178
|
+
console.log("=".repeat(80));
|
|
179
|
+
// Enhanced debug logging
|
|
180
|
+
const logDebug = (message, data) => {
|
|
181
|
+
if (debug) {
|
|
182
|
+
console.log(`\n[DEBUG] ${message}`);
|
|
183
|
+
if (data) {
|
|
184
|
+
if (typeof data === 'string') {
|
|
185
|
+
console.log(data);
|
|
186
|
+
}
|
|
187
|
+
else if (typeof data === 'object') {
|
|
188
|
+
console.log(JSON.stringify(data, null, 2));
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
console.log(data);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
};
|
|
196
|
+
// Initialize cli2sdk with the specified command
|
|
197
|
+
logDebug("Initializing SDK with configuration");
|
|
198
|
+
const sdk = cli2sdk({
|
|
199
|
+
provider: "generic",
|
|
200
|
+
persistent: persistent, // Apply persistent config
|
|
201
|
+
generic: {
|
|
202
|
+
command: command,
|
|
203
|
+
args: args,
|
|
204
|
+
inputFormat: "text", // Default to text format for simpler interaction
|
|
205
|
+
supportsStreaming: stream,
|
|
206
|
+
debug: debug,
|
|
207
|
+
persistent: persistent
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
const rl = readline.createInterface({
|
|
211
|
+
input: process.stdin,
|
|
212
|
+
output: process.stdout
|
|
213
|
+
});
|
|
214
|
+
console.log("\nEntering interactive mode.");
|
|
215
|
+
console.log("- Type your message and press Enter to send");
|
|
216
|
+
console.log("- Press Enter on empty line to exit\n");
|
|
217
|
+
const chat = sdk.session("cli2sdk2cli-demo");
|
|
218
|
+
// Handle exit signals to ensure persistent process is closed
|
|
219
|
+
process.on('SIGINT', () => {
|
|
220
|
+
console.log("\n\nReceived interrupt, closing persistent process...");
|
|
221
|
+
sdk.close?.(); // Call close method if available
|
|
222
|
+
rl.close();
|
|
223
|
+
process.exit(0);
|
|
224
|
+
});
|
|
225
|
+
try {
|
|
226
|
+
while (true) {
|
|
227
|
+
const question = (await rl.question("You> ")).trim();
|
|
228
|
+
if (!question) {
|
|
229
|
+
console.log("\nExiting interactive mode.");
|
|
230
|
+
console.log("Closing persistent process...");
|
|
231
|
+
sdk.close?.(); // Close persistent process
|
|
232
|
+
break;
|
|
233
|
+
}
|
|
234
|
+
if (stream) {
|
|
235
|
+
process.stdout.write("Bot> ");
|
|
236
|
+
try {
|
|
237
|
+
let fullResponse = "";
|
|
238
|
+
for await (const chunk of sdk.stream(question, {
|
|
239
|
+
history: chat.getHistory(),
|
|
240
|
+
metadata: { debug: debug }
|
|
241
|
+
})) {
|
|
242
|
+
if (chunk.delta) {
|
|
243
|
+
process.stdout.write(chunk.delta);
|
|
244
|
+
fullResponse += chunk.delta;
|
|
245
|
+
}
|
|
246
|
+
else if (chunk.text) {
|
|
247
|
+
process.stdout.write(chunk.text);
|
|
248
|
+
fullResponse += chunk.text;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
process.stdout.write("\n");
|
|
252
|
+
chat.addExchange(question, fullResponse);
|
|
253
|
+
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
console.log(`\nError streaming response: ${error.message || String(error)}`);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
try {
|
|
260
|
+
const answer = await chat.ask(question, { metadata: { debug: debug } });
|
|
261
|
+
console.log(`Bot> ${answer.text}`);
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
console.log(`\nError getting response: ${error.message || String(error)}`);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
catch (error) {
|
|
270
|
+
console.log(`\nError: ${error.message || String(error)}`);
|
|
271
|
+
}
|
|
272
|
+
finally {
|
|
273
|
+
rl.close();
|
|
274
|
+
}
|
|
275
|
+
};
|
|
276
|
+
main().catch((error) => {
|
|
277
|
+
console.error("cli2sdk2cli failed:", error);
|
|
278
|
+
process.exitCode = 1;
|
|
279
|
+
});
|
|
280
|
+
//# sourceMappingURL=cli2sdk2cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli2sdk2cli.js","sourceRoot":"","sources":["../../src/bin/cli2sdk2cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import process from "node:process";
|
|
3
|
+
import readline from "node:readline/promises";
|
|
4
|
+
import { cli2sdk } from "../index.js";
|
|
5
|
+
const parseArgs = (argv) => {
|
|
6
|
+
const args = [...argv];
|
|
7
|
+
const flags = new Set();
|
|
8
|
+
const promptParts = [];
|
|
9
|
+
for (const arg of args) {
|
|
10
|
+
if (arg.startsWith("--")) {
|
|
11
|
+
flags.add(arg);
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
promptParts.push(arg);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
return { prompt: promptParts.join(" ").trim(), flags };
|
|
18
|
+
};
|
|
19
|
+
const main = async () => {
|
|
20
|
+
const { prompt, flags } = parseArgs(process.argv.slice(2));
|
|
21
|
+
const streamMode = flags.has("--stream");
|
|
22
|
+
const interactive = flags.has("--interactive") || !prompt;
|
|
23
|
+
const kimiCommand = process.env.CLI2SDK_KIMI_BIN;
|
|
24
|
+
const kimiArgs = process.env.CLI2SDK_KIMI_ARGS
|
|
25
|
+
? process.env.CLI2SDK_KIMI_ARGS.split(" ").filter(Boolean)
|
|
26
|
+
: undefined;
|
|
27
|
+
const sdk = cli2sdk({
|
|
28
|
+
provider: "kimi",
|
|
29
|
+
kimi: {
|
|
30
|
+
command: kimiCommand,
|
|
31
|
+
args: kimiArgs,
|
|
32
|
+
env: process.env
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
if (!interactive) {
|
|
36
|
+
if (!prompt) {
|
|
37
|
+
console.error("No prompt provided.");
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
if (streamMode) {
|
|
41
|
+
for await (const chunk of sdk.stream(prompt)) {
|
|
42
|
+
if (chunk.delta) {
|
|
43
|
+
process.stdout.write(chunk.delta);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
process.stdout.write("\n");
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
const result = await sdk.run(prompt);
|
|
50
|
+
console.log(result.text);
|
|
51
|
+
}
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
55
|
+
const sessionId = `cli2sdk-demo-${Date.now()}`;
|
|
56
|
+
const persistentSession = { enabled: true, sessionId };
|
|
57
|
+
console.log(`Entering interactive mode with persistent session: ${sessionId}`);
|
|
58
|
+
console.log("Press Enter on empty line to exit.\n");
|
|
59
|
+
while (true) {
|
|
60
|
+
const question = (await rl.question("You> ")).trim();
|
|
61
|
+
if (!question) {
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
if (streamMode) {
|
|
65
|
+
process.stdout.write("Kimi> ");
|
|
66
|
+
for await (const chunk of sdk.stream(question, { persistentSession })) {
|
|
67
|
+
if (chunk.delta) {
|
|
68
|
+
process.stdout.write(chunk.delta);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
process.stdout.write("\n");
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
const result = await sdk.run(question, { persistentSession });
|
|
75
|
+
console.log(`Kimi> ${result.text}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
rl.close();
|
|
79
|
+
};
|
|
80
|
+
main().catch((error) => {
|
|
81
|
+
console.error("cli2sdk test CLI failed:", error);
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
});
|
|
84
|
+
//# sourceMappingURL=kimi_test_cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi_test_cli.js","sourceRoot":"","sources":["../../src/bin/kimi_test_cli.ts"],"names":[],"mappings":"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"}
|
package/dist/core/base.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export interface CliProviderOptions {
|
|
|
19
19
|
logger?: Logger;
|
|
20
20
|
}
|
|
21
21
|
export declare abstract class CliCommandProvider extends CodeProvider {
|
|
22
|
-
|
|
22
|
+
protected readonly binary: ProviderBinaryConfig;
|
|
23
23
|
private readonly decoderFactory;
|
|
24
24
|
constructor(name: string, options?: CliProviderOptions);
|
|
25
25
|
protected buildPayload(prompt: string, history: MessageHistory): string;
|
package/dist/core/base.js
CHANGED
|
@@ -17,6 +17,9 @@ export class CodeProvider {
|
|
|
17
17
|
}
|
|
18
18
|
}
|
|
19
19
|
export class CliCommandProvider extends CodeProvider {
|
|
20
|
+
// Mark as protected so specialized providers (e.g. Aiden) can
|
|
21
|
+
// customize how the underlying CLI is invoked while still reusing
|
|
22
|
+
// the common shell plumbing.
|
|
20
23
|
binary;
|
|
21
24
|
decoderFactory;
|
|
22
25
|
constructor(name, options = {}) {
|
package/dist/core/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/core/base.ts"],"names":[],"mappings":"AAGA,OAAO,EAAU,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAkB,UAAU,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,OAAgB,YAAY;IAId;IACG;IAJX,OAAO,GAAmB,EAAE,CAAC;IAEvC,YACkB,IAAY,EACT,SAAiB,YAAY,EAAE;QADlC,SAAI,GAAJ,IAAI,CAAQ;QACT,WAAM,GAAN,MAAM,CAAyB;IACjD,CAAC;IAMM,cAAc,CAAC,OAAoB;QAC3C,IAAI,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC/C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QACjC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAQD,MAAM,OAAgB,kBAAmB,SAAQ,YAAY;
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/core/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,16 +7,27 @@ export interface ChatSessionOptions {
|
|
|
7
7
|
cacheKey?: string;
|
|
8
8
|
cache?: LruCache<string, MessageHistory>;
|
|
9
9
|
initialHistory?: MessageHistory;
|
|
10
|
+
/** Enable CLI-native persistent session (reduces token usage) */
|
|
11
|
+
usePersistentSession?: boolean;
|
|
12
|
+
/** Initial CLI session ID for resuming */
|
|
13
|
+
initialSessionId?: string;
|
|
10
14
|
}
|
|
11
15
|
export declare class ChatSession {
|
|
12
16
|
private readonly runner;
|
|
13
17
|
private readonly options;
|
|
14
18
|
private history;
|
|
19
|
+
private persistentSessionId?;
|
|
15
20
|
constructor(runner: ProviderRunner, options?: ChatSessionOptions);
|
|
16
21
|
getHistory(): MessageHistory;
|
|
17
22
|
reset(history?: MessageHistory): void;
|
|
18
23
|
ask(prompt: string, options?: RunOptions): Promise<RunResult>;
|
|
19
24
|
load(history: MessageHistory): void;
|
|
25
|
+
/** Get the CLI session ID (for persistent sessions) */
|
|
26
|
+
getSessionId(): string | undefined;
|
|
27
|
+
/** Set the CLI session ID (for resuming persistent sessions) */
|
|
28
|
+
setSessionId(sessionId: string): void;
|
|
29
|
+
/** Check if persistent session mode is enabled */
|
|
30
|
+
isPersistentSession(): boolean;
|
|
20
31
|
private truncate;
|
|
21
32
|
private persist;
|
|
22
33
|
}
|
|
@@ -2,10 +2,12 @@ export class ChatSession {
|
|
|
2
2
|
runner;
|
|
3
3
|
options;
|
|
4
4
|
history;
|
|
5
|
+
persistentSessionId;
|
|
5
6
|
constructor(runner, options = {}) {
|
|
6
7
|
this.runner = runner;
|
|
7
8
|
this.options = options;
|
|
8
9
|
this.history = options.initialHistory ? [...options.initialHistory] : [];
|
|
10
|
+
this.persistentSessionId = options.initialSessionId;
|
|
9
11
|
if (options.cacheKey && options.cache) {
|
|
10
12
|
const cached = options.cache.get(options.cacheKey);
|
|
11
13
|
if (cached) {
|
|
@@ -18,6 +20,7 @@ export class ChatSession {
|
|
|
18
20
|
}
|
|
19
21
|
reset(history) {
|
|
20
22
|
this.history = history ? [...history] : [];
|
|
23
|
+
this.persistentSessionId = undefined;
|
|
21
24
|
this.persist();
|
|
22
25
|
}
|
|
23
26
|
async ask(prompt, options) {
|
|
@@ -26,12 +29,25 @@ export class ChatSession {
|
|
|
26
29
|
content: prompt,
|
|
27
30
|
timestamp: Date.now()
|
|
28
31
|
};
|
|
29
|
-
const
|
|
30
|
-
|
|
32
|
+
const usePersistent = this.options.usePersistentSession;
|
|
33
|
+
// Build run options based on session mode
|
|
34
|
+
const runOptions = {
|
|
31
35
|
...options,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
36
|
+
persistentSession: usePersistent
|
|
37
|
+
? { enabled: true, sessionId: this.persistentSessionId }
|
|
38
|
+
: undefined,
|
|
39
|
+
// For persistent sessions, CLI maintains history, so don't pass it
|
|
40
|
+
history: usePersistent
|
|
41
|
+
? undefined
|
|
42
|
+
: [...this.history, userMessage]
|
|
43
|
+
};
|
|
44
|
+
const result = await this.runner.run(prompt, runOptions);
|
|
45
|
+
// Extract and save session ID from result
|
|
46
|
+
if (usePersistent && result.metadata?.sessionId) {
|
|
47
|
+
this.persistentSessionId = result.metadata.sessionId;
|
|
48
|
+
}
|
|
49
|
+
// Still maintain local history for getHistory() and other uses
|
|
50
|
+
this.history = this.truncate([...this.history, userMessage, {
|
|
35
51
|
role: "assistant",
|
|
36
52
|
content: result.text,
|
|
37
53
|
timestamp: Date.now()
|
|
@@ -43,6 +59,18 @@ export class ChatSession {
|
|
|
43
59
|
this.history = [...history];
|
|
44
60
|
this.persist();
|
|
45
61
|
}
|
|
62
|
+
/** Get the CLI session ID (for persistent sessions) */
|
|
63
|
+
getSessionId() {
|
|
64
|
+
return this.persistentSessionId;
|
|
65
|
+
}
|
|
66
|
+
/** Set the CLI session ID (for resuming persistent sessions) */
|
|
67
|
+
setSessionId(sessionId) {
|
|
68
|
+
this.persistentSessionId = sessionId;
|
|
69
|
+
}
|
|
70
|
+
/** Check if persistent session mode is enabled */
|
|
71
|
+
isPersistentSession() {
|
|
72
|
+
return this.options.usePersistentSession ?? false;
|
|
73
|
+
}
|
|
46
74
|
truncate(history) {
|
|
47
75
|
const maxMessages = this.options.maxMessages ?? 32;
|
|
48
76
|
if (history.length <= maxMessages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat_session.js","sourceRoot":"","sources":["../../src/core/chat_session.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"chat_session.js","sourceRoot":"","sources":["../../src/core/chat_session.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAO,WAAW;IAKH;IACA;IALX,OAAO,CAAiB;IACxB,mBAAmB,CAAU;IAErC,YACmB,MAAsB,EACtB,UAA8B,EAAE;QADhC,WAAM,GAAN,MAAM,CAAgB;QACtB,YAAO,GAAP,OAAO,CAAyB;QAEjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACtC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,MAAM,EAAE,CAAC;gBACX,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,UAAU;QACR,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,OAAwB;QAC5B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,OAAoB;QAC5C,MAAM,WAAW,GAAY;YAC3B,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,MAAM;YACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC;QAEF,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;QAExD,0CAA0C;QAC1C,MAAM,UAAU,GAAe;YAC7B,GAAG,OAAO;YACV,iBAAiB,EAAE,aAAa;gBAC9B,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,mBAAmB,EAAE;gBACxD,CAAC,CAAC,SAAS;YACb,mEAAmE;YACnE,OAAO,EAAE,aAAa;gBACpB,CAAC,CAAC,SAAS;gBACX,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;SACnC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEzD,0CAA0C;QAC1C,IAAI,aAAa,IAAI,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC;YAChD,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAmB,CAAC;QACjE,CAAC;QAED,+DAA+D;QAC/D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE;gBAC1D,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,MAAM,CAAC,IAAI;gBACpB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;aACtB,CAAC,CAAC,CAAC;QAEJ,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC,OAAuB;QAC1B,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,uDAAuD;IACvD,YAAY;QACV,OAAO,IAAI,CAAC,mBAAmB,CAAC;IAClC,CAAC;IAED,gEAAgE;IAChE,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;IACvC,CAAC;IAED,kDAAkD;IAClD,mBAAmB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,oBAAoB,IAAI,KAAK,CAAC;IACpD,CAAC;IAEO,QAAQ,CAAC,OAAuB;QACtC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC;QACnD,IAAI,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YAClC,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;IACrD,CAAC;IAEO,OAAO;QACb,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YAChD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF"}
|
package/dist/core/router.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChatSession } from "./chat_session.js";
|
|
1
|
+
import { ChatSession, ChatSessionOptions } from "./chat_session.js";
|
|
2
2
|
import { Cli2SdkConfig, ProviderRunner, RunOptions } from "../types/provider.js";
|
|
3
3
|
import { ResultChunk, RunResult } from "../types/result.js";
|
|
4
4
|
export declare class ProviderRouter implements ProviderRunner {
|
|
@@ -10,7 +10,7 @@ export declare class ProviderRouter implements ProviderRunner {
|
|
|
10
10
|
constructor(config?: Cli2SdkConfig);
|
|
11
11
|
run(prompt: string, options?: RunOptions): Promise<RunResult>;
|
|
12
12
|
stream(prompt: string, options?: RunOptions): AsyncGenerator<ResultChunk>;
|
|
13
|
-
session(cacheKey?: string): ChatSession;
|
|
13
|
+
session(cacheKey?: string, options?: Pick<ChatSessionOptions, "usePersistentSession" | "initialSessionId">): ChatSession;
|
|
14
14
|
private resolveProvider;
|
|
15
15
|
private pickFirstConfigured;
|
|
16
16
|
private getOrCreate;
|