@langfuse/core 5.10.0 → 5.10.1

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.
package/dist/index.d.cts CHANGED
@@ -480,7 +480,7 @@ declare const BlobStorageExportFrequency: {
480
480
  * - `OBSERVATIONS_V2`: same data model as the `/api/public/v2/observations` endpoint, plus scores. Columns are controlled by `exportFieldGroups`.
481
481
  * - `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS`: both sets. Observation columns of both portions are controlled by `exportFieldGroups`.
482
482
  *
483
- * **Note:** `OBSERVATIONS_V2` and the enriched-observations portion of `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` rely on the enriched observations table (Langfuse Fast Preview / v4), which is currently available on Langfuse Cloud only. See https://langfuse.com/docs/v4.
483
+ * **Note:** which sources a deployment accepts depends on how far it has moved to the v4 data model. `OBSERVATIONS_V2` and the enriched-observations portion of `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` read the enriched observations table, so they require a deployment that already populates it. `LEGACY_TRACES_OBSERVATIONS` and the legacy portion of `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` read the legacy traces and observations tables, so they require a deployment that still populates those. A deployment part-way through the migration populates both and accepts every source. Selecting a source the deployment cannot serve is rejected with `400`, rather than exporting an empty result. See https://langfuse.com/docs/v4.
484
484
  */
485
485
  type BlobStorageExportSource = "LEGACY_TRACES_OBSERVATIONS" | "OBSERVATIONS_V2" | "LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS";
486
486
  declare const BlobStorageExportSource: {
@@ -542,7 +542,7 @@ interface CreateBlobStorageIntegrationRequest {
542
542
  /** Enable gzip compression for exported files (.csv.gz, .json.gz, .jsonl.gz). Defaults to true. */
543
543
  compressed?: boolean;
544
544
  /**
545
- * Data to export. When omitted on update, the existing value is preserved. When omitted on create: integrations on Langfuse Cloud default to `OBSERVATIONS_V2`; self-hosted deployments fall back to `LEGACY_TRACES_OBSERVATIONS`. Required when `exportFieldGroups` is provided.
545
+ * Data to export. When omitted on update, the existing value is preserved. When omitted on create, the default is `OBSERVATIONS_V2` on Langfuse Cloud, and on self-hosted deployments `LEGACY_TRACES_OBSERVATIONS` — or `OBSERVATIONS_V2` where the deployment no longer populates the legacy tables. The default is never a source the deployment cannot serve. Required when `exportFieldGroups` is provided.
546
546
  *
547
547
  * **Cloud-only project deprecation gate (effective 2026-05-20):** For projects created on or after 2026-05-20 on Langfuse Cloud, `LEGACY_TRACES_OBSERVATIONS` and `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` are rejected with HTTP 400. Use `OBSERVATIONS_V2` for all new integrations. Self-hosted deployments are unaffected.
548
548
  *
@@ -677,7 +677,7 @@ interface CreateCommentRequest {
677
677
  objectId: string;
678
678
  /** The content of the comment. May include markdown. Currently limited to 5000 characters. */
679
679
  content: string;
680
- /** The id of the user who created the comment. */
680
+ /** The id of the user who created the comment. Must be a member of the organization that owns the project, otherwise an error will be thrown. */
681
681
  authorUserId?: string;
682
682
  }
683
683
 
@@ -3742,6 +3742,17 @@ interface GetMetricsV2Request {
3742
3742
  * }
3743
3743
  * }
3744
3744
  * ```
3745
+ *
3746
+ * For example, to count semantic roots (including app roots with a non-null external parent), use a boolean filter:
3747
+ * ```json
3748
+ * {
3749
+ * "view": "observations",
3750
+ * "metrics": [{"measure": "count", "aggregation": "count"}],
3751
+ * "filters": [{"column": "isRootObservation", "operator": "=", "value": true, "type": "boolean"}],
3752
+ * "fromTimestamp": "2025-01-01T00:00:00.000Z",
3753
+ * "toTimestamp": "2025-02-01T00:00:00.000Z"
3754
+ * }
3755
+ * ```
3745
3756
  */
3746
3757
  query: string;
3747
3758
  }
@@ -3890,6 +3901,8 @@ interface GetObservationsV2Request {
3890
3901
  parseIoAsJson?: boolean;
3891
3902
  name?: string;
3892
3903
  userId?: string;
3904
+ /** Filter by session ID. */
3905
+ sessionId?: string;
3893
3906
  /** Filter by observation type (e.g., "GENERATION", "SPAN", "EVENT", "AGENT", "TOOL", "CHAIN", "RETRIEVER", "EVALUATOR", "EMBEDDING", "GUARDRAIL") */
3894
3907
  type?: string;
3895
3908
  traceId?: string;
@@ -4970,7 +4983,7 @@ interface CreateUserRequest {
4970
4983
  emails?: ScimEmail[];
4971
4984
  /** Whether the user is active */
4972
4985
  active?: boolean;
4973
- /** Initial password for the user */
4986
+ /** Ignored. Accepted only for compatibility with identity providers that always send a password on user creation (Okta sends a placeholder value even when password sync is disabled). No credential is created for the user; provisioned users authenticate via SSO or set a password themselves through the password reset flow. */
4974
4987
  password?: string;
4975
4988
  }
4976
4989
 
@@ -6324,6 +6337,7 @@ interface EvaluationRuleMapping {
6324
6337
  * - `stringOptions`: `any of`, `none of`
6325
6338
  * - `arrayOptions`: `any of`, `none of`, `all of`
6326
6339
  * - `stringObject`: same operators as `string`
6340
+ * - `boolean`: `"="`, `"<>"`
6327
6341
  * - `null`: `is null`, `is not null`
6328
6342
  *
6329
6343
  * Supported columns by target:
@@ -6338,6 +6352,7 @@ interface EvaluationRuleMapping {
6338
6352
  * - `sessionId`: `string`
6339
6353
  * - `tags`: `arrayOptions`, operators `any of` / `none of` / `all of`
6340
6354
  * - `metadata`: `stringObject` with `key`
6355
+ * - `isRootObservation`: `boolean`, operators `=` / `<>`; true when the observation has no parent or is explicitly marked as an application root
6341
6356
  * - `parentObservationId`: `null`, operators `is null` / `is not null`
6342
6357
  * - `calledToolNames`: `arrayOptions`, operators `any of` / `none of` / `all of`
6343
6358
  * - `toolCalls`: `number`
@@ -6376,6 +6391,14 @@ interface EvaluationRuleMapping {
6376
6391
  *
6377
6392
  * @example
6378
6393
  * {
6394
+ * type: "boolean",
6395
+ * column: "isRootObservation",
6396
+ * operator: LangfuseAPI.unstable.EvaluationRuleBooleanFilterOperator.Equals,
6397
+ * value: true
6398
+ * }
6399
+ *
6400
+ * @example
6401
+ * {
6379
6402
  * type: "arrayOptions",
6380
6403
  * column: "tags",
6381
6404
  * operator: LangfuseAPI.unstable.EvaluationRuleArrayOptionsFilterOperator.AnyOf,
@@ -9741,6 +9764,7 @@ declare class Metrics {
9741
9764
  * ## V2 Differences
9742
9765
  * - Supports `observations`, `scores-numeric`, `scores-boolean`, and `scores-categorical` views only (traces view not supported)
9743
9766
  * - Direct access to tags and release fields on observations
9767
+ * - Semantic-root filtering and grouping through the v2-only `isRootObservation` dimension
9744
9768
  * - Backwards-compatible: traceName, traceRelease, traceVersion dimensions are still available on observations view
9745
9769
  * - High cardinality dimensions are not supported and will return a 400 error (see below)
9746
9770
  *
@@ -9765,6 +9789,7 @@ declare class Metrics {
9765
9789
  * - `providedModelName` - Name of the model used
9766
9790
  * - `promptName` - Name of the prompt used
9767
9791
  * - `promptVersion` - Version of the prompt used
9792
+ * - `isRootObservation` - Boolean semantic-root status. `true` includes physical roots and app roots whose SDK parent is external (so `parentObservationId` may be non-null).
9768
9793
  * - `startTimeMonth` - Month of start_time in YYYY-MM format
9769
9794
  *
9770
9795
  * **Measures:**
@@ -11209,9 +11234,6 @@ declare class Scores {
11209
11234
  create(request: CreateScoreRequest, requestOptions?: Scores.RequestOptions): HttpResponsePromise<CreateScoreResponse>;
11210
11235
  private __create;
11211
11236
  /**
11212
- * **Deprecated.** Use `GET /api/public/v3/scores` instead. This endpoint
11213
- * is no longer available on Langfuse v4 and later.
11214
- *
11215
11237
  * Get a list of scores (supports both trace and session scores)
11216
11238
  *
11217
11239
  * @param {LangfuseAPI.GetScoresRequest} request
@@ -11229,9 +11251,6 @@ declare class Scores {
11229
11251
  getMany(request?: GetScoresRequest, requestOptions?: Scores.RequestOptions): HttpResponsePromise<GetScoresResponse>;
11230
11252
  private __getMany;
11231
11253
  /**
11232
- * **Deprecated.** Use `GET /api/public/v3/scores` with the `id` filter
11233
- * instead. This endpoint is no longer available on Langfuse v4 and later.
11234
- *
11235
11254
  * Get a score (supports both trace and session scores)
11236
11255
  *
11237
11256
  * @param {string} scoreId - The unique langfuse identifier of a score
package/dist/index.d.ts CHANGED
@@ -480,7 +480,7 @@ declare const BlobStorageExportFrequency: {
480
480
  * - `OBSERVATIONS_V2`: same data model as the `/api/public/v2/observations` endpoint, plus scores. Columns are controlled by `exportFieldGroups`.
481
481
  * - `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS`: both sets. Observation columns of both portions are controlled by `exportFieldGroups`.
482
482
  *
483
- * **Note:** `OBSERVATIONS_V2` and the enriched-observations portion of `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` rely on the enriched observations table (Langfuse Fast Preview / v4), which is currently available on Langfuse Cloud only. See https://langfuse.com/docs/v4.
483
+ * **Note:** which sources a deployment accepts depends on how far it has moved to the v4 data model. `OBSERVATIONS_V2` and the enriched-observations portion of `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` read the enriched observations table, so they require a deployment that already populates it. `LEGACY_TRACES_OBSERVATIONS` and the legacy portion of `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` read the legacy traces and observations tables, so they require a deployment that still populates those. A deployment part-way through the migration populates both and accepts every source. Selecting a source the deployment cannot serve is rejected with `400`, rather than exporting an empty result. See https://langfuse.com/docs/v4.
484
484
  */
485
485
  type BlobStorageExportSource = "LEGACY_TRACES_OBSERVATIONS" | "OBSERVATIONS_V2" | "LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS";
486
486
  declare const BlobStorageExportSource: {
@@ -542,7 +542,7 @@ interface CreateBlobStorageIntegrationRequest {
542
542
  /** Enable gzip compression for exported files (.csv.gz, .json.gz, .jsonl.gz). Defaults to true. */
543
543
  compressed?: boolean;
544
544
  /**
545
- * Data to export. When omitted on update, the existing value is preserved. When omitted on create: integrations on Langfuse Cloud default to `OBSERVATIONS_V2`; self-hosted deployments fall back to `LEGACY_TRACES_OBSERVATIONS`. Required when `exportFieldGroups` is provided.
545
+ * Data to export. When omitted on update, the existing value is preserved. When omitted on create, the default is `OBSERVATIONS_V2` on Langfuse Cloud, and on self-hosted deployments `LEGACY_TRACES_OBSERVATIONS` — or `OBSERVATIONS_V2` where the deployment no longer populates the legacy tables. The default is never a source the deployment cannot serve. Required when `exportFieldGroups` is provided.
546
546
  *
547
547
  * **Cloud-only project deprecation gate (effective 2026-05-20):** For projects created on or after 2026-05-20 on Langfuse Cloud, `LEGACY_TRACES_OBSERVATIONS` and `LEGACY_TRACES_AND_ENRICHED_OBSERVATIONS` are rejected with HTTP 400. Use `OBSERVATIONS_V2` for all new integrations. Self-hosted deployments are unaffected.
548
548
  *
@@ -677,7 +677,7 @@ interface CreateCommentRequest {
677
677
  objectId: string;
678
678
  /** The content of the comment. May include markdown. Currently limited to 5000 characters. */
679
679
  content: string;
680
- /** The id of the user who created the comment. */
680
+ /** The id of the user who created the comment. Must be a member of the organization that owns the project, otherwise an error will be thrown. */
681
681
  authorUserId?: string;
682
682
  }
683
683
 
@@ -3742,6 +3742,17 @@ interface GetMetricsV2Request {
3742
3742
  * }
3743
3743
  * }
3744
3744
  * ```
3745
+ *
3746
+ * For example, to count semantic roots (including app roots with a non-null external parent), use a boolean filter:
3747
+ * ```json
3748
+ * {
3749
+ * "view": "observations",
3750
+ * "metrics": [{"measure": "count", "aggregation": "count"}],
3751
+ * "filters": [{"column": "isRootObservation", "operator": "=", "value": true, "type": "boolean"}],
3752
+ * "fromTimestamp": "2025-01-01T00:00:00.000Z",
3753
+ * "toTimestamp": "2025-02-01T00:00:00.000Z"
3754
+ * }
3755
+ * ```
3745
3756
  */
3746
3757
  query: string;
3747
3758
  }
@@ -3890,6 +3901,8 @@ interface GetObservationsV2Request {
3890
3901
  parseIoAsJson?: boolean;
3891
3902
  name?: string;
3892
3903
  userId?: string;
3904
+ /** Filter by session ID. */
3905
+ sessionId?: string;
3893
3906
  /** Filter by observation type (e.g., "GENERATION", "SPAN", "EVENT", "AGENT", "TOOL", "CHAIN", "RETRIEVER", "EVALUATOR", "EMBEDDING", "GUARDRAIL") */
3894
3907
  type?: string;
3895
3908
  traceId?: string;
@@ -4970,7 +4983,7 @@ interface CreateUserRequest {
4970
4983
  emails?: ScimEmail[];
4971
4984
  /** Whether the user is active */
4972
4985
  active?: boolean;
4973
- /** Initial password for the user */
4986
+ /** Ignored. Accepted only for compatibility with identity providers that always send a password on user creation (Okta sends a placeholder value even when password sync is disabled). No credential is created for the user; provisioned users authenticate via SSO or set a password themselves through the password reset flow. */
4974
4987
  password?: string;
4975
4988
  }
4976
4989
 
@@ -6324,6 +6337,7 @@ interface EvaluationRuleMapping {
6324
6337
  * - `stringOptions`: `any of`, `none of`
6325
6338
  * - `arrayOptions`: `any of`, `none of`, `all of`
6326
6339
  * - `stringObject`: same operators as `string`
6340
+ * - `boolean`: `"="`, `"<>"`
6327
6341
  * - `null`: `is null`, `is not null`
6328
6342
  *
6329
6343
  * Supported columns by target:
@@ -6338,6 +6352,7 @@ interface EvaluationRuleMapping {
6338
6352
  * - `sessionId`: `string`
6339
6353
  * - `tags`: `arrayOptions`, operators `any of` / `none of` / `all of`
6340
6354
  * - `metadata`: `stringObject` with `key`
6355
+ * - `isRootObservation`: `boolean`, operators `=` / `<>`; true when the observation has no parent or is explicitly marked as an application root
6341
6356
  * - `parentObservationId`: `null`, operators `is null` / `is not null`
6342
6357
  * - `calledToolNames`: `arrayOptions`, operators `any of` / `none of` / `all of`
6343
6358
  * - `toolCalls`: `number`
@@ -6376,6 +6391,14 @@ interface EvaluationRuleMapping {
6376
6391
  *
6377
6392
  * @example
6378
6393
  * {
6394
+ * type: "boolean",
6395
+ * column: "isRootObservation",
6396
+ * operator: LangfuseAPI.unstable.EvaluationRuleBooleanFilterOperator.Equals,
6397
+ * value: true
6398
+ * }
6399
+ *
6400
+ * @example
6401
+ * {
6379
6402
  * type: "arrayOptions",
6380
6403
  * column: "tags",
6381
6404
  * operator: LangfuseAPI.unstable.EvaluationRuleArrayOptionsFilterOperator.AnyOf,
@@ -9741,6 +9764,7 @@ declare class Metrics {
9741
9764
  * ## V2 Differences
9742
9765
  * - Supports `observations`, `scores-numeric`, `scores-boolean`, and `scores-categorical` views only (traces view not supported)
9743
9766
  * - Direct access to tags and release fields on observations
9767
+ * - Semantic-root filtering and grouping through the v2-only `isRootObservation` dimension
9744
9768
  * - Backwards-compatible: traceName, traceRelease, traceVersion dimensions are still available on observations view
9745
9769
  * - High cardinality dimensions are not supported and will return a 400 error (see below)
9746
9770
  *
@@ -9765,6 +9789,7 @@ declare class Metrics {
9765
9789
  * - `providedModelName` - Name of the model used
9766
9790
  * - `promptName` - Name of the prompt used
9767
9791
  * - `promptVersion` - Version of the prompt used
9792
+ * - `isRootObservation` - Boolean semantic-root status. `true` includes physical roots and app roots whose SDK parent is external (so `parentObservationId` may be non-null).
9768
9793
  * - `startTimeMonth` - Month of start_time in YYYY-MM format
9769
9794
  *
9770
9795
  * **Measures:**
@@ -11209,9 +11234,6 @@ declare class Scores {
11209
11234
  create(request: CreateScoreRequest, requestOptions?: Scores.RequestOptions): HttpResponsePromise<CreateScoreResponse>;
11210
11235
  private __create;
11211
11236
  /**
11212
- * **Deprecated.** Use `GET /api/public/v3/scores` instead. This endpoint
11213
- * is no longer available on Langfuse v4 and later.
11214
- *
11215
11237
  * Get a list of scores (supports both trace and session scores)
11216
11238
  *
11217
11239
  * @param {LangfuseAPI.GetScoresRequest} request
@@ -11229,9 +11251,6 @@ declare class Scores {
11229
11251
  getMany(request?: GetScoresRequest, requestOptions?: Scores.RequestOptions): HttpResponsePromise<GetScoresResponse>;
11230
11252
  private __getMany;
11231
11253
  /**
11232
- * **Deprecated.** Use `GET /api/public/v3/scores` with the `id` filter
11233
- * instead. This endpoint is no longer available on Langfuse v4 and later.
11234
- *
11235
11254
  * Get a score (supports both trace and session scores)
11236
11255
  *
11237
11256
  * @param {string} scoreId - The unique langfuse identifier of a score
package/dist/index.mjs CHANGED
@@ -276,7 +276,7 @@ var resetGlobalLogger = () => {
276
276
  // package.json
277
277
  var package_default = {
278
278
  name: "@langfuse/core",
279
- version: "5.10.0",
279
+ version: "5.10.1",
280
280
  description: "Core functions and utilities for Langfuse packages",
281
281
  type: "module",
282
282
  sideEffects: false,
@@ -6711,9 +6711,6 @@ var Scores = class {
6711
6711
  }
6712
6712
  }
6713
6713
  /**
6714
- * **Deprecated.** Use `GET /api/public/v3/scores` instead. This endpoint
6715
- * is no longer available on Langfuse v4 and later.
6716
- *
6717
6714
  * Get a list of scores (supports both trace and session scores)
6718
6715
  *
6719
6716
  * @param {LangfuseAPI.GetScoresRequest} request
@@ -6912,9 +6909,6 @@ var Scores = class {
6912
6909
  }
6913
6910
  }
6914
6911
  /**
6915
- * **Deprecated.** Use `GET /api/public/v3/scores` with the `id` filter
6916
- * instead. This endpoint is no longer available on Langfuse v4 and later.
6917
- *
6918
6912
  * Get a score (supports both trace and session scores)
6919
6913
  *
6920
6914
  * @param {string} scoreId - The unique langfuse identifier of a score
@@ -7879,6 +7873,7 @@ var Metrics = class {
7879
7873
  * ## V2 Differences
7880
7874
  * - Supports `observations`, `scores-numeric`, `scores-boolean`, and `scores-categorical` views only (traces view not supported)
7881
7875
  * - Direct access to tags and release fields on observations
7876
+ * - Semantic-root filtering and grouping through the v2-only `isRootObservation` dimension
7882
7877
  * - Backwards-compatible: traceName, traceRelease, traceVersion dimensions are still available on observations view
7883
7878
  * - High cardinality dimensions are not supported and will return a 400 error (see below)
7884
7879
  *
@@ -7903,6 +7898,7 @@ var Metrics = class {
7903
7898
  * - `providedModelName` - Name of the model used
7904
7899
  * - `promptName` - Name of the prompt used
7905
7900
  * - `promptVersion` - Version of the prompt used
7901
+ * - `isRootObservation` - Boolean semantic-root status. `true` includes physical roots and app roots whose SDK parent is external (so `parentObservationId` may be non-null).
7906
7902
  * - `startTimeMonth` - Month of start_time in YYYY-MM format
7907
7903
  *
7908
7904
  * **Measures:**
@@ -8610,6 +8606,7 @@ var Observations = class {
8610
8606
  parseIoAsJson,
8611
8607
  name,
8612
8608
  userId,
8609
+ sessionId,
8613
8610
  type: type_,
8614
8611
  traceId,
8615
8612
  level,
@@ -8643,6 +8640,9 @@ var Observations = class {
8643
8640
  if (userId != null) {
8644
8641
  _queryParams["userId"] = userId;
8645
8642
  }
8643
+ if (sessionId != null) {
8644
+ _queryParams["sessionId"] = sessionId;
8645
+ }
8646
8646
  if (type_ != null) {
8647
8647
  _queryParams["type"] = type_;
8648
8648
  }