@voltagent/voltagent-memory@1.0.4

VoltAgent/voltagent@voltagent/voltagent-memory@1.0.4Feb 11, 2026by voltagent-bot

AI Summary

This patch release introduces multi-tenant filtering capabilities to the workflow execution listing endpoint, allowing users to filter history by `userId` and metadata fields in addition to existing parameters.

Key Highlights

  • Added `userId` filter support for workflow run queries.
  • Added metadata filtering support via URL-encoded JSON or dot notation (e.g., `metadata.tenantId`).
  • Added status aliases (`success` -> `completed`, `pending` -> `running`) for compatibility.
  • Implemented consistently across all storage adapters including In-memory, PostgreSQL, LibSQL, Supabase, Cloudflare D1, and Managed Memory.

New Features

  • Multi-tenant filtering for workflow executions

Full Release Notes

### Patch Changes

-   [#1040](https://github.com/VoltAgent/voltagent/pull/1040) [`5e54d3b`](https://github.com/VoltAgent/voltagent/commit/5e54d3b54e2823479788617ce0a1bb5211260f9b) Thanks [@omeraplak](https://github.com/omeraplak)! - feat: add multi-tenant filters to workflow execution listing (`/workflows/executions`)

    You can now filter workflow execution history by `userId` and metadata fields in addition to
    existing filters (`workflowId`, `status`, `from`, `to`, `limit`, `offset`).

    ### What's New

    -   Added `userId` filter support for workflow run queries.
    -   Added metadata filtering support:
        -   `metadata` as URL-encoded JSON object
        -   `metadata.<key>` query params (for example: `metadata.tenantId=acme`)
    -   Added status aliases for compatibility:
        -   `success` -> `completed`
        -   `pending` -> `running`
    -   Implemented consistently across storage adapters:
        -   In-memory
        -   PostgreSQL
        -   LibSQL
        -   Supabase
        -   Cloudflare D1
        -   Managed Memory (`@voltagent/voltagent-memory`)
    -   Updated server docs and route descriptions to include new filters.

    ### TypeScript Example

    ```ts
    const params = new URLSearchParams({
      workflowId: "order-approval",
      status: "completed",
      userId: "user-123",
      "metadata.tenantId": "acme",
      "metadata.region": "eu",
      limit: "20",
      offset: "0",
    });

    const response = await fetch(`http://localhost:3141/workflows/executions?${params.toString()}`);
    const data = await response.json();
    ```

    ### cURL Examples

    ```bash
    # Filter by workflow + user + metadata key
    curl "http://localhost:3141/workflows/executions?workflowId=order-approval&userId=user-123&metadata.tenantId=acme&status=completed&limit=20&offset=0"
    ```

    ```bash
    # Filter by metadata JSON object (URL-encoded)
    curl "http://localhost:3141/workflows/executions?metadata=%7B%22tenantId%22%3A%22acme%22%2C%22region%22%3A%22eu%22%7D"
    ```