@vellumai/plugin-api 0.11.5 → 0.11.6-dev.202608252309.48526e7

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.
Files changed (2) hide show
  1. package/index.d.ts +188 -51
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -137,19 +137,20 @@ declare const AssistantConfigSchema: z.ZodObject<{
137
137
  provider: z.ZodDefault<z.ZodEnum<{
138
138
  [x: string]: string;
139
139
  }>>;
140
+ apiBase: z.ZodOptional<z.ZodString>;
140
141
  }, z.core.$strip>>;
141
142
  "web-fetch": z.ZodDefault<z.ZodObject<{
142
143
  provider: z.ZodDefault<z.ZodEnum<{
143
144
  [x: string]: string;
144
145
  }>>;
146
+ apiBase: z.ZodOptional<z.ZodString>;
145
147
  }, z.core.$strip>>;
146
148
  stt: z.ZodDefault<z.ZodObject<{
147
149
  provider: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodEnum<{
148
150
  vellum: "vellum";
151
+ "openai-whisper": "openai-whisper";
149
152
  deepgram: "deepgram";
150
- "deepgram-flux": "deepgram-flux";
151
153
  "google-gemini": "google-gemini";
152
- "openai-whisper": "openai-whisper";
153
154
  xai: "xai";
154
155
  }>>;
155
156
  language: z.ZodDefault<z.ZodString>;
@@ -278,6 +279,24 @@ declare const AssistantConfigSchema: z.ZodObject<{
278
279
  "your-own": "your-own";
279
280
  }>>;
280
281
  }, z.core.$strip>>;
282
+ "monday-oauth": z.ZodDefault<z.ZodObject<{
283
+ mode: z.ZodDefault<z.ZodEnum<{
284
+ managed: "managed";
285
+ "your-own": "your-own";
286
+ }>>;
287
+ }, z.core.$strip>>;
288
+ "eventbrite-oauth": z.ZodDefault<z.ZodObject<{
289
+ mode: z.ZodDefault<z.ZodEnum<{
290
+ managed: "managed";
291
+ "your-own": "your-own";
292
+ }>>;
293
+ }, z.core.$strip>>;
294
+ "calendly-oauth": z.ZodDefault<z.ZodObject<{
295
+ mode: z.ZodDefault<z.ZodEnum<{
296
+ managed: "managed";
297
+ "your-own": "your-own";
298
+ }>>;
299
+ }, z.core.$strip>>;
281
300
  }, z.core.$strip>>;
282
301
  memory: z.ZodDefault<z.ZodObject<{
283
302
  enabled: z.ZodDefault<z.ZodBoolean>;
@@ -598,10 +617,10 @@ declare const AssistantConfigSchema: z.ZodObject<{
598
617
  model: z.ZodOptional<z.ZodString>;
599
618
  maxTokens: z.ZodOptional<z.ZodNumber>;
600
619
  effort: z.ZodOptional<z.ZodEnum<{
620
+ none: "none";
601
621
  low: "low";
602
622
  medium: "medium";
603
623
  high: "high";
604
- none: "none";
605
624
  xhigh: "xhigh";
606
625
  max: "max";
607
626
  }>>;
@@ -662,6 +681,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
662
681
  label: z.ZodOptional<z.ZodNullable<z.ZodString>>;
663
682
  description: z.ZodOptional<z.ZodString>;
664
683
  provider_connection: z.ZodOptional<z.ZodString>;
684
+ allowUnlisted: z.ZodOptional<z.ZodBoolean>;
665
685
  status: z.ZodOptional<z.ZodNullable<z.ZodEnum<{
666
686
  active: "active";
667
687
  disabled: "disabled";
@@ -670,6 +690,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
670
690
  profile: z.ZodString;
671
691
  weight: z.ZodNumber;
672
692
  }, z.core.$strip>>>;
693
+ fallbackProfile: z.ZodOptional<z.ZodString>;
673
694
  }, z.core.$strip>>>;
674
695
  profileOrder: z.ZodDefault<z.ZodArray<z.ZodString>>;
675
696
  callSites: z.ZodDefault<z.ZodRecord<z.ZodEnum<{
@@ -720,10 +741,10 @@ declare const AssistantConfigSchema: z.ZodObject<{
720
741
  model: z.ZodOptional<z.ZodString>;
721
742
  maxTokens: z.ZodOptional<z.ZodNumber>;
722
743
  effort: z.ZodOptional<z.ZodEnum<{
744
+ none: "none";
723
745
  low: "low";
724
746
  medium: "medium";
725
747
  high: "high";
726
- none: "none";
727
748
  xhigh: "xhigh";
728
749
  max: "max";
729
750
  }>>;
@@ -1057,7 +1078,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
1057
1078
  turnEnd: z.ZodDefault<z.ZodObject<{
1058
1079
  enabled: z.ZodDefault<z.ZodBoolean>;
1059
1080
  }, z.core.$strip>>;
1060
- model: z.ZodDefault<z.ZodString>;
1081
+ model: z.ZodOptional<z.ZodString>;
1061
1082
  eotThreshold: z.ZodDefault<z.ZodNumber>;
1062
1083
  eagerEotThreshold: z.ZodOptional<z.ZodNumber>;
1063
1084
  eotTimeoutMs: z.ZodDefault<z.ZodNumber>;
@@ -1331,9 +1352,9 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1331
1352
  id: z.ZodString;
1332
1353
  conversationId: z.ZodString;
1333
1354
  status: z.ZodEnum<{
1334
- cancelled: "cancelled";
1335
1355
  completed: "completed";
1336
1356
  failed: "failed";
1357
+ cancelled: "cancelled";
1337
1358
  }>;
1338
1359
  exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1339
1360
  output: z.ZodOptional<z.ZodString>;
@@ -1672,8 +1693,8 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1672
1693
  hookName: z.ZodString;
1673
1694
  owner: z.ZodObject<{
1674
1695
  kind: z.ZodEnum<{
1675
- workspace: "workspace";
1676
1696
  plugin: "plugin";
1697
+ workspace: "workspace";
1677
1698
  }>;
1678
1699
  id: z.ZodString;
1679
1700
  }, z.core.$strip>;
@@ -2266,6 +2287,7 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2266
2287
  tavily: "tavily";
2267
2288
  keenable: "keenable";
2268
2289
  firecrawl: "firecrawl";
2290
+ fastcrw: "fastcrw";
2269
2291
  }>;
2270
2292
  resultCount: z.ZodNumber;
2271
2293
  durationMs: z.ZodNumber;
@@ -2287,6 +2309,7 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2287
2309
  provider: z.ZodOptional<z.ZodEnum<{
2288
2310
  default: "default";
2289
2311
  firecrawl: "firecrawl";
2312
+ fastcrw: "fastcrw";
2290
2313
  }>>;
2291
2314
  status: z.ZodNumber;
2292
2315
  contentType: z.ZodOptional<z.ZodString>;
@@ -2427,6 +2450,11 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2427
2450
  requestId: z.ZodOptional<z.ZodString>;
2428
2451
  clientMessageId: z.ZodOptional<z.ZodString>;
2429
2452
  }, z.core.$strict>, z.ZodObject<{
2453
+ type: z.ZodLiteral<"watch_retro_completed">;
2454
+ sessionId: z.ZodString;
2455
+ conversationId: z.ZodString;
2456
+ reportReady: z.ZodBoolean;
2457
+ }, z.core.$strip>, z.ZodObject<{
2430
2458
  type: z.ZodLiteral<"workflow_completed">;
2431
2459
  runId: z.ZodString;
2432
2460
  conversationId: z.ZodOptional<z.ZodString>;
@@ -2662,12 +2690,12 @@ declare const AssistantEventPublishOptionsSchema: z.ZodObject<{
2662
2690
  targetClientId: z.ZodOptional<z.ZodString>;
2663
2691
  targetInterfaceId: z.ZodOptional<z.ZodEnum<{
2664
2692
  phone: "phone";
2665
- a2a: "a2a";
2666
- whatsapp: "whatsapp";
2667
- discord: "discord";
2668
2693
  telegram: "telegram";
2694
+ whatsapp: "whatsapp";
2669
2695
  slack: "slack";
2670
2696
  email: "email";
2697
+ a2a: "a2a";
2698
+ discord: "discord";
2671
2699
  plugin: "plugin";
2672
2700
  macos: "macos";
2673
2701
  windows: "windows";
@@ -2815,9 +2843,9 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2815
2843
  id: z.ZodString;
2816
2844
  conversationId: z.ZodString;
2817
2845
  status: z.ZodEnum<{
2818
- cancelled: "cancelled";
2819
2846
  completed: "completed";
2820
2847
  failed: "failed";
2848
+ cancelled: "cancelled";
2821
2849
  }>;
2822
2850
  exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
2823
2851
  output: z.ZodOptional<z.ZodString>;
@@ -3156,8 +3184,8 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3156
3184
  hookName: z.ZodString;
3157
3185
  owner: z.ZodObject<{
3158
3186
  kind: z.ZodEnum<{
3159
- workspace: "workspace";
3160
3187
  plugin: "plugin";
3188
+ workspace: "workspace";
3161
3189
  }>;
3162
3190
  id: z.ZodString;
3163
3191
  }, z.core.$strip>;
@@ -3750,6 +3778,7 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3750
3778
  tavily: "tavily";
3751
3779
  keenable: "keenable";
3752
3780
  firecrawl: "firecrawl";
3781
+ fastcrw: "fastcrw";
3753
3782
  }>;
3754
3783
  resultCount: z.ZodNumber;
3755
3784
  durationMs: z.ZodNumber;
@@ -3771,6 +3800,7 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3771
3800
  provider: z.ZodOptional<z.ZodEnum<{
3772
3801
  default: "default";
3773
3802
  firecrawl: "firecrawl";
3803
+ fastcrw: "fastcrw";
3774
3804
  }>>;
3775
3805
  status: z.ZodNumber;
3776
3806
  contentType: z.ZodOptional<z.ZodString>;
@@ -3911,6 +3941,11 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3911
3941
  requestId: z.ZodOptional<z.ZodString>;
3912
3942
  clientMessageId: z.ZodOptional<z.ZodString>;
3913
3943
  }, z.core.$strict>, z.ZodObject<{
3944
+ type: z.ZodLiteral<"watch_retro_completed">;
3945
+ sessionId: z.ZodString;
3946
+ conversationId: z.ZodString;
3947
+ reportReady: z.ZodBoolean;
3948
+ }, z.core.$strip>, z.ZodObject<{
3914
3949
  type: z.ZodLiteral<"workflow_completed">;
3915
3950
  runId: z.ZodString;
3916
3951
  conversationId: z.ZodOptional<z.ZodString>;
@@ -4057,6 +4092,13 @@ declare interface BaseSubscriberEntry {
4057
4092
  */
4058
4093
  export declare function buildMessageExcerpt(rawContent: string, query: string): Promise<string>;
4059
4094
 
4095
+ /**
4096
+ * Conversation-type axis within an adapter (the "channel-type" cascade
4097
+ * level): direct message, private channel/group, public channel. Adapters
4098
+ * map their native surfaces onto these three.
4099
+ */
4100
+ declare const CHANNEL_CONVERSATION_TYPES: readonly ["dm", "private", "public"];
4101
+
4060
4102
  /**
4061
4103
  * Canonical channel-id vocabulary shared between the assistant daemon and the
4062
4104
  * gateway.
@@ -4090,6 +4132,8 @@ export declare function buildMessageExcerpt(rawContent: string, query: string):
4090
4132
  */
4091
4133
  declare const CHANNEL_IDS: readonly ["telegram", "phone", "vellum", "whatsapp", "slack", "email", "platform", "a2a", "discord", "plugin"];
4092
4134
 
4135
+ declare type ChannelConversationType = (typeof CHANNEL_CONVERSATION_TYPES)[number];
4136
+
4093
4137
  declare type ChannelId = (typeof CHANNEL_IDS)[number];
4094
4138
 
4095
4139
  export declare const CLI_COMMAND_HELP: readonly CliCommandHelp[];
@@ -4131,6 +4175,19 @@ declare interface CliCommandHelp {
4131
4175
  subcommands?: CliSubcommandHelp[];
4132
4176
  }
4133
4177
 
4178
+ /**
4179
+ * Client OS surfaces — the value set for the message-body `clientOs` field.
4180
+ *
4181
+ * This is deliberately SEPARATE from {@link INTERFACE_IDS}: `clientOs`
4182
+ * describes which OS the user's device runs, not which transport the turn
4183
+ * arrived on. `"android"` (and `"ios"` for a mobile browser) are real OS
4184
+ * surfaces but not transports — they must never answer transport questions
4185
+ * (`supportsHostProxy`, `isInteractiveInterface`), so they live here rather
4186
+ * than polluting the interface vocabulary. Drives only the per-turn
4187
+ * `client_os` context line (e.g. app-builder mobile-first for `ios`/`android`).
4188
+ */
4189
+ declare const CLIENT_OS_VALUES: readonly ["web", "ios", "macos", "windows", "android"];
4190
+
4134
4191
  declare interface ClientEntry extends BaseSubscriberEntry {
4135
4192
  type: "client";
4136
4193
  clientId: string;
@@ -4159,6 +4216,8 @@ declare interface ClientEntry extends BaseSubscriberEntry {
4159
4216
  webPresence?: ClientWebPresence;
4160
4217
  }
4161
4218
 
4219
+ declare type ClientOs = (typeof CLIENT_OS_VALUES)[number];
4220
+
4162
4221
  declare interface ClientPresence {
4163
4222
  state: DesktopPresenceState;
4164
4223
  /** When the daemon last heard from the client. Drives staleness. */
@@ -4323,9 +4382,17 @@ export declare type ConversationsClearedContext = BaseHookContext;
4323
4382
  /** Read-side alias of {@link ConversationCreateType}. */
4324
4383
  declare type ConversationType = ConversationCreateType;
4325
4384
 
4326
- /** Create a live voice connection bound to the caller's `send` transport. */
4385
+ /**
4386
+ * Create a live voice connection bound to the caller's `send` transport.
4387
+ *
4388
+ * `close` is how the daemon hangs up. It is optional only because a transport
4389
+ * may not be able to (an in-process pipe), but a real one should always pass
4390
+ * it: without it, a session the daemon reclaims from an absent client leaves
4391
+ * the transport open behind it.
4392
+ */
4327
4393
  export declare function createLiveVoiceConnection(options: {
4328
4394
  send: LiveVoiceFrameSender;
4395
+ close?: () => void;
4329
4396
  }): LiveVoiceConnection;
4330
4397
 
4331
4398
  /**
@@ -4516,11 +4583,11 @@ export declare function getDocument(documentId: string): Promise<IndexedDocument
4516
4583
  export declare function getMessages(conversationId: string): Promise<MessageRow[]>;
4517
4584
 
4518
4585
  /**
4519
- * List the workspace inference profiles a plugin can route to, in the order the
4520
- * `/model` picker presents them (`llm.profileOrder` first, then the rest
4521
- * alphabetically). Metadata-only entries without a provider, model, or mix are
4522
- * not routing targets, so plugins never see them. Disabled profiles are
4523
- * included and flagged via
4586
+ * List the workspace inference profiles a plugin can route to, in the order a
4587
+ * user-facing model picker presents them (`llm.profileOrder` first, then the
4588
+ * rest alphabetically). Managed backup routes are internal and omitted.
4589
+ * Metadata-only entries without a provider, model, or mix are not routing
4590
+ * targets, so plugins never see them. Disabled profiles are included and flagged via
4524
4591
  * {@link ModelProfileInfo.isDisabled}; weighted "mix" profiles are included and
4525
4592
  * flagged via {@link ModelProfileInfo.isMix}, since a mix is itself a valid
4526
4593
  * routing target (it resolves to one constituent per conversation).
@@ -4909,6 +4976,12 @@ declare interface LiveVoiceAssistantTextDeltaServerFrame extends LiveVoiceServer
4909
4976
  declare interface LiveVoiceBusyServerFrame extends LiveVoiceServerFrameBase {
4910
4977
  readonly type: "busy";
4911
4978
  readonly activeSessionId: string;
4979
+ /**
4980
+ * Absent from daemons that predate it, and from a holder that revealed
4981
+ * neither field, so a client must degrade to the unspecific copy rather
4982
+ * than assume.
4983
+ */
4984
+ readonly holder?: LiveVoiceSessionHolder;
4912
4985
  }
4913
4986
 
4914
4987
  export declare interface LiveVoiceConnection {
@@ -5053,6 +5126,23 @@ declare interface LiveVoiceReadyServerFrame extends LiveVoiceServerFrameBase {
5053
5126
  * (older daemons) means "manual".
5054
5127
  */
5055
5128
  readonly turnDetection?: LiveVoiceTurnDetectionMode;
5129
+ /**
5130
+ * Whether this daemon will accept `text` frames on the session. Absent
5131
+ * (older daemons) means no, which is what lets a client that asked for
5132
+ * `textInput` fall back rather than type into a socket that would answer
5133
+ * every typed turn with an `unknown_type` error.
5134
+ */
5135
+ readonly textInput?: boolean;
5136
+ /**
5137
+ * Whether the session's speech-to-text leg is live. Absent means yes, which
5138
+ * is the only thing an older daemon can have meant: it rejects a session it
5139
+ * cannot transcribe, so every session it readies can hear.
5140
+ *
5141
+ * False is reachable only for a client that declared `textInput`, and tells
5142
+ * it to present the session as typed rather than draw a microphone that
5143
+ * will never hear anything.
5144
+ */
5145
+ readonly audioInput?: boolean;
5056
5146
  }
5057
5147
 
5058
5148
  export declare type LiveVoiceServerFrame = LiveVoiceReadyServerFrame | LiveVoiceBusyServerFrame | LiveVoiceSpeechStartedServerFrame | LiveVoiceUtteranceEndServerFrame | LiveVoiceUtteranceDiscardedServerFrame | LiveVoiceSttPartialServerFrame | LiveVoiceSttFinalServerFrame | LiveVoiceThinkingServerFrame | LiveVoiceActivityServerFrame | LiveVoiceAssistantTextDeltaServerFrame | LiveVoiceTtsAudioServerFrame | LiveVoiceTtsDoneServerFrame | LiveVoiceTurnCancelledServerFrame | LiveVoiceMinimizeRoomServerFrame | LiveVoiceMetricsServerFrame | LiveVoiceArchivedServerFrame | LiveVoiceErrorServerFrame;
@@ -5064,7 +5154,28 @@ declare interface LiveVoiceServerFrameBase {
5064
5154
 
5065
5155
  declare type LiveVoiceServerFrameType = (typeof _LIVE_VOICE_SERVER_FRAME_TYPES)[number];
5066
5156
 
5067
- export declare type LiveVoiceSessionCloseReason = "client_end" | "error" | "websocket_close" | "transport_closed" | "manager_shutdown";
5157
+ export declare type LiveVoiceSessionCloseReason = "client_end" | "error" | "websocket_close" | "transport_closed" | "client_timeout" | "forced_end" | "manager_shutdown";
5158
+
5159
+ /**
5160
+ * Where the session holding the daemon's single live-voice slot is running,
5161
+ * as much of it as the daemon knows.
5162
+ *
5163
+ * Display only: it is what lets a client refused a session say where the one
5164
+ * that blocked it is. Nothing routes, authorizes, or decides capability on
5165
+ * it, and every field is optional, so a holder that names neither its surface
5166
+ * nor a conversation is simply less specific.
5167
+ */
5168
+ declare interface LiveVoiceSessionHolder {
5169
+ /**
5170
+ * The OS surface the holder is running on, from its `start` frame. A
5171
+ * {@link ClientOs} carries no transport meaning by contract (see
5172
+ * `channels/types.ts`), which is exactly right for a label: it says which
5173
+ * device the user should go looking on, and answers nothing else.
5174
+ */
5175
+ readonly client?: ClientOs;
5176
+ /** The conversation the holder is talking in, once it has one. */
5177
+ readonly conversationId?: string;
5178
+ }
5068
5179
 
5069
5180
  /**
5070
5181
  * Emitted when the server VAD detects user speech. The client MUST
@@ -5222,30 +5333,30 @@ declare const messageMetadataSchema: z.ZodObject<{
5222
5333
  sentAt: z.ZodOptional<z.ZodNumber>;
5223
5334
  userMessageChannel: z.ZodOptional<z.ZodEnum<{
5224
5335
  phone: "phone";
5225
- platform: "platform";
5226
- a2a: "a2a";
5336
+ telegram: "telegram";
5227
5337
  vellum: "vellum";
5228
5338
  whatsapp: "whatsapp";
5229
- discord: "discord";
5230
- telegram: "telegram";
5231
5339
  slack: "slack";
5232
5340
  email: "email";
5341
+ platform: "platform";
5342
+ a2a: "a2a";
5343
+ discord: "discord";
5233
5344
  plugin: "plugin";
5234
5345
  }>>;
5235
5346
  assistantMessageChannel: z.ZodOptional<z.ZodEnum<{
5236
5347
  phone: "phone";
5237
- platform: "platform";
5238
- a2a: "a2a";
5348
+ telegram: "telegram";
5239
5349
  vellum: "vellum";
5240
5350
  whatsapp: "whatsapp";
5241
- discord: "discord";
5242
- telegram: "telegram";
5243
5351
  slack: "slack";
5244
5352
  email: "email";
5353
+ platform: "platform";
5354
+ a2a: "a2a";
5355
+ discord: "discord";
5245
5356
  plugin: "plugin";
5246
5357
  }>>;
5247
- userMessageInterface: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<"phone" | "a2a" | "whatsapp" | "discord" | "telegram" | "slack" | "email" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route" | null, string>> & z.ZodType<"phone" | "a2a" | "whatsapp" | "discord" | "telegram" | "slack" | "email" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string, z.core.$ZodTypeInternals<"phone" | "a2a" | "whatsapp" | "discord" | "telegram" | "slack" | "email" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string>>>;
5248
- assistantMessageInterface: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<"phone" | "a2a" | "whatsapp" | "discord" | "telegram" | "slack" | "email" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route" | null, string>> & z.ZodType<"phone" | "a2a" | "whatsapp" | "discord" | "telegram" | "slack" | "email" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string, z.core.$ZodTypeInternals<"phone" | "a2a" | "whatsapp" | "discord" | "telegram" | "slack" | "email" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string>>>;
5358
+ userMessageInterface: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<"phone" | "telegram" | "whatsapp" | "slack" | "email" | "a2a" | "discord" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route" | null, string>> & z.ZodType<"phone" | "telegram" | "whatsapp" | "slack" | "email" | "a2a" | "discord" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string, z.core.$ZodTypeInternals<"phone" | "telegram" | "whatsapp" | "slack" | "email" | "a2a" | "discord" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string>>>;
5359
+ assistantMessageInterface: z.ZodOptional<z.ZodPipe<z.ZodString, z.ZodTransform<"phone" | "telegram" | "whatsapp" | "slack" | "email" | "a2a" | "discord" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route" | null, string>> & z.ZodType<"phone" | "telegram" | "whatsapp" | "slack" | "email" | "a2a" | "discord" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string, z.core.$ZodTypeInternals<"phone" | "telegram" | "whatsapp" | "slack" | "email" | "a2a" | "discord" | "plugin" | "macos" | "windows" | "ios" | "cli" | "web" | "chrome-extension" | "route", string>>>;
5249
5360
  client: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
5250
5361
  clientOsFromRequest: z.ZodOptional<z.ZodBoolean>;
5251
5362
  subagentNotification: z.ZodOptional<z.ZodObject<{
@@ -5274,14 +5385,14 @@ declare const messageMetadataSchema: z.ZodObject<{
5274
5385
  model: z.ZodOptional<z.ZodString>;
5275
5386
  provenanceSourceChannel: z.ZodOptional<z.ZodEnum<{
5276
5387
  phone: "phone";
5277
- platform: "platform";
5278
- a2a: "a2a";
5388
+ telegram: "telegram";
5279
5389
  vellum: "vellum";
5280
5390
  whatsapp: "whatsapp";
5281
- discord: "discord";
5282
- telegram: "telegram";
5283
5391
  slack: "slack";
5284
5392
  email: "email";
5393
+ platform: "platform";
5394
+ a2a: "a2a";
5395
+ discord: "discord";
5285
5396
  plugin: "plugin";
5286
5397
  }>>;
5287
5398
  provenanceGuardianExternalUserId: z.ZodOptional<z.ZodString>;
@@ -5299,9 +5410,9 @@ declare const messageMetadataSchema: z.ZodObject<{
5299
5410
  command: z.ZodString;
5300
5411
  startedAt: z.ZodNumber;
5301
5412
  status: z.ZodEnum<{
5302
- cancelled: "cancelled";
5303
5413
  completed: "completed";
5304
5414
  failed: "failed";
5415
+ cancelled: "cancelled";
5305
5416
  }>;
5306
5417
  exitCode: z.ZodNullable<z.ZodNumber>;
5307
5418
  output: z.ZodString;
@@ -5891,6 +6002,15 @@ export declare interface ProviderResponse {
5891
6002
  model: string;
5892
6003
  /** Provider that actually produced this response, which may differ from a wrapper provider name. */
5893
6004
  actualProvider?: string;
6005
+ /**
6006
+ * Inference profile key that actually governed this response when a
6007
+ * wrapper re-routed the request away from the caller's own resolution
6008
+ * (`RetryProvider`'s fallback-route escalation). `UsageTrackingProvider`
6009
+ * prefers this over re-resolving from the original request options, so a
6010
+ * successful fallback serve is attributed to the backup profile rather
6011
+ * than the failed primary's. Absent on the normal (non-rerouted) path.
6012
+ */
6013
+ actualInferenceProfile?: string;
5894
6014
  /**
5895
6015
  * Base URL the provider's HTTP client actually resolved to for this request,
5896
6016
  * read from the live SDK client instance rather than re-derived from config.
@@ -6411,6 +6531,18 @@ export declare interface SendMessageConfig {
6411
6531
  * request.
6412
6532
  */
6413
6533
  forceOverrideProfile?: boolean;
6534
+ /**
6535
+ * True when the caller appended {@link NATIVE_WEB_SEARCH_TOOL_NAME} purely
6536
+ * to activate the route's provider-native web search, rather than passing an
6537
+ * app-executed search tool of the same name (which is what runs when a
6538
+ * search backend like Brave or the platform search proxy is configured).
6539
+ * Only the caller can tell those apart, and a route change after that
6540
+ * decision has to: `RetryProvider` drops the tool on a backup that runs no
6541
+ * native search, and must not touch it when the daemon executes it itself.
6542
+ * A resolution/routing-time concern only; stripped before any provider wire
6543
+ * request.
6544
+ */
6545
+ nativeWebSearchSentinel?: boolean;
6414
6546
  /**
6415
6547
  * Per-conversation seed for deterministic `mix`-profile expansion. The agent
6416
6548
  * loop sets this to the conversation id so every resolver call this send
@@ -6783,28 +6915,33 @@ export declare type SttErrorCategory =
6783
6915
  | "provider-error";
6784
6916
 
6785
6917
  /**
6786
- * Provider-agnostic speech-to-text domain types for daemon transcription.
6918
+ * Catalog identity for a daemon-hosted STT backend.
6787
6919
  *
6788
- * These types define the boundary between callers that need audio transcription
6789
- * and the concrete STT provider implementations. The goal is to let daemon
6790
- * callsites program against a single typed interface so that provider swaps are
6791
- * localized to the adapter layer.
6920
+ * This is the key capability is stored under, NOT the set of values a user may
6921
+ * put in `services.stt.provider`. A provider that offers more than one model
6922
+ * family with genuinely different capabilities gets a row per family, because
6923
+ * the catalog is a capability matrix and those capabilities differ. Users
6924
+ * select the family with `services.stt.providers.<id>.model`, and
6925
+ * {@link resolveSttCatalogKey} maps that pair onto the row.
6792
6926
  *
6793
- * Two execution modes are supported:
6794
- * - **Batch** — a single audio buffer is sent and a final transcript returned.
6795
- * - **Streaming** — audio chunks are sent over a persistent session, and the
6796
- * provider emits partial/final transcript events in real time.
6797
- */
6798
- /**
6799
- * Canonical provider identifiers for daemon-hosted STT backends.
6800
- * Extend this union as new providers are integrated.
6927
+ * Keeping the two apart bounds the user-facing surface: adding a model family
6928
+ * costs a catalog row and nothing else, while adding a provider id costs an
6929
+ * enum entry, a settings-picker row, and a place in every predicate that
6930
+ * classifies providers.
6801
6931
  */
6802
6932
  export declare type SttProviderId = "openai-whisper" | "deepgram"
6803
6933
  /**
6804
6934
  * Deepgram's Flux conversational speech model. Shares the `deepgram`
6805
6935
  * credential and is streaming-only: Flux has no batch endpoint.
6806
6936
  */
6807
- | "deepgram-flux" | "google-gemini" | "xai" | "vellum";
6937
+ | "deepgram-flux" | "google-gemini" | "xai" | "vellum"
6938
+ /**
6939
+ * Managed Flux: the same conversational model as `deepgram-flux`, reached
6940
+ * through the platform's speech relay instead of a Deepgram key. Dials the
6941
+ * relay's STT v2 endpoint asking for native Flux frames, so it keeps the
6942
+ * turn events the relay's default v1-shaped translation drops.
6943
+ */
6944
+ | "vellum-flux";
6808
6945
 
6809
6946
  /** The streaming session has closed (no more events will be emitted). */
6810
6947
  export declare interface SttStreamServerClosedEvent {
@@ -7261,7 +7398,7 @@ export declare interface ToolContext {
7261
7398
  * resolution; undefined when the chat type is unknown or ambiguous.
7262
7399
  * @legacy
7263
7400
  */
7264
- channelConversationType?: "dm" | "private" | "public";
7401
+ channelConversationType?: ChannelConversationType;
7265
7402
  /**
7266
7403
  * External channel/conversation ID of the current chat (the binding's
7267
7404
  * external chat id — Slack channel, Telegram chat, …). Keys the channel
@@ -7740,7 +7877,7 @@ declare interface WebFetchMetadata {
7740
7877
  }
7741
7878
 
7742
7879
  /** Provider that backed a `web_fetch` call. `default` is the built-in fetcher. */
7743
- declare type WebFetchProviderId = "default" | "firecrawl";
7880
+ declare type WebFetchProviderId = "default" | "firecrawl" | "fastcrw";
7744
7881
 
7745
7882
  /**
7746
7883
  * Public URL resolution for a plugin's own ingress route.
@@ -7797,7 +7934,7 @@ declare interface WebSearchMetadata {
7797
7934
  errorMessage?: string;
7798
7935
  }
7799
7936
 
7800
- declare type WebSearchProviderId = "anthropic-native" | "brave" | "perplexity" | "tavily" | "keenable" | "firecrawl";
7937
+ declare type WebSearchProviderId = "anthropic-native" | "brave" | "perplexity" | "tavily" | "keenable" | "firecrawl" | "fastcrw";
7801
7938
 
7802
7939
  declare interface WebSearchResultItem {
7803
7940
  rank: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/plugin-api",
3
- "version": "0.11.5",
3
+ "version": "0.11.6-dev.202608252309.48526e7",
4
4
  "description": "Public TypeScript authoring contract for Vellum assistant plugins.",
5
5
  "license": "MIT",
6
6
  "type": "module",