forked from wangziqi/gongxue-base
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
import { Module, OnModuleInit } from '@nestjs/common';
|
|
import { StudentsModule } from '../students/students.module';
|
|
import { AgentToolRegistry } from './agent-tool.registry';
|
|
import { AgentToolExecutor } from './agent-tool.executor';
|
|
import { SearchStudentsTool } from './tools/search-students.tool';
|
|
import { GetStudentBasicTool } from './tools/get-student-basic.tool';
|
|
|
|
/**
|
|
* Agent Tools feature module.
|
|
*
|
|
* Provides a provider-neutral tool executor for LLM agent frameworks.
|
|
* SDK consumers interact ONLY with {@link AgentToolExecutor}.
|
|
*
|
|
* `AgentToolRegistry` is an internal provider — it is NOT exported from
|
|
* this module. All tool listing and execution goes through the executor,
|
|
* which enforces double-check authorization, audit logging, and context
|
|
* trust validation.
|
|
*
|
|
* Imports `StudentsModule` for student data access and relies on the
|
|
* globally available `AuthorizationModule` and `OperationLogsModule`.
|
|
*/
|
|
@Module({
|
|
imports: [StudentsModule],
|
|
providers: [
|
|
AgentToolRegistry,
|
|
AgentToolExecutor,
|
|
SearchStudentsTool,
|
|
GetStudentBasicTool,
|
|
],
|
|
exports: [AgentToolExecutor],
|
|
})
|
|
export class AgentToolsModule implements OnModuleInit {
|
|
constructor(
|
|
private readonly registry: AgentToolRegistry,
|
|
private readonly searchTool: SearchStudentsTool,
|
|
private readonly getTool: GetStudentBasicTool,
|
|
) {}
|
|
|
|
onModuleInit(): void {
|
|
this.registry.register(this.searchTool);
|
|
this.registry.register(this.getTool);
|
|
}
|
|
}
|