@love-moon/cli2sdk 0.1.4 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/bin/{tmates_test_cli.js → aiden_test_cli.js} +25 -16
  2. package/dist/bin/aiden_test_cli.js.map +1 -0
  3. package/dist/bin/cli2sdk2cli.d.ts +2 -0
  4. package/dist/bin/cli2sdk2cli.js +280 -0
  5. package/dist/bin/cli2sdk2cli.js.map +1 -0
  6. package/dist/bin/kimi_test_cli.d.ts +2 -0
  7. package/dist/bin/kimi_test_cli.js +84 -0
  8. package/dist/bin/kimi_test_cli.js.map +1 -0
  9. package/dist/core/base.d.ts +1 -1
  10. package/dist/core/base.js +3 -0
  11. package/dist/core/base.js.map +1 -1
  12. package/dist/core/chat_session.d.ts +11 -0
  13. package/dist/core/chat_session.js +33 -5
  14. package/dist/core/chat_session.js.map +1 -1
  15. package/dist/core/router.d.ts +2 -2
  16. package/dist/core/router.js +20 -4
  17. package/dist/core/router.js.map +1 -1
  18. package/dist/index.d.ts +10 -3
  19. package/dist/index.js +1 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/providers/aiden.d.ts +15 -0
  22. package/dist/providers/aiden.js +169 -0
  23. package/dist/providers/aiden.js.map +1 -0
  24. package/dist/providers/claude.d.ts +10 -0
  25. package/dist/providers/claude.js +52 -3
  26. package/dist/providers/claude.js.map +1 -1
  27. package/dist/providers/codex.d.ts +10 -0
  28. package/dist/providers/codex.js +53 -1
  29. package/dist/providers/codex.js.map +1 -1
  30. package/dist/providers/kimi.d.ts +14 -0
  31. package/dist/providers/kimi.js +160 -0
  32. package/dist/providers/kimi.js.map +1 -0
  33. package/dist/types/provider.d.ts +12 -1
  34. package/package.json +4 -3
  35. package/dist/bin/tmates_test_cli.js.map +0 -1
  36. package/dist/providers/tmates.d.ts +0 -10
  37. package/dist/providers/tmates.js +0 -36
  38. package/dist/providers/tmates.js.map +0 -1
  39. /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 tmatesCommand = process.env.CLI2SDK_TMATES_BIN;
24
- const tmatesArgs = process.env.CLI2SDK_TMATES_ARGS
25
- ? process.env.CLI2SDK_TMATES_ARGS.split(" ").filter(Boolean)
26
- : ["--one-shot", "--print", "--permission-mode", "bypassPermissions"];
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: "tmates",
29
- tmates: {
30
- command: tmatesCommand,
31
- args: tmatesArgs,
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
- console.error("Streaming mode is not supported for TMates provider.");
43
- process.exit(1);
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
- console.error("Streaming mode is not supported for TMates provider in interactive mode.");
61
- process.exit(1);
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(`TMates> ${answer.text}`);
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=tmates_test_cli.js.map
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,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -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,2 @@
1
+ #!/usr/bin/env node
2
+ export {};
@@ -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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"}
@@ -19,7 +19,7 @@ export interface CliProviderOptions {
19
19
  logger?: Logger;
20
20
  }
21
21
  export declare abstract class CliCommandProvider extends CodeProvider {
22
- private readonly binary;
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 = {}) {
@@ -1 +1 @@
1
- {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/core/base.ts"],"names":[],"mappings":"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"}
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;IAC5D,8DAA8D;IAC9D,kEAAkE;IAClE,6BAA6B;IACV,MAAM,CAAuB;IAC9B,cAAc,CAAsB;IAErD,YACE,IAAY,EACZ,UAA8B,EAAE;QAEhC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IAC7E,CAAC;IAES,YAAY,CAAC,MAAc,EAAE,OAAuB;QAC5D,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC7C,CAAC;IAIS,gBAAgB,CACxB,MAAc,EACd,OAAoB,EACpB,MAAM,GAAG,KAAK;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,KAAK,MAAM;YAC9C,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC;YACxC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEvC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAEhF,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,EAAE,CAAC;YAC7C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI;YACzC,IAAI;YACJ,GAAG,EAAE,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,GAAG;YACpC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,EAAE;YAC5C,KAAK;YACL,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS;YACtD,MAAM,EAAE,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM;SAC9C,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,OAAoB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QAEhC,qDAAqD;QACrD,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACxC,CAAC,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC;gBAC9C,CAAC,IAAI,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAC7C,CAAC;YACF,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACzC,CAAC;QAED,OAAO;YACL,IAAI;YACJ,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC9B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,MAAM,CAAC,MAAc,EAAE,OAAoB;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACtC,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;YAC1C,CAAC;QACH,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YACzC,MAAM,EAAE,GAAG,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;IAES,gBAAgB,CAAC,MAAc,EAAE,OAAuB;QAChE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,YAAY,EAAE,UAAU,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1D,CAAC;CACF"}
@@ -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 historyForProvider = [...this.history, userMessage];
30
- const result = await this.runner.run(prompt, {
32
+ const usePersistent = this.options.usePersistentSession;
33
+ // Build run options based on session mode
34
+ const runOptions = {
31
35
  ...options,
32
- history: historyForProvider
33
- });
34
- this.history = this.truncate([...historyForProvider, {
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":"AAYA,MAAM,OAAO,WAAW;IAIH;IACA;IAJX,OAAO,CAAiB;IAEhC,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,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,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,kBAAkB,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE;YAC3C,GAAG,OAAO;YACV,OAAO,EAAE,kBAAkB;SAC5B,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,kBAAkB,EAAE;gBACnD,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;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"}
1
+ {"version":3,"file":"chat_session.js","sourceRoot":"","sources":["../../src/core/chat_session.ts"],"names":[],"mappings":"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"}
@@ -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;