mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-04-28 22:14:52 -07:00
Support context injection via SessionStart hook. (#15746)
This commit is contained in:
committed by
GitHub
parent
2da911e4a0
commit
6d1e27633a
@@ -61,7 +61,9 @@ describe('createContentGenerator', () => {
|
||||
expect(FakeContentGenerator.fromFile).toHaveBeenCalledWith(
|
||||
fakeResponsesFile,
|
||||
);
|
||||
expect(generator).toEqual(mockGenerator);
|
||||
expect(generator).toEqual(
|
||||
new LoggingContentGenerator(mockGenerator, mockConfigWithFake),
|
||||
);
|
||||
});
|
||||
|
||||
it('should create a RecordingContentGenerator', async () => {
|
||||
|
||||
@@ -114,7 +114,10 @@ export async function createContentGenerator(
|
||||
): Promise<ContentGenerator> {
|
||||
const generator = await (async () => {
|
||||
if (gcConfig.fakeResponses) {
|
||||
return FakeContentGenerator.fromFile(gcConfig.fakeResponses);
|
||||
return new LoggingContentGenerator(
|
||||
await FakeContentGenerator.fromFile(gcConfig.fakeResponses),
|
||||
gcConfig,
|
||||
);
|
||||
}
|
||||
const version = await getVersion();
|
||||
const model = resolveModel(
|
||||
|
||||
@@ -10,10 +10,12 @@ import {
|
||||
type HookExecutionRequest,
|
||||
type HookExecutionResponse,
|
||||
} from '../confirmation-bus/types.js';
|
||||
import type {
|
||||
SessionStartSource,
|
||||
SessionEndReason,
|
||||
PreCompressTrigger,
|
||||
import {
|
||||
type SessionStartSource,
|
||||
type SessionEndReason,
|
||||
type PreCompressTrigger,
|
||||
createHookOutput,
|
||||
type DefaultHookOutput,
|
||||
} from '../hooks/types.js';
|
||||
import { debugLogger } from '../utils/debugLogger.js';
|
||||
|
||||
@@ -22,13 +24,17 @@ import { debugLogger } from '../utils/debugLogger.js';
|
||||
*
|
||||
* @param messageBus The message bus to use for hook communication
|
||||
* @param source The source/trigger of the session start
|
||||
* @returns The output from the SessionStart hook, or undefined if failed/no output
|
||||
*/
|
||||
export async function fireSessionStartHook(
|
||||
messageBus: MessageBus,
|
||||
source: SessionStartSource,
|
||||
): Promise<void> {
|
||||
): Promise<DefaultHookOutput | undefined> {
|
||||
try {
|
||||
await messageBus.request<HookExecutionRequest, HookExecutionResponse>(
|
||||
const response = await messageBus.request<
|
||||
HookExecutionRequest,
|
||||
HookExecutionResponse
|
||||
>(
|
||||
{
|
||||
type: MessageBusType.HOOK_EXECUTION_REQUEST,
|
||||
eventName: 'SessionStart',
|
||||
@@ -38,8 +44,14 @@ export async function fireSessionStartHook(
|
||||
},
|
||||
MessageBusType.HOOK_EXECUTION_RESPONSE,
|
||||
);
|
||||
|
||||
if (response.output) {
|
||||
return createHookOutput('SessionStart', response.output);
|
||||
}
|
||||
return undefined;
|
||||
} catch (error) {
|
||||
debugLogger.debug(`SessionStart hook failed:`, error);
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user