@vellumai/plugin-api 0.12.1-staging.2 → 0.12.2-dev.202609162214.308bda0

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 (3) hide show
  1. package/index.d.ts +160 -50
  2. package/index.js +3 -0
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -167,10 +167,10 @@ declare const AssistantConfigSchema: z.ZodObject<{
167
167
  language: z.ZodDefault<z.ZodString>;
168
168
  providers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>>>;
169
169
  roles: z.ZodDefault<z.ZodRecord<z.ZodEnum<{
170
- watch: "watch";
171
170
  liveVoice: "liveVoice";
172
171
  telephony: "telephony";
173
172
  dictation: "dictation";
173
+ watch: "watch";
174
174
  batch: "batch";
175
175
  }> & z.core.$partial, z.ZodObject<{
176
176
  provider: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodEnum<{
@@ -312,6 +312,12 @@ declare const AssistantConfigSchema: z.ZodObject<{
312
312
  "your-own": "your-own";
313
313
  }>>;
314
314
  }, z.core.$strip>>;
315
+ "shopify-oauth": z.ZodDefault<z.ZodObject<{
316
+ mode: z.ZodDefault<z.ZodEnum<{
317
+ managed: "managed";
318
+ "your-own": "your-own";
319
+ }>>;
320
+ }, z.core.$strip>>;
315
321
  "stripe-link-oauth": z.ZodDefault<z.ZodObject<{
316
322
  mode: z.ZodDefault<z.ZodEnum<{
317
323
  managed: "managed";
@@ -324,6 +330,12 @@ declare const AssistantConfigSchema: z.ZodObject<{
324
330
  "your-own": "your-own";
325
331
  }>>;
326
332
  }, z.core.$strip>>;
333
+ "quickbooks-oauth": z.ZodDefault<z.ZodObject<{
334
+ mode: z.ZodDefault<z.ZodEnum<{
335
+ managed: "managed";
336
+ "your-own": "your-own";
337
+ }>>;
338
+ }, z.core.$strip>>;
327
339
  "eventbrite-oauth": z.ZodDefault<z.ZodObject<{
328
340
  mode: z.ZodDefault<z.ZodEnum<{
329
341
  managed: "managed";
@@ -592,6 +604,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
592
604
  }, z.core.$strip>>;
593
605
  retrospective: z.ZodDefault<z.ZodObject<{
594
606
  enabled: z.ZodDefault<z.ZodBoolean>;
607
+ skillImprovement: z.ZodDefault<z.ZodBoolean>;
595
608
  timeThresholdMs: z.ZodDefault<z.ZodNumber>;
596
609
  messageThreshold: z.ZodDefault<z.ZodNumber>;
597
610
  minCooldownMs: z.ZodDefault<z.ZodNumber>;
@@ -611,6 +624,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
611
624
  fdPollIntervalMs: z.ZodDefault<z.ZodNumber>;
612
625
  highFdThresholdRatio: z.ZodDefault<z.ZodNumber>;
613
626
  fdWarnCooldownMs: z.ZodDefault<z.ZodNumber>;
627
+ mountWatchIntervalMs: z.ZodDefault<z.ZodNumber>;
614
628
  pluginSourceScanIntervalMs: z.ZodDefault<z.ZodNumber>;
615
629
  baselineSnapshotIntervalMs: z.ZodDefault<z.ZodNumber>;
616
630
  }, z.core.$strip>>;
@@ -945,31 +959,14 @@ declare const AssistantConfigSchema: z.ZodObject<{
945
959
  }, z.core.$strip>>;
946
960
  localDirectory: z.ZodDefault<z.ZodNullable<z.ZodString>>;
947
961
  }, z.core.$strip>>;
948
- mcp: z.ZodDefault<z.ZodObject<{
949
- servers: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
950
- transport: z.ZodDiscriminatedUnion<[z.ZodObject<{
951
- type: z.ZodLiteral<"stdio">;
952
- command: z.ZodString;
953
- args: z.ZodDefault<z.ZodArray<z.ZodString>>;
954
- env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
955
- }, z.core.$strip>, z.ZodObject<{
956
- type: z.ZodLiteral<"sse">;
957
- url: z.ZodString;
958
- headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
959
- }, z.core.$strip>, z.ZodObject<{
960
- type: z.ZodLiteral<"streamable-http">;
961
- url: z.ZodString;
962
- headers: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
963
- }, z.core.$strip>], "type">;
964
- }, z.core.$strip>>>;
965
- }, z.core.$strip>>;
966
962
  acp: z.ZodDefault<z.ZodObject<{
967
963
  maxConcurrentSessions: z.ZodDefault<z.ZodNumber>;
968
964
  agents: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
969
- command: z.ZodString;
965
+ command: z.ZodOptional<z.ZodString>;
970
966
  args: z.ZodDefault<z.ZodArray<z.ZodString>>;
971
967
  description: z.ZodOptional<z.ZodString>;
972
968
  env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
969
+ model: z.ZodOptional<z.ZodString>;
973
970
  }, z.core.$strip>>>;
974
971
  }, z.core.$strip>>;
975
972
  skills: z.ZodDefault<z.ZodObject<{
@@ -981,8 +978,6 @@ declare const AssistantConfigSchema: z.ZodObject<{
981
978
  }, z.core.$strip>>>;
982
979
  load: z.ZodDefault<z.ZodObject<{
983
980
  extraDirs: z.ZodDefault<z.ZodArray<z.ZodString>>;
984
- watch: z.ZodDefault<z.ZodBoolean>;
985
- watchDebounceMs: z.ZodDefault<z.ZodNumber>;
986
981
  }, z.core.$strip>>;
987
982
  install: z.ZodDefault<z.ZodObject<{
988
983
  nodeManager: z.ZodDefault<z.ZodEnum<{
@@ -1077,15 +1072,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
1077
1072
  enabled: z.ZodDefault<z.ZodBoolean>;
1078
1073
  text: z.ZodDefault<z.ZodString>;
1079
1074
  }, z.core.$strip>>;
1080
- safety: z.ZodDefault<z.ZodObject<{
1081
- denyCategories: z.ZodDefault<z.ZodArray<z.ZodString>>;
1082
- }, z.core.$strip>>;
1083
1075
  voice: z.ZodDefault<z.ZodObject<{
1084
- interruptSensitivity: z.ZodDefault<z.ZodEnum<{
1085
- low: "low";
1086
- medium: "medium";
1087
- high: "high";
1088
- }>>;
1089
1076
  telephonyStreaming: z.ZodDefault<z.ZodBoolean>;
1090
1077
  utteranceEndMs: z.ZodDefault<z.ZodNumber>;
1091
1078
  }, z.core.$strip>>;
@@ -1100,10 +1087,6 @@ declare const AssistantConfigSchema: z.ZodObject<{
1100
1087
  }, z.core.$strip>>;
1101
1088
  }, z.core.$strip>>;
1102
1089
  liveVoice: z.ZodDefault<z.ZodObject<{
1103
- mode: z.ZodDefault<z.ZodEnum<{
1104
- ptt: "ptt";
1105
- "open-mic": "open-mic";
1106
- }>>;
1107
1090
  vad: z.ZodDefault<z.ZodObject<{
1108
1091
  speechEnergyThreshold: z.ZodDefault<z.ZodNumber>;
1109
1092
  noiseFloorMargin: z.ZodDefault<z.ZodNumber>;
@@ -1114,6 +1097,18 @@ declare const AssistantConfigSchema: z.ZodObject<{
1114
1097
  echoEmaHalfLifeMs: z.ZodDefault<z.ZodNumber>;
1115
1098
  echoDrainSlackMs: z.ZodDefault<z.ZodNumber>;
1116
1099
  }, z.core.$strip>>;
1100
+ flux: z.ZodDefault<z.ZodObject<{
1101
+ turnEnd: z.ZodDefault<z.ZodObject<{
1102
+ enabled: z.ZodDefault<z.ZodBoolean>;
1103
+ }, z.core.$strip>>;
1104
+ model: z.ZodOptional<z.ZodString>;
1105
+ eotThreshold: z.ZodDefault<z.ZodNumber>;
1106
+ eagerEotThreshold: z.ZodOptional<z.ZodNumber>;
1107
+ eotTimeoutMs: z.ZodDefault<z.ZodNumber>;
1108
+ }, z.core.$strip>>;
1109
+ archiveAudio: z.ZodDefault<z.ZodBoolean>;
1110
+ }, z.core.$strip>>;
1111
+ voice: z.ZodDefault<z.ZodObject<{
1117
1112
  frontModel: z.ZodDefault<z.ZodObject<{
1118
1113
  endpointDecisionTimeoutMs: z.ZodDefault<z.ZodNumber>;
1119
1114
  endpointExtensionMs: z.ZodDefault<z.ZodNumber>;
@@ -1128,17 +1123,6 @@ declare const AssistantConfigSchema: z.ZodObject<{
1128
1123
  generationTimeoutMs: z.ZodDefault<z.ZodNumber>;
1129
1124
  }, z.core.$strip>>;
1130
1125
  }, z.core.$strip>>;
1131
- flux: z.ZodDefault<z.ZodObject<{
1132
- turnEnd: z.ZodDefault<z.ZodObject<{
1133
- enabled: z.ZodDefault<z.ZodBoolean>;
1134
- }, z.core.$strip>>;
1135
- model: z.ZodOptional<z.ZodString>;
1136
- eotThreshold: z.ZodDefault<z.ZodNumber>;
1137
- eagerEotThreshold: z.ZodOptional<z.ZodNumber>;
1138
- eotTimeoutMs: z.ZodDefault<z.ZodNumber>;
1139
- }, z.core.$strip>>;
1140
- maxSessionDurationSeconds: z.ZodDefault<z.ZodNumber>;
1141
- archiveAudio: z.ZodDefault<z.ZodBoolean>;
1142
1126
  }, z.core.$strip>>;
1143
1127
  sight: z.ZodDefault<z.ZodObject<{
1144
1128
  keepLatestFrames: z.ZodDefault<z.ZodNumber>;
@@ -1313,6 +1297,18 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1313
1297
  type: z.ZodLiteral<"acp_session_error">;
1314
1298
  acpSessionId: z.ZodString;
1315
1299
  error: z.ZodString;
1300
+ }, z.core.$strict>, z.ZodObject<{
1301
+ type: z.ZodLiteral<"acp_session_model_update">;
1302
+ acpSessionId: z.ZodString;
1303
+ modelRevisionEpoch: z.ZodString;
1304
+ modelRevision: z.ZodNumber;
1305
+ model: z.ZodOptional<z.ZodString>;
1306
+ availableModels: z.ZodArray<z.ZodObject<{
1307
+ value: z.ZodString;
1308
+ label: z.ZodString;
1309
+ description: z.ZodOptional<z.ZodString>;
1310
+ group: z.ZodOptional<z.ZodString>;
1311
+ }, z.core.$strip>>;
1316
1312
  }, z.core.$strict>, z.ZodObject<{
1317
1313
  type: z.ZodLiteral<"acp_session_spawned">;
1318
1314
  acpSessionId: z.ZodString;
@@ -1665,6 +1661,8 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1665
1661
  type: z.ZodLiteral<"conversation_title_updated">;
1666
1662
  conversationId: z.ZodString;
1667
1663
  title: z.ZodString;
1664
+ }, z.core.$strip>, z.ZodObject<{
1665
+ type: z.ZodLiteral<"desktop_activity_changed">;
1668
1666
  }, z.core.$strip>, z.ZodObject<{
1669
1667
  type: z.ZodLiteral<"disk_pressure_status_changed">;
1670
1668
  status: z.ZodObject<{
@@ -1764,6 +1762,7 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1764
1762
  sandbox_file: "sandbox_file";
1765
1763
  tool_block: "tool_block";
1766
1764
  }>>;
1765
+ computerUseScreenshot: z.ZodOptional<z.ZodBoolean>;
1767
1766
  sizeBytes: z.ZodOptional<z.ZodNumber>;
1768
1767
  thumbnailData: z.ZodOptional<z.ZodString>;
1769
1768
  fileBacked: z.ZodOptional<z.ZodBoolean>;
@@ -2044,6 +2043,7 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2044
2043
  sandbox_file: "sandbox_file";
2045
2044
  tool_block: "tool_block";
2046
2045
  }>>;
2046
+ computerUseScreenshot: z.ZodOptional<z.ZodBoolean>;
2047
2047
  sizeBytes: z.ZodOptional<z.ZodNumber>;
2048
2048
  thumbnailData: z.ZodOptional<z.ZodString>;
2049
2049
  fileBacked: z.ZodOptional<z.ZodBoolean>;
@@ -2121,6 +2121,7 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2121
2121
  }, z.core.$strip>, z.ZodObject<{
2122
2122
  type: z.ZodLiteral<"notification_intent">;
2123
2123
  sourceEventName: z.ZodString;
2124
+ assistantName: z.ZodOptional<z.ZodString>;
2124
2125
  title: z.ZodString;
2125
2126
  body: z.ZodString;
2126
2127
  deliveryId: z.ZodOptional<z.ZodString>;
@@ -2548,6 +2549,7 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2548
2549
  messageId: z.ZodOptional<z.ZodString>;
2549
2550
  requestId: z.ZodOptional<z.ZodString>;
2550
2551
  clientMessageId: z.ZodOptional<z.ZodString>;
2552
+ cameraFrame: z.ZodOptional<z.ZodLiteral<true>>;
2551
2553
  }, z.core.$strict>, z.ZodObject<{
2552
2554
  type: z.ZodLiteral<"watch_retro_completed">;
2553
2555
  sessionId: z.ZodString;
@@ -2781,6 +2783,7 @@ declare const AssistantEventPublishOptionsSchema: z.ZodObject<{
2781
2783
  host_file: "host_file";
2782
2784
  host_cu: "host_cu";
2783
2785
  host_cu_window_capture: "host_cu_window_capture";
2786
+ host_cu_sequence: "host_cu_sequence";
2784
2787
  host_cu_annotate: "host_cu_annotate";
2785
2788
  host_browser: "host_browser";
2786
2789
  host_app_control: "host_app_control";
@@ -2841,6 +2844,18 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2841
2844
  type: z.ZodLiteral<"acp_session_error">;
2842
2845
  acpSessionId: z.ZodString;
2843
2846
  error: z.ZodString;
2847
+ }, z.core.$strict>, z.ZodObject<{
2848
+ type: z.ZodLiteral<"acp_session_model_update">;
2849
+ acpSessionId: z.ZodString;
2850
+ modelRevisionEpoch: z.ZodString;
2851
+ modelRevision: z.ZodNumber;
2852
+ model: z.ZodOptional<z.ZodString>;
2853
+ availableModels: z.ZodArray<z.ZodObject<{
2854
+ value: z.ZodString;
2855
+ label: z.ZodString;
2856
+ description: z.ZodOptional<z.ZodString>;
2857
+ group: z.ZodOptional<z.ZodString>;
2858
+ }, z.core.$strip>>;
2844
2859
  }, z.core.$strict>, z.ZodObject<{
2845
2860
  type: z.ZodLiteral<"acp_session_spawned">;
2846
2861
  acpSessionId: z.ZodString;
@@ -3193,6 +3208,8 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3193
3208
  type: z.ZodLiteral<"conversation_title_updated">;
3194
3209
  conversationId: z.ZodString;
3195
3210
  title: z.ZodString;
3211
+ }, z.core.$strip>, z.ZodObject<{
3212
+ type: z.ZodLiteral<"desktop_activity_changed">;
3196
3213
  }, z.core.$strip>, z.ZodObject<{
3197
3214
  type: z.ZodLiteral<"disk_pressure_status_changed">;
3198
3215
  status: z.ZodObject<{
@@ -3292,6 +3309,7 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3292
3309
  sandbox_file: "sandbox_file";
3293
3310
  tool_block: "tool_block";
3294
3311
  }>>;
3312
+ computerUseScreenshot: z.ZodOptional<z.ZodBoolean>;
3295
3313
  sizeBytes: z.ZodOptional<z.ZodNumber>;
3296
3314
  thumbnailData: z.ZodOptional<z.ZodString>;
3297
3315
  fileBacked: z.ZodOptional<z.ZodBoolean>;
@@ -3572,6 +3590,7 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3572
3590
  sandbox_file: "sandbox_file";
3573
3591
  tool_block: "tool_block";
3574
3592
  }>>;
3593
+ computerUseScreenshot: z.ZodOptional<z.ZodBoolean>;
3575
3594
  sizeBytes: z.ZodOptional<z.ZodNumber>;
3576
3595
  thumbnailData: z.ZodOptional<z.ZodString>;
3577
3596
  fileBacked: z.ZodOptional<z.ZodBoolean>;
@@ -3649,6 +3668,7 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3649
3668
  }, z.core.$strip>, z.ZodObject<{
3650
3669
  type: z.ZodLiteral<"notification_intent">;
3651
3670
  sourceEventName: z.ZodString;
3671
+ assistantName: z.ZodOptional<z.ZodString>;
3652
3672
  title: z.ZodString;
3653
3673
  body: z.ZodString;
3654
3674
  deliveryId: z.ZodOptional<z.ZodString>;
@@ -4076,6 +4096,7 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4076
4096
  messageId: z.ZodOptional<z.ZodString>;
4077
4097
  requestId: z.ZodOptional<z.ZodString>;
4078
4098
  clientMessageId: z.ZodOptional<z.ZodString>;
4099
+ cameraFrame: z.ZodOptional<z.ZodLiteral<true>>;
4079
4100
  }, z.core.$strict>, z.ZodObject<{
4080
4101
  type: z.ZodLiteral<"watch_retro_completed">;
4081
4102
  sessionId: z.ZodString;
@@ -4754,6 +4775,12 @@ export declare function getConversationDirPath(id: string, createdAtMs: number):
4754
4775
  */
4755
4776
  export declare function getConversationProcessingStartedAt(id: string): Promise<number | null>;
4756
4777
 
4778
+ /**
4779
+ * The tool definitions the conversation's most recent live turn sent to the
4780
+ * provider, or `null` when none has been recorded.
4781
+ */
4782
+ export declare function getConversationToolSurface(conversationId: string): Promise<ToolDefinition_2[] | null>;
4783
+
4757
4784
  /** Fetch one document from the calling plugin's index, or null. */
4758
4785
  export declare function getDocument(documentId: string): Promise<IndexedDocument | null>;
4759
4786
 
@@ -4849,6 +4876,7 @@ export declare type HookBroadcast = (detail: Record<string, unknown>) => void;
4849
4876
  * - `post-model-call` — {@link PostModelCallContext}
4850
4877
  * - `conversation-deleted` — {@link ConversationDeletedContext}
4851
4878
  * - `conversations-cleared` — {@link ConversationsClearedContext}
4879
+ * - `message-deleted`: {@link MessageDeletedContext}
4852
4880
  */
4853
4881
  export declare type HookFunction<TCtx = unknown> = (ctx: TCtx) => Promise<Partial<TCtx> | void>;
4854
4882
 
@@ -4890,6 +4918,8 @@ export declare const HOOKS: {
4890
4918
  readonly CONVERSATION_DELETED: "conversation-deleted";
4891
4919
  /** Fires once when every conversation is wiped at once (the clear-all reset), after the main tables are cleared. Carries no `conversationId`; cleanup hooks wipe their own per-conversation state wholesale. */
4892
4920
  readonly CONVERSATIONS_CLEARED: "conversations-cleared";
4921
+ /** Fires once per deleted message row, after the row is removed, carrying the row's `(createdAt, id)` so a hook can settle state that pointed at it. Fire-and-forget cleanup signal, like `conversation-deleted`; whole-conversation deletes dispatch that hook instead. */
4922
+ readonly MESSAGE_DELETED: "message-deleted";
4893
4923
  };
4894
4924
 
4895
4925
  /**
@@ -4904,7 +4934,7 @@ export declare const HOOKS: {
4904
4934
  *
4905
4935
  * Pure data and pure functions only: no imports, no daemon runtime graph.
4906
4936
  */
4907
- declare const HOST_PROXY_CAPABILITIES: readonly ["host_bash", "host_file", "host_cu", "host_cu_window_capture", "host_cu_annotate", "host_browser", "host_app_control", "host_ui_snapshot"];
4937
+ declare const HOST_PROXY_CAPABILITIES: readonly ["host_bash", "host_file", "host_cu", "host_cu_window_capture", "host_cu_sequence", "host_cu_annotate", "host_browser", "host_app_control", "host_ui_snapshot"];
4908
4938
 
4909
4939
  declare type HostProxyCapability = (typeof HOST_PROXY_CAPABILITIES)[number];
4910
4940
 
@@ -5116,7 +5146,9 @@ export declare function listConversations(limit?: number, conversationType?: Con
5116
5146
  */
5117
5147
  export declare function listInstalledSkills(): Promise<ResolvedSkillEntry[]>;
5118
5148
 
5119
- declare const _LIVE_VOICE_SERVER_FRAME_TYPES: readonly ["ready", "busy", "speech_started", "utterance_end", "utterance_discarded", "stt_partial", "stt_final", "thinking", "activity", "assistant_text_delta", "tts_audio", "tts_done", "turn_cancelled", "minimize_room", "metrics", "archived", "error"];
5149
+ declare const _LIVE_VOICE_SERVER_FRAME_TYPES: readonly ["ready", "busy", "speech_started", "utterance_end", "utterance_discarded", "stt_partial", "stt_final", "thinking", "activity", "assistant_text_delta", "tts_audio", "tts_done", "turn_cancelled", "minimize_room", "session_control", "metrics", "archived", "error"];
5150
+
5151
+ declare const LIVE_VOICE_SESSION_CONTROLS: readonly ["end", "mute", "look_screen", "look_camera", "look_stop"];
5120
5152
 
5121
5153
  declare const LIVE_VOICE_TURN_DETECTION_MODES: readonly ["manual", "server_vad"];
5122
5154
 
@@ -5293,8 +5325,6 @@ declare interface LiveVoiceMetricsServerFrame extends LiveVoiceServerFrameBase {
5293
5325
  * condition as the two fields above.
5294
5326
  */
5295
5327
  readonly endpointDecisionSource?: "front-door" | "provider";
5296
- /** Which floor-holding ack actually spoke during the turn, if any. */
5297
- readonly ackSpoken?: "first_delta" | "tool_use";
5298
5328
  /**
5299
5329
  * Spoken progress narrations during the turn. Present only when at least
5300
5330
  * one progress update spoke (otherwise the field is absent, keeping frames
@@ -5361,7 +5391,7 @@ declare interface LiveVoiceReadyServerFrame extends LiveVoiceServerFrameBase {
5361
5391
  readonly audioInput?: boolean;
5362
5392
  }
5363
5393
 
5364
- export declare type LiveVoiceServerFrame = LiveVoiceReadyServerFrame | LiveVoiceBusyServerFrame | LiveVoiceSpeechStartedServerFrame | LiveVoiceUtteranceEndServerFrame | LiveVoiceUtteranceDiscardedServerFrame | LiveVoiceSttPartialServerFrame | LiveVoiceSttFinalServerFrame | LiveVoiceThinkingServerFrame | LiveVoiceActivityServerFrame | LiveVoiceAssistantTextDeltaServerFrame | LiveVoiceTtsAudioServerFrame | LiveVoiceTtsDoneServerFrame | LiveVoiceTurnCancelledServerFrame | LiveVoiceMinimizeRoomServerFrame | LiveVoiceMetricsServerFrame | LiveVoiceArchivedServerFrame | LiveVoiceErrorServerFrame;
5394
+ export declare type LiveVoiceServerFrame = LiveVoiceReadyServerFrame | LiveVoiceBusyServerFrame | LiveVoiceSpeechStartedServerFrame | LiveVoiceUtteranceEndServerFrame | LiveVoiceUtteranceDiscardedServerFrame | LiveVoiceSttPartialServerFrame | LiveVoiceSttFinalServerFrame | LiveVoiceThinkingServerFrame | LiveVoiceActivityServerFrame | LiveVoiceAssistantTextDeltaServerFrame | LiveVoiceTtsAudioServerFrame | LiveVoiceTtsDoneServerFrame | LiveVoiceTurnCancelledServerFrame | LiveVoiceMinimizeRoomServerFrame | LiveVoiceSessionControlServerFrame | LiveVoiceMetricsServerFrame | LiveVoiceArchivedServerFrame | LiveVoiceErrorServerFrame;
5365
5395
 
5366
5396
  declare interface LiveVoiceServerFrameBase {
5367
5397
  readonly type: LiveVoiceServerFrameType;
@@ -5372,6 +5402,32 @@ declare type LiveVoiceServerFrameType = (typeof _LIVE_VOICE_SERVER_FRAME_TYPES)[
5372
5402
 
5373
5403
  export declare type LiveVoiceSessionCloseReason = "client_end" | "error" | "websocket_close" | "transport_closed" | "client_timeout" | "forced_end" | "manager_shutdown";
5374
5404
 
5405
+ /** A session control a client can carry out on the assistant's behalf. */
5406
+ declare type LiveVoiceSessionControl = (typeof LIVE_VOICE_SESSION_CONTROLS)[number];
5407
+
5408
+ /**
5409
+ * A session control the just-completed reply asked for with a terminal marker
5410
+ * (`[END_CALL]`, `[MUTE]`, `[MUTE:<seconds>]`). Sent only after the turn's TTS
5411
+ * has fully drained, so the spoken acknowledgement is heard first, never for a
5412
+ * turn the user barged in on, at most once per turn, and only for a control
5413
+ * the client listed in the start frame's `sessionControls`.
5414
+ *
5415
+ * - `end`: end the session the way the client's own end control does.
5416
+ * - `mute`: mute the microphone. With `durationMs`, unmute again once it
5417
+ * elapses; without, stay muted until the user unmutes. The timer is the
5418
+ * client's: a muted microphone sends silence, so the daemon cannot hear an
5419
+ * "unmute".
5420
+ * - `look_screen`: start showing the call the user's screen.
5421
+ * - `look_camera`: start showing the call what the camera sees.
5422
+ * - `look_stop`: stop showing the call the screen and the camera.
5423
+ */
5424
+ declare interface LiveVoiceSessionControlServerFrame extends LiveVoiceServerFrameBase {
5425
+ readonly type: "session_control";
5426
+ readonly turnId: string;
5427
+ readonly action: LiveVoiceSessionControl;
5428
+ readonly durationMs?: number;
5429
+ }
5430
+
5375
5431
  /**
5376
5432
  * Where the session holding the daemon's single live-voice slot is running,
5377
5433
  * as much of it as the daemon knows.
@@ -5535,6 +5591,37 @@ export declare interface Message {
5535
5591
  content: ContentBlock[];
5536
5592
  }
5537
5593
 
5594
+ /**
5595
+ * The full `message-deleted` context a hook receives: the dispatching call
5596
+ * site's {@link MessageDeletedInputContext} plus the pipeline-stamped
5597
+ * {@link BaseHookContext} capabilities.
5598
+ */
5599
+ export declare interface MessageDeletedContext extends MessageDeletedInputContext, BaseHookContext {
5600
+ }
5601
+
5602
+ /**
5603
+ * Context passed to the `message-deleted` hook. Fires once per deleted
5604
+ * message row, from the shared single-message delete primitive, after the row
5605
+ * is removed. Whole-conversation deletes dispatch `conversation-deleted`
5606
+ * instead.
5607
+ *
5608
+ * Fire-and-forget like `conversation-deleted`: the primitive is synchronous
5609
+ * and does not wait for the chain. The row is gone by the time a hook runs,
5610
+ * so the context carries the row's `createdAt` alongside its id. Together
5611
+ * they are the `(createdAt, id)` position the row held, which is what a hook
5612
+ * keeping a cursor on that row needs to record once the row can no longer be
5613
+ * looked up. The default memory plugin contributes a hook here that stamps
5614
+ * its retrospective cursor.
5615
+ */
5616
+ declare interface MessageDeletedInputContext {
5617
+ /** ID of the conversation that owned the row. */
5618
+ readonly conversationId: string;
5619
+ /** ID of the deleted message row. */
5620
+ readonly messageId: string;
5621
+ /** The deleted row's `createdAt`. */
5622
+ readonly createdAt: number;
5623
+ }
5624
+
5538
5625
  declare type MessageLexicalSearchResult = Awaited<ReturnType<searchMessageIdsLexical_2>>[number];
5539
5626
 
5540
5627
  declare interface MessageLexicalSearchResult_2 {
@@ -5632,6 +5719,7 @@ declare const messageMetadataSchema: z.ZodObject<{
5632
5719
  automated: z.ZodOptional<z.ZodBoolean>;
5633
5720
  hidden: z.ZodOptional<z.ZodBoolean>;
5634
5721
  voiceSessionTurn: z.ZodOptional<z.ZodBoolean>;
5722
+ computerUseScreenshotAttachmentIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
5635
5723
  messageKind: z.ZodOptional<z.ZodString>;
5636
5724
  assistantTextVisibility: z.ZodOptional<z.ZodString>;
5637
5725
  providerErrorCode: z.ZodOptional<z.ZodString>;
@@ -5823,6 +5911,11 @@ export declare interface PluginLogger {
5823
5911
  debug(obj: Record<string, unknown>, msg?: string): void;
5824
5912
  }
5825
5913
 
5914
+ export declare class PluginTurnNotAdmittedError extends Error {
5915
+ readonly reason: string;
5916
+ constructor(reason: string);
5917
+ }
5918
+
5826
5919
  /**
5827
5920
  * The full `post-compact` context a hook receives — the dispatching call
5828
5921
  * site's {@link PostCompactInputContext} plus the pipeline-stamped
@@ -6707,6 +6800,23 @@ export declare interface RunConversationTurnResult {
6707
6800
  queued?: boolean;
6708
6801
  }
6709
6802
 
6803
+ /**
6804
+ * Slice a string like `String.prototype.slice`, but never cut a UTF-16
6805
+ * surrogate pair in half.
6806
+ *
6807
+ * If the character at `end - 1` is a high surrogate *and* there is more of
6808
+ * the string beyond `end` (so cutting would actually orphan it), `end` is
6809
+ * decremented by one.
6810
+ *
6811
+ * If the character at `start` is a low surrogate *and* `start > 0` (so we
6812
+ * would be starting mid-pair), `start` is incremented by one.
6813
+ *
6814
+ * When `end === str.length` we do not touch a trailing high surrogate: if it
6815
+ * was already orphaned upstream, repairing it here would silently mutate
6816
+ * content. That is the sanitizer's job, not this function's.
6817
+ */
6818
+ export declare function safeStringSlice(str: string, start?: number, end?: number): string;
6819
+
6710
6820
  /** Sparse lexical search over stored message text; ranked message-id hits. */
6711
6821
  export declare function searchMessageIdsLexical(query: string, limit: number, opts?: {
6712
6822
  conversationId?: string;
package/index.js CHANGED
@@ -5,6 +5,7 @@ export const CredentialResolutionError = api.CredentialResolutionError;
5
5
  export const CredentialStoreError = api.CredentialStoreError;
6
6
  export const HOOKS = api.HOOKS;
7
7
  export const INTERNAL_NUDGE_OUTPUT_SUPPRESSION = api.INTERNAL_NUDGE_OUTPUT_SUPPRESSION;
8
+ export const PluginTurnNotAdmittedError = api.PluginTurnNotAdmittedError;
8
9
  export const REFUSAL_FALLBACK_TEXT = api.REFUSAL_FALLBACK_TEXT;
9
10
  export const RiskLevel = api.RiskLevel;
10
11
  export const TtsSynthesisError = api.TtsSynthesisError;
@@ -25,6 +26,7 @@ export const getConfiguredProvider = api.getConfiguredProvider;
25
26
  export const getConversation = api.getConversation;
26
27
  export const getConversationDirPath = api.getConversationDirPath;
27
28
  export const getConversationProcessingStartedAt = api.getConversationProcessingStartedAt;
29
+ export const getConversationToolSurface = api.getConversationToolSurface;
28
30
  export const getDocument = api.getDocument;
29
31
  export const getMessages = api.getMessages;
30
32
  export const getModelProfiles = api.getModelProfiles;
@@ -54,6 +56,7 @@ export const resolveOauthCallbackUrl = api.resolveOauthCallbackUrl;
54
56
  export const resolveUserName = api.resolveUserName;
55
57
  export const resolveWebhookUrl = api.resolveWebhookUrl;
56
58
  export const runConversationTurn = api.runConversationTurn;
59
+ export const safeStringSlice = api.safeStringSlice;
57
60
  export const searchMessageIdsLexical = api.searchMessageIdsLexical;
58
61
  export const selectedBackendSupportsMultimodal = api.selectedBackendSupportsMultimodal;
59
62
  export const storeCredential = api.storeCredential;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/plugin-api",
3
- "version": "0.12.1-staging.2",
3
+ "version": "0.12.2-dev.202609162214.308bda0",
4
4
  "description": "Public TypeScript authoring contract for Vellum assistant plugins.",
5
5
  "license": "MIT",
6
6
  "type": "module",