diff --git a/packages/codingcode/test/agent/agent-cache-stability.test.ts b/packages/codingcode/test/agent/agent-cache-stability.test.ts index 5b1ff42..dd0e613 100644 --- a/packages/codingcode/test/agent/agent-cache-stability.test.ts +++ b/packages/codingcode/test/agent/agent-cache-stability.test.ts @@ -93,6 +93,8 @@ const mockState = { sessionMeta: { model: 'test-model', createdAt: new Date().toISOString() } as any, model: 'test-model', title: 'cache-stability', + mode: 'build' as const, + permissionMode: 'default' as const, usage: undefined, memorySnapshot: '', }; diff --git a/packages/codingcode/test/agent/agent-concurrent.test.ts b/packages/codingcode/test/agent/agent-concurrent.test.ts index 293ad70..cf4a95d 100644 --- a/packages/codingcode/test/agent/agent-concurrent.test.ts +++ b/packages/codingcode/test/agent/agent-concurrent.test.ts @@ -93,6 +93,8 @@ const mockState = { sessionMeta: { model: 'test-model', createdAt: new Date().toISOString() } as any, model: 'test-model', title: 'concurrent', + mode: 'build' as const, + permissionMode: 'default' as const, usage: undefined, memorySnapshot: '', }; diff --git a/packages/codingcode/test/agent/agent-todo-event.test.ts b/packages/codingcode/test/agent/agent-todo-event.test.ts index ab639c8..fb542f5 100644 --- a/packages/codingcode/test/agent/agent-todo-event.test.ts +++ b/packages/codingcode/test/agent/agent-todo-event.test.ts @@ -100,6 +100,8 @@ const mockState = { sessionMeta: { model: 'test-model', createdAt: new Date().toISOString() } as any, model: 'test-model', title: 'test', + mode: 'build' as const, + permissionMode: 'default' as const, usage: undefined, memorySnapshot: '', }; diff --git a/packages/codingcode/test/agent/agent.test.ts b/packages/codingcode/test/agent/agent.test.ts index d7c10b3..7429d66 100644 --- a/packages/codingcode/test/agent/agent.test.ts +++ b/packages/codingcode/test/agent/agent.test.ts @@ -71,6 +71,8 @@ const mockState = { sessionMeta: { model: 'test-model', createdAt: new Date().toISOString() } as any, model: 'test-model', title: 'test', + mode: 'build' as const, + permissionMode: 'default' as const, usage: undefined, memorySnapshot: '', }; diff --git a/packages/codingcode/test/agent/hooks-deps-type.test.ts b/packages/codingcode/test/agent/hooks-deps-type.test.ts index cf15455..50550d3 100644 --- a/packages/codingcode/test/agent/hooks-deps-type.test.ts +++ b/packages/codingcode/test/agent/hooks-deps-type.test.ts @@ -106,6 +106,8 @@ describe('agentLoop hooks type', () => { sessionMeta: { model: 'test-model', createdAt: new Date().toISOString() } as any, model: 'test-model', title: 'type-test', + mode: 'build' as const, + permissionMode: 'default' as const, usage: undefined, memorySnapshot: '', }; diff --git a/packages/codingcode/test/agent/loop-options.test.ts b/packages/codingcode/test/agent/loop-options.test.ts index c952136..4d82242 100644 --- a/packages/codingcode/test/agent/loop-options.test.ts +++ b/packages/codingcode/test/agent/loop-options.test.ts @@ -87,6 +87,8 @@ describe('agentLoop loop options', () => { model: 'test-model', title: 'test', usage: undefined, + mode: 'build' as const, + permissionMode: 'default' as const, projectPath: '', transcriptPath: '', indexPath: '', diff --git a/packages/codingcode/test/agent/memory-snapshot.test.ts b/packages/codingcode/test/agent/memory-snapshot.test.ts index 7a16104..7e76562 100644 --- a/packages/codingcode/test/agent/memory-snapshot.test.ts +++ b/packages/codingcode/test/agent/memory-snapshot.test.ts @@ -100,6 +100,8 @@ function makeState(memorySnapshot: string = '') { model: 'test-model', title: 'memory-test', usage: undefined, + mode: 'build' as const, + permissionMode: 'default' as const, memorySnapshot, }; } diff --git a/packages/codingcode/test/agent/stop-hook.test.ts b/packages/codingcode/test/agent/stop-hook.test.ts index 1294565..c27a0b1 100644 --- a/packages/codingcode/test/agent/stop-hook.test.ts +++ b/packages/codingcode/test/agent/stop-hook.test.ts @@ -87,6 +87,8 @@ describe('agentLoop stop hook', () => { model: 'test-model', title: 'test', usage: undefined, + mode: 'build' as const, + permissionMode: 'default' as const, projectPath: '', transcriptPath: '', indexPath: '', diff --git a/packages/codingcode/test/agent/submit-plan-turn-end.test.ts b/packages/codingcode/test/agent/submit-plan-turn-end.test.ts index 92656a2..417047b 100644 --- a/packages/codingcode/test/agent/submit-plan-turn-end.test.ts +++ b/packages/codingcode/test/agent/submit-plan-turn-end.test.ts @@ -84,6 +84,8 @@ const mockState = { model: 'test-model', title: 'test', usage: undefined, + mode: 'build' as const, + permissionMode: 'default' as const, projectPath: 'test-project', transcriptPath: '/tmp/test.jsonl', indexPath: '/tmp/test.index.json', diff --git a/packages/codingcode/test/client/direct.test.ts b/packages/codingcode/test/client/direct.test.ts index 5e1b4b7..5ebb755 100644 --- a/packages/codingcode/test/client/direct.test.ts +++ b/packages/codingcode/test/client/direct.test.ts @@ -82,7 +82,9 @@ describe('createDirectModelClient operations', () => { const fetchSpy = vi.spyOn(globalThis, 'fetch'); const client = createDirectModelClient(rt); - await expect(client.switchModel({ id: 'missing-model@MISSING_KEY' })).rejects.toThrow('not found'); + await expect(client.switchModel({ id: 'missing-model@MISSING_KEY' })).rejects.toThrow( + 'not found' + ); expect(fetchSpy).not.toHaveBeenCalled(); fetchSpy.mockRestore(); diff --git a/packages/codingcode/test/client/get-session-plan.test.ts b/packages/codingcode/test/client/get-session-plan.test.ts index e0000cc..b2ecdae 100644 --- a/packages/codingcode/test/client/get-session-plan.test.ts +++ b/packages/codingcode/test/client/get-session-plan.test.ts @@ -13,9 +13,9 @@ describe('getSessionPlan: http + direct both implement', () => { it('http calls GET /api/sessions/:id/plan?cwd=...', async () => { const calls: string[] = []; const c = createHttpSessionClient({ - apiGet: async (p) => { + apiGet: async (p: string) => { calls.push(p); - return { content: 'plan', path: '/p', directory: '/d', exists: true }; + return { content: 'plan', path: '/p', directory: '/d', exists: true } as T; }, apiPost: async () => null as any, apiPut: async () => null as any, @@ -34,7 +34,10 @@ describe('getSessionPlan: http + direct both implement', () => { writeFileSync(join(projectDir, 'second.md'), '# second'); setProjectBaseDir(base); try { - const TestLayer = Layer.mergeAll(SessionService.Default, ProjectRuntimeService.Default); + const TestLayer = Layer.mergeAll( + SessionService.Default, + ProjectRuntimeService.Default + ) as Layer.Layer; const rt = ManagedRuntime.make(TestLayer); const c = createDirectSessionClient(rt as any); const res = await c.getSessionPlan({ sessionId: 's1', cwd: '/my/cwd' }); diff --git a/packages/codingcode/test/client/missing-methods.test.ts b/packages/codingcode/test/client/missing-methods.test.ts index 19589b6..5170f98 100644 --- a/packages/codingcode/test/client/missing-methods.test.ts +++ b/packages/codingcode/test/client/missing-methods.test.ts @@ -58,16 +58,20 @@ const TestLayer = Layer.mergeAll( ApprovalWaitService.Default ); -const rt = ManagedRuntime.make(TestLayer); +const rt = ManagedRuntime.make( + TestLayer as Layer.Layer< + SkillService | HookService | ApprovalService | McpService | ApprovalWaitService | MemoryService + > +); describe('setMemoryModel: http + direct both implement', () => { it('http calls POST /api/settings/memory/model', async () => { const calls: Array<{ path: string; body: unknown }> = []; const c = createHttpSettingsClient({ apiGet: async () => null as any, - apiPost: async (p, b) => { + apiPost: async (p: string, b?: unknown) => { calls.push({ path: p, body: b }); - return { model: (b as { model: string }).model }; + return { model: (b as { model: string }).model } as T; }, apiPut: async () => null as any, apiDelete: async () => undefined, @@ -90,9 +94,9 @@ describe('getAgentConfig: http + direct both implement', () => { it('http calls GET /api/settings/agent/config', async () => { const calls: string[] = []; const c = createHttpSettingsClient({ - apiGet: async (p) => { + apiGet: async (p: string) => { calls.push(p); - return { maxSteps: 100, maxStopContinuations: 3 }; + return { maxSteps: 100, maxStopContinuations: 3 } as T; }, apiPost: async () => null as any, apiPut: async () => null as any, @@ -116,9 +120,9 @@ describe('setCompactionModel: http + direct both implement', () => { const calls: Array<{ path: string; body: unknown }> = []; const c = createHttpSettingsClient({ apiGet: async () => null as any, - apiPost: async (p, b) => { + apiPost: async (p: string, b?: unknown) => { calls.push({ path: p, body: b }); - return { compactionModel: (b as { compactionModel: string }).compactionModel }; + return { compactionModel: (b as { compactionModel: string }).compactionModel } as T; }, apiPut: async () => null as any, apiDelete: async () => undefined, @@ -139,7 +143,7 @@ describe('setCompactionModel: http + direct both implement', () => { describe('getMemoryConfig returns model field', () => { it('http typed return includes model', async () => { const c = createHttpSettingsClient({ - apiGet: async () => ({ enabled: true, types: [], model: 'm' }), + apiGet: async () => ({ enabled: true, types: [], model: 'm' }) as T, apiPost: async () => null as any, apiPut: async () => null as any, apiDelete: async () => undefined, diff --git a/packages/codingcode/test/context/compressor/behavior.test.ts b/packages/codingcode/test/context/compressor/behavior.test.ts index 6d4afac..4d6def1 100644 --- a/packages/codingcode/test/context/compressor/behavior.test.ts +++ b/packages/codingcode/test/context/compressor/behavior.test.ts @@ -76,6 +76,7 @@ function makeFixture(opts: FixtureOptions) { title: 'fixture', currentTurnId: opts.currentTurnId ?? opts.numTurns, usage: undefined, + mode: 'build', permissionMode: 'default', }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); diff --git a/packages/codingcode/test/orchestrate.test.ts b/packages/codingcode/test/orchestrate.test.ts index ec3e15d..ad049b6 100644 --- a/packages/codingcode/test/orchestrate.test.ts +++ b/packages/codingcode/test/orchestrate.test.ts @@ -58,6 +58,8 @@ const mockState = { sessionMeta: null, model: 'test', title: 'test-sess', + mode: 'build' as const, + permissionMode: 'default' as const, usage: undefined, memorySnapshot: '', }; @@ -339,7 +341,7 @@ describe('sendMessage stream', () => { it('should yield AgentEvent chunks from LLM', async () => { const sessionId = await setupSession(); - const program = sendMessage(sessionId, 'hi', '/tmp/test', mockLlm); + const program = sendMessage(sessionId, 'hi', '/tmp/test', mockLlm, {}); const { stream } = (await Effect.runPromise( program.pipe(Effect.provide(TestLayer) as any) )) as any; @@ -355,7 +357,7 @@ describe('sendMessage stream', () => { it('should not return empty event stream for normal LLM response', async () => { const sessionId = await setupSession(); - const program = sendMessage(sessionId, 'hi', '/tmp/test', mockLlm); + const program = sendMessage(sessionId, 'hi', '/tmp/test', mockLlm, {}); const { stream } = (await Effect.runPromise( program.pipe(Effect.provide(TestLayer) as any) )) as any; diff --git a/packages/codingcode/test/plan/gate.test.ts b/packages/codingcode/test/plan/gate.test.ts index fee2ddc..6687cef 100644 --- a/packages/codingcode/test/plan/gate.test.ts +++ b/packages/codingcode/test/plan/gate.test.ts @@ -86,9 +86,9 @@ describe('planModeGateHook', () => { }); }); - it('denies execute_command in plan mode', () => { + it('denies execute_command in plan mode', async () => { makeSessionIndex(cwd, sessionId, 'plan'); - const result = planModeGateHook({ + const result = await planModeGateHook({ toolName: 'execute_command', sessionId, projectPath: cwd, @@ -97,9 +97,9 @@ describe('planModeGateHook', () => { expect(result?.reason).toMatch(/plan mode/i); }); - it('denies edit_file in plan mode', () => { + it('denies edit_file in plan mode', async () => { makeSessionIndex(cwd, sessionId, 'plan'); - const result = planModeGateHook({ + const result = await planModeGateHook({ toolName: 'edit_file', sessionId, projectPath: cwd, diff --git a/packages/codingcode/test/scheduler/approval-bypass.test.ts b/packages/codingcode/test/scheduler/approval-bypass.test.ts index 201ac8b..013733d 100644 --- a/packages/codingcode/test/scheduler/approval-bypass.test.ts +++ b/packages/codingcode/test/scheduler/approval-bypass.test.ts @@ -15,7 +15,9 @@ describe('scheduler uses real forked ApprovalService', () => { 'C:/Users/10116/Desktop/agent/coding code/packages/codingcode/src/scheduler/service.ts', 'utf8' ); - expect(src).toMatch(/import\s*\{[^}]*ApprovalService[^}]*\}\s*from\s*['"]\.\.\/approval\/index\.js['"]/); + expect(src).toMatch( + /import\s*\{[^}]*ApprovalService[^}]*\}\s*from\s*['"]\.\.\/approval\/index\.js['"]/ + ); }); it('scheduler resolves ApprovalService and forks with bypass', () => { diff --git a/packages/codingcode/test/session/compute-paths.test.ts b/packages/codingcode/test/session/compute-paths.test.ts index 5d3b058..320e604 100644 --- a/packages/codingcode/test/session/compute-paths.test.ts +++ b/packages/codingcode/test/session/compute-paths.test.ts @@ -4,11 +4,7 @@ import { join } from 'path'; import { randomUUID } from 'crypto'; import { Effect } from 'effect'; import { SessionService } from '../../src/session/store.js'; -import { - computePaths, - sessionJsonlPathFromCwd, - projectSessionsDir, -} from '../../src/core/path.js'; +import { computePaths, sessionJsonlPathFromCwd, projectSessionsDir } from '../../src/core/path.js'; import { normalizePath, encodeProjectPath } from '../../src/core/path.js'; import { useTempProjectBase } from '../helpers/project-base.js'; diff --git a/packages/codingcode/test/session/filter-ui.test.ts b/packages/codingcode/test/session/filter-ui.test.ts index f58fc60..2715e1c 100644 --- a/packages/codingcode/test/session/filter-ui.test.ts +++ b/packages/codingcode/test/session/filter-ui.test.ts @@ -10,6 +10,8 @@ function makeBaseEvents(extra: SessionEvent[] = []): SessionEvent[] { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', turnId: 1, content: 'hello' }, { type: 'assistant', turnId: 1, content: 'hi', toolCalls: [] }, @@ -126,6 +128,8 @@ describe('sessionEventsToTurns with summary', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', turnId: 1, content: 'hello' }, { type: 'assistant', turnId: 1, content: 'hi', toolCalls: [] }, diff --git a/packages/codingcode/test/session/fork.test.ts b/packages/codingcode/test/session/fork.test.ts index 2227879..d7d59ea 100644 --- a/packages/codingcode/test/session/fork.test.ts +++ b/packages/codingcode/test/session/fork.test.ts @@ -68,7 +68,8 @@ function makeFixture(sessionId: string, slug: string) { title: 'fixture', currentTurnId: 3, usage: undefined, - permissionMode: 'default', + mode: 'build' as const, + permissionMode: 'default' as const, }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); @@ -120,6 +121,8 @@ describe('forkSession', () => { model: 'test', title: 'fixture', usage: undefined, + mode: 'build' as const, + permissionMode: 'default' as const, memorySnapshot: '', }; @@ -162,6 +165,8 @@ describe('forkSession', () => { currentTurnId: 3, sessionMeta: null, model: 'test', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage: undefined, memorySnapshot: '', @@ -216,6 +221,8 @@ describe('forkSession', () => { currentTurnId: 3, sessionMeta: null, model: 'test', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage: undefined, memorySnapshot: '', @@ -280,6 +287,8 @@ describe('forkSession', () => { currentTurnId: 3, sessionMeta: null, model: 'test', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage: undefined, memorySnapshot: '', @@ -343,7 +352,8 @@ describe('forkSession', () => { title: 'uuid-fixture', currentTurnId: 2, usage: undefined, - permissionMode: 'default', + mode: 'build' as const, + permissionMode: 'default' as const, }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); @@ -358,6 +368,8 @@ describe('forkSession', () => { currentTurnId: 2, sessionMeta: null, model: 'test', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'uuid-fixture', usage: undefined, memorySnapshot: '', diff --git a/packages/codingcode/test/session/prompt-estimate.test.ts b/packages/codingcode/test/session/prompt-estimate.test.ts index a8b208c..2509692 100644 --- a/packages/codingcode/test/session/prompt-estimate.test.ts +++ b/packages/codingcode/test/session/prompt-estimate.test.ts @@ -76,7 +76,8 @@ function makeFixture( title: 'fixture', currentTurnId: 2, usage: usage ?? undefined, - permissionMode: 'default', + mode: 'build' as const, + permissionMode: 'default' as const, }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); @@ -104,6 +105,8 @@ describe('promptEstimate', () => { currentTurnId: 2, sessionMeta: null, model: 'test-model', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage, memorySnapshot: '', @@ -137,6 +140,8 @@ describe('promptEstimate', () => { currentTurnId: 2, sessionMeta: null, model: 'test-model', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage: undefined, memorySnapshot: '', diff --git a/packages/codingcode/test/session/rollback.test.ts b/packages/codingcode/test/session/rollback.test.ts index fb24f5a..21a5ba5 100644 --- a/packages/codingcode/test/session/rollback.test.ts +++ b/packages/codingcode/test/session/rollback.test.ts @@ -56,6 +56,7 @@ function makeFixture(sessionId: string, slug: string) { title: 'fixture', currentTurnId: 3, usage: undefined, + mode: 'build', permissionMode: 'default', }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); diff --git a/packages/codingcode/test/session/store-compact-usage.test.ts b/packages/codingcode/test/session/store-compact-usage.test.ts index 89d4459..cabd7cd 100644 --- a/packages/codingcode/test/session/store-compact-usage.test.ts +++ b/packages/codingcode/test/session/store-compact-usage.test.ts @@ -63,6 +63,7 @@ function makeFixture( title: 'fixture', currentTurnId: turns.length, usage: turns[turns.length - 1]?.usage, + mode: 'build', permissionMode: 'default', }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); @@ -91,8 +92,12 @@ function buildState( projectPath: encodeProjectPath('/tmp/test'), cwd: '/tmp/test', createdAt: new Date().toISOString(), + mode: 'build' as const, + permissionMode: 'default' as const, }, model: 'test-model', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage: initialUsage, memorySnapshot: '', diff --git a/packages/codingcode/test/session/store-diff-rebuild.test.ts b/packages/codingcode/test/session/store-diff-rebuild.test.ts index 115b735..32343a8 100644 --- a/packages/codingcode/test/session/store-diff-rebuild.test.ts +++ b/packages/codingcode/test/session/store-diff-rebuild.test.ts @@ -11,6 +11,8 @@ describe('sessionEventsToTurns', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -60,6 +62,8 @@ describe('sessionEventsToTurns', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -107,6 +111,8 @@ describe('sessionEventsToTurns', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', diff --git a/packages/codingcode/test/session/store-rollback-usage.test.ts b/packages/codingcode/test/session/store-rollback-usage.test.ts index 4bbf86c..5c2e947 100644 --- a/packages/codingcode/test/session/store-rollback-usage.test.ts +++ b/packages/codingcode/test/session/store-rollback-usage.test.ts @@ -63,6 +63,7 @@ function makeFixture( title: 'fixture', currentTurnId: turns.length, usage: turns[turns.length - 1]?.usage, + mode: 'build', permissionMode: 'default', }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); @@ -91,8 +92,12 @@ function buildState( projectPath: encodeProjectPath('/tmp/test'), cwd: '/tmp/test', createdAt: new Date().toISOString(), + mode: 'build' as const, + permissionMode: 'default' as const, }, model: 'test-model', + mode: 'build' as const, + permissionMode: 'default' as const, title: 'fixture', usage: initialUsage, memorySnapshot: '', diff --git a/packages/codingcode/test/session/types-export.test.ts b/packages/codingcode/test/session/types-export.test.ts index dd156b2..f0af9b6 100644 --- a/packages/codingcode/test/session/types-export.test.ts +++ b/packages/codingcode/test/session/types-export.test.ts @@ -15,6 +15,8 @@ describe('SessionStoreState export', () => { title: '', currentTurnId: 0, usage: undefined, + mode: 'build', + permissionMode: 'default', memorySnapshot: '', }; expect(state.sessionId).toBe('test-sid'); diff --git a/packages/codingcode/test/session/ui-history-rollback.test.ts b/packages/codingcode/test/session/ui-history-rollback.test.ts index 07ace01..3343d53 100644 --- a/packages/codingcode/test/session/ui-history-rollback.test.ts +++ b/packages/codingcode/test/session/ui-history-rollback.test.ts @@ -5,7 +5,7 @@ import { randomUUID } from 'crypto'; import { filterForContext, buildContextMessages } from '../../src/context/service.js'; import { readHistory } from '../../src/session/file-ops.js'; import { filterForUI } from '../../src/session/ui-history.js'; -import type { SessionIndex } from '../../src/session/types.js'; +import type { SessionEvent, SessionIndex } from '../../src/session/types.js'; import { useTempProjectBase } from '../helpers/project-base.js'; const base = useTempProjectBase(); @@ -58,6 +58,7 @@ function makeFixture(sessionId: string, slug: string, extraEvents?: object[]) { title: 'fixture', currentTurnId: 3, usage: undefined, + mode: 'build', permissionMode: 'default', }; writeFileSync(indexPath, JSON.stringify(idx, null, 2), 'utf8'); @@ -70,16 +71,18 @@ describe('filterForContext', () => { const sessionId = randomUUID(); const slug = randomUUID(); try { - const events = [ + const events: SessionEvent[] = [ { - type: 'session_meta' as const, + type: 'session_meta', sessionId, projectPath: slug, cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, - { type: 'user' as const, turnId: 1, content: 'hello' }, - { type: 'assistant' as const, turnId: 1, content: 'hi', toolCalls: [] }, + { type: 'user', turnId: 1, content: 'hello' }, + { type: 'assistant', turnId: 1, content: 'hi', toolCalls: [] }, { type: 'user' as const, turnId: 2, content: 'bye' }, { type: 'assistant' as const, turnId: 2, content: 'bye', toolCalls: [] }, { type: 'rollback' as const, throughTurnId: 1, reason: 'test' }, @@ -123,6 +126,8 @@ describe('readUIHistory with visibility filtering', () => { projectPath: slug, cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', turnId: 1, content: 'hello' }, { type: 'assistant', turnId: 1, content: 'hi', toolCalls: [] }, @@ -147,6 +152,7 @@ describe('readUIHistory with visibility filtering', () => { title: 'test', currentTurnId: 2, usage: undefined, + mode: 'build', permissionMode: 'default', }) ); diff --git a/packages/codingcode/test/session/view-assembly.test.ts b/packages/codingcode/test/session/view-assembly.test.ts index 874b765..3c28dfe 100644 --- a/packages/codingcode/test/session/view-assembly.test.ts +++ b/packages/codingcode/test/session/view-assembly.test.ts @@ -15,6 +15,8 @@ function makeEvents(extra: SessionEvent[] = []): SessionEvent[] { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', turnId: 1, content: 'hello' }, { @@ -108,6 +110,8 @@ describe('buildContextMessages', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -134,6 +138,8 @@ describe('buildContextMessages', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -182,6 +188,8 @@ describe('buildContextMessages', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -235,6 +243,8 @@ describe('buildContextMessages', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -278,6 +288,8 @@ describe('buildContextMessages', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', @@ -320,6 +332,8 @@ describe('buildContextMessages', () => { projectPath: 'p', cwd: '/tmp', createdAt: new Date().toISOString(), + mode: 'build', + permissionMode: 'default', }, { type: 'user', turnId: 1, content: 'q1' }, { diff --git a/packages/codingcode/test/subagent/dispatch.test.ts b/packages/codingcode/test/subagent/dispatch.test.ts index 61c81bc..29e6dc7 100644 --- a/packages/codingcode/test/subagent/dispatch.test.ts +++ b/packages/codingcode/test/subagent/dispatch.test.ts @@ -15,7 +15,13 @@ import type { AgentEvent } from '../../src/agent/types.js'; import type { LLMClient } from '../../src/llm/client.js'; const mockLlm: Partial = { - modelInfo: { model: 'test-model', provider: 'test', maxTokens: 8192, displayName: 'test' }, + modelInfo: { + model: 'test-model', + provider: 'test', + maxTokens: 8192, + supportsToolCalling: true, + supportsStreaming: true, + }, }; function makeMockSession(parentPermissionMode: 'default' | 'bypass' | 'acceptEdits' = 'default') { diff --git a/packages/desktop/test/core-api-clients.test.ts b/packages/desktop/test/core-api-clients.test.ts index 8a391b0..b0f5bdf 100644 --- a/packages/desktop/test/core-api-clients.test.ts +++ b/packages/desktop/test/core-api-clients.test.ts @@ -7,7 +7,9 @@ describe('desktop core-api uses clients.* not raw api() for the 5 settings/sessi 'C:/Users/10116/Desktop/agent/coding code/packages/desktop/src/lib/core-api.ts', 'utf8' ); - expect(src).toMatch(/function getMemoryConfig[\s\S]*return clients\.settings\.getMemoryConfig\(\)/); + expect(src).toMatch( + /function getMemoryConfig[\s\S]*return clients\.settings\.getMemoryConfig\(\)/ + ); }); it('setMemoryModel delegates to clients.settings.setMemoryModel', () => { @@ -31,7 +33,9 @@ describe('desktop core-api uses clients.* not raw api() for the 5 settings/sessi 'C:/Users/10116/Desktop/agent/coding code/packages/desktop/src/lib/core-api.ts', 'utf8' ); - expect(src).toMatch(/function setCompactionModel[\s\S]*return clients\.settings\.setCompactionModel/); + expect(src).toMatch( + /function setCompactionModel[\s\S]*return clients\.settings\.setCompactionModel/ + ); }); it('getSessionPlan delegates to clients.sessions.getSessionPlan', () => {