paean 0.8.0 → 0.8.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.
- package/dist/agent/chat.ink.d.ts +5 -2
- package/dist/agent/chat.ink.d.ts.map +1 -1
- package/dist/agent/chat.ink.js +43 -2
- package/dist/agent/chat.ink.js.map +1 -1
- package/dist/commands/agent.d.ts.map +1 -1
- package/dist/commands/agent.js +40 -207
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/prompt.js +1 -1
- package/dist/commands/prompt.js.map +1 -1
- package/dist/ui/theme/branding.js +6 -6
- package/dist/ui/theme/ink-theme.js +6 -6
- package/package.json +1 -1
- package/dist/agent/chat.legacy.d.ts +0 -26
- package/dist/agent/chat.legacy.d.ts.map +0 -1
- package/dist/agent/chat.legacy.js +0 -467
- package/dist/agent/chat.legacy.js.map +0 -1
package/dist/agent/chat.ink.d.ts
CHANGED
|
@@ -12,6 +12,9 @@ export interface ChatOptions {
|
|
|
12
12
|
debug?: boolean;
|
|
13
13
|
initialMessage?: string;
|
|
14
14
|
resumeConversationId?: string;
|
|
15
|
+
cliMode?: {
|
|
16
|
+
enabled?: boolean;
|
|
17
|
+
};
|
|
15
18
|
}
|
|
16
19
|
/**
|
|
17
20
|
* Start the interactive chat loop using Ink
|
|
@@ -19,7 +22,7 @@ export interface ChatOptions {
|
|
|
19
22
|
export declare function startChat(options?: ChatOptions): Promise<void>;
|
|
20
23
|
/**
|
|
21
24
|
* Send a single message (non-interactive mode)
|
|
22
|
-
*
|
|
25
|
+
* Used for programmatic usage and one-shot commands
|
|
23
26
|
*/
|
|
24
|
-
export
|
|
27
|
+
export declare function sendMessage(message: string, options?: ChatOptions): Promise<string>;
|
|
25
28
|
//# sourceMappingURL=chat.ink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.ink.d.ts","sourceRoot":"","sources":["../../src/agent/chat.ink.tsx"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"chat.ink.d.ts","sourceRoot":"","sources":["../../src/agent/chat.ink.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CACnC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBxE;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
|
package/dist/agent/chat.ink.js
CHANGED
|
@@ -5,6 +5,8 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
5
5
|
*/
|
|
6
6
|
import { render } from 'ink';
|
|
7
7
|
import { App } from '../ui/App.js';
|
|
8
|
+
import { agentService } from './service.js';
|
|
9
|
+
import { renderMarkdown } from './renderer.js';
|
|
8
10
|
/**
|
|
9
11
|
* Start the interactive chat loop using Ink
|
|
10
12
|
*/
|
|
@@ -17,7 +19,46 @@ export async function startChat(options = {}) {
|
|
|
17
19
|
}
|
|
18
20
|
/**
|
|
19
21
|
* Send a single message (non-interactive mode)
|
|
20
|
-
*
|
|
22
|
+
* Used for programmatic usage and one-shot commands
|
|
21
23
|
*/
|
|
22
|
-
export
|
|
24
|
+
export async function sendMessage(message, options = {}) {
|
|
25
|
+
const { mcpState, onMcpToolCall } = options;
|
|
26
|
+
const cliModeEnabled = options.cliMode?.enabled ?? false;
|
|
27
|
+
return new Promise((resolve, reject) => {
|
|
28
|
+
let responseText = '';
|
|
29
|
+
const callbacks = {
|
|
30
|
+
onContent: (text, partial) => {
|
|
31
|
+
if (!partial) {
|
|
32
|
+
responseText = text;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
responseText += text;
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
onMcpToolCall: async (callId, serverName, toolName, args) => {
|
|
39
|
+
if (onMcpToolCall) {
|
|
40
|
+
return onMcpToolCall(callId, serverName, toolName, args);
|
|
41
|
+
}
|
|
42
|
+
return {
|
|
43
|
+
content: [{ type: 'text', text: 'MCP not available' }],
|
|
44
|
+
isError: true,
|
|
45
|
+
};
|
|
46
|
+
},
|
|
47
|
+
onDone: () => {
|
|
48
|
+
// Render based on mode
|
|
49
|
+
const rendered = cliModeEnabled
|
|
50
|
+
? responseText
|
|
51
|
+
: renderMarkdown(responseText);
|
|
52
|
+
resolve(rendered.trim());
|
|
53
|
+
},
|
|
54
|
+
onError: (error) => {
|
|
55
|
+
reject(new Error(error));
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
agentService.streamMessage(message, callbacks, {
|
|
59
|
+
mcpState,
|
|
60
|
+
cliMode: cliModeEnabled ? { enabled: true } : undefined,
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
}
|
|
23
64
|
//# sourceMappingURL=chat.ink.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat.ink.js","sourceRoot":"","sources":["../../src/agent/chat.ink.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"chat.ink.js","sourceRoot":"","sources":["../../src/agent/chat.ink.tsx"],"names":[],"mappings":";AAAA;;;GAGG;AAGH,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAoB/C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,UAAuB,EAAE;IACrD,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,GAAG,OAAO,CAAC;IAEzF,6BAA6B;IAC7B,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,CAC5B,KAAC,GAAG,IACA,QAAQ,EAAE,QAAQ,EAClB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,KAAK,EACZ,cAAc,EAAE,cAAc,EAC9B,oBAAoB,EAAE,oBAAoB,GAC5C,CACL,CAAC;IAEF,2BAA2B;IAC3B,MAAM,aAAa,EAAE,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC7B,OAAe,EACf,UAAuB,EAAE;IAEzB,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAC5C,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,EAAE,OAAO,IAAI,KAAK,CAAC;IAEzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,YAAY,GAAG,EAAE,CAAC;QAEtB,MAAM,SAAS,GAAyB;YACpC,SAAS,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE;gBACzB,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,YAAY,GAAG,IAAI,CAAC;gBACxB,CAAC;qBAAM,CAAC;oBACJ,YAAY,IAAI,IAAI,CAAC;gBACzB,CAAC;YACL,CAAC;YAED,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,EAAE;gBACxD,IAAI,aAAa,EAAE,CAAC;oBAChB,OAAO,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;gBAC7D,CAAC;gBACD,OAAO;oBACH,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,CAAC;oBAC/D,OAAO,EAAE,IAAI;iBAChB,CAAC;YACN,CAAC;YAED,MAAM,EAAE,GAAG,EAAE;gBACT,uBAAuB;gBACvB,MAAM,QAAQ,GAAG,cAAc;oBAC3B,CAAC,CAAC,YAAY;oBACd,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC7B,CAAC;YAED,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;YAC7B,CAAC;SACJ,CAAC;QAEF,YAAY,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE;YAC3C,QAAQ;YACR,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;SAC1D,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,eAAO,MAAM,YAAY,SAuFnB,CAAC;AAEP;;GAEG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE;IACxC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC,GAAG,OAAO,CAAC,IAAI,CAAC,CAwChB"}
|
package/dist/commands/agent.js
CHANGED
|
@@ -7,39 +7,28 @@ import chalk from 'chalk';
|
|
|
7
7
|
import { initializeAgent, checkAuthentication } from '../agent/utils.js';
|
|
8
8
|
import { analyzeProject, createPlan, formatPlan } from '../agent/planning.js';
|
|
9
9
|
/**
|
|
10
|
-
* Detect if running under Bun runtime
|
|
10
|
+
* Detect if running under Bun runtime and show warning
|
|
11
11
|
*/
|
|
12
|
-
function
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
return false;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Check if Ink mode should be used
|
|
29
|
-
* - Default: Use Ink for Node.js (better rendering, streaming support)
|
|
30
|
-
* - Use Legacy only for Bun (compatibility) or when explicitly forced
|
|
31
|
-
*/
|
|
32
|
-
function shouldUseInkMode() {
|
|
33
|
-
// Environment variable override (highest priority)
|
|
34
|
-
if (process.env.PAEAN_FORCE_LEGACY === '1') {
|
|
35
|
-
return false;
|
|
12
|
+
function checkBunRuntime() {
|
|
13
|
+
let isBun = false;
|
|
14
|
+
if (typeof process !== 'undefined') {
|
|
15
|
+
// Check for Bun-specific properties
|
|
16
|
+
const versions = process.versions;
|
|
17
|
+
if (versions?.bun !== undefined) {
|
|
18
|
+
isBun = true;
|
|
19
|
+
}
|
|
20
|
+
// Check for Bun global
|
|
21
|
+
if (typeof globalThis.Bun !== 'undefined') {
|
|
22
|
+
isBun = true;
|
|
23
|
+
}
|
|
36
24
|
}
|
|
37
|
-
if (
|
|
38
|
-
|
|
25
|
+
if (isBun) {
|
|
26
|
+
console.error(chalk.yellow('⚠️ Bun runtime detected.'));
|
|
27
|
+
console.error(chalk.yellow(' Paean CLI requires Node.js for optimal experience.'));
|
|
28
|
+
console.error(chalk.yellow(' Please run with: npx paean or node $(which paean)'));
|
|
29
|
+
console.error('');
|
|
30
|
+
process.exit(1);
|
|
39
31
|
}
|
|
40
|
-
// Auto-detect: use Ink for Node.js (default), Legacy only for Bun
|
|
41
|
-
// Since npm packages run on Node.js, default to Ink
|
|
42
|
-
return !isBunRuntime();
|
|
43
32
|
}
|
|
44
33
|
export const agentCommand = new Command('agent')
|
|
45
34
|
.description('Start interactive AI agent mode (default)')
|
|
@@ -49,6 +38,8 @@ export const agentCommand = new Command('agent')
|
|
|
49
38
|
.option('-p, --plan', 'Show execution plan before proceeding')
|
|
50
39
|
.option('-r, --resume <conversationId>', 'Resume a previous conversation session')
|
|
51
40
|
.action(async (options) => {
|
|
41
|
+
// Check for Bun runtime
|
|
42
|
+
checkBunRuntime();
|
|
52
43
|
// Validate message if provided
|
|
53
44
|
if (options.message) {
|
|
54
45
|
const message = String(options.message).trim();
|
|
@@ -92,97 +83,19 @@ export const agentCommand = new Command('agent')
|
|
|
92
83
|
}
|
|
93
84
|
}
|
|
94
85
|
}
|
|
95
|
-
if (options.message) {
|
|
96
|
-
// Use the same mode selection logic for single message mode
|
|
97
|
-
if (shouldUseInkMode()) {
|
|
98
|
-
// For Ink mode, we need to use the interactive chat but with a message
|
|
99
|
-
const { startChat: startInkChat } = await import('../agent/chat.ink.js');
|
|
100
|
-
try {
|
|
101
|
-
await startInkChat({
|
|
102
|
-
mcpState,
|
|
103
|
-
onMcpToolCall,
|
|
104
|
-
debug,
|
|
105
|
-
initialMessage: options.message,
|
|
106
|
-
});
|
|
107
|
-
}
|
|
108
|
-
catch (error) {
|
|
109
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
110
|
-
console.error(chalk.red(`\n❌ Error: ${errorMessage}`));
|
|
111
|
-
if (debug) {
|
|
112
|
-
console.error(chalk.dim(`\nStack trace:\n${error instanceof Error ? error.stack : ''}`));
|
|
113
|
-
}
|
|
114
|
-
process.exit(1);
|
|
115
|
-
}
|
|
116
|
-
finally {
|
|
117
|
-
try {
|
|
118
|
-
await mcpClient?.disconnectAll();
|
|
119
|
-
}
|
|
120
|
-
catch (cleanupError) {
|
|
121
|
-
if (debug) {
|
|
122
|
-
console.error(chalk.dim(`Warning: Error during cleanup: ${cleanupError.message}`));
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
// Use legacy mode for Bun compatibility
|
|
129
|
-
const { sendMessage } = await import('../agent/chat.legacy.js');
|
|
130
|
-
try {
|
|
131
|
-
const response = await sendMessage(options.message, {
|
|
132
|
-
mcpState,
|
|
133
|
-
onMcpToolCall,
|
|
134
|
-
debug,
|
|
135
|
-
});
|
|
136
|
-
console.log(response);
|
|
137
|
-
}
|
|
138
|
-
catch (error) {
|
|
139
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
140
|
-
console.error(chalk.red(`\n❌ Error: ${errorMessage}`));
|
|
141
|
-
if (debug) {
|
|
142
|
-
console.error(chalk.dim(`\nStack trace:\n${error instanceof Error ? error.stack : ''}`));
|
|
143
|
-
}
|
|
144
|
-
process.exit(1);
|
|
145
|
-
}
|
|
146
|
-
finally {
|
|
147
|
-
try {
|
|
148
|
-
await mcpClient?.disconnectAll();
|
|
149
|
-
}
|
|
150
|
-
catch (cleanupError) {
|
|
151
|
-
if (debug) {
|
|
152
|
-
console.error(chalk.dim(`Warning: Error during cleanup: ${cleanupError.message}`));
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
return;
|
|
158
|
-
}
|
|
159
86
|
try {
|
|
160
|
-
const
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
mcpState,
|
|
169
|
-
onMcpToolCall,
|
|
170
|
-
debug,
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
else {
|
|
174
|
-
// Use legacy mode for Bun compatibility
|
|
175
|
-
const { startChat: startLegacyChat } = await import('../agent/chat.legacy.js');
|
|
176
|
-
await startLegacyChat({
|
|
177
|
-
mcpState,
|
|
178
|
-
onMcpToolCall,
|
|
179
|
-
debug,
|
|
180
|
-
});
|
|
181
|
-
}
|
|
87
|
+
const { startChat } = await import('../agent/chat.ink.js');
|
|
88
|
+
await startChat({
|
|
89
|
+
mcpState,
|
|
90
|
+
onMcpToolCall,
|
|
91
|
+
debug,
|
|
92
|
+
initialMessage: options.message,
|
|
93
|
+
resumeConversationId: options.resume,
|
|
94
|
+
});
|
|
182
95
|
}
|
|
183
96
|
catch (error) {
|
|
184
97
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
185
|
-
console.error(chalk.red(`\n❌
|
|
98
|
+
console.error(chalk.red(`\n❌ Error: ${errorMessage}`));
|
|
186
99
|
if (debug) {
|
|
187
100
|
console.error(chalk.dim(`\nStack trace:\n${error instanceof Error ? error.stack : ''}`));
|
|
188
101
|
}
|
|
@@ -203,6 +116,8 @@ export const agentCommand = new Command('agent')
|
|
|
203
116
|
* Start agent mode directly (for default command)
|
|
204
117
|
*/
|
|
205
118
|
export async function runAgentMode(options) {
|
|
119
|
+
// Check for Bun runtime
|
|
120
|
+
checkBunRuntime();
|
|
206
121
|
checkAuthentication();
|
|
207
122
|
const debug = options.debug ?? false;
|
|
208
123
|
const enableMcp = options.mcp !== false;
|
|
@@ -211,97 +126,15 @@ export async function runAgentMode(options) {
|
|
|
211
126
|
mcp: enableMcp,
|
|
212
127
|
debug
|
|
213
128
|
});
|
|
214
|
-
if (options.message) {
|
|
215
|
-
// Use the same mode selection logic for single message mode
|
|
216
|
-
if (shouldUseInkMode()) {
|
|
217
|
-
// For Ink mode, we need to use the interactive chat but with a message
|
|
218
|
-
const { startChat: startInkChat } = await import('../agent/chat.ink.js');
|
|
219
|
-
try {
|
|
220
|
-
await startInkChat({
|
|
221
|
-
mcpState,
|
|
222
|
-
onMcpToolCall,
|
|
223
|
-
debug,
|
|
224
|
-
initialMessage: options.message,
|
|
225
|
-
resumeConversationId,
|
|
226
|
-
});
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
229
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
230
|
-
console.error(chalk.red(`\n❌ Error: ${errorMessage}`));
|
|
231
|
-
if (debug) {
|
|
232
|
-
console.error(chalk.dim(`\nStack trace:\n${error instanceof Error ? error.stack : ''}`));
|
|
233
|
-
}
|
|
234
|
-
process.exit(1);
|
|
235
|
-
}
|
|
236
|
-
finally {
|
|
237
|
-
try {
|
|
238
|
-
await mcpClient?.disconnectAll();
|
|
239
|
-
}
|
|
240
|
-
catch (cleanupError) {
|
|
241
|
-
if (debug) {
|
|
242
|
-
console.error(chalk.dim(`Warning: Error during cleanup: ${cleanupError.message}`));
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
else {
|
|
248
|
-
// Use legacy mode for Bun compatibility
|
|
249
|
-
const { sendMessage } = await import('../agent/chat.legacy.js');
|
|
250
|
-
try {
|
|
251
|
-
const response = await sendMessage(options.message, {
|
|
252
|
-
mcpState,
|
|
253
|
-
onMcpToolCall,
|
|
254
|
-
debug,
|
|
255
|
-
resumeConversationId,
|
|
256
|
-
});
|
|
257
|
-
console.log(response);
|
|
258
|
-
}
|
|
259
|
-
catch (error) {
|
|
260
|
-
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
261
|
-
console.error(chalk.red(`\n❌ Error: ${errorMessage}`));
|
|
262
|
-
if (debug) {
|
|
263
|
-
console.error(chalk.dim(`\nStack trace:\n${error instanceof Error ? error.stack : ''}`));
|
|
264
|
-
}
|
|
265
|
-
process.exit(1);
|
|
266
|
-
}
|
|
267
|
-
finally {
|
|
268
|
-
try {
|
|
269
|
-
await mcpClient?.disconnectAll();
|
|
270
|
-
}
|
|
271
|
-
catch (cleanupError) {
|
|
272
|
-
if (debug) {
|
|
273
|
-
console.error(chalk.dim(`Warning: Error during cleanup: ${cleanupError.message}`));
|
|
274
|
-
}
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
return;
|
|
279
|
-
}
|
|
280
129
|
try {
|
|
281
|
-
const
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
mcpState,
|
|
290
|
-
onMcpToolCall,
|
|
291
|
-
debug,
|
|
292
|
-
resumeConversationId,
|
|
293
|
-
});
|
|
294
|
-
}
|
|
295
|
-
else {
|
|
296
|
-
// Use legacy mode for Bun compatibility
|
|
297
|
-
const { startChat: startLegacyChat } = await import('../agent/chat.legacy.js');
|
|
298
|
-
await startLegacyChat({
|
|
299
|
-
mcpState,
|
|
300
|
-
onMcpToolCall,
|
|
301
|
-
debug,
|
|
302
|
-
resumeConversationId,
|
|
303
|
-
});
|
|
304
|
-
}
|
|
130
|
+
const { startChat } = await import('../agent/chat.ink.js');
|
|
131
|
+
await startChat({
|
|
132
|
+
mcpState,
|
|
133
|
+
onMcpToolCall,
|
|
134
|
+
debug,
|
|
135
|
+
initialMessage: options.message,
|
|
136
|
+
resumeConversationId,
|
|
137
|
+
});
|
|
305
138
|
}
|
|
306
139
|
catch (error) {
|
|
307
140
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAE9E;;GAEG;AACH,SAAS,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/prompt.js
CHANGED
|
@@ -77,7 +77,7 @@ export const promptCommand = new Command('prompt')
|
|
|
77
77
|
console.log(chalk.dim(' (LLM will decide: direct execution, chain tasks, or batch tasks)'));
|
|
78
78
|
console.log('');
|
|
79
79
|
// Use sendMessage to let LLM process and decide
|
|
80
|
-
const { sendMessage } = await import('../agent/chat.
|
|
80
|
+
const { sendMessage } = await import('../agent/chat.ink.js');
|
|
81
81
|
const response = await sendMessage(enhancedPrompt, {
|
|
82
82
|
mcpState,
|
|
83
83
|
onMcpToolCall,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/commands/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,12 +19,12 @@ export const BRAND_COLORS = {
|
|
|
19
19
|
// ASCII Logo - Stylized 'AI Paean'
|
|
20
20
|
export const getLogoAscii = () => {
|
|
21
21
|
return `
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
██████╗ █████╗ ███████╗ █████╗ ███╗ ██╗
|
|
23
|
+
██╔══██╗██╔══██╗██╔════╝██╔══██╗████╗ ██║
|
|
24
|
+
██████╔╝███████║█████╗ ███████║██╔██╗ ██║
|
|
25
|
+
██╔═══╝ ██╔══██║██╔══╝ ██╔══██║██║╚██╗██║
|
|
26
|
+
██║ ██║ ██║███████╗██║ ██║██║ ╚████║
|
|
27
|
+
╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝
|
|
28
28
|
`;
|
|
29
29
|
};
|
|
30
30
|
// Compact Logo for Headers
|
|
@@ -23,12 +23,12 @@ export const INK_COLORS = {
|
|
|
23
23
|
};
|
|
24
24
|
// ASCII Logo for Ink
|
|
25
25
|
export const ASCII_LOGO = `
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
██████╗ █████╗ ███████╗ █████╗ ███╗ ██╗
|
|
27
|
+
██╔══██╗██╔══██╗██╔════╝██╔══██╗████╗ ██║
|
|
28
|
+
██████╔╝███████║█████╗ ███████║██╔██╗ ██║
|
|
29
|
+
██╔═══╝ ██╔══██║██╔══╝ ██╔══██║██║╚██╗██║
|
|
30
|
+
██║ ██║ ██║███████╗██║ ██║██║ ╚████║
|
|
31
|
+
╚═╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝
|
|
32
32
|
`.trim();
|
|
33
33
|
// Compact logo for small screens
|
|
34
34
|
export const COMPACT_LOGO = '∩ Pæan';
|
package/package.json
CHANGED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive Chat Loop
|
|
3
|
-
* Handles user input and agent responses in a REPL-style interface
|
|
4
|
-
* Features: Dynamic spinners, Tab completion, CLI-friendly mode
|
|
5
|
-
*/
|
|
6
|
-
import { type CliModeOptions } from './cli-mode.js';
|
|
7
|
-
import type { McpState, McpToolResult } from './types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Chat options
|
|
10
|
-
*/
|
|
11
|
-
export interface ChatOptions {
|
|
12
|
-
mcpState?: McpState;
|
|
13
|
-
onMcpToolCall?: (callId: string, serverName: string, toolName: string, args: Record<string, unknown>) => Promise<McpToolResult>;
|
|
14
|
-
debug?: boolean;
|
|
15
|
-
cliMode?: Partial<CliModeOptions>;
|
|
16
|
-
resumeConversationId?: string;
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Start the interactive chat loop
|
|
20
|
-
*/
|
|
21
|
-
export declare function startChat(options?: ChatOptions): Promise<void>;
|
|
22
|
-
/**
|
|
23
|
-
* Send a single message (non-interactive mode)
|
|
24
|
-
*/
|
|
25
|
-
export declare function sendMessage(message: string, options?: ChatOptions): Promise<string>;
|
|
26
|
-
//# sourceMappingURL=chat.legacy.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat.legacy.d.ts","sourceRoot":"","sources":["../../src/agent/chat.legacy.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiCH,OAAO,EAGH,KAAK,cAAc,EACtB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAwB,MAAM,YAAY,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,aAAa,CAAC,EAAE,CACZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC5B,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,oBAAoB,CAAC,EAAE,MAAM,CAAC;CACjC;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgcxE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,WAAgB,GAC1B,OAAO,CAAC,MAAM,CAAC,CA4CjB"}
|
|
@@ -1,467 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive Chat Loop
|
|
3
|
-
* Handles user input and agent responses in a REPL-style interface
|
|
4
|
-
* Features: Dynamic spinners, Tab completion, CLI-friendly mode
|
|
5
|
-
*/
|
|
6
|
-
import * as readline from 'readline';
|
|
7
|
-
import chalk from 'chalk';
|
|
8
|
-
import { agentService } from './service.js';
|
|
9
|
-
import { renderMarkdown, renderError, renderPrompt, renderAgentLabel, renderWelcome, renderGoodbye, renderSparkletCreated, renderMediaGenerated, renderInputBoxTop, renderInputBoxBottom, indentMultilineResponse, } from './renderer.js';
|
|
10
|
-
import { success, error as errorColor, warning, muted, primary, mcpSymbol, toolSymbol, } from '../ui/theme/index.js';
|
|
11
|
-
// Import thinking animation
|
|
12
|
-
import { createThinkingAnimation } from './spinner.js';
|
|
13
|
-
import { commandCompleter, renderCommandHelp, } from './completer.js';
|
|
14
|
-
import { isCliModeActive, isRawStreamEnabled, } from './cli-mode.js';
|
|
15
|
-
/**
|
|
16
|
-
* Start the interactive chat loop
|
|
17
|
-
*/
|
|
18
|
-
export async function startChat(options = {}) {
|
|
19
|
-
const { mcpState, onMcpToolCall, debug, resumeConversationId } = options;
|
|
20
|
-
// CLI mode state
|
|
21
|
-
let cliModeEnabled = isCliModeActive(options.cliMode);
|
|
22
|
-
let rawStreamEnabled = isRawStreamEnabled(options.cliMode);
|
|
23
|
-
// Calculate total MCP tools
|
|
24
|
-
const mcpToolCount = mcpState?.mcpServers?.reduce((sum, server) => sum + (server.tools?.length || 0), 0);
|
|
25
|
-
// Print welcome message
|
|
26
|
-
console.log(renderWelcome(mcpToolCount));
|
|
27
|
-
// Show resume info if resuming
|
|
28
|
-
if (resumeConversationId) {
|
|
29
|
-
console.log(muted(` Resuming conversation: ${resumeConversationId.slice(0, 8)}...`));
|
|
30
|
-
console.log('');
|
|
31
|
-
}
|
|
32
|
-
// Create readline interface with completer
|
|
33
|
-
const rl = readline.createInterface({
|
|
34
|
-
input: process.stdin,
|
|
35
|
-
output: process.stdout,
|
|
36
|
-
terminal: true,
|
|
37
|
-
completer: commandCompleter,
|
|
38
|
-
});
|
|
39
|
-
let conversationId = resumeConversationId;
|
|
40
|
-
let isProcessing = false;
|
|
41
|
-
let currentStreamAbort = null;
|
|
42
|
-
let messageHistory = [];
|
|
43
|
-
// Helper to print resume command
|
|
44
|
-
const printResumeCommand = () => {
|
|
45
|
-
if (conversationId) {
|
|
46
|
-
console.log(`\nTo resume this session: paean --resume=${conversationId}\n`);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
// Handle Ctrl+C
|
|
50
|
-
const handleSigint = () => {
|
|
51
|
-
if (isProcessing) {
|
|
52
|
-
// Abort current stream
|
|
53
|
-
if (currentStreamAbort) {
|
|
54
|
-
try {
|
|
55
|
-
currentStreamAbort();
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
// Ignore abort errors
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
console.log(chalk.dim('\n(interrupted)'));
|
|
62
|
-
isProcessing = false;
|
|
63
|
-
currentStreamAbort = null;
|
|
64
|
-
// Use setImmediate to avoid readline issues
|
|
65
|
-
setImmediate(() => {
|
|
66
|
-
try {
|
|
67
|
-
promptUser();
|
|
68
|
-
}
|
|
69
|
-
catch (e) {
|
|
70
|
-
// If readline is closed, exit gracefully
|
|
71
|
-
printResumeCommand();
|
|
72
|
-
console.log(renderGoodbye());
|
|
73
|
-
process.exit(0);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
else {
|
|
78
|
-
// Exit
|
|
79
|
-
printResumeCommand();
|
|
80
|
-
console.log(renderGoodbye());
|
|
81
|
-
try {
|
|
82
|
-
rl.close();
|
|
83
|
-
}
|
|
84
|
-
catch (e) {
|
|
85
|
-
// Ignore close errors
|
|
86
|
-
}
|
|
87
|
-
process.exit(0);
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
process.on('SIGINT', handleSigint);
|
|
91
|
-
// Cleanup on process exit
|
|
92
|
-
const cleanup = async () => {
|
|
93
|
-
try {
|
|
94
|
-
if (currentStreamAbort) {
|
|
95
|
-
try {
|
|
96
|
-
currentStreamAbort();
|
|
97
|
-
}
|
|
98
|
-
catch (e) {
|
|
99
|
-
// Ignore abort errors
|
|
100
|
-
}
|
|
101
|
-
currentStreamAbort = null;
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
catch (e) {
|
|
105
|
-
// Ignore cleanup errors
|
|
106
|
-
}
|
|
107
|
-
try {
|
|
108
|
-
rl.close();
|
|
109
|
-
}
|
|
110
|
-
catch (e) {
|
|
111
|
-
// Ignore close errors (may already be closed)
|
|
112
|
-
}
|
|
113
|
-
};
|
|
114
|
-
process.on('exit', () => {
|
|
115
|
-
// Synchronous cleanup only
|
|
116
|
-
try {
|
|
117
|
-
rl.close();
|
|
118
|
-
}
|
|
119
|
-
catch (e) {
|
|
120
|
-
// Ignore (may already be closed)
|
|
121
|
-
}
|
|
122
|
-
});
|
|
123
|
-
process.on('SIGTERM', async () => {
|
|
124
|
-
await cleanup();
|
|
125
|
-
process.exit(0);
|
|
126
|
-
});
|
|
127
|
-
// Prompt for user input with styled input box
|
|
128
|
-
const promptUser = () => {
|
|
129
|
-
try {
|
|
130
|
-
// Display input box top border
|
|
131
|
-
console.log(renderInputBoxTop());
|
|
132
|
-
rl.question(renderPrompt(), async (input) => {
|
|
133
|
-
try {
|
|
134
|
-
// Display input box bottom border after input
|
|
135
|
-
console.log(renderInputBoxBottom());
|
|
136
|
-
const trimmedInput = input.trim();
|
|
137
|
-
if (!trimmedInput) {
|
|
138
|
-
promptUser();
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
// Validate input length
|
|
142
|
-
if (trimmedInput.length > 10000) {
|
|
143
|
-
console.error(errorColor('❌ Error: Input is too long (max 10000 characters).'));
|
|
144
|
-
promptUser();
|
|
145
|
-
return;
|
|
146
|
-
}
|
|
147
|
-
// Handle slash commands
|
|
148
|
-
if (trimmedInput.startsWith('/')) {
|
|
149
|
-
const handled = handleCommand(trimmedInput);
|
|
150
|
-
if (handled) {
|
|
151
|
-
promptUser();
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Add to message history
|
|
156
|
-
messageHistory.push(trimmedInput);
|
|
157
|
-
// Process the message
|
|
158
|
-
await processMessage(trimmedInput);
|
|
159
|
-
promptUser();
|
|
160
|
-
}
|
|
161
|
-
catch (error) {
|
|
162
|
-
const errorMessage = error instanceof Error
|
|
163
|
-
? error.message
|
|
164
|
-
: 'Unknown error occurred';
|
|
165
|
-
console.error(errorColor(`\n❌ Error: ${errorMessage}`));
|
|
166
|
-
promptUser();
|
|
167
|
-
}
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
catch (error) {
|
|
171
|
-
// If readline is closed, exit gracefully
|
|
172
|
-
const errorMessage = error instanceof Error ? error.message : '';
|
|
173
|
-
if (errorMessage.includes('close') || errorMessage.includes('destroyed')) {
|
|
174
|
-
printResumeCommand();
|
|
175
|
-
console.log(renderGoodbye());
|
|
176
|
-
process.exit(0);
|
|
177
|
-
}
|
|
178
|
-
else {
|
|
179
|
-
throw error;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
};
|
|
183
|
-
// Handle slash commands
|
|
184
|
-
const handleCommand = (input) => {
|
|
185
|
-
const cmd = input.toLowerCase();
|
|
186
|
-
switch (cmd) {
|
|
187
|
-
case '/exit':
|
|
188
|
-
case '/quit':
|
|
189
|
-
case '/q':
|
|
190
|
-
printResumeCommand();
|
|
191
|
-
console.log(renderGoodbye());
|
|
192
|
-
rl.close();
|
|
193
|
-
process.exit(0);
|
|
194
|
-
case '/clear':
|
|
195
|
-
case '/cls':
|
|
196
|
-
console.clear();
|
|
197
|
-
console.log(renderWelcome(mcpToolCount));
|
|
198
|
-
return true;
|
|
199
|
-
case '/reset':
|
|
200
|
-
case '/new':
|
|
201
|
-
conversationId = undefined;
|
|
202
|
-
messageHistory = [];
|
|
203
|
-
console.clear();
|
|
204
|
-
console.log(renderWelcome(mcpToolCount));
|
|
205
|
-
console.log(success(' Started new conversation context.'));
|
|
206
|
-
return true;
|
|
207
|
-
case '/help':
|
|
208
|
-
case '/h':
|
|
209
|
-
case '/?':
|
|
210
|
-
console.log(renderCommandHelp());
|
|
211
|
-
return true;
|
|
212
|
-
case '/debug':
|
|
213
|
-
options.debug = !options.debug;
|
|
214
|
-
console.log(muted(` Debug mode: ${options.debug ? success('ON') : errorColor('OFF')}`));
|
|
215
|
-
console.log('');
|
|
216
|
-
return true;
|
|
217
|
-
case '/raw':
|
|
218
|
-
cliModeEnabled = !cliModeEnabled;
|
|
219
|
-
rawStreamEnabled = cliModeEnabled;
|
|
220
|
-
let output = muted(` Raw mode: ${cliModeEnabled ? success('ON') : errorColor('OFF')}`);
|
|
221
|
-
if (cliModeEnabled) {
|
|
222
|
-
output += '\n' + muted(' Agent will return plain text (no markdown)');
|
|
223
|
-
}
|
|
224
|
-
console.log(output);
|
|
225
|
-
console.log('');
|
|
226
|
-
return true;
|
|
227
|
-
case '/mcp':
|
|
228
|
-
if (mcpState?.mcpServers && mcpState.mcpServers.length > 0) {
|
|
229
|
-
console.log(primary('\nMCP Connections:\n'));
|
|
230
|
-
for (const server of mcpState.mcpServers) {
|
|
231
|
-
const toolCount = server.tools?.length || 0;
|
|
232
|
-
console.log(` ${success('●')} ${warning(server.name)}: ${success(toolCount)} tools`);
|
|
233
|
-
}
|
|
234
|
-
console.log('');
|
|
235
|
-
}
|
|
236
|
-
else {
|
|
237
|
-
console.log(muted('\nNo MCP servers connected\n'));
|
|
238
|
-
}
|
|
239
|
-
return true;
|
|
240
|
-
default:
|
|
241
|
-
// Unknown command
|
|
242
|
-
if (cmd.startsWith('/')) {
|
|
243
|
-
console.log(errorColor(`\nUnknown command: ${cmd}`));
|
|
244
|
-
console.log(muted('Type /help for available commands\n'));
|
|
245
|
-
return true;
|
|
246
|
-
}
|
|
247
|
-
return false;
|
|
248
|
-
}
|
|
249
|
-
};
|
|
250
|
-
// Process a message - simplified version following old working pattern
|
|
251
|
-
const processMessage = async (message) => {
|
|
252
|
-
isProcessing = true;
|
|
253
|
-
let responseText = '';
|
|
254
|
-
let isFirstContent = true;
|
|
255
|
-
// Create and start the thinking animation
|
|
256
|
-
const thinkingAnimation = createThinkingAnimation();
|
|
257
|
-
thinkingAnimation.start();
|
|
258
|
-
const callbacks = {
|
|
259
|
-
onContent: (text, partial) => {
|
|
260
|
-
if (rawStreamEnabled && partial) {
|
|
261
|
-
// Raw stream mode: output directly
|
|
262
|
-
if (isFirstContent) {
|
|
263
|
-
thinkingAnimation.clear();
|
|
264
|
-
process.stdout.write(renderAgentLabel());
|
|
265
|
-
isFirstContent = false;
|
|
266
|
-
}
|
|
267
|
-
process.stdout.write(text);
|
|
268
|
-
}
|
|
269
|
-
else {
|
|
270
|
-
// Buffered mode: accumulate text
|
|
271
|
-
if (partial) {
|
|
272
|
-
responseText += text;
|
|
273
|
-
// Update animation to show receiving progress
|
|
274
|
-
const charCount = responseText.length;
|
|
275
|
-
if (charCount > 0) {
|
|
276
|
-
thinkingAnimation.updateText(`📝 Receiving... (${charCount} chars)`);
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
else {
|
|
280
|
-
responseText = text;
|
|
281
|
-
}
|
|
282
|
-
}
|
|
283
|
-
},
|
|
284
|
-
onToolCall: (_id, name) => {
|
|
285
|
-
if (debug) {
|
|
286
|
-
thinkingAnimation.stop();
|
|
287
|
-
process.stdout.write('\r\x1b[K');
|
|
288
|
-
console.log(muted(`${toolSymbol()} ${primary(name)}...`));
|
|
289
|
-
thinkingAnimation.start();
|
|
290
|
-
}
|
|
291
|
-
},
|
|
292
|
-
onToolResult: (_id, _name) => {
|
|
293
|
-
// Tool completed, animation continues
|
|
294
|
-
},
|
|
295
|
-
onMcpToolCall: async (callId, serverName, toolName, args) => {
|
|
296
|
-
// Pause animation and show MCP call
|
|
297
|
-
thinkingAnimation.stop();
|
|
298
|
-
process.stdout.write('\r\x1b[K');
|
|
299
|
-
console.log(muted(`${mcpSymbol()} [${warning(serverName)}] ${primary(toolName)}...`));
|
|
300
|
-
if (onMcpToolCall) {
|
|
301
|
-
try {
|
|
302
|
-
const result = await onMcpToolCall(callId, serverName, toolName, args);
|
|
303
|
-
console.log(muted(`${success('✓')} [${warning(serverName)}] ${primary(toolName)} completed`));
|
|
304
|
-
// Resume thinking animation
|
|
305
|
-
thinkingAnimation.start();
|
|
306
|
-
return result;
|
|
307
|
-
}
|
|
308
|
-
catch (error) {
|
|
309
|
-
console.log(muted(`${errorColor('✗')} [${warning(serverName)}] ${primary(toolName)} failed`));
|
|
310
|
-
thinkingAnimation.start();
|
|
311
|
-
return {
|
|
312
|
-
content: [
|
|
313
|
-
{
|
|
314
|
-
type: 'text',
|
|
315
|
-
text: `Error: ${error.message}`,
|
|
316
|
-
},
|
|
317
|
-
],
|
|
318
|
-
isError: true,
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
thinkingAnimation.start();
|
|
323
|
-
return {
|
|
324
|
-
content: [{ type: 'text', text: 'MCP not available' }],
|
|
325
|
-
isError: true,
|
|
326
|
-
};
|
|
327
|
-
},
|
|
328
|
-
onDone: (convId) => {
|
|
329
|
-
conversationId = convId;
|
|
330
|
-
// Clear thinking animation
|
|
331
|
-
thinkingAnimation.clear();
|
|
332
|
-
try {
|
|
333
|
-
if (responseText) {
|
|
334
|
-
if (rawStreamEnabled) {
|
|
335
|
-
// Raw mode: just add newline (content already streamed)
|
|
336
|
-
console.log('');
|
|
337
|
-
}
|
|
338
|
-
else {
|
|
339
|
-
// Markdown mode: render complete response
|
|
340
|
-
process.stdout.write(renderAgentLabel());
|
|
341
|
-
const rendered = cliModeEnabled
|
|
342
|
-
? responseText // CLI mode: plain text
|
|
343
|
-
: renderMarkdown(responseText); // Normal: markdown
|
|
344
|
-
// Indent multiline responses for better alignment
|
|
345
|
-
const indented = indentMultilineResponse(rendered.trim(), 2);
|
|
346
|
-
console.log(indented);
|
|
347
|
-
}
|
|
348
|
-
}
|
|
349
|
-
console.log(''); // New line after response
|
|
350
|
-
}
|
|
351
|
-
catch (e) {
|
|
352
|
-
// Ignore stdout errors
|
|
353
|
-
}
|
|
354
|
-
isProcessing = false;
|
|
355
|
-
currentStreamAbort = null;
|
|
356
|
-
},
|
|
357
|
-
onSparkletCreated: (hashKey, title) => {
|
|
358
|
-
thinkingAnimation.stop();
|
|
359
|
-
process.stdout.write('\r\x1b[K'); // Clear line
|
|
360
|
-
console.log(renderSparkletCreated(hashKey, title));
|
|
361
|
-
thinkingAnimation.start();
|
|
362
|
-
},
|
|
363
|
-
onMediaGenerated: (media) => {
|
|
364
|
-
thinkingAnimation.stop();
|
|
365
|
-
process.stdout.write('\r\x1b[K'); // Clear line
|
|
366
|
-
console.log(renderMediaGenerated(media.assetType, media.fileName, media.signedUrl));
|
|
367
|
-
thinkingAnimation.start();
|
|
368
|
-
},
|
|
369
|
-
onError: (error) => {
|
|
370
|
-
thinkingAnimation.clear();
|
|
371
|
-
console.log(renderError(error));
|
|
372
|
-
isProcessing = false;
|
|
373
|
-
currentStreamAbort = null;
|
|
374
|
-
},
|
|
375
|
-
};
|
|
376
|
-
try {
|
|
377
|
-
const { abort } = await agentService.streamMessage(message, callbacks, {
|
|
378
|
-
conversationId,
|
|
379
|
-
mcpState,
|
|
380
|
-
cliMode: cliModeEnabled ? { enabled: true, streamRaw: rawStreamEnabled } : undefined,
|
|
381
|
-
});
|
|
382
|
-
currentStreamAbort = abort;
|
|
383
|
-
}
|
|
384
|
-
catch (error) {
|
|
385
|
-
thinkingAnimation.clear();
|
|
386
|
-
const errorMessage = error instanceof Error
|
|
387
|
-
? error.message
|
|
388
|
-
: 'Unknown error occurred';
|
|
389
|
-
console.log(renderError(errorMessage));
|
|
390
|
-
isProcessing = false;
|
|
391
|
-
currentStreamAbort = null;
|
|
392
|
-
// Continue prompting after error
|
|
393
|
-
setImmediate(() => {
|
|
394
|
-
try {
|
|
395
|
-
promptUser();
|
|
396
|
-
}
|
|
397
|
-
catch (e) {
|
|
398
|
-
// If readline is closed, exit gracefully
|
|
399
|
-
printResumeCommand();
|
|
400
|
-
console.log(renderGoodbye());
|
|
401
|
-
process.exit(0);
|
|
402
|
-
}
|
|
403
|
-
});
|
|
404
|
-
}
|
|
405
|
-
};
|
|
406
|
-
// Start the prompt loop with error handling
|
|
407
|
-
try {
|
|
408
|
-
promptUser();
|
|
409
|
-
}
|
|
410
|
-
catch (error) {
|
|
411
|
-
const errorMessage = error instanceof Error
|
|
412
|
-
? error.message
|
|
413
|
-
: 'Unknown error occurred';
|
|
414
|
-
console.error(errorColor(`\n❌ Failed to start chat: ${errorMessage}`));
|
|
415
|
-
try {
|
|
416
|
-
rl.close();
|
|
417
|
-
}
|
|
418
|
-
catch (e) {
|
|
419
|
-
// Ignore cleanup errors
|
|
420
|
-
}
|
|
421
|
-
process.exit(1);
|
|
422
|
-
}
|
|
423
|
-
}
|
|
424
|
-
/**
|
|
425
|
-
* Send a single message (non-interactive mode)
|
|
426
|
-
*/
|
|
427
|
-
export async function sendMessage(message, options = {}) {
|
|
428
|
-
const { mcpState, onMcpToolCall } = options;
|
|
429
|
-
const cliModeEnabled = isCliModeActive(options.cliMode);
|
|
430
|
-
return new Promise((resolve, reject) => {
|
|
431
|
-
let responseText = '';
|
|
432
|
-
const callbacks = {
|
|
433
|
-
onContent: (text, partial) => {
|
|
434
|
-
if (!partial) {
|
|
435
|
-
responseText = text;
|
|
436
|
-
}
|
|
437
|
-
else {
|
|
438
|
-
responseText += text;
|
|
439
|
-
}
|
|
440
|
-
},
|
|
441
|
-
onMcpToolCall: async (callId, serverName, toolName, args) => {
|
|
442
|
-
if (onMcpToolCall) {
|
|
443
|
-
return onMcpToolCall(callId, serverName, toolName, args);
|
|
444
|
-
}
|
|
445
|
-
return {
|
|
446
|
-
content: [{ type: 'text', text: 'MCP not available' }],
|
|
447
|
-
isError: true,
|
|
448
|
-
};
|
|
449
|
-
},
|
|
450
|
-
onDone: () => {
|
|
451
|
-
// Render based on mode
|
|
452
|
-
const rendered = cliModeEnabled
|
|
453
|
-
? responseText
|
|
454
|
-
: renderMarkdown(responseText);
|
|
455
|
-
resolve(rendered.trim());
|
|
456
|
-
},
|
|
457
|
-
onError: (error) => {
|
|
458
|
-
reject(new Error(error));
|
|
459
|
-
},
|
|
460
|
-
};
|
|
461
|
-
agentService.streamMessage(message, callbacks, {
|
|
462
|
-
mcpState,
|
|
463
|
-
cliMode: cliModeEnabled ? { enabled: true } : undefined,
|
|
464
|
-
});
|
|
465
|
-
});
|
|
466
|
-
}
|
|
467
|
-
//# sourceMappingURL=chat.legacy.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat.legacy.js","sourceRoot":"","sources":["../../src/agent/chat.legacy.ts"],"names":[],"mappings":"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"}
|