@adminforth/agent 2.7.4 → 2.7.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -3,7 +3,7 @@ import type { AgentSessionStore } from "../persistence/sessionStore.js";
|
|
|
3
3
|
import type { SteerBuffer } from "../domain/steerBuffer.js";
|
|
4
4
|
import type { PluginOptions } from "../types.js";
|
|
5
5
|
import type { LlmPort } from "./ports.js";
|
|
6
|
-
import type { DebugSink, HandleTurnInput, HandleEditTurnInput, PendingInterrupt, RunAndPersistAgentResponseInput, RunAndPersistAgentResponseResult } from "../domain/turnTypes.js";
|
|
6
|
+
import type { BaseAgentTurnInput, DebugSink, HandleTurnInput, HandleEditTurnInput, PendingInterrupt, RunAndPersistAgentResponseInput, RunAndPersistAgentResponseResult } from "../domain/turnTypes.js";
|
|
7
7
|
/**
|
|
8
8
|
* Build the provider-agnostic resume payload for a human-in-the-loop turn.
|
|
9
9
|
* Exported for unit testing; the LLM port wraps it into a LangGraph Command.
|
|
@@ -72,7 +72,7 @@ export declare class RunTurnUseCase {
|
|
|
72
72
|
private resolvePendingInterrupts;
|
|
73
73
|
private requiresSessionOwnership;
|
|
74
74
|
/** Verify the session exists and belongs to the requesting admin user. */
|
|
75
|
-
|
|
75
|
+
assertSessionOwnership(sessionId: string, adminUser: BaseAgentTurnInput["adminUser"]): Promise<void>;
|
|
76
76
|
/**
|
|
77
77
|
* Prepare an edit/branch turn: resolve the fork checkpoint from the previous turn,
|
|
78
78
|
* truncate the conversation after the edited turn, and reuse the edited turn's id
|
package/dist/index.js
CHANGED
|
@@ -154,10 +154,11 @@ export default class AdminForthAgentPlugin extends AdminForthPlugin {
|
|
|
154
154
|
handleTurn: this.runTurnUseCase.handleTurn.bind(this.runTurnUseCase),
|
|
155
155
|
handleEditTurn: this.runTurnUseCase.handleEditTurn.bind(this.runTurnUseCase),
|
|
156
156
|
handleSpeechTurn: this.speechTurnService.handle.bind(this.speechTurnService),
|
|
157
|
-
steer: ({ sessionId, message })
|
|
157
|
+
steer: (_a) => __awaiter(this, [_a], void 0, function* ({ sessionId, message, adminUser }) {
|
|
158
|
+
yield this.runTurnUseCase.assertSessionOwnership(sessionId, adminUser);
|
|
158
159
|
const { id } = this.steerBuffer.add(sessionId, message);
|
|
159
160
|
return { id, queued: this.steerBuffer.size(sessionId) };
|
|
160
|
-
},
|
|
161
|
+
}),
|
|
161
162
|
runAndPersistAgentResponse: this.runTurnUseCase.runAndPersistAgentResponse.bind(this.runTurnUseCase),
|
|
162
163
|
getSessionTurns: this.sessionStore.getSessionTurns.bind(this.sessionStore),
|
|
163
164
|
createNewTurn: this.sessionStore.createNewTurn.bind(this.sessionStore),
|
|
@@ -15,10 +15,11 @@ export type AgentEndpointsContext = {
|
|
|
15
15
|
steer(input: {
|
|
16
16
|
sessionId: string;
|
|
17
17
|
message: string;
|
|
18
|
-
|
|
18
|
+
adminUser: any;
|
|
19
|
+
}): Promise<{
|
|
19
20
|
id: string;
|
|
20
21
|
queued: number;
|
|
21
|
-
}
|
|
22
|
+
}>;
|
|
22
23
|
runAndPersistAgentResponse(input: RunAndPersistAgentResponseInput): Promise<RunAndPersistAgentResponseResult>;
|
|
23
24
|
getSessionTurns(sessionId: string): Promise<SessionTurn[]>;
|
|
24
25
|
createNewTurn(sessionId: string, prompt: string, response?: string): Promise<string>;
|
|
@@ -167,14 +167,15 @@ export function setupCoreEndpoints(ctx, server) {
|
|
|
167
167
|
method: 'POST',
|
|
168
168
|
path: `/agent/steer`,
|
|
169
169
|
request_schema: agentSteerBodySchema,
|
|
170
|
-
handler: (_a) => __awaiter(this, [_a], void 0, function* ({ body }) {
|
|
170
|
+
handler: (_a) => __awaiter(this, [_a], void 0, function* ({ body, adminUser }) {
|
|
171
171
|
const data = body;
|
|
172
172
|
// Fire-and-forget: the steer is buffered and folded into the running turn by the
|
|
173
173
|
// beforeModel steer middleware, which signals `data-steer-applied` on that turn's
|
|
174
174
|
// SSE stream once consumed. This endpoint only confirms it was received/queued.
|
|
175
|
-
const { id, queued } = ctx.steer({
|
|
175
|
+
const { id, queued } = yield ctx.steer({
|
|
176
176
|
sessionId: data.sessionId,
|
|
177
177
|
message: data.message,
|
|
178
|
+
adminUser: adminUser
|
|
178
179
|
});
|
|
179
180
|
return { ok: true, id, queued };
|
|
180
181
|
})
|