fix(gateway): reduce ClawX context merge waits; bundle memory-core chokidar (#930)

This commit is contained in:
paisley
2026-04-28 19:06:31 +08:00
committed by GitHub
parent 9d3a59dc0e
commit 5c97044865
6 changed files with 166 additions and 38 deletions

View File

@@ -19,6 +19,7 @@ vi.mock('os', async () => {
});
import {
ensureClawXContext,
mergeClawXSection,
removeChatFirstBootstrapFiles,
stripFirstRunSection,
@@ -203,3 +204,58 @@ describe('removeChatFirstBootstrapFiles', () => {
await expect(access(join(agentWorkspace, 'BOOTSTRAP.md'))).rejects.toThrow();
});
});
describe('ensureClawXContext', () => {
it('does not wait for missing files in non-default agent workspaces', async () => {
const openclawDir = join(testHome, '.openclaw');
const defaultWorkspace = join(openclawDir, 'workspace-main');
const agentWorkspace = join(openclawDir, 'workspace-agent');
await mkdir(defaultWorkspace, { recursive: true });
await mkdir(agentWorkspace, { recursive: true });
await writeFile(join(defaultWorkspace, 'AGENTS.md'), '# AGENTS.md\n\nExisting agents.\n', 'utf-8');
await writeFile(join(defaultWorkspace, 'TOOLS.md'), '# TOOLS.md\n\nExisting tools.\n', 'utf-8');
await writeFile(
join(openclawDir, 'openclaw.json'),
JSON.stringify({
agents: {
defaults: { workspace: defaultWorkspace },
list: [{ id: 'agent', workspace: agentWorkspace }],
},
}),
'utf-8',
);
const result = await Promise.race([
ensureClawXContext().then(() => 'done'),
new Promise((resolve) => setTimeout(() => resolve('timeout'), 200)),
]);
expect(result).toBe('done');
await expect(readFile(join(defaultWorkspace, 'AGENTS.md'), 'utf-8')).resolves.toContain('## ClawX Environment');
await expect(readFile(join(defaultWorkspace, 'TOOLS.md'), 'utf-8')).resolves.toContain('## ClawX Tool Notes');
await expect(access(join(agentWorkspace, 'AGENTS.md'))).rejects.toThrow();
await expect(access(join(agentWorkspace, 'TOOLS.md'))).rejects.toThrow();
});
it('does not wait for missing external default workspaces', async () => {
const openclawDir = join(testHome, '.openclaw');
const externalWorkspace = join(testHome, '..', `external-missing-${Date.now()}`);
await mkdir(openclawDir, { recursive: true });
await writeFile(
join(openclawDir, 'openclaw.json'),
JSON.stringify({
agents: {
defaults: { workspace: externalWorkspace },
},
}),
'utf-8',
);
const result = await Promise.race([
ensureClawXContext().then(() => 'done'),
new Promise((resolve) => setTimeout(() => resolve('timeout'), 200)),
]);
expect(result).toBe('done');
});
});