@xagent-ai/cli 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/README_CN.md +1 -1
- package/dist/agents.js +164 -164
- package/dist/agents.js.map +1 -1
- package/dist/ai-client.d.ts +4 -6
- package/dist/ai-client.d.ts.map +1 -1
- package/dist/ai-client.js +137 -115
- package/dist/ai-client.js.map +1 -1
- package/dist/auth.js +4 -4
- package/dist/auth.js.map +1 -1
- package/dist/cli.js +184 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.js +3 -3
- package/dist/config.js.map +1 -1
- package/dist/context-compressor.d.ts.map +1 -1
- package/dist/context-compressor.js +65 -81
- package/dist/context-compressor.js.map +1 -1
- package/dist/conversation.d.ts +1 -1
- package/dist/conversation.d.ts.map +1 -1
- package/dist/conversation.js +5 -31
- package/dist/conversation.js.map +1 -1
- package/dist/memory.d.ts +5 -1
- package/dist/memory.d.ts.map +1 -1
- package/dist/memory.js +77 -37
- package/dist/memory.js.map +1 -1
- package/dist/remote-ai-client.d.ts +1 -8
- package/dist/remote-ai-client.d.ts.map +1 -1
- package/dist/remote-ai-client.js +55 -65
- package/dist/remote-ai-client.js.map +1 -1
- package/dist/retry.d.ts +35 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +166 -0
- package/dist/retry.js.map +1 -0
- package/dist/session.d.ts +0 -5
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +243 -312
- package/dist/session.js.map +1 -1
- package/dist/slash-commands.d.ts +1 -0
- package/dist/slash-commands.d.ts.map +1 -1
- package/dist/slash-commands.js +91 -9
- package/dist/slash-commands.js.map +1 -1
- package/dist/smart-approval.d.ts.map +1 -1
- package/dist/smart-approval.js +18 -17
- package/dist/smart-approval.js.map +1 -1
- package/dist/system-prompt-generator.d.ts.map +1 -1
- package/dist/system-prompt-generator.js +149 -139
- package/dist/system-prompt-generator.js.map +1 -1
- package/dist/theme.d.ts +48 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +254 -0
- package/dist/theme.js.map +1 -1
- package/dist/tools/edit-diff.d.ts +32 -0
- package/dist/tools/edit-diff.d.ts.map +1 -0
- package/dist/tools/edit-diff.js +185 -0
- package/dist/tools/edit-diff.js.map +1 -0
- package/dist/tools/edit.d.ts +11 -0
- package/dist/tools/edit.d.ts.map +1 -0
- package/dist/tools/edit.js +129 -0
- package/dist/tools/edit.js.map +1 -0
- package/dist/tools.d.ts +19 -5
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +979 -631
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +6 -31
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/agents.ts +504 -504
- package/src/ai-client.ts +1559 -1458
- package/src/auth.ts +4 -4
- package/src/cli.ts +195 -1
- package/src/config.ts +3 -3
- package/src/memory.ts +55 -14
- package/src/remote-ai-client.ts +663 -683
- package/src/retry.ts +217 -0
- package/src/session.ts +1736 -1840
- package/src/slash-commands.ts +98 -9
- package/src/smart-approval.ts +626 -625
- package/src/system-prompt-generator.ts +853 -843
- package/src/theme.ts +284 -0
- package/src/tools.ts +390 -70
package/src/slash-commands.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import inquirer from 'inquirer';
|
|
2
2
|
import chalk from 'chalk';
|
|
3
3
|
import ora from 'ora';
|
|
4
|
+
import fs from 'fs/promises';
|
|
5
|
+
import path from 'path';
|
|
4
6
|
import { ExecutionMode, ChatMessage, InputType, ToolCall, Checkpoint, AgentConfig, CompressionConfig, AuthType } from './types.js';
|
|
5
7
|
import { AIClient, Message, detectThinkingKeywords, getThinkingTokens } from './ai-client.js';
|
|
6
8
|
import { getToolRegistry } from './tools.js';
|
|
@@ -185,10 +187,10 @@ export class SlashCommandHandler {
|
|
|
185
187
|
example: '/init'
|
|
186
188
|
},
|
|
187
189
|
{
|
|
188
|
-
cmd: '/memory [show|
|
|
190
|
+
cmd: '/memory [show|clear]',
|
|
189
191
|
desc: 'Manage project memory',
|
|
190
|
-
detail: 'View
|
|
191
|
-
example: '/memory show\n/memory
|
|
192
|
+
detail: 'View or clear memory (global, current, all, or filename)',
|
|
193
|
+
example: '/memory show\n/memory clear\n/memory clear global\n/memory clear all'
|
|
192
194
|
}
|
|
193
195
|
]);
|
|
194
196
|
|
|
@@ -940,21 +942,102 @@ export class SlashCommandHandler {
|
|
|
940
942
|
private async handleMemory(args: string[]): Promise<void> {
|
|
941
943
|
const action = args[0] || 'show';
|
|
942
944
|
|
|
945
|
+
// Load memory files before showing
|
|
946
|
+
try {
|
|
947
|
+
await this.memoryManager.loadMemory();
|
|
948
|
+
} catch (error) {
|
|
949
|
+
logger.error('Failed to load memory files', error instanceof Error ? error.message : String(error));
|
|
950
|
+
return;
|
|
951
|
+
}
|
|
952
|
+
|
|
943
953
|
switch (action) {
|
|
944
954
|
case 'show':
|
|
945
955
|
await this.showMemory();
|
|
946
956
|
break;
|
|
947
|
-
case '
|
|
948
|
-
|
|
949
|
-
break;
|
|
950
|
-
case 'refresh':
|
|
951
|
-
logger.warn('Memory refresh not implemented yet', 'Check back later for updates');
|
|
957
|
+
case 'clear':
|
|
958
|
+
await this.clearMemory(args[1]);
|
|
952
959
|
break;
|
|
953
960
|
default:
|
|
954
961
|
logger.warn(`Unknown memory action: ${action}`, 'Use /memory show to see available actions');
|
|
955
962
|
}
|
|
956
963
|
}
|
|
957
964
|
|
|
965
|
+
private async clearMemory(target?: string): Promise<void> {
|
|
966
|
+
const memoryFiles = this.memoryManager.getMemoryFiles();
|
|
967
|
+
|
|
968
|
+
// Handle different clear targets
|
|
969
|
+
if (!target || target === '.' || target === 'current') {
|
|
970
|
+
// Clear current project's memory
|
|
971
|
+
const currentProjectMemory = memoryFiles.find((m: MemoryFile) => m.level === 'project');
|
|
972
|
+
if (currentProjectMemory) {
|
|
973
|
+
await fs.unlink(currentProjectMemory.path);
|
|
974
|
+
logger.success('Project memory cleared');
|
|
975
|
+
logger.info('Use /init to initialize if needed');
|
|
976
|
+
} else {
|
|
977
|
+
logger.warn('No project memory found for current directory');
|
|
978
|
+
}
|
|
979
|
+
return;
|
|
980
|
+
}
|
|
981
|
+
|
|
982
|
+
if (target === 'all') {
|
|
983
|
+
// Clear all memories including global
|
|
984
|
+
let cleared = 0;
|
|
985
|
+
for (const file of memoryFiles) {
|
|
986
|
+
await fs.unlink(file.path);
|
|
987
|
+
cleared++;
|
|
988
|
+
}
|
|
989
|
+
logger.success(`Cleared ${cleared} memory file(s)`);
|
|
990
|
+
|
|
991
|
+
// Recreate global memory
|
|
992
|
+
await this.memoryManager.saveMemory('# Global Context\n\nGlobal preferences and settings will be added here.', 'global');
|
|
993
|
+
logger.info('Recreated global memory');
|
|
994
|
+
logger.info('Use /init to initialize project memory if needed');
|
|
995
|
+
return;
|
|
996
|
+
}
|
|
997
|
+
|
|
998
|
+
if (target === 'global') {
|
|
999
|
+
// Clear global memory
|
|
1000
|
+
const globalMemory = memoryFiles.find((m: MemoryFile) => m.level === 'global');
|
|
1001
|
+
if (globalMemory) {
|
|
1002
|
+
await fs.unlink(globalMemory.path);
|
|
1003
|
+
logger.success('Global memory cleared');
|
|
1004
|
+
|
|
1005
|
+
// Recreate global memory
|
|
1006
|
+
await this.memoryManager.saveMemory('# Global Context\n\nGlobal preferences and settings will be added here.', 'global');
|
|
1007
|
+
logger.info('Recreated with default content');
|
|
1008
|
+
} else {
|
|
1009
|
+
logger.warn('No global memory found');
|
|
1010
|
+
}
|
|
1011
|
+
return;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
// Clear specific file by filename or path
|
|
1015
|
+
const targetMemory = memoryFiles.find((m: MemoryFile) =>
|
|
1016
|
+
path.basename(m.path) === target ||
|
|
1017
|
+
m.path === target
|
|
1018
|
+
);
|
|
1019
|
+
|
|
1020
|
+
if (targetMemory) {
|
|
1021
|
+
try {
|
|
1022
|
+
await fs.unlink(targetMemory.path);
|
|
1023
|
+
const levelLabel = targetMemory.level === 'global' ? 'Global' : 'Project';
|
|
1024
|
+
logger.success(`${levelLabel} memory cleared: ${path.basename(targetMemory.path)}`);
|
|
1025
|
+
|
|
1026
|
+
// Recreate global memory, not project memory
|
|
1027
|
+
if (targetMemory.level === 'global') {
|
|
1028
|
+
await this.memoryManager.saveMemory('# Global Context\n\nGlobal preferences and settings will be added here.', 'global');
|
|
1029
|
+
logger.info('Recreated with default content');
|
|
1030
|
+
} else {
|
|
1031
|
+
logger.info('Use /init to initialize if needed');
|
|
1032
|
+
}
|
|
1033
|
+
} catch (error) {
|
|
1034
|
+
logger.error('Failed to clear memory', error instanceof Error ? error.message : String(error));
|
|
1035
|
+
}
|
|
1036
|
+
} else {
|
|
1037
|
+
logger.warn(`Memory file not found: ${target}`, 'Use /memory show to see available files');
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
|
|
958
1041
|
private async showMemory(): Promise<void> {
|
|
959
1042
|
const memoryFiles = this.memoryManager.getMemoryFiles();
|
|
960
1043
|
|
|
@@ -963,14 +1046,20 @@ export class SlashCommandHandler {
|
|
|
963
1046
|
return;
|
|
964
1047
|
}
|
|
965
1048
|
|
|
1049
|
+
const memoriesDir = this.memoryManager.getMemoriesDir();
|
|
966
1050
|
logger.section('Memory Files');
|
|
1051
|
+
logger.info(`Directory: ${memoriesDir}`);
|
|
1052
|
+
console.log('');
|
|
967
1053
|
|
|
968
1054
|
memoryFiles.forEach((file: MemoryFile) => {
|
|
969
1055
|
const level = file.level === 'global' ? chalk.blue('[global]') :
|
|
970
1056
|
file.level === 'project' ? chalk.green('[project]') :
|
|
971
1057
|
chalk.yellow('[subdirectory]');
|
|
972
|
-
logger.info(` ${level} ${file.path}`);
|
|
1058
|
+
logger.info(` ${level} ${path.basename(file.path)}`);
|
|
973
1059
|
});
|
|
1060
|
+
|
|
1061
|
+
console.log('');
|
|
1062
|
+
// logger.info('Usage: /memory clear [global|current|all|<filename>]');
|
|
974
1063
|
}
|
|
975
1064
|
|
|
976
1065
|
private async addMemory(): Promise<void> {
|