@vellumai/plugin-api 0.11.1 → 0.11.2-dev.202608042227.b54139c

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 +193 -6
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -76,6 +76,37 @@ export declare type AgentLoopExitReason =
76
76
  /** An unhandled error ended the turn. */
77
77
  | "error";
78
78
 
79
+ declare type AnsweredQuestion = z.infer<typeof AnsweredQuestionSchema>;
80
+
81
+ declare const AnsweredQuestionSchema: z.ZodObject<{
82
+ requestId: z.ZodString;
83
+ questions: z.ZodArray<z.ZodObject<{
84
+ id: z.ZodString;
85
+ question: z.ZodString;
86
+ description: z.ZodOptional<z.ZodString>;
87
+ options: z.ZodArray<z.ZodObject<{
88
+ id: z.ZodString;
89
+ label: z.ZodString;
90
+ description: z.ZodOptional<z.ZodString>;
91
+ }, z.core.$strip>>;
92
+ freeTextPlaceholder: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>>;
94
+ responses: z.ZodArray<z.ZodObject<{
95
+ questionId: z.ZodString;
96
+ decision: z.ZodEnum<{
97
+ option: "option";
98
+ free_text: "free_text";
99
+ skipped: "skipped";
100
+ }>;
101
+ optionId: z.ZodOptional<z.ZodString>;
102
+ text: z.ZodOptional<z.ZodString>;
103
+ }, z.core.$strip>>;
104
+ overall: z.ZodEnum<{
105
+ completed: "completed";
106
+ closed: "closed";
107
+ }>;
108
+ }, z.core.$strip>;
109
+
79
110
  /**
80
111
  * How {@link listConversations} (and friends) treats archived rows.
81
112
  *
@@ -487,6 +518,7 @@ declare const AssistantConfigSchema: z.ZodObject<{
487
518
  timeThresholdMs: z.ZodDefault<z.ZodNumber>;
488
519
  messageThreshold: z.ZodDefault<z.ZodNumber>;
489
520
  minCooldownMs: z.ZodDefault<z.ZodNumber>;
521
+ requireUserActivity: z.ZodDefault<z.ZodBoolean>;
490
522
  sweepIntervalMs: z.ZodDefault<z.ZodNumber>;
491
523
  sweepLookbackMs: z.ZodDefault<z.ZodNumber>;
492
524
  keepSupersededRuns: z.ZodDefault<z.ZodBoolean>;
@@ -499,6 +531,9 @@ declare const AssistantConfigSchema: z.ZodObject<{
499
531
  ringBufferSize: z.ZodDefault<z.ZodNumber>;
500
532
  highMemThresholdRatio: z.ZodDefault<z.ZodNumber>;
501
533
  snapshotCooldownMs: z.ZodDefault<z.ZodNumber>;
534
+ fdPollIntervalMs: z.ZodDefault<z.ZodNumber>;
535
+ highFdThresholdRatio: z.ZodDefault<z.ZodNumber>;
536
+ fdWarnCooldownMs: z.ZodDefault<z.ZodNumber>;
502
537
  pluginSourceScanIntervalMs: z.ZodDefault<z.ZodNumber>;
503
538
  baselineSnapshotIntervalMs: z.ZodDefault<z.ZodNumber>;
504
539
  }, z.core.$strip>>;
@@ -944,6 +979,9 @@ declare const AssistantConfigSchema: z.ZodObject<{
944
979
  failureBackoffBaseMs: z.ZodDefault<z.ZodNumber>;
945
980
  failureBackoffMaxMs: z.ZodDefault<z.ZodNumber>;
946
981
  maxFileSizeBytes: z.ZodDefault<z.ZodNumber>;
982
+ historyCompaction: z.ZodDefault<z.ZodObject<{
983
+ enabled: z.ZodDefault<z.ZodBoolean>;
984
+ }, z.core.$strip>>;
947
985
  interactiveGitTimeoutMs: z.ZodDefault<z.ZodNumber>;
948
986
  enrichmentQueueSize: z.ZodDefault<z.ZodNumber>;
949
987
  enrichmentConcurrency: z.ZodDefault<z.ZodNumber>;
@@ -1299,8 +1337,8 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1299
1337
  id: z.ZodString;
1300
1338
  conversationId: z.ZodString;
1301
1339
  status: z.ZodEnum<{
1302
- cancelled: "cancelled";
1303
1340
  completed: "completed";
1341
+ cancelled: "cancelled";
1304
1342
  failed: "failed";
1305
1343
  }>;
1306
1344
  exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -1434,6 +1472,11 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1434
1472
  summaryCharCount: z.ZodOptional<z.ZodNumber>;
1435
1473
  summaryHeaderCount: z.ZodOptional<z.ZodNumber>;
1436
1474
  summaryHadMemoryEcho: z.ZodOptional<z.ZodBoolean>;
1475
+ }, z.core.$strip>, z.ZodObject<{
1476
+ type: z.ZodLiteral<"context_window_usage">;
1477
+ conversationId: z.ZodString;
1478
+ tokens: z.ZodNumber;
1479
+ maxTokens: z.ZodNumber;
1437
1480
  }, z.core.$strip>, z.ZodObject<{
1438
1481
  type: z.ZodLiteral<"conversation_error">;
1439
1482
  conversationId: z.ZodString;
@@ -1967,9 +2010,15 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
1967
2010
  title: z.ZodString;
1968
2011
  body: z.ZodString;
1969
2012
  deliveryId: z.ZodOptional<z.ZodString>;
2013
+ correlationId: z.ZodOptional<z.ZodString>;
1970
2014
  deepLinkMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
1971
2015
  targetGuardianPrincipalId: z.ZodOptional<z.ZodString>;
1972
2016
  silent: z.ZodOptional<z.ZodBoolean>;
2017
+ remotePushDispatched: z.ZodOptional<z.ZodBoolean>;
2018
+ remotePushPlatforms: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2019
+ ios: "ios";
2020
+ android: "android";
2021
+ }>>>;
1973
2022
  }, z.core.$strip>, z.ZodObject<{
1974
2023
  type: z.ZodLiteral<"oauth_connect_result">;
1975
2024
  success: z.ZodBoolean;
@@ -2240,6 +2289,34 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2240
2289
  mayRequireJavaScript: z.ZodOptional<z.ZodBoolean>;
2241
2290
  }, z.core.$strip>>;
2242
2291
  }, z.core.$strip>>;
2292
+ answeredQuestion: z.ZodOptional<z.ZodObject<{
2293
+ requestId: z.ZodString;
2294
+ questions: z.ZodArray<z.ZodObject<{
2295
+ id: z.ZodString;
2296
+ question: z.ZodString;
2297
+ description: z.ZodOptional<z.ZodString>;
2298
+ options: z.ZodArray<z.ZodObject<{
2299
+ id: z.ZodString;
2300
+ label: z.ZodString;
2301
+ description: z.ZodOptional<z.ZodString>;
2302
+ }, z.core.$strip>>;
2303
+ freeTextPlaceholder: z.ZodOptional<z.ZodString>;
2304
+ }, z.core.$strip>>;
2305
+ responses: z.ZodArray<z.ZodObject<{
2306
+ questionId: z.ZodString;
2307
+ decision: z.ZodEnum<{
2308
+ option: "option";
2309
+ free_text: "free_text";
2310
+ skipped: "skipped";
2311
+ }>;
2312
+ optionId: z.ZodOptional<z.ZodString>;
2313
+ text: z.ZodOptional<z.ZodString>;
2314
+ }, z.core.$strip>>;
2315
+ overall: z.ZodEnum<{
2316
+ completed: "completed";
2317
+ closed: "closed";
2318
+ }>;
2319
+ }, z.core.$strip>>;
2243
2320
  errorCode: z.ZodOptional<z.ZodString>;
2244
2321
  completedAt: z.ZodOptional<z.ZodNumber>;
2245
2322
  }, z.core.$strip>, z.ZodObject<{
@@ -2268,6 +2345,12 @@ declare const AssistantEventEnvelopeSchema: z.ZodObject<{
2268
2345
  type: z.ZodLiteral<"ui_surface_dismiss">;
2269
2346
  conversationId: z.ZodString;
2270
2347
  surfaceId: z.ZodString;
2348
+ }, z.core.$strip>, z.ZodObject<{
2349
+ type: z.ZodLiteral<"ui_surface_pending">;
2350
+ conversationId: z.ZodString;
2351
+ surfaceType: z.ZodLiteral<"visual">;
2352
+ toolUseId: z.ZodString;
2353
+ messageId: z.ZodOptional<z.ZodString>;
2271
2354
  }, z.core.$strip>, z.ZodObject<{
2272
2355
  type: z.ZodLiteral<"ui_surface_show">;
2273
2356
  conversationId: z.ZodString;
@@ -2670,8 +2753,8 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2670
2753
  id: z.ZodString;
2671
2754
  conversationId: z.ZodString;
2672
2755
  status: z.ZodEnum<{
2673
- cancelled: "cancelled";
2674
2756
  completed: "completed";
2757
+ cancelled: "cancelled";
2675
2758
  failed: "failed";
2676
2759
  }>;
2677
2760
  exitCode: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
@@ -2805,6 +2888,11 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
2805
2888
  summaryCharCount: z.ZodOptional<z.ZodNumber>;
2806
2889
  summaryHeaderCount: z.ZodOptional<z.ZodNumber>;
2807
2890
  summaryHadMemoryEcho: z.ZodOptional<z.ZodBoolean>;
2891
+ }, z.core.$strip>, z.ZodObject<{
2892
+ type: z.ZodLiteral<"context_window_usage">;
2893
+ conversationId: z.ZodString;
2894
+ tokens: z.ZodNumber;
2895
+ maxTokens: z.ZodNumber;
2808
2896
  }, z.core.$strip>, z.ZodObject<{
2809
2897
  type: z.ZodLiteral<"conversation_error">;
2810
2898
  conversationId: z.ZodString;
@@ -3338,9 +3426,15 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3338
3426
  title: z.ZodString;
3339
3427
  body: z.ZodString;
3340
3428
  deliveryId: z.ZodOptional<z.ZodString>;
3429
+ correlationId: z.ZodOptional<z.ZodString>;
3341
3430
  deepLinkMetadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
3342
3431
  targetGuardianPrincipalId: z.ZodOptional<z.ZodString>;
3343
3432
  silent: z.ZodOptional<z.ZodBoolean>;
3433
+ remotePushDispatched: z.ZodOptional<z.ZodBoolean>;
3434
+ remotePushPlatforms: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3435
+ ios: "ios";
3436
+ android: "android";
3437
+ }>>>;
3344
3438
  }, z.core.$strip>, z.ZodObject<{
3345
3439
  type: z.ZodLiteral<"oauth_connect_result">;
3346
3440
  success: z.ZodBoolean;
@@ -3611,6 +3705,34 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3611
3705
  mayRequireJavaScript: z.ZodOptional<z.ZodBoolean>;
3612
3706
  }, z.core.$strip>>;
3613
3707
  }, z.core.$strip>>;
3708
+ answeredQuestion: z.ZodOptional<z.ZodObject<{
3709
+ requestId: z.ZodString;
3710
+ questions: z.ZodArray<z.ZodObject<{
3711
+ id: z.ZodString;
3712
+ question: z.ZodString;
3713
+ description: z.ZodOptional<z.ZodString>;
3714
+ options: z.ZodArray<z.ZodObject<{
3715
+ id: z.ZodString;
3716
+ label: z.ZodString;
3717
+ description: z.ZodOptional<z.ZodString>;
3718
+ }, z.core.$strip>>;
3719
+ freeTextPlaceholder: z.ZodOptional<z.ZodString>;
3720
+ }, z.core.$strip>>;
3721
+ responses: z.ZodArray<z.ZodObject<{
3722
+ questionId: z.ZodString;
3723
+ decision: z.ZodEnum<{
3724
+ option: "option";
3725
+ free_text: "free_text";
3726
+ skipped: "skipped";
3727
+ }>;
3728
+ optionId: z.ZodOptional<z.ZodString>;
3729
+ text: z.ZodOptional<z.ZodString>;
3730
+ }, z.core.$strip>>;
3731
+ overall: z.ZodEnum<{
3732
+ completed: "completed";
3733
+ closed: "closed";
3734
+ }>;
3735
+ }, z.core.$strip>>;
3614
3736
  errorCode: z.ZodOptional<z.ZodString>;
3615
3737
  completedAt: z.ZodOptional<z.ZodNumber>;
3616
3738
  }, z.core.$strip>, z.ZodObject<{
@@ -3639,6 +3761,12 @@ declare const AssistantEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3639
3761
  type: z.ZodLiteral<"ui_surface_dismiss">;
3640
3762
  conversationId: z.ZodString;
3641
3763
  surfaceId: z.ZodString;
3764
+ }, z.core.$strip>, z.ZodObject<{
3765
+ type: z.ZodLiteral<"ui_surface_pending">;
3766
+ conversationId: z.ZodString;
3767
+ surfaceType: z.ZodLiteral<"visual">;
3768
+ toolUseId: z.ZodString;
3769
+ messageId: z.ZodOptional<z.ZodString>;
3642
3770
  }, z.core.$strip>, z.ZodObject<{
3643
3771
  type: z.ZodLiteral<"ui_surface_show">;
3644
3772
  conversationId: z.ZodString;
@@ -4482,10 +4610,42 @@ export declare function listConversations(limit?: number, conversationType?: Con
4482
4610
  */
4483
4611
  export declare function listInstalledSkills(): Promise<ResolvedSkillEntry[]>;
4484
4612
 
4485
- declare const _LIVE_VOICE_SERVER_FRAME_TYPES: readonly ["ready", "busy", "speech_started", "utterance_end", "utterance_discarded", "stt_partial", "stt_final", "thinking", "assistant_text_delta", "tts_audio", "tts_done", "turn_cancelled", "minimize_room", "metrics", "archived", "error"];
4613
+ 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"];
4486
4614
 
4487
4615
  declare const LIVE_VOICE_TURN_DETECTION_MODES: readonly ["manual", "server_vad"];
4488
4616
 
4617
+ /**
4618
+ * What the assistant is doing inside a turn, as one short user-facing line.
4619
+ *
4620
+ * Exists because a live-voice turn can go silent for a long time while it
4621
+ * works, and the surfaces that show the session (the iOS Live Activity, and
4622
+ * the room) can otherwise only say "Thinking...". The label is composed here
4623
+ * rather than by each surface for the same reason phase wording is composed
4624
+ * once: the Live Activity has two independent drivers (this socket and an APNs
4625
+ * push the daemon dispatches), they must carry identical content, and the only
4626
+ * way to guarantee that is for both to be handed the same string.
4627
+ *
4628
+ * An empty `label` means "no current activity", which is what a turn's end
4629
+ * sends. Emitted only on change, never per tool result.
4630
+ */
4631
+ declare interface LiveVoiceActivityServerFrame extends LiveVoiceServerFrameBase {
4632
+ readonly type: "activity";
4633
+ readonly turnId: string;
4634
+ readonly label: string;
4635
+ /**
4636
+ * The confirmation this turn is blocked on, when the label describes a wait
4637
+ * rather than work in flight. Absent otherwise.
4638
+ *
4639
+ * It travels so that a surface outside the app — the Live Activity's
4640
+ * Approve/Deny buttons — can answer the request it was drawn against rather
4641
+ * than whatever is pending by the time the press lands. Content on a Lock
4642
+ * Screen can be seconds old, and a decision is the one thing that must not
4643
+ * be re-pointed when it is: the id lets a client drop a press aimed at a
4644
+ * request already answered, timed out, or superseded.
4645
+ */
4646
+ readonly approvalRequestId?: string;
4647
+ }
4648
+
4489
4649
  declare interface LiveVoiceArchivedServerFrame extends LiveVoiceServerFrameBase {
4490
4650
  readonly type: "archived";
4491
4651
  readonly conversationId: string;
@@ -4621,7 +4781,7 @@ declare interface LiveVoiceReadyServerFrame extends LiveVoiceServerFrameBase {
4621
4781
  readonly turnDetection?: LiveVoiceTurnDetectionMode;
4622
4782
  }
4623
4783
 
4624
- export declare type LiveVoiceServerFrame = LiveVoiceReadyServerFrame | LiveVoiceBusyServerFrame | LiveVoiceSpeechStartedServerFrame | LiveVoiceUtteranceEndServerFrame | LiveVoiceUtteranceDiscardedServerFrame | LiveVoiceSttPartialServerFrame | LiveVoiceSttFinalServerFrame | LiveVoiceThinkingServerFrame | LiveVoiceAssistantTextDeltaServerFrame | LiveVoiceTtsAudioServerFrame | LiveVoiceTtsDoneServerFrame | LiveVoiceTurnCancelledServerFrame | LiveVoiceMinimizeRoomServerFrame | LiveVoiceMetricsServerFrame | LiveVoiceArchivedServerFrame | LiveVoiceErrorServerFrame;
4784
+ export declare type LiveVoiceServerFrame = LiveVoiceReadyServerFrame | LiveVoiceBusyServerFrame | LiveVoiceSpeechStartedServerFrame | LiveVoiceUtteranceEndServerFrame | LiveVoiceUtteranceDiscardedServerFrame | LiveVoiceSttPartialServerFrame | LiveVoiceSttFinalServerFrame | LiveVoiceThinkingServerFrame | LiveVoiceActivityServerFrame | LiveVoiceAssistantTextDeltaServerFrame | LiveVoiceTtsAudioServerFrame | LiveVoiceTtsDoneServerFrame | LiveVoiceTurnCancelledServerFrame | LiveVoiceMinimizeRoomServerFrame | LiveVoiceMetricsServerFrame | LiveVoiceArchivedServerFrame | LiveVoiceErrorServerFrame;
4625
4785
 
4626
4786
  declare interface LiveVoiceServerFrameBase {
4627
4787
  readonly type: LiveVoiceServerFrameType;
@@ -4849,7 +5009,10 @@ declare const messageMetadataSchema: z.ZodObject<{
4849
5009
  provenanceRequesterIdentifier: z.ZodOptional<z.ZodString>;
4850
5010
  automated: z.ZodOptional<z.ZodBoolean>;
4851
5011
  hidden: z.ZodOptional<z.ZodBoolean>;
5012
+ voiceSessionTurn: z.ZodOptional<z.ZodBoolean>;
4852
5013
  messageKind: z.ZodOptional<z.ZodString>;
5014
+ providerErrorCode: z.ZodOptional<z.ZodString>;
5015
+ providerErrorCategory: z.ZodOptional<z.ZodString>;
4853
5016
  backgroundToolCompletion: z.ZodOptional<z.ZodObject<{
4854
5017
  id: z.ZodString;
4855
5018
  toolName: z.ZodString;
@@ -4857,8 +5020,8 @@ declare const messageMetadataSchema: z.ZodObject<{
4857
5020
  command: z.ZodString;
4858
5021
  startedAt: z.ZodNumber;
4859
5022
  status: z.ZodEnum<{
4860
- cancelled: "cancelled";
4861
5023
  completed: "completed";
5024
+ cancelled: "cancelled";
4862
5025
  failed: "failed";
4863
5026
  }>;
4864
5027
  exitCode: z.ZodNullable<z.ZodNumber>;
@@ -5313,6 +5476,8 @@ declare interface ProcessEntry extends BaseSubscriberEntry {
5313
5476
 
5314
5477
  export declare interface Provider {
5315
5478
  name: string;
5479
+ /** Connection route whose credentials this provider instance uses. */
5480
+ routeAttribution?: ProviderRouteAttribution;
5316
5481
  /**
5317
5482
  * Provider key used by the local token estimator to select model-family
5318
5483
  * specific rules (e.g. Anthropic's `width * height / 750` image sizing).
@@ -5366,6 +5531,8 @@ export declare interface Provider {
5366
5531
  countInputTokens?(messages: Message[], systemPrompt: string, tools?: ToolDefinition_2[]): Promise<number>;
5367
5532
  }
5368
5533
 
5534
+ declare type ProviderCredentialSource = "byok" | "no-auth" | "oauth-subscription" | "vellum-managed";
5535
+
5369
5536
  export declare type ProviderEvent = {
5370
5537
  type: "text_delta";
5371
5538
  text: string;
@@ -5436,6 +5603,18 @@ export declare interface ProviderResponse {
5436
5603
  rawResponse?: unknown;
5437
5604
  }
5438
5605
 
5606
+ declare interface ProviderRouteAttribution {
5607
+ connectionName?: string;
5608
+ profileName?: string;
5609
+ isManagedRoute?: boolean;
5610
+ /**
5611
+ * Credential surface used for this request. Finer than `isManagedRoute`:
5612
+ * it separates personal provider keys, keyless endpoints, and subscription
5613
+ * logins from each other so error copy can name what the user must fix.
5614
+ */
5615
+ credentialSource?: ProviderCredentialSource;
5616
+ }
5617
+
5439
5618
  /** Callback for proxy policy decisions requiring user confirmation. Returns true if approved. */
5440
5619
  declare type ProxyApprovalCallback = (request: ProxyApprovalRequest) => Promise<boolean>;
5441
5620
 
@@ -5532,7 +5711,7 @@ declare type ResolutionFallbackReason = "missing" | "disabled" | "incomplete";
5532
5711
  * 3. `llm.callSites[callSite].profile` (the call site's named profile)
5533
5712
  * 4. `CALL_SITE_DEFAULTS[callSite].profile` intent resolved through
5534
5713
  * `llm.defaultProvider`
5535
- * 5. balanced intent through `llm.defaultProvider` — the code-owned anchor
5714
+ * 5. balanced intent through `llm.defaultProvider`: the code-owned anchor
5536
5715
  * for profileless call sites, or when nothing above is usable
5537
5716
  *
5538
5717
  * A winner must carry its own `provider` AND `model`: the base layer's schema
@@ -6768,6 +6947,14 @@ export declare interface ToolExecutionResult {
6768
6947
  /** Structured activity metadata for client rendering (web search, web fetch, etc).
6769
6948
  * Populated by daemon-internal tools; plugins must not set this. */
6770
6949
  activityMetadata?: ToolActivityMetadata;
6950
+ /**
6951
+ * Typed side channel from the `ask_question` executor to the agent loop: the
6952
+ * questions asked and the answers the user gave. The loop forwards it on the
6953
+ * `tool_result` event and persists it on the tool_use block, so the answered
6954
+ * card renders live and survives a history reopen instead of the decision
6955
+ * disappearing with the interactive prompt. Set only by `ask_question`.
6956
+ */
6957
+ answeredQuestion?: AnsweredQuestion;
6771
6958
  }
6772
6959
 
6773
6960
  export declare interface ToolResultContent {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/plugin-api",
3
- "version": "0.11.1",
3
+ "version": "0.11.2-dev.202608042227.b54139c",
4
4
  "description": "Public TypeScript authoring contract for Vellum assistant plugins.",
5
5
  "license": "MIT",
6
6
  "type": "module",