@rdmind/rdmind 0.0.14 → 0.0.15-alpha.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/package.json +3 -3
- package/dist/src/generated/git-commit.d.ts +2 -2
- package/dist/src/generated/git-commit.js +2 -2
- package/dist/src/generated/git-commit.js.map +1 -1
- package/dist/src/ui/commands/directoryCommand.d.ts +1 -0
- package/dist/src/ui/commands/directoryCommand.js +155 -3
- package/dist/src/ui/commands/directoryCommand.js.map +1 -1
- package/dist/src/ui/utils/clipboardUtils.js +2 -2
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/dist/src/ui/commands/techDesignCommand.md +0 -296
package/dist/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rdmind/rdmind",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.15-alpha.1",
|
|
4
4
|
"description": "RDMind",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"access": "public"
|
|
28
28
|
},
|
|
29
29
|
"config": {
|
|
30
|
-
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.0.
|
|
30
|
+
"sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.0.15-alpha.1"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
33
|
"@google/genai": "1.9.0",
|
|
34
34
|
"@iarna/toml": "^2.2.5",
|
|
35
|
-
"@rdmind/rdmind-core": "^0.0.
|
|
35
|
+
"@rdmind/rdmind-core": "^0.0.15-alpha.1",
|
|
36
36
|
"@modelcontextprotocol/sdk": "^1.15.1",
|
|
37
37
|
"@types/update-notifier": "^6.0.8",
|
|
38
38
|
"command-exists": "^1.2.9",
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
* Copyright 2025 Google LLC
|
|
4
4
|
* SPDX-License-Identifier: Apache-2.0
|
|
5
5
|
*/
|
|
6
|
-
export declare const GIT_COMMIT_INFO = "
|
|
7
|
-
export declare const CLI_VERSION = "0.0.
|
|
6
|
+
export declare const GIT_COMMIT_INFO = "c3006dfb";
|
|
7
|
+
export declare const CLI_VERSION = "0.0.15-alpha.1";
|
|
@@ -5,6 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
// This file is auto-generated by the build script (scripts/generate-git-commit-info.js)
|
|
7
7
|
// Do not edit this file manually.
|
|
8
|
-
export const GIT_COMMIT_INFO = '
|
|
9
|
-
export const CLI_VERSION = '0.0.
|
|
8
|
+
export const GIT_COMMIT_INFO = 'c3006dfb';
|
|
9
|
+
export const CLI_VERSION = '0.0.15-alpha.1';
|
|
10
10
|
//# sourceMappingURL=git-commit.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"git-commit.js","sourceRoot":"","sources":["../../../src/generated/git-commit.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wFAAwF;AACxF,kCAAkC;AAClC,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAC;AAC1C,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC"}
|
|
@@ -7,6 +7,7 @@ import { CommandKind } from './types.js';
|
|
|
7
7
|
import { MessageType } from '../types.js';
|
|
8
8
|
import * as os from 'node:os';
|
|
9
9
|
import * as path from 'node:path';
|
|
10
|
+
import * as fs from 'node:fs/promises';
|
|
10
11
|
import { loadServerHierarchicalMemory } from '@rdmind/rdmind-core';
|
|
11
12
|
export function expandHomeDir(p) {
|
|
12
13
|
if (!p) {
|
|
@@ -84,22 +85,109 @@ export const directoryCommand = {
|
|
|
84
85
|
config.setGeminiMdFileCount(fileCount);
|
|
85
86
|
context.ui.setGeminiMdFileCount(fileCount);
|
|
86
87
|
}
|
|
88
|
+
// addItem(
|
|
89
|
+
// {
|
|
90
|
+
// type: MessageType.INFO,
|
|
91
|
+
// text: `Successfully added GEMINI.md files from the following directories if there are:\n- ${added.join('\n- ')}`,
|
|
92
|
+
// },
|
|
93
|
+
// Date.now(),
|
|
94
|
+
// );
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
errors.push(`Error refreshing memory: ${error.message}`);
|
|
98
|
+
}
|
|
99
|
+
if (added.length > 0) {
|
|
100
|
+
const gemini = config.getGeminiClient();
|
|
101
|
+
if (gemini) {
|
|
102
|
+
await gemini.addDirectoryContext();
|
|
103
|
+
}
|
|
87
104
|
addItem({
|
|
88
105
|
type: MessageType.INFO,
|
|
89
|
-
text: `Successfully added
|
|
106
|
+
text: `Successfully added directories:\n- ${added.join('\n- ')}`,
|
|
90
107
|
}, Date.now());
|
|
91
108
|
}
|
|
109
|
+
if (errors.length > 0) {
|
|
110
|
+
addItem({ type: MessageType.ERROR, text: errors.join('\n') }, Date.now());
|
|
111
|
+
}
|
|
112
|
+
return;
|
|
113
|
+
},
|
|
114
|
+
completion: async (_context, partialArg) => {
|
|
115
|
+
const partialPath = partialArg.split(',').pop().trim(); // 支持多路径,取最后一个做补全
|
|
116
|
+
try {
|
|
117
|
+
return await resolveCompletionPaths(partialPath, process.cwd());
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return [];
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
name: 'remove',
|
|
126
|
+
description: '从工作区移除目录,使用逗号分隔路径',
|
|
127
|
+
kind: CommandKind.BUILT_IN,
|
|
128
|
+
action: async (context, args) => {
|
|
129
|
+
const { ui: { addItem }, services: { config }, } = context;
|
|
130
|
+
const [...rest] = args.split(' ');
|
|
131
|
+
if (!config) {
|
|
132
|
+
addItem({
|
|
133
|
+
type: MessageType.ERROR,
|
|
134
|
+
text: 'Configuration is not available.',
|
|
135
|
+
}, Date.now());
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
const workspaceContext = config.getWorkspaceContext();
|
|
139
|
+
const pathsToRemove = rest
|
|
140
|
+
.join(' ')
|
|
141
|
+
.split(',')
|
|
142
|
+
.map((p) => p.trim())
|
|
143
|
+
.filter((p) => p);
|
|
144
|
+
if (pathsToRemove.length === 0) {
|
|
145
|
+
addItem({
|
|
146
|
+
type: MessageType.ERROR,
|
|
147
|
+
text: 'Please provide at least one path to remove.',
|
|
148
|
+
}, Date.now());
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
if (config.isRestrictiveSandbox()) {
|
|
152
|
+
return {
|
|
153
|
+
type: 'message',
|
|
154
|
+
messageType: 'error',
|
|
155
|
+
content: 'The /directory remove command is not supported in restrictive sandbox profiles. Please use --include-directories when starting the session instead.',
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
const removed = [];
|
|
159
|
+
const errors = [];
|
|
160
|
+
for (const pathToRemove of pathsToRemove) {
|
|
161
|
+
const fullPath = expandHomeDir(pathToRemove);
|
|
162
|
+
try {
|
|
163
|
+
workspaceContext.removeDirectory(fullPath);
|
|
164
|
+
removed.push(pathToRemove);
|
|
165
|
+
}
|
|
166
|
+
catch (e) {
|
|
167
|
+
const error = e;
|
|
168
|
+
errors.push(`Error removing '${pathToRemove}': ${error.message}`);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
if (config.shouldLoadMemoryFromIncludeDirectories()) {
|
|
173
|
+
const { memoryContent, fileCount } = await loadServerHierarchicalMemory(config.getWorkingDir(), config.getWorkspaceContext().getDirectories(), config.getDebugMode(), config.getFileService(), config.getExtensionContextFilePaths(), context.services.settings.merged.context?.importFormat ||
|
|
174
|
+
'tree', config.getFileFilteringOptions(), context.services.settings.merged.context?.discoveryMaxDirs);
|
|
175
|
+
config.setUserMemory(memoryContent);
|
|
176
|
+
config.setGeminiMdFileCount(fileCount);
|
|
177
|
+
context.ui.setGeminiMdFileCount(fileCount);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
92
180
|
catch (error) {
|
|
93
181
|
errors.push(`Error refreshing memory: ${error.message}`);
|
|
94
182
|
}
|
|
95
|
-
if (
|
|
183
|
+
if (removed.length > 0) {
|
|
96
184
|
const gemini = config.getGeminiClient();
|
|
97
185
|
if (gemini) {
|
|
98
186
|
await gemini.addDirectoryContext();
|
|
99
187
|
}
|
|
100
188
|
addItem({
|
|
101
189
|
type: MessageType.INFO,
|
|
102
|
-
text: `Successfully
|
|
190
|
+
text: `Successfully removed directories:\n- ${removed.join('\n- ')}`,
|
|
103
191
|
}, Date.now());
|
|
104
192
|
}
|
|
105
193
|
if (errors.length > 0) {
|
|
@@ -107,6 +195,14 @@ export const directoryCommand = {
|
|
|
107
195
|
}
|
|
108
196
|
return;
|
|
109
197
|
},
|
|
198
|
+
completion: async (context) => {
|
|
199
|
+
const { services: { config }, } = context;
|
|
200
|
+
if (!config) {
|
|
201
|
+
return [];
|
|
202
|
+
}
|
|
203
|
+
const workspaceContext = config.getWorkspaceContext();
|
|
204
|
+
return workspaceContext.getRemovableDirectories();
|
|
205
|
+
},
|
|
110
206
|
},
|
|
111
207
|
{
|
|
112
208
|
name: 'show',
|
|
@@ -132,4 +228,60 @@ export const directoryCommand = {
|
|
|
132
228
|
},
|
|
133
229
|
],
|
|
134
230
|
};
|
|
231
|
+
export async function resolveCompletionPaths(partialPath, baseDir) {
|
|
232
|
+
let resolvedPath;
|
|
233
|
+
let displayPrefix = partialPath;
|
|
234
|
+
if (!partialPath || partialPath.trim() === '') {
|
|
235
|
+
resolvedPath = baseDir;
|
|
236
|
+
displayPrefix = '';
|
|
237
|
+
}
|
|
238
|
+
else if (partialPath.startsWith('~')) {
|
|
239
|
+
resolvedPath = path.join(os.homedir(), partialPath.slice(1));
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
resolvedPath = path.isAbsolute(partialPath)
|
|
243
|
+
? path.resolve(partialPath || '/')
|
|
244
|
+
: path.resolve(baseDir, partialPath || '.');
|
|
245
|
+
}
|
|
246
|
+
let targetDir = resolvedPath;
|
|
247
|
+
let filterPrefix = '';
|
|
248
|
+
// 基于所给的部分目录名称进行过滤,例如输入/src/comp,则filterPrefix=comp, 需要去除/src/ ./ . 等场景
|
|
249
|
+
if (partialPath &&
|
|
250
|
+
!partialPath.endsWith('/') &&
|
|
251
|
+
!/^\.\/?$/.test(partialPath)) {
|
|
252
|
+
targetDir = path.dirname(resolvedPath);
|
|
253
|
+
filterPrefix = path.basename(resolvedPath);
|
|
254
|
+
}
|
|
255
|
+
const entries = await fs.readdir(targetDir, { withFileTypes: true });
|
|
256
|
+
return entries
|
|
257
|
+
.filter((entry) => entry.isDirectory())
|
|
258
|
+
.filter((entry) => !filterPrefix || entry.name.startsWith(filterPrefix))
|
|
259
|
+
.map((entry) => {
|
|
260
|
+
// 构造补全路径,保持用户输入风格的前缀,避免直接给绝对路径
|
|
261
|
+
let completionPath;
|
|
262
|
+
if (partialPath.endsWith('/')) {
|
|
263
|
+
completionPath = path.posix.join(displayPrefix, entry.name) + '/';
|
|
264
|
+
}
|
|
265
|
+
else {
|
|
266
|
+
// 去掉可能重复的部分
|
|
267
|
+
const prefixDir = displayPrefix.includes('/')
|
|
268
|
+
? path.posix.dirname(displayPrefix)
|
|
269
|
+
: '';
|
|
270
|
+
if (prefixDir && prefixDir !== '.') {
|
|
271
|
+
completionPath = path.posix.join(prefixDir, entry.name) + '/';
|
|
272
|
+
}
|
|
273
|
+
else {
|
|
274
|
+
completionPath = entry.name + '/';
|
|
275
|
+
if (displayPrefix &&
|
|
276
|
+
displayPrefix !== '.' &&
|
|
277
|
+
!displayPrefix.includes('/')) {
|
|
278
|
+
completionPath =
|
|
279
|
+
displayPrefix.replace(filterPrefix, entry.name) + '/';
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// 规范化成 posix 格式,避免 Windows 下反斜线
|
|
284
|
+
return completionPath.replace(/\\/g, '/');
|
|
285
|
+
});
|
|
286
|
+
}
|
|
135
287
|
//# sourceMappingURL=directoryCommand.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"directoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/directoryCommand.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"directoryCommand.js","sourceRoot":"","sources":["../../../../src/ui/commands/directoryCommand.tsx"],"names":[],"mappings":"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"}
|
|
@@ -38,7 +38,7 @@ export async function saveClipboardImage(targetDir) {
|
|
|
38
38
|
// Create a temporary directory for clipboard images within the target directory
|
|
39
39
|
// This avoids security restrictions on paths outside the target directory
|
|
40
40
|
const baseDir = targetDir || process.cwd();
|
|
41
|
-
const tempDir = path.join(baseDir, '.
|
|
41
|
+
const tempDir = path.join(baseDir, '.rdmind-clipboard');
|
|
42
42
|
await fs.mkdir(tempDir, { recursive: true });
|
|
43
43
|
// Generate a unique filename with timestamp
|
|
44
44
|
const timestamp = new Date().getTime();
|
|
@@ -103,7 +103,7 @@ export async function saveClipboardImage(targetDir) {
|
|
|
103
103
|
export async function cleanupOldClipboardImages(targetDir) {
|
|
104
104
|
try {
|
|
105
105
|
const baseDir = targetDir || process.cwd();
|
|
106
|
-
const tempDir = path.join(baseDir, '.
|
|
106
|
+
const tempDir = path.join(baseDir, '.rdmind-clipboard');
|
|
107
107
|
const files = await fs.readdir(tempDir);
|
|
108
108
|
const oneHourAgo = Date.now() - 60 * 60 * 1000;
|
|
109
109
|
for (const file of files) {
|