@dudousxd/nestjs-agent-core 0.38.1 → 0.39.0
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/dist/ag-ui/index.d.cts +1 -1
- package/dist/ag-ui/index.d.ts +1 -1
- package/dist/genui/index.d.cts +2 -2
- package/dist/genui/index.d.ts +2 -2
- package/dist/guardrails/index.d.cts +3 -3
- package/dist/guardrails/index.d.ts +3 -3
- package/dist/index.cjs +189 -17
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +48 -9
- package/dist/index.d.ts +48 -9
- package/dist/index.js +185 -17
- package/dist/index.js.map +1 -1
- package/dist/{processors-CAVevaYJ.d.cts → processors-6p9nrqEi.d.cts} +3 -1
- package/dist/{processors-C-FP4nDy.d.ts → processors-Bp5XmF6V.d.ts} +3 -1
- package/dist/{stream-events-rpd3d6gh.d.cts → stream-events-CbVEowYb.d.cts} +110 -1
- package/dist/{stream-events-rpd3d6gh.d.ts → stream-events-CbVEowYb.d.ts} +110 -1
- package/dist/{tool-hhssZ_HW.d.ts → tool-DZYLEKnl.d.cts} +3 -1
- package/dist/{tool-Dp8HA_f4.d.cts → tool-_iq4xRyk.d.ts} +3 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as ModelMessage, a as Actor, d as ToolCallRequest } from './stream-events-
|
|
1
|
+
import { M as ModelMessage, a as Actor, d as ToolCallRequest } from './stream-events-CbVEowYb.cjs';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* The two seams that see a turn's traffic to and from the model: an {@link InputProcessor} rewrites
|
|
@@ -23,6 +23,8 @@ interface ProcessorContext {
|
|
|
23
23
|
actor: Actor;
|
|
24
24
|
/** The agent running this turn. Undefined → the default agent. */
|
|
25
25
|
agentName?: string;
|
|
26
|
+
/** The persona the turn runs under, when it runs under one. */
|
|
27
|
+
persona?: string;
|
|
26
28
|
/** 0-based model step within the run — the same index the `llm:<step>` checkpoint carries. */
|
|
27
29
|
step: number;
|
|
28
30
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { M as ModelMessage, a as Actor, d as ToolCallRequest } from './stream-events-
|
|
1
|
+
import { M as ModelMessage, a as Actor, d as ToolCallRequest } from './stream-events-CbVEowYb.js';
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* The two seams that see a turn's traffic to and from the model: an {@link InputProcessor} rewrites
|
|
@@ -23,6 +23,8 @@ interface ProcessorContext {
|
|
|
23
23
|
actor: Actor;
|
|
24
24
|
/** The agent running this turn. Undefined → the default agent. */
|
|
25
25
|
agentName?: string;
|
|
26
|
+
/** The persona the turn runs under, when it runs under one. */
|
|
27
|
+
persona?: string;
|
|
26
28
|
/** 0-based model step within the run — the same index the `llm:<step>` checkpoint carries. */
|
|
27
29
|
step: number;
|
|
28
30
|
}
|
|
@@ -115,6 +115,8 @@ interface CreateThreadInput {
|
|
|
115
115
|
* included).
|
|
116
116
|
*/
|
|
117
117
|
id?: string;
|
|
118
|
+
/** The persona the thread's turns run under when a send names none. See {@link ThreadSummary.persona}. */
|
|
119
|
+
persona?: string;
|
|
118
120
|
}
|
|
119
121
|
interface AppendMessageInput {
|
|
120
122
|
threadId: string;
|
|
@@ -122,6 +124,8 @@ interface AppendMessageInput {
|
|
|
122
124
|
content: string;
|
|
123
125
|
/** Which agent produced this message (assistant messages) — provenance. */
|
|
124
126
|
agentName?: string;
|
|
127
|
+
/** The persona the turn ran under. See {@link StoredMessage.persona}. */
|
|
128
|
+
persona?: string;
|
|
125
129
|
toolCalls?: ToolCallRequest[];
|
|
126
130
|
toolResults?: ToolResult[];
|
|
127
131
|
/** Files the user attached to this message (image/PDF). Persisted verbatim. */
|
|
@@ -191,6 +195,8 @@ interface UpdateThreadInput {
|
|
|
191
195
|
defaultAgent?: string | null;
|
|
192
196
|
/** `null` unpins the thread's model (turns run on the provider default). */
|
|
193
197
|
model?: string | null;
|
|
198
|
+
/** `null` clears the thread's persona (sends fall back to the agent's default persona). */
|
|
199
|
+
persona?: string | null;
|
|
194
200
|
}
|
|
195
201
|
interface RecordUsageInput {
|
|
196
202
|
threadId: string;
|
|
@@ -490,6 +496,8 @@ interface QueuedMessage {
|
|
|
490
496
|
content: string;
|
|
491
497
|
attachments?: MessageAttachment[];
|
|
492
498
|
agentName?: string;
|
|
499
|
+
/** The persona the send resolved (explicit, the thread's, or the agent's default) — what it starts under. */
|
|
500
|
+
persona?: string;
|
|
493
501
|
model?: string;
|
|
494
502
|
pageContext?: PageContext;
|
|
495
503
|
/**
|
|
@@ -506,6 +514,7 @@ interface QueuedMessageView {
|
|
|
506
514
|
content: string;
|
|
507
515
|
attachments?: MessageAttachment[];
|
|
508
516
|
agentName?: string;
|
|
517
|
+
persona?: string;
|
|
509
518
|
model?: string;
|
|
510
519
|
interrupt?: boolean;
|
|
511
520
|
createdAt: string;
|
|
@@ -526,6 +535,7 @@ interface EnqueueMessageInput {
|
|
|
526
535
|
content: string;
|
|
527
536
|
attachments?: MessageAttachment[];
|
|
528
537
|
agentName?: string;
|
|
538
|
+
persona?: string;
|
|
529
539
|
model?: string;
|
|
530
540
|
pageContext?: PageContext;
|
|
531
541
|
interrupt?: boolean;
|
|
@@ -1139,6 +1149,70 @@ interface PromptContext {
|
|
|
1139
1149
|
/** The selected agent's name. */
|
|
1140
1150
|
agentName: string;
|
|
1141
1151
|
pageContext?: PageContext;
|
|
1152
|
+
/**
|
|
1153
|
+
* The persona this turn runs under, when it runs under one — so an agent's own `@SystemPrompt`
|
|
1154
|
+
* (or a contributor) can vary by persona without the persona carrying a prompt of its own.
|
|
1155
|
+
*/
|
|
1156
|
+
persona?: PersonaRef;
|
|
1157
|
+
/**
|
|
1158
|
+
* The agent's own resolved base prompt. Set only while a persona's {@link Persona.systemPrompt} is
|
|
1159
|
+
* being resolved, so a persona builder can wrap the base rather than discard it.
|
|
1160
|
+
*/
|
|
1161
|
+
basePrompt?: string;
|
|
1162
|
+
}
|
|
1163
|
+
/**
|
|
1164
|
+
* A named variant of ONE agent: its own prompt and, optionally, a narrower tool allow-list. The
|
|
1165
|
+
* caller picks one per send (`POST <base>/chat { persona }`); everything else — the agent's model,
|
|
1166
|
+
* its access rules, its handoffs, its history — stays the agent's. A variant that needs any of those
|
|
1167
|
+
* to differ is a different `@Agent`, not a persona.
|
|
1168
|
+
*/
|
|
1169
|
+
interface Persona {
|
|
1170
|
+
/** Unique within its agent — what a send names and what a message records. */
|
|
1171
|
+
id: string;
|
|
1172
|
+
/** What a picker shows. */
|
|
1173
|
+
label: string;
|
|
1174
|
+
/** One line about what the persona is for, for a picker. */
|
|
1175
|
+
description?: string;
|
|
1176
|
+
/**
|
|
1177
|
+
* The persona's prompt. A flat string STANDS IN FOR the agent's base prompt; a
|
|
1178
|
+
* {@link PromptBuilder} is handed that base as `ctx.basePrompt`, so it can wrap it instead. The
|
|
1179
|
+
* cross-agent contributors still follow either way. Omit → the agent's base prompt, unchanged
|
|
1180
|
+
* (which can itself read `ctx.persona`).
|
|
1181
|
+
*/
|
|
1182
|
+
systemPrompt?: string | PromptBuilder;
|
|
1183
|
+
/**
|
|
1184
|
+
* Only these tool names are offered — and only these may be invoked — under this persona. Layered
|
|
1185
|
+
* AFTER the agent's own allow-list, `enabled`, the roles policy and `canUse`: it narrows, never
|
|
1186
|
+
* widens. Omit → whatever the agent offers.
|
|
1187
|
+
*/
|
|
1188
|
+
allowedTools?: string[];
|
|
1189
|
+
/**
|
|
1190
|
+
* Agent names this persona answers for: a send, a queued message or a thread that names one of
|
|
1191
|
+
* them runs as THIS agent under THIS persona. For an app that turns separate agents into personas
|
|
1192
|
+
* of one — the threads, messages and in-flight runs that recorded the old agent name keep
|
|
1193
|
+
* resolving, with no data migration.
|
|
1194
|
+
*/
|
|
1195
|
+
aliases?: string[];
|
|
1196
|
+
}
|
|
1197
|
+
/** What a prompt builder and a tool see of the turn's persona. */
|
|
1198
|
+
interface PersonaRef {
|
|
1199
|
+
id: string;
|
|
1200
|
+
label: string;
|
|
1201
|
+
}
|
|
1202
|
+
/**
|
|
1203
|
+
* A persona as a turn RESOLVED it, journaled in the `persona:resolve` checkpoint — so every replay
|
|
1204
|
+
* of the run uses this, and not whatever the persona's configuration says by the time it resumes.
|
|
1205
|
+
*/
|
|
1206
|
+
interface TurnPersona extends PersonaRef {
|
|
1207
|
+
allowedTools?: string[];
|
|
1208
|
+
/** The persona's prompt, resolved (with the base prompt it wraps). Absent → the base prompt. */
|
|
1209
|
+
prompt?: string;
|
|
1210
|
+
}
|
|
1211
|
+
/** One persona as `GET <base>/agents` lists it — what a persona picker renders. */
|
|
1212
|
+
interface PersonaCatalogEntry {
|
|
1213
|
+
id: string;
|
|
1214
|
+
label: string;
|
|
1215
|
+
description?: string;
|
|
1142
1216
|
}
|
|
1143
1217
|
/**
|
|
1144
1218
|
* An agent's base system prompt. Return a string (optionally async) built from the turn's context —
|
|
@@ -1166,6 +1240,13 @@ interface AgentRunInput {
|
|
|
1166
1240
|
day?: string;
|
|
1167
1241
|
/** Which named agent runs this turn. Omitted → the default/single agent. */
|
|
1168
1242
|
agentName?: string;
|
|
1243
|
+
/**
|
|
1244
|
+
* The persona of {@link agentName} this turn runs under (a {@link Persona.id}). Resolved by the
|
|
1245
|
+
* service from the send, the thread and the agent's default BEFORE the run starts, so it is part
|
|
1246
|
+
* of the run's own input; the loop resolves its definition once, in the `persona:resolve`
|
|
1247
|
+
* checkpoint. Omitted → no persona, and no checkpoint spent on one.
|
|
1248
|
+
*/
|
|
1249
|
+
persona?: string;
|
|
1169
1250
|
/**
|
|
1170
1251
|
* How many agent→agent delegations deep this run already is (0 for a top-level turn). The runner
|
|
1171
1252
|
* increments it for each child run; the loop refuses to delegate past its depth ceiling.
|
|
@@ -1273,6 +1354,10 @@ interface AgentDefinition {
|
|
|
1273
1354
|
* Whether this agent is offered the built-in `ask` tool. Undefined → the module-wide setting.
|
|
1274
1355
|
*/
|
|
1275
1356
|
ask?: boolean;
|
|
1357
|
+
/** Named variants of this agent — see {@link Persona}. Undefined → none. */
|
|
1358
|
+
personas?: Persona[];
|
|
1359
|
+
/** The persona a send runs under when neither it nor its thread names one. Undefined → none. */
|
|
1360
|
+
defaultPersona?: string;
|
|
1276
1361
|
}
|
|
1277
1362
|
/**
|
|
1278
1363
|
* The read-model the `GET agents` endpoint returns to a client — the safe public subset of an
|
|
@@ -1288,6 +1373,10 @@ interface AgentCatalogEntry {
|
|
|
1288
1373
|
* so before a chat starts. `GET <base>/models?agent=` reports the same lock as `locked`.
|
|
1289
1374
|
*/
|
|
1290
1375
|
lockedModel?: string;
|
|
1376
|
+
/** The agent's personas, for a persona picker. Omitted when it declares none. */
|
|
1377
|
+
personas?: PersonaCatalogEntry[];
|
|
1378
|
+
/** The persona a send runs under when it names none. Omitted when the agent has no default. */
|
|
1379
|
+
defaultPersona?: string;
|
|
1291
1380
|
}
|
|
1292
1381
|
interface ThreadSummary {
|
|
1293
1382
|
id: string;
|
|
@@ -1314,6 +1403,12 @@ interface ThreadSummary {
|
|
|
1314
1403
|
* it; the REST read-model normalizes that to `null`.
|
|
1315
1404
|
*/
|
|
1316
1405
|
model?: string | null;
|
|
1406
|
+
/**
|
|
1407
|
+
* The persona this thread's turns run under when a send names none — the last one a send on it
|
|
1408
|
+
* named, or `PATCH <base>/threads/:id { persona }`. `null` → the agent's default. Undefined for a
|
|
1409
|
+
* store that does not persist it; the REST read-model normalizes that to `null`.
|
|
1410
|
+
*/
|
|
1411
|
+
persona?: string | null;
|
|
1317
1412
|
}
|
|
1318
1413
|
interface StoredMessage {
|
|
1319
1414
|
id: string;
|
|
@@ -1321,6 +1416,8 @@ interface StoredMessage {
|
|
|
1321
1416
|
content: string;
|
|
1322
1417
|
/** Which agent produced this message (assistant messages) — provenance for replay / UI / telescope. */
|
|
1323
1418
|
agentName?: string;
|
|
1419
|
+
/** The persona the turn that wrote this message ran under; absent when it ran under none. */
|
|
1420
|
+
persona?: string;
|
|
1324
1421
|
toolCalls?: ToolCallRequest[];
|
|
1325
1422
|
toolResults?: ToolResult[];
|
|
1326
1423
|
/** Files the user attached to this message (image/PDF). Persisted with the message, replayed as-is. */
|
|
@@ -1431,6 +1528,11 @@ interface LlmStepEnvelope {
|
|
|
1431
1528
|
bufferOutput?: boolean;
|
|
1432
1529
|
/** The turn's selected model ({@link AgentRunInput.model}), for the worker's provider call. */
|
|
1433
1530
|
model?: string;
|
|
1531
|
+
/**
|
|
1532
|
+
* The allow-list of the persona the turn resolved (`persona:resolve`), which the serving worker
|
|
1533
|
+
* intersects with the agent's own. Absent → no persona narrowing, as before personas existed.
|
|
1534
|
+
*/
|
|
1535
|
+
personaAllowedTools?: string[];
|
|
1434
1536
|
}
|
|
1435
1537
|
/**
|
|
1436
1538
|
* The serializable subset of `AiToolCtx` — everything except `host` (re-attached handler-side
|
|
@@ -1442,6 +1544,8 @@ interface ToolStepCtx {
|
|
|
1442
1544
|
runId: string;
|
|
1443
1545
|
requestId: string;
|
|
1444
1546
|
agentName?: string;
|
|
1547
|
+
/** The persona the turn runs under ({@link AiToolCtx.persona}). */
|
|
1548
|
+
persona?: string;
|
|
1445
1549
|
pageContext?: PageContext;
|
|
1446
1550
|
}
|
|
1447
1551
|
/** Serializable input for a dispatched tool-execution step. */
|
|
@@ -1449,6 +1553,11 @@ interface ToolStepEnvelope {
|
|
|
1449
1553
|
toolName: string;
|
|
1450
1554
|
input: unknown;
|
|
1451
1555
|
ctx: ToolStepCtx;
|
|
1556
|
+
/**
|
|
1557
|
+
* The only tool names this call may invoke — the turn's persona allow-list (intersected with the
|
|
1558
|
+
* agent's). Checked by `ToolRegistry.invoke` on the worker. Absent → no such check.
|
|
1559
|
+
*/
|
|
1560
|
+
allowedTools?: string[];
|
|
1452
1561
|
/** Applied INSIDE the handler (`withToolTimeout`) — never as a durable step `timeoutMs`. */
|
|
1453
1562
|
timeoutMs?: number;
|
|
1454
1563
|
/**
|
|
@@ -1957,4 +2066,4 @@ type AgentStreamErrorCode = 'quota_exceeded' | 'output_rejected' | 'structured_o
|
|
|
1957
2066
|
/** A model call ended without producing anything. */
|
|
1958
2067
|
| 'model_no_output' | 'run_failed';
|
|
1959
2068
|
|
|
1960
|
-
export {
|
|
2069
|
+
export { ASK_TOOL_NAME as $, type AgentStreamEvent as A, type ToolCallApprovalState as B, type ChatQueueStore as C, type DetachedDelivery as D, type ElicitationRequest as E, type EnqueueMessageInput as F, type QueuedMessage as G, type HumanReply as H, type QueuedMessagePatch as I, type QueuePause as J, type AppendMessageInput as K, type LlmStepEnvelope as L, type ModelMessage as M, type ToolResult as N, type MessageFeedback as O, type Persona as P, type QuotaState as Q, type RecordRunStartInput as R, type StoredMessage as S, type ToolSpec as T, type UpdateThreadInput as U, type RecordToolCallInput as V, type ToolCallOutcome as W, type UpdateToolCallInput as X, type RecordUsageInput as Y, ALL_AGENTS as Z, ASK_TOOL_DESCRIPTION as _, type Actor as a, releaseThreadRun as a$, type AgentApprovalRequest as a0, type AgentApprovalSettlement as a1, type AgentAttachmentConfig as a2, type AgentCatalogEntry as a3, type AgentClientConfig as a4, type AgentHistoryWindow as a5, type AgentStreamErrorCode as a6, type AskToolInput as a7, type ChatQueueState as a8, DEFAULT_INTAKE_PREAMBLE as a9, type ThreadTurnReader as aA, type ToolCallApprovalStatus as aB, type ToolCatalogEntry as aC, type ToolConfirmation as aD, type ToolPresentationTone as aE, type ToolResultField as aF, type ToolResultView as aG, type ToolStepCtx as aH, type ToolTransientRetryNumbers as aI, type ToolTransientRetryOptions as aJ, type TurnPersona as aK, UNFINISHED_TOOL_CALL as aL, type UsagePurpose as aM, askInputSchema as aN, askToolDefinition as aO, danglingToolCallIds as aP, decodeStreamEvent as aQ, encodeStreamEvent as aR, invokeWithTransientRetry as aS, isChatQueueStore as aT, isTransientToolError as aU, isTypedQuestion as aV, normalizeElicitationReply as aW, questionOptions as aX, queuedMessageView as aY, readElicitationInput as aZ, readElicitationQuestions as a_, DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS as aa, DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS as ab, ELICITATION_INPUT_TYPES as ac, type ElicitationInput as ad, type ElicitationInputType as ae, type ElicitationOption as af, type ElicitationOutcome as ag, type ElicitationQuestion as ah, type ElicitationReply as ai, type ElicitationResult as aj, type HistoryPolicyContext as ak, type HistorySelection as al, type HistorySummary as am, type InvokeWithTransientRetryOptions as an, MAX_ASK_QUESTIONS as ao, type MessageFeedbackValue as ap, type MessageRole as aq, type PersonaRef as ar, type PromptContext as as, type QueuePauseReason as at, type QueuedMessageView as au, type QuotaView as av, RUN_ENDED_BEFORE_TOOL_CALL as aw, type RecordRunEndInput as ax, type ThreadTurnPage as ay, type ThreadTurnQuery as az, type ToolPresentation as b, renderElicitationAnswers as b0, resolveElicitation as b1, resolveToolTransientRetryNumbers as b2, settleDanglingToolCalls as b3, settleElicitation as b4, validateElicitationAnswer as b5, validateElicitationValue as b6, type ToolDefinition as c, type ToolCallRequest as d, type MessageUsage as e, type AgentUiComponent as f, type AgentRunInput as g, type MessageAttachment as h, type ToolKind as i, type ToolCallStatus as j, type ToolCallApproval as k, type AgentDefinition as l, type PersonaCatalogEntry as m, type HistoryPolicy as n, type PageContext as o, type AgentStore as p, type AgentDelegation as q, type PromptBuilder as r, type PromptContributor as s, type ToolTransientRetrySetting as t, type AgentIntake as u, type Decision as v, type ToolStepEnvelope as w, type CreateThreadInput as x, type ThreadSummary as y, type ThreadDetail as z };
|
|
@@ -115,6 +115,8 @@ interface CreateThreadInput {
|
|
|
115
115
|
* included).
|
|
116
116
|
*/
|
|
117
117
|
id?: string;
|
|
118
|
+
/** The persona the thread's turns run under when a send names none. See {@link ThreadSummary.persona}. */
|
|
119
|
+
persona?: string;
|
|
118
120
|
}
|
|
119
121
|
interface AppendMessageInput {
|
|
120
122
|
threadId: string;
|
|
@@ -122,6 +124,8 @@ interface AppendMessageInput {
|
|
|
122
124
|
content: string;
|
|
123
125
|
/** Which agent produced this message (assistant messages) — provenance. */
|
|
124
126
|
agentName?: string;
|
|
127
|
+
/** The persona the turn ran under. See {@link StoredMessage.persona}. */
|
|
128
|
+
persona?: string;
|
|
125
129
|
toolCalls?: ToolCallRequest[];
|
|
126
130
|
toolResults?: ToolResult[];
|
|
127
131
|
/** Files the user attached to this message (image/PDF). Persisted verbatim. */
|
|
@@ -191,6 +195,8 @@ interface UpdateThreadInput {
|
|
|
191
195
|
defaultAgent?: string | null;
|
|
192
196
|
/** `null` unpins the thread's model (turns run on the provider default). */
|
|
193
197
|
model?: string | null;
|
|
198
|
+
/** `null` clears the thread's persona (sends fall back to the agent's default persona). */
|
|
199
|
+
persona?: string | null;
|
|
194
200
|
}
|
|
195
201
|
interface RecordUsageInput {
|
|
196
202
|
threadId: string;
|
|
@@ -490,6 +496,8 @@ interface QueuedMessage {
|
|
|
490
496
|
content: string;
|
|
491
497
|
attachments?: MessageAttachment[];
|
|
492
498
|
agentName?: string;
|
|
499
|
+
/** The persona the send resolved (explicit, the thread's, or the agent's default) — what it starts under. */
|
|
500
|
+
persona?: string;
|
|
493
501
|
model?: string;
|
|
494
502
|
pageContext?: PageContext;
|
|
495
503
|
/**
|
|
@@ -506,6 +514,7 @@ interface QueuedMessageView {
|
|
|
506
514
|
content: string;
|
|
507
515
|
attachments?: MessageAttachment[];
|
|
508
516
|
agentName?: string;
|
|
517
|
+
persona?: string;
|
|
509
518
|
model?: string;
|
|
510
519
|
interrupt?: boolean;
|
|
511
520
|
createdAt: string;
|
|
@@ -526,6 +535,7 @@ interface EnqueueMessageInput {
|
|
|
526
535
|
content: string;
|
|
527
536
|
attachments?: MessageAttachment[];
|
|
528
537
|
agentName?: string;
|
|
538
|
+
persona?: string;
|
|
529
539
|
model?: string;
|
|
530
540
|
pageContext?: PageContext;
|
|
531
541
|
interrupt?: boolean;
|
|
@@ -1139,6 +1149,70 @@ interface PromptContext {
|
|
|
1139
1149
|
/** The selected agent's name. */
|
|
1140
1150
|
agentName: string;
|
|
1141
1151
|
pageContext?: PageContext;
|
|
1152
|
+
/**
|
|
1153
|
+
* The persona this turn runs under, when it runs under one — so an agent's own `@SystemPrompt`
|
|
1154
|
+
* (or a contributor) can vary by persona without the persona carrying a prompt of its own.
|
|
1155
|
+
*/
|
|
1156
|
+
persona?: PersonaRef;
|
|
1157
|
+
/**
|
|
1158
|
+
* The agent's own resolved base prompt. Set only while a persona's {@link Persona.systemPrompt} is
|
|
1159
|
+
* being resolved, so a persona builder can wrap the base rather than discard it.
|
|
1160
|
+
*/
|
|
1161
|
+
basePrompt?: string;
|
|
1162
|
+
}
|
|
1163
|
+
/**
|
|
1164
|
+
* A named variant of ONE agent: its own prompt and, optionally, a narrower tool allow-list. The
|
|
1165
|
+
* caller picks one per send (`POST <base>/chat { persona }`); everything else — the agent's model,
|
|
1166
|
+
* its access rules, its handoffs, its history — stays the agent's. A variant that needs any of those
|
|
1167
|
+
* to differ is a different `@Agent`, not a persona.
|
|
1168
|
+
*/
|
|
1169
|
+
interface Persona {
|
|
1170
|
+
/** Unique within its agent — what a send names and what a message records. */
|
|
1171
|
+
id: string;
|
|
1172
|
+
/** What a picker shows. */
|
|
1173
|
+
label: string;
|
|
1174
|
+
/** One line about what the persona is for, for a picker. */
|
|
1175
|
+
description?: string;
|
|
1176
|
+
/**
|
|
1177
|
+
* The persona's prompt. A flat string STANDS IN FOR the agent's base prompt; a
|
|
1178
|
+
* {@link PromptBuilder} is handed that base as `ctx.basePrompt`, so it can wrap it instead. The
|
|
1179
|
+
* cross-agent contributors still follow either way. Omit → the agent's base prompt, unchanged
|
|
1180
|
+
* (which can itself read `ctx.persona`).
|
|
1181
|
+
*/
|
|
1182
|
+
systemPrompt?: string | PromptBuilder;
|
|
1183
|
+
/**
|
|
1184
|
+
* Only these tool names are offered — and only these may be invoked — under this persona. Layered
|
|
1185
|
+
* AFTER the agent's own allow-list, `enabled`, the roles policy and `canUse`: it narrows, never
|
|
1186
|
+
* widens. Omit → whatever the agent offers.
|
|
1187
|
+
*/
|
|
1188
|
+
allowedTools?: string[];
|
|
1189
|
+
/**
|
|
1190
|
+
* Agent names this persona answers for: a send, a queued message or a thread that names one of
|
|
1191
|
+
* them runs as THIS agent under THIS persona. For an app that turns separate agents into personas
|
|
1192
|
+
* of one — the threads, messages and in-flight runs that recorded the old agent name keep
|
|
1193
|
+
* resolving, with no data migration.
|
|
1194
|
+
*/
|
|
1195
|
+
aliases?: string[];
|
|
1196
|
+
}
|
|
1197
|
+
/** What a prompt builder and a tool see of the turn's persona. */
|
|
1198
|
+
interface PersonaRef {
|
|
1199
|
+
id: string;
|
|
1200
|
+
label: string;
|
|
1201
|
+
}
|
|
1202
|
+
/**
|
|
1203
|
+
* A persona as a turn RESOLVED it, journaled in the `persona:resolve` checkpoint — so every replay
|
|
1204
|
+
* of the run uses this, and not whatever the persona's configuration says by the time it resumes.
|
|
1205
|
+
*/
|
|
1206
|
+
interface TurnPersona extends PersonaRef {
|
|
1207
|
+
allowedTools?: string[];
|
|
1208
|
+
/** The persona's prompt, resolved (with the base prompt it wraps). Absent → the base prompt. */
|
|
1209
|
+
prompt?: string;
|
|
1210
|
+
}
|
|
1211
|
+
/** One persona as `GET <base>/agents` lists it — what a persona picker renders. */
|
|
1212
|
+
interface PersonaCatalogEntry {
|
|
1213
|
+
id: string;
|
|
1214
|
+
label: string;
|
|
1215
|
+
description?: string;
|
|
1142
1216
|
}
|
|
1143
1217
|
/**
|
|
1144
1218
|
* An agent's base system prompt. Return a string (optionally async) built from the turn's context —
|
|
@@ -1166,6 +1240,13 @@ interface AgentRunInput {
|
|
|
1166
1240
|
day?: string;
|
|
1167
1241
|
/** Which named agent runs this turn. Omitted → the default/single agent. */
|
|
1168
1242
|
agentName?: string;
|
|
1243
|
+
/**
|
|
1244
|
+
* The persona of {@link agentName} this turn runs under (a {@link Persona.id}). Resolved by the
|
|
1245
|
+
* service from the send, the thread and the agent's default BEFORE the run starts, so it is part
|
|
1246
|
+
* of the run's own input; the loop resolves its definition once, in the `persona:resolve`
|
|
1247
|
+
* checkpoint. Omitted → no persona, and no checkpoint spent on one.
|
|
1248
|
+
*/
|
|
1249
|
+
persona?: string;
|
|
1169
1250
|
/**
|
|
1170
1251
|
* How many agent→agent delegations deep this run already is (0 for a top-level turn). The runner
|
|
1171
1252
|
* increments it for each child run; the loop refuses to delegate past its depth ceiling.
|
|
@@ -1273,6 +1354,10 @@ interface AgentDefinition {
|
|
|
1273
1354
|
* Whether this agent is offered the built-in `ask` tool. Undefined → the module-wide setting.
|
|
1274
1355
|
*/
|
|
1275
1356
|
ask?: boolean;
|
|
1357
|
+
/** Named variants of this agent — see {@link Persona}. Undefined → none. */
|
|
1358
|
+
personas?: Persona[];
|
|
1359
|
+
/** The persona a send runs under when neither it nor its thread names one. Undefined → none. */
|
|
1360
|
+
defaultPersona?: string;
|
|
1276
1361
|
}
|
|
1277
1362
|
/**
|
|
1278
1363
|
* The read-model the `GET agents` endpoint returns to a client — the safe public subset of an
|
|
@@ -1288,6 +1373,10 @@ interface AgentCatalogEntry {
|
|
|
1288
1373
|
* so before a chat starts. `GET <base>/models?agent=` reports the same lock as `locked`.
|
|
1289
1374
|
*/
|
|
1290
1375
|
lockedModel?: string;
|
|
1376
|
+
/** The agent's personas, for a persona picker. Omitted when it declares none. */
|
|
1377
|
+
personas?: PersonaCatalogEntry[];
|
|
1378
|
+
/** The persona a send runs under when it names none. Omitted when the agent has no default. */
|
|
1379
|
+
defaultPersona?: string;
|
|
1291
1380
|
}
|
|
1292
1381
|
interface ThreadSummary {
|
|
1293
1382
|
id: string;
|
|
@@ -1314,6 +1403,12 @@ interface ThreadSummary {
|
|
|
1314
1403
|
* it; the REST read-model normalizes that to `null`.
|
|
1315
1404
|
*/
|
|
1316
1405
|
model?: string | null;
|
|
1406
|
+
/**
|
|
1407
|
+
* The persona this thread's turns run under when a send names none — the last one a send on it
|
|
1408
|
+
* named, or `PATCH <base>/threads/:id { persona }`. `null` → the agent's default. Undefined for a
|
|
1409
|
+
* store that does not persist it; the REST read-model normalizes that to `null`.
|
|
1410
|
+
*/
|
|
1411
|
+
persona?: string | null;
|
|
1317
1412
|
}
|
|
1318
1413
|
interface StoredMessage {
|
|
1319
1414
|
id: string;
|
|
@@ -1321,6 +1416,8 @@ interface StoredMessage {
|
|
|
1321
1416
|
content: string;
|
|
1322
1417
|
/** Which agent produced this message (assistant messages) — provenance for replay / UI / telescope. */
|
|
1323
1418
|
agentName?: string;
|
|
1419
|
+
/** The persona the turn that wrote this message ran under; absent when it ran under none. */
|
|
1420
|
+
persona?: string;
|
|
1324
1421
|
toolCalls?: ToolCallRequest[];
|
|
1325
1422
|
toolResults?: ToolResult[];
|
|
1326
1423
|
/** Files the user attached to this message (image/PDF). Persisted with the message, replayed as-is. */
|
|
@@ -1431,6 +1528,11 @@ interface LlmStepEnvelope {
|
|
|
1431
1528
|
bufferOutput?: boolean;
|
|
1432
1529
|
/** The turn's selected model ({@link AgentRunInput.model}), for the worker's provider call. */
|
|
1433
1530
|
model?: string;
|
|
1531
|
+
/**
|
|
1532
|
+
* The allow-list of the persona the turn resolved (`persona:resolve`), which the serving worker
|
|
1533
|
+
* intersects with the agent's own. Absent → no persona narrowing, as before personas existed.
|
|
1534
|
+
*/
|
|
1535
|
+
personaAllowedTools?: string[];
|
|
1434
1536
|
}
|
|
1435
1537
|
/**
|
|
1436
1538
|
* The serializable subset of `AiToolCtx` — everything except `host` (re-attached handler-side
|
|
@@ -1442,6 +1544,8 @@ interface ToolStepCtx {
|
|
|
1442
1544
|
runId: string;
|
|
1443
1545
|
requestId: string;
|
|
1444
1546
|
agentName?: string;
|
|
1547
|
+
/** The persona the turn runs under ({@link AiToolCtx.persona}). */
|
|
1548
|
+
persona?: string;
|
|
1445
1549
|
pageContext?: PageContext;
|
|
1446
1550
|
}
|
|
1447
1551
|
/** Serializable input for a dispatched tool-execution step. */
|
|
@@ -1449,6 +1553,11 @@ interface ToolStepEnvelope {
|
|
|
1449
1553
|
toolName: string;
|
|
1450
1554
|
input: unknown;
|
|
1451
1555
|
ctx: ToolStepCtx;
|
|
1556
|
+
/**
|
|
1557
|
+
* The only tool names this call may invoke — the turn's persona allow-list (intersected with the
|
|
1558
|
+
* agent's). Checked by `ToolRegistry.invoke` on the worker. Absent → no such check.
|
|
1559
|
+
*/
|
|
1560
|
+
allowedTools?: string[];
|
|
1452
1561
|
/** Applied INSIDE the handler (`withToolTimeout`) — never as a durable step `timeoutMs`. */
|
|
1453
1562
|
timeoutMs?: number;
|
|
1454
1563
|
/**
|
|
@@ -1957,4 +2066,4 @@ type AgentStreamErrorCode = 'quota_exceeded' | 'output_rejected' | 'structured_o
|
|
|
1957
2066
|
/** A model call ended without producing anything. */
|
|
1958
2067
|
| 'model_no_output' | 'run_failed';
|
|
1959
2068
|
|
|
1960
|
-
export {
|
|
2069
|
+
export { ASK_TOOL_NAME as $, type AgentStreamEvent as A, type ToolCallApprovalState as B, type ChatQueueStore as C, type DetachedDelivery as D, type ElicitationRequest as E, type EnqueueMessageInput as F, type QueuedMessage as G, type HumanReply as H, type QueuedMessagePatch as I, type QueuePause as J, type AppendMessageInput as K, type LlmStepEnvelope as L, type ModelMessage as M, type ToolResult as N, type MessageFeedback as O, type Persona as P, type QuotaState as Q, type RecordRunStartInput as R, type StoredMessage as S, type ToolSpec as T, type UpdateThreadInput as U, type RecordToolCallInput as V, type ToolCallOutcome as W, type UpdateToolCallInput as X, type RecordUsageInput as Y, ALL_AGENTS as Z, ASK_TOOL_DESCRIPTION as _, type Actor as a, releaseThreadRun as a$, type AgentApprovalRequest as a0, type AgentApprovalSettlement as a1, type AgentAttachmentConfig as a2, type AgentCatalogEntry as a3, type AgentClientConfig as a4, type AgentHistoryWindow as a5, type AgentStreamErrorCode as a6, type AskToolInput as a7, type ChatQueueState as a8, DEFAULT_INTAKE_PREAMBLE as a9, type ThreadTurnReader as aA, type ToolCallApprovalStatus as aB, type ToolCatalogEntry as aC, type ToolConfirmation as aD, type ToolPresentationTone as aE, type ToolResultField as aF, type ToolResultView as aG, type ToolStepCtx as aH, type ToolTransientRetryNumbers as aI, type ToolTransientRetryOptions as aJ, type TurnPersona as aK, UNFINISHED_TOOL_CALL as aL, type UsagePurpose as aM, askInputSchema as aN, askToolDefinition as aO, danglingToolCallIds as aP, decodeStreamEvent as aQ, encodeStreamEvent as aR, invokeWithTransientRetry as aS, isChatQueueStore as aT, isTransientToolError as aU, isTypedQuestion as aV, normalizeElicitationReply as aW, questionOptions as aX, queuedMessageView as aY, readElicitationInput as aZ, readElicitationQuestions as a_, DEFAULT_TOOL_TRANSIENT_RETRY_ATTEMPTS as aa, DEFAULT_TOOL_TRANSIENT_RETRY_BACKOFF_MS as ab, ELICITATION_INPUT_TYPES as ac, type ElicitationInput as ad, type ElicitationInputType as ae, type ElicitationOption as af, type ElicitationOutcome as ag, type ElicitationQuestion as ah, type ElicitationReply as ai, type ElicitationResult as aj, type HistoryPolicyContext as ak, type HistorySelection as al, type HistorySummary as am, type InvokeWithTransientRetryOptions as an, MAX_ASK_QUESTIONS as ao, type MessageFeedbackValue as ap, type MessageRole as aq, type PersonaRef as ar, type PromptContext as as, type QueuePauseReason as at, type QueuedMessageView as au, type QuotaView as av, RUN_ENDED_BEFORE_TOOL_CALL as aw, type RecordRunEndInput as ax, type ThreadTurnPage as ay, type ThreadTurnQuery as az, type ToolPresentation as b, renderElicitationAnswers as b0, resolveElicitation as b1, resolveToolTransientRetryNumbers as b2, settleDanglingToolCalls as b3, settleElicitation as b4, validateElicitationAnswer as b5, validateElicitationValue as b6, type ToolDefinition as c, type ToolCallRequest as d, type MessageUsage as e, type AgentUiComponent as f, type AgentRunInput as g, type MessageAttachment as h, type ToolKind as i, type ToolCallStatus as j, type ToolCallApproval as k, type AgentDefinition as l, type PersonaCatalogEntry as m, type HistoryPolicy as n, type PageContext as o, type AgentStore as p, type AgentDelegation as q, type PromptBuilder as r, type PromptContributor as s, type ToolTransientRetrySetting as t, type AgentIntake as u, type Decision as v, type ToolStepEnvelope as w, type CreateThreadInput as x, type ThreadSummary as y, type ThreadDetail as z };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
-
import { a as Actor,
|
|
2
|
+
import { a as Actor, o as PageContext } from './stream-events-CbVEowYb.cjs';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Per-invocation context handed to a tool handler. Host-supplied bits are optional. Identity lives
|
|
@@ -34,6 +34,8 @@ interface AiToolCtx {
|
|
|
34
34
|
idempotencyKey?: string;
|
|
35
35
|
/** The name of the agent running this turn — provenance a tool can scope on (e.g. capability sets). */
|
|
36
36
|
agentName?: string;
|
|
37
|
+
/** The persona of {@link agentName} the turn runs under, when it runs under one. */
|
|
38
|
+
persona?: string;
|
|
37
39
|
pageContext?: PageContext;
|
|
38
40
|
/** Optional host handle (e.g. an ORM EntityManager) the app threads through options. */
|
|
39
41
|
host?: unknown;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
-
import { a as Actor,
|
|
2
|
+
import { a as Actor, o as PageContext } from './stream-events-CbVEowYb.js';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Per-invocation context handed to a tool handler. Host-supplied bits are optional. Identity lives
|
|
@@ -34,6 +34,8 @@ interface AiToolCtx {
|
|
|
34
34
|
idempotencyKey?: string;
|
|
35
35
|
/** The name of the agent running this turn — provenance a tool can scope on (e.g. capability sets). */
|
|
36
36
|
agentName?: string;
|
|
37
|
+
/** The persona of {@link agentName} the turn runs under, when it runs under one. */
|
|
38
|
+
persona?: string;
|
|
37
39
|
pageContext?: PageContext;
|
|
38
40
|
/** Optional host handle (e.g. an ORM EntityManager) the app threads through options. */
|
|
39
41
|
host?: unknown;
|