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.
- package/dist/adapter/AcodeSdkAdapter.d.ts +3 -0
- package/dist/adapter/AcodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/AcodeSdkAdapter.js +9 -0
- package/dist/adapter/OpencodeSdkAdapter.d.ts.map +1 -1
- package/dist/adapter/OpencodeSdkAdapter.js +11 -3
- package/dist/adapter/types.d.ts +6 -0
- package/dist/adapter/types.d.ts.map +1 -1
- package/dist/routes/git.d.ts +42 -2
- package/dist/routes/git.d.ts.map +1 -1
- package/dist/routes/git.js +580 -61
- package/dist/routes/git.test.js +171 -6
- package/dist/routes/terminal.d.ts.map +1 -1
- package/dist/routes/terminal.js +175 -0
- package/package/acode/dist/runtime.d.ts.map +1 -1
- package/package/acode/dist/runtime.js +19 -5
- package/package/acode/dist/types.d.ts +6 -0
- package/package/acode/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.js +4 -1
- package/package/aws-client-agent-mcp/dist/context-manager.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +69 -6
- package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.js +374 -105
- package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js +12 -3
- package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +17 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/mcp-tools.js +44 -8
- package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts +49 -2
- package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.js +116 -14
- package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-store.test.js +82 -5
- package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts +11 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/memory-tools.js +37 -11
- package/package/aws-client-agent-mcp/dist/memory-tools.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts +10 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/server-memory-store.js +16 -4
- package/package/aws-client-agent-mcp/dist/server-memory-store.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js +0 -1
- package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.d.ts +9 -0
- package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
- package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
- package/package.json +1 -1
package/dist/routes/git.test.js
CHANGED
|
@@ -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
|
-
|
|
142
|
+
// 空响应走 sanitize 兜底
|
|
143
|
+
expect(result).toBe('chore: update staged changes');
|
|
143
144
|
});
|
|
144
|
-
it('should
|
|
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:
|
|
157
|
-
temperature: 0.
|
|
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":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAMxC,OAAO,EAEN,KAAK,oBAAoB,EAKzB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAO5B,MAAM,qBAAqB,CAAC;AAU7B,OAAO,EACN,KAAK,qBAAqB,EAK1B,MAAM,+BAA+B,CAAC;AAUvC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAIpD,eAAO,MAAM,cAAc,4CAAW,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACnC;AAGD,eAAO,MAAM,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAa,CAAC;AAiCnE,MAAM,WAAW,kBAAkB;IAClC,cAAc,EAAE,OAAO,CAAC;IACxB,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,MAAM,0BAA0B,GACnC;IAAE,SAAS,EAAE,IAAI,CAAA;CAAE,GACnB;IAAE,SAAS,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal.d.ts","sourceRoot":"","sources":["../../src/routes/terminal.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/terminal.js
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
-
|
|
919
|
-
|
|
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(
|
|
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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"}
|