Skip to content

Commit 5f3cc2f

Browse files
committed
fix: Glob spill CI mocks, klient set_default route, tower profile tools
Mock rg/spawn for toolExecutor Glob spill recovery so CI without system rg stays green. Align klient model catalog set_default URL with fixture model id. Stub getActiveToolNames on tower profile mocks; optional-call in tower service.
1 parent 80d4386 commit 5f3cc2f

4 files changed

Lines changed: 35 additions & 2 deletions

File tree

‎packages/agent-core-v2/src/features/tower/towerService.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ export class AgentTowerService extends Disposable implements IAgentTowerService
117117
eventBus.subscribe(AgentStatusUpdated, () => {
118118
if (this.agentCtx.agentId !== 'main') return;
119119
if (!this.isActive) return;
120-
const active = this.profile.getActiveToolNames();
120+
const active = this.profile.getActiveToolNames?.() ?? undefined;
121121
if (active === undefined) return;
122122
if (TOWER_MODE_TOOLS.every((name) => active.includes(name))) return;
123123
for (const name of TOWER_MODE_TOOLS) this.profile.addActiveTool(name);

‎packages/agent-core-v2/test/agent/toolExecutor/toolExecutor.test.ts‎

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ import type { ToolCall } from '#human/llm/message';
99
import type { ToolInputDisplay } from '#/tool/toolInputDisplay';
1010
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
1111

12+
vi.mock('#/os/backends/node-local/tools/rgLocator', () => ({
13+
ensureRgPath: vi.fn(async (): Promise<{ path: string; source: string }> => ({
14+
path: 'rg',
15+
source: 'system-path',
16+
})),
17+
rgUnavailableMessage: (cause: unknown) =>
18+
`rg unavailable: ${cause instanceof Error ? cause.message : String(cause)}`,
19+
}));
20+
1221
import { SyncDescriptor } from '#/_base/di/descriptors';
1322
import { DisposableStore } from '#/_base/di/lifecycle';
1423
import { createServices, TestInstantiationService } from '#/_base/di/test';
@@ -1250,6 +1259,18 @@ describe('truncation pipeline', () => {
12501259
`file-${String(index).padStart(3, '0')}-${'x'.repeat(100)}.ts`,
12511260
);
12521261
await Promise.all(expected.map((name) => writeFile(join(homeDir, name), '')));
1262+
const stdout = expected.map((name) => `./${name}`).join('\n') + '\n';
1263+
vi.spyOn(globProcess, 'spawn').mockImplementation(async () => ({
1264+
_serviceBrand: undefined,
1265+
pid: 123,
1266+
exitCode: 0,
1267+
stdin: new PassThrough(),
1268+
stdout: Readable.from([stdout]),
1269+
stderr: Readable.from([]),
1270+
wait: async () => 0,
1271+
kill: async () => {},
1272+
dispose: () => {},
1273+
}));
12531274

12541275
const [result] = await execute([toolCall('glob_all', 'Glob', { pattern: '*.ts', head_limit: 0 })]);
12551276

‎packages/agent-core-v2/test/features/tower/towerService.test.ts‎

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1497,6 +1497,7 @@ describe('AgentTowerService', () => {
14971497
} as unknown as IAgentContextMemoryService);
14981498
const restoredAdded: string[] = [];
14991499
ix2.stub(IAgentProfileService, {
1500+
getActiveToolNames: () => undefined,
15001501
data: () => ({ profileName: undefined }),
15011502
addActiveTool: (name: string) => {
15021503
restoredAdded.push(name);
@@ -1598,6 +1599,7 @@ describe('AgentTowerService', () => {
15981599
} as unknown as IAgentContextMemoryService);
15991600
const restoredAdded: string[] = [];
16001601
ix2.stub(IAgentProfileService, {
1602+
getActiveToolNames: () => undefined,
16011603
data: () => ({ profileName: undefined }),
16021604
addActiveTool: (name: string) => {
16031605
restoredAdded.push(name);
@@ -1664,6 +1666,7 @@ describe('AgentTowerService', () => {
16641666
} as unknown as IAgentContextMemoryService);
16651667
const restoredAdded: string[] = [];
16661668
ix2.stub(IAgentProfileService, {
1669+
getActiveToolNames: () => undefined,
16671670
data: () => ({ profileName: undefined }),
16681671
addActiveTool: (name: string) => {
16691672
restoredAdded.push(name);
@@ -1743,6 +1746,7 @@ describe('AgentTowerService', () => {
17431746
} as unknown as IAgentContextMemoryService);
17441747
const restoredAdded: string[] = [];
17451748
ix2.stub(IAgentProfileService, {
1749+
getActiveToolNames: () => undefined,
17461750
data: () => ({ profileName: undefined }),
17471751
addActiveTool: (name: string) => {
17481752
restoredAdded.push(name);
@@ -1853,6 +1857,7 @@ describe('AgentTowerService', () => {
18531857
} as unknown as IAgentContextMemoryService);
18541858
const restoredAdded: string[] = [];
18551859
ix2.stub(IAgentProfileService, {
1860+
getActiveToolNames: () => undefined,
18561861
data: () => ({ profileName: undefined }),
18571862
addActiveTool: (name: string) => {
18581863
restoredAdded.push(name);
@@ -1945,6 +1950,7 @@ describe('AgentTowerService', () => {
19451950
} as unknown as IAgentContextMemoryService);
19461951
const restoredAdded: string[] = [];
19471952
ix2.stub(IAgentProfileService, {
1953+
getActiveToolNames: () => undefined,
19481954
data: () => ({ profileName: undefined }),
19491955
addActiveTool: (name: string) => {
19501956
restoredAdded.push(name);
@@ -2037,6 +2043,7 @@ describe('AgentTowerService', () => {
20372043
} as unknown as IAgentContextMemoryService);
20382044
const restoredAdded: string[] = [];
20392045
ix2.stub(IAgentProfileService, {
2046+
getActiveToolNames: () => undefined,
20402047
data: () => ({ profileName: undefined }),
20412048
addActiveTool: (name: string) => {
20422049
restoredAdded.push(name);
@@ -2117,6 +2124,7 @@ describe('AgentTowerService', () => {
21172124
} as unknown as IAgentContextMemoryService);
21182125
const restoredAdded: string[] = [];
21192126
ix2.stub(IAgentProfileService, {
2127+
getActiveToolNames: () => undefined,
21202128
data: () => ({ profileName: undefined }),
21212129
addActiveTool: (name: string) => {
21222130
restoredAdded.push(name);
@@ -2190,6 +2198,7 @@ describe('AgentTowerService', () => {
21902198
} as unknown as IAgentContextMemoryService);
21912199
const restoredAdded: string[] = [];
21922200
ix2.stub(IAgentProfileService, {
2201+
getActiveToolNames: () => undefined,
21932202
data: () => ({ profileName: undefined }),
21942203
addActiveTool: (name: string) => {
21952204
restoredAdded.push(name);
@@ -2244,6 +2253,7 @@ describe('AgentTowerService', () => {
22442253
} as unknown as IAgentContextMemoryService);
22452254
const restoredAdded: string[] = [];
22462255
ix2.stub(IAgentProfileService, {
2256+
getActiveToolNames: () => undefined,
22472257
data: () => ({ profileName: undefined }),
22482258
addActiveTool: (name: string) => {
22492259
restoredAdded.push(name);
@@ -2300,6 +2310,7 @@ describe('AgentTowerService', () => {
23002310
worktree = join(repo, '.tower/worktrees/wt-1');
23012311

23022312
ix.stub(IAgentProfileService, {
2313+
getActiveToolNames: () => undefined,
23032314
data: () => ({ profileName: 'tower-worker' }),
23042315
} as unknown as IAgentProfileService);
23052316
ix.stub(
@@ -2367,6 +2378,7 @@ describe('AgentTowerService', () => {
23672378

23682379
it('abstains when the agent is not a tower worker', async () => {
23692380
ix.stub(IAgentProfileService, {
2381+
getActiveToolNames: () => undefined,
23702382
data: () => ({ profileName: 'coder' }),
23712383
} as unknown as IAgentProfileService);
23722384
ix.get(IAgentTowerService);

‎packages/klient/test/e2e/legacy/client.test.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ describe('DaemonClient session action helpers', () => {
463463
expect(calls.map((call) => [call.init.method, call.url])).toEqual([
464464
['GET', 'http://server.example.test/api/v1/auth'],
465465
['GET', 'http://server.example.test/api/v1/models'],
466-
['POST', 'http://server.example.test/api/v1/models/pythinker-code%2Fkimi-for-coding:set_default'],
466+
['POST', 'http://server.example.test/api/v1/models/openai%2Fgpt-4o:set_default'],
467467
['GET', 'http://server.example.test/api/v1/providers'],
468468
['GET', 'http://server.example.test/api/v1/providers/pythinker'],
469469
]);

0 commit comments

Comments
 (0)