feat(19-01): add getAgentQuestions and listWaitingAgents tRPC procedures
- getAgentQuestions returns structured PendingQuestions from AgentManager - listWaitingAgents filters agents to waiting_for_input status - Updated JSDoc procedure list with both new procedures
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
import { initTRPC, TRPCError } from '@trpc/server';
|
import { initTRPC, TRPCError } from '@trpc/server';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import type { TRPCContext } from './context.js';
|
import type { TRPCContext } from './context.js';
|
||||||
import type { AgentInfo, AgentResult } from '../agent/types.js';
|
import type { AgentInfo, AgentResult, PendingQuestions } from '../agent/types.js';
|
||||||
import type { TaskRepository } from '../db/repositories/task-repository.js';
|
import type { TaskRepository } from '../db/repositories/task-repository.js';
|
||||||
import type { MessageRepository } from '../db/repositories/message-repository.js';
|
import type { MessageRepository } from '../db/repositories/message-repository.js';
|
||||||
import type { InitiativeRepository } from '../db/repositories/initiative-repository.js';
|
import type { InitiativeRepository } from '../db/repositories/initiative-repository.js';
|
||||||
@@ -308,6 +308,8 @@ function requirePhaseDispatchManager(ctx: TRPCContext): PhaseDispatchManager {
|
|||||||
* - getAgentByName: Get agent by name
|
* - getAgentByName: Get agent by name
|
||||||
* - resumeAgent: Resume an agent waiting for input
|
* - resumeAgent: Resume an agent waiting for input
|
||||||
* - getAgentResult: Get result of agent's work
|
* - getAgentResult: Get result of agent's work
|
||||||
|
* - getAgentQuestions: Get pending questions for an agent waiting for input
|
||||||
|
* - listWaitingAgents: List agents currently waiting for user input
|
||||||
* - listTasks: List tasks for a plan
|
* - listTasks: List tasks for a plan
|
||||||
* - getTask: Get task by ID
|
* - getTask: Get task by ID
|
||||||
* - updateTaskStatus: Update task status
|
* - updateTaskStatus: Update task status
|
||||||
@@ -454,6 +456,29 @@ export const appRouter = router({
|
|||||||
return agentManager.getResult(agent.id);
|
return agentManager.getResult(agent.id);
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get pending questions for an agent waiting for input.
|
||||||
|
* Returns structured question data (options, multiSelect) from AgentManager.
|
||||||
|
*/
|
||||||
|
getAgentQuestions: publicProcedure
|
||||||
|
.input(agentIdentifierSchema)
|
||||||
|
.query(async ({ ctx, input }): Promise<PendingQuestions | null> => {
|
||||||
|
const agentManager = requireAgentManager(ctx);
|
||||||
|
const agent = await resolveAgent(ctx, input);
|
||||||
|
return agentManager.getPendingQuestions(agent.id);
|
||||||
|
}),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* List agents currently waiting for user input.
|
||||||
|
* Filters to only agents with status 'waiting_for_input'.
|
||||||
|
*/
|
||||||
|
listWaitingAgents: publicProcedure
|
||||||
|
.query(async ({ ctx }) => {
|
||||||
|
const agentManager = requireAgentManager(ctx);
|
||||||
|
const allAgents = await agentManager.list();
|
||||||
|
return allAgents.filter(agent => agent.status === 'waiting_for_input');
|
||||||
|
}),
|
||||||
|
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
// Task Procedures
|
// Task Procedures
|
||||||
// ===========================================================================
|
// ===========================================================================
|
||||||
|
|||||||
Reference in New Issue
Block a user