@vellumai/plugin-api 0.11.7-dev.202608301911.907e905 → 0.11.7-dev.202608302213.8788231

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 +53 -5
  2. package/index.js +2 -0
  3. package/package.json +1 -1
package/index.d.ts CHANGED
@@ -4030,6 +4030,26 @@ export declare interface AssistantEventSubscription {
4030
4030
  readonly connectionId: string;
4031
4031
  }
4032
4032
 
4033
+ /**
4034
+ * The `_attachmentId` property as a spreadable fragment, or nothing when there
4035
+ * is no usable id.
4036
+ *
4037
+ * Every producer of a media block faces the same choice: it either knows the
4038
+ * attachment row the block came from, or it does not, and the field has to be
4039
+ * absent rather than present-and-empty in the second case. This helper is the
4040
+ * one place that decision lives, so every producer answers it the same way.
4041
+ * Callers pass whatever id they hold: the source block's own
4042
+ * ({@link ImageContent._attachmentId}) when carrying it across a rebuild, or an
4043
+ * upload's row id when stamping a fresh block.
4044
+ *
4045
+ * Empty counts as absent, matching the read side, which requires a non-empty
4046
+ * string before it will treat the field as an id (see
4047
+ * `daemon/handlers/shared.ts`).
4048
+ */
4049
+ export declare function attachmentIdFragment(attachmentId: string | undefined): {
4050
+ _attachmentId?: string;
4051
+ };
4052
+
4033
4053
  export declare interface AudioEmbeddingInput {
4034
4054
  type: "audio";
4035
4055
  data: Buffer;
@@ -4744,6 +4764,19 @@ declare type HostProxyCapability = (typeof HOST_PROXY_CAPABILITIES)[number];
4744
4764
  export declare interface ImageContent {
4745
4765
  type: "image";
4746
4766
  source: MediaSource_2;
4767
+ /**
4768
+ * Internal id linking a base64 image block to a row in the attachments table,
4769
+ * the same correlation {@link FileContent._attachmentId} carries. A live turn
4770
+ * sends its uploads inline while persisting them as references, so this is
4771
+ * the only handle on the in-memory copy of an image whose stored form is a
4772
+ * `workspace_ref`; camera-frame retention matches on it. Redundant once the
4773
+ * block is a reference (use `source.attachmentId`).
4774
+ *
4775
+ * Never reaches a provider: every client builds its image payload out of
4776
+ * `source` alone (see the `case "image"` arms of the Anthropic, Gemini, and
4777
+ * both OpenAI clients), so top-level fields are dropped by construction.
4778
+ */
4779
+ _attachmentId?: string;
4747
4780
  }
4748
4781
 
4749
4782
  export declare interface ImageEmbeddingInput {
@@ -5032,11 +5065,11 @@ declare interface LiveVoiceErrorServerFrame extends LiveVoiceServerFrameBase {
5032
5065
  * daemons predating the field.
5033
5066
  *
5034
5067
  * It exists so an `unknown_type` is attributable. A client that sends more
5035
- * than one optional frame (today: `update_config` and `attach_image`) gets
5036
- * the same code for either, and without this has to assume which one was
5037
- * refused. The wrong assumption is silent in both directions: settings stop
5038
- * applying for a session, or a photo the user watched themselves take is
5039
- * dropped with nothing said.
5068
+ * than one optional frame (today: `update_config`, `attach_image`,
5069
+ * `attach_frame`, and `text`) gets the same code for any of them, and
5070
+ * without this has to assume which one was refused. The wrong assumption is
5071
+ * silent in both directions: settings stop applying for a session, or a
5072
+ * photo the user watched themselves take is dropped with nothing said.
5040
5073
  */
5041
5074
  readonly frameType?: string;
5042
5075
  /**
@@ -5314,6 +5347,21 @@ declare const LLMCallSiteEnum: z.ZodEnum<{
5314
5347
  workflowLeaf: "workflowLeaf";
5315
5348
  }>;
5316
5349
 
5350
+ /**
5351
+ * The attachment row a media block came from, whichever of the two shapes it
5352
+ * is in, or undefined for a block that came from none (tool-generated and
5353
+ * assistant-authored media).
5354
+ *
5355
+ * A reference names its row on `source.attachmentId`; an inline block has
5356
+ * nowhere to put it but the top-level `_attachmentId`. Both are the same fact,
5357
+ * so anything asking "which attachment is this?" has to read both or it goes
5358
+ * blind on half the histories. Reading only `_attachmentId` in particular is
5359
+ * the sharp edge: it is absent on every reference block, so a rebuild that
5360
+ * flattens a reference to inline bytes drops the link unless it derives the id
5361
+ * through here first.
5362
+ */
5363
+ export declare function mediaBlockAttachmentId(block: ImageContent | FileContent): string | undefined;
5364
+
5317
5365
  declare type MediaSource_2 = Base64MediaSource | WorkspaceRefMediaSource;
5318
5366
 
5319
5367
  export declare interface Message {
package/index.js CHANGED
@@ -11,6 +11,7 @@ export const TtsSynthesisError = api.TtsSynthesisError;
11
11
  export const VOICE_ESCALATION_CONTINUATION_MESSAGE_KIND = api.VOICE_ESCALATION_CONTINUATION_MESSAGE_KIND;
12
12
  export const addMessage = api.addMessage;
13
13
  export const assistantEventHub = api.assistantEventHub;
14
+ export const attachmentIdFragment = api.attachmentIdFragment;
14
15
  export const buildMessageExcerpt = api.buildMessageExcerpt;
15
16
  export const createLiveVoiceConnection = api.createLiveVoiceConnection;
16
17
  export const deleteConversation = api.deleteConversation;
@@ -38,6 +39,7 @@ export const lastToolResultUserMessageIndex = api.lastToolResultUserMessageIndex
38
39
  export const listCatalogSkills = api.listCatalogSkills;
39
40
  export const listConversations = api.listConversations;
40
41
  export const listInstalledSkills = api.listInstalledSkills;
42
+ export const mediaBlockAttachmentId = api.mediaBlockAttachmentId;
41
43
  export const openTranscriptionSession = api.openTranscriptionSession;
42
44
  export const parseMessageMetadata = api.parseMessageMetadata;
43
45
  export const persistSystemCard = api.persistSystemCard;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vellumai/plugin-api",
3
- "version": "0.11.7-dev.202608301911.907e905",
3
+ "version": "0.11.7-dev.202608302213.8788231",
4
4
  "description": "Public TypeScript authoring contract for Vellum assistant plugins.",
5
5
  "license": "MIT",
6
6
  "type": "module",