@personaai/runtime 0.22.0 → 0.24.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/index.d.cts CHANGED
@@ -1,4 +1,5 @@
1
- import { ChatMessageInput, CreateRestToolInput, LogLevel, Logger } from '@personaai/sdk';
1
+ import { ChatMessageInput, CreateRestToolInput, AgentEnvironment, LogLevel, Logger } from '@personaai/sdk';
2
+ import { WebhookEventType, WebhookEvent } from '@personaai/sdk/webhooks';
2
3
  import { RcpTool } from 'rcp-sdk';
3
4
  export { RcpTool } from 'rcp-sdk';
4
5
 
@@ -39,6 +40,12 @@ interface RuntimeRequest {
39
40
  * auth-required route handler sees it.
40
41
  */
41
42
  userId: string | null;
43
+ /**
44
+ * The exact request body bytes, before JSON parsing. Only needed by
45
+ * `POST /webhooks/persona` (the signature is over the raw bytes, and a
46
+ * re-serialised body won't match); adapters set it for that route.
47
+ */
48
+ rawBody?: Uint8Array | string;
42
49
  }
43
50
 
44
51
  /** A complete response with a known-length body — every route except streaming chat. */
@@ -78,6 +85,10 @@ interface RunContext {
78
85
  messages?: ChatMessageInput[];
79
86
  /** Input parameters provided to the workflow run. */
80
87
  input?: unknown;
88
+ /** The environment this run asked for (from `selectVersion`, `defaultEnvironment` or the client). */
89
+ environment?: 'development' | 'production';
90
+ /** The published version this run asked for. */
91
+ agentVersion?: number;
81
92
  }
82
93
  interface RunResult {
83
94
  /** Assembled assistant text (concatenated TEXT_MESSAGE_CHUNK deltas), same as `ChatResult.text`. */
@@ -87,6 +98,14 @@ interface RunResult {
87
98
  interrupted: boolean;
88
99
  /** True when a RUN_ERROR event was seen — the run still completed (as far as the stream is concerned); see README on the `onError` vs `erroredInBand` distinction. */
89
100
  erroredInBand: boolean;
101
+ /**
102
+ * Persona's own id for this run (`RUN_STARTED.runId`): what
103
+ * `POST /feedback` and `client.traces.getByRunId()` take. Not the
104
+ * runtime's `x-persona-run-id` resume id.
105
+ */
106
+ personaRunId?: string;
107
+ /** The run's thread (also set when the run created one). */
108
+ threadId?: string;
90
109
  }
91
110
  interface ErrorContext {
92
111
  userId: string | null;
@@ -128,11 +147,31 @@ interface MemoryWriteContext {
128
147
  agentId?: string;
129
148
  path: string;
130
149
  }
150
+ interface FeedbackContext {
151
+ userId: string;
152
+ /** Persona's run id the rating is for. */
153
+ runId: string;
154
+ score: 1 | -1;
155
+ comment?: string;
156
+ tags?: string[];
157
+ }
158
+ /** A Project-wide admin action taken through an admin capability (deploy, traces, evals). */
159
+ interface AdminActionContext {
160
+ /** Your user who did it (Persona's audit log only knows the API key). */
161
+ userId: string;
162
+ capability: 'deploy' | 'traces' | 'evals';
163
+ /** e.g. `agent.version.deploy`, `trace.replay`, `eval_run.start`. */
164
+ action: string;
165
+ /** Ids the action touched. */
166
+ target: Record<string, unknown>;
167
+ }
131
168
  interface VoiceSessionCreateContext {
132
169
  userId: string;
133
170
  agentId: string;
134
171
  /** Set when the session resumed an existing conversation (optional `threadId` on the request). */
135
172
  threadId?: string;
173
+ environment?: 'development' | 'production';
174
+ agentVersion?: number;
136
175
  }
137
176
  /**
138
177
  * Lifecycle hooks — the host application's voice inside the runtime's
@@ -163,6 +202,15 @@ interface RuntimeHooks {
163
202
  onThreadCreate?(ctx: ThreadCreateContext): void | Promise<void>;
164
203
  /** Fires after a memory file is written via `PUT /memory/file`. */
165
204
  onMemoryWrite?(ctx: MemoryWriteContext): void | Promise<void>;
205
+ /**
206
+ * Fires after a Project-wide change or replay through an admin capability
207
+ * (publish, deploy, rollback, serve policy, replay, eval run and dataset
208
+ * changes). Persona's audit log names only the API key, so record your
209
+ * user here.
210
+ */
211
+ onAdminAction?(ctx: AdminActionContext): void | Promise<void>;
212
+ /** Fires after an end user's rating is saved via `POST /feedback`. */
213
+ onFeedback?(ctx: FeedbackContext): void | Promise<void>;
166
214
  /** Fires after a voice session ticket is minted via `POST /voice/sessions`. */
167
215
  onVoiceSessionCreate?(ctx: VoiceSessionCreateContext): void | Promise<void>;
168
216
  }
@@ -224,6 +272,72 @@ interface RuntimeCapabilities {
224
272
  * end-user-scoped. @default false
225
273
  */
226
274
  messages?: boolean;
275
+ /** Project secrets (`/secrets`) — write-only values, but creating/rotating them is configuration. @default false */
276
+ secrets?: boolean;
277
+ /** REST tool sources (`/rest-tool-sources`) CRUD + Test Connection. @default false */
278
+ restToolSources?: boolean;
279
+ /**
280
+ * Agent versions (`/agents/:id/versions`, `/agents/:id/deployments`):
281
+ * publish, diff, stats, deploy, rollback, serve policy. Key scope
282
+ * `deploy:write`. @default false
283
+ */
284
+ deploy?: boolean;
285
+ /** Traces and replays (`/traces`): every end user's conversations. Key scope `traces:read` (+ `agent:invoke` to replay). @default false */
286
+ traces?: boolean;
287
+ /** Datasets and eval runs (`/datasets`, `/eval-runs`). Key scope `eval:run`. @default false */
288
+ evals?: boolean;
289
+ /** Budget status and usage stats (`/observe/budget`, `/observe/usage`), read-only. Key scope `traces:read`. @default false */
290
+ observe?: boolean;
291
+ }
292
+ /** What {@link CreateRuntimeOptions.selectVersion} is asked about. */
293
+ interface VersionSelectionContext {
294
+ userId: string;
295
+ /** Which route is starting the run. */
296
+ kind: 'chat' | 'voice' | 'messages' | 'workflow';
297
+ /** The Agent (absent for `kind: 'workflow'`, whose choice applies to every agent step). */
298
+ agentId?: string;
299
+ /** Set for `kind: 'workflow'`. */
300
+ workflowId?: string;
301
+ }
302
+ /** Which published version of an Agent a run uses. Empty = the Agent's own default. */
303
+ interface VersionSelection {
304
+ environment?: AgentEnvironment;
305
+ /** A published version number; wins over `environment`. */
306
+ agentVersion?: number;
307
+ }
308
+ /** Handler for one Persona webhook event type. Throw to answer 500, so Persona retries. */
309
+ type WebhookHandler = (event: WebhookEvent, delivery: WebhookDelivery) => void | Promise<void>;
310
+ interface WebhookDelivery {
311
+ /** `X-Persona-Delivery` — the same on every retry of one delivery. */
312
+ id: string | undefined;
313
+ /** `X-Persona-Event`. */
314
+ type: WebhookEventType;
315
+ }
316
+ /**
317
+ * Receives Persona's outgoing webhooks (Platform → Observe → Webhooks) at
318
+ * `POST {mountPath}/webhooks/persona`. Public route: it checks
319
+ * `X-Persona-Signature` (HMAC-SHA256 over the raw body) instead of
320
+ * `resolveUser`. Needs the adapter to put the raw body on
321
+ * `RuntimeRequest.rawBody`.
322
+ */
323
+ interface WebhooksOptions {
324
+ /** The endpoint's signing secret (`whsec_…`, shown once when you create the webhook). */
325
+ secret: string;
326
+ /** One handler per event type, and/or `'*'` for every event. */
327
+ on: Partial<Record<WebhookEventType | '*', WebhookHandler>>;
328
+ /** Reject deliveries whose signature timestamp is further than this from now. @default 300 */
329
+ toleranceSec?: number;
330
+ /**
331
+ * Where handled delivery ids are remembered, so a retried delivery
332
+ * (same `X-Persona-Delivery`) runs your handler once. `add` is called
333
+ * only after the handlers succeed. The default keeps the last 1000 ids
334
+ * in memory (one process); use your database or Redis when running
335
+ * several instances.
336
+ */
337
+ dedupe?: {
338
+ has(deliveryId: string): boolean | Promise<boolean>;
339
+ add(deliveryId: string): void | Promise<void>;
340
+ };
227
341
  }
228
342
  /**
229
343
  * Serves a list of code-defined REST tools (built with `defineRestTool`
@@ -381,6 +495,36 @@ interface CreateRuntimeOptions {
381
495
  * this is provided.
382
496
  */
383
497
  channels?: ChannelsOptions;
498
+ /**
499
+ * Picks the published version a run uses, per request — canaries, beta
500
+ * users on `development`, pinning one customer to a version. Applies to
501
+ * `/chat`, `/voice/sessions`, `/messages/agent` and workflow runs (their
502
+ * agent steps). Return `undefined` for the default.
503
+ */
504
+ selectVersion?: (ctx: VersionSelectionContext) => VersionSelection | undefined | Promise<VersionSelection | undefined>;
505
+ /**
506
+ * Shortcut for `selectVersion: () => ({ environment })`. Without either,
507
+ * an Agent runs its editable **draft** for your end users unless its
508
+ * "serve only deployed versions" policy is on — set this to
509
+ * `'production'` for a production app. `selectVersion` wins when both are set.
510
+ */
511
+ defaultEnvironment?: AgentEnvironment;
512
+ /**
513
+ * Lets the browser choose with `environment` / `agentVersion` in the
514
+ * `/chat` and `/voice/sessions` body (e.g. an internal preview build).
515
+ * Off by default: otherwise any end user could run an unreleased version.
516
+ * When on, the browser's choice wins over `selectVersion`.
517
+ * @default false
518
+ */
519
+ allowClientVersionSelection?: boolean;
520
+ /**
521
+ * Forward the incoming `traceparent` header to Persona on `/chat`,
522
+ * `/voice/sessions`, `/messages/agent` and workflow runs, so their traces
523
+ * join your own OpenTelemetry trace. @default true
524
+ */
525
+ forwardTraceparent?: boolean;
526
+ /** Receive Persona webhooks at `POST /webhooks/persona`. See {@link WebhooksOptions}. Unset by default. */
527
+ webhooks?: WebhooksOptions;
384
528
  /** Log level for the runtime — off by default. Overrides the global level set via `setLogLevel()` from `@personaai/sdk`. */
385
529
  logLevel?: LogLevel;
386
530
  /** Custom logger instance — when provided, `logLevel` is ignored. */
@@ -407,6 +551,9 @@ declare class RuntimeHttpError extends Error {
407
551
  constructor(status: number, code: string, message: string);
408
552
  }
409
553
 
410
- declare const RUNTIME_VERSION = "0.22.0";
554
+ declare const RUNTIME_VERSION = "0.24.0";
555
+
556
+ /** The API key scope each capability needs (`*` covers everything). */
557
+ declare const CAPABILITY_SCOPES: Record<keyof RuntimeCapabilities, string[]>;
411
558
 
412
- export { type ChannelsOptions, type CreateRuntimeOptions, type ErrorContext, type FileUploadContext, type MemoryWriteContext, RUNTIME_VERSION, type RcpManifestOptions, type ResolveTwilioChannelUser, type ResolveUser, type RestToolManifestEntry, type RestToolsManifestOptions, type RunContext, type RunResult, type Runtime, type RuntimeBinaryResponse, type RuntimeBufferedResponse, type RuntimeCapabilities, type RuntimeHooks, RuntimeHttpError, type RuntimeMethod, type RuntimeRequest, type RuntimeResponse, type RuntimeStreamResponse, type RuntimeUploadedFile, type ThreadCreateContext, type ToolCallContext, type TwilioChannelOptions, type TwilioChannelRequest, type TwilioChannelUser, type VoiceSessionCreateContext, type WorkflowNodeContext, createRuntime };
559
+ export { type AdminActionContext, CAPABILITY_SCOPES, type ChannelsOptions, type CreateRuntimeOptions, type ErrorContext, type FeedbackContext, type FileUploadContext, type MemoryWriteContext, RUNTIME_VERSION, type RcpManifestOptions, type ResolveTwilioChannelUser, type ResolveUser, type RestToolManifestEntry, type RestToolsManifestOptions, type RunContext, type RunResult, type Runtime, type RuntimeBinaryResponse, type RuntimeBufferedResponse, type RuntimeCapabilities, type RuntimeHooks, RuntimeHttpError, type RuntimeMethod, type RuntimeRequest, type RuntimeResponse, type RuntimeStreamResponse, type RuntimeUploadedFile, type ThreadCreateContext, type ToolCallContext, type TwilioChannelOptions, type TwilioChannelRequest, type TwilioChannelUser, type VersionSelection, type VersionSelectionContext, type VoiceSessionCreateContext, type WebhookDelivery, type WebhookHandler, type WebhooksOptions, type WorkflowNodeContext, createRuntime };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { ChatMessageInput, CreateRestToolInput, LogLevel, Logger } from '@personaai/sdk';
1
+ import { ChatMessageInput, CreateRestToolInput, AgentEnvironment, LogLevel, Logger } from '@personaai/sdk';
2
+ import { WebhookEventType, WebhookEvent } from '@personaai/sdk/webhooks';
2
3
  import { RcpTool } from 'rcp-sdk';
3
4
  export { RcpTool } from 'rcp-sdk';
4
5
 
@@ -39,6 +40,12 @@ interface RuntimeRequest {
39
40
  * auth-required route handler sees it.
40
41
  */
41
42
  userId: string | null;
43
+ /**
44
+ * The exact request body bytes, before JSON parsing. Only needed by
45
+ * `POST /webhooks/persona` (the signature is over the raw bytes, and a
46
+ * re-serialised body won't match); adapters set it for that route.
47
+ */
48
+ rawBody?: Uint8Array | string;
42
49
  }
43
50
 
44
51
  /** A complete response with a known-length body — every route except streaming chat. */
@@ -78,6 +85,10 @@ interface RunContext {
78
85
  messages?: ChatMessageInput[];
79
86
  /** Input parameters provided to the workflow run. */
80
87
  input?: unknown;
88
+ /** The environment this run asked for (from `selectVersion`, `defaultEnvironment` or the client). */
89
+ environment?: 'development' | 'production';
90
+ /** The published version this run asked for. */
91
+ agentVersion?: number;
81
92
  }
82
93
  interface RunResult {
83
94
  /** Assembled assistant text (concatenated TEXT_MESSAGE_CHUNK deltas), same as `ChatResult.text`. */
@@ -87,6 +98,14 @@ interface RunResult {
87
98
  interrupted: boolean;
88
99
  /** True when a RUN_ERROR event was seen — the run still completed (as far as the stream is concerned); see README on the `onError` vs `erroredInBand` distinction. */
89
100
  erroredInBand: boolean;
101
+ /**
102
+ * Persona's own id for this run (`RUN_STARTED.runId`): what
103
+ * `POST /feedback` and `client.traces.getByRunId()` take. Not the
104
+ * runtime's `x-persona-run-id` resume id.
105
+ */
106
+ personaRunId?: string;
107
+ /** The run's thread (also set when the run created one). */
108
+ threadId?: string;
90
109
  }
91
110
  interface ErrorContext {
92
111
  userId: string | null;
@@ -128,11 +147,31 @@ interface MemoryWriteContext {
128
147
  agentId?: string;
129
148
  path: string;
130
149
  }
150
+ interface FeedbackContext {
151
+ userId: string;
152
+ /** Persona's run id the rating is for. */
153
+ runId: string;
154
+ score: 1 | -1;
155
+ comment?: string;
156
+ tags?: string[];
157
+ }
158
+ /** A Project-wide admin action taken through an admin capability (deploy, traces, evals). */
159
+ interface AdminActionContext {
160
+ /** Your user who did it (Persona's audit log only knows the API key). */
161
+ userId: string;
162
+ capability: 'deploy' | 'traces' | 'evals';
163
+ /** e.g. `agent.version.deploy`, `trace.replay`, `eval_run.start`. */
164
+ action: string;
165
+ /** Ids the action touched. */
166
+ target: Record<string, unknown>;
167
+ }
131
168
  interface VoiceSessionCreateContext {
132
169
  userId: string;
133
170
  agentId: string;
134
171
  /** Set when the session resumed an existing conversation (optional `threadId` on the request). */
135
172
  threadId?: string;
173
+ environment?: 'development' | 'production';
174
+ agentVersion?: number;
136
175
  }
137
176
  /**
138
177
  * Lifecycle hooks — the host application's voice inside the runtime's
@@ -163,6 +202,15 @@ interface RuntimeHooks {
163
202
  onThreadCreate?(ctx: ThreadCreateContext): void | Promise<void>;
164
203
  /** Fires after a memory file is written via `PUT /memory/file`. */
165
204
  onMemoryWrite?(ctx: MemoryWriteContext): void | Promise<void>;
205
+ /**
206
+ * Fires after a Project-wide change or replay through an admin capability
207
+ * (publish, deploy, rollback, serve policy, replay, eval run and dataset
208
+ * changes). Persona's audit log names only the API key, so record your
209
+ * user here.
210
+ */
211
+ onAdminAction?(ctx: AdminActionContext): void | Promise<void>;
212
+ /** Fires after an end user's rating is saved via `POST /feedback`. */
213
+ onFeedback?(ctx: FeedbackContext): void | Promise<void>;
166
214
  /** Fires after a voice session ticket is minted via `POST /voice/sessions`. */
167
215
  onVoiceSessionCreate?(ctx: VoiceSessionCreateContext): void | Promise<void>;
168
216
  }
@@ -224,6 +272,72 @@ interface RuntimeCapabilities {
224
272
  * end-user-scoped. @default false
225
273
  */
226
274
  messages?: boolean;
275
+ /** Project secrets (`/secrets`) — write-only values, but creating/rotating them is configuration. @default false */
276
+ secrets?: boolean;
277
+ /** REST tool sources (`/rest-tool-sources`) CRUD + Test Connection. @default false */
278
+ restToolSources?: boolean;
279
+ /**
280
+ * Agent versions (`/agents/:id/versions`, `/agents/:id/deployments`):
281
+ * publish, diff, stats, deploy, rollback, serve policy. Key scope
282
+ * `deploy:write`. @default false
283
+ */
284
+ deploy?: boolean;
285
+ /** Traces and replays (`/traces`): every end user's conversations. Key scope `traces:read` (+ `agent:invoke` to replay). @default false */
286
+ traces?: boolean;
287
+ /** Datasets and eval runs (`/datasets`, `/eval-runs`). Key scope `eval:run`. @default false */
288
+ evals?: boolean;
289
+ /** Budget status and usage stats (`/observe/budget`, `/observe/usage`), read-only. Key scope `traces:read`. @default false */
290
+ observe?: boolean;
291
+ }
292
+ /** What {@link CreateRuntimeOptions.selectVersion} is asked about. */
293
+ interface VersionSelectionContext {
294
+ userId: string;
295
+ /** Which route is starting the run. */
296
+ kind: 'chat' | 'voice' | 'messages' | 'workflow';
297
+ /** The Agent (absent for `kind: 'workflow'`, whose choice applies to every agent step). */
298
+ agentId?: string;
299
+ /** Set for `kind: 'workflow'`. */
300
+ workflowId?: string;
301
+ }
302
+ /** Which published version of an Agent a run uses. Empty = the Agent's own default. */
303
+ interface VersionSelection {
304
+ environment?: AgentEnvironment;
305
+ /** A published version number; wins over `environment`. */
306
+ agentVersion?: number;
307
+ }
308
+ /** Handler for one Persona webhook event type. Throw to answer 500, so Persona retries. */
309
+ type WebhookHandler = (event: WebhookEvent, delivery: WebhookDelivery) => void | Promise<void>;
310
+ interface WebhookDelivery {
311
+ /** `X-Persona-Delivery` — the same on every retry of one delivery. */
312
+ id: string | undefined;
313
+ /** `X-Persona-Event`. */
314
+ type: WebhookEventType;
315
+ }
316
+ /**
317
+ * Receives Persona's outgoing webhooks (Platform → Observe → Webhooks) at
318
+ * `POST {mountPath}/webhooks/persona`. Public route: it checks
319
+ * `X-Persona-Signature` (HMAC-SHA256 over the raw body) instead of
320
+ * `resolveUser`. Needs the adapter to put the raw body on
321
+ * `RuntimeRequest.rawBody`.
322
+ */
323
+ interface WebhooksOptions {
324
+ /** The endpoint's signing secret (`whsec_…`, shown once when you create the webhook). */
325
+ secret: string;
326
+ /** One handler per event type, and/or `'*'` for every event. */
327
+ on: Partial<Record<WebhookEventType | '*', WebhookHandler>>;
328
+ /** Reject deliveries whose signature timestamp is further than this from now. @default 300 */
329
+ toleranceSec?: number;
330
+ /**
331
+ * Where handled delivery ids are remembered, so a retried delivery
332
+ * (same `X-Persona-Delivery`) runs your handler once. `add` is called
333
+ * only after the handlers succeed. The default keeps the last 1000 ids
334
+ * in memory (one process); use your database or Redis when running
335
+ * several instances.
336
+ */
337
+ dedupe?: {
338
+ has(deliveryId: string): boolean | Promise<boolean>;
339
+ add(deliveryId: string): void | Promise<void>;
340
+ };
227
341
  }
228
342
  /**
229
343
  * Serves a list of code-defined REST tools (built with `defineRestTool`
@@ -381,6 +495,36 @@ interface CreateRuntimeOptions {
381
495
  * this is provided.
382
496
  */
383
497
  channels?: ChannelsOptions;
498
+ /**
499
+ * Picks the published version a run uses, per request — canaries, beta
500
+ * users on `development`, pinning one customer to a version. Applies to
501
+ * `/chat`, `/voice/sessions`, `/messages/agent` and workflow runs (their
502
+ * agent steps). Return `undefined` for the default.
503
+ */
504
+ selectVersion?: (ctx: VersionSelectionContext) => VersionSelection | undefined | Promise<VersionSelection | undefined>;
505
+ /**
506
+ * Shortcut for `selectVersion: () => ({ environment })`. Without either,
507
+ * an Agent runs its editable **draft** for your end users unless its
508
+ * "serve only deployed versions" policy is on — set this to
509
+ * `'production'` for a production app. `selectVersion` wins when both are set.
510
+ */
511
+ defaultEnvironment?: AgentEnvironment;
512
+ /**
513
+ * Lets the browser choose with `environment` / `agentVersion` in the
514
+ * `/chat` and `/voice/sessions` body (e.g. an internal preview build).
515
+ * Off by default: otherwise any end user could run an unreleased version.
516
+ * When on, the browser's choice wins over `selectVersion`.
517
+ * @default false
518
+ */
519
+ allowClientVersionSelection?: boolean;
520
+ /**
521
+ * Forward the incoming `traceparent` header to Persona on `/chat`,
522
+ * `/voice/sessions`, `/messages/agent` and workflow runs, so their traces
523
+ * join your own OpenTelemetry trace. @default true
524
+ */
525
+ forwardTraceparent?: boolean;
526
+ /** Receive Persona webhooks at `POST /webhooks/persona`. See {@link WebhooksOptions}. Unset by default. */
527
+ webhooks?: WebhooksOptions;
384
528
  /** Log level for the runtime — off by default. Overrides the global level set via `setLogLevel()` from `@personaai/sdk`. */
385
529
  logLevel?: LogLevel;
386
530
  /** Custom logger instance — when provided, `logLevel` is ignored. */
@@ -407,6 +551,9 @@ declare class RuntimeHttpError extends Error {
407
551
  constructor(status: number, code: string, message: string);
408
552
  }
409
553
 
410
- declare const RUNTIME_VERSION = "0.22.0";
554
+ declare const RUNTIME_VERSION = "0.24.0";
555
+
556
+ /** The API key scope each capability needs (`*` covers everything). */
557
+ declare const CAPABILITY_SCOPES: Record<keyof RuntimeCapabilities, string[]>;
411
558
 
412
- export { type ChannelsOptions, type CreateRuntimeOptions, type ErrorContext, type FileUploadContext, type MemoryWriteContext, RUNTIME_VERSION, type RcpManifestOptions, type ResolveTwilioChannelUser, type ResolveUser, type RestToolManifestEntry, type RestToolsManifestOptions, type RunContext, type RunResult, type Runtime, type RuntimeBinaryResponse, type RuntimeBufferedResponse, type RuntimeCapabilities, type RuntimeHooks, RuntimeHttpError, type RuntimeMethod, type RuntimeRequest, type RuntimeResponse, type RuntimeStreamResponse, type RuntimeUploadedFile, type ThreadCreateContext, type ToolCallContext, type TwilioChannelOptions, type TwilioChannelRequest, type TwilioChannelUser, type VoiceSessionCreateContext, type WorkflowNodeContext, createRuntime };
559
+ export { type AdminActionContext, CAPABILITY_SCOPES, type ChannelsOptions, type CreateRuntimeOptions, type ErrorContext, type FeedbackContext, type FileUploadContext, type MemoryWriteContext, RUNTIME_VERSION, type RcpManifestOptions, type ResolveTwilioChannelUser, type ResolveUser, type RestToolManifestEntry, type RestToolsManifestOptions, type RunContext, type RunResult, type Runtime, type RuntimeBinaryResponse, type RuntimeBufferedResponse, type RuntimeCapabilities, type RuntimeHooks, RuntimeHttpError, type RuntimeMethod, type RuntimeRequest, type RuntimeResponse, type RuntimeStreamResponse, type RuntimeUploadedFile, type ThreadCreateContext, type ToolCallContext, type TwilioChannelOptions, type TwilioChannelRequest, type TwilioChannelUser, type VersionSelection, type VersionSelectionContext, type VoiceSessionCreateContext, type WebhookDelivery, type WebhookHandler, type WebhooksOptions, type WorkflowNodeContext, createRuntime };