aws-runtime-bridge 1.9.22 → 1.9.30

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 (50) hide show
  1. package/dist/adapter/AcodeSdkAdapter.d.ts +3 -0
  2. package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
  3. package/dist/adapter/AcodeSdkAdapter.js +9 -0
  4. package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
  5. package/dist/adapter/OpencodeSdkAdapter.js +11 -3
  6. package/dist/adapter/types.d.ts +6 -0
  7. package/dist/adapter/types.d.ts.map +1 -1
  8. package/dist/routes/git.d.ts +42 -2
  9. package/dist/routes/git.d.ts.map +1 -1
  10. package/dist/routes/git.js +580 -61
  11. package/dist/routes/git.test.js +171 -6
  12. package/dist/routes/terminal.d.ts.map +1 -1
  13. package/dist/routes/terminal.js +175 -0
  14. package/package/acode/dist/runtime.d.ts.map +1 -1
  15. package/package/acode/dist/runtime.js +19 -5
  16. package/package/acode/dist/types.d.ts +6 -0
  17. package/package/acode/dist/types.d.ts.map +1 -1
  18. package/package/aws-client-agent-mcp/dist/context-manager.test.js +4 -1
  19. package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
  20. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +69 -6
  21. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
  22. package/package/aws-client-agent-mcp/dist/mcp-server.js +374 -105
  23. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
  24. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +12 -3
  25. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
  26. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +17 -1
  27. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
  28. package/package/aws-client-agent-mcp/dist/mcp-tools.js +44 -8
  29. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
  30. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +49 -2
  31. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
  32. package/package/aws-client-agent-mcp/dist/memory-store.js +116 -14
  33. package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
  34. package/package/aws-client-agent-mcp/dist/memory-store.test.js +82 -5
  35. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -1
  36. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +11 -1
  37. package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
  38. package/package/aws-client-agent-mcp/dist/memory-tools.js +37 -11
  39. package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
  40. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +10 -1
  41. package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
  42. package/package/aws-client-agent-mcp/dist/server-memory-store.js +16 -4
  43. package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
  44. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
  45. package/package/aws-client-agent-mcp/dist/status-reporter.js +0 -1
  46. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
  47. package/package/aws-client-agent-mcp/dist/types.d.ts +9 -0
  48. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
  49. package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
  50. package/package.json +1 -1
@@ -4,7 +4,7 @@ import { tmpdir } from 'node:os';
4
4
  import path from 'node:path';
5
5
  import { promisify } from 'node:util';
6
6
  import { describe, expect, it, vi } from 'vitest';
7
- import { callAiForCommitMessage, createAgentsWorkStashSnapshotRef, createScopedFilePathspecArgs, createScopedGitPathspecArgs, mergeGitDiffSummaryFiles, normalizeGitCommitMessage, parseGitDiffSummary, parseGitStashListLine, parseGitStatusStagedPaths, parseLatestGitStash, persistAgentsWorkStashSnapshotRef, } from './git.js';
7
+ import { callAiForCommitMessage, createAgentsWorkStashSnapshotRef, createScopedFilePathspecArgs, createScopedGitPathspecArgs, extractOpenAiStreamDelta, mergeGitDiffSummaryFiles, normalizeGitCommitMessage, parseGitDiffSummary, parseGitStashListLine, sanitizeCommitMessage, streamAiForCommitMessage, parseGitStatusStagedPaths, parseLatestGitStash, persistAgentsWorkStashSnapshotRef, } from './git.js';
8
8
  const execFileAsync = promisify(execFile);
9
9
  async function runGit(cwd, args) {
10
10
  const result = await execFileAsync('git', [...args], { cwd });
@@ -134,14 +134,24 @@ describe('callAiForCommitMessage', () => {
134
134
  const result = await callAiForCommitMessage('https://api.openai.com/v1', 'sk-test-key', 'gpt-4o', 'diff content here');
135
135
  expect(result).toBe('feat(readme): add new section');
136
136
  });
137
- it('should return fallback message when AI response content is empty', async () => {
137
+ it('should return fallback commit message when AI response content is empty', async () => {
138
138
  const mockResponse = { data: { choices: [{ message: { content: '' } }] } };
139
139
  const axiosModule = await import('axios');
140
140
  vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce(mockResponse);
141
141
  const result = await callAiForCommitMessage('https://api.openai.com/v1', 'sk-test-key', 'gpt-4o', 'diff content here');
142
- expect(result).toBe('AI 生成失败:返回内容为空');
142
+ // 空响应走 sanitize 兜底
143
+ expect(result).toBe('chore: update staged changes');
143
144
  });
144
- it('should use correct API endpoint and headers', async () => {
145
+ it('should sanitize away meta-language prefixes from AI response', async () => {
146
+ const mockResponse = {
147
+ data: { choices: [{ message: { content: '我们被问到根据 diff 生成提交信息:feat(readme): 新增 README 章节' } }] }
148
+ };
149
+ const axiosModule = await import('axios');
150
+ vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce(mockResponse);
151
+ const result = await callAiForCommitMessage('https://api.openai.com/v1', 'sk-test-key', 'gpt-4o', 'diff content here');
152
+ expect(result).toBe('feat(readme): 新增 README 章节');
153
+ });
154
+ it('should use correct API endpoint, headers and tightened limits', async () => {
145
155
  const axiosModule = await import('axios');
146
156
  const postSpy = vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce({
147
157
  data: { choices: [{ message: { content: 'test message' } }] },
@@ -149,12 +159,13 @@ describe('callAiForCommitMessage', () => {
149
159
  await callAiForCommitMessage('https://custom.ai.com/api/v1', 'sk-custom-key', 'custom-model', 'test diff');
150
160
  expect(postSpy).toHaveBeenCalledWith('https://custom.ai.com/api/v1/chat/completions', expect.objectContaining({
151
161
  model: 'custom-model',
162
+ stream: false,
152
163
  messages: expect.arrayContaining([
153
164
  expect.objectContaining({ role: 'system' }),
154
165
  expect.objectContaining({ role: 'user' }),
155
166
  ]),
156
- max_tokens: 300,
157
- temperature: 0.3,
167
+ max_tokens: 200,
168
+ temperature: 0.2,
158
169
  }), expect.objectContaining({
159
170
  headers: expect.objectContaining({
160
171
  'Content-Type': 'application/json',
@@ -163,3 +174,157 @@ describe('callAiForCommitMessage', () => {
163
174
  }));
164
175
  });
165
176
  });
177
+ describe('sanitizeCommitMessage', () => {
178
+ it('returns a clean commit message unchanged', () => {
179
+ expect(sanitizeCommitMessage('feat(api): 增加用户登录接口')).toBe('feat(api): 增加用户登录接口');
180
+ });
181
+ it('strips "我们被问到" style meta-language prefix', () => {
182
+ expect(sanitizeCommitMessage('我们被问到根据 diff 生成提交信息:feat(api): 增加用户登录接口'))
183
+ .toBe('feat(api): 增加用户登录接口');
184
+ });
185
+ it('strips "好的" / "Sure" / "Here is" prefixes', () => {
186
+ expect(sanitizeCommitMessage('好的,以下是提交信息:feat(api): xxx')).toBe('feat(api): xxx');
187
+ expect(sanitizeCommitMessage('Sure, here is your commit message:\nfeat(api): xxx'))
188
+ .toBe('feat(api): xxx');
189
+ });
190
+ it('strips "根据" / "以下是" Chinese meta-language prefixes', () => {
191
+ expect(sanitizeCommitMessage('根据您提供的 diff,以下是符合 conventional commit 规范的提交信息:feat(api): xxx'))
192
+ .toBe('feat(api): xxx');
193
+ expect(sanitizeCommitMessage('以下是生成的提交信息:fix(api): xxx')).toBe('fix(api): xxx');
194
+ });
195
+ it('strips markdown code block fences', () => {
196
+ expect(sanitizeCommitMessage('```text\nfeat(api): xxx\n```')).toBe('feat(api): xxx');
197
+ });
198
+ it('truncates at first blank line to drop meta-language body', () => {
199
+ expect(sanitizeCommitMessage('feat(api): xxx\n\n我们刚才生成的提交信息是上面这一行'))
200
+ .toBe('feat(api): xxx');
201
+ });
202
+ it('keeps only the first line when the first line is suspiciously long', () => {
203
+ const long = 'a'.repeat(150);
204
+ expect(sanitizeCommitMessage(`${long}\n\nbody content`)).toBe(long);
205
+ });
206
+ it('returns fallback when input is empty after sanitization', () => {
207
+ expect(sanitizeCommitMessage('')).toBe('chore: update staged changes');
208
+ expect(sanitizeCommitMessage(' \n\n ')).toBe('chore: update staged changes');
209
+ });
210
+ it('returns fallback for pure meta-language output', () => {
211
+ // 反复剥离前缀后为空 → 兜底
212
+ expect(sanitizeCommitMessage('我们被问到根据 diff 生成提交信息,好的以下是:'))
213
+ .toBe('chore: update staged changes');
214
+ });
215
+ it('handles loose type style without scope', () => {
216
+ expect(sanitizeCommitMessage('fix: 修复登录问题')).toBe('fix: 修复登录问题');
217
+ expect(sanitizeCommitMessage('feat: 新增用户功能')).toBe('feat: 新增用户功能');
218
+ });
219
+ it('handles loose type style without space after colon', () => {
220
+ expect(sanitizeCommitMessage('chore:更新依赖')).toBe('chore:更新依赖');
221
+ });
222
+ it('preserves Chinese-only description without conventional type', () => {
223
+ expect(sanitizeCommitMessage('添加用户登录功能')).toBe('添加用户登录功能');
224
+ expect(sanitizeCommitMessage('修复登录页面样式问题')).toBe('修复登录页面样式问题');
225
+ });
226
+ it('preserves English commit description without conventional type', () => {
227
+ expect(sanitizeCommitMessage('Add user login feature')).toBe('Add user login feature');
228
+ expect(sanitizeCommitMessage('Fix login page styling')).toBe('Fix login page styling');
229
+ });
230
+ it('strips meta prefix before loose type pattern', () => {
231
+ expect(sanitizeCommitMessage('我们被问到根据 diff 生成提交信息,以下是:fix: 修复 bug'))
232
+ .toBe('fix: 修复 bug');
233
+ });
234
+ it('strips meta prefix before Chinese-only description', () => {
235
+ expect(sanitizeCommitMessage('我们被问到根据 diff 生成的提交信息是:添加新功能'))
236
+ .toBe('添加新功能');
237
+ expect(sanitizeCommitMessage('好的,以下是:更新用户配置'))
238
+ .toBe('更新用户配置');
239
+ });
240
+ });
241
+ describe('extractOpenAiStreamDelta', () => {
242
+ it('extracts content from a single SSE data line', () => {
243
+ const chunk = 'data: {"choices":[{"delta":{"content":"feat"}}]}';
244
+ expect(extractOpenAiStreamDelta(chunk)).toBe('feat');
245
+ });
246
+ it('returns empty string for [DONE] sentinel', () => {
247
+ expect(extractOpenAiStreamDelta('data: [DONE]')).toBe('');
248
+ });
249
+ it('skips non-data lines and aggregates multiple data lines', () => {
250
+ const chunk = [
251
+ 'event: message',
252
+ 'data: {"choices":[{"delta":{"content":"feat"}}]}',
253
+ 'data: {"choices":[{"delta":{"content":"(api)"}}]}',
254
+ '',
255
+ ].join('\n');
256
+ expect(extractOpenAiStreamDelta(chunk)).toBe('feat(api)');
257
+ });
258
+ it('skips invalid JSON lines without throwing', () => {
259
+ const chunk = 'data: not-valid-json\ndata: {"choices":[{"delta":{"content":"x"}}]}';
260
+ expect(extractOpenAiStreamDelta(chunk)).toBe('x');
261
+ });
262
+ it('returns empty when no data lines present', () => {
263
+ expect(extractOpenAiStreamDelta('event: foo\n')).toBe('');
264
+ });
265
+ });
266
+ describe('streamAiForCommitMessage', () => {
267
+ it('emits deltas and returns sanitized final message', async () => {
268
+ const { Readable } = await import('node:stream');
269
+ const sseChunks = [
270
+ 'data: {"choices":[{"delta":{"content":"feat"}}]}\n\n',
271
+ 'data: {"choices":[{"delta":{"content":"(api):"}}]}\n\n',
272
+ 'data: {"choices":[{"delta":{"content":" 增加用户登录"}}]}\n\n',
273
+ 'data: [DONE]\n\n',
274
+ ];
275
+ const stream = Readable.from(sseChunks.map(c => Buffer.from(c, 'utf8')));
276
+ const axiosModule = await import('axios');
277
+ vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce({ data: stream });
278
+ const deltas = [];
279
+ const final = await streamAiForCommitMessage('https://api.openai.com/v1', 'sk-test', 'gpt-4o', 'diff', (delta) => { deltas.push(delta); });
280
+ expect(deltas.join('')).toBe('feat(api): 增加用户登录');
281
+ expect(final).toBe('feat(api): 增加用户登录');
282
+ });
283
+ it('returns fallback when stream produces no content', async () => {
284
+ const { Readable } = await import('node:stream');
285
+ const stream = Readable.from([
286
+ Buffer.from('data: [DONE]\n\n', 'utf8'),
287
+ ]);
288
+ const axiosModule = await import('axios');
289
+ vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce({ data: stream });
290
+ const final = await streamAiForCommitMessage('https://api.openai.com/v1', 'sk-test', 'gpt-4o', 'diff', () => { });
291
+ expect(final).toBe('chore: update staged changes');
292
+ });
293
+ it('strips meta-language prefix from accumulated stream', async () => {
294
+ const { Readable } = await import('node:stream');
295
+ // 模型边输出边"思考",先说废话,后输出真实 commit
296
+ const sseChunks = [
297
+ 'data: {"choices":[{"delta":{"content":"我们被问到"}}]}\n\n',
298
+ 'data: {"choices":[{"delta":{"content":"根据 diff"}}]}\n\n',
299
+ 'data: {"choices":[{"delta":{"content":",feat(api): 增加用户"}}]}\n\n',
300
+ 'data: [DONE]\n\n',
301
+ ];
302
+ const stream = Readable.from(sseChunks.map(c => Buffer.from(c, 'utf8')));
303
+ const axiosModule = await import('axios');
304
+ vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce({ data: stream });
305
+ const accumulatedMessages = [];
306
+ const final = await streamAiForCommitMessage('https://api.openai.com/v1', 'sk-test', 'gpt-4o', 'diff', (_delta, accumulated) => { accumulatedMessages.push(accumulated); });
307
+ // 最终应只剩 commit message
308
+ expect(final).toBe('feat(api): 增加用户');
309
+ // 倒数几次 onDelta 调用中应该已经能拿到清洗后的结果
310
+ expect(accumulatedMessages[accumulatedMessages.length - 1]).toBe('feat(api): 增加用户');
311
+ });
312
+ it('uses streaming parameters in the request', async () => {
313
+ const { Readable } = await import('node:stream');
314
+ const stream = Readable.from([Buffer.from('data: [DONE]\n\n', 'utf8')]);
315
+ const axiosModule = await import('axios');
316
+ const postSpy = vi.spyOn(axiosModule.default, 'post').mockResolvedValueOnce({ data: stream });
317
+ await streamAiForCommitMessage('https://api.openai.com/v1', 'sk-test', 'gpt-4o', 'diff', () => { });
318
+ expect(postSpy).toHaveBeenCalledWith('https://api.openai.com/v1/chat/completions', expect.objectContaining({
319
+ model: 'gpt-4o',
320
+ stream: true,
321
+ max_tokens: 200,
322
+ temperature: 0.2,
323
+ }), expect.objectContaining({
324
+ responseType: 'stream',
325
+ headers: expect.objectContaining({
326
+ Accept: 'text/event-stream',
327
+ }),
328
+ }));
329
+ });
330
+ });
@@ -1 +1 @@
1
- {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/routes/terminal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/routes/terminal.ts"],"names":[],"mappings":"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"}
@@ -56,6 +56,129 @@ function sanitizeInstanceAiConfig(value) {
56
56
  }
57
57
  const AI_REQUEST_HEADERS_MARKER = "\n\n请求头:\n";
58
58
  const startingAgents = new Set();
59
+ // ============ 启动记忆加载 ============
60
+ /**
61
+ * 从工作区的 .agentswork/memory/ 目录加载 task_list 和 recently_memory,
62
+ * 格式化为可注入 System 3 的文本。
63
+ *
64
+ * 主流程:遍历目录下所有 domain JSON 文件 -> 提取 task_list/recently_memory 记录 ->
65
+ * 按类型分组排序 -> 返回格式化文本;目录不存在或解析失败时返回 undefined。
66
+ */
67
+ async function loadAgentStartupMemories(workspacePath, options) {
68
+ // 收集记录
69
+ const taskList = [];
70
+ const recentMemories = [];
71
+ // 1) 尝试从本地 .agentswork/memory/ 加载
72
+ const memoryDir = path.join(workspacePath, ".agentswork", "memory");
73
+ try {
74
+ const entries = await fs.readdir(memoryDir);
75
+ const jsonFiles = entries.filter(e => e.endsWith(".json"));
76
+ // 并行读取所有 JSON 文件,消除 N+1 串行 I/O
77
+ const parsedResults = await Promise.all(jsonFiles.map(async (entry) => {
78
+ try {
79
+ const raw = await fs.readFile(path.join(memoryDir, entry), "utf-8");
80
+ return JSON.parse(raw);
81
+ }
82
+ catch {
83
+ log.warn("[loadAgentStartupMemories] Failed to parse memory file: %s", path.join(memoryDir, entry));
84
+ return null;
85
+ }
86
+ }));
87
+ // 汇总解析结果
88
+ for (const parsed of parsedResults) {
89
+ if (!parsed?.by_uri)
90
+ continue;
91
+ for (const record of Object.values(parsed.by_uri)) {
92
+ const type = record.memory_type || "memory";
93
+ const content = (record.content || "").trim();
94
+ if (!content)
95
+ continue;
96
+ if (type === "task_list") {
97
+ taskList.push({ title: record.title, content, uri: record.uri || "" });
98
+ }
99
+ else if (type === "recently_memory") {
100
+ recentMemories.push({ title: record.title, content, uri: record.uri || "" });
101
+ }
102
+ }
103
+ }
104
+ }
105
+ catch {
106
+ // 目录不存在(首次启动正常)或权限拒绝等错误,记录 debug 日志便于排障
107
+ log.debug("[loadAgentStartupMemories] 无法读取记忆目录: %s", memoryDir);
108
+ }
109
+ // 2) 本地未找到且 server 地址可用时,尝试从 server MCP 加载
110
+ if (taskList.length === 0 && recentMemories.length === 0
111
+ && options?.schedulerBaseUrl && options?.runtimeAccessToken && options?.agentId) {
112
+ const mcpUrl = `${options.schedulerBaseUrl.replace(/\/+$/, "")}/mcp/call`;
113
+ const headers = {
114
+ "Content-Type": "application/json",
115
+ "X-Runtime-Token": options.runtimeAccessToken,
116
+ Authorization: `Bearer ${options.runtimeAccessToken}`,
117
+ };
118
+ // 并行请求 task_list 和 recently_memory
119
+ const typesToFetch = ["task_list", "recently_memory"];
120
+ const results = await Promise.allSettled(typesToFetch.map((memoryType) => fetch(mcpUrl, {
121
+ method: "POST",
122
+ headers,
123
+ body: JSON.stringify({
124
+ tool: "list_memories",
125
+ arguments: { agentId: options.agentId, memory_type: memoryType },
126
+ }),
127
+ }).then((r) => {
128
+ if (!r.ok)
129
+ throw new Error(`Server returned ${r.status}`);
130
+ return r.json();
131
+ })));
132
+ for (let i = 0; i < results.length; i++) {
133
+ const settled = results[i];
134
+ if (settled.status !== "fulfilled")
135
+ continue;
136
+ const records = settled.value;
137
+ if (!Array.isArray(records))
138
+ continue;
139
+ const target = typesToFetch[i] === "task_list" ? taskList : recentMemories;
140
+ for (const r of records) {
141
+ const content = (r.content || "").trim();
142
+ if (!content)
143
+ continue;
144
+ target.push({ title: r.title, content, uri: r.uri || "" });
145
+ }
146
+ }
147
+ if (taskList.length > 0 || recentMemories.length > 0) {
148
+ log.info(`[loadAgentStartupMemories] Loaded ${taskList.length} task(s) and ${recentMemories.length} memory(s) from server for ${options.agentId}`);
149
+ }
150
+ }
151
+ // 3) 格式化输出
152
+ const MAX_PER_TYPE = 10;
153
+ taskList.sort((a, b) => b.uri.localeCompare(a.uri));
154
+ recentMemories.sort((a, b) => b.uri.localeCompare(a.uri));
155
+ const sections = [];
156
+ if (taskList.length > 0) {
157
+ const items = taskList.slice(0, MAX_PER_TYPE);
158
+ const lines = items.map((t, i) => {
159
+ const titleLine = t.title ? `【${t.title}】` : `待办 ${i + 1}`;
160
+ return `${titleLine}\n${t.content}`;
161
+ });
162
+ sections.push(`【短期任务清单】\n${lines.join("\n\n")}`);
163
+ if (taskList.length > MAX_PER_TYPE) {
164
+ sections.push(`... 及另外 ${taskList.length - MAX_PER_TYPE} 条任务`);
165
+ }
166
+ }
167
+ if (recentMemories.length > 0) {
168
+ const items = recentMemories.slice(0, MAX_PER_TYPE);
169
+ const lines = items.map((t) => {
170
+ const titleLine = t.title ? `【${t.title}】` : "";
171
+ return titleLine ? `${titleLine}\n${t.content}` : t.content;
172
+ });
173
+ sections.push(`【近期记忆】\n${lines.join("\n\n")}`);
174
+ if (recentMemories.length > MAX_PER_TYPE) {
175
+ sections.push(`... 及另外 ${recentMemories.length - MAX_PER_TYPE} 条近期记忆`);
176
+ }
177
+ }
178
+ if (sections.length === 0)
179
+ return undefined;
180
+ return sections.join("\n\n");
181
+ }
59
182
  export function resolveRuntimeContextResetSupport(providerId, hasResetContext) {
60
183
  if (providerId !== "acode") {
61
184
  return {
@@ -1297,6 +1420,10 @@ terminalRouter.post("/start", validateToken, async (req, res) => {
1297
1420
  */
1298
1421
  async function startSdkSession(req, res) {
1299
1422
  const { agentId, workspacePath, command, autoAccept = true, initialPrompt,
1423
+ // 系统提示词(SDK 原生注入为 role=system,不再混入 initialPrompt)
1424
+ systemPrompt,
1425
+ // 三层 system messages(ACode 使用独立字段,三方 SDK 合并为 systemPrompt)
1426
+ globalPrompt, rolePrompt, memory,
1300
1427
  // MCP 配置 - 加载 aws-client-agent-mcp
1301
1428
  mcpConfigPath, extraMcpServers, envOverrides,
1302
1429
  // 空闲命令配置
@@ -1449,6 +1576,50 @@ async function startSdkSession(req, res) {
1449
1576
  },
1450
1577
  });
1451
1578
  }
1579
+ // 三层 system messages 路由:
1580
+ // ACode → 作为独立字段传入,runtime 构造三条 system 消息
1581
+ // 三方 SDK → 合并到 systemPrompt 一条字符串
1582
+ let resolvedSystemPrompt = systemPrompt || undefined;
1583
+ let resolvedGlobalPrompt;
1584
+ let resolvedRolePrompt;
1585
+ let resolvedMemory;
1586
+ if (providerId === "acode") {
1587
+ // ACode:分传三个字段(memory 自动从工作区加载)
1588
+ resolvedGlobalPrompt = typeof globalPrompt === "string" ? globalPrompt.trim() || undefined : undefined;
1589
+ resolvedRolePrompt = typeof rolePrompt === "string" ? rolePrompt.trim() || undefined : undefined;
1590
+ if (typeof memory === "string" && memory.trim()) {
1591
+ resolvedMemory = memory.trim();
1592
+ }
1593
+ else {
1594
+ // 未显式传入 memory 时,从工作区自动加载短期记忆和近期记忆
1595
+ const autoMemory = await loadAgentStartupMemories(workspacePath, {
1596
+ schedulerBaseUrl: requestedSchedulerBaseUrl,
1597
+ runtimeAccessToken,
1598
+ agentId: normalizedAgentId,
1599
+ });
1600
+ if (autoMemory) {
1601
+ resolvedMemory = autoMemory;
1602
+ log.info(`[startSdkSession] Auto-loaded memories for ACode agent ${normalizedAgentId}`);
1603
+ }
1604
+ }
1605
+ }
1606
+ else {
1607
+ // 三方 SDK:如果传入了结构化字段则合并到 systemPrompt
1608
+ const hasExtraPrompts = typeof globalPrompt === "string" && globalPrompt.trim() ||
1609
+ typeof rolePrompt === "string" && rolePrompt.trim() ||
1610
+ typeof memory === "string" && memory.trim();
1611
+ if (hasExtraPrompts) {
1612
+ const mergedParts = [
1613
+ globalPrompt,
1614
+ rolePrompt,
1615
+ memory,
1616
+ systemPrompt,
1617
+ ]
1618
+ .filter((p) => typeof p === "string" && p.trim().length > 0)
1619
+ .map((p) => p.trim());
1620
+ resolvedSystemPrompt = mergedParts.length > 0 ? mergedParts.join("\n\n") : undefined;
1621
+ }
1622
+ }
1452
1623
  // 构建SDK配置
1453
1624
  const config = {
1454
1625
  command: command || "acode",
@@ -1456,6 +1627,10 @@ async function startSdkSession(req, res) {
1456
1627
  agentId: normalizedAgentId,
1457
1628
  autoAccept: Boolean(autoAccept),
1458
1629
  initialPrompt,
1630
+ systemPrompt: resolvedSystemPrompt,
1631
+ ...(resolvedGlobalPrompt !== undefined ? { globalPrompt: resolvedGlobalPrompt } : {}),
1632
+ ...(resolvedRolePrompt !== undefined ? { rolePrompt: resolvedRolePrompt } : {}),
1633
+ ...(resolvedMemory !== undefined ? { memory: resolvedMemory } : {}),
1459
1634
  model: resolvedModel,
1460
1635
  // MCP 配置:不再默认注入 aws-mcp;由用户在面板中安装/配置
1461
1636
  // ACode 场景下,per-instance acode.json 已由 instance-ai-config-service 写入
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAmB3C,OAAO,KAAK,EAOV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAksCpB,qBAAa,YAAa,SAAQ,YAAY;IAsChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IArCnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,KAAK,CAoBX;IAEF,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO,CAAC,WAAW,CAAoC;IAEvD,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;gBAExB,MAAM,EAAE,kBAAkB;IAevD,OAAO,CAAC,cAAc;IAatB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAoG5B;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC,OAAO,CAAC,gBAAgB;YAIV,aAAa;IAoO3B,oDAAoD;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,uCAAuC;IACjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B,OAAO,CAAC,kBAAkB;YAaZ,YAAY;YAyJZ,qBAAqB;YAmLrB,wBAAwB;YA8ExB,eAAe;YAqSf,sBAAsB;IA6CpC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;YAQX,oCAAoC;IAsBlD,OAAO,CAAC,uBAAuB;YAuBjB,iBAAiB;IA2C/B,OAAO,CAAC,kBAAkB;YA2BZ,oBAAoB;CAiBnC"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAmB3C,OAAO,KAAK,EAOV,kBAAkB,EAEnB,MAAM,YAAY,CAAC;AAksCpB,qBAAa,YAAa,SAAQ,YAAY;IAsChC,OAAO,CAAC,QAAQ,CAAC,MAAM;IArCnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,mBAAmB,CAAqB;IAEhD,OAAO,CAAC,KAAK,CAoBX;IAEF,OAAO,CAAC,eAAe,CAAgC;IAEvD,OAAO,CAAC,WAAW,CAAoC;IAEvD,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;gBAExB,MAAM,EAAE,kBAAkB;IAevD,OAAO,CAAC,cAAc;IAatB;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqH5B;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5C;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC,OAAO,CAAC,gBAAgB;YAIV,aAAa;IAoO3B,oDAAoD;IAC9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,uCAAuC;IACjC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IA+B3B,OAAO,CAAC,kBAAkB;YAaZ,YAAY;YAyJZ,qBAAqB;YAmLrB,wBAAwB;YA8ExB,eAAe;YAqSf,sBAAsB;IA6CpC;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAiC/B;;;OAGG;IACH,OAAO,CAAC,iBAAiB;YAQX,oCAAoC;IAsBlD,OAAO,CAAC,uBAAuB;YAuBjB,iBAAiB;IA2C/B,OAAO,CAAC,kBAAkB;YA2BZ,oBAAoB;CAiBnC"}
@@ -911,13 +911,27 @@ export class ACodeRuntime extends EventEmitter {
911
911
  const commandRegistry = new ACodeCommandRegistry(commands);
912
912
  const skillPrompt = buildSkillPrompt(skills);
913
913
  const commandPrompt = buildCommandPrompt(commands);
914
- const systemPrompt = [provider.systemPrompt, skillPrompt, commandPrompt]
914
+ // 构造多条 system 消息:
915
+ // System 1: globalPrompt(全局提示词)
916
+ // System 2: rolePrompt(角色提示词)
917
+ // System 3: memory(短期+近期记忆)
918
+ // System 4: provider.systemPrompt + skillPrompt + commandPrompt(合并的运行时指令)
919
+ const runtimePrompt = [provider.systemPrompt, skillPrompt, commandPrompt]
915
920
  .map((item) => item?.trim())
916
921
  .filter((item) => Boolean(item))
917
922
  .join("\n\n");
918
- const initialConversation = systemPrompt
919
- ? [{ role: "system", content: systemPrompt }]
920
- : [];
923
+ // 辅助函数:将非空文本构造为 system role 消息,消除重复的 spread+ternary 模式
924
+ const makeSystem = (content) => content?.trim() ? [{ role: 'system', content: content.trim() }] : [];
925
+ const initialConversation = [
926
+ ...makeSystem(this.config.globalPrompt),
927
+ ...makeSystem(this.config.rolePrompt),
928
+ ...makeSystem(this.config.memory),
929
+ ...(runtimePrompt ? [{ role: 'system', content: runtimePrompt }] : []),
930
+ ];
931
+ const systemMessagesPlainText = initialConversation
932
+ .map((m) => m.content)
933
+ .filter(Boolean)
934
+ .join("\n\n");
921
935
  this.initialConversation = cloneChatConversation(initialConversation);
922
936
  this.state = {
923
937
  started: true,
@@ -941,7 +955,7 @@ export class ACodeRuntime extends EventEmitter {
941
955
  workingDirectory: this.config.workingDirectory,
942
956
  model: provider.model,
943
957
  commandCount: commands.length,
944
- estimatedContextTokens: estimateContextTokens(systemPrompt, exposedTools),
958
+ estimatedContextTokens: estimateContextTokens(systemMessagesPlainText, exposedTools),
945
959
  });
946
960
  this.emitAcodeEvent("mcp_status", {
947
961
  configPath: this.config.configPath,
@@ -93,6 +93,12 @@ export interface ACodeRuntimeConfig {
93
93
  initialPrompt?: string;
94
94
  model?: string;
95
95
  systemPrompt?: string;
96
+ /** 全局提示词(System 1) */
97
+ globalPrompt?: string;
98
+ /** 角色提示词(System 2) */
99
+ rolePrompt?: string;
100
+ /** 记忆内容(System 3) */
101
+ memory?: string;
96
102
  env?: Record<string, string>;
97
103
  commandDirs?: string[];
98
104
  hooks?: ACodeHookHandler[];
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
@@ -36,9 +36,12 @@ function createNullStore() {
36
36
  deleteMemory: async () => true,
37
37
  searchMemory: async () => ({ query: "", results: [] }),
38
38
  listByType: async () => [],
39
- removeTaskListMemory: async () => true,
40
39
  archiveRecentlyMemory: async () => ({}),
41
40
  listByFile: async () => [],
41
+ listExpiredRecentlyMemories: async () => [],
42
+ markExpiredMemoriesRecalling: async () => ({ marked: 0, uris: [] }),
43
+ clearRecallingExpiredMemories: async () => ({ deleted: 0, uris: [] }),
44
+ listByTodoStatus: async () => [],
42
45
  };
43
46
  }
44
47
  describe("ContextManager", () => {
@@ -1 +1 @@
1
- {"version":3,"file":"context-manager.test.js","sourceRoot":"","sources":["../src/context-manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-manager.test.js","sourceRoot":"","sources":["../src/context-manager.test.ts"],"names":[],"mappings":"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"}