> ## Documentation Index
> Fetch the complete documentation index at: https://velt.dev/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Velt Node SDK Changelog

> Release Notes of changes added to the Velt Node.js/TypeScript SDK (@veltdev/node)

### Libraries

* `@veltdev/node`

<Update label="1.0.7" description="June 19, 2026">
  ### New Features

  * **`CommentResolverSaveEvent` enum**: New enum with 14 additional non-core comment save events (status change, priority change, assign, approve, comment-level reactions, subscribe/unsubscribe, and more) that the Velt frontend can opt into sending to the save resolver endpoint via `ResolverConfig.additionalSaveEvents`. The `event` field on `SaveCommentResolverRequest` is widened from `ResolverActions` to `ResolverActions | CommentResolverSaveEvent | string` — fully additive, so every existing value remains assignable. New export from `@veltdev/node`. [Learn more →](/backend-sdks/node#comments)

  * **`targetComment` on `SaveCommentResolverRequest`**: New optional `targetComment?: PartialComment` field carrying the comment the action occurred on, resolved by the frontend from `commentId`. It is request context for your handler only and is never persisted by `saveComments`. [Learn more →](/backend-sdks/node#comments)

  * **Resolver token verify helper (`sdk.selfHosting.verifyToken`)**: New fail-closed helper that verifies the auth credential the Velt frontend forwards to endpoint-based resolvers. The helper itself does not open or query MongoDB; in `@veltdev/node@1.0.7`, `VeltSDK.initialize` still validates the top-level `database` config before you can access `sdk.selfHosting`. Supports built-in JWT/JWKS verification (via the optional `jose` peer dependency, pinned to `^5` for Node 18) and custom callbacks, and is authentication only — it never makes an authorization decision. Configured via the new optional `resolverAuth` on `VeltConfig`. New exports: `VerifyTokenResult`, `RESOLVER_AUTH_ERROR_CODES`, `ResolverAuthErrorCode`, `ResolverAuthConfig`, `ResolverAuthJwtConfig`, `ResolverAuthVerifyCallback`, `ResolverAuthService`. [Learn more →](/backend-sdks/node#verifytoken)
</Update>

<Update label="1.0.5" description="June 16, 2026">
  ### Breaking Changes

  * **`PartialReactionAnnotation.user` renamed to `from`**: The reacting-user field on `PartialReactionAnnotation` is renamed from `user` to `from`, matching the Velt frontend SDK's `PartialReactionAnnotation.from` (and `ReactionAnnotation.from`). This affects self-hosting reaction resolvers (`sdk.selfHosting.getReactions()`): `saveReactions()` now persists the reacting user under `from`, and resolved reactions expose `from`. Code that reads or writes the reacting user must use `from` instead of `user`. [Learn more →](/backend-sdks/node#reactions)
</Update>

<Update label="1.0.4" description="June 16, 2026">
  ### New Features

  * **Opt-in field allowlist for REST add/update methods**: The add/update methods on `activities`, `commentAnnotations` (including comment-level add/update), and `notifications` now accept an optional `FieldFilterOptions` second argument. Passing `{ filterUnknownFields: true }` narrows the request to exactly the fields the backend endpoint accepts and silently drops unknown keys. It is off by default, fail-open (a filter error never blocks a write), and top-level scoped, so nested open-typed objects like `actionUser` and `context` pass through whole. [Learn more →](/backend-sdks/node#field-allowlist)

  * **New field-allowlist exports**: A new field-allowlist module exported from `@veltdev/node` exposes the filter primitives (`filterRequest`, `pickKnownFields`), the `FilterSpec` and `FieldFilterOptions` types, and the per-method specs (`ADD_ACTIVITIES_SPEC`, `UPDATE_ACTIVITIES_SPEC`, `ADD_COMMENT_ANNOTATIONS_SPEC`, `UPDATE_COMMENT_ANNOTATIONS_SPEC`, `ADD_COMMENTS_SPEC`, `UPDATE_COMMENTS_SPEC`, `ADD_NOTIFICATIONS_SPEC`, `UPDATE_NOTIFICATIONS_SPEC`) so advanced callers can reuse the same fail-open filtering logic. [Learn more →](/backend-sdks/node#field-allowlist)
</Update>

<Update label="1.0.3" description="June 12, 2026">
  ### New Features

  * **AI Agents API (`sdk.api.agents`)**: New `AgentsService` for managing AI agents, versioned config, agent groups, executions, analytics, and prompt tooling (24 methods). Also exported directly from `@veltdev/node`. [Learn more →](/backend-sdks/node#agents)

  * **Memory API (`sdk.api.memory`)**: New `MemoryService` for semantic search over judgments, knowledge-base ingestion/management, reviewer profiles, patterns/stats, alerting, and maintenance jobs (24 methods, all types `Memory`-prefixed). Also exported from `@veltdev/node`. [Learn more →](/backend-sdks/node#memory)

  * **Approval Workflows API (`sdk.api.approval`)**: New `ApprovalService` for defining approval/review workflows (graphs of agent, human, and webhook nodes) and dispatching/resolving executions and steps (14 methods, routes under `/v2/workflow/*`, all types `Approval`-prefixed). Also exported from `@veltdev/node`. [Learn more →](/backend-sdks/node#approval-workflows)

  * **CRDT — `deleteCrdtData`**: `sdk.api.crdt` gains `deleteCrdtData` to delete CRDT editor data for a document (omit `editorIds` to delete all editors). [Learn more →](/backend-sdks/node#crdt)

  * **Documents — `getDocumentsCount`**: `sdk.api.documents` gains `getDocumentsCount` to return a document count for an organization, with optional folder scoping. [Learn more →](/backend-sdks/node#documents)

  * **Users — counts, document users & invites**: `sdk.api.users` gains 7 methods: `getUsersCount`, `getDocUsers`, `addUserInvite`, `respondToUserInvite`, `getUserInvites`, `getUserInvitations`, and `getInvitedPendingUsersCount`. [Learn more →](/backend-sdks/node#users)

  * **Workspace — domain requests, key config, service configs & advanced webhooks**: `sdk.api.workspace` gains 19 methods spanning additional-URL/domain requests, API key copy + config, notification/permission-provider/activity service configs, and the advanced (Svix) webhook endpoint suite. [Learn more →](/backend-sdks/node#workspace)

  ### Improvements

  * **`getApiKeyMetadata` now targets the `apikeyconfig` endpoint**: `sdk.api.workspace.getApiKeyMetadata()` now posts to `/v2/workspace/apikeyconfig/get` (was `/v2/workspace/apikeymetadata/get`). The method name and signature are unchanged, so no caller changes are required. [Learn more →](/backend-sdks/node#workspace)
</Update>

<Update label="1.0.2" description="May 19, 2026">
  ### New Features

  * **`PartialCommentAnnotation` typed fields**: `PartialCommentAnnotation` gains four new typed fields — `from`, `assignedTo`, `targetTextRange`, and `resolvedByUserId`. `resolvedByUserId` uses three-state semantics (absent / explicit `null` / string) to correctly round-trip unresolve actions without dropping `null`. [Learn more →](/backend-sdks/node#partialcommentannotation)

  * **`PartialTargetTextRange` interface**: New `PartialTargetTextRange` interface with `partialTargetTextRangeFromDict` / `partialTargetTextRangeToDict` serializers for structured text-range data. [Learn more →](/backend-sdks/node#partialtargettextrange)

  * **`PartialComment` round-trip helpers**: `PartialComment` gains `partialCommentFromDict` / `partialCommentToDict` helpers that pass through unknown keys, preserving forward compatibility. [Learn more →](/backend-sdks/node#partialcomment)

  * **`sdkVersion` on `BaseMetadata`**: `BaseMetadata` now includes an `sdkVersion` field. `baseMetadataFromDict` / `baseMetadataToDict` serializers are exposed on the public package surface. [Learn more →](/backend-sdks/node#basemetadata)
</Update>
