@automagik/omni 2.260731.1 → 2.260731.2
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/db/drizzle/0045_agent_error_messages_list.sql +24 -0
- package/db/drizzle/meta/_journal.json +7 -0
- package/dist/commands/instances.d.ts.map +1 -1
- package/dist/index.js +8 -5
- package/dist/sdk/types.generated.d.ts +16 -16
- package/dist/sdk/types.generated.d.ts.map +1 -1
- package/dist/server/index.js +17 -12
- package/package.json +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
-- Per-instance dispatch-failure messages, plural (#737 follow-up).
|
|
2
|
+
--
|
|
3
|
+
-- Replaces the single-text `agent_error_message` (added in 0044) with a jsonb
|
|
4
|
+
-- string array `agent_error_messages`: operators can configure several
|
|
5
|
+
-- variants and the dispatcher picks one at random per failure. Any value
|
|
6
|
+
-- already stored in the old column is carried over as a one-element array.
|
|
7
|
+
--
|
|
8
|
+
-- Hand-written following the 0043/0044 precedent (snapshot drift keeps
|
|
9
|
+
-- drizzle-kit generate interactive). Additive + idempotent statements.
|
|
10
|
+
|
|
11
|
+
-- NOTE: no explicit BEGIN/COMMIT — the boot migrator executes this file on a
|
|
12
|
+
-- pooled postgres-js connection, which rejects raw transaction control
|
|
13
|
+
-- (UNSAFE_TRANSACTION).
|
|
14
|
+
|
|
15
|
+
ALTER TABLE "instances"
|
|
16
|
+
ADD COLUMN IF NOT EXISTS "agent_error_messages" jsonb;
|
|
17
|
+
|
|
18
|
+
UPDATE "instances"
|
|
19
|
+
SET "agent_error_messages" = to_jsonb(ARRAY["agent_error_message"])
|
|
20
|
+
WHERE "agent_error_message" IS NOT NULL
|
|
21
|
+
AND "agent_error_messages" IS NULL;
|
|
22
|
+
|
|
23
|
+
ALTER TABLE "instances"
|
|
24
|
+
DROP COLUMN IF EXISTS "agent_error_message";
|
|
@@ -316,6 +316,13 @@
|
|
|
316
316
|
"when": 1784400000000,
|
|
317
317
|
"tag": "0044_instance_agent_error_message",
|
|
318
318
|
"breakpoints": true
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"idx": 45,
|
|
322
|
+
"version": "7",
|
|
323
|
+
"when": 1784500000000,
|
|
324
|
+
"tag": "0045_agent_error_messages_list",
|
|
325
|
+
"breakpoints": true
|
|
319
326
|
}
|
|
320
327
|
]
|
|
321
328
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../src/commands/instances.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"instances.d.ts","sourceRoot":"","sources":["../../src/commands/instances.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyMpC,wBAAgB,sBAAsB,IAAI,OAAO,CAk0ChD"}
|
package/dist/index.js
CHANGED
|
@@ -73072,7 +73072,7 @@ var init_schema2 = __esm(() => {
|
|
|
73072
73072
|
agentId: uuid("agent_id").references(() => agents.id, { onDelete: "set null" }),
|
|
73073
73073
|
agentTimeout: integer("agent_timeout").notNull().default(600),
|
|
73074
73074
|
agentStreamMode: boolean("agent_stream_mode").notNull().default(false),
|
|
73075
|
-
|
|
73075
|
+
agentErrorMessages: jsonb("agent_error_messages").$type(),
|
|
73076
73076
|
agentReplyFilter: jsonb("agent_reply_filter").$type(),
|
|
73077
73077
|
agentSessionStrategy: varchar("agent_session_strategy", { length: 20 }).notNull().default("per_chat").$type(),
|
|
73078
73078
|
agentPrefixSenderName: boolean("agent_prefix_sender_name").notNull().default(true),
|
|
@@ -127655,7 +127655,7 @@ import { fileURLToPath } from "url";
|
|
|
127655
127655
|
// package.json
|
|
127656
127656
|
var package_default = {
|
|
127657
127657
|
name: "@automagik/omni",
|
|
127658
|
-
version: "2.260731.
|
|
127658
|
+
version: "2.260731.2",
|
|
127659
127659
|
description: "LLM-optimized CLI for Omni",
|
|
127660
127660
|
type: "module",
|
|
127661
127661
|
bin: {
|
|
@@ -135177,7 +135177,10 @@ function applyAgentFields(body, opts) {
|
|
|
135177
135177
|
setVal(body, "agentId", opts.agentFkId);
|
|
135178
135178
|
if (opts.agentTimeout !== undefined)
|
|
135179
135179
|
body.agentTimeout = opts.agentTimeout;
|
|
135180
|
-
|
|
135180
|
+
if (Array.isArray(opts.agentErrorMessage)) {
|
|
135181
|
+
const messages2 = opts.agentErrorMessage;
|
|
135182
|
+
body.agentErrorMessages = messages2.length === 1 && messages2[0] === "null" ? null : messages2;
|
|
135183
|
+
}
|
|
135181
135184
|
setBool(body, "agentStreamMode", opts.agentStreamMode);
|
|
135182
135185
|
setVal(body, "agentSessionStrategy", opts.agentSessionStrategy);
|
|
135183
135186
|
setBool(body, "agentPrefixSenderName", opts.agentPrefixSenderName);
|
|
@@ -135369,7 +135372,7 @@ function createInstancesCommand() {
|
|
|
135369
135372
|
error(`Failed to get instance: ${message}`, undefined, 3);
|
|
135370
135373
|
}
|
|
135371
135374
|
});
|
|
135372
|
-
instances.command("create").description("Create a new instance (supports all API fields)").requiredOption("--name <name>", "Instance name").requiredOption("--channel <type>", `Channel type (${VALID_CHANNELS2.join(", ")})`).option("--agent-fk-id <uuid>", 'Agent FK UUID (references agents table, use "null" to clear). When set without --reply-filter-mode, reply filter defaults to {mode:"all", onDm:true} so messages are dispatched instead of silently dropped (omni#443).').option("--agent-provider <id>", "Agent provider ID").option("--agent <id>", "Agent ID").option("--agent-type <type>", "Agent type: agent, team, or workflow").option("--agent-timeout <seconds>", "Agent timeout in seconds", (v) => Number.parseInt(v, 10)).option("--agent-error-message <text>", 'Customer-facing reply when agent dispatch fails (
|
|
135375
|
+
instances.command("create").description("Create a new instance (supports all API fields)").requiredOption("--name <name>", "Instance name").requiredOption("--channel <type>", `Channel type (${VALID_CHANNELS2.join(", ")})`).option("--agent-fk-id <uuid>", 'Agent FK UUID (references agents table, use "null" to clear). When set without --reply-filter-mode, reply filter defaults to {mode:"all", onDm:true} so messages are dispatched instead of silently dropped (omni#443).').option("--agent-provider <id>", "Agent provider ID").option("--agent <id>", "Agent ID").option("--agent-type <type>", "Agent type: agent, team, or workflow").option("--agent-timeout <seconds>", "Agent timeout in seconds", (v) => Number.parseInt(v, 10)).option("--agent-error-message <text>", 'Customer-facing reply when agent dispatch fails; repeat the flag for multiple variants (one is picked at random per failure). Use "null" to clear; falls back to OMNI_AGENT_DISPATCH_ERROR_MESSAGE env, then built-in default', (value, previous = []) => [...previous, value]).option("--agent-stream-mode", "Enable streaming responses").option("--agent-session-strategy <strategy>", "Session strategy: per_user, per_chat, per_user_per_chat").option("--agent-prefix-sender-name", "Prefix messages with sender name").option("--no-agent-prefix-sender-name", "Disable sender name prefix").option("--agent-wait-for-media", "Wait for media processing before dispatch").option("--no-agent-wait-for-media", "Dispatch immediately without waiting for media").option("--agent-send-media-path", "Include file path in formatted media text").option("--no-agent-send-media-path", "Exclude file path from formatted media text").option("--agent-send-media-path-types <types>", "Content types that receive file path (comma-separated: image,video,document)").option("--reply-filter-mode <mode>", "Reply filter: all or filtered").option("--reply-on-dm", "Reply to DMs").option("--no-reply-on-dm", "Ignore DMs").option("--reply-on-mention", "Reply when @mentioned").option("--no-reply-on-mention", "Ignore @mentions").option("--reply-on-reply", "Reply when message is reply to bot").option("--no-reply-on-reply", "Ignore replies").option("--reply-on-name", "Reply when bot name appears in text").option("--no-reply-on-name", "Ignore name matches").option("--reply-name-patterns <patterns>", "Custom name patterns (comma-separated)").option("--enable-auto-split", "Split responses on double newlines").option("--no-enable-auto-split", "Disable auto-split").option("--message-format-mode <mode>", "Format mode: convert or passthrough").option("--debounce-mode <mode>", "Debounce mode: disabled, fixed, randomized, or presence").option("--debounce-min <ms>", "Minimum debounce delay in ms", (v) => Number.parseInt(v, 10)).option("--debounce-max <ms>", "Maximum debounce delay in ms", (v) => Number.parseInt(v, 10)).option("--debounce-restart-on-typing", "Restart debounce timer on typing").option("--debounce-group <ms>", "Group chat debounce in ms", (v) => Number.parseInt(v, 10)).option("--debounce-max-wait <ms>", "Presence-mode hard cap in ms (flush even under continuous typing)", (v) => Number.parseInt(v, 10)).option("--split-delay-mode <mode>", "Split delay mode: disabled, fixed, or randomized").option("--split-delay-fixed <ms>", "Fixed delay between split chunks in ms", (v) => Number.parseInt(v, 10)).option("--split-delay-min <ms>", "Minimum delay between split chunks in ms", (v) => Number.parseInt(v, 10)).option("--split-delay-max <ms>", "Maximum delay between split chunks in ms", (v) => Number.parseInt(v, 10)).option("--agent-gate", "Enable LLM response gate").option("--agent-gate-model <model>", "Model for response gate").option("--agent-gate-prompt <prompt>", "Custom gate prompt").option("--tts-voice <id>", "ElevenLabs voice ID").option("--tts-model <id>", "ElevenLabs model ID").option("--read-receipts <mode>", "Read receipts mode: on, off, or exclude-self").option("--access-mode <mode>", "Access mode: disabled, blocklist, or allowlist").option("--reaction-ack <mode>", "Reaction ack mode (on|off)").option("--reaction-ack-emoji <json>", "Per-channel emoji map as JSON").option("--ack-timeout <ms>", "Ack timeout in milliseconds", (v) => Number.parseInt(v, 10)).option("--agent-stalled-timeout-ms <ms>", "Idle threshold in ms before the internal turn.stalled event fires (no channel message is ever sent)", (v) => Number.parseInt(v, 10)).option("--token <token>", "Generic bot token (auto-resolves to channel-specific field)").option("--telegram-token <token>", "Telegram bot token").option("--discord-token <token>", "Discord bot token").option("--slack-bot-token <token>", "Slack bot token").option("--slack-app-token <token>", "Slack app token").option("--gupshup-callback-url <url>", "Gupshup Custom Integration callback URL").option("--gupshup-auth-token <token>", "Gupshup Custom Integration auth token").option("--gupshup-event-id <id>", "Gupshup event ID (default: nx_omni_agent_reply)").option("--gupshup-webhook-verify-token <token>", "Gupshup webhook verify token").option("--twilio-account-sid <sid>", "Twilio Account SID").option("--twilio-auth-token <token>", "Twilio Auth Token").option("--twilio-from <address>", "Twilio WhatsApp sender address (whatsapp:+E164)").option("--twilio-messaging-service-sid <sid>", "Twilio Messaging Service SID").option("--twilio-status-callback-url <url>", "Twilio outbound status callback URL").option("--twilio-webhook-url <url>", "Public Twilio webhook URL for signature validation").option("--twilio-validate-signature", "Validate X-Twilio-Signature on webhooks").option("--no-twilio-validate-signature", "Disable X-Twilio-Signature validation").option("--bridge-tmux-session <name>", 'Tmux session name the genie bridge spawns into for this instance (propagated as GENIE_TMUX_SESSION via NATS). Use "null" to clear.').option("--require-genie-signature", "Require a verified X-Genie-Signature on requests targeting this instance. Bearer-only requests will be rejected with 401.").option("--no-require-genie-signature", "Allow bearer-only requests targeting this instance (default).").option("--allow-first-party", "Process (do not drop) inbound messages whose sender matches another active instance owner. Lets this instance reply to messages from your own personal number.").option("--no-allow-first-party", "Drop inbound messages whose sender matches another active instance owner (default, loop-protection).").option("--is-default", "Set as default instance for channel").action(async (options) => {
|
|
135373
135376
|
const channel = options.channel;
|
|
135374
135377
|
if (!VALID_CHANNELS2.includes(channel)) {
|
|
135375
135378
|
error(`Invalid channel: ${channel}`, { validChannels: VALID_CHANNELS2 });
|
|
@@ -135672,7 +135675,7 @@ function createInstancesCommand() {
|
|
|
135672
135675
|
throw new Error(err?.error?.message ?? `HTTP ${response.status}`);
|
|
135673
135676
|
}
|
|
135674
135677
|
}
|
|
135675
|
-
instances.command("update <id>").description("Update an instance (supports all API fields)").option("--name <name>", "Instance name").option("--is-default", "Set as default instance for channel").option("--no-is-default", "Unset as default instance for channel").option("--agent-fk-id <uuid>", 'Agent FK UUID (references agents table, use "null" to clear). When assigning an agent on an instance with no reply filter, the filter defaults to {mode:"all", onDm:true} so messages are dispatched instead of silently dropped (omni#443).').option("--agent-provider <id>", 'Agent provider ID (use "null" to clear)').option("--agent <id>", 'Agent ID (use "null" to clear)').option("--agent-type <type>", "Agent type: agent, team, or workflow").option("--agent-timeout <seconds>", "Agent timeout in seconds", (v) => Number.parseInt(v, 10)).option("--agent-error-message <text>", 'Customer-facing reply when agent dispatch fails (
|
|
135678
|
+
instances.command("update <id>").description("Update an instance (supports all API fields)").option("--name <name>", "Instance name").option("--is-default", "Set as default instance for channel").option("--no-is-default", "Unset as default instance for channel").option("--agent-fk-id <uuid>", 'Agent FK UUID (references agents table, use "null" to clear). When assigning an agent on an instance with no reply filter, the filter defaults to {mode:"all", onDm:true} so messages are dispatched instead of silently dropped (omni#443).').option("--agent-provider <id>", 'Agent provider ID (use "null" to clear)').option("--agent <id>", 'Agent ID (use "null" to clear)').option("--agent-type <type>", "Agent type: agent, team, or workflow").option("--agent-timeout <seconds>", "Agent timeout in seconds", (v) => Number.parseInt(v, 10)).option("--agent-error-message <text>", 'Customer-facing reply when agent dispatch fails; repeat the flag for multiple variants (one is picked at random per failure). Use "null" to clear; falls back to OMNI_AGENT_DISPATCH_ERROR_MESSAGE env, then built-in default', (value, previous = []) => [...previous, value]).option("--agent-stream-mode", "Enable streaming responses").option("--no-agent-stream-mode", "Disable streaming responses").option("--agent-session-strategy <strategy>", "Session strategy: per_user, per_chat, per_user_per_chat").option("--agent-prefix-sender-name", "Prefix messages with sender name").option("--no-agent-prefix-sender-name", "Disable sender name prefix").option("--agent-wait-for-media", "Wait for media processing before dispatch").option("--no-agent-wait-for-media", "Dispatch immediately without waiting for media").option("--agent-send-media-path", "Include file path in formatted media text").option("--no-agent-send-media-path", "Exclude file path from formatted media text").option("--agent-send-media-path-types <types>", "Content types that receive file path (comma-separated: image,video,document)").option("--reply-filter-mode <mode>", "Reply filter: all or filtered").option("--reply-on-dm", "Reply to DMs (requires --reply-filter-mode filtered)").option("--no-reply-on-dm", "Ignore DMs").option("--reply-on-mention", "Reply when @mentioned").option("--no-reply-on-mention", "Ignore @mentions").option("--reply-on-reply", "Reply when message is reply to bot").option("--no-reply-on-reply", "Ignore replies").option("--reply-on-name", "Reply when bot name appears in text").option("--no-reply-on-name", "Ignore name matches").option("--reply-name-patterns <patterns>", "Custom name patterns (comma-separated)").option("--clear-reply-filter", "Remove reply filter (set to null)").option("--enable-auto-split", "Split responses on double newlines").option("--no-enable-auto-split", "Disable auto-split").option("--message-format-mode <mode>", "Format mode: convert or passthrough").option("--debounce-mode <mode>", "Debounce mode: disabled, fixed, randomized, or presence").option("--debounce-min <ms>", "Minimum debounce delay in ms", (v) => Number.parseInt(v, 10)).option("--debounce-max <ms>", "Maximum debounce delay in ms", (v) => Number.parseInt(v, 10)).option("--debounce-restart-on-typing", "Restart debounce timer on typing").option("--no-debounce-restart-on-typing", "Do not restart debounce on typing").option("--debounce-group <ms>", 'Group chat debounce in ms (use "null" to inherit)', (v) => v === "null" ? null : Number.parseInt(v, 10)).option("--debounce-max-wait <ms>", 'Presence-mode hard cap in ms (use "null" to inherit)', (v) => v === "null" ? null : Number.parseInt(v, 10)).option("--split-delay-mode <mode>", "Split delay mode: disabled, fixed, or randomized").option("--split-delay-fixed <ms>", "Fixed delay between split chunks in ms", (v) => Number.parseInt(v, 10)).option("--split-delay-min <ms>", "Minimum delay between split chunks in ms", (v) => Number.parseInt(v, 10)).option("--split-delay-max <ms>", "Maximum delay between split chunks in ms", (v) => Number.parseInt(v, 10)).option("--agent-gate", "Enable LLM response gate").option("--no-agent-gate", "Disable LLM response gate").option("--agent-gate-model <model>", 'Model for response gate (use "null" for default)').option("--agent-gate-prompt <prompt>", 'Custom gate prompt (use "null" for default)').option("--tts-voice <id>", 'ElevenLabs voice ID (use "null" to clear)').option("--tts-model <id>", 'ElevenLabs model ID (use "null" to clear)').option("--read-receipts <mode>", "Read receipts mode: on, off, or exclude-self").option("--access-mode <mode>", "Access mode: disabled, blocklist, or allowlist").option("--reaction-ack <mode>", "Reaction ack mode (on|off)").option("--reaction-ack-emoji <json>", "Per-channel emoji map as JSON").option("--ack-timeout <ms>", "Ack timeout in milliseconds", (v) => Number.parseInt(v, 10)).option("--agent-stalled-timeout-ms <ms>", "Idle threshold in ms before the internal turn.stalled event fires (no channel message is ever sent)", (v) => Number.parseInt(v, 10)).option("--token <token>", "Generic bot token (auto-resolves to channel-specific field)").option("--telegram-token <token>", 'Telegram bot token (use "null" to clear)').option("--discord-token <token>", 'Discord bot token (use "null" to clear)').option("--slack-bot-token <token>", 'Slack bot token (use "null" to clear)').option("--slack-app-token <token>", 'Slack app token (use "null" to clear)').option("--twilio-account-sid <sid>", 'Twilio Account SID (use "null" to clear)').option("--twilio-auth-token <token>", 'Twilio Auth Token (use "null" to clear)').option("--twilio-from <address>", 'Twilio WhatsApp sender address (use "null" to clear)').option("--twilio-messaging-service-sid <sid>", 'Twilio Messaging Service SID (use "null" to clear)').option("--twilio-status-callback-url <url>", 'Twilio outbound status callback URL (use "null" to clear)').option("--twilio-webhook-url <url>", 'Public Twilio webhook URL for signature validation (use "null" to clear)').option("--twilio-validate-signature", "Validate X-Twilio-Signature on webhooks").option("--no-twilio-validate-signature", "Disable X-Twilio-Signature validation").option("--trigger-events <events>", 'Trigger events (comma-separated, use "null" to clear)').option("--profile-name <name>", "Update WhatsApp display name (push name)").option("--bridge-tmux-session <name>", 'Tmux session name the genie bridge spawns into for this instance (propagated as GENIE_TMUX_SESSION via NATS). Use "null" to clear.').option("--require-genie-signature", "Require a verified X-Genie-Signature on requests targeting this instance. Bearer-only requests will be rejected with 401.").option("--no-require-genie-signature", "Allow bearer-only requests targeting this instance (default).").option("--allow-first-party", "Process (do not drop) inbound messages whose sender matches another active instance owner. Lets this instance reply to messages from your own personal number.").option("--no-allow-first-party", "Drop inbound messages whose sender matches another active instance owner (default, loop-protection).").action(async (rawId, options) => {
|
|
135676
135679
|
const client = getClient();
|
|
135677
135680
|
try {
|
|
135678
135681
|
const id = await resolveInstanceId(rawId);
|
|
@@ -2637,8 +2637,8 @@ export interface components {
|
|
|
2637
2637
|
agentProviderId?: string | null;
|
|
2638
2638
|
/** @description Agent timeout in seconds */
|
|
2639
2639
|
agentTimeout: number;
|
|
2640
|
-
/** @description Customer-facing
|
|
2641
|
-
|
|
2640
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
2641
|
+
agentErrorMessages?: string[] | null;
|
|
2642
2642
|
/** @description Whether streaming is enabled */
|
|
2643
2643
|
agentStreamMode: boolean;
|
|
2644
2644
|
/**
|
|
@@ -2670,8 +2670,8 @@ export interface components {
|
|
|
2670
2670
|
* @default 600
|
|
2671
2671
|
*/
|
|
2672
2672
|
agentTimeout: number;
|
|
2673
|
-
/** @description Customer-facing
|
|
2674
|
-
|
|
2673
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
2674
|
+
agentErrorMessages?: string[] | null;
|
|
2675
2675
|
/**
|
|
2676
2676
|
* @description Enable streaming responses
|
|
2677
2677
|
* @default false
|
|
@@ -6124,8 +6124,8 @@ export interface operations {
|
|
|
6124
6124
|
agentProviderId?: string | null;
|
|
6125
6125
|
/** @description Agent timeout in seconds */
|
|
6126
6126
|
agentTimeout: number;
|
|
6127
|
-
/** @description Customer-facing
|
|
6128
|
-
|
|
6127
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
6128
|
+
agentErrorMessages?: string[] | null;
|
|
6129
6129
|
/** @description Whether streaming is enabled */
|
|
6130
6130
|
agentStreamMode: boolean;
|
|
6131
6131
|
/**
|
|
@@ -6177,8 +6177,8 @@ export interface operations {
|
|
|
6177
6177
|
* @default 600
|
|
6178
6178
|
*/
|
|
6179
6179
|
agentTimeout?: number;
|
|
6180
|
-
/** @description Customer-facing
|
|
6181
|
-
|
|
6180
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
6181
|
+
agentErrorMessages?: string[] | null;
|
|
6182
6182
|
/**
|
|
6183
6183
|
* @description Enable streaming responses
|
|
6184
6184
|
* @default false
|
|
@@ -6237,8 +6237,8 @@ export interface operations {
|
|
|
6237
6237
|
agentProviderId?: string | null;
|
|
6238
6238
|
/** @description Agent timeout in seconds */
|
|
6239
6239
|
agentTimeout: number;
|
|
6240
|
-
/** @description Customer-facing
|
|
6241
|
-
|
|
6240
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
6241
|
+
agentErrorMessages?: string[] | null;
|
|
6242
6242
|
/** @description Whether streaming is enabled */
|
|
6243
6243
|
agentStreamMode: boolean;
|
|
6244
6244
|
/**
|
|
@@ -6371,8 +6371,8 @@ export interface operations {
|
|
|
6371
6371
|
agentProviderId?: string | null;
|
|
6372
6372
|
/** @description Agent timeout in seconds */
|
|
6373
6373
|
agentTimeout: number;
|
|
6374
|
-
/** @description Customer-facing
|
|
6375
|
-
|
|
6374
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
6375
|
+
agentErrorMessages?: string[] | null;
|
|
6376
6376
|
/** @description Whether streaming is enabled */
|
|
6377
6377
|
agentStreamMode: boolean;
|
|
6378
6378
|
/**
|
|
@@ -6489,8 +6489,8 @@ export interface operations {
|
|
|
6489
6489
|
* @default 600
|
|
6490
6490
|
*/
|
|
6491
6491
|
agentTimeout?: number;
|
|
6492
|
-
/** @description Customer-facing
|
|
6493
|
-
|
|
6492
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
6493
|
+
agentErrorMessages?: string[] | null;
|
|
6494
6494
|
/**
|
|
6495
6495
|
* @description Enable streaming responses
|
|
6496
6496
|
* @default false
|
|
@@ -6549,8 +6549,8 @@ export interface operations {
|
|
|
6549
6549
|
agentProviderId?: string | null;
|
|
6550
6550
|
/** @description Agent timeout in seconds */
|
|
6551
6551
|
agentTimeout: number;
|
|
6552
|
-
/** @description Customer-facing
|
|
6553
|
-
|
|
6552
|
+
/** @description Customer-facing replies sent when agent dispatch fails; one is picked at random per failure (null/empty = env/default fallback) */
|
|
6553
|
+
agentErrorMessages?: string[] | null;
|
|
6554
6554
|
/** @description Whether streaming is enabled */
|
|
6555
6555
|
agentStreamMode: boolean;
|
|
6556
6556
|
/**
|