langwatch 0.7.1 → 0.8.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.
- package/README.md +43 -52
- package/dist/{add-HWFRMAQX.mjs → add-TMFGG3SC.mjs} +7 -7
- package/dist/{add-5QV3TEWC.js → add-VOEIH432.js} +24 -24
- package/dist/{add-5QV3TEWC.js.map → add-VOEIH432.js.map} +1 -1
- package/dist/{chunk-5HAVK64Q.js → chunk-B5K6DU6G.js} +2 -2
- package/dist/chunk-B5K6DU6G.js.map +1 -0
- package/dist/{chunk-VMZUN4EF.js → chunk-BP2WGNIV.js} +3 -1
- package/dist/chunk-BP2WGNIV.js.map +1 -0
- package/dist/{chunk-UNMZPS55.mjs → chunk-DQU2PZAL.mjs} +3 -1
- package/dist/chunk-DQU2PZAL.mjs.map +1 -0
- package/dist/{chunk-DZH6SY3Z.js → chunk-GC7VHCU5.js} +10 -10
- package/dist/{chunk-DZH6SY3Z.js.map → chunk-GC7VHCU5.js.map} +1 -1
- package/dist/{chunk-7VHZNB2S.mjs → chunk-GMQHOSEU.mjs} +2 -2
- package/dist/chunk-GMQHOSEU.mjs.map +1 -0
- package/dist/{chunk-AD7QRYIJ.mjs → chunk-MBXENFRR.mjs} +2 -2
- package/dist/{chunk-PYVDTUA6.mjs → chunk-O6D3W3PG.mjs} +38 -49
- package/dist/chunk-O6D3W3PG.mjs.map +1 -0
- package/dist/{chunk-EPGKOTSN.mjs → chunk-SC4YBWRM.mjs} +17 -7
- package/dist/chunk-SC4YBWRM.mjs.map +1 -0
- package/dist/{chunk-7MG7DGPP.mjs → chunk-VH7IIHFW.mjs} +109 -20
- package/dist/chunk-VH7IIHFW.mjs.map +1 -0
- package/dist/{chunk-J55AV2YW.js → chunk-VWZCWYRH.js} +121 -32
- package/dist/chunk-VWZCWYRH.js.map +1 -0
- package/dist/{chunk-36XAYVMC.js → chunk-WAAQLJ67.js} +39 -50
- package/dist/chunk-WAAQLJ67.js.map +1 -0
- package/dist/{chunk-D7UAKYVI.js → chunk-XHNJY5BP.js} +26 -16
- package/dist/chunk-XHNJY5BP.js.map +1 -0
- package/dist/cli/index.js +7 -7
- package/dist/cli/index.mjs +7 -7
- package/dist/{create-S5RDGF3H.js → create-ACGBGFVO.js} +8 -8
- package/dist/{create-S5RDGF3H.js.map → create-ACGBGFVO.js.map} +1 -1
- package/dist/{create-LXQB4EFB.mjs → create-YUOTG2TS.mjs} +3 -3
- package/dist/{implementation-DsHp9FYU.d.ts → implementation-TF91Gn0l.d.ts} +154 -20
- package/dist/{implementation-nE9dgTwc.d.mts → implementation-pq0g2B5y.d.mts} +154 -20
- package/dist/index.d.mts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +13 -13
- package/dist/index.mjs +5 -5
- package/dist/{init-T4YDPHBA.mjs → init-ED3OW3TK.mjs} +3 -3
- package/dist/{init-UADBKUJU.js → init-UFZF26SF.js} +4 -4
- package/dist/{init-UADBKUJU.js.map → init-UFZF26SF.js.map} +1 -1
- package/dist/{list-HSCIBC4Z.js → list-42DGIFAC.js} +9 -9
- package/dist/{list-HSCIBC4Z.js.map → list-42DGIFAC.js.map} +1 -1
- package/dist/{list-BQXECLEM.mjs → list-KDYBQLVU.mjs} +6 -6
- package/dist/{login-EUDCIJRM.js → login-IRO5FBZI.js} +3 -3
- package/dist/{login-EUDCIJRM.js.map → login-IRO5FBZI.js.map} +1 -1
- package/dist/{login-3IM3PYSJ.mjs → login-RNWEYFQK.mjs} +2 -2
- package/dist/observability-sdk/index.d.mts +4 -3
- package/dist/observability-sdk/index.d.ts +4 -3
- package/dist/observability-sdk/index.js +4 -4
- package/dist/observability-sdk/index.mjs +3 -3
- package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.js +3 -3
- package/dist/observability-sdk/instrumentation/langchain/index.mjs +1 -1
- package/dist/observability-sdk/setup/node/index.js +29 -10
- package/dist/observability-sdk/setup/node/index.js.map +1 -1
- package/dist/observability-sdk/setup/node/index.mjs +21 -2
- package/dist/observability-sdk/setup/node/index.mjs.map +1 -1
- package/dist/{remove-VDQ4M6JF.js → remove-5EXAIGBX.js} +14 -14
- package/dist/{remove-VDQ4M6JF.js.map → remove-5EXAIGBX.js.map} +1 -1
- package/dist/{remove-IVFQAHNT.mjs → remove-UWKI7GIJ.mjs} +6 -6
- package/dist/{sync-KUMBMGJS.js → sync-MOBSZVYV.js} +30 -31
- package/dist/sync-MOBSZVYV.js.map +1 -0
- package/dist/{sync-2MVHHWCX.mjs → sync-WJSJIKEW.mjs} +12 -13
- package/dist/sync-WJSJIKEW.mjs.map +1 -0
- package/dist/{types-B9772cUR.d.ts → types-CAQOMGrf.d.ts} +161 -43
- package/dist/{types-DbPAi4US.d.mts → types-DhEYjnRD.d.mts} +161 -43
- package/package.json +3 -2
- package/dist/chunk-36XAYVMC.js.map +0 -1
- package/dist/chunk-5HAVK64Q.js.map +0 -1
- package/dist/chunk-7MG7DGPP.mjs.map +0 -1
- package/dist/chunk-7VHZNB2S.mjs.map +0 -1
- package/dist/chunk-D7UAKYVI.js.map +0 -1
- package/dist/chunk-EPGKOTSN.mjs.map +0 -1
- package/dist/chunk-J55AV2YW.js.map +0 -1
- package/dist/chunk-PYVDTUA6.mjs.map +0 -1
- package/dist/chunk-UNMZPS55.mjs.map +0 -1
- package/dist/chunk-VMZUN4EF.js.map +0 -1
- package/dist/sync-2MVHHWCX.mjs.map +0 -1
- package/dist/sync-KUMBMGJS.js.map +0 -1
- /package/dist/{add-HWFRMAQX.mjs.map → add-TMFGG3SC.mjs.map} +0 -0
- /package/dist/{chunk-AD7QRYIJ.mjs.map → chunk-MBXENFRR.mjs.map} +0 -0
- /package/dist/{create-LXQB4EFB.mjs.map → create-YUOTG2TS.mjs.map} +0 -0
- /package/dist/{init-T4YDPHBA.mjs.map → init-ED3OW3TK.mjs.map} +0 -0
- /package/dist/{list-BQXECLEM.mjs.map → list-KDYBQLVU.mjs.map} +0 -0
- /package/dist/{login-3IM3PYSJ.mjs.map → login-RNWEYFQK.mjs.map} +0 -0
- /package/dist/{remove-IVFQAHNT.mjs.map → remove-UWKI7GIJ.mjs.map} +0 -0
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
var
|
|
6
|
+
var _chunkGC7VHCU5js = require('./chunk-GC7VHCU5.js');
|
|
7
7
|
|
|
8
8
|
|
|
9
|
-
var
|
|
9
|
+
var _chunkWAAQLJ67js = require('./chunk-WAAQLJ67.js');
|
|
10
10
|
require('./chunk-AZHZ4NB4.js');
|
|
11
11
|
require('./chunk-OHM7JUMR.js');
|
|
12
12
|
|
|
@@ -21,7 +21,7 @@ var createCommand = async (name, _options) => {
|
|
|
21
21
|
process.exit(1);
|
|
22
22
|
}
|
|
23
23
|
_chunkF6E4XQQUjs.checkApiKey.call(void 0, );
|
|
24
|
-
await
|
|
24
|
+
await _chunkGC7VHCU5js.ensureProjectInitialized.call(void 0, );
|
|
25
25
|
const promptPath = path.join(
|
|
26
26
|
process.cwd(),
|
|
27
27
|
"prompts",
|
|
@@ -47,11 +47,11 @@ messages:
|
|
|
47
47
|
content: "{{input}}"
|
|
48
48
|
`;
|
|
49
49
|
fs.writeFileSync(promptPath, defaultContent, "utf8");
|
|
50
|
-
const promptsConfig =
|
|
50
|
+
const promptsConfig = _chunkWAAQLJ67js.FileManager.loadPromptsConfig();
|
|
51
51
|
const relativePath = path.relative(process.cwd(), promptPath);
|
|
52
52
|
promptsConfig.prompts[name] = `file:${relativePath}`;
|
|
53
|
-
|
|
54
|
-
const lock =
|
|
53
|
+
_chunkWAAQLJ67js.FileManager.savePromptsConfig(promptsConfig);
|
|
54
|
+
const lock = _chunkWAAQLJ67js.FileManager.loadPromptsLock();
|
|
55
55
|
lock.prompts[name] = {
|
|
56
56
|
version: 0,
|
|
57
57
|
// Local files start at version 0
|
|
@@ -59,7 +59,7 @@ messages:
|
|
|
59
59
|
materialized: relativePath
|
|
60
60
|
// Store the original file path
|
|
61
61
|
};
|
|
62
|
-
|
|
62
|
+
_chunkWAAQLJ67js.FileManager.savePromptsLock(lock);
|
|
63
63
|
const displayPath = `./${relativePath}`;
|
|
64
64
|
console.log(
|
|
65
65
|
_chalk2.default.green(`\u2713 Created prompt file: ${_chalk2.default.cyan(displayPath)}`)
|
|
@@ -77,4 +77,4 @@ messages:
|
|
|
77
77
|
|
|
78
78
|
|
|
79
79
|
exports.createCommand = createCommand;
|
|
80
|
-
//# sourceMappingURL=create-
|
|
80
|
+
//# sourceMappingURL=create-ACGBGFVO.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-ACGBGFVO.js","../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACZA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAOX,IAAM,cAAA,EAAgB,MAAA,CAC3B,IAAA,EACA,QAAA,EAAA,GACkB;AAClB,EAAA,IAAI;AAEF,IAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI;AAC/B,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,oCAAoC,CAAC,CAAA;AAC7D,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,0CAAA,CAAY;AAGZ,IAAA,MAAM,uDAAA,CAAyB;AAG/B,IAAA,MAAM,WAAA,EAAkB,IAAA,CAAA,IAAA;AAAA,MACtB,OAAA,CAAQ,GAAA,CAAI,CAAA;AAAA,MACZ,SAAA;AAAA,MACA,CAAA,EAAA;AACF,IAAA;AAEA,IAAA;AACE,MAAA;AAAQ,QAAA;AAER,MAAA;AACA,MAAA;AACF,IAAA;AAGA,IAAA;AACA,IAAA;AACK,MAAA;AACL,IAAA;AAGA,IAAA;AAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWpB,IAAA;AAGH,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAGA,IAAA;AACA,IAAA;AACE,MAAA;AAAS;AACT,MAAA;AACA,MAAA;AAAc;AAChB,IAAA;AACA,IAAA;AAEA,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACE,IAAA;AACE,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AACF;ADZO;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-ACGBGFVO.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { ensureProjectInitialized } from \"../utils/init\";\n\ntype CreateOptions = Record<string, unknown>;\n\nexport const createCommand = async (\n name: string,\n _options: CreateOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Check if file already exists\n const promptPath = path.join(\n process.cwd(),\n \"prompts\",\n `${name}.prompt.yaml`,\n );\n\n if (fs.existsSync(promptPath)) {\n console.error(\n chalk.red(`Error: Prompt file already exists at ${promptPath}`),\n );\n process.exit(1);\n }\n\n // Create prompts directory if it doesn't exist\n const promptsDir = path.dirname(promptPath);\n if (!fs.existsSync(promptsDir)) {\n fs.mkdirSync(promptsDir, { recursive: true });\n }\n\n // Default prompt content\n const defaultContent = `model: openai/gpt-5\nmodelParameters:\n temperature: 0.7\nmessages:\n - role: system\n content: You are a helpful assistant.\n - role: user\n content: \"{{input}}\"\n`;\n\n // Write the file\n fs.writeFileSync(promptPath, defaultContent, \"utf8\");\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n const relativePath = path.relative(process.cwd(), promptPath);\n promptsConfig.prompts[name] = `file:${relativePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: relativePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n const displayPath = `./${relativePath}`;\n console.log(\n chalk.green(`✓ Created prompt file: ${chalk.cyan(displayPath)}`),\n );\n console.log(chalk.gray(` Edit this file and then run:`));\n console.log(chalk.cyan(` langwatch prompt sync`));\n } catch (error) {\n console.error(\n chalk.red(\"Unexpected error:\"),\n error instanceof Error ? error.message : error,\n );\n process.exit(1);\n }\n};\n"]}
|
|
@@ -3,10 +3,10 @@ import {
|
|
|
3
3
|
} from "./chunk-DHJKJVY7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
ensureProjectInitialized
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MBXENFRR.mjs";
|
|
7
7
|
import {
|
|
8
8
|
FileManager
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-O6D3W3PG.mjs";
|
|
10
10
|
import "./chunk-BTBSMJTY.mjs";
|
|
11
11
|
import "./chunk-URTD2WOC.mjs";
|
|
12
12
|
|
|
@@ -77,4 +77,4 @@ messages:
|
|
|
77
77
|
export {
|
|
78
78
|
createCommand
|
|
79
79
|
};
|
|
80
|
-
//# sourceMappingURL=create-
|
|
80
|
+
//# sourceMappingURL=create-YUOTG2TS.mjs.map
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BatchSpanProcessor, SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
2
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
3
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
3
4
|
import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
|
|
4
5
|
import { a as SemConvLogRecordAttributes, S as SemConvAttributes } from './types-DRiQaKFG.js';
|
|
5
6
|
import { TracerProvider } from '@opentelemetry/api';
|
|
6
|
-
import { a as LangWatchTracer } from './types-
|
|
7
|
+
import { a as LangWatchTracer } from './types-CAQOMGrf.js';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Filterable Batch Span Exporter for OpenTelemetry
|
|
@@ -66,48 +67,181 @@ declare class FilterableBatchSpanProcessor extends BatchSpanProcessor {
|
|
|
66
67
|
onEnd(span: ReadableSpan): void;
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
interface Criteria {
|
|
71
|
+
instrumentationScopeName?: Match[];
|
|
72
|
+
name?: Match[];
|
|
73
|
+
}
|
|
74
|
+
interface Match {
|
|
75
|
+
equals?: string;
|
|
76
|
+
startsWith?: string;
|
|
77
|
+
matches?: RegExp;
|
|
78
|
+
ignoreCase?: boolean;
|
|
79
|
+
}
|
|
80
|
+
type TraceFilter = {
|
|
81
|
+
preset: "vercelAIOnly" | "excludeHttpRequests";
|
|
82
|
+
} | {
|
|
83
|
+
include: Criteria;
|
|
84
|
+
} | {
|
|
85
|
+
exclude: Criteria;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Configuration options for the LangWatchTraceExporter.
|
|
90
|
+
*
|
|
91
|
+
* @property endpoint - Custom LangWatch endpoint URL. Falls back to LANGWATCH_ENDPOINT env var or default.
|
|
92
|
+
* @property apiKey - API key for authentication. Falls back to LANGWATCH_API_KEY env var.
|
|
93
|
+
* @property filters - Array of filters applied sequentially to spans before export.
|
|
94
|
+
* Default: `[{ preset: "excludeHttpRequests" }]` to reduce framework noise.
|
|
95
|
+
* Pass `null` or `[]` to disable all filtering.
|
|
96
|
+
*/
|
|
69
97
|
interface LangWatchTraceExporterOptions {
|
|
70
98
|
endpoint?: string;
|
|
71
99
|
apiKey?: string;
|
|
72
|
-
|
|
73
|
-
debug?: boolean;
|
|
100
|
+
filters?: TraceFilter[] | null;
|
|
74
101
|
}
|
|
102
|
+
|
|
75
103
|
/**
|
|
76
104
|
* LangWatchTraceExporter extends the OpenTelemetry OTLP HTTP trace exporter
|
|
77
105
|
* to send trace data to LangWatch with proper authentication and metadata headers.
|
|
78
106
|
*
|
|
79
|
-
*
|
|
80
|
-
* -
|
|
81
|
-
* - SDK version and
|
|
82
|
-
* - Proper endpoint
|
|
107
|
+
* ## Features
|
|
108
|
+
* - Automatic authorization header configuration via API key
|
|
109
|
+
* - SDK version and runtime identification headers
|
|
110
|
+
* - Proper endpoint URL construction for LangWatch ingestion
|
|
111
|
+
* - Intent-based span filtering with presets and custom criteria
|
|
83
112
|
*
|
|
84
|
-
*
|
|
113
|
+
* ## Filtering Behavior
|
|
114
|
+
* - **Default**: HTTP request spans are excluded to reduce framework noise
|
|
115
|
+
* - **Pipeline**: Filters are applied sequentially with AND semantics
|
|
116
|
+
* - **Matching**: All string comparisons are case-sensitive by default
|
|
117
|
+
* - **Array Syntax**: All criteria require arrays of Match objects for explicit filtering
|
|
118
|
+
*
|
|
119
|
+
* ## Filter Types
|
|
120
|
+
* - **Presets**: Pre-configured common filters (`vercelAIOnly`, `excludeHttpRequests`)
|
|
121
|
+
* - **Include**: Keep only spans matching criteria (OR within field, AND across fields)
|
|
122
|
+
* - **Exclude**: Remove spans matching criteria (OR within field, AND across fields)
|
|
123
|
+
*
|
|
124
|
+
* @example Basic usage with default filtering
|
|
85
125
|
* ```typescript
|
|
86
126
|
* import { LangWatchTraceExporter } from '@langwatch/observability';
|
|
87
127
|
*
|
|
88
|
-
* //
|
|
128
|
+
* // Default: excludes HTTP request spans
|
|
89
129
|
* const exporter = new LangWatchTraceExporter();
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @example Using presets
|
|
133
|
+
* ```typescript
|
|
134
|
+
* // Keep only Vercel AI SDK spans
|
|
135
|
+
* const exporterAI = new LangWatchTraceExporter({
|
|
136
|
+
* filters: [{ preset: 'vercelAIOnly' }],
|
|
137
|
+
* });
|
|
138
|
+
*
|
|
139
|
+
* // Explicitly exclude HTTP requests (same as default)
|
|
140
|
+
* const exporterNoHttp = new LangWatchTraceExporter({
|
|
141
|
+
* filters: [{ preset: 'excludeHttpRequests' }],
|
|
142
|
+
* });
|
|
143
|
+
*
|
|
144
|
+
* // No filtering at all (send all spans)
|
|
145
|
+
* const exporterAll = new LangWatchTraceExporter({
|
|
146
|
+
* filters: null, // or filters: []
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* @example Custom filtering with criteria
|
|
151
|
+
* ```typescript
|
|
152
|
+
* // Include only spans with specific scope
|
|
153
|
+
* const exporter1 = new LangWatchTraceExporter({
|
|
154
|
+
* filters: [
|
|
155
|
+
* { include: { instrumentationScopeName: [{ equals: 'ai' }] } }
|
|
156
|
+
* ],
|
|
157
|
+
* });
|
|
158
|
+
*
|
|
159
|
+
* // Exclude spans by name pattern
|
|
160
|
+
* const exporter2 = new LangWatchTraceExporter({
|
|
161
|
+
* filters: [
|
|
162
|
+
* { exclude: { name: [{ startsWith: 'internal.' }] } }
|
|
163
|
+
* ],
|
|
164
|
+
* });
|
|
165
|
+
*
|
|
166
|
+
* // Case-insensitive matching
|
|
167
|
+
* const exporter3 = new LangWatchTraceExporter({
|
|
168
|
+
* filters: [
|
|
169
|
+
* { include: { name: [{ equals: 'chat.completion', ignoreCase: true }] } }
|
|
170
|
+
* ],
|
|
171
|
+
* });
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* @example Filter pipelines (AND semantics)
|
|
175
|
+
* ```typescript
|
|
176
|
+
* // Keep AI spans, then remove HTTP requests
|
|
177
|
+
* const exporter = new LangWatchTraceExporter({
|
|
178
|
+
* filters: [
|
|
179
|
+
* { include: { instrumentationScopeName: [{ equals: 'ai' }] } },
|
|
180
|
+
* { preset: 'excludeHttpRequests' },
|
|
181
|
+
* ],
|
|
182
|
+
* });
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* @example OR semantics within a field
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // Include spans with name starting with 'chat.' OR 'llm.'
|
|
188
|
+
* const exporter = new LangWatchTraceExporter({
|
|
189
|
+
* filters: [
|
|
190
|
+
* {
|
|
191
|
+
* include: {
|
|
192
|
+
* name: [
|
|
193
|
+
* { startsWith: 'chat.' },
|
|
194
|
+
* { startsWith: 'llm.' }
|
|
195
|
+
* ]
|
|
196
|
+
* }
|
|
197
|
+
* }
|
|
198
|
+
* ],
|
|
199
|
+
* });
|
|
200
|
+
* ```
|
|
90
201
|
*
|
|
91
|
-
*
|
|
202
|
+
* @example Using regex patterns
|
|
203
|
+
* ```typescript
|
|
92
204
|
* const exporter = new LangWatchTraceExporter({
|
|
93
|
-
*
|
|
94
|
-
*
|
|
205
|
+
* filters: [
|
|
206
|
+
* {
|
|
207
|
+
* include: {
|
|
208
|
+
* name: [{ matches: /^(chat|llm)\./i }]
|
|
209
|
+
* }
|
|
210
|
+
* }
|
|
211
|
+
* ],
|
|
95
212
|
* });
|
|
96
213
|
* ```
|
|
97
214
|
*/
|
|
98
215
|
declare class LangWatchTraceExporter extends OTLPTraceExporter {
|
|
216
|
+
private readonly filters;
|
|
99
217
|
/**
|
|
100
|
-
* Creates a new
|
|
218
|
+
* Creates a new LangWatchTraceExporter instance.
|
|
219
|
+
*
|
|
220
|
+
* @param opts - Configuration options for the exporter
|
|
221
|
+
* @param opts.apiKey - API key for LangWatch authentication.
|
|
222
|
+
* Falls back to `LANGWATCH_API_KEY` environment variable, then empty string.
|
|
223
|
+
* @param opts.endpoint - Custom endpoint URL for LangWatch ingestion.
|
|
224
|
+
* Falls back to `LANGWATCH_ENDPOINT` environment variable, then default endpoint.
|
|
225
|
+
* @param opts.filters - Array of filters applied sequentially to spans before export (AND semantics).
|
|
226
|
+
* When omitted, defaults to `[{ preset: "excludeHttpRequests" }]`.
|
|
227
|
+
* Pass `null` or `[]` to disable all filtering and send all spans.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* // With API key and default filtering
|
|
232
|
+
* const exporter = new LangWatchTraceExporter({
|
|
233
|
+
* apiKey: 'your-api-key'
|
|
234
|
+
* });
|
|
101
235
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* @param opts.debug - Deprecated: This option is deprecated and will be removed in a future version
|
|
236
|
+
* // With custom endpoint and no filtering
|
|
237
|
+
* const exporter = new LangWatchTraceExporter({
|
|
238
|
+
* endpoint: 'https://custom.langwatch.ai',
|
|
239
|
+
* filters: null
|
|
240
|
+
* });
|
|
241
|
+
* ```
|
|
109
242
|
*/
|
|
110
243
|
constructor(opts?: LangWatchTraceExporterOptions);
|
|
244
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
111
245
|
}
|
|
112
246
|
|
|
113
247
|
/**
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { BatchSpanProcessor, SpanExporter, ReadableSpan } from '@opentelemetry/sdk-trace-base';
|
|
2
2
|
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
|
|
3
|
+
import { ExportResult } from '@opentelemetry/core';
|
|
3
4
|
import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
|
|
4
5
|
import { a as SemConvLogRecordAttributes, S as SemConvAttributes } from './types-DRiQaKFG.mjs';
|
|
5
6
|
import { TracerProvider } from '@opentelemetry/api';
|
|
6
|
-
import { a as LangWatchTracer } from './types-
|
|
7
|
+
import { a as LangWatchTracer } from './types-DhEYjnRD.mjs';
|
|
7
8
|
|
|
8
9
|
/**
|
|
9
10
|
* Filterable Batch Span Exporter for OpenTelemetry
|
|
@@ -66,48 +67,181 @@ declare class FilterableBatchSpanProcessor extends BatchSpanProcessor {
|
|
|
66
67
|
onEnd(span: ReadableSpan): void;
|
|
67
68
|
}
|
|
68
69
|
|
|
70
|
+
interface Criteria {
|
|
71
|
+
instrumentationScopeName?: Match[];
|
|
72
|
+
name?: Match[];
|
|
73
|
+
}
|
|
74
|
+
interface Match {
|
|
75
|
+
equals?: string;
|
|
76
|
+
startsWith?: string;
|
|
77
|
+
matches?: RegExp;
|
|
78
|
+
ignoreCase?: boolean;
|
|
79
|
+
}
|
|
80
|
+
type TraceFilter = {
|
|
81
|
+
preset: "vercelAIOnly" | "excludeHttpRequests";
|
|
82
|
+
} | {
|
|
83
|
+
include: Criteria;
|
|
84
|
+
} | {
|
|
85
|
+
exclude: Criteria;
|
|
86
|
+
};
|
|
87
|
+
|
|
88
|
+
/**
|
|
89
|
+
* Configuration options for the LangWatchTraceExporter.
|
|
90
|
+
*
|
|
91
|
+
* @property endpoint - Custom LangWatch endpoint URL. Falls back to LANGWATCH_ENDPOINT env var or default.
|
|
92
|
+
* @property apiKey - API key for authentication. Falls back to LANGWATCH_API_KEY env var.
|
|
93
|
+
* @property filters - Array of filters applied sequentially to spans before export.
|
|
94
|
+
* Default: `[{ preset: "excludeHttpRequests" }]` to reduce framework noise.
|
|
95
|
+
* Pass `null` or `[]` to disable all filtering.
|
|
96
|
+
*/
|
|
69
97
|
interface LangWatchTraceExporterOptions {
|
|
70
98
|
endpoint?: string;
|
|
71
99
|
apiKey?: string;
|
|
72
|
-
|
|
73
|
-
debug?: boolean;
|
|
100
|
+
filters?: TraceFilter[] | null;
|
|
74
101
|
}
|
|
102
|
+
|
|
75
103
|
/**
|
|
76
104
|
* LangWatchTraceExporter extends the OpenTelemetry OTLP HTTP trace exporter
|
|
77
105
|
* to send trace data to LangWatch with proper authentication and metadata headers.
|
|
78
106
|
*
|
|
79
|
-
*
|
|
80
|
-
* -
|
|
81
|
-
* - SDK version and
|
|
82
|
-
* - Proper endpoint
|
|
107
|
+
* ## Features
|
|
108
|
+
* - Automatic authorization header configuration via API key
|
|
109
|
+
* - SDK version and runtime identification headers
|
|
110
|
+
* - Proper endpoint URL construction for LangWatch ingestion
|
|
111
|
+
* - Intent-based span filtering with presets and custom criteria
|
|
83
112
|
*
|
|
84
|
-
*
|
|
113
|
+
* ## Filtering Behavior
|
|
114
|
+
* - **Default**: HTTP request spans are excluded to reduce framework noise
|
|
115
|
+
* - **Pipeline**: Filters are applied sequentially with AND semantics
|
|
116
|
+
* - **Matching**: All string comparisons are case-sensitive by default
|
|
117
|
+
* - **Array Syntax**: All criteria require arrays of Match objects for explicit filtering
|
|
118
|
+
*
|
|
119
|
+
* ## Filter Types
|
|
120
|
+
* - **Presets**: Pre-configured common filters (`vercelAIOnly`, `excludeHttpRequests`)
|
|
121
|
+
* - **Include**: Keep only spans matching criteria (OR within field, AND across fields)
|
|
122
|
+
* - **Exclude**: Remove spans matching criteria (OR within field, AND across fields)
|
|
123
|
+
*
|
|
124
|
+
* @example Basic usage with default filtering
|
|
85
125
|
* ```typescript
|
|
86
126
|
* import { LangWatchTraceExporter } from '@langwatch/observability';
|
|
87
127
|
*
|
|
88
|
-
* //
|
|
128
|
+
* // Default: excludes HTTP request spans
|
|
89
129
|
* const exporter = new LangWatchTraceExporter();
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* @example Using presets
|
|
133
|
+
* ```typescript
|
|
134
|
+
* // Keep only Vercel AI SDK spans
|
|
135
|
+
* const exporterAI = new LangWatchTraceExporter({
|
|
136
|
+
* filters: [{ preset: 'vercelAIOnly' }],
|
|
137
|
+
* });
|
|
138
|
+
*
|
|
139
|
+
* // Explicitly exclude HTTP requests (same as default)
|
|
140
|
+
* const exporterNoHttp = new LangWatchTraceExporter({
|
|
141
|
+
* filters: [{ preset: 'excludeHttpRequests' }],
|
|
142
|
+
* });
|
|
143
|
+
*
|
|
144
|
+
* // No filtering at all (send all spans)
|
|
145
|
+
* const exporterAll = new LangWatchTraceExporter({
|
|
146
|
+
* filters: null, // or filters: []
|
|
147
|
+
* });
|
|
148
|
+
* ```
|
|
149
|
+
*
|
|
150
|
+
* @example Custom filtering with criteria
|
|
151
|
+
* ```typescript
|
|
152
|
+
* // Include only spans with specific scope
|
|
153
|
+
* const exporter1 = new LangWatchTraceExporter({
|
|
154
|
+
* filters: [
|
|
155
|
+
* { include: { instrumentationScopeName: [{ equals: 'ai' }] } }
|
|
156
|
+
* ],
|
|
157
|
+
* });
|
|
158
|
+
*
|
|
159
|
+
* // Exclude spans by name pattern
|
|
160
|
+
* const exporter2 = new LangWatchTraceExporter({
|
|
161
|
+
* filters: [
|
|
162
|
+
* { exclude: { name: [{ startsWith: 'internal.' }] } }
|
|
163
|
+
* ],
|
|
164
|
+
* });
|
|
165
|
+
*
|
|
166
|
+
* // Case-insensitive matching
|
|
167
|
+
* const exporter3 = new LangWatchTraceExporter({
|
|
168
|
+
* filters: [
|
|
169
|
+
* { include: { name: [{ equals: 'chat.completion', ignoreCase: true }] } }
|
|
170
|
+
* ],
|
|
171
|
+
* });
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* @example Filter pipelines (AND semantics)
|
|
175
|
+
* ```typescript
|
|
176
|
+
* // Keep AI spans, then remove HTTP requests
|
|
177
|
+
* const exporter = new LangWatchTraceExporter({
|
|
178
|
+
* filters: [
|
|
179
|
+
* { include: { instrumentationScopeName: [{ equals: 'ai' }] } },
|
|
180
|
+
* { preset: 'excludeHttpRequests' },
|
|
181
|
+
* ],
|
|
182
|
+
* });
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* @example OR semantics within a field
|
|
186
|
+
* ```typescript
|
|
187
|
+
* // Include spans with name starting with 'chat.' OR 'llm.'
|
|
188
|
+
* const exporter = new LangWatchTraceExporter({
|
|
189
|
+
* filters: [
|
|
190
|
+
* {
|
|
191
|
+
* include: {
|
|
192
|
+
* name: [
|
|
193
|
+
* { startsWith: 'chat.' },
|
|
194
|
+
* { startsWith: 'llm.' }
|
|
195
|
+
* ]
|
|
196
|
+
* }
|
|
197
|
+
* }
|
|
198
|
+
* ],
|
|
199
|
+
* });
|
|
200
|
+
* ```
|
|
90
201
|
*
|
|
91
|
-
*
|
|
202
|
+
* @example Using regex patterns
|
|
203
|
+
* ```typescript
|
|
92
204
|
* const exporter = new LangWatchTraceExporter({
|
|
93
|
-
*
|
|
94
|
-
*
|
|
205
|
+
* filters: [
|
|
206
|
+
* {
|
|
207
|
+
* include: {
|
|
208
|
+
* name: [{ matches: /^(chat|llm)\./i }]
|
|
209
|
+
* }
|
|
210
|
+
* }
|
|
211
|
+
* ],
|
|
95
212
|
* });
|
|
96
213
|
* ```
|
|
97
214
|
*/
|
|
98
215
|
declare class LangWatchTraceExporter extends OTLPTraceExporter {
|
|
216
|
+
private readonly filters;
|
|
99
217
|
/**
|
|
100
|
-
* Creates a new
|
|
218
|
+
* Creates a new LangWatchTraceExporter instance.
|
|
219
|
+
*
|
|
220
|
+
* @param opts - Configuration options for the exporter
|
|
221
|
+
* @param opts.apiKey - API key for LangWatch authentication.
|
|
222
|
+
* Falls back to `LANGWATCH_API_KEY` environment variable, then empty string.
|
|
223
|
+
* @param opts.endpoint - Custom endpoint URL for LangWatch ingestion.
|
|
224
|
+
* Falls back to `LANGWATCH_ENDPOINT` environment variable, then default endpoint.
|
|
225
|
+
* @param opts.filters - Array of filters applied sequentially to spans before export (AND semantics).
|
|
226
|
+
* When omitted, defaults to `[{ preset: "excludeHttpRequests" }]`.
|
|
227
|
+
* Pass `null` or `[]` to disable all filtering and send all spans.
|
|
228
|
+
*
|
|
229
|
+
* @example
|
|
230
|
+
* ```typescript
|
|
231
|
+
* // With API key and default filtering
|
|
232
|
+
* const exporter = new LangWatchTraceExporter({
|
|
233
|
+
* apiKey: 'your-api-key'
|
|
234
|
+
* });
|
|
101
235
|
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* @param opts.debug - Deprecated: This option is deprecated and will be removed in a future version
|
|
236
|
+
* // With custom endpoint and no filtering
|
|
237
|
+
* const exporter = new LangWatchTraceExporter({
|
|
238
|
+
* endpoint: 'https://custom.langwatch.ai',
|
|
239
|
+
* filters: null
|
|
240
|
+
* });
|
|
241
|
+
* ```
|
|
109
242
|
*/
|
|
110
243
|
constructor(opts?: LangWatchTraceExporterOptions);
|
|
244
|
+
export(spans: ReadableSpan[], resultCallback: (result: ExportResult) => void): void;
|
|
111
245
|
}
|
|
112
246
|
|
|
113
247
|
/**
|
package/dist/index.d.mts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
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, d as getLangWatchTracer } from './implementation-
|
|
2
|
+
export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-pq0g2B5y.mjs';
|
|
3
3
|
export { l as attributes } from './types-DRiQaKFG.mjs';
|
|
4
|
-
import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-
|
|
4
|
+
import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-DhEYjnRD.mjs';
|
|
5
5
|
import openApiCreateClient from 'openapi-fetch';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import '@opentelemetry/sdk-trace-base';
|
|
8
8
|
import '@opentelemetry/exporter-trace-otlp-http';
|
|
9
|
+
import '@opentelemetry/core';
|
|
9
10
|
import '@opentelemetry/api-logs';
|
|
10
11
|
import '@opentelemetry/api';
|
|
11
12
|
import '@opentelemetry/semantic-conventions';
|
|
@@ -197,6 +198,8 @@ declare class FileManager {
|
|
|
197
198
|
private static readonly PROMPTS_LOCK_FILE;
|
|
198
199
|
private static readonly PROMPTS_DIR;
|
|
199
200
|
private static readonly MATERIALIZED_DIR;
|
|
201
|
+
private static _projectRoot;
|
|
202
|
+
private static findProjectRoot;
|
|
200
203
|
static getPromptsConfigPath(): string;
|
|
201
204
|
static getPromptsLockPath(): string;
|
|
202
205
|
static getPromptsDir(): string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
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, d as getLangWatchTracer } from './implementation-
|
|
2
|
+
export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-TF91Gn0l.js';
|
|
3
3
|
export { l as attributes } from './types-DRiQaKFG.js';
|
|
4
|
-
import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-
|
|
4
|
+
import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-CAQOMGrf.js';
|
|
5
5
|
import openApiCreateClient from 'openapi-fetch';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import '@opentelemetry/sdk-trace-base';
|
|
8
8
|
import '@opentelemetry/exporter-trace-otlp-http';
|
|
9
|
+
import '@opentelemetry/core';
|
|
9
10
|
import '@opentelemetry/api-logs';
|
|
10
11
|
import '@opentelemetry/api';
|
|
11
12
|
import '@opentelemetry/semantic-conventions';
|
|
@@ -197,6 +198,8 @@ declare class FileManager {
|
|
|
197
198
|
private static readonly PROMPTS_LOCK_FILE;
|
|
198
199
|
private static readonly PROMPTS_DIR;
|
|
199
200
|
private static readonly MATERIALIZED_DIR;
|
|
201
|
+
private static _projectRoot;
|
|
202
|
+
private static findProjectRoot;
|
|
200
203
|
static getPromptsConfigPath(): string;
|
|
201
204
|
static getPromptsLockPath(): string;
|
|
202
205
|
static getPromptsDir(): string;
|
package/dist/index.js
CHANGED
|
@@ -4,28 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
|
|
7
|
-
var
|
|
7
|
+
var _chunkXHNJY5BPjs = require('./chunk-XHNJY5BP.js');
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
var _chunkSNDTNU3Tjs = require('./chunk-SNDTNU3T.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
|
-
var
|
|
13
|
+
var _chunkBP2WGNIVjs = require('./chunk-BP2WGNIV.js');
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
var
|
|
17
|
+
var _chunkVWZCWYRHjs = require('./chunk-VWZCWYRH.js');
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
var
|
|
22
|
+
var _chunkB5K6DU6Gjs = require('./chunk-B5K6DU6G.js');
|
|
23
23
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
|
|
27
27
|
var _chunkCKIZDPIJjs = require('./chunk-CKIZDPIJ.js');
|
|
28
|
-
require('./chunk-
|
|
28
|
+
require('./chunk-WAAQLJ67.js');
|
|
29
29
|
require('./chunk-AZHZ4NB4.js');
|
|
30
30
|
|
|
31
31
|
|
|
@@ -46,13 +46,13 @@ var TracesError = class extends Error {
|
|
|
46
46
|
};
|
|
47
47
|
|
|
48
48
|
// src/client-sdk/services/traces/tracing/tracer.ts
|
|
49
|
-
var tracer =
|
|
49
|
+
var tracer = _chunkBP2WGNIVjs.getLangWatchTracer.call(void 0, `${_chunkB5K6DU6Gjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunkB5K6DU6Gjs.LANGWATCH_SDK_VERSION);
|
|
50
50
|
|
|
51
51
|
// src/client-sdk/services/traces/service.ts
|
|
52
52
|
var TracesService = class {
|
|
53
53
|
constructor(config) {
|
|
54
54
|
this.config = config;
|
|
55
|
-
return
|
|
55
|
+
return _chunkXHNJY5BPjs.createTracingProxy.call(void 0,
|
|
56
56
|
this,
|
|
57
57
|
tracer
|
|
58
58
|
);
|
|
@@ -115,15 +115,15 @@ var LangWatch = class {
|
|
|
115
115
|
_chunkOHM7JUMRjs.__privateAdd.call(void 0, this, _LangWatch_instances);
|
|
116
116
|
var _a, _b, _c, _d;
|
|
117
117
|
const apiKey = (_b = (_a = options.apiKey) != null ? _a : process.env.LANGWATCH_API_KEY) != null ? _b : "";
|
|
118
|
-
const endpoint = (_d = (_c = options.endpoint) != null ? _c : process.env.LANGWATCH_ENDPOINT) != null ? _d :
|
|
118
|
+
const endpoint = (_d = (_c = options.endpoint) != null ? _c : process.env.LANGWATCH_ENDPOINT) != null ? _d : _chunkB5K6DU6Gjs.DEFAULT_ENDPOINT;
|
|
119
119
|
this.config = _chunkOHM7JUMRjs.__privateMethod.call(void 0, this, _LangWatch_instances, createInternalConfig_fn).call(this, {
|
|
120
120
|
apiKey,
|
|
121
121
|
endpoint,
|
|
122
122
|
options: options.options
|
|
123
123
|
});
|
|
124
|
-
this.prompts = new (0,
|
|
125
|
-
promptsApiService: new (0,
|
|
126
|
-
localPromptsService: new (0,
|
|
124
|
+
this.prompts = new (0, _chunkXHNJY5BPjs.PromptsFacade)(_chunkOHM7JUMRjs.__spreadValues.call(void 0, {
|
|
125
|
+
promptsApiService: new (0, _chunkXHNJY5BPjs.PromptsApiService)(this.config),
|
|
126
|
+
localPromptsService: new (0, _chunkXHNJY5BPjs.LocalPromptsService)()
|
|
127
127
|
}, this.config));
|
|
128
128
|
this.traces = new TracesFacade(this.config);
|
|
129
129
|
}
|
|
@@ -140,7 +140,7 @@ createInternalConfig_fn = function({
|
|
|
140
140
|
var _a;
|
|
141
141
|
return {
|
|
142
142
|
logger: (_a = options == null ? void 0 : options.logger) != null ? _a : new (0, _chunkCKIZDPIJjs.NoOpLogger)(),
|
|
143
|
-
langwatchApiClient:
|
|
143
|
+
langwatchApiClient: _chunkXHNJY5BPjs.createLangWatchApiClient.call(void 0, apiKey, endpoint)
|
|
144
144
|
};
|
|
145
145
|
};
|
|
146
146
|
|
|
@@ -157,5 +157,5 @@ var logger = {
|
|
|
157
157
|
|
|
158
158
|
|
|
159
159
|
|
|
160
|
-
exports.FilterableBatchSpanProcessor = _chunkSNDTNU3Tjs.FilterableBatchSpanProcessor; exports.LangWatch = LangWatch; exports.LangWatchExporter =
|
|
160
|
+
exports.FilterableBatchSpanProcessor = _chunkSNDTNU3Tjs.FilterableBatchSpanProcessor; exports.LangWatch = LangWatch; exports.LangWatchExporter = _chunkVWZCWYRHjs.LangWatchTraceExporter; exports.attributes = _chunkCKIZDPIJjs.attributes_exports; exports.getLangWatchLogger = _chunkVWZCWYRHjs.getLangWatchLogger; exports.getLangWatchTracer = _chunkBP2WGNIVjs.getLangWatchTracer; exports.logger = logger;
|
|
161
161
|
//# sourceMappingURL=index.js.map
|