lua-cli 3.18.0 → 3.20.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/api-exports.d.ts +291 -41
- package/dist/api-exports.js +519 -3
- package/dist/api-exports.js.map +1 -1
- package/dist/index.js +837 -19
- package/dist/index.js.map +1 -1
- package/dist/voice/test/index.d.ts +30 -30
- package/docs/README.md +2 -2
- package/package.json +3 -3
- package/template/package.json +1 -1
package/dist/api-exports.d.ts
CHANGED
|
@@ -27,6 +27,10 @@ declare interface AgentInvocationInput {
|
|
|
27
27
|
systemPrompt?: string;
|
|
28
28
|
/** Additional runtime context attached to the request. */
|
|
29
29
|
runtimeContext?: string;
|
|
30
|
+
/** Client-side context (e.g. the caller's IANA timezone) for this invocation. */
|
|
31
|
+
clientContext?: {
|
|
32
|
+
timezone?: string;
|
|
33
|
+
};
|
|
30
34
|
/**
|
|
31
35
|
* Optional thread ID suffix for conversation scoping. When omitted, the
|
|
32
36
|
* invocation flows into the caller-user's default chat thread with the
|
|
@@ -86,11 +90,19 @@ declare interface AgentInvocationOutput {
|
|
|
86
90
|
}
|
|
87
91
|
|
|
88
92
|
/**
|
|
89
|
-
* Per-agent LLM call settings
|
|
93
|
+
* Per-agent LLM call settings PLUS normalized reasoning config. The
|
|
94
|
+
* `CallSettings` leafs (`temperature`, `topP`, …) map directly onto Mastra's
|
|
90
95
|
* `agent.stream({ modelSettings })` / `agent.generate({ modelSettings })`,
|
|
91
|
-
* which in turn maps onto the AI SDK's `CallSettings
|
|
92
|
-
*
|
|
93
|
-
*
|
|
96
|
+
* which in turn maps onto the AI SDK's `CallSettings` — pass-through, we
|
|
97
|
+
* don't validate ranges here; the provider will reject invalid combos (e.g.
|
|
98
|
+
* topP > 1, presencePenalty out of provider range).
|
|
99
|
+
*
|
|
100
|
+
* `reasoning` is NOT a `CallSettings` key — it's the agent-level tier of the
|
|
101
|
+
* `ModelRequestOptions` precedence chain (request > agent `reasoning` >
|
|
102
|
+
* per-model DB `modelOptions` > code defaults). lua-core splits this bag
|
|
103
|
+
* before calling Mastra: `reasoning` is stripped and merged into the
|
|
104
|
+
* provider-options resolution seam instead of being passed through as a
|
|
105
|
+
* `CallSettings` field.
|
|
94
106
|
*
|
|
95
107
|
* Deliberately excludes `abortSignal` (not serializable), `headers`
|
|
96
108
|
* (security — could exfiltrate credentials), and `maxRetries` (platform
|
|
@@ -113,6 +125,17 @@ export declare interface AgentModelSettings {
|
|
|
113
125
|
stopSequences?: string[];
|
|
114
126
|
/** Random seed for deterministic sampling (provider support varies). */
|
|
115
127
|
seed?: number;
|
|
128
|
+
/**
|
|
129
|
+
* Per-agent reasoning default. Lower precedence than a per-request
|
|
130
|
+
* `options.reasoning` override; higher precedence than the per-model DB
|
|
131
|
+
* `modelOptions.reasoning` override. Verbosity is deliberately NOT
|
|
132
|
+
* available here — it stays request-level only (`ModelRequestOptions.verbosity`).
|
|
133
|
+
*/
|
|
134
|
+
reasoning?: {
|
|
135
|
+
effort?: ReasoningEffort;
|
|
136
|
+
/** Whether to surface the reasoning trace to the caller. Default true. */
|
|
137
|
+
show?: boolean;
|
|
138
|
+
};
|
|
116
139
|
}
|
|
117
140
|
|
|
118
141
|
export declare const Agents: AgentsApi;
|
|
@@ -634,6 +657,23 @@ declare interface BatchingConfig {
|
|
|
634
657
|
serializeProcessing?: boolean;
|
|
635
658
|
}
|
|
636
659
|
|
|
660
|
+
/**
|
|
661
|
+
* Browser switch config (LuaBrowser). `browser: true` is the zero-code form —
|
|
662
|
+
* the agent gets browser tools injected, like `searchWeb`, routed to the user's
|
|
663
|
+
* local browser (desktop) or the Browser-Use cloud fallback. The object form
|
|
664
|
+
* adds optional policy.
|
|
665
|
+
*/
|
|
666
|
+
declare interface BrowserSwitchConfig {
|
|
667
|
+
/** Preferred engine; 'auto' lets the platform pick local (desktop) vs cloud. */
|
|
668
|
+
engine?: 'auto' | 'browser-use' | 'agent-browser';
|
|
669
|
+
/** Egress allowlist — domains the browser may navigate/sub-request. */
|
|
670
|
+
allowedDomains?: string[];
|
|
671
|
+
/** Names of vault credential entries the agent may use (never raw secrets). */
|
|
672
|
+
credentials?: string[];
|
|
673
|
+
/** Hard cap on a single browser session's duration (cost control). */
|
|
674
|
+
maxSessionMinutes?: number;
|
|
675
|
+
}
|
|
676
|
+
|
|
637
677
|
/**
|
|
638
678
|
* CDN API
|
|
639
679
|
* Upload and retrieve files from the Lua CDN
|
|
@@ -727,6 +767,13 @@ export declare const Channels: ChannelsApi;
|
|
|
727
767
|
* languageCode: 'en',
|
|
728
768
|
* });
|
|
729
769
|
*
|
|
770
|
+
* // React to a WhatsApp message
|
|
771
|
+
* await Channels.whatsapp.sendReaction({
|
|
772
|
+
* to: { phoneNumber: '+15551234567' },
|
|
773
|
+
* messageId: 'wamid.HBgL...',
|
|
774
|
+
* emoji: '👍',
|
|
775
|
+
* });
|
|
776
|
+
*
|
|
730
777
|
* // Send an email
|
|
731
778
|
* await Channels.email.send({
|
|
732
779
|
* to: { email: 'customer@example.com' },
|
|
@@ -767,6 +814,23 @@ export declare interface ChannelsApi {
|
|
|
767
814
|
* ```
|
|
768
815
|
*/
|
|
769
816
|
sendTemplate(input: WhatsAppTemplateSendInput): Promise<ChannelSendOutput>;
|
|
817
|
+
/**
|
|
818
|
+
* React to a WhatsApp message with a single emoji.
|
|
819
|
+
*
|
|
820
|
+
* `messageId` is the vendor message id (`wamid...`) — e.g. read it off an
|
|
821
|
+
* inbound message from the channel webhook/history — and must be ≤30 days
|
|
822
|
+
* old (Meta limit). Pass `emoji: ''` to remove an existing reaction.
|
|
823
|
+
*
|
|
824
|
+
* @example
|
|
825
|
+
* ```typescript
|
|
826
|
+
* await Channels.whatsapp.sendReaction({
|
|
827
|
+
* to: { phoneNumber: '+447551166594' },
|
|
828
|
+
* messageId: 'wamid.HBgL...',
|
|
829
|
+
* emoji: '👍',
|
|
830
|
+
* });
|
|
831
|
+
* ```
|
|
832
|
+
*/
|
|
833
|
+
sendReaction(input: WhatsAppReactionSendInput): Promise<ChannelSendOutput>;
|
|
770
834
|
};
|
|
771
835
|
/** Email-specific send operations. */
|
|
772
836
|
email: {
|
|
@@ -859,12 +923,27 @@ export declare interface ChannelSendTarget {
|
|
|
859
923
|
/**
|
|
860
924
|
* One content part of a chat-history message.
|
|
861
925
|
*
|
|
862
|
-
* `text` parts carry plain text.
|
|
863
|
-
*
|
|
864
|
-
*
|
|
926
|
+
* `text` parts carry plain text. `reasoning` parts carry the model's
|
|
927
|
+
* chain-of-thought in the `text` field so a history reload can re-render the
|
|
928
|
+
* reasoning component (PRO-391). `tool` parts carry a persisted tool
|
|
929
|
+
* invocation (`toolName`, `toolCallId`, `input` args, and — on a terminal
|
|
930
|
+
* turn — the `output` result and `toolState`) so a reloaded turn can
|
|
931
|
+
* re-render its tool-call cards. `source` parts carry a web-search citation
|
|
932
|
+
* (`url` + optional `title`/`sourceId`) so a reloaded turn keeps its sources
|
|
933
|
+
* footer — the persisted twin of the live stream's `source-url` parts.
|
|
934
|
+
* Media parts (`image` / `video` / `audio` / `file`) carry a URL or base64
|
|
935
|
+
* payload in `data` (or `image` / `video` for legacy reasons) plus a
|
|
936
|
+
* `mediaType` MIME string.
|
|
937
|
+
* `source-url` / `source-document` parts carry a persisted citation
|
|
938
|
+
* (web-search grounding / document citation, PRO-430): `url` + `title` for
|
|
939
|
+
* URLs; `mediaType` + `title` + `filename` (+ citation offsets inside
|
|
940
|
+
* `providerMetadata`) for documents; both keyed by `sourceId`.
|
|
941
|
+
* `data-lua-*` parts carry a persisted enriched stream part (e.g. a
|
|
942
|
+
* sub-agent delegation card) with its original data object in `payload`
|
|
943
|
+
* (`data` is reserved for media payload strings).
|
|
865
944
|
*/
|
|
866
945
|
export declare interface ChatHistoryContent {
|
|
867
|
-
type: 'text' | 'image' | 'video' | 'audio' | 'file'
|
|
946
|
+
type: 'text' | 'reasoning' | 'tool' | 'image' | 'video' | 'audio' | 'file' | 'source-url' | 'source-document' | `data-lua-${string}`;
|
|
868
947
|
text?: string;
|
|
869
948
|
image?: string;
|
|
870
949
|
video?: string;
|
|
@@ -872,6 +951,17 @@ export declare interface ChatHistoryContent {
|
|
|
872
951
|
mediaType?: string;
|
|
873
952
|
latitude?: number;
|
|
874
953
|
longitude?: number;
|
|
954
|
+
toolName?: string;
|
|
955
|
+
toolCallId?: string;
|
|
956
|
+
input?: unknown;
|
|
957
|
+
output?: unknown;
|
|
958
|
+
toolState?: string;
|
|
959
|
+
sourceId?: string;
|
|
960
|
+
url?: string;
|
|
961
|
+
title?: string;
|
|
962
|
+
filename?: string;
|
|
963
|
+
providerMetadata?: Record<string, unknown>;
|
|
964
|
+
payload?: unknown;
|
|
875
965
|
}
|
|
876
966
|
|
|
877
967
|
/**
|
|
@@ -886,6 +976,24 @@ export declare interface ChatHistoryMessage {
|
|
|
886
976
|
/** ISO-8601 timestamp string. */
|
|
887
977
|
createdAt: string;
|
|
888
978
|
content: ChatHistoryContent[];
|
|
979
|
+
/**
|
|
980
|
+
* Origin of the message, derived from the `mastra_messages.type` column:
|
|
981
|
+
* `'voice'` for turns mirrored from a finished LiveKit voice call, `'chat'`
|
|
982
|
+
* for everything else. Additive/optional — absent on rows written before this
|
|
983
|
+
* landed and on call sites that don't select the `type` column. Clients use it
|
|
984
|
+
* to render a "Voice call" divider in the thread.
|
|
985
|
+
*/
|
|
986
|
+
source?: 'voice' | 'chat';
|
|
987
|
+
/**
|
|
988
|
+
* Permanent recording for a voice-note turn (Lua Desktop). Populated by the
|
|
989
|
+
* admin threads history endpoint from the row's `content.metadata.audio` — a
|
|
990
|
+
* sibling of the model content, so the url is NEVER part of the LLM prompt.
|
|
991
|
+
* Present only on desktop voice-note user turns; clients render an audio
|
|
992
|
+
* player / voice bubble off `audio.url`. Absent on all other messages.
|
|
993
|
+
*/
|
|
994
|
+
audio?: {
|
|
995
|
+
url: string;
|
|
996
|
+
};
|
|
889
997
|
}
|
|
890
998
|
|
|
891
999
|
/**
|
|
@@ -1268,6 +1376,37 @@ export declare interface DeviceTriggerConfig {
|
|
|
1268
1376
|
}) => Promise<any>;
|
|
1269
1377
|
}
|
|
1270
1378
|
|
|
1379
|
+
/** A matched org member and their shareable channel targets (empty when none shared). */
|
|
1380
|
+
export declare interface DirectoryMatch {
|
|
1381
|
+
userId: string;
|
|
1382
|
+
fullName?: string;
|
|
1383
|
+
primaryEmail?: string;
|
|
1384
|
+
targets: DirectoryTarget[];
|
|
1385
|
+
}
|
|
1386
|
+
|
|
1387
|
+
/** Result of POST /developer/agents/:agentId/directory/resolve. */
|
|
1388
|
+
export declare interface DirectoryResolveResult {
|
|
1389
|
+
query: string;
|
|
1390
|
+
matches: DirectoryMatch[];
|
|
1391
|
+
}
|
|
1392
|
+
|
|
1393
|
+
/**
|
|
1394
|
+
* Wire contracts for the workspace directory resolve endpoint.
|
|
1395
|
+
*
|
|
1396
|
+
* lua-cli `Team.findMember(name)` ↔ lua-api `POST /developer/agents/:agentId/directory/resolve`.
|
|
1397
|
+
* Resolves a teammate by name within the AGENT's organization (the org is derived
|
|
1398
|
+
* server-side from the agent), returning only the channel handles each member opted
|
|
1399
|
+
* to share. Returns a list — the caller disambiguates when more than one matches.
|
|
1400
|
+
*/
|
|
1401
|
+
/** A channel the teammate opted to be reachable on within the workspace. */
|
|
1402
|
+
export declare interface DirectoryTarget {
|
|
1403
|
+
channel: 'whatsapp' | 'sms' | 'email';
|
|
1404
|
+
/** E.164 for whatsapp/sms; address for email. */
|
|
1405
|
+
value: string;
|
|
1406
|
+
label?: string;
|
|
1407
|
+
validated: boolean;
|
|
1408
|
+
}
|
|
1409
|
+
|
|
1271
1410
|
/** A single email attachment, referenced by URL — lua-email fetches the bytes
|
|
1272
1411
|
* server-side and attaches them, keeping large files off the SDK→API hops. */
|
|
1273
1412
|
declare interface EmailAttachmentInput {
|
|
@@ -1278,16 +1417,38 @@ declare interface EmailAttachmentInput {
|
|
|
1278
1417
|
|
|
1279
1418
|
/** Body of POST /developer/agents/:agentId/channels/email/send */
|
|
1280
1419
|
export declare interface EmailSendInput {
|
|
1420
|
+
/** Recipient — `email` (cold) or `userId` (resolved to the user's email
|
|
1421
|
+
* address from their channel history). At least one must be set. */
|
|
1281
1422
|
to: {
|
|
1282
1423
|
userId?: string;
|
|
1283
1424
|
email?: string;
|
|
1284
1425
|
};
|
|
1285
1426
|
subject?: string;
|
|
1427
|
+
/** Plain-text body, sent as-is (the MIME text/plain part). */
|
|
1286
1428
|
text?: string;
|
|
1429
|
+
/** Exact HTML body, sent as-is (the MIME text/html part) — no template wrap. */
|
|
1287
1430
|
html?: string;
|
|
1431
|
+
/**
|
|
1432
|
+
* Rich body — markdown and `:::` component markers, rendered server-side into
|
|
1433
|
+
* the branded email template (the same rendering the agent's own replies use).
|
|
1434
|
+
* Use this for "send this message as a nice email"; use `html` instead when you
|
|
1435
|
+
* want to control the exact markup. Mutually exclusive with `html`/`text`.
|
|
1436
|
+
*/
|
|
1437
|
+
richBody?: string;
|
|
1288
1438
|
cc?: string[];
|
|
1289
1439
|
bcc?: string[];
|
|
1290
1440
|
attachments?: EmailAttachmentInput[];
|
|
1441
|
+
/**
|
|
1442
|
+
* RFC 5322 threading: the `Message-ID` of the email this one replies to. Set
|
|
1443
|
+
* `In-Reply-To` (and append to `References`) so mail clients thread the reply
|
|
1444
|
+
* into the right conversation — e.g. a per-ticket thread. The value is the
|
|
1445
|
+
* inbound email's Message-ID, surfaced to agent code as `webhookPayload.messageId`.
|
|
1446
|
+
* Angle brackets are optional; lua-email wraps bare ids. Honoured on the SES
|
|
1447
|
+
* (branded/`existing`) email channel.
|
|
1448
|
+
*/
|
|
1449
|
+
inReplyTo?: string;
|
|
1450
|
+
/** RFC 5322 `References` chain — the accumulated Message-IDs of the thread. */
|
|
1451
|
+
references?: string[];
|
|
1291
1452
|
options?: ChannelSendOptions;
|
|
1292
1453
|
}
|
|
1293
1454
|
|
|
@@ -1361,9 +1522,20 @@ declare interface GovernanceConfig {
|
|
|
1361
1522
|
* `rules`/`injection` on top. `'security'` = block dangerous tools + requireLevel(2).
|
|
1362
1523
|
*/
|
|
1363
1524
|
preset?: 'security';
|
|
1364
|
-
/**
|
|
1525
|
+
/**
|
|
1526
|
+
* SDK mode — prompt-injection scan on inputs (maps to the SDK's `createInjectionGuard`).
|
|
1527
|
+
* `ml: true` additionally runs the Governance Cloud ML ensemble (regex+DeBERTa) per
|
|
1528
|
+
* message and adds the SDK's `mlInjectionGuard` rule — a hybrid that blocks when EITHER
|
|
1529
|
+
* the regex score crosses `threshold` OR the ML score crosses `mlThreshold`. The two are
|
|
1530
|
+
* scored independently: `threshold` (~0.8) suits the regex weights, while the ML score is
|
|
1531
|
+
* a calibrated model confidence with its own tuned operating point (`mlThreshold`, default
|
|
1532
|
+
* 0.95 — the ensemble's confirmation gate). Requires GOVERNANCE_ML_URL / GOVERNANCE_ML_API_KEY
|
|
1533
|
+
* on the platform; falls back to regex-only when unset or on error.
|
|
1534
|
+
*/
|
|
1365
1535
|
injection?: {
|
|
1366
1536
|
threshold: number;
|
|
1537
|
+
ml?: boolean;
|
|
1538
|
+
mlThreshold?: number;
|
|
1367
1539
|
};
|
|
1368
1540
|
/** SDK mode — local in-memory policy rules layered on top of any `preset`. */
|
|
1369
1541
|
rules?: {
|
|
@@ -1633,7 +1805,7 @@ declare class JobApi extends HttpClient {
|
|
|
1633
1805
|
* @returns Promise resolving to an ApiResponse containing the full updated job
|
|
1634
1806
|
* @throws Error if the job or version is not found or the publish operation fails
|
|
1635
1807
|
*/
|
|
1636
|
-
publishJobVersion(jobId: string, version: string): Promise<ApiResponse<Job>>;
|
|
1808
|
+
publishJobVersion(jobId: string, version: string): Promise<ApiResponse<Job & ScopedPromoteFields>>;
|
|
1637
1809
|
/**
|
|
1638
1810
|
* Deletes a job and all its versions, or deactivates it if it has versions
|
|
1639
1811
|
* @param jobId - The unique identifier of the job to delete
|
|
@@ -2055,6 +2227,7 @@ export declare class LuaAgent {
|
|
|
2055
2227
|
private readonly voices?;
|
|
2056
2228
|
private readonly batching?;
|
|
2057
2229
|
private readonly governance?;
|
|
2230
|
+
private readonly browser?;
|
|
2058
2231
|
/**
|
|
2059
2232
|
* Creates a new LuaAgent instance.
|
|
2060
2233
|
*
|
|
@@ -2073,6 +2246,8 @@ export declare class LuaAgent {
|
|
|
2073
2246
|
*/
|
|
2074
2247
|
constructor(config: LuaAgentConfig);
|
|
2075
2248
|
getName(): string;
|
|
2249
|
+
/** Browser switch (LuaBrowser) — `true`/config when the agent can browse. */
|
|
2250
|
+
getBrowser(): LuaAgentConfig['browser'];
|
|
2076
2251
|
getPersona(): PersonaText;
|
|
2077
2252
|
getModel(): LuaAgentModel | undefined;
|
|
2078
2253
|
getModelSettings(): AgentModelSettings | undefined;
|
|
@@ -2100,8 +2275,12 @@ export declare interface LuaAgentConfig {
|
|
|
2100
2275
|
* Passed straight through to Mastra / AI SDK on every `chat/stream` and
|
|
2101
2276
|
* `chat/generate`. Undefined leaves provider defaults in place.
|
|
2102
2277
|
*
|
|
2278
|
+
* `reasoning` is the exception — it's not a sampling setting. It sets this
|
|
2279
|
+
* agent's default reasoning effort/visibility across providers (Claude,
|
|
2280
|
+
* GPT, Gemini, …); a per-request `options.reasoning` override always wins.
|
|
2281
|
+
*
|
|
2103
2282
|
* @example
|
|
2104
|
-
* modelSettings: { temperature: 0.2, maxOutputTokens: 4096 }
|
|
2283
|
+
* modelSettings: { temperature: 0.2, maxOutputTokens: 4096, reasoning: { effort: 'low' } }
|
|
2105
2284
|
*/
|
|
2106
2285
|
modelSettings?: AgentModelSettings;
|
|
2107
2286
|
/** Array of skills (each with tools) */
|
|
@@ -2133,6 +2312,13 @@ export declare interface LuaAgentConfig {
|
|
|
2133
2312
|
batching?: BatchingConfig;
|
|
2134
2313
|
/** Governance policy configuration. When set, tool calls, preprocessors, and postprocessors are governed. */
|
|
2135
2314
|
governance?: GovernanceConfig;
|
|
2315
|
+
/**
|
|
2316
|
+
* Browser switch (LuaBrowser). `true` turns on browser tools with platform
|
|
2317
|
+
* defaults; an object adds policy (engine, allowedDomains, credentials,
|
|
2318
|
+
* maxSessionMinutes). Off by default — a browser session costs money and
|
|
2319
|
+
* carries risk, so it's opt-in (unlike always-on searchWeb).
|
|
2320
|
+
*/
|
|
2321
|
+
browser?: boolean | BrowserSwitchConfig;
|
|
2136
2322
|
}
|
|
2137
2323
|
|
|
2138
2324
|
/**
|
|
@@ -2863,11 +3049,11 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2863
3049
|
}, "strip", z.ZodTypeAny, {
|
|
2864
3050
|
options?: Record<string, unknown>;
|
|
2865
3051
|
kind?: "realtime";
|
|
2866
|
-
provider?: "
|
|
3052
|
+
provider?: "google" | "xai" | "openai";
|
|
2867
3053
|
}, {
|
|
2868
3054
|
options?: Record<string, unknown>;
|
|
2869
3055
|
kind?: "realtime";
|
|
2870
|
-
provider?: "
|
|
3056
|
+
provider?: "google" | "xai" | "openai";
|
|
2871
3057
|
}>]>;
|
|
2872
3058
|
stt: z.ZodOptional<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
2873
3059
|
kind: z.ZodLiteral<"inference">;
|
|
@@ -2929,11 +3115,11 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2929
3115
|
}, "strip", z.ZodTypeAny, {
|
|
2930
3116
|
options?: Record<string, unknown>;
|
|
2931
3117
|
kind?: "realtime";
|
|
2932
|
-
provider?: "
|
|
3118
|
+
provider?: "google" | "xai" | "openai";
|
|
2933
3119
|
}, {
|
|
2934
3120
|
options?: Record<string, unknown>;
|
|
2935
3121
|
kind?: "realtime";
|
|
2936
|
-
provider?: "
|
|
3122
|
+
provider?: "google" | "xai" | "openai";
|
|
2937
3123
|
}>]>>;
|
|
2938
3124
|
tts: z.ZodOptional<z.ZodDiscriminatedUnion<"kind", [z.ZodObject<{
|
|
2939
3125
|
kind: z.ZodLiteral<"inference">;
|
|
@@ -2995,11 +3181,11 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
2995
3181
|
}, "strip", z.ZodTypeAny, {
|
|
2996
3182
|
options?: Record<string, unknown>;
|
|
2997
3183
|
kind?: "realtime";
|
|
2998
|
-
provider?: "
|
|
3184
|
+
provider?: "google" | "xai" | "openai";
|
|
2999
3185
|
}, {
|
|
3000
3186
|
options?: Record<string, unknown>;
|
|
3001
3187
|
kind?: "realtime";
|
|
3002
|
-
provider?: "
|
|
3188
|
+
provider?: "google" | "xai" | "openai";
|
|
3003
3189
|
}>]>>;
|
|
3004
3190
|
vad: z.ZodOptional<z.ZodString>;
|
|
3005
3191
|
vadOptions: z.ZodOptional<z.ZodObject<{
|
|
@@ -3032,28 +3218,28 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3032
3218
|
maxDelay: z.ZodOptional<z.ZodNumber>;
|
|
3033
3219
|
}, "strip", z.ZodTypeAny, {
|
|
3034
3220
|
enabled?: boolean;
|
|
3035
|
-
mode?: "
|
|
3221
|
+
mode?: "adaptive" | "vad";
|
|
3036
3222
|
falseInterruptionTimeout?: number;
|
|
3037
3223
|
resumeFalseInterruption?: boolean;
|
|
3038
3224
|
minDelay?: number;
|
|
3039
3225
|
maxDelay?: number;
|
|
3040
3226
|
}, {
|
|
3041
3227
|
enabled?: boolean;
|
|
3042
|
-
mode?: "
|
|
3228
|
+
mode?: "adaptive" | "vad";
|
|
3043
3229
|
falseInterruptionTimeout?: number;
|
|
3044
3230
|
resumeFalseInterruption?: boolean;
|
|
3045
3231
|
minDelay?: number;
|
|
3046
3232
|
maxDelay?: number;
|
|
3047
3233
|
}>, {
|
|
3048
3234
|
enabled?: boolean;
|
|
3049
|
-
mode?: "
|
|
3235
|
+
mode?: "adaptive" | "vad";
|
|
3050
3236
|
falseInterruptionTimeout?: number;
|
|
3051
3237
|
resumeFalseInterruption?: boolean;
|
|
3052
3238
|
minDelay?: number;
|
|
3053
3239
|
maxDelay?: number;
|
|
3054
3240
|
}, {
|
|
3055
3241
|
enabled?: boolean;
|
|
3056
|
-
mode?: "
|
|
3242
|
+
mode?: "adaptive" | "vad";
|
|
3057
3243
|
falseInterruptionTimeout?: number;
|
|
3058
3244
|
resumeFalseInterruption?: boolean;
|
|
3059
3245
|
minDelay?: number;
|
|
@@ -3157,6 +3343,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3157
3343
|
onToolFailureSay: z.ZodOptional<z.ZodString>;
|
|
3158
3344
|
excludeTools: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
3159
3345
|
}, "strip", z.ZodTypeAny, {
|
|
3346
|
+
name?: string;
|
|
3160
3347
|
vad?: string;
|
|
3161
3348
|
stt?: {
|
|
3162
3349
|
voice?: string;
|
|
@@ -3171,10 +3358,9 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3171
3358
|
} | {
|
|
3172
3359
|
options?: Record<string, unknown>;
|
|
3173
3360
|
kind?: "realtime";
|
|
3174
|
-
provider?: "
|
|
3361
|
+
provider?: "google" | "xai" | "openai";
|
|
3175
3362
|
};
|
|
3176
3363
|
volume?: number;
|
|
3177
|
-
name?: string;
|
|
3178
3364
|
llm?: {
|
|
3179
3365
|
voice?: string;
|
|
3180
3366
|
options?: Record<string, unknown>;
|
|
@@ -3188,7 +3374,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3188
3374
|
} | {
|
|
3189
3375
|
options?: Record<string, unknown>;
|
|
3190
3376
|
kind?: "realtime";
|
|
3191
|
-
provider?: "
|
|
3377
|
+
provider?: "google" | "xai" | "openai";
|
|
3192
3378
|
};
|
|
3193
3379
|
tts?: {
|
|
3194
3380
|
voice?: string;
|
|
@@ -3203,7 +3389,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3203
3389
|
} | {
|
|
3204
3390
|
options?: Record<string, unknown>;
|
|
3205
3391
|
kind?: "realtime";
|
|
3206
|
-
provider?: "
|
|
3392
|
+
provider?: "google" | "xai" | "openai";
|
|
3207
3393
|
};
|
|
3208
3394
|
vadOptions?: {
|
|
3209
3395
|
minSpeechDuration?: number;
|
|
@@ -3218,7 +3404,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3218
3404
|
preemptiveGeneration?: boolean;
|
|
3219
3405
|
interruption?: {
|
|
3220
3406
|
enabled?: boolean;
|
|
3221
|
-
mode?: "
|
|
3407
|
+
mode?: "adaptive" | "vad";
|
|
3222
3408
|
falseInterruptionTimeout?: number;
|
|
3223
3409
|
resumeFalseInterruption?: boolean;
|
|
3224
3410
|
minDelay?: number;
|
|
@@ -3251,6 +3437,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3251
3437
|
onToolFailureSay?: string;
|
|
3252
3438
|
excludeTools?: string[];
|
|
3253
3439
|
}, {
|
|
3440
|
+
name?: string;
|
|
3254
3441
|
vad?: string;
|
|
3255
3442
|
stt?: {
|
|
3256
3443
|
voice?: string;
|
|
@@ -3265,10 +3452,9 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3265
3452
|
} | {
|
|
3266
3453
|
options?: Record<string, unknown>;
|
|
3267
3454
|
kind?: "realtime";
|
|
3268
|
-
provider?: "
|
|
3455
|
+
provider?: "google" | "xai" | "openai";
|
|
3269
3456
|
};
|
|
3270
3457
|
volume?: number;
|
|
3271
|
-
name?: string;
|
|
3272
3458
|
llm?: {
|
|
3273
3459
|
voice?: string;
|
|
3274
3460
|
options?: Record<string, unknown>;
|
|
@@ -3282,7 +3468,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3282
3468
|
} | {
|
|
3283
3469
|
options?: Record<string, unknown>;
|
|
3284
3470
|
kind?: "realtime";
|
|
3285
|
-
provider?: "
|
|
3471
|
+
provider?: "google" | "xai" | "openai";
|
|
3286
3472
|
};
|
|
3287
3473
|
tts?: {
|
|
3288
3474
|
voice?: string;
|
|
@@ -3297,7 +3483,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3297
3483
|
} | {
|
|
3298
3484
|
options?: Record<string, unknown>;
|
|
3299
3485
|
kind?: "realtime";
|
|
3300
|
-
provider?: "
|
|
3486
|
+
provider?: "google" | "xai" | "openai";
|
|
3301
3487
|
};
|
|
3302
3488
|
vadOptions?: {
|
|
3303
3489
|
minSpeechDuration?: number;
|
|
@@ -3312,7 +3498,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3312
3498
|
preemptiveGeneration?: boolean;
|
|
3313
3499
|
interruption?: {
|
|
3314
3500
|
enabled?: boolean;
|
|
3315
|
-
mode?: "
|
|
3501
|
+
mode?: "adaptive" | "vad";
|
|
3316
3502
|
falseInterruptionTimeout?: number;
|
|
3317
3503
|
resumeFalseInterruption?: boolean;
|
|
3318
3504
|
minDelay?: number;
|
|
@@ -3345,6 +3531,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3345
3531
|
onToolFailureSay?: string;
|
|
3346
3532
|
excludeTools?: string[];
|
|
3347
3533
|
}>, {
|
|
3534
|
+
name?: string;
|
|
3348
3535
|
vad?: string;
|
|
3349
3536
|
stt?: {
|
|
3350
3537
|
voice?: string;
|
|
@@ -3359,10 +3546,9 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3359
3546
|
} | {
|
|
3360
3547
|
options?: Record<string, unknown>;
|
|
3361
3548
|
kind?: "realtime";
|
|
3362
|
-
provider?: "
|
|
3549
|
+
provider?: "google" | "xai" | "openai";
|
|
3363
3550
|
};
|
|
3364
3551
|
volume?: number;
|
|
3365
|
-
name?: string;
|
|
3366
3552
|
llm?: {
|
|
3367
3553
|
voice?: string;
|
|
3368
3554
|
options?: Record<string, unknown>;
|
|
@@ -3376,7 +3562,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3376
3562
|
} | {
|
|
3377
3563
|
options?: Record<string, unknown>;
|
|
3378
3564
|
kind?: "realtime";
|
|
3379
|
-
provider?: "
|
|
3565
|
+
provider?: "google" | "xai" | "openai";
|
|
3380
3566
|
};
|
|
3381
3567
|
tts?: {
|
|
3382
3568
|
voice?: string;
|
|
@@ -3391,7 +3577,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3391
3577
|
} | {
|
|
3392
3578
|
options?: Record<string, unknown>;
|
|
3393
3579
|
kind?: "realtime";
|
|
3394
|
-
provider?: "
|
|
3580
|
+
provider?: "google" | "xai" | "openai";
|
|
3395
3581
|
};
|
|
3396
3582
|
vadOptions?: {
|
|
3397
3583
|
minSpeechDuration?: number;
|
|
@@ -3406,7 +3592,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3406
3592
|
preemptiveGeneration?: boolean;
|
|
3407
3593
|
interruption?: {
|
|
3408
3594
|
enabled?: boolean;
|
|
3409
|
-
mode?: "
|
|
3595
|
+
mode?: "adaptive" | "vad";
|
|
3410
3596
|
falseInterruptionTimeout?: number;
|
|
3411
3597
|
resumeFalseInterruption?: boolean;
|
|
3412
3598
|
minDelay?: number;
|
|
@@ -3439,6 +3625,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3439
3625
|
onToolFailureSay?: string;
|
|
3440
3626
|
excludeTools?: string[];
|
|
3441
3627
|
}, {
|
|
3628
|
+
name?: string;
|
|
3442
3629
|
vad?: string;
|
|
3443
3630
|
stt?: {
|
|
3444
3631
|
voice?: string;
|
|
@@ -3453,10 +3640,9 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3453
3640
|
} | {
|
|
3454
3641
|
options?: Record<string, unknown>;
|
|
3455
3642
|
kind?: "realtime";
|
|
3456
|
-
provider?: "
|
|
3643
|
+
provider?: "google" | "xai" | "openai";
|
|
3457
3644
|
};
|
|
3458
3645
|
volume?: number;
|
|
3459
|
-
name?: string;
|
|
3460
3646
|
llm?: {
|
|
3461
3647
|
voice?: string;
|
|
3462
3648
|
options?: Record<string, unknown>;
|
|
@@ -3470,7 +3656,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3470
3656
|
} | {
|
|
3471
3657
|
options?: Record<string, unknown>;
|
|
3472
3658
|
kind?: "realtime";
|
|
3473
|
-
provider?: "
|
|
3659
|
+
provider?: "google" | "xai" | "openai";
|
|
3474
3660
|
};
|
|
3475
3661
|
tts?: {
|
|
3476
3662
|
voice?: string;
|
|
@@ -3485,7 +3671,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3485
3671
|
} | {
|
|
3486
3672
|
options?: Record<string, unknown>;
|
|
3487
3673
|
kind?: "realtime";
|
|
3488
|
-
provider?: "
|
|
3674
|
+
provider?: "google" | "xai" | "openai";
|
|
3489
3675
|
};
|
|
3490
3676
|
vadOptions?: {
|
|
3491
3677
|
minSpeechDuration?: number;
|
|
@@ -3500,7 +3686,7 @@ declare const LuaVoiceConfigSchema: z.ZodEffects<z.ZodObject<{
|
|
|
3500
3686
|
preemptiveGeneration?: boolean;
|
|
3501
3687
|
interruption?: {
|
|
3502
3688
|
enabled?: boolean;
|
|
3503
|
-
mode?: "
|
|
3689
|
+
mode?: "adaptive" | "vad";
|
|
3504
3690
|
falseInterruptionTimeout?: number;
|
|
3505
3691
|
resumeFalseInterruption?: boolean;
|
|
3506
3692
|
minDelay?: number;
|
|
@@ -4793,6 +4979,29 @@ declare interface PushJobVersionDTO {
|
|
|
4793
4979
|
metadata?: Record<string, any>;
|
|
4794
4980
|
}
|
|
4795
4981
|
|
|
4982
|
+
/**
|
|
4983
|
+
* Normalized, provider-agnostic model request options.
|
|
4984
|
+
*
|
|
4985
|
+
* This is the shape clients (Lua Desktop, lua-cli, admin overrides) use to
|
|
4986
|
+
* ask for a reasoning effort / output verbosity without knowing which
|
|
4987
|
+
* provider dialect (Anthropic `thinking`, OpenAI `reasoningEffort`, Google
|
|
4988
|
+
* `thinkingConfig`, …) the resolved model actually speaks. lua-core's
|
|
4989
|
+
* `buildProviderOptions` translates this into the wire-level
|
|
4990
|
+
* `providerOptions` shape per model.
|
|
4991
|
+
*/
|
|
4992
|
+
declare const REASONING_EFFORT_VALUES: readonly ["off", "minimal", "low", "medium", "high", "max"];
|
|
4993
|
+
|
|
4994
|
+
declare type ReasoningEffort = (typeof REASONING_EFFORT_VALUES)[number];
|
|
4995
|
+
|
|
4996
|
+
/**
|
|
4997
|
+
* Additive field on primitive publish responses. When the agent is under
|
|
4998
|
+
* versioning the server performs a scoped promote and returns the newly
|
|
4999
|
+
* minted + promoted agent version here; absent when the agent has no versions.
|
|
5000
|
+
*/
|
|
5001
|
+
declare interface ScopedPromoteFields {
|
|
5002
|
+
agentVersion?: number;
|
|
5003
|
+
}
|
|
5004
|
+
|
|
4796
5005
|
/**
|
|
4797
5006
|
* Response from product search.
|
|
4798
5007
|
*/
|
|
@@ -4843,6 +5052,33 @@ declare type SkillContextText = string | {
|
|
|
4843
5052
|
text?: string;
|
|
4844
5053
|
};
|
|
4845
5054
|
|
|
5055
|
+
export declare const Team: TeamApi;
|
|
5056
|
+
|
|
5057
|
+
/**
|
|
5058
|
+
* Team API — resolve a teammate by name within the agent's organization and get
|
|
5059
|
+
* the channel handles they opted to share. Pair with `Channels.send` to message a
|
|
5060
|
+
* colleague without typing their number.
|
|
5061
|
+
*
|
|
5062
|
+
* The org is derived server-side from the agent; you can only resolve members of
|
|
5063
|
+
* your own org. Returns a list — disambiguate when more than one member matches.
|
|
5064
|
+
*
|
|
5065
|
+
* @example
|
|
5066
|
+
* ```typescript
|
|
5067
|
+
* const { matches } = await Team.findMember('Stefan');
|
|
5068
|
+
* const wa = matches[0]?.targets.find((t) => t.channel === 'whatsapp');
|
|
5069
|
+
* if (wa) {
|
|
5070
|
+
* await Channels.send({ channel: 'whatsapp', to: { phoneNumber: wa.value }, text: 'Hi Stefan!' });
|
|
5071
|
+
* }
|
|
5072
|
+
* ```
|
|
5073
|
+
*/
|
|
5074
|
+
export declare interface TeamApi {
|
|
5075
|
+
/**
|
|
5076
|
+
* Resolve teammates whose name matches, each with their shareable channel
|
|
5077
|
+
* targets (empty `targets[]` when the member shared nothing).
|
|
5078
|
+
*/
|
|
5079
|
+
findMember(name: string): Promise<DirectoryResolveResult>;
|
|
5080
|
+
}
|
|
5081
|
+
|
|
4846
5082
|
/**
|
|
4847
5083
|
* Templates API
|
|
4848
5084
|
*
|
|
@@ -5403,6 +5639,20 @@ export declare interface WebhookRequest {
|
|
|
5403
5639
|
payload: any;
|
|
5404
5640
|
}
|
|
5405
5641
|
|
|
5642
|
+
/** Body of POST /developer/agents/:agentId/channels/whatsapp/reaction */
|
|
5643
|
+
export declare interface WhatsAppReactionSendInput {
|
|
5644
|
+
to: {
|
|
5645
|
+
userId?: string;
|
|
5646
|
+
phoneNumber?: string;
|
|
5647
|
+
};
|
|
5648
|
+
/** Vendor id (`wamid...`) of the message to react to — e.g. an inbound
|
|
5649
|
+
* message's id from the conversation history, ≤30 days old per Meta. */
|
|
5650
|
+
messageId: string;
|
|
5651
|
+
/** A single emoji. An empty string removes the agent's existing reaction. */
|
|
5652
|
+
emoji: string;
|
|
5653
|
+
options?: ChannelSendOptions;
|
|
5654
|
+
}
|
|
5655
|
+
|
|
5406
5656
|
export declare interface WhatsAppTemplate {
|
|
5407
5657
|
id: string;
|
|
5408
5658
|
name: string;
|