@agentplat/sessions 0.2.0-beta.10
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.
- package/LICENSE +202 -0
- package/README.md +41 -0
- package/dist/http.d.ts +58 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +102 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +367 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1005 -0
- package/dist/index.js.map +1 -0
- package/package.json +42 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import type { AgentPlatID, JsonObject, Metadata, TenantContext } from '@agentplat/core';
|
|
2
|
+
import type { AgentRunInput, AgentRuntime, AgentUsage, StreamEvent } from '@agentplat/runtime';
|
|
3
|
+
/** One agent that can take turns in an ephemeral session. */
|
|
4
|
+
export interface SessionSpeaker {
|
|
5
|
+
id: AgentPlatID;
|
|
6
|
+
name: string;
|
|
7
|
+
instructions: string;
|
|
8
|
+
platform: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
modelName?: string;
|
|
11
|
+
config?: JsonObject;
|
|
12
|
+
metadata?: Metadata;
|
|
13
|
+
}
|
|
14
|
+
/** One bounded transcript entry produced by a session speaker. */
|
|
15
|
+
export interface SessionMessage {
|
|
16
|
+
speakerId: AgentPlatID;
|
|
17
|
+
speakerName: string;
|
|
18
|
+
content: string;
|
|
19
|
+
round: number;
|
|
20
|
+
turn: number;
|
|
21
|
+
createdAt: string;
|
|
22
|
+
}
|
|
23
|
+
/** Aggregated provider-reported usage across completed turns. */
|
|
24
|
+
export interface SessionUsage extends JsonObject {
|
|
25
|
+
inputTokens: number;
|
|
26
|
+
outputTokens: number;
|
|
27
|
+
totalTokens: number;
|
|
28
|
+
reportedTurns: number;
|
|
29
|
+
}
|
|
30
|
+
/** Stable reasons why an ephemeral session stopped. */
|
|
31
|
+
export type SessionStopReason = 'max_rounds' | 'predicate' | 'marker' | 'aborted' | 'stopped' | 'timeout' | 'token_budget' | 'cost_budget' | 'failed';
|
|
32
|
+
/** State passed to a custom stopping predicate after every completed turn. */
|
|
33
|
+
export interface SessionStopContext {
|
|
34
|
+
sessionId: AgentPlatID;
|
|
35
|
+
speaker: SessionSpeaker;
|
|
36
|
+
round: number;
|
|
37
|
+
turn: number;
|
|
38
|
+
history: readonly SessionMessage[];
|
|
39
|
+
latest: SessionMessage;
|
|
40
|
+
usage: Readonly<SessionUsage>;
|
|
41
|
+
}
|
|
42
|
+
/** Optional structured result returned by a stopping predicate. */
|
|
43
|
+
export interface SessionStopDecision {
|
|
44
|
+
stop: boolean;
|
|
45
|
+
detail?: string;
|
|
46
|
+
}
|
|
47
|
+
/** Context used to customize the runtime input for one speaker turn. */
|
|
48
|
+
export interface SessionInputContext {
|
|
49
|
+
sessionId: AgentPlatID;
|
|
50
|
+
scenario: AgentRunInput['input'];
|
|
51
|
+
speaker: SessionSpeaker;
|
|
52
|
+
round: number;
|
|
53
|
+
turn: number;
|
|
54
|
+
history: readonly SessionMessage[];
|
|
55
|
+
metadata?: Metadata;
|
|
56
|
+
}
|
|
57
|
+
/** Optional private persona details used only while assembling one turn input. */
|
|
58
|
+
export interface SessionPersona {
|
|
59
|
+
role?: string;
|
|
60
|
+
goals?: string[];
|
|
61
|
+
constraints?: string[];
|
|
62
|
+
peerDescription?: string;
|
|
63
|
+
}
|
|
64
|
+
/** Templates for the optional generic persona turn-input builder. */
|
|
65
|
+
export interface PersonaInputBuilderOptions {
|
|
66
|
+
personas?: Record<AgentPlatID, SessionPersona>;
|
|
67
|
+
openingTurn?: string;
|
|
68
|
+
replyTurn?: string;
|
|
69
|
+
}
|
|
70
|
+
/** One append-only record delivered to an optional session event sink. */
|
|
71
|
+
export interface SessionEventRecord {
|
|
72
|
+
eventId: AgentPlatID;
|
|
73
|
+
tenantId: AgentPlatID;
|
|
74
|
+
sessionId: AgentPlatID;
|
|
75
|
+
sequence: number;
|
|
76
|
+
occurredAt: string;
|
|
77
|
+
event: MultiAgentSessionEvent;
|
|
78
|
+
}
|
|
79
|
+
/** Durable or observational destination for an ephemeral session event trail. */
|
|
80
|
+
export interface SessionEventSink {
|
|
81
|
+
append(record: SessionEventRecord): Promise<void>;
|
|
82
|
+
}
|
|
83
|
+
/** Behavior when a configured event sink cannot accept an event. */
|
|
84
|
+
export type SessionSinkFailureMode = 'best_effort' | 'required';
|
|
85
|
+
/** Configuration shared by every invocation of a multi-agent session. */
|
|
86
|
+
export interface MultiAgentSessionOptions {
|
|
87
|
+
runtime: AgentRuntime;
|
|
88
|
+
speakers: SessionSpeaker[];
|
|
89
|
+
tenant?: TenantContext;
|
|
90
|
+
credentials?: Record<string, string>;
|
|
91
|
+
maxRounds?: number;
|
|
92
|
+
historyLimit?: number;
|
|
93
|
+
/** Maximum whole-session duration. A timeout stops the active provider run. */
|
|
94
|
+
sessionTimeoutMs?: number;
|
|
95
|
+
/** Maximum duration of one speaker turn. */
|
|
96
|
+
turnTimeoutMs?: number;
|
|
97
|
+
/** Switch all remaining turns to this registered platform after one provider failure. */
|
|
98
|
+
fallbackPlatform?: string | SessionFallbackOptions;
|
|
99
|
+
/** Soft cap for total reported tokens. The completing turn is preserved. */
|
|
100
|
+
maxTokens?: number;
|
|
101
|
+
/** Soft caps for total reported tokens by speaker id. */
|
|
102
|
+
maxTokensBySpeaker?: Record<AgentPlatID, number>;
|
|
103
|
+
/** Soft cap for estimated session cost. Requires `estimateCostUsd`. */
|
|
104
|
+
maxCostUsd?: number;
|
|
105
|
+
/** Converts one completed provider turn into a USD estimate. */
|
|
106
|
+
estimateCostUsd?: (context: SessionCostContext) => number;
|
|
107
|
+
stopMarkers?: string[];
|
|
108
|
+
stopWhen?: (context: SessionStopContext) => boolean | SessionStopDecision | Promise<boolean | SessionStopDecision>;
|
|
109
|
+
buildInput?: (context: SessionInputContext) => AgentRunInput;
|
|
110
|
+
/** Optional append-only event destination; it does not make a session a Room. */
|
|
111
|
+
eventSink?: SessionEventSink;
|
|
112
|
+
/** Defaults to best_effort. Required sinks fail the session stream on write errors. */
|
|
113
|
+
sinkFailureMode?: SessionSinkFailureMode;
|
|
114
|
+
idGenerator?: () => AgentPlatID;
|
|
115
|
+
clock?: () => Date;
|
|
116
|
+
}
|
|
117
|
+
/** Explicit fallback behavior for a session whose live provider becomes unavailable. */
|
|
118
|
+
export interface SessionFallbackOptions {
|
|
119
|
+
platform: string;
|
|
120
|
+
/** Kept for self-documenting configurations; session history is always retained. */
|
|
121
|
+
retainHistory?: true;
|
|
122
|
+
}
|
|
123
|
+
/** Provider usage available to a cost estimator after a turn completes. */
|
|
124
|
+
export interface SessionCostContext {
|
|
125
|
+
speaker: SessionSpeaker;
|
|
126
|
+
usage: AgentUsage;
|
|
127
|
+
aggregateUsage: SessionUsage;
|
|
128
|
+
round: number;
|
|
129
|
+
turn: number;
|
|
130
|
+
}
|
|
131
|
+
/** Input for one independent session execution. */
|
|
132
|
+
export interface MultiAgentSessionInput {
|
|
133
|
+
input: AgentRunInput['input'];
|
|
134
|
+
history?: SessionMessage[];
|
|
135
|
+
metadata?: Metadata;
|
|
136
|
+
sessionId?: AgentPlatID;
|
|
137
|
+
/** Overrides the configured session timeout for one execution. */
|
|
138
|
+
timeoutMs?: number;
|
|
139
|
+
signal?: AbortSignal;
|
|
140
|
+
/** Stops only after the active speaker turn completes cleanly. */
|
|
141
|
+
stopSignal?: AbortSignal;
|
|
142
|
+
}
|
|
143
|
+
/** Public result returned after draining a multi-agent session. */
|
|
144
|
+
export interface MultiAgentSessionResult {
|
|
145
|
+
sessionId: AgentPlatID;
|
|
146
|
+
status: 'completed' | 'aborted' | 'failed';
|
|
147
|
+
stopReason: SessionStopReason;
|
|
148
|
+
stopDetail?: string;
|
|
149
|
+
roundsCompleted: number;
|
|
150
|
+
turnsCompleted: number;
|
|
151
|
+
history: SessionMessage[];
|
|
152
|
+
usage: SessionUsage;
|
|
153
|
+
/** Sum returned by `estimateCostUsd`, when configured. */
|
|
154
|
+
estimatedCostUsd?: number;
|
|
155
|
+
durationMs: number;
|
|
156
|
+
}
|
|
157
|
+
/** A UI-oriented projection derived from the public session event stream. */
|
|
158
|
+
export interface SessionTurnView {
|
|
159
|
+
turnId: AgentPlatID;
|
|
160
|
+
speaker: SessionSpeakerRef;
|
|
161
|
+
round: number;
|
|
162
|
+
turn: number;
|
|
163
|
+
createdAt: string;
|
|
164
|
+
content: string;
|
|
165
|
+
status: 'running' | 'completed' | 'failed';
|
|
166
|
+
usage?: AgentUsage;
|
|
167
|
+
latencyMs?: number;
|
|
168
|
+
model?: string;
|
|
169
|
+
finishReason?: string;
|
|
170
|
+
}
|
|
171
|
+
/** Reducer state suitable for browser UI bubbles and session dashboards. */
|
|
172
|
+
export interface SessionViewState {
|
|
173
|
+
sessionId?: AgentPlatID;
|
|
174
|
+
status: 'idle' | 'running' | 'completed' | 'aborted' | 'failed';
|
|
175
|
+
speakers: SessionSpeakerRef[];
|
|
176
|
+
turns: Record<AgentPlatID, SessionTurnView>;
|
|
177
|
+
turnOrder: AgentPlatID[];
|
|
178
|
+
/** The active turn, so UIs do not need to scan every turn. */
|
|
179
|
+
activeTurnId?: AgentPlatID;
|
|
180
|
+
usage: SessionUsage;
|
|
181
|
+
/** Sum of provider-reported completed-turn latency. */
|
|
182
|
+
totalLatencyMs: number;
|
|
183
|
+
/** Stable live metrics snapshot for dashboards and transport controllers. */
|
|
184
|
+
metrics: SessionMetrics;
|
|
185
|
+
/** Sum of estimates supplied by the configured cost estimator. */
|
|
186
|
+
estimatedCostUsd: number;
|
|
187
|
+
stopReason?: SessionStopReason;
|
|
188
|
+
stopDetail?: string;
|
|
189
|
+
durationMs?: number;
|
|
190
|
+
/** True while a server-side cooperative stop can affect the active session. */
|
|
191
|
+
canSoftStop: boolean;
|
|
192
|
+
/** True once at least one completed turn can be exported as history. */
|
|
193
|
+
canResume: boolean;
|
|
194
|
+
/** Convenience alias for a live stream; false after a terminal event. */
|
|
195
|
+
isLive: boolean;
|
|
196
|
+
}
|
|
197
|
+
/** Pure reducer for `MultiAgentSessionEvent` values received over SSE or in-process. */
|
|
198
|
+
export interface SessionEventReducer {
|
|
199
|
+
initialState: SessionViewState;
|
|
200
|
+
reduce(state: SessionViewState, event: MultiAgentSessionEvent): SessionViewState;
|
|
201
|
+
}
|
|
202
|
+
/** Stable, dependency-free metrics for any metrics backend. */
|
|
203
|
+
export interface SessionMetrics extends JsonObject {
|
|
204
|
+
inputTokens: number;
|
|
205
|
+
outputTokens: number;
|
|
206
|
+
totalTokens: number;
|
|
207
|
+
reportedTurns: number;
|
|
208
|
+
turnsCompleted: number;
|
|
209
|
+
durationMs: number;
|
|
210
|
+
estimatedCostUsd: number;
|
|
211
|
+
}
|
|
212
|
+
/** Compact speaker identity transported in session event payloads. */
|
|
213
|
+
export interface SessionSpeakerRef extends JsonObject {
|
|
214
|
+
id: AgentPlatID;
|
|
215
|
+
name: string;
|
|
216
|
+
}
|
|
217
|
+
/** Payload common to events scoped to one session. */
|
|
218
|
+
export interface SessionEventPayload extends JsonObject {
|
|
219
|
+
sessionId: AgentPlatID;
|
|
220
|
+
}
|
|
221
|
+
/** Payload common to events scoped to one speaker turn. */
|
|
222
|
+
export interface SessionTurnPayload extends SessionEventPayload {
|
|
223
|
+
turnId: AgentPlatID;
|
|
224
|
+
speaker: SessionSpeakerRef;
|
|
225
|
+
round: number;
|
|
226
|
+
turn: number;
|
|
227
|
+
createdAt: string;
|
|
228
|
+
}
|
|
229
|
+
/** Payload emitted when a session starts. */
|
|
230
|
+
export interface SessionStartedPayload extends SessionEventPayload {
|
|
231
|
+
speakers: SessionSpeakerRef[];
|
|
232
|
+
maxRounds: number;
|
|
233
|
+
historyLimit: number;
|
|
234
|
+
}
|
|
235
|
+
/** Payload emitted after one speaker turn completes. */
|
|
236
|
+
export type SessionTurnCompletedPayload = SessionTurnPayload & {
|
|
237
|
+
usage: AgentUsage;
|
|
238
|
+
aggregateUsage: SessionUsage;
|
|
239
|
+
latencyMs: number;
|
|
240
|
+
model?: string;
|
|
241
|
+
finishReason?: string;
|
|
242
|
+
estimatedCostUsd?: number;
|
|
243
|
+
totalEstimatedCostUsd?: number;
|
|
244
|
+
};
|
|
245
|
+
/** Payload that keeps provider tool details scoped to their session turn. */
|
|
246
|
+
export type SessionToolPayload = SessionTurnPayload & {
|
|
247
|
+
runtimePayload?: JsonObject;
|
|
248
|
+
};
|
|
249
|
+
/** Payload explaining why a session stopped. */
|
|
250
|
+
export type SessionStopPayload = SessionEventPayload & {
|
|
251
|
+
reason: SessionStopReason;
|
|
252
|
+
detail?: string;
|
|
253
|
+
marker?: string;
|
|
254
|
+
round: number;
|
|
255
|
+
turn: number;
|
|
256
|
+
};
|
|
257
|
+
/** Payload emitted when one active speaker turn fails. */
|
|
258
|
+
export type SessionFailurePayload = SessionTurnPayload & {
|
|
259
|
+
reason: 'failed';
|
|
260
|
+
detail?: string;
|
|
261
|
+
};
|
|
262
|
+
/** Payload emitted before a failed provider turn is retried or terminates. */
|
|
263
|
+
export type SessionTurnFailedPayload = SessionFailurePayload & {
|
|
264
|
+
platform: string;
|
|
265
|
+
};
|
|
266
|
+
/** Payload emitted when the session changes all remaining turns to a fallback platform. */
|
|
267
|
+
export type SessionProviderFallbackPayload = SessionTurnPayload & {
|
|
268
|
+
fromPlatform: string;
|
|
269
|
+
toPlatform: string;
|
|
270
|
+
detail?: string;
|
|
271
|
+
};
|
|
272
|
+
/** Payload emitted as the final event in a session stream. */
|
|
273
|
+
export type SessionCompletedPayload = SessionEventPayload & {
|
|
274
|
+
status: 'completed' | 'aborted' | 'failed';
|
|
275
|
+
stopReason: SessionStopReason;
|
|
276
|
+
stopDetail?: string;
|
|
277
|
+
roundsCompleted: number;
|
|
278
|
+
turnsCompleted: number;
|
|
279
|
+
usage: SessionUsage;
|
|
280
|
+
estimatedCostUsd?: number;
|
|
281
|
+
durationMs: number;
|
|
282
|
+
};
|
|
283
|
+
/** Typed events emitted by `MultiAgentSession.stream()`. */
|
|
284
|
+
export type MultiAgentSessionEvent = SessionPayloadEvent<'session_started', SessionStartedPayload> | SessionPayloadEvent<'speaker_changed', SessionTurnPayload> | SessionPayloadEvent<'turn_started', SessionTurnPayload> | (SessionPayloadEvent<'token', SessionTurnPayload> & {
|
|
285
|
+
content: string;
|
|
286
|
+
}) | SessionPayloadEvent<'tool_call', SessionToolPayload> | SessionPayloadEvent<'tool_result', SessionToolPayload> | (SessionPayloadEvent<'turn_completed', SessionTurnCompletedPayload> & {
|
|
287
|
+
content: string;
|
|
288
|
+
}) | SessionPayloadEvent<'stop_reason', SessionStopPayload> | SessionPayloadEvent<'turn_failed', SessionTurnFailedPayload> | SessionPayloadEvent<'provider_fallback', SessionProviderFallbackPayload> | (SessionPayloadEvent<'session_failed', SessionFailurePayload> & {
|
|
289
|
+
content: string;
|
|
290
|
+
}) | SessionPayloadEvent<'session_completed', SessionCompletedPayload>;
|
|
291
|
+
type SessionPayloadEvent<TType extends string, TPayload extends JsonObject> = StreamEvent<TType, TPayload> & {
|
|
292
|
+
payload: TPayload;
|
|
293
|
+
};
|
|
294
|
+
/**
|
|
295
|
+
* Deterministic, ephemeral round-robin orchestration over an `AgentRuntime`.
|
|
296
|
+
*
|
|
297
|
+
* The session owns turn order and bounded transcript assembly only. It does not
|
|
298
|
+
* persist data, execute tools itself or imply Agent Room governance.
|
|
299
|
+
*/
|
|
300
|
+
export declare class MultiAgentSession {
|
|
301
|
+
private readonly options;
|
|
302
|
+
private readonly speakers;
|
|
303
|
+
private readonly tenant;
|
|
304
|
+
private readonly credentials?;
|
|
305
|
+
private readonly maxRounds;
|
|
306
|
+
private readonly historyLimit;
|
|
307
|
+
private readonly sessionTimeoutMs?;
|
|
308
|
+
private readonly turnTimeoutMs?;
|
|
309
|
+
private readonly fallbackPlatform?;
|
|
310
|
+
private readonly maxTokens?;
|
|
311
|
+
private readonly maxTokensBySpeaker;
|
|
312
|
+
private readonly maxCostUsd?;
|
|
313
|
+
private readonly stopMarkers;
|
|
314
|
+
private readonly sinkFailureMode;
|
|
315
|
+
private readonly idGenerator;
|
|
316
|
+
private readonly clock;
|
|
317
|
+
constructor(options: MultiAgentSessionOptions);
|
|
318
|
+
/** Stream one independent multi-agent execution. */
|
|
319
|
+
stream(input: MultiAgentSessionInput): AsyncIterable<MultiAgentSessionEvent>;
|
|
320
|
+
/** Run a session to completion and return its bounded final state. */
|
|
321
|
+
run(input: MultiAgentSessionInput): Promise<MultiAgentSessionResult>;
|
|
322
|
+
private execute;
|
|
323
|
+
private recordEvents;
|
|
324
|
+
private agentDefinition;
|
|
325
|
+
private buildInput;
|
|
326
|
+
}
|
|
327
|
+
/** Create a reusable ephemeral multi-agent session. */
|
|
328
|
+
export declare function createMultiAgentSession(options: MultiAgentSessionOptions): MultiAgentSession;
|
|
329
|
+
/** Format a bounded transcript without making its presentation a prompt DSL. */
|
|
330
|
+
export declare function formatSessionTranscript(history: readonly SessionMessage[]): string;
|
|
331
|
+
/** Build a generic, overwriteable input mapper for persona-based turns. */
|
|
332
|
+
export declare function createPersonaInputBuilder(options?: PersonaInputBuilderOptions): (context: SessionInputContext) => AgentRunInput;
|
|
333
|
+
/** Create a pure reducer that maps streamed events into UI-friendly state. */
|
|
334
|
+
export declare function createSessionEventReducer(): SessionEventReducer;
|
|
335
|
+
/** Convert a completed session into stable numeric metrics for any backend. */
|
|
336
|
+
export declare function sessionMetrics(result: Pick<MultiAgentSessionResult, 'usage' | 'turnsCompleted' | 'durationMs' | 'estimatedCostUsd'>): SessionMetrics;
|
|
337
|
+
/** Export reducer state as lossless session history for a later invocation. */
|
|
338
|
+
export declare function exportSessionHistory(state: Pick<SessionViewState, 'turnOrder' | 'turns'>): SessionMessage[];
|
|
339
|
+
/** Create a speaker and aligned persona from a form-friendly configuration DTO. */
|
|
340
|
+
export interface SpeakerDefinitionInput {
|
|
341
|
+
id: AgentPlatID;
|
|
342
|
+
name: string;
|
|
343
|
+
platform: string;
|
|
344
|
+
instructions?: string;
|
|
345
|
+
role?: string;
|
|
346
|
+
goals?: string[];
|
|
347
|
+
constraints?: string[];
|
|
348
|
+
peerDescription?: string;
|
|
349
|
+
description?: string;
|
|
350
|
+
modelName?: string;
|
|
351
|
+
config?: JsonObject;
|
|
352
|
+
metadata?: Metadata;
|
|
353
|
+
}
|
|
354
|
+
export declare function defineSpeaker(input: SpeakerDefinitionInput): {
|
|
355
|
+
speaker: SessionSpeaker;
|
|
356
|
+
persona: SessionPersona;
|
|
357
|
+
};
|
|
358
|
+
/** Portable, form-friendly scenario DTO for sessions that do not need a domain model. */
|
|
359
|
+
export interface ScenarioInput {
|
|
360
|
+
topic: string;
|
|
361
|
+
title?: string;
|
|
362
|
+
metadata?: JsonObject;
|
|
363
|
+
}
|
|
364
|
+
/** Format a structured scenario consistently before it becomes a session prompt. */
|
|
365
|
+
export declare function buildScenarioInput(input: ScenarioInput): string;
|
|
366
|
+
export {};
|
|
367
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|