aws-runtime-bridge 1.9.40 → 1.9.45

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 (119) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +31 -4
  2. package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
  3. package/dist/adapter/AcodeSdkAdapter.js +382 -57
  4. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
  5. package/dist/adapter/ClaudeSdkAdapter.js +1 -0
  6. package/dist/adapter/OpencodeSdkAdapter.d.ts +19 -0
  7. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
  8. package/dist/adapter/OpencodeSdkAdapter.js +62 -0
  9. package/dist/adapter/types.d.ts +21 -6
  10. package/dist/adapter/types.d.ts.map +1 -1
  11. package/dist/adapter/types.js +10 -1
  12. package/dist/index.js +11 -0
  13. package/dist/routes/ai-sources.js +4 -1
  14. package/dist/routes/dashboard.d.ts.map +1 -1
  15. package/dist/routes/dashboard.js +1 -1
  16. package/dist/routes/file-browser.d.ts.map +1 -1
  17. package/dist/routes/file-browser.js +47 -1
  18. package/dist/routes/processes.d.ts.map +1 -1
  19. package/dist/routes/processes.js +7 -0
  20. package/dist/routes/runtime-binding.d.ts.map +1 -1
  21. package/dist/routes/runtime-binding.js +6 -3
  22. package/dist/routes/sessions.js +93 -5
  23. package/dist/routes/sub-agents.js +15 -1
  24. package/dist/routes/terminal.d.ts +15 -0
  25. package/dist/routes/terminal.d.ts.map +1 -1
  26. package/dist/routes/terminal.js +162 -5
  27. package/dist/services/acode-package.d.ts +8 -1
  28. package/dist/services/acode-package.d.ts.map +1 -1
  29. package/dist/services/acode-package.js +33 -4
  30. package/dist/services/aws-client-agent-mcp.d.ts.map +1 -1
  31. package/dist/services/aws-client-agent-mcp.js +11 -4
  32. package/dist/services/fileSnapshotStore.js +1 -1
  33. package/dist/services/legacy-path-migration.d.ts +3 -0
  34. package/dist/services/legacy-path-migration.d.ts.map +1 -0
  35. package/dist/services/legacy-path-migration.js +66 -0
  36. package/dist/services/lifecycle-state.d.ts.map +1 -1
  37. package/dist/services/lifecycle-state.js +1 -1
  38. package/dist/services/runtime-binding.d.ts +5 -0
  39. package/dist/services/runtime-binding.d.ts.map +1 -1
  40. package/dist/services/runtime-binding.js +33 -1
  41. package/dist/services/session-output.d.ts +7 -1
  42. package/dist/services/session-output.d.ts.map +1 -1
  43. package/dist/services/session-output.js +16 -2
  44. package/dist/services/workspace-files.d.ts +48 -0
  45. package/dist/services/workspace-files.d.ts.map +1 -1
  46. package/dist/services/workspace-files.js +285 -0
  47. package/package/acode/dist/built-in-file-tools.d.ts.map +1 -1
  48. package/package/acode/dist/built-in-file-tools.js +504 -3
  49. package/package/acode/dist/compaction.d.ts +43 -7
  50. package/package/acode/dist/compaction.d.ts.map +1 -1
  51. package/package/acode/dist/compaction.js +286 -31
  52. package/package/acode/dist/runtime.d.ts +130 -0
  53. package/package/acode/dist/runtime.d.ts.map +1 -1
  54. package/package/acode/dist/runtime.js +972 -71
  55. package/package/acode/dist/sub-agent-manager.d.ts +96 -1
  56. package/package/acode/dist/sub-agent-manager.d.ts.map +1 -1
  57. package/package/acode/dist/sub-agent-manager.js +293 -3
  58. package/package/acode/dist/sub-agent-store.d.ts +8 -1
  59. package/package/acode/dist/sub-agent-store.d.ts.map +1 -1
  60. package/package/acode/dist/sub-agent-store.js +55 -0
  61. package/package/acode/dist/sub-agent-tools.d.ts.map +1 -1
  62. package/package/acode/dist/sub-agent-tools.js +5 -4
  63. package/package/acode/dist/sub-agent-types.d.ts +4 -0
  64. package/package/acode/dist/sub-agent-types.d.ts.map +1 -1
  65. package/package/acode/dist/types.d.ts +19 -0
  66. package/package/acode/dist/types.d.ts.map +1 -1
  67. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +9 -0
  68. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
  69. package/package/aws-client-agent-mcp/dist/agent-client.js +69 -10
  70. package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
  71. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
  72. package/package/aws-client-agent-mcp/dist/config.js +4 -0
  73. package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
  74. package/package/aws-client-agent-mcp/dist/constants.d.ts +2 -0
  75. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -1
  76. package/package/aws-client-agent-mcp/dist/constants.js +3 -1
  77. package/package/aws-client-agent-mcp/dist/constants.js.map +1 -1
  78. package/package/aws-client-agent-mcp/dist/context-manager.d.ts +4 -1
  79. package/package/aws-client-agent-mcp/dist/context-manager.d.ts.map +1 -1
  80. package/package/aws-client-agent-mcp/dist/context-manager.js +6 -2
  81. package/package/aws-client-agent-mcp/dist/context-manager.js.map +1 -1
  82. package/package/aws-client-agent-mcp/dist/context-manager.test.js +5 -0
  83. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
  84. package/package/aws-client-agent-mcp/dist/http-client.d.ts +5 -0
  85. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
  86. package/package/aws-client-agent-mcp/dist/http-client.js +15 -1
  87. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
  88. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +102 -34
  89. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
  90. package/package/aws-client-agent-mcp/dist/mcp-server.js +637 -209
  91. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
  92. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +151 -51
  93. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
  94. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +7 -0
  95. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
  96. package/package/aws-client-agent-mcp/dist/mcp-tools.js +18 -0
  97. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
  98. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +32 -9
  99. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
  100. package/package/aws-client-agent-mcp/dist/memory-store.js +58 -19
  101. package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
  102. package/package/aws-client-agent-mcp/dist/memory-tools.js +3 -3
  103. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
  104. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +21 -1
  105. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -1
  106. package/package/aws-client-agent-mcp/dist/message-buffer.js +47 -21
  107. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -1
  108. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +13 -0
  109. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
  110. package/package/aws-client-agent-mcp/dist/server-memory-store.js +18 -0
  111. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
  112. package/package/aws-client-agent-mcp/dist/types.d.ts +9 -0
  113. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
  114. package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
  115. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +34 -1
  116. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
  117. package/package/aws-client-agent-mcp/dist/websocket-client.js +146 -18
  118. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
  119. package/package.json +1 -1
@@ -13,7 +13,7 @@ function generatePairingCode() {
13
13
  .replace(/(\d{3})(\d{3})/, "$1-$2");
14
14
  }
15
15
  function bindingDir() {
16
- return path.join(getRuntimeHomeDir(), ".agentswork", "runtime-bridge");
16
+ return path.join(getRuntimeHomeDir(), ".aws-bridge");
17
17
  }
18
18
  function bindingFile() {
19
19
  return path.join(bindingDir(), "binding.json");
@@ -331,3 +331,35 @@ export function clearRuntimeBinding() {
331
331
  fs.writeFileSync(bindingFile(), `${JSON.stringify(revokedState, null, 2)}\n`, { encoding: "utf8", mode: 0o600 });
332
332
  log.info("[runtime-bridge] runtime binding cleared");
333
333
  }
334
+ /**
335
+ * 将旧路径 ~/.agentswork/runtime-bridge/ 下的配置文件迁移到新路径 ~/.aws-bridge/。
336
+ * 仅在旧路径存在且新路径不存在时执行,避免覆盖已有配置。
337
+ */
338
+ export function migrateOldBindingDir() {
339
+ const homedir = getRuntimeHomeDir();
340
+ const oldDir = path.join(homedir, ".agentswork", "runtime-bridge");
341
+ const newDir = bindingDir();
342
+ if (oldDir === newDir)
343
+ return;
344
+ if (!fs.existsSync(oldDir))
345
+ return;
346
+ const files = ["binding.json", "runtime-tokens.properties"];
347
+ let migratedCount = 0;
348
+ for (const file of files) {
349
+ const oldFile = path.join(oldDir, file);
350
+ const newFile = path.join(newDir, file);
351
+ if (fs.existsSync(oldFile) && !fs.existsSync(newFile)) {
352
+ fs.mkdirSync(newDir, { recursive: true });
353
+ fs.copyFileSync(oldFile, newFile);
354
+ try {
355
+ fs.chmodSync(newFile, 0o600);
356
+ }
357
+ catch { /* ignore */ }
358
+ migratedCount++;
359
+ log.info(`[runtime-bridge] 已迁移 ${oldFile} → ${newFile}`);
360
+ }
361
+ }
362
+ if (migratedCount > 0) {
363
+ log.info(`[runtime-bridge] 已迁移 ${migratedCount} 个配置文件从 ${oldDir} 到 ${newDir}`);
364
+ }
365
+ }
@@ -41,6 +41,7 @@ export interface BridgeEventPayload {
41
41
  readonly filePath?: string;
42
42
  readonly eventType?: string;
43
43
  readonly size?: number;
44
+ readonly toolCallId?: string;
44
45
  }
45
46
  /** RingBufferEntry 的便捷导出 */
46
47
  export type { RingBufferEntry, RingBufferSlice };
@@ -90,6 +91,9 @@ export declare function sendStatus(agentId: string, sessionId: string | null, st
90
91
  inputTokens: number;
91
92
  outputTokens: number;
92
93
  contextLimit?: number;
94
+ maxOutput?: number;
95
+ inputLimit?: number;
96
+ compactionThreshold?: number;
93
97
  }, authOptions?: RuntimeCallbackAuthOptions, timestamp?: number, sourceEventType?: string): Promise<AxiosResponse<unknown> | undefined>;
94
98
  /**
95
99
  * 发送输出到调度器
@@ -106,8 +110,10 @@ export declare function sendOutput(agentId: string, output: string, sessionId: s
106
110
  * @param agentId - Agent ID
107
111
  * @param sessionId - SDK 会话 ID
108
112
  * @param questions - 结构化问题列表
113
+ * @param authOptions - 运行时鉴权选项
114
+ * @param toolCallId - 提问实例的唯一标识,用于前端区分同一会话内连续多次提问
109
115
  */
110
- export declare function sendQuestionRequest(agentId: string, sessionId: string, questions: unknown[], authOptions?: RuntimeCallbackAuthOptions): Promise<void>;
116
+ export declare function sendQuestionRequest(agentId: string, sessionId: string, questions: unknown[], authOptions?: RuntimeCallbackAuthOptions, toolCallId?: string): Promise<void>;
111
117
  export interface RuntimeFileChangedPayload {
112
118
  bridgeBaseUrl?: string;
113
119
  workspacePath: string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-output.d.ts","sourceRoot":"","sources":["../../src/services/session-output.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-output.d.ts","sourceRoot":"","sources":["../../src/services/session-output.ts"],"names":[],"mappings":"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"}
@@ -115,6 +115,17 @@ export async function sendStatus(agentId, sessionId, status, actionInfo, usage,
115
115
  if (usage.contextLimit) {
116
116
  payload.contextLimit = usage.contextLimit;
117
117
  }
118
+ // ★ 补传 maxOutput/inputLimit/compactionThreshold,前端 AgentContextPanel 直接用
119
+ // compactionThreshold 显示压缩点竖线(消除前端自算公式脱节)。
120
+ if (usage.maxOutput) {
121
+ payload.maxOutput = usage.maxOutput;
122
+ }
123
+ if (usage.inputLimit) {
124
+ payload.inputLimit = usage.inputLimit;
125
+ }
126
+ if (usage.compactionThreshold) {
127
+ payload.compactionThreshold = usage.compactionThreshold;
128
+ }
118
129
  }
119
130
  // 添加来源事件类型(用于前端时间线灰度区分,如 thinking / ai_request)
120
131
  if (sourceEventType) {
@@ -305,10 +316,12 @@ export async function sendOutput(agentId, output, sessionId, seq, metadata, auth
305
316
  * @param agentId - Agent ID
306
317
  * @param sessionId - SDK 会话 ID
307
318
  * @param questions - 结构化问题列表
319
+ * @param authOptions - 运行时鉴权选项
320
+ * @param toolCallId - 提问实例的唯一标识,用于前端区分同一会话内连续多次提问
308
321
  */
309
- export async function sendQuestionRequest(agentId, sessionId, questions, authOptions) {
322
+ export async function sendQuestionRequest(agentId, sessionId, questions, authOptions, toolCallId) {
310
323
  const callbackBaseUrl = resolveRuntimeCallbackBaseUrl(authOptions);
311
- const payload = { agentId, sessionId, questions };
324
+ const payload = { agentId, sessionId, questions, ...(toolCallId ? { toolCallId } : {}) };
312
325
  try {
313
326
  const headers = runtimeAuthHeaders(authOptions, callbackBaseUrl);
314
327
  if (!headers) {
@@ -340,6 +353,7 @@ export async function sendQuestionRequest(agentId, sessionId, questions, authOpt
340
353
  category: "question",
341
354
  agentId,
342
355
  sessionId,
356
+ ...(toolCallId ? { toolCallId } : {}),
343
357
  questions,
344
358
  };
345
359
  bridgeEventBuffer.append(eventPayload);
@@ -90,6 +90,44 @@ interface ChmodWorkspaceEntryParams extends WorkspacePathParams {
90
90
  mode: string;
91
91
  recursive?: boolean;
92
92
  }
93
+ export interface SearchWorkspaceFilesParams {
94
+ workspacePath: string;
95
+ keyword: string;
96
+ fileMask?: string;
97
+ ignoreCase?: boolean;
98
+ maxResults?: number;
99
+ mode?: 'content' | 'filename';
100
+ }
101
+ export interface WorkspaceSearchMatch {
102
+ filePath: string;
103
+ lineNumber: number;
104
+ lineContent: string;
105
+ matchStart: number;
106
+ matchEnd: number;
107
+ }
108
+ export interface SearchWorkspaceFilesResult {
109
+ workspacePath: string;
110
+ keyword: string;
111
+ totalFiles: number;
112
+ totalMatches: number;
113
+ matches: WorkspaceSearchMatch[];
114
+ truncated: boolean;
115
+ }
116
+ export interface ReplaceWorkspaceFilesParams {
117
+ workspacePath: string;
118
+ keyword: string;
119
+ replacement: string;
120
+ fileMask?: string;
121
+ ignoreCase?: boolean;
122
+ filePath?: string;
123
+ }
124
+ export interface ReplaceWorkspaceFilesResult {
125
+ workspacePath: string;
126
+ keyword: string;
127
+ replacement: string;
128
+ changedFiles: number;
129
+ changedMatches: number;
130
+ }
93
131
  export interface WorkspaceImageProperties {
94
132
  format: 'png' | 'jpeg' | 'gif' | 'webp';
95
133
  width: number;
@@ -216,5 +254,15 @@ export declare function streamWorkspaceDirectoryZip(directoryPath: string, outpu
216
254
  * 解压工作区中的归档文件到指定目录,支持 zip、tar、tar.gz/tgz 与单文件 gz。
217
255
  */
218
256
  export declare function extractWorkspaceArchive(params: ExtractWorkspaceArchiveParams): Promise<WorkspaceArchiveExtractResult>;
257
+ /**
258
+ * 在工作区范围内搜索文件内容。
259
+ * 主流程:安全解析工作区根 -> 递归遍历目录 -> 按文件掩码过滤 -> 逐行匹配关键词 -> 返回匹配列表。
260
+ */
261
+ export declare function searchWorkspaceFiles(params: SearchWorkspaceFilesParams): Promise<SearchWorkspaceFilesResult>;
262
+ /**
263
+ * 在工作区范围内批量替换文件内容。
264
+ * 可指定 filePath 只替换单个文件;未指定时递归替换所有匹配掩码的文件。
265
+ */
266
+ export declare function replaceWorkspaceFiles(params: ReplaceWorkspaceFilesParams): Promise<ReplaceWorkspaceFilesResult>;
219
267
  export {};
220
268
  //# sourceMappingURL=workspace-files.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-files.d.ts","sourceRoot":"","sources":["../../src/services/workspace-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace-files.d.ts","sourceRoot":"","sources":["../../src/services/workspace-files.ts"],"names":[],"mappings":"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"}
@@ -988,3 +988,288 @@ export async function extractWorkspaceArchive(params) {
988
988
  extractedEntries
989
989
  };
990
990
  }
991
+ /**
992
+ * 展开简单花括号模式,如 *.{ts,tsx} -> *.ts, *.tsx。
993
+ */
994
+ function expandBracePattern(pattern) {
995
+ const match = pattern.match(/^(.*?)\{([^}]+)\}(.*)$/);
996
+ if (!match) {
997
+ return [pattern];
998
+ }
999
+ const [, prefix, options, suffix] = match;
1000
+ return options.split(',').flatMap((option) => expandBracePattern(prefix + option.trim() + suffix));
1001
+ }
1002
+ /**
1003
+ * 判断文件名是否匹配简单 glob 掩码(支持 *、?、** 与 {a,b,c})。
1004
+ */
1005
+ function matchesFileMask(fileName, mask) {
1006
+ const normalizedMask = String(mask || '').trim();
1007
+ if (!normalizedMask || normalizedMask === '*' || normalizedMask === '*.*') {
1008
+ return true;
1009
+ }
1010
+ const normalizedFileName = fileName.toLowerCase();
1011
+ const patterns = expandBracePattern(normalizedMask.toLowerCase());
1012
+ return patterns.some((pattern) => {
1013
+ if (pattern === '*')
1014
+ return true;
1015
+ const regexSource = pattern
1016
+ .replace(/\./g, '\\.')
1017
+ .replace(/\*\*/g, '<<GLOBSTAR>>')
1018
+ .replace(/\*/g, '[^/]*')
1019
+ .replace(/\?/g, '[^/]')
1020
+ .replace(/<<GLOBSTAR>>/g, '.*');
1021
+ const regex = new RegExp(`^${regexSource}$`);
1022
+ return regex.test(normalizedFileName);
1023
+ });
1024
+ }
1025
+ /**
1026
+ * 跳过明显不适合文本搜索/替换的目录。
1027
+ */
1028
+ function isSkippedSearchDirectory(name) {
1029
+ return name === '.git' || name === 'node_modules' || name === '.svn' || name === '.hg';
1030
+ }
1031
+ const SEARCH_MAX_FILE_BYTES = 10 * 1024 * 1024;
1032
+ const SEARCH_DEFAULT_MAX_RESULTS = 1000;
1033
+ /**
1034
+ * 在工作区范围内搜索文件内容。
1035
+ * 主流程:安全解析工作区根 -> 递归遍历目录 -> 按文件掩码过滤 -> 逐行匹配关键词 -> 返回匹配列表。
1036
+ */
1037
+ export async function searchWorkspaceFiles(params) {
1038
+ const { workspaceRoot } = await resolveWorkspaceRoots(params.workspacePath);
1039
+ const keyword = String(params.keyword || '').trim();
1040
+ if (!keyword) {
1041
+ throw new Error('keyword is required');
1042
+ }
1043
+ const ignoreCase = Boolean(params.ignoreCase);
1044
+ const fileMask = String(params.fileMask || '').trim();
1045
+ const maxResults = typeof params.maxResults === 'number' && params.maxResults > 0
1046
+ ? params.maxResults
1047
+ : SEARCH_DEFAULT_MAX_RESULTS;
1048
+ const searchKeyword = ignoreCase ? keyword.toLowerCase() : keyword;
1049
+ const mode = params.mode === 'filename' ? 'filename' : 'content';
1050
+ const isFilenameMode = mode === 'filename';
1051
+ const matches = [];
1052
+ let totalFiles = 0;
1053
+ let truncated = false;
1054
+ async function walk(directoryPath) {
1055
+ if (truncated)
1056
+ return;
1057
+ let entries;
1058
+ try {
1059
+ entries = await fs.readdir(directoryPath, { withFileTypes: true });
1060
+ }
1061
+ catch {
1062
+ return;
1063
+ }
1064
+ for (const entry of entries) {
1065
+ if (truncated)
1066
+ return;
1067
+ const entryPath = ensureInsideWorkspace(workspaceRoot, path.join(directoryPath, entry.name));
1068
+ if (entry.isSymbolicLink())
1069
+ continue;
1070
+ if (entry.isDirectory()) {
1071
+ if (isSkippedSearchDirectory(entry.name))
1072
+ continue;
1073
+ await walk(entryPath);
1074
+ continue;
1075
+ }
1076
+ if (!entry.isFile())
1077
+ continue;
1078
+ if (fileMask && !matchesFileMask(entry.name, fileMask))
1079
+ continue;
1080
+ totalFiles += 1;
1081
+ let stat;
1082
+ try {
1083
+ stat = await fs.stat(entryPath);
1084
+ }
1085
+ catch {
1086
+ continue;
1087
+ }
1088
+ if (stat.size > SEARCH_MAX_FILE_BYTES)
1089
+ continue;
1090
+ if (isFilenameMode) {
1091
+ const searchName = ignoreCase ? entry.name.toLowerCase() : entry.name;
1092
+ const matchIndex = searchName.indexOf(searchKeyword);
1093
+ if (matchIndex !== -1) {
1094
+ matches.push({
1095
+ filePath: toDisplayPath(entryPath),
1096
+ lineNumber: 0,
1097
+ lineContent: entry.name,
1098
+ matchStart: matchIndex,
1099
+ matchEnd: matchIndex + keyword.length
1100
+ });
1101
+ if (matches.length >= maxResults) {
1102
+ truncated = true;
1103
+ return;
1104
+ }
1105
+ }
1106
+ continue;
1107
+ }
1108
+ let content;
1109
+ try {
1110
+ content = await fs.readFile(entryPath, 'utf-8');
1111
+ }
1112
+ catch {
1113
+ continue;
1114
+ }
1115
+ const lines = content.split(/\r?\n/);
1116
+ for (let lineIndex = 0; lineIndex < lines.length; lineIndex += 1) {
1117
+ const line = lines[lineIndex];
1118
+ const searchLine = ignoreCase ? line.toLowerCase() : line;
1119
+ let searchIndex = 0;
1120
+ while (true) {
1121
+ const matchIndex = searchLine.indexOf(searchKeyword, searchIndex);
1122
+ if (matchIndex === -1)
1123
+ break;
1124
+ matches.push({
1125
+ filePath: toDisplayPath(entryPath),
1126
+ lineNumber: lineIndex + 1,
1127
+ lineContent: line,
1128
+ matchStart: matchIndex,
1129
+ matchEnd: matchIndex + keyword.length
1130
+ });
1131
+ if (matches.length >= maxResults) {
1132
+ truncated = true;
1133
+ return;
1134
+ }
1135
+ searchIndex = matchIndex + 1;
1136
+ }
1137
+ }
1138
+ }
1139
+ }
1140
+ await walk(workspaceRoot);
1141
+ return {
1142
+ workspacePath: toDisplayPath(workspaceRoot),
1143
+ keyword,
1144
+ totalFiles,
1145
+ totalMatches: matches.length,
1146
+ matches,
1147
+ truncated
1148
+ };
1149
+ }
1150
+ /**
1151
+ * 在单个文件内执行安全替换,只写入确实有变化的内容。
1152
+ */
1153
+ async function replaceInFile(workspaceRoot, filePath, keyword, replacement, ignoreCase) {
1154
+ let content;
1155
+ try {
1156
+ content = await fs.readFile(filePath, 'utf-8');
1157
+ }
1158
+ catch {
1159
+ return { changed: false, count: 0 };
1160
+ }
1161
+ const originalContent = content;
1162
+ let count = 0;
1163
+ if (ignoreCase) {
1164
+ const lowerKeyword = keyword.toLowerCase();
1165
+ let index = 0;
1166
+ while (true) {
1167
+ const lowerContent = content.toLowerCase();
1168
+ const matchIndex = lowerContent.indexOf(lowerKeyword, index);
1169
+ if (matchIndex === -1)
1170
+ break;
1171
+ content = content.slice(0, matchIndex) + replacement + content.slice(matchIndex + keyword.length);
1172
+ count += 1;
1173
+ const step = replacement.length || 1;
1174
+ index = matchIndex + step;
1175
+ }
1176
+ }
1177
+ else {
1178
+ let index = 0;
1179
+ while (true) {
1180
+ const matchIndex = content.indexOf(keyword, index);
1181
+ if (matchIndex === -1)
1182
+ break;
1183
+ content = content.slice(0, matchIndex) + replacement + content.slice(matchIndex + keyword.length);
1184
+ count += 1;
1185
+ const step = replacement.length || 1;
1186
+ index = matchIndex + step;
1187
+ }
1188
+ }
1189
+ if (content === originalContent) {
1190
+ return { changed: false, count: 0 };
1191
+ }
1192
+ await ensureWritableParentInsideWorkspace(workspaceRoot, filePath);
1193
+ await fs.writeFile(filePath, content, 'utf-8');
1194
+ return { changed: true, count };
1195
+ }
1196
+ /**
1197
+ * 在工作区范围内批量替换文件内容。
1198
+ * 可指定 filePath 只替换单个文件;未指定时递归替换所有匹配掩码的文件。
1199
+ */
1200
+ export async function replaceWorkspaceFiles(params) {
1201
+ const { workspaceRoot } = await resolveWorkspaceRoots(params.workspacePath);
1202
+ const keyword = String(params.keyword || '').trim();
1203
+ if (!keyword) {
1204
+ throw new Error('keyword is required');
1205
+ }
1206
+ const replacement = String(params.replacement ?? '');
1207
+ const ignoreCase = Boolean(params.ignoreCase);
1208
+ const fileMask = String(params.fileMask || '').trim();
1209
+ const singleFilePath = String(params.filePath || '').trim();
1210
+ let changedFiles = 0;
1211
+ let changedMatches = 0;
1212
+ if (singleFilePath) {
1213
+ const { resolvedFilePath } = await resolveFileTarget({
1214
+ workspacePath: params.workspacePath,
1215
+ filePath: singleFilePath
1216
+ });
1217
+ const result = await replaceInFile(workspaceRoot, resolvedFilePath, keyword, replacement, ignoreCase);
1218
+ if (result.changed) {
1219
+ changedFiles = 1;
1220
+ changedMatches = result.count;
1221
+ }
1222
+ return {
1223
+ workspacePath: toDisplayPath(workspaceRoot),
1224
+ keyword,
1225
+ replacement,
1226
+ changedFiles,
1227
+ changedMatches
1228
+ };
1229
+ }
1230
+ async function walk(directoryPath) {
1231
+ let entries;
1232
+ try {
1233
+ entries = await fs.readdir(directoryPath, { withFileTypes: true });
1234
+ }
1235
+ catch {
1236
+ return;
1237
+ }
1238
+ for (const entry of entries) {
1239
+ const entryPath = ensureInsideWorkspace(workspaceRoot, path.join(directoryPath, entry.name));
1240
+ if (entry.isSymbolicLink())
1241
+ continue;
1242
+ if (entry.isDirectory()) {
1243
+ if (isSkippedSearchDirectory(entry.name))
1244
+ continue;
1245
+ await walk(entryPath);
1246
+ continue;
1247
+ }
1248
+ if (!entry.isFile())
1249
+ continue;
1250
+ if (fileMask && !matchesFileMask(entry.name, fileMask))
1251
+ continue;
1252
+ try {
1253
+ const stat = await fs.stat(entryPath);
1254
+ if (stat.size > SEARCH_MAX_FILE_BYTES)
1255
+ continue;
1256
+ }
1257
+ catch {
1258
+ continue;
1259
+ }
1260
+ const result = await replaceInFile(workspaceRoot, entryPath, keyword, replacement, ignoreCase);
1261
+ if (result.changed) {
1262
+ changedFiles += 1;
1263
+ changedMatches += result.count;
1264
+ }
1265
+ }
1266
+ }
1267
+ await walk(workspaceRoot);
1268
+ return {
1269
+ workspacePath: toDisplayPath(workspaceRoot),
1270
+ keyword,
1271
+ replacement,
1272
+ changedFiles,
1273
+ changedMatches
1274
+ };
1275
+ }
@@ -1 +1 @@
1
- {"version":3,"file":"built-in-file-tools.d.ts","sourceRoot":"","sources":["../src/built-in-file-tools.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,OAAO,CACL,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAufD,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,EAAE,CAQpB"}
1
+ {"version":3,"file":"built-in-file-tools.d.ts","sourceRoot":"","sources":["../src/built-in-file-tools.ts"],"names":[],"mappings":"AAKA,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AAiC1C,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,IAAI,GACJ,SAAS,EAAE,GACX;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AACjC,MAAM,MAAM,UAAU,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,UAAU,CAAC;IACxB,OAAO,CACL,IAAI,EAAE,UAAU,EAChB,OAAO,CAAC,EAAE,gCAAgC,GACzC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B;AAokCD,wBAAgB,sBAAsB,CACpC,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE,MAAM,GACf,gBAAgB,EAAE,CASpB"}