langwatch 1.11.0 → 1.12.0

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 (34) hide show
  1. package/dist/agent/index.d.mts +7 -1
  2. package/dist/agent/index.d.ts +7 -1
  3. package/dist/agent/index.js +26 -1
  4. package/dist/agent/index.js.map +1 -1
  5. package/dist/agent/index.mjs +26 -1
  6. package/dist/agent/index.mjs.map +1 -1
  7. package/dist/{chunk-2PD3YA5H.js → chunk-3WIN2UXZ.js} +2 -2
  8. package/dist/{chunk-2PD3YA5H.js.map → chunk-3WIN2UXZ.js.map} +1 -1
  9. package/dist/{chunk-VMNKKJVI.mjs → chunk-BAE4KYKJ.mjs} +2 -2
  10. package/dist/{chunk-BS5CNZ5S.mjs → chunk-F5UYCQT3.mjs} +2 -2
  11. package/dist/{chunk-BS5CNZ5S.mjs.map → chunk-F5UYCQT3.mjs.map} +1 -1
  12. package/dist/{chunk-AJDFFRSW.js → chunk-QLYKPPAW.js} +12 -12
  13. package/dist/{chunk-AJDFFRSW.js.map → chunk-QLYKPPAW.js.map} +1 -1
  14. package/dist/cli/bundle.js +295 -217
  15. package/dist/{implementation-aczLxVpV.d.mts → implementation-BA3xa5UR.d.mts} +1 -1
  16. package/dist/{implementation-D58yPTJW.d.ts → implementation-rpImK8WS.d.ts} +1 -1
  17. package/dist/index.d.mts +55 -2
  18. package/dist/index.d.ts +55 -2
  19. package/dist/index.js +89 -33
  20. package/dist/index.js.map +1 -1
  21. package/dist/index.mjs +58 -2
  22. package/dist/index.mjs.map +1 -1
  23. package/dist/observability-sdk/index.d.mts +3 -3
  24. package/dist/observability-sdk/index.d.ts +3 -3
  25. package/dist/observability-sdk/index.js +2 -2
  26. package/dist/observability-sdk/index.mjs +1 -1
  27. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
  28. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
  29. package/dist/observability-sdk/setup/node/index.js +3 -3
  30. package/dist/observability-sdk/setup/node/index.mjs +2 -2
  31. package/dist/{types-D_YNU-VL.d.ts → types-Cr25FO-i.d.ts} +395 -293
  32. package/dist/{types-BmMuUDrO.d.mts → types-DJyJypkv.d.mts} +395 -293
  33. package/package.json +1 -1
  34. /package/dist/{chunk-VMNKKJVI.mjs.map → chunk-BAE4KYKJ.mjs.map} +0 -0
@@ -4,7 +4,7 @@ import { ExportResult } from '@opentelemetry/core';
4
4
  import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
5
5
  import { b as SemConvLogRecordAttributes, a as SemConvAttributes } from './types-VOZv9LYO.mjs';
6
6
  import { TracerProvider } from '@opentelemetry/api';
7
- import { j as LangWatchTracer } from './types-BmMuUDrO.mjs';
7
+ import { j as LangWatchTracer } from './types-DJyJypkv.mjs';
8
8
 
9
9
  /**
10
10
  * Filterable Batch Span Exporter for OpenTelemetry
@@ -4,7 +4,7 @@ import { ExportResult } from '@opentelemetry/core';
4
4
  import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
5
5
  import { b as SemConvLogRecordAttributes, a as SemConvAttributes } from './types-VOZv9LYO.js';
6
6
  import { TracerProvider } from '@opentelemetry/api';
7
- import { j as LangWatchTracer } from './types-D_YNU-VL.js';
7
+ import { j as LangWatchTracer } from './types-Cr25FO-i.js';
8
8
 
9
9
  /**
10
10
  * Filterable Batch Span Exporter for OpenTelemetry
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { L as Logger, C as ConsoleLogger, N as NoOpLogger } from './index-D7rKIGrO.mjs';
2
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, a as getLangWatchTracer } from './implementation-aczLxVpV.mjs';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, a as getLangWatchTracer } from './implementation-BA3xa5UR.mjs';
3
3
  import { z } from 'zod';
4
- import { p as paths, P as PromptResponse, C as CreatePromptBody, U as UpdatePromptBody, T as TagDefinition, a as CreatedTag, o as operations, b as PromptData, F as FetchPolicy, c as Prompt, L as LangWatchSpan, d as components } from './types-BmMuUDrO.mjs';
4
+ import { p as paths, P as PromptResponse, C as CreatePromptBody, U as UpdatePromptBody, T as TagDefinition, a as CreatedTag, o as operations, b as PromptData, F as FetchPolicy, c as Prompt, L as LangWatchSpan, d as components } from './types-DJyJypkv.mjs';
5
5
  import openApiCreateClient from 'openapi-fetch';
6
6
  export { l as attributes } from './types-VOZv9LYO.mjs';
7
7
  import { CliHandledErrorReason, CliHandledError } from '@langwatch/langy/cards/handled-error';
@@ -2312,6 +2312,57 @@ declare class AnalyticsApiService {
2312
2312
  timeseries(params: AnalyticsTimeseriesBody): Promise<AnalyticsTimeseriesResponse>;
2313
2313
  }
2314
2314
 
2315
+ /** The typed columns/rows/statistics payload `POST /api/v1/query` answers with. */
2316
+ type QueryRunResult = paths["/api/v1/query"]["post"]["responses"]["200"]["content"]["application/json"];
2317
+ /** The queryable dataset/column catalog `GET /api/v1/query/schema` answers with. */
2318
+ type QuerySchemaResult = paths["/api/v1/query/schema"]["get"]["responses"]["200"]["content"]["application/json"];
2319
+ /**
2320
+ * The body a query request sends.
2321
+ *
2322
+ * Derived from the generated request body so a contract change to what the
2323
+ * endpoint accepts breaks this at compile time rather than drifting silently.
2324
+ */
2325
+ type QueryRunParams = NonNullable<paths["/api/v1/query"]["post"]["requestBody"]>["content"]["application/json"];
2326
+ /**
2327
+ * Typed client for the LangWatchQL query doors (`POST /api/v1/query` and
2328
+ * `GET /api/v1/query/schema`) — the same governed query surface the workbench
2329
+ * and saved charts run through, exposed directly rather than only via a saved
2330
+ * chart's statement.
2331
+ *
2332
+ * Unlike the chart family, these routes carry no `projectId` in their path or
2333
+ * body — the generated operations declare `path?: never`. Project scope is
2334
+ * resolved once, when the underlying `LangwatchApiClient` is built
2335
+ * (`createLangWatchApiClient` bakes `scopedProjectId() ?? LANGWATCH_PROJECT_ID`
2336
+ * into that client's `Authorization`/`Basic` header at construction time —
2337
+ * see `src/internal/api/client.ts` and `src/internal/api/auth.ts`). A
2338
+ * per-call `projectId()` resolution the way `ChartsApiService` has one would
2339
+ * therefore be dead code here: there is no URL slot to put it in, and it
2340
+ * cannot retroactively change a header already baked into an existing
2341
+ * client. It would also wrongly force every caller to have a project in
2342
+ * scope — legacy `sk-lw-*` project keys carry their own project identity and
2343
+ * need none (see `buildAuthHeaders`). So this service takes the plain,
2344
+ * project-implicit config `AnalyticsApiService` does, and lets the api
2345
+ * client resolve the credential itself.
2346
+ */
2347
+ declare class QueryApiService {
2348
+ private readonly apiClient;
2349
+ constructor(config?: Pick<InternalConfig, "langwatchApiClient">);
2350
+ private handleApiError;
2351
+ /**
2352
+ * Runs one read-only LangWatchQL `SELECT` over the analytics datasets and
2353
+ * returns typed columns, rows, execution statistics, truncation state and
2354
+ * diagnostics, scoped to the caller's project.
2355
+ */
2356
+ query(params: QueryRunParams): Promise<QueryRunResult>;
2357
+ /**
2358
+ * Lists the LangWatchQL analytics datasets this key may query, with each
2359
+ * column's type, description, the permissions that unlock it, and whether
2360
+ * this caller holds them — plus each dataset's grain, join keys,
2361
+ * partition-pruning time column, freshness and a runnable example query.
2362
+ */
2363
+ schema(): Promise<QuerySchemaResult>;
2364
+ }
2365
+
2315
2366
  type TriggerResponse = NonNullable<paths["/api/triggers"]["get"]["responses"]["200"]["content"]["application/json"]>[number];
2316
2367
  type CreateTriggerBody = NonNullable<paths["/api/triggers"]["post"]["requestBody"]>["content"]["application/json"];
2317
2368
  type UpdateTriggerBody = NonNullable<paths["/api/triggers/{id}"]["patch"]["requestBody"]>["content"]["application/json"];
@@ -3824,6 +3875,8 @@ declare class LangWatch {
3824
3875
  readonly dashboards: DashboardsApiService;
3825
3876
  readonly modelProviders: ModelProvidersApiService;
3826
3877
  readonly analytics: AnalyticsApiService;
3878
+ /** The raw LangWatchQL door — run a governed SELECT or discover the analytics schema directly, outside a saved chart. */
3879
+ readonly query: QueryApiService;
3827
3880
  readonly triggers: TriggersApiService;
3828
3881
  readonly graphs: GraphsApiService;
3829
3882
  readonly simulationRuns: SimulationRunsApiService;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { L as Logger, C as ConsoleLogger, N as NoOpLogger } from './index-D7rKIGrO.js';
2
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, a as getLangWatchTracer } from './implementation-D58yPTJW.js';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, a as getLangWatchTracer } from './implementation-rpImK8WS.js';
3
3
  import { z } from 'zod';
4
- import { p as paths, P as PromptResponse, C as CreatePromptBody, U as UpdatePromptBody, T as TagDefinition, a as CreatedTag, o as operations, b as PromptData, F as FetchPolicy, c as Prompt, L as LangWatchSpan, d as components } from './types-D_YNU-VL.js';
4
+ import { p as paths, P as PromptResponse, C as CreatePromptBody, U as UpdatePromptBody, T as TagDefinition, a as CreatedTag, o as operations, b as PromptData, F as FetchPolicy, c as Prompt, L as LangWatchSpan, d as components } from './types-Cr25FO-i.js';
5
5
  import openApiCreateClient from 'openapi-fetch';
6
6
  export { l as attributes } from './types-VOZv9LYO.js';
7
7
  import { CliHandledErrorReason, CliHandledError } from '@langwatch/langy/cards/handled-error';
@@ -2312,6 +2312,57 @@ declare class AnalyticsApiService {
2312
2312
  timeseries(params: AnalyticsTimeseriesBody): Promise<AnalyticsTimeseriesResponse>;
2313
2313
  }
2314
2314
 
2315
+ /** The typed columns/rows/statistics payload `POST /api/v1/query` answers with. */
2316
+ type QueryRunResult = paths["/api/v1/query"]["post"]["responses"]["200"]["content"]["application/json"];
2317
+ /** The queryable dataset/column catalog `GET /api/v1/query/schema` answers with. */
2318
+ type QuerySchemaResult = paths["/api/v1/query/schema"]["get"]["responses"]["200"]["content"]["application/json"];
2319
+ /**
2320
+ * The body a query request sends.
2321
+ *
2322
+ * Derived from the generated request body so a contract change to what the
2323
+ * endpoint accepts breaks this at compile time rather than drifting silently.
2324
+ */
2325
+ type QueryRunParams = NonNullable<paths["/api/v1/query"]["post"]["requestBody"]>["content"]["application/json"];
2326
+ /**
2327
+ * Typed client for the LangWatchQL query doors (`POST /api/v1/query` and
2328
+ * `GET /api/v1/query/schema`) — the same governed query surface the workbench
2329
+ * and saved charts run through, exposed directly rather than only via a saved
2330
+ * chart's statement.
2331
+ *
2332
+ * Unlike the chart family, these routes carry no `projectId` in their path or
2333
+ * body — the generated operations declare `path?: never`. Project scope is
2334
+ * resolved once, when the underlying `LangwatchApiClient` is built
2335
+ * (`createLangWatchApiClient` bakes `scopedProjectId() ?? LANGWATCH_PROJECT_ID`
2336
+ * into that client's `Authorization`/`Basic` header at construction time —
2337
+ * see `src/internal/api/client.ts` and `src/internal/api/auth.ts`). A
2338
+ * per-call `projectId()` resolution the way `ChartsApiService` has one would
2339
+ * therefore be dead code here: there is no URL slot to put it in, and it
2340
+ * cannot retroactively change a header already baked into an existing
2341
+ * client. It would also wrongly force every caller to have a project in
2342
+ * scope — legacy `sk-lw-*` project keys carry their own project identity and
2343
+ * need none (see `buildAuthHeaders`). So this service takes the plain,
2344
+ * project-implicit config `AnalyticsApiService` does, and lets the api
2345
+ * client resolve the credential itself.
2346
+ */
2347
+ declare class QueryApiService {
2348
+ private readonly apiClient;
2349
+ constructor(config?: Pick<InternalConfig, "langwatchApiClient">);
2350
+ private handleApiError;
2351
+ /**
2352
+ * Runs one read-only LangWatchQL `SELECT` over the analytics datasets and
2353
+ * returns typed columns, rows, execution statistics, truncation state and
2354
+ * diagnostics, scoped to the caller's project.
2355
+ */
2356
+ query(params: QueryRunParams): Promise<QueryRunResult>;
2357
+ /**
2358
+ * Lists the LangWatchQL analytics datasets this key may query, with each
2359
+ * column's type, description, the permissions that unlock it, and whether
2360
+ * this caller holds them — plus each dataset's grain, join keys,
2361
+ * partition-pruning time column, freshness and a runnable example query.
2362
+ */
2363
+ schema(): Promise<QuerySchemaResult>;
2364
+ }
2365
+
2315
2366
  type TriggerResponse = NonNullable<paths["/api/triggers"]["get"]["responses"]["200"]["content"]["application/json"]>[number];
2316
2367
  type CreateTriggerBody = NonNullable<paths["/api/triggers"]["post"]["requestBody"]>["content"]["application/json"];
2317
2368
  type UpdateTriggerBody = NonNullable<paths["/api/triggers/{id}"]["patch"]["requestBody"]>["content"]["application/json"];
@@ -3824,6 +3875,8 @@ declare class LangWatch {
3824
3875
  readonly dashboards: DashboardsApiService;
3825
3876
  readonly modelProviders: ModelProvidersApiService;
3826
3877
  readonly analytics: AnalyticsApiService;
3878
+ /** The raw LangWatchQL door — run a governed SELECT or discover the analytics schema directly, outside a saved chart. */
3879
+ readonly query: QueryApiService;
3827
3880
  readonly triggers: TriggersApiService;
3828
3881
  readonly graphs: GraphsApiService;
3829
3882
  readonly simulationRuns: SimulationRunsApiService;
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ var _chunk4ERRCKOHjs = require('./chunk-4ERRCKOH.js');
9
9
 
10
10
 
11
11
 
12
- var _chunkAJDFFRSWjs = require('./chunk-AJDFFRSW.js');
12
+ var _chunkQLYKPPAWjs = require('./chunk-QLYKPPAW.js');
13
13
 
14
14
 
15
15
 
@@ -20,7 +20,7 @@ var _chunkAJDFFRSWjs = require('./chunk-AJDFFRSW.js');
20
20
 
21
21
 
22
22
 
23
- var _chunk2PD3YA5Hjs = require('./chunk-2PD3YA5H.js');
23
+ var _chunk3WIN2UXZjs = require('./chunk-3WIN2UXZ.js');
24
24
 
25
25
 
26
26
 
@@ -329,7 +329,7 @@ var PromptServiceTracingDecorator = class {
329
329
  };
330
330
 
331
331
  // src/client-sdk/services/prompts/tracing/tracer.ts
332
- var tracer = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunk2PD3YA5Hjs.LANGWATCH_SDK_NAME_CLIENT}.prompts`, _chunk2PD3YA5Hjs.LANGWATCH_SDK_VERSION);
332
+ var tracer = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunk3WIN2UXZjs.LANGWATCH_SDK_NAME_CLIENT}.prompts`, _chunk3WIN2UXZjs.LANGWATCH_SDK_VERSION);
333
333
 
334
334
  // src/client-sdk/tracing/create-tracing-proxy.ts
335
335
  var _api = require('@opentelemetry/api');
@@ -676,14 +676,14 @@ var handledErrorMiddleware = {
676
676
  };
677
677
  var createLangWatchApiClient = (apiKey = ((_b) => (_b = ((_a) => (_a = scopedApiKey()) != null ? _a : process.env.LANGWATCH_API_KEY)()) != null ? _b : "")(), endpoint, projectId = ((_c) => (_c = scopedProjectId()) != null ? _c : process.env.LANGWATCH_PROJECT_ID)()) => {
678
678
  const client = _openapifetch2.default.call(void 0, {
679
- baseUrl: _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, endpoint),
680
- headers: _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey, projectId })), {
679
+ baseUrl: _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, endpoint),
680
+ headers: _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey, projectId })), {
681
681
  "content-type": "application/json",
682
- "user-agent": `langwatch-sdk-node/${_chunk2PD3YA5Hjs.version}`,
683
- "x-langwatch-sdk-name": _chunk2PD3YA5Hjs.LANGWATCH_SDK_NAME_OBSERVABILITY,
684
- "x-langwatch-sdk-language": _chunk2PD3YA5Hjs.LANGWATCH_SDK_LANGUAGE,
685
- "x-langwatch-sdk-version": _chunk2PD3YA5Hjs.LANGWATCH_SDK_VERSION,
686
- "x-langwatch-sdk-platform": _chunk2PD3YA5Hjs.LANGWATCH_SDK_RUNTIME.call(void 0, )
682
+ "user-agent": `langwatch-sdk-node/${_chunk3WIN2UXZjs.version}`,
683
+ "x-langwatch-sdk-name": _chunk3WIN2UXZjs.LANGWATCH_SDK_NAME_OBSERVABILITY,
684
+ "x-langwatch-sdk-language": _chunk3WIN2UXZjs.LANGWATCH_SDK_LANGUAGE,
685
+ "x-langwatch-sdk-version": _chunk3WIN2UXZjs.LANGWATCH_SDK_VERSION,
686
+ "x-langwatch-sdk-platform": _chunk3WIN2UXZjs.LANGWATCH_SDK_RUNTIME.call(void 0, )
687
687
  })
688
688
  });
689
689
  client.use(handledErrorMiddleware);
@@ -1960,12 +1960,12 @@ var DatasetPlanLimitError = class extends DatasetError {
1960
1960
  };
1961
1961
 
1962
1962
  // src/client-sdk/services/datasets/tracing/tracer.ts
1963
- var tracer2 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunk2PD3YA5Hjs.LANGWATCH_SDK_NAME_CLIENT}.datasets`, _chunk2PD3YA5Hjs.LANGWATCH_SDK_VERSION);
1963
+ var tracer2 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunk3WIN2UXZjs.LANGWATCH_SDK_NAME_CLIENT}.datasets`, _chunk3WIN2UXZjs.LANGWATCH_SDK_VERSION);
1964
1964
 
1965
1965
  // src/client-sdk/services/datasets/dataset.service.ts
1966
1966
  var DatasetService = class {
1967
1967
  constructor(config) {
1968
- this.config = _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, config), { endpoint: _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config.endpoint) });
1968
+ this.config = _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, config), { endpoint: _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config.endpoint) });
1969
1969
  return createTracingProxy(this, tracer2);
1970
1970
  }
1971
1971
  /**
@@ -2246,7 +2246,7 @@ var DatasetService = class {
2246
2246
  const url = `${endpoint}${path2}`;
2247
2247
  const response = await fetch(url, {
2248
2248
  method: "POST",
2249
- headers: _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey }),
2249
+ headers: _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey }),
2250
2250
  body: formData
2251
2251
  });
2252
2252
  if (!response.ok) {
@@ -2945,7 +2945,7 @@ var Experiment = class _Experiment {
2945
2945
  this.experimentSlug = name;
2946
2946
  this.runId = (_a = options.runId) != null ? _a : generateHumanReadableId();
2947
2947
  this.apiClient = options.apiClient;
2948
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, options.endpoint);
2948
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, options.endpoint);
2949
2949
  this.apiKey = options.apiKey;
2950
2950
  this.logger = options.logger;
2951
2951
  this.concurrency = (_b = options.concurrency) != null ? _b : DEFAULT_CONCURRENCY;
@@ -2955,7 +2955,7 @@ var Experiment = class _Experiment {
2955
2955
  * Initialize an evaluation session
2956
2956
  */
2957
2957
  static async init(name, options) {
2958
- _chunkAJDFFRSWjs.ensureSetup.call(void 0, );
2958
+ _chunkQLYKPPAWjs.ensureSetup.call(void 0, );
2959
2959
  const experiment = new _Experiment(name, options);
2960
2960
  await experiment.initialize();
2961
2961
  return experiment;
@@ -2974,7 +2974,7 @@ var Experiment = class _Experiment {
2974
2974
  method: "POST",
2975
2975
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
2976
2976
  "Content-Type": "application/json"
2977
- }, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
2977
+ }, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
2978
2978
  body: JSON.stringify({
2979
2979
  experiment_name: this.name,
2980
2980
  experiment_slug: this.experimentSlug,
@@ -3330,7 +3330,7 @@ var Experiment = class _Experiment {
3330
3330
  method: "POST",
3331
3331
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
3332
3332
  "Content-Type": "application/json"
3333
- }, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3333
+ }, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3334
3334
  body: JSON.stringify({
3335
3335
  trace_id: traceId != null ? traceId : null,
3336
3336
  span_id: spanId != null ? spanId : null,
@@ -3867,7 +3867,7 @@ var Experiment = class _Experiment {
3867
3867
  method: "POST",
3868
3868
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
3869
3869
  "Content-Type": "application/json"
3870
- }, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3870
+ }, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3871
3871
  body: JSON.stringify(body)
3872
3872
  }).then((response) => {
3873
3873
  if (!response.ok) {
@@ -4855,7 +4855,7 @@ var EvaluationsFacade = class {
4855
4855
  method: "POST",
4856
4856
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
4857
4857
  "Content-Type": "application/json"
4858
- }, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey: _chunkLCG5Y2EGjs.__privateGet.call(void 0, this, _apiKey) })),
4858
+ }, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey: _chunkLCG5Y2EGjs.__privateGet.call(void 0, this, _apiKey) })),
4859
4859
  body: JSON.stringify(requestBody)
4860
4860
  });
4861
4861
  if (!response.ok) {
@@ -5389,7 +5389,7 @@ var WorkflowsApiError = class extends Error {
5389
5389
  var WorkflowsApiService = class {
5390
5390
  constructor(config) {
5391
5391
  var _a;
5392
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5392
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5393
5393
  this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : createLangWatchApiClient(void 0, this.endpoint);
5394
5394
  this.experimentsApiService = new ExperimentsApiService({
5395
5395
  langwatchApiClient: this.apiClient
@@ -5778,6 +5778,61 @@ var AnalyticsApiService = class {
5778
5778
  }
5779
5779
  };
5780
5780
 
5781
+ // src/client-sdk/services/query/query-api.service.ts
5782
+ var QueryApiError = class extends Error {
5783
+ constructor(message, operation, originalError, status) {
5784
+ super(message);
5785
+ this.operation = operation;
5786
+ this.originalError = originalError;
5787
+ this.status = status;
5788
+ this.name = "QueryApiError";
5789
+ }
5790
+ };
5791
+ var QueryApiService = class {
5792
+ constructor(config) {
5793
+ var _a;
5794
+ this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : createLangWatchApiClient();
5795
+ }
5796
+ handleApiError(operation, error, response) {
5797
+ var _a;
5798
+ const status = (_a = response == null ? void 0 : response.status) != null ? _a : extractStatusFromResponse(error);
5799
+ const message = formatApiErrorForOperation({
5800
+ operation,
5801
+ error,
5802
+ options: { status }
5803
+ });
5804
+ throwIfHandledError({ operation, error, response, message });
5805
+ throw new QueryApiError(message, operation, error, status);
5806
+ }
5807
+ /**
5808
+ * Runs one read-only LangWatchQL `SELECT` over the analytics datasets and
5809
+ * returns typed columns, rows, execution statistics, truncation state and
5810
+ * diagnostics, scoped to the caller's project.
5811
+ */
5812
+ async query(params) {
5813
+ const { data, error, response } = await this.apiClient.POST(
5814
+ "/api/v1/query",
5815
+ { body: params }
5816
+ );
5817
+ if (error) this.handleApiError("run query", error, response);
5818
+ return data;
5819
+ }
5820
+ /**
5821
+ * Lists the LangWatchQL analytics datasets this key may query, with each
5822
+ * column's type, description, the permissions that unlock it, and whether
5823
+ * this caller holds them — plus each dataset's grain, join keys,
5824
+ * partition-pruning time column, freshness and a runnable example query.
5825
+ */
5826
+ async schema() {
5827
+ const { data, error, response } = await this.apiClient.GET(
5828
+ "/api/v1/query/schema",
5829
+ {}
5830
+ );
5831
+ if (error) this.handleApiError("discover query schema", error, response);
5832
+ return data;
5833
+ }
5834
+ };
5835
+
5781
5836
  // src/client-sdk/services/triggers/triggers-api.service.ts
5782
5837
  var TriggersApiError = class extends Error {
5783
5838
  constructor(message, operation, originalError) {
@@ -5955,12 +6010,12 @@ var MonitorsApiService = class {
5955
6010
  constructor(config) {
5956
6011
  var _a, _b, _c;
5957
6012
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
5958
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6013
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5959
6014
  }
5960
6015
  async request(path2, options) {
5961
6016
  var _a, _b;
5962
6017
  const response = await fetch(`${this.endpoint}${path2}`, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, options), {
5963
- headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
6018
+ headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
5964
6019
  "Content-Type": "application/json"
5965
6020
  }), options == null ? void 0 : options.headers)
5966
6021
  }));
@@ -6030,12 +6085,12 @@ var SecretsApiService = class {
6030
6085
  constructor(config) {
6031
6086
  var _a, _b, _c;
6032
6087
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6033
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6088
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6034
6089
  }
6035
6090
  async request(path2, options) {
6036
6091
  var _a, _b;
6037
6092
  const response = await fetch(`${this.endpoint}${path2}`, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, options), {
6038
- headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunk2PD3YA5Hjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
6093
+ headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunk3WIN2UXZjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
6039
6094
  "Content-Type": "application/json"
6040
6095
  }), options == null ? void 0 : options.headers)
6041
6096
  }));
@@ -6165,7 +6220,7 @@ var VirtualKeysApiError = class extends Error {
6165
6220
  var VirtualKeysApiService = class {
6166
6221
  constructor(config) {
6167
6222
  var _a, _b, _c, _d;
6168
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6223
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6169
6224
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6170
6225
  this.projectId = (_d = config == null ? void 0 : config.projectId) != null ? _d : process.env.LANGWATCH_PROJECT_ID;
6171
6226
  }
@@ -6393,7 +6448,7 @@ var GatewayBudgetsApiError = class extends Error {
6393
6448
  var GatewayBudgetsApiService = class {
6394
6449
  constructor(config) {
6395
6450
  var _a, _b, _c, _d;
6396
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6451
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6397
6452
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6398
6453
  this.projectId = (_d = config == null ? void 0 : config.projectId) != null ? _d : process.env.LANGWATCH_PROJECT_ID;
6399
6454
  }
@@ -6652,7 +6707,7 @@ var SpendEventsApiError = class extends Error {
6652
6707
  var SpendEventsApiService = class {
6653
6708
  constructor(config) {
6654
6709
  var _a, _b, _c;
6655
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6710
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6656
6711
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6657
6712
  }
6658
6713
  async request(operation, path2, init) {
@@ -6869,7 +6924,7 @@ var WebhooksApiError = class extends Error {
6869
6924
  var WebhooksApiService = class {
6870
6925
  constructor(config) {
6871
6926
  var _a, _b, _c;
6872
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6927
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6873
6928
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6874
6929
  }
6875
6930
  async request(operation, path2, init) {
@@ -7206,7 +7261,7 @@ var TeamsApiService = class {
7206
7261
  constructor(config) {
7207
7262
  _chunkLCG5Y2EGjs.__privateAdd.call(void 0, this, _request);
7208
7263
  _chunkLCG5Y2EGjs.__privateSet.call(void 0, this, _request, createManagementRequest({
7209
- endpoint: _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint),
7264
+ endpoint: _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint),
7210
7265
  token: resolveManagementToken({ apiKey: config == null ? void 0 : config.apiKey }),
7211
7266
  errorFactory: ({ message, operation, body }) => new TeamsApiError(message, operation, body)
7212
7267
  }));
@@ -7293,7 +7348,7 @@ var ProjectsApiError = class extends Error {
7293
7348
  var ProjectsApiService = class {
7294
7349
  constructor(config) {
7295
7350
  var _a, _b, _c;
7296
- this.endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
7351
+ this.endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
7297
7352
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
7298
7353
  }
7299
7354
  /**
@@ -7391,7 +7446,7 @@ var TracesError = class extends Error {
7391
7446
  };
7392
7447
 
7393
7448
  // src/client-sdk/services/traces/tracing/tracer.ts
7394
- var tracer3 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunk2PD3YA5Hjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunk2PD3YA5Hjs.LANGWATCH_SDK_VERSION);
7449
+ var tracer3 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunk3WIN2UXZjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunk3WIN2UXZjs.LANGWATCH_SDK_VERSION);
7395
7450
 
7396
7451
  // src/client-sdk/services/traces/service.ts
7397
7452
  var TracesService = class {
@@ -7463,7 +7518,7 @@ var LangWatch = class {
7463
7518
  _chunkLCG5Y2EGjs.__privateAdd.call(void 0, this, _projects);
7464
7519
  var _a, _b, _c;
7465
7520
  const apiKey = (_c = (_b = (_a = options.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
7466
- const endpoint = _chunkAJDFFRSWjs.resolveEndpoint.call(void 0, options.endpoint);
7521
+ const endpoint = _chunkQLYKPPAWjs.resolveEndpoint.call(void 0, options.endpoint);
7467
7522
  this.config = _chunkLCG5Y2EGjs.__privateMethod.call(void 0, this, _LangWatch_instances, createInternalConfig_fn).call(this, {
7468
7523
  apiKey,
7469
7524
  endpoint,
@@ -7502,6 +7557,7 @@ var LangWatch = class {
7502
7557
  this.dashboards = new DashboardsApiService(this.config);
7503
7558
  this.modelProviders = new ModelProvidersApiService(this.config);
7504
7559
  this.analytics = new AnalyticsApiService(this.config);
7560
+ this.query = new QueryApiService(this.config);
7505
7561
  this.triggers = new TriggersApiService(this.config);
7506
7562
  this.graphs = new GraphsApiService(this.config);
7507
7563
  this.simulationRuns = new SimulationRunsApiService(this.config);
@@ -7705,5 +7761,5 @@ var logger = {
7705
7761
 
7706
7762
 
7707
7763
 
7708
- exports.ComparisonError = ComparisonError; exports.DatasetApiError = DatasetApiError; exports.DatasetError = DatasetError; exports.DatasetNotFoundError = DatasetNotFoundError; exports.DatasetPlanLimitError = DatasetPlanLimitError; exports.DatasetValidationError = DatasetValidationError; exports.DatasetsFacade = DatasetsFacade; exports.EvaluationError = EvaluationError; exports.EvaluationsApiError = EvaluationsApiError; exports.EvaluationsFacade = EvaluationsFacade; exports.EvaluatorCallError = EvaluatorCallError; exports.EvaluatorError = EvaluatorError; exports.EvaluatorNotFoundError = EvaluatorNotFoundError; exports.EvaluatorsApiError = EvaluatorsApiError; exports.EvaluatorsApiService = EvaluatorsApiService; exports.Experiment = Experiment; exports.ExperimentApiError = ExperimentApiError; exports.ExperimentError = ExperimentError; exports.ExperimentInitError = ExperimentInitError; exports.ExperimentsFacade = ExperimentsFacade; exports.FetchPolicy = FetchPolicy; exports.FilterableBatchSpanProcessor = _chunk73QOHSHUjs.FilterableBatchSpanProcessor; exports.GatewayBudgetsApiError = GatewayBudgetsApiError; exports.GatewayBudgetsApiService = GatewayBudgetsApiService; exports.IDEMPOTENCY_KEY_HEADER = IDEMPOTENCY_KEY_HEADER; exports.IDEMPOTENT_REPLAY_HEADER = IDEMPOTENT_REPLAY_HEADER; exports.LangWatch = LangWatch; exports.LangWatchApiError = LangWatchApiError; exports.LangWatchExporter = _chunk2PD3YA5Hjs.LangWatchTraceExporter; exports.LangWatchHandledError = LangWatchHandledError; exports.ProjectsApiError = ProjectsApiError; exports.ProjectsApiService = ProjectsApiService; exports.SpendEventsApiError = SpendEventsApiError; exports.SpendEventsApiService = SpendEventsApiService; exports.TargetMetadataConflictError = TargetMetadataConflictError; exports.TeamsApiError = TeamsApiError; exports.TeamsApiService = TeamsApiService; exports.VirtualKeysApiError = VirtualKeysApiError; exports.VirtualKeysApiService = VirtualKeysApiService; exports.WEBHOOK_DELIVERY_ID_HEADER = WEBHOOK_DELIVERY_ID_HEADER; exports.WEBHOOK_EVENT_ID_HEADER = WEBHOOK_EVENT_ID_HEADER; exports.WEBHOOK_SIGNATURE_DEFAULT_TOLERANCE_SECONDS = WEBHOOK_SIGNATURE_DEFAULT_TOLERANCE_SECONDS; exports.WEBHOOK_SIGNATURE_HEADER = WEBHOOK_SIGNATURE_HEADER; exports.WebhookSignatureVerificationError = WebhookSignatureVerificationError; exports.WebhooksApiError = WebhooksApiError; exports.WebhooksApiService = WebhooksApiService; exports.attributes = _chunkLCG5Y2EGjs.attributes_exports; exports.getLangWatchLogger = _chunk2PD3YA5Hjs.getLangWatchLogger; exports.getLangWatchTracer = _chunk4ERRCKOHjs.getLangWatchTracer; exports.isLangWatchHandledError = isLangWatchHandledError; exports.logger = logger; exports.verifyWebhookSignature = verifyWebhookSignature;
7764
+ exports.ComparisonError = ComparisonError; exports.DatasetApiError = DatasetApiError; exports.DatasetError = DatasetError; exports.DatasetNotFoundError = DatasetNotFoundError; exports.DatasetPlanLimitError = DatasetPlanLimitError; exports.DatasetValidationError = DatasetValidationError; exports.DatasetsFacade = DatasetsFacade; exports.EvaluationError = EvaluationError; exports.EvaluationsApiError = EvaluationsApiError; exports.EvaluationsFacade = EvaluationsFacade; exports.EvaluatorCallError = EvaluatorCallError; exports.EvaluatorError = EvaluatorError; exports.EvaluatorNotFoundError = EvaluatorNotFoundError; exports.EvaluatorsApiError = EvaluatorsApiError; exports.EvaluatorsApiService = EvaluatorsApiService; exports.Experiment = Experiment; exports.ExperimentApiError = ExperimentApiError; exports.ExperimentError = ExperimentError; exports.ExperimentInitError = ExperimentInitError; exports.ExperimentsFacade = ExperimentsFacade; exports.FetchPolicy = FetchPolicy; exports.FilterableBatchSpanProcessor = _chunk73QOHSHUjs.FilterableBatchSpanProcessor; exports.GatewayBudgetsApiError = GatewayBudgetsApiError; exports.GatewayBudgetsApiService = GatewayBudgetsApiService; exports.IDEMPOTENCY_KEY_HEADER = IDEMPOTENCY_KEY_HEADER; exports.IDEMPOTENT_REPLAY_HEADER = IDEMPOTENT_REPLAY_HEADER; exports.LangWatch = LangWatch; exports.LangWatchApiError = LangWatchApiError; exports.LangWatchExporter = _chunk3WIN2UXZjs.LangWatchTraceExporter; exports.LangWatchHandledError = LangWatchHandledError; exports.ProjectsApiError = ProjectsApiError; exports.ProjectsApiService = ProjectsApiService; exports.SpendEventsApiError = SpendEventsApiError; exports.SpendEventsApiService = SpendEventsApiService; exports.TargetMetadataConflictError = TargetMetadataConflictError; exports.TeamsApiError = TeamsApiError; exports.TeamsApiService = TeamsApiService; exports.VirtualKeysApiError = VirtualKeysApiError; exports.VirtualKeysApiService = VirtualKeysApiService; exports.WEBHOOK_DELIVERY_ID_HEADER = WEBHOOK_DELIVERY_ID_HEADER; exports.WEBHOOK_EVENT_ID_HEADER = WEBHOOK_EVENT_ID_HEADER; exports.WEBHOOK_SIGNATURE_DEFAULT_TOLERANCE_SECONDS = WEBHOOK_SIGNATURE_DEFAULT_TOLERANCE_SECONDS; exports.WEBHOOK_SIGNATURE_HEADER = WEBHOOK_SIGNATURE_HEADER; exports.WebhookSignatureVerificationError = WebhookSignatureVerificationError; exports.WebhooksApiError = WebhooksApiError; exports.WebhooksApiService = WebhooksApiService; exports.attributes = _chunkLCG5Y2EGjs.attributes_exports; exports.getLangWatchLogger = _chunk3WIN2UXZjs.getLangWatchLogger; exports.getLangWatchTracer = _chunk4ERRCKOHjs.getLangWatchTracer; exports.isLangWatchHandledError = isLangWatchHandledError; exports.logger = logger; exports.verifyWebhookSignature = verifyWebhookSignature;
7709
7765
  //# sourceMappingURL=index.js.map