@vellumai/plugin-api 0.10.5 → 0.10.6-dev.202607062043.72bc40b

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 +186 -44
  2. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -533,6 +533,30 @@ declare interface BaseAssistantEvent<TMessage = unknown> {
533
533
  message: TMessage;
534
534
  }
535
535
 
536
+ /**
537
+ * Capabilities shared by every chain-hook context (`user-prompt-submit`,
538
+ * `post-compact`, `post-tool-use`, `stop`, `pre-model-call`,
539
+ * `post-model-call`).
540
+ *
541
+ * Both are stamped onto each hook's draft by the pipeline (`runHook`) before
542
+ * the hook runs, bound to that hook's identity — dispatching call sites
543
+ * construct the `XInputContext` shapes and never supply these.
544
+ */
545
+ declare interface BaseHookContext {
546
+ /**
547
+ * Logger bound to the emitting hook — pre-tagged with the hook name and
548
+ * owning plugin (plus `conversationId` / `requestId` when the dispatching
549
+ * context carries them), so hook log lines are attributed without manual
550
+ * tagging.
551
+ */
552
+ readonly logger: PluginLogger;
553
+ /**
554
+ * Per-hook `hook_event` emitter, bound to this hook's owner — see
555
+ * {@link HookBroadcast}.
556
+ */
557
+ readonly broadcast: HookBroadcast;
558
+ }
559
+
536
560
  declare interface BaseSubscriberEntry {
537
561
  filter: AssistantEventFilter;
538
562
  callback: AssistantEventCallback;
@@ -987,6 +1011,33 @@ declare interface ContextCompacted {
987
1011
  summaryHadMemoryEcho?: boolean;
988
1012
  }
989
1013
 
1014
+ /**
1015
+ * The full `conversation-deleted` context a hook receives — the dispatching
1016
+ * call site's {@link ConversationDeletedInputContext} plus the
1017
+ * pipeline-stamped {@link BaseHookContext} capabilities.
1018
+ */
1019
+ export declare interface ConversationDeletedContext extends ConversationDeletedInputContext, BaseHookContext {
1020
+ }
1021
+
1022
+ /**
1023
+ * Context passed to the `conversation-deleted` hook. Fires once per deleted
1024
+ * conversation — from the shared delete primitives, so every delete caller
1025
+ * (route, retrospective cleanup, GC) dispatches it — after the conversation's
1026
+ * rows are removed.
1027
+ *
1028
+ * The dispatch is fire-and-forget: the delete primitives are synchronous and
1029
+ * do not wait for the chain, so hooks run concurrently with whatever the
1030
+ * caller does after the delete and must not assume any ordering relative to
1031
+ * it. By the time a hook runs, the conversation's rows (messages, segments,
1032
+ * attachments, the conversation itself) are gone — a hook can only key its
1033
+ * cleanup on the id. The default memory plugin contributes a hook here that
1034
+ * fails its own still-pending background jobs referencing the conversation.
1035
+ */
1036
+ declare interface ConversationDeletedInputContext {
1037
+ /** ID of the conversation that was deleted. */
1038
+ readonly conversationId: string;
1039
+ }
1040
+
990
1041
  declare type ConversationErrorEvent = z.infer<typeof ConversationErrorEventSchema>;
991
1042
 
992
1043
  declare const ConversationErrorEventSchema: z.ZodObject<{
@@ -1827,6 +1878,36 @@ declare const HomeFeedUpdatedEventSchema: z.ZodObject<{
1827
1878
 
1828
1879
  declare type _HomeServerMessages = RelationshipStateUpdatedEvent | HomeFeedUpdatedEvent;
1829
1880
 
1881
+ /**
1882
+ * Emit a `hook_event` to any UI watching the conversation the hook runs in —
1883
+ * e.g. progress while the hook does work the user can feel (memory
1884
+ * selection). The daemon stamps the conversation, the hook name, and the
1885
+ * emitting hook's owner; the hook supplies only `detail`, an arbitrary
1886
+ * JSON-serializable record whose shape it and its client renderer agree on.
1887
+ *
1888
+ * Best-effort and fire-and-forget: it never blocks or fails the turn, and
1889
+ * cannot emit any other event type or target another conversation — the emit
1890
+ * surface is bound to the turn. Contexts without a `conversationId` emit an
1891
+ * unscoped `hook_event`.
1892
+ */
1893
+ export declare type HookBroadcast = (detail: Record<string, unknown>) => void;
1894
+
1895
+ declare type HookEvent = z.infer<typeof HookEventSchema>;
1896
+
1897
+ declare const HookEventSchema: z.ZodObject<{
1898
+ type: z.ZodLiteral<"hook_event">;
1899
+ conversationId: z.ZodOptional<z.ZodString>;
1900
+ hookName: z.ZodString;
1901
+ owner: z.ZodObject<{
1902
+ kind: z.ZodEnum<{
1903
+ plugin: "plugin";
1904
+ workspace: "workspace";
1905
+ }>;
1906
+ id: z.ZodString;
1907
+ }, z.core.$strip>;
1908
+ detail: z.ZodRecord<z.ZodString, z.ZodUnknown>;
1909
+ }, z.core.$strip>;
1910
+
1830
1911
  /**
1831
1912
  * A plugin lifecycle hook. Receives a per-lifecycle context shape and may
1832
1913
  * either mutate `ctx` in place (returning `void`) or return a *partial*
@@ -1846,10 +1927,12 @@ declare type _HomeServerMessages = RelationshipStateUpdatedEvent | HomeFeedUpdat
1846
1927
  * - `init` — {@link InitContext}
1847
1928
  * - `shutdown` — {@link ShutdownContext}
1848
1929
  * - `user-prompt-submit` — {@link UserPromptSubmitContext}
1930
+ * - `post-compact` — {@link PostCompactContext}
1849
1931
  * - `pre-model-call` — {@link PreModelCallContext}
1850
1932
  * - `post-tool-use` — {@link PostToolUseContext}
1851
1933
  * - `stop` — {@link StopContext}
1852
1934
  * - `post-model-call` — {@link PostModelCallContext}
1935
+ * - `conversation-deleted` — {@link ConversationDeletedContext}
1853
1936
  */
1854
1937
  export declare type HookFunction<TCtx = unknown> = (ctx: TCtx) => Promise<Partial<TCtx> | void>;
1855
1938
 
@@ -1887,6 +1970,8 @@ export declare const HOOKS: {
1887
1970
  readonly POST_MODEL_CALL: "post-model-call";
1888
1971
  /** Fires after the loop successfully compacts a conversation mid-turn. */
1889
1972
  readonly POST_COMPACT: "post-compact";
1973
+ /** Fires once per deleted conversation, after its rows are removed. Fire-and-forget cleanup signal — hooks run async with no ordering guarantee relative to the caller. */
1974
+ readonly CONVERSATION_DELETED: "conversation-deleted";
1890
1975
  };
1891
1976
 
1892
1977
  declare interface HostAppControlCancel {
@@ -2666,6 +2751,7 @@ declare const OpenPanelEventSchema: z.ZodObject<{
2666
2751
  panelType: z.ZodString;
2667
2752
  data: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
2668
2753
  conversationId: z.ZodOptional<z.ZodString>;
2754
+ surfaceId: z.ZodOptional<z.ZodString>;
2669
2755
  }, z.core.$strip>;
2670
2756
 
2671
2757
  declare type OpenUrlEvent = z.infer<typeof OpenUrlEventSchema>;
@@ -2739,6 +2825,14 @@ declare interface PongMessage {
2739
2825
  type: "pong";
2740
2826
  }
2741
2827
 
2828
+ /**
2829
+ * The full `post-compact` context a hook receives — the dispatching call
2830
+ * site's {@link PostCompactInputContext} plus the pipeline-stamped
2831
+ * {@link BaseHookContext} capabilities.
2832
+ */
2833
+ export declare interface PostCompactContext extends PostCompactInputContext, BaseHookContext {
2834
+ }
2835
+
2742
2836
  /**
2743
2837
  * Context passed to the `post-compact` hook. Fires after the agent loop
2744
2838
  * compacts a conversation mid-turn — once the running history has been
@@ -2753,12 +2847,12 @@ declare interface PongMessage {
2753
2847
  * their own injected context the same way.
2754
2848
  *
2755
2849
  * The hook re-injects by mutating `history` in place (or returning a new
2756
- * context with a replacement `history`) — see {@link HookFunction}'s
2850
+ * context with a replacement `history`) — see `HookFunction`'s
2757
2851
  * polymorphic return shape. The agent loop reads the settled `history` back off
2758
2852
  * the context and resumes the turn from it. Multiple plugins' hooks chain in
2759
2853
  * registration order, each seeing the previous plugin's edits.
2760
2854
  */
2761
- export declare interface PostCompactContext {
2855
+ declare interface PostCompactInputContext {
2762
2856
  /**
2763
2857
  * The compacted message history to re-inject onto. Hooks mutate this in
2764
2858
  * place (or return a new context with a replacement) to re-apply context
@@ -2797,6 +2891,28 @@ export declare interface PostCompactContext {
2797
2891
  readonly injectionMode?: "full" | "minimal";
2798
2892
  }
2799
2893
 
2894
+ /**
2895
+ * The full `post-model-call` context a hook receives — the dispatching call
2896
+ * site's {@link PostModelCallInputContext} plus the pipeline-stamped
2897
+ * {@link BaseHookContext} capabilities.
2898
+ */
2899
+ export declare interface PostModelCallContext extends PostModelCallInputContext, BaseHookContext {
2900
+ }
2901
+
2902
+ /**
2903
+ * Binary outcome of the `post-model-call` hook. The agent loop seeds it to
2904
+ * `"stop"` and acts on the value the chain settles on:
2905
+ *
2906
+ * - `"stop"` — accept the model-call outcome. On a finalized reply the loop
2907
+ * keeps the (possibly transformed) message; on a rejection it
2908
+ * surfaces the error. This is the default.
2909
+ * - `"continue"` — re-query the model. The hook is responsible for leaving
2910
+ * {@link PostModelCallContext.messages} as the history the next
2911
+ * iteration should send (append a follow-up turn, or replace
2912
+ * the array with a repaired one).
2913
+ */
2914
+ export declare type PostModelCallDecision = "continue" | "stop";
2915
+
2800
2916
  /**
2801
2917
  * Context passed to the `post-model-call` hook. Fires at every model-call
2802
2918
  * outcome — the seam where the loop reacts to what the provider returned:
@@ -2828,7 +2944,7 @@ export declare interface PostCompactContext {
2828
2944
  * the outcome is treated as `"stop"`). Multiple plugins' hooks chain in
2829
2945
  * registration order — each sees the previous hook's `decision` and mutations.
2830
2946
  */
2831
- export declare interface PostModelCallContext {
2947
+ declare interface PostModelCallInputContext {
2832
2948
  /** Conversation ID the message belongs to. */
2833
2949
  readonly conversationId: string;
2834
2950
  /** The call site this message serves — `"mainAgent"` for the user-facing reply; `null` when untagged. */
@@ -2871,23 +2987,15 @@ export declare interface PostModelCallContext {
2871
2987
  * actionable outcomes (see the interface docstring).
2872
2988
  */
2873
2989
  decision: PostModelCallDecision;
2874
- /** Logger scoped to the current turn (tag structured fields with `{ plugin }`). */
2875
- readonly logger: PluginLogger;
2876
2990
  }
2877
2991
 
2878
2992
  /**
2879
- * Binary outcome of the `post-model-call` hook. The agent loop seeds it to
2880
- * `"stop"` and acts on the value the chain settles on:
2881
- *
2882
- * - `"stop"` — accept the model-call outcome. On a finalized reply the loop
2883
- * keeps the (possibly transformed) message; on a rejection it
2884
- * surfaces the error. This is the default.
2885
- * - `"continue"` — re-query the model. The hook is responsible for leaving
2886
- * {@link PostModelCallContext.messages} as the history the next
2887
- * iteration should send (append a follow-up turn, or replace
2888
- * the array with a repaired one).
2993
+ * The full `post-tool-use` context a hook receives the dispatching call
2994
+ * site's {@link PostToolUseInputContext} plus the pipeline-stamped
2995
+ * {@link BaseHookContext} capabilities.
2889
2996
  */
2890
- export declare type PostModelCallDecision = "continue" | "stop";
2997
+ export declare interface PostToolUseContext extends PostToolUseInputContext, BaseHookContext {
2998
+ }
2891
2999
 
2892
3000
  /**
2893
3001
  * Context passed to the `post-tool-use` hook. Fires once per tool result —
@@ -2897,7 +3005,7 @@ export declare type PostModelCallDecision = "continue" | "stop";
2897
3005
  *
2898
3006
  * The hook may transform the result either by mutating `toolResponse` in
2899
3007
  * place (e.g. reassigning `toolResponse.content`) or by returning a new
2900
- * context with a fresh `toolResponse` — see {@link HookFunction}'s
3008
+ * context with a fresh `toolResponse` — see `HookFunction`'s
2901
3009
  * polymorphic return shape. The daemon threads the final `toolResponse`
2902
3010
  * into the provider-bound history.
2903
3011
  *
@@ -2909,7 +3017,7 @@ export declare type PostModelCallDecision = "continue" | "stop";
2909
3017
  * can swap in a smarter strategy (e.g. a summarizer) or observe results for
2910
3018
  * side effects.
2911
3019
  */
2912
- export declare interface PostToolUseContext {
3020
+ declare interface PostToolUseInputContext {
2913
3021
  /** Conversation ID the tool ran on. */
2914
3022
  readonly conversationId: string;
2915
3023
  /**
@@ -2969,12 +3077,14 @@ export declare interface PostToolUseContext {
2969
3077
  * receiving a precomputed limit.
2970
3078
  */
2971
3079
  readonly maxInputTokens: number;
2972
- /**
2973
- * Logger scoped to the current turn. The same instance is shared by
2974
- * every hook in the chain, so plugins should tag their structured log
2975
- * fields (e.g. `{ plugin: "<name>" }`) for attribution.
2976
- */
2977
- readonly logger: PluginLogger;
3080
+ }
3081
+
3082
+ /**
3083
+ * The full `pre-model-call` context a hook receives — the dispatching call
3084
+ * site's {@link PreModelCallInputContext} plus the pipeline-stamped
3085
+ * {@link BaseHookContext} capabilities.
3086
+ */
3087
+ export declare interface PreModelCallContext extends PreModelCallInputContext, BaseHookContext {
2978
3088
  }
2979
3089
 
2980
3090
  /**
@@ -2990,7 +3100,7 @@ export declare interface PostToolUseContext {
2990
3100
  * Mutate the context in place or return a new one; throwing is contained by the
2991
3101
  * loop (the call proceeds with the original request).
2992
3102
  */
2993
- export declare interface PreModelCallContext {
3103
+ declare interface PreModelCallInputContext {
2994
3104
  /** Conversation ID the call belongs to. */
2995
3105
  readonly conversationId: string;
2996
3106
  /**
@@ -3029,8 +3139,6 @@ export declare interface PreModelCallContext {
3029
3139
  * redaction that needs the full message — instead of leaking the raw stream.
3030
3140
  */
3031
3141
  deferAssistantOutput: boolean;
3032
- /** Logger scoped to the current turn (tag structured fields with `{ plugin }`). */
3033
- readonly logger: PluginLogger;
3034
3142
  }
3035
3143
 
3036
3144
  declare interface ProcessEntry extends BaseSubscriberEntry {
@@ -3334,6 +3442,14 @@ declare interface SecretPromptResult {
3334
3442
  delivery: SecretDelivery;
3335
3443
  /** When set, the prompt could not be delivered and the value is null due to a delivery failure (not user cancellation). */
3336
3444
  error?: "unsupported_channel";
3445
+ /**
3446
+ * Why `value` is null. `"cancelled"` = the user explicitly dismissed the
3447
+ * prompt (a valid flow, not a failure); `"timed_out"` = no response within
3448
+ * the permission-timeout window. Only meaningful when `value` is null and
3449
+ * `error` is unset. Lets callers distinguish a deliberate cancel from a
3450
+ * genuine failure instead of treating both as an error.
3451
+ */
3452
+ reason?: "cancelled" | "timed_out";
3337
3453
  }
3338
3454
 
3339
3455
  declare type SecretRequestEvent = z.infer<typeof SecretRequestEventSchema>;
@@ -3451,7 +3567,7 @@ declare interface SensitiveOutputBinding {
3451
3567
 
3452
3568
  declare type SensitiveOutputKind = "invite_code";
3453
3569
 
3454
- declare type ServerMessage = _ConversationsServerMessages | _MessagesServerMessages | _SurfacesServerMessages | _SkillsServerMessages | _AppsServerMessages | _IntegrationsServerMessages | _ComputerUseServerMessages | _ContactsServerMessages | _WorkItemsServerMessages | _SubagentsServerMessages | _DocumentsServerMessages | _DocumentCommentsServerMessages | _GuardianActionsServerMessages | _SyncInvalidationServerMessages | _HomeServerMessages | _HostAppControlServerMessages | _HostBashServerMessages | _HostBrowserServerMessages | _HostCuServerMessages | _HostFileServerMessages | _HostTransferServerMessages | _MemoryServerMessages | _WorkspaceServerMessages | _SchedulesServerMessages | _SettingsServerMessages | _DiagnosticsServerMessages | _InboxServerMessages | _NotificationsServerMessages | _UpgradesServerMessages | _AcpServerMessages | _BackgroundToolsServerMessages | _BookmarksServerMessages | _WorkflowsServerMessages | DiskPressureStatusChangedEvent | SubagentEvent;
3570
+ declare type ServerMessage = _ConversationsServerMessages | _MessagesServerMessages | _SurfacesServerMessages | _SkillsServerMessages | _AppsServerMessages | _IntegrationsServerMessages | _ComputerUseServerMessages | _ContactsServerMessages | _WorkItemsServerMessages | _SubagentsServerMessages | _DocumentsServerMessages | _DocumentCommentsServerMessages | _GuardianActionsServerMessages | _SyncInvalidationServerMessages | _HomeServerMessages | _HostAppControlServerMessages | _HostBashServerMessages | _HostBrowserServerMessages | _HostCuServerMessages | _HostFileServerMessages | _HostTransferServerMessages | _MemoryServerMessages | _WorkspaceServerMessages | _SchedulesServerMessages | _SettingsServerMessages | _DiagnosticsServerMessages | _InboxServerMessages | _NotificationsServerMessages | _UpgradesServerMessages | _AcpServerMessages | _BackgroundToolsServerMessages | _BookmarksServerMessages | _WorkflowsServerMessages | DiskPressureStatusChangedEvent | HookEvent | SubagentEvent;
3455
3571
 
3456
3572
  export declare interface ServerToolUseContent {
3457
3573
  type: "server_tool_use";
@@ -3551,8 +3667,11 @@ export declare interface ShutdownContext {
3551
3667
  * - `uninstall` — the plugin's directory was removed at runtime.
3552
3668
  * - `disable` — the plugin was disabled at runtime (e.g. a `.disabled`
3553
3669
  * sentinel was added, or a feature flag turned it off).
3670
+ * - `reload` — a source file inside the plugin directory changed and the
3671
+ * plugin is being redeployed in place; the old version's `shutdown` runs
3672
+ * before the new version is imported and its `init` fires.
3554
3673
  */
3555
- declare type ShutdownReason = "shutdown" | "uninstall" | "disable";
3674
+ declare type ShutdownReason = "shutdown" | "uninstall" | "disable" | "reload";
3556
3675
 
3557
3676
  declare interface SignBundlePayloadRequest {
3558
3677
  type: "sign_bundle_payload";
@@ -3672,6 +3791,14 @@ declare interface SoundsConfigUpdated {
3672
3791
  type: "sounds_config_updated";
3673
3792
  }
3674
3793
 
3794
+ /**
3795
+ * The full `stop` context a hook receives — the dispatching call site's
3796
+ * {@link StopInputContext} plus the pipeline-stamped {@link BaseHookContext}
3797
+ * capabilities.
3798
+ */
3799
+ export declare interface StopContext extends StopInputContext, BaseHookContext {
3800
+ }
3801
+
3675
3802
  /**
3676
3803
  * Context passed to the `stop` hook — the loop's definitive terminal hook.
3677
3804
  *
@@ -3692,7 +3819,7 @@ declare interface SoundsConfigUpdated {
3692
3819
  *
3693
3820
  * Multiple plugins' hooks chain in registration order over the same context.
3694
3821
  */
3695
- export declare interface StopContext {
3822
+ declare interface StopInputContext {
3696
3823
  /** Conversation ID the run belongs to. */
3697
3824
  readonly conversationId: string;
3698
3825
  /**
@@ -3715,12 +3842,6 @@ export declare interface StopContext {
3715
3842
  * control transfer that re-enters the loop and so never reaches this hook.
3716
3843
  */
3717
3844
  readonly exitReason: AgentLoopExitReason;
3718
- /**
3719
- * Logger scoped to the current turn. The same instance is shared by
3720
- * every hook in the chain, so plugins should tag their structured log
3721
- * fields (e.g. `{ plugin: "<name>" }`) for attribution.
3722
- */
3723
- readonly logger: PluginLogger;
3724
3845
  }
3725
3846
 
3726
3847
  declare interface SubagentDetailResponse {
@@ -3943,6 +4064,13 @@ export declare interface ToolContext {
3943
4064
  * @legacy
3944
4065
  */
3945
4066
  allowedToolNames?: Set<string>;
4067
+ /**
4068
+ * When the conversation runs as a subagent, the parent-imposed tool
4069
+ * allowlist (see `SubagentRoleConfig.allowedTools`). Carried so
4070
+ * availability errors can name the allowlist as the gate instead of
4071
+ * suggesting a skill load that cannot widen it.
4072
+ */
4073
+ subagentAllowedTools?: ReadonlySet<string>;
3946
4074
  /**
3947
4075
  * True when this turn is restricted to storage cleanup-safe tools.
3948
4076
  * @legacy
@@ -4827,6 +4955,14 @@ declare const UserMessageEchoEventSchema: z.ZodObject<{
4827
4955
  clientMessageId: z.ZodOptional<z.ZodString>;
4828
4956
  }, z.core.$strict>;
4829
4957
 
4958
+ /**
4959
+ * The full `user-prompt-submit` context a hook receives — the dispatching
4960
+ * call site's {@link UserPromptSubmitInputContext} plus the pipeline-stamped
4961
+ * {@link BaseHookContext} capabilities.
4962
+ */
4963
+ export declare interface UserPromptSubmitContext extends UserPromptSubmitInputContext, BaseHookContext {
4964
+ }
4965
+
4830
4966
  /**
4831
4967
  * Context passed to the `user-prompt-submit` hook. Fires once per user
4832
4968
  * turn, after the agent loop has prepared the message list (PKB / NOW /
@@ -4836,7 +4972,7 @@ declare const UserMessageEchoEventSchema: z.ZodObject<{
4836
4972
  *
4837
4973
  * The hook may transform `latestMessages` either by mutating it in place
4838
4974
  * (`push` / `splice` / `length = 0`) or by returning a new context with
4839
- * a fresh `latestMessages` array — see {@link HookFunction}'s polymorphic
4975
+ * a fresh `latestMessages` array — see `HookFunction`'s polymorphic
4840
4976
  * return shape. The daemon threads the final `latestMessages` value into
4841
4977
  * `agentLoop.run()` as the run-messages argument.
4842
4978
  *
@@ -4849,7 +4985,7 @@ declare const UserMessageEchoEventSchema: z.ZodObject<{
4849
4985
  * hook sees the previous plugin's mutations (whether by reassignment or
4850
4986
  * in-place mutation).
4851
4987
  */
4852
- export declare interface UserPromptSubmitContext {
4988
+ declare interface UserPromptSubmitInputContext {
4853
4989
  /** Conversation ID the user prompt was submitted on. */
4854
4990
  readonly conversationId: string;
4855
4991
  /**
@@ -4857,6 +4993,14 @@ export declare interface UserPromptSubmitContext {
4857
4993
  * attach turn-scoped metadata to the originating message (e.g. recording an
4858
4994
  * injected memory block so it survives a conversation reload) key off this
4859
4995
  * row id rather than the in-memory message arrays, whose entries carry no id.
4996
+ *
4997
+ * @deprecated This field is always identical to {@link requestId}; use
4998
+ * `requestId` instead. Every path that starts an agent loop persists the
4999
+ * triggering user message under the turn's request ID before running, so
5000
+ * the message row id and the request's correlation ID are the same UUID.
5001
+ * This holds for the standard submit, queue-drain, subagent, voice, wake,
5002
+ * and conversation-analysis paths alike. This field will be removed in a
5003
+ * future API version.
4860
5004
  */
4861
5005
  readonly userMessageId: string;
4862
5006
  /**
@@ -4864,6 +5008,10 @@ export declare interface UserPromptSubmitContext {
4864
5008
  * runtime injection forward it onto the injector turn context so the
4865
5009
  * assembled blocks are attributed to the originating request; it is fixed
4866
5010
  * for the turn and cannot be recovered from the message arrays.
5011
+ *
5012
+ * As of the requestId/userMessageId merge, this value is also the
5013
+ * persisted row ID of the user message, so hooks that previously
5014
+ * keyed off {@link userMessageId} can use `requestId` directly.
4867
5015
  */
4868
5016
  readonly requestId: string;
4869
5017
  /**
@@ -4911,12 +5059,6 @@ export declare interface UserPromptSubmitContext {
4911
5059
  * may mutate this in place or replace it by returning a new context.
4912
5060
  */
4913
5061
  latestMessages: Message[];
4914
- /**
4915
- * Logger scoped to the current turn. The same instance is shared by
4916
- * every hook in the chain, so plugins should tag their structured log
4917
- * fields (e.g. `{ plugin: "<name>" }`) for attribution.
4918
- */
4919
- readonly logger: PluginLogger;
4920
5062
  }
4921
5063
 
4922
5064
  declare interface VellumSlimSkill extends SlimSkillBase {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/plugin-api",
3
- "version": "0.10.5",
3
+ "version": "0.10.6-dev.202607062043.72bc40b",
4
4
  "description": "Public TypeScript authoring contract for Vellum assistant plugins.",
5
5
  "license": "MIT",
6
6
  "type": "module",