File size: 1,195 Bytes
68d7816 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | import { Service } from '#/_base/di/service';
import { LifecycleScope } from '#/app/scopes';
import { ScopeActivation, registerScopedService } from '#/_base/di/scope';
import { IAgentReminderService } from '#/features/reminder/reminderService';
import { DYNAMIC_TOOL_SCHEMA_VARIANT } from './dynamicTools';
import { IAgentToolSelectService } from './toolSelect';
import { IAgentToolSelectSchemasService } from './toolSelectSchemas';
export class AgentToolSelectSchemasService extends Service implements IAgentToolSelectSchemasService {
declare readonly _serviceBrand: undefined;
constructor(
@IAgentToolSelectService toolSelect: IAgentToolSelectService,
@IAgentReminderService reminder: IAgentReminderService,
) {
super();
this._register(
reminder.register(DYNAMIC_TOOL_SCHEMA_VARIANT, () => {
const tools = toolSelect.drainPendingToolSchemas();
if (tools === undefined) return undefined;
return { message: { role: 'system', content: [], tools } };
}),
);
}
}
registerScopedService(
LifecycleScope.Agent,
IAgentToolSelectSchemasService,
AgentToolSelectSchemasService,
ScopeActivation.OnScopeCreated,
'toolSelect',
);
|