langwatch 1.8.0 → 1.9.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 (28) hide show
  1. package/dist/{chunk-W6NUS5XK.mjs → chunk-4XQHESU7.mjs} +2 -2
  2. package/dist/{chunk-W6NUS5XK.mjs.map → chunk-4XQHESU7.mjs.map} +1 -1
  3. package/dist/{chunk-YEKLDVGO.mjs → chunk-A52LX4C4.mjs} +2 -2
  4. package/dist/{chunk-KS7O6FTO.js → chunk-HUMHSRVP.js} +12 -12
  5. package/dist/{chunk-KS7O6FTO.js.map → chunk-HUMHSRVP.js.map} +1 -1
  6. package/dist/{chunk-FJ6JSLLE.js → chunk-NFFB3DWW.js} +2 -2
  7. package/dist/{chunk-FJ6JSLLE.js.map → chunk-NFFB3DWW.js.map} +1 -1
  8. package/dist/cli/bundle.js +346 -240
  9. package/dist/{implementation-Di0CB66C.d.ts → implementation-BvwOB77X.d.ts} +1 -1
  10. package/dist/{implementation-CMvLlYDH.d.mts → implementation-C1F0eCHp.d.mts} +1 -1
  11. package/dist/index.d.mts +24 -3
  12. package/dist/index.d.ts +24 -3
  13. package/dist/index.js +171 -40
  14. package/dist/index.js.map +1 -1
  15. package/dist/index.mjs +140 -9
  16. package/dist/index.mjs.map +1 -1
  17. package/dist/observability-sdk/index.d.mts +3 -3
  18. package/dist/observability-sdk/index.d.ts +3 -3
  19. package/dist/observability-sdk/index.js +2 -2
  20. package/dist/observability-sdk/index.mjs +1 -1
  21. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
  22. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
  23. package/dist/observability-sdk/setup/node/index.js +3 -3
  24. package/dist/observability-sdk/setup/node/index.mjs +2 -2
  25. package/dist/{types-DQqmFCDl.d.mts → types-C3NpCWi_.d.mts} +1333 -425
  26. package/dist/{types-Cg_frfBV.d.ts → types-jx13nj4M.d.ts} +1333 -425
  27. package/package.json +1 -1
  28. /package/dist/{chunk-YEKLDVGO.mjs.map → chunk-A52LX4C4.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.js';
6
6
  import { TracerProvider } from '@opentelemetry/api';
7
- import { j as LangWatchTracer } from './types-Cg_frfBV.js';
7
+ import { j as LangWatchTracer } from './types-jx13nj4M.js';
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.mjs';
6
6
  import { TracerProvider } from '@opentelemetry/api';
7
- import { j as LangWatchTracer } from './types-DQqmFCDl.mjs';
7
+ import { j as LangWatchTracer } from './types-C3NpCWi_.mjs';
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-CMvLlYDH.mjs';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, a as getLangWatchTracer } from './implementation-C1F0eCHp.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-DQqmFCDl.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-C3NpCWi_.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';
@@ -3553,7 +3553,21 @@ interface ArchivedProject {
3553
3553
  declare class ProjectsApiError extends Error {
3554
3554
  readonly operation: string;
3555
3555
  readonly originalError?: unknown | undefined;
3556
- constructor(message: string, operation: string, originalError?: unknown | undefined);
3556
+ /**
3557
+ * The status the platform answered with. Callers that resolve a
3558
+ * `--project` selector through the listing branch on it: a 401/403 means
3559
+ * the credential cannot see the listing at all, which is a different
3560
+ * answer to the user than "no project of yours matches this name".
3561
+ */
3562
+ readonly status?: number | undefined;
3563
+ constructor(message: string, operation: string, originalError?: unknown | undefined,
3564
+ /**
3565
+ * The status the platform answered with. Callers that resolve a
3566
+ * `--project` selector through the listing branch on it: a 401/403 means
3567
+ * the credential cannot see the listing at all, which is a different
3568
+ * answer to the user than "no project of yours matches this name".
3569
+ */
3570
+ status?: number | undefined);
3557
3571
  }
3558
3572
  declare class ProjectsApiService {
3559
3573
  private readonly endpoint;
@@ -3562,6 +3576,13 @@ declare class ProjectsApiService {
3562
3576
  endpoint?: string;
3563
3577
  apiKey?: string;
3564
3578
  });
3579
+ /**
3580
+ * Bearer, never the project-pinned Basic shape the data routes use. The
3581
+ * listing is the question "which projects can this credential see?", so
3582
+ * naming one project in the header would scope the answer to that project
3583
+ * and defeat the call — including the `--project <slug>` lookup, which reads
3584
+ * the listing precisely because it does not know the id yet.
3585
+ */
3565
3586
  private headers;
3566
3587
  private request;
3567
3588
  list(options?: {
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-Di0CB66C.js';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, a as getLangWatchTracer } from './implementation-BvwOB77X.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-Cg_frfBV.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-jx13nj4M.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';
@@ -3553,7 +3553,21 @@ interface ArchivedProject {
3553
3553
  declare class ProjectsApiError extends Error {
3554
3554
  readonly operation: string;
3555
3555
  readonly originalError?: unknown | undefined;
3556
- constructor(message: string, operation: string, originalError?: unknown | undefined);
3556
+ /**
3557
+ * The status the platform answered with. Callers that resolve a
3558
+ * `--project` selector through the listing branch on it: a 401/403 means
3559
+ * the credential cannot see the listing at all, which is a different
3560
+ * answer to the user than "no project of yours matches this name".
3561
+ */
3562
+ readonly status?: number | undefined;
3563
+ constructor(message: string, operation: string, originalError?: unknown | undefined,
3564
+ /**
3565
+ * The status the platform answered with. Callers that resolve a
3566
+ * `--project` selector through the listing branch on it: a 401/403 means
3567
+ * the credential cannot see the listing at all, which is a different
3568
+ * answer to the user than "no project of yours matches this name".
3569
+ */
3570
+ status?: number | undefined);
3557
3571
  }
3558
3572
  declare class ProjectsApiService {
3559
3573
  private readonly endpoint;
@@ -3562,6 +3576,13 @@ declare class ProjectsApiService {
3562
3576
  endpoint?: string;
3563
3577
  apiKey?: string;
3564
3578
  });
3579
+ /**
3580
+ * Bearer, never the project-pinned Basic shape the data routes use. The
3581
+ * listing is the question "which projects can this credential see?", so
3582
+ * naming one project in the header would scope the answer to that project
3583
+ * and defeat the call — including the `--project <slug>` lookup, which reads
3584
+ * the listing precisely because it does not know the id yet.
3585
+ */
3565
3586
  private headers;
3566
3587
  private request;
3567
3588
  list(options?: {
package/dist/index.js CHANGED
@@ -9,7 +9,7 @@ var _chunk4ERRCKOHjs = require('./chunk-4ERRCKOH.js');
9
9
 
10
10
 
11
11
 
12
- var _chunkKS7O6FTOjs = require('./chunk-KS7O6FTO.js');
12
+ var _chunkHUMHSRVPjs = require('./chunk-HUMHSRVP.js');
13
13
 
14
14
 
15
15
 
@@ -20,7 +20,7 @@ var _chunkKS7O6FTOjs = require('./chunk-KS7O6FTO.js');
20
20
 
21
21
 
22
22
 
23
- var _chunkFJ6JSLLEjs = require('./chunk-FJ6JSLLE.js');
23
+ var _chunkNFFB3DWWjs = require('./chunk-NFFB3DWW.js');
24
24
 
25
25
 
26
26
 
@@ -51,6 +51,9 @@ function currentHolder() {
51
51
  function scopedApiKey() {
52
52
  return currentHolder().apiKey;
53
53
  }
54
+ function scopedProjectId() {
55
+ return currentHolder().projectId;
56
+ }
54
57
 
55
58
  // src/cli/utils/responseFormat.ts
56
59
  var DEFAULT_TEXT_OUTPUT = {
@@ -326,7 +329,7 @@ var PromptServiceTracingDecorator = class {
326
329
  };
327
330
 
328
331
  // src/client-sdk/services/prompts/tracing/tracer.ts
329
- var tracer = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunkFJ6JSLLEjs.LANGWATCH_SDK_NAME_CLIENT}.prompts`, _chunkFJ6JSLLEjs.LANGWATCH_SDK_VERSION);
332
+ var tracer = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunkNFFB3DWWjs.LANGWATCH_SDK_NAME_CLIENT}.prompts`, _chunkNFFB3DWWjs.LANGWATCH_SDK_VERSION);
330
333
 
331
334
  // src/client-sdk/tracing/create-tracing-proxy.ts
332
335
  var _api = require('@opentelemetry/api');
@@ -424,7 +427,7 @@ var asSuggestions = (value) => {
424
427
  return suggestions.length > 0 ? suggestions : void 0;
425
428
  };
426
429
  var asErrorBody = (value) => {
427
- var _a, _b, _d;
430
+ var _a, _b, _c, _e, _g;
428
431
  const record = asRecord(value);
429
432
  if (!record) return null;
430
433
  if (isSystemError(record)) return null;
@@ -443,9 +446,23 @@ var asErrorBody = (value) => {
443
446
  docUrl: typeof serialized.docsUrl === "string" ? serialized.docsUrl : typeof serialized.docUrl === "string" ? serialized.docUrl : void 0
444
447
  };
445
448
  }
449
+ const canonical = asRecord(record.error);
450
+ if (canonical && !isSystemError(canonical) && (typeof canonical.code === "string" || typeof canonical.type === "string")) {
451
+ const code2 = typeof canonical.code === "string" ? canonical.code : canonical.type;
452
+ const _d = (_c = asRecord(canonical.meta)) != null ? _c : {}, { reasons: metaReasons } = _d, meta = _chunkLCG5Y2EGjs.__objRest.call(void 0, _d, ["reasons"]);
453
+ return {
454
+ code: code2,
455
+ message: typeof canonical.message === "string" && canonical.message !== code2 ? canonical.message : void 0,
456
+ meta,
457
+ traceId: typeof canonical.trace_id === "string" ? canonical.trace_id : void 0,
458
+ reasons: asReasons(metaReasons),
459
+ suggestions: (_e = asSuggestions(canonical.tips)) != null ? _e : asSuggestions(canonical.suggestions),
460
+ docUrl: typeof canonical.docs_url === "string" ? canonical.docs_url : void 0
461
+ };
462
+ }
446
463
  const named = typeof record.kind === "string" ? typeof record.code === "string" ? record.code : typeof record.type === "string" ? record.type : record.kind : typeof record.error === "string" ? record.error : looksLikeErrorEnvelope(record) ? typeof record.code === "string" ? record.code : typeof record.type === "string" ? record.type : null : null;
447
464
  if (named === null) return null;
448
- const _c = record, {
465
+ const _f = record, {
449
466
  error,
450
467
  message,
451
468
  kind,
@@ -464,7 +481,7 @@ var asErrorBody = (value) => {
464
481
  tips: tips,
465
482
  docsUrl,
466
483
  fault: fault
467
- } = _c, rest = _chunkLCG5Y2EGjs.__objRest.call(void 0, _c, [
484
+ } = _f, rest = _chunkLCG5Y2EGjs.__objRest.call(void 0, _f, [
468
485
  "error",
469
486
  "message",
470
487
  "kind",
@@ -503,7 +520,7 @@ var asErrorBody = (value) => {
503
520
  traceUrl: typeof traceUrl === "string" ? traceUrl : typeof (traceRecord == null ? void 0 : traceRecord.traceUrl) === "string" ? traceRecord.traceUrl : void 0,
504
521
  logsUrl: typeof logsUrl === "string" ? logsUrl : typeof (traceRecord == null ? void 0 : traceRecord.logsUrl) === "string" ? traceRecord.logsUrl : void 0,
505
522
  reasons: asReasons(reasons),
506
- suggestions: (_d = asSuggestions(tips)) != null ? _d : asSuggestions(suggestions),
523
+ suggestions: (_g = asSuggestions(tips)) != null ? _g : asSuggestions(suggestions),
507
524
  docUrl: typeof docsUrl === "string" ? docsUrl : typeof docUrl === "string" ? docUrl : void 0
508
525
  };
509
526
  };
@@ -657,16 +674,16 @@ var handledErrorMiddleware = {
657
674
  if (handledError) throw handledError;
658
675
  }
659
676
  };
660
- var createLangWatchApiClient = (apiKey = ((_b) => (_b = ((_a) => (_a = scopedApiKey()) != null ? _a : process.env.LANGWATCH_API_KEY)()) != null ? _b : "")(), endpoint, projectId = process.env.LANGWATCH_PROJECT_ID) => {
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)()) => {
661
678
  const client = _openapifetch2.default.call(void 0, {
662
- baseUrl: _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, endpoint),
663
- headers: _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey, projectId })), {
679
+ baseUrl: _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, endpoint),
680
+ headers: _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey, projectId })), {
664
681
  "content-type": "application/json",
665
- "user-agent": `langwatch-sdk-node/${_chunkFJ6JSLLEjs.version}`,
666
- "x-langwatch-sdk-name": _chunkFJ6JSLLEjs.LANGWATCH_SDK_NAME_OBSERVABILITY,
667
- "x-langwatch-sdk-language": _chunkFJ6JSLLEjs.LANGWATCH_SDK_LANGUAGE,
668
- "x-langwatch-sdk-version": _chunkFJ6JSLLEjs.LANGWATCH_SDK_VERSION,
669
- "x-langwatch-sdk-platform": _chunkFJ6JSLLEjs.LANGWATCH_SDK_RUNTIME.call(void 0, )
682
+ "user-agent": `langwatch-sdk-node/${_chunkNFFB3DWWjs.version}`,
683
+ "x-langwatch-sdk-name": _chunkNFFB3DWWjs.LANGWATCH_SDK_NAME_OBSERVABILITY,
684
+ "x-langwatch-sdk-language": _chunkNFFB3DWWjs.LANGWATCH_SDK_LANGUAGE,
685
+ "x-langwatch-sdk-version": _chunkNFFB3DWWjs.LANGWATCH_SDK_VERSION,
686
+ "x-langwatch-sdk-platform": _chunkNFFB3DWWjs.LANGWATCH_SDK_RUNTIME.call(void 0, )
670
687
  })
671
688
  });
672
689
  client.use(handledErrorMiddleware);
@@ -1943,12 +1960,12 @@ var DatasetPlanLimitError = class extends DatasetError {
1943
1960
  };
1944
1961
 
1945
1962
  // src/client-sdk/services/datasets/tracing/tracer.ts
1946
- var tracer2 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunkFJ6JSLLEjs.LANGWATCH_SDK_NAME_CLIENT}.datasets`, _chunkFJ6JSLLEjs.LANGWATCH_SDK_VERSION);
1963
+ var tracer2 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunkNFFB3DWWjs.LANGWATCH_SDK_NAME_CLIENT}.datasets`, _chunkNFFB3DWWjs.LANGWATCH_SDK_VERSION);
1947
1964
 
1948
1965
  // src/client-sdk/services/datasets/dataset.service.ts
1949
1966
  var DatasetService = class {
1950
1967
  constructor(config) {
1951
- this.config = _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, config), { endpoint: _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config.endpoint) });
1968
+ this.config = _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, config), { endpoint: _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config.endpoint) });
1952
1969
  return createTracingProxy(this, tracer2);
1953
1970
  }
1954
1971
  /**
@@ -2229,7 +2246,7 @@ var DatasetService = class {
2229
2246
  const url = `${endpoint}${path2}`;
2230
2247
  const response = await fetch(url, {
2231
2248
  method: "POST",
2232
- headers: _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey }),
2249
+ headers: _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey }),
2233
2250
  body: formData
2234
2251
  });
2235
2252
  if (!response.ok) {
@@ -2928,7 +2945,7 @@ var Experiment = class _Experiment {
2928
2945
  this.experimentSlug = name;
2929
2946
  this.runId = (_a = options.runId) != null ? _a : generateHumanReadableId();
2930
2947
  this.apiClient = options.apiClient;
2931
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, options.endpoint);
2948
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, options.endpoint);
2932
2949
  this.apiKey = options.apiKey;
2933
2950
  this.logger = options.logger;
2934
2951
  this.concurrency = (_b = options.concurrency) != null ? _b : DEFAULT_CONCURRENCY;
@@ -2938,7 +2955,7 @@ var Experiment = class _Experiment {
2938
2955
  * Initialize an evaluation session
2939
2956
  */
2940
2957
  static async init(name, options) {
2941
- _chunkKS7O6FTOjs.ensureSetup.call(void 0, );
2958
+ _chunkHUMHSRVPjs.ensureSetup.call(void 0, );
2942
2959
  const experiment = new _Experiment(name, options);
2943
2960
  await experiment.initialize();
2944
2961
  return experiment;
@@ -2957,7 +2974,7 @@ var Experiment = class _Experiment {
2957
2974
  method: "POST",
2958
2975
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
2959
2976
  "Content-Type": "application/json"
2960
- }, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
2977
+ }, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
2961
2978
  body: JSON.stringify({
2962
2979
  experiment_name: this.name,
2963
2980
  experiment_slug: this.experimentSlug,
@@ -3313,7 +3330,7 @@ var Experiment = class _Experiment {
3313
3330
  method: "POST",
3314
3331
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
3315
3332
  "Content-Type": "application/json"
3316
- }, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3333
+ }, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3317
3334
  body: JSON.stringify({
3318
3335
  trace_id: traceId != null ? traceId : null,
3319
3336
  span_id: spanId != null ? spanId : null,
@@ -3850,7 +3867,7 @@ var Experiment = class _Experiment {
3850
3867
  method: "POST",
3851
3868
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
3852
3869
  "Content-Type": "application/json"
3853
- }, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3870
+ }, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })),
3854
3871
  body: JSON.stringify(body)
3855
3872
  }).then((response) => {
3856
3873
  if (!response.ok) {
@@ -3993,6 +4010,107 @@ var ExperimentsApiService = class {
3993
4010
  if (error) this.handleApiError(`start experiment run for "${slug}"`, error);
3994
4011
  return data;
3995
4012
  }
4013
+ /**
4014
+ * Create an experiment.
4015
+ *
4016
+ * Sending no state creates a blank workbench with one inline dataset, so a
4017
+ * caller that only wants somewhere to put its setup does not have to build
4018
+ * one first.
4019
+ */
4020
+ async create({
4021
+ name,
4022
+ state
4023
+ } = {}) {
4024
+ const { data, error } = await this.apiClient.POST("/api/experiments", {
4025
+ body: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, name !== void 0 ? { name } : {}), state !== void 0 ? { state } : {})
4026
+ });
4027
+ if (error) this.handleApiError("create experiment", error);
4028
+ return data;
4029
+ }
4030
+ async getWorkbenchState({
4031
+ slug,
4032
+ fields
4033
+ }) {
4034
+ const { data, error } = await this.apiClient.GET(
4035
+ "/api/experiments/{slug}/workbench-state",
4036
+ {
4037
+ params: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
4038
+ path: { slug }
4039
+ }, fields !== void 0 ? { query: { fields } } : {})
4040
+ }
4041
+ );
4042
+ if (error) {
4043
+ this.handleApiError(`get workbench state for "${slug}"`, error);
4044
+ }
4045
+ return data;
4046
+ }
4047
+ /**
4048
+ * Save an experiment's setup.
4049
+ *
4050
+ * Send `expectedVersion` with the version you read and the platform refuses
4051
+ * the save with a 409 when someone else wrote first, instead of overwriting
4052
+ * their work.
4053
+ */
4054
+ async setWorkbenchState({
4055
+ slug,
4056
+ state,
4057
+ expectedVersion,
4058
+ commitMessage
4059
+ }) {
4060
+ const { data, error } = await this.apiClient.PUT(
4061
+ "/api/experiments/{slug}/workbench-state",
4062
+ {
4063
+ params: { path: { slug } },
4064
+ body: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
4065
+ state
4066
+ }, expectedVersion !== void 0 ? { expectedVersion } : {}), commitMessage !== void 0 ? { commitMessage } : {})
4067
+ }
4068
+ );
4069
+ if (error) {
4070
+ this.handleApiError(`save workbench state for "${slug}"`, error);
4071
+ }
4072
+ return data;
4073
+ }
4074
+ /** The experiment's saved versions, newest first. */
4075
+ async listVersions({
4076
+ slug,
4077
+ limit,
4078
+ cursor
4079
+ }) {
4080
+ const { data, error } = await this.apiClient.GET(
4081
+ "/api/experiments/{slug}/versions",
4082
+ {
4083
+ params: {
4084
+ path: { slug },
4085
+ query: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, limit !== void 0 ? { limit } : {}), cursor !== void 0 ? { cursor } : {})
4086
+ }
4087
+ }
4088
+ );
4089
+ if (error) {
4090
+ this.handleApiError(`list versions for experiment "${slug}"`, error);
4091
+ }
4092
+ return data;
4093
+ }
4094
+ /**
4095
+ * Bring an old version back by writing it forward as a new save. History is
4096
+ * never rewritten: the version restored from stays in the list.
4097
+ */
4098
+ async restoreVersion({
4099
+ slug,
4100
+ version: version2
4101
+ }) {
4102
+ const { data, error } = await this.apiClient.POST(
4103
+ "/api/experiments/{slug}/versions/{version}/restore",
4104
+ { params: { path: { slug, version: version2 } } }
4105
+ );
4106
+ if (error) {
4107
+ this.handleApiError(
4108
+ `restore version ${version2} of experiment "${slug}"`,
4109
+ error
4110
+ );
4111
+ }
4112
+ return data;
4113
+ }
3996
4114
  async getRunStatus(runId) {
3997
4115
  const { data, error } = await this.apiClient.GET(
3998
4116
  "/api/experiments/runs/{runId}",
@@ -4737,7 +4855,7 @@ var EvaluationsFacade = class {
4737
4855
  method: "POST",
4738
4856
  headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {
4739
4857
  "Content-Type": "application/json"
4740
- }, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey: _chunkLCG5Y2EGjs.__privateGet.call(void 0, this, _apiKey) })),
4858
+ }, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey: _chunkLCG5Y2EGjs.__privateGet.call(void 0, this, _apiKey) })),
4741
4859
  body: JSON.stringify(requestBody)
4742
4860
  });
4743
4861
  if (!response.ok) {
@@ -5047,7 +5165,7 @@ var WorkflowsApiError = class extends Error {
5047
5165
  var WorkflowsApiService = class {
5048
5166
  constructor(config) {
5049
5167
  var _a;
5050
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5168
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5051
5169
  this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : createLangWatchApiClient(void 0, this.endpoint);
5052
5170
  this.experimentsApiService = new ExperimentsApiService({
5053
5171
  langwatchApiClient: this.apiClient
@@ -5607,12 +5725,12 @@ var MonitorsApiService = class {
5607
5725
  constructor(config) {
5608
5726
  var _a, _b, _c;
5609
5727
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
5610
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5728
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5611
5729
  }
5612
5730
  async request(path2, options) {
5613
5731
  var _a, _b;
5614
5732
  const response = await fetch(`${this.endpoint}${path2}`, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, options), {
5615
- headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
5733
+ headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
5616
5734
  "Content-Type": "application/json"
5617
5735
  }), options == null ? void 0 : options.headers)
5618
5736
  }));
@@ -5682,12 +5800,12 @@ var SecretsApiService = class {
5682
5800
  constructor(config) {
5683
5801
  var _a, _b, _c;
5684
5802
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
5685
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5803
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5686
5804
  }
5687
5805
  async request(path2, options) {
5688
5806
  var _a, _b;
5689
5807
  const response = await fetch(`${this.endpoint}${path2}`, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, options), {
5690
- headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunkFJ6JSLLEjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
5808
+ headers: _chunkLCG5Y2EGjs.__spreadValues.call(void 0, _chunkLCG5Y2EGjs.__spreadProps.call(void 0, _chunkLCG5Y2EGjs.__spreadValues.call(void 0, {}, _chunkNFFB3DWWjs.buildAuthHeaders.call(void 0, { apiKey: this.apiKey })), {
5691
5809
  "Content-Type": "application/json"
5692
5810
  }), options == null ? void 0 : options.headers)
5693
5811
  }));
@@ -5817,7 +5935,7 @@ var VirtualKeysApiError = class extends Error {
5817
5935
  var VirtualKeysApiService = class {
5818
5936
  constructor(config) {
5819
5937
  var _a, _b, _c, _d;
5820
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5938
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
5821
5939
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
5822
5940
  this.projectId = (_d = config == null ? void 0 : config.projectId) != null ? _d : process.env.LANGWATCH_PROJECT_ID;
5823
5941
  }
@@ -6045,7 +6163,7 @@ var GatewayBudgetsApiError = class extends Error {
6045
6163
  var GatewayBudgetsApiService = class {
6046
6164
  constructor(config) {
6047
6165
  var _a, _b, _c, _d;
6048
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6166
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6049
6167
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6050
6168
  this.projectId = (_d = config == null ? void 0 : config.projectId) != null ? _d : process.env.LANGWATCH_PROJECT_ID;
6051
6169
  }
@@ -6304,7 +6422,7 @@ var SpendEventsApiError = class extends Error {
6304
6422
  var SpendEventsApiService = class {
6305
6423
  constructor(config) {
6306
6424
  var _a, _b, _c;
6307
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6425
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6308
6426
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6309
6427
  }
6310
6428
  async request(operation, path2, init) {
@@ -6521,7 +6639,7 @@ var WebhooksApiError = class extends Error {
6521
6639
  var WebhooksApiService = class {
6522
6640
  constructor(config) {
6523
6641
  var _a, _b, _c;
6524
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6642
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6525
6643
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6526
6644
  }
6527
6645
  async request(operation, path2, init) {
@@ -6858,7 +6976,7 @@ var TeamsApiService = class {
6858
6976
  constructor(config) {
6859
6977
  _chunkLCG5Y2EGjs.__privateAdd.call(void 0, this, _request);
6860
6978
  _chunkLCG5Y2EGjs.__privateSet.call(void 0, this, _request, createManagementRequest({
6861
- endpoint: _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint),
6979
+ endpoint: _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint),
6862
6980
  token: resolveManagementToken({ apiKey: config == null ? void 0 : config.apiKey }),
6863
6981
  errorFactory: ({ message, operation, body }) => new TeamsApiError(message, operation, body)
6864
6982
  }));
@@ -6934,19 +7052,27 @@ _request = new WeakMap();
6934
7052
 
6935
7053
  // src/client-sdk/services/projects/projects-api.service.ts
6936
7054
  var ProjectsApiError = class extends Error {
6937
- constructor(message, operation, originalError) {
7055
+ constructor(message, operation, originalError, status) {
6938
7056
  super(message);
6939
7057
  this.operation = operation;
6940
7058
  this.originalError = originalError;
7059
+ this.status = status;
6941
7060
  this.name = "ProjectsApiError";
6942
7061
  }
6943
7062
  };
6944
7063
  var ProjectsApiService = class {
6945
7064
  constructor(config) {
6946
7065
  var _a, _b, _c;
6947
- this.endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
7066
+ this.endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, config == null ? void 0 : config.endpoint);
6948
7067
  this.apiKey = (_c = (_b = (_a = config == null ? void 0 : config.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
6949
7068
  }
7069
+ /**
7070
+ * Bearer, never the project-pinned Basic shape the data routes use. The
7071
+ * listing is the question "which projects can this credential see?", so
7072
+ * naming one project in the header would scope the answer to that project
7073
+ * and defeat the call — including the `--project <slug>` lookup, which reads
7074
+ * the listing precisely because it does not know the id yet.
7075
+ */
6950
7076
  headers() {
6951
7077
  return {
6952
7078
  Authorization: `Bearer ${this.apiKey}`,
@@ -6976,7 +7102,12 @@ var ProjectsApiService = class {
6976
7102
  status: response.status,
6977
7103
  message
6978
7104
  });
6979
- throw new ProjectsApiError(message, operation, parsedBody);
7105
+ throw new ProjectsApiError(
7106
+ message,
7107
+ operation,
7108
+ parsedBody,
7109
+ response.status
7110
+ );
6980
7111
  }
6981
7112
  return await response.json();
6982
7113
  }
@@ -7030,7 +7161,7 @@ var TracesError = class extends Error {
7030
7161
  };
7031
7162
 
7032
7163
  // src/client-sdk/services/traces/tracing/tracer.ts
7033
- var tracer3 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunkFJ6JSLLEjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunkFJ6JSLLEjs.LANGWATCH_SDK_VERSION);
7164
+ var tracer3 = _chunk4ERRCKOHjs.getLangWatchTracer.call(void 0, `${_chunkNFFB3DWWjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunkNFFB3DWWjs.LANGWATCH_SDK_VERSION);
7034
7165
 
7035
7166
  // src/client-sdk/services/traces/service.ts
7036
7167
  var TracesService = class {
@@ -7102,7 +7233,7 @@ var LangWatch = class {
7102
7233
  _chunkLCG5Y2EGjs.__privateAdd.call(void 0, this, _projects);
7103
7234
  var _a, _b, _c;
7104
7235
  const apiKey = (_c = (_b = (_a = options.apiKey) != null ? _a : scopedApiKey()) != null ? _b : process.env.LANGWATCH_API_KEY) != null ? _c : "";
7105
- const endpoint = _chunkKS7O6FTOjs.resolveEndpoint.call(void 0, options.endpoint);
7236
+ const endpoint = _chunkHUMHSRVPjs.resolveEndpoint.call(void 0, options.endpoint);
7106
7237
  this.config = _chunkLCG5Y2EGjs.__privateMethod.call(void 0, this, _LangWatch_instances, createInternalConfig_fn).call(this, {
7107
7238
  apiKey,
7108
7239
  endpoint,
@@ -7342,5 +7473,5 @@ var logger = {
7342
7473
 
7343
7474
 
7344
7475
 
7345
- 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 = _chunkFJ6JSLLEjs.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 = _chunkFJ6JSLLEjs.getLangWatchLogger; exports.getLangWatchTracer = _chunk4ERRCKOHjs.getLangWatchTracer; exports.isLangWatchHandledError = isLangWatchHandledError; exports.logger = logger; exports.verifyWebhookSignature = verifyWebhookSignature;
7476
+ 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 = _chunkNFFB3DWWjs.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 = _chunkNFFB3DWWjs.getLangWatchLogger; exports.getLangWatchTracer = _chunk4ERRCKOHjs.getLangWatchTracer; exports.isLangWatchHandledError = isLangWatchHandledError; exports.logger = logger; exports.verifyWebhookSignature = verifyWebhookSignature;
7346
7477
  //# sourceMappingURL=index.js.map