langwatch 0.3.0-prerelease.1 → 0.3.0-prerelease.2

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 (184) hide show
  1. package/dist/chunk-4BZATFKJ.mjs +181 -0
  2. package/dist/chunk-4BZATFKJ.mjs.map +1 -0
  3. package/dist/chunk-CSC3CMIT.mjs +118 -0
  4. package/dist/chunk-CSC3CMIT.mjs.map +1 -0
  5. package/dist/chunk-F63YKTXA.mjs +47 -0
  6. package/dist/chunk-F63YKTXA.mjs.map +1 -0
  7. package/dist/chunk-G3AUABT7.js +4 -0
  8. package/dist/chunk-G3AUABT7.js.map +1 -0
  9. package/dist/chunk-HPC6Z7J4.js +118 -0
  10. package/dist/chunk-HPC6Z7J4.js.map +1 -0
  11. package/dist/chunk-KGDAENGD.js +50 -0
  12. package/dist/chunk-KGDAENGD.js.map +1 -0
  13. package/dist/chunk-LD74LVRU.js +47 -0
  14. package/dist/chunk-LD74LVRU.js.map +1 -0
  15. package/dist/chunk-OM7VY3XT.mjs +4 -0
  16. package/dist/chunk-OM7VY3XT.mjs.map +1 -0
  17. package/dist/chunk-PCQVQ7SB.js +45 -0
  18. package/dist/chunk-PCQVQ7SB.js.map +1 -0
  19. package/dist/chunk-PMBEK6YE.mjs +424 -0
  20. package/dist/chunk-PMBEK6YE.mjs.map +1 -0
  21. package/dist/chunk-PR3JDWC3.mjs +50 -0
  22. package/dist/chunk-PR3JDWC3.mjs.map +1 -0
  23. package/dist/chunk-PTJ6AAI7.js +360 -0
  24. package/dist/chunk-PTJ6AAI7.js.map +1 -0
  25. package/dist/chunk-QEWDG5QE.mjs +45 -0
  26. package/dist/chunk-QEWDG5QE.mjs.map +1 -0
  27. package/dist/chunk-REUCVT7A.mjs +39 -0
  28. package/dist/chunk-REUCVT7A.mjs.map +1 -0
  29. package/dist/chunk-SVJ7SCGB.js +424 -0
  30. package/dist/chunk-SVJ7SCGB.js.map +1 -0
  31. package/dist/chunk-VJSOCNPA.js +181 -0
  32. package/dist/chunk-VJSOCNPA.js.map +1 -0
  33. package/dist/chunk-WM2GRSRW.js +39 -0
  34. package/dist/chunk-WM2GRSRW.js.map +1 -0
  35. package/dist/chunk-Z5J5UI5E.mjs +360 -0
  36. package/dist/chunk-Z5J5UI5E.mjs.map +1 -0
  37. package/dist/client-B2HqIKg6.d.ts +51 -0
  38. package/dist/client-XyCqclCi.d.mts +51 -0
  39. package/dist/client-browser.d.mts +8 -0
  40. package/dist/client-browser.d.ts +8 -0
  41. package/dist/client-browser.js +83 -0
  42. package/dist/client-browser.js.map +1 -0
  43. package/dist/client-browser.mjs +83 -0
  44. package/dist/client-browser.mjs.map +1 -0
  45. package/dist/client-node.d.mts +8 -0
  46. package/dist/client-node.d.ts +8 -0
  47. package/dist/client-node.js +90 -0
  48. package/dist/client-node.js.map +1 -0
  49. package/dist/client-node.mjs +90 -0
  50. package/dist/client-node.mjs.map +1 -0
  51. package/dist/evaluation/index.d.mts +897 -0
  52. package/dist/evaluation/index.d.ts +897 -0
  53. package/dist/evaluation/index.js +13 -0
  54. package/dist/evaluation/index.js.map +1 -0
  55. package/dist/evaluation/index.mjs +13 -0
  56. package/dist/evaluation/index.mjs.map +1 -0
  57. package/dist/filterable-batch-span-processor-zO5kcjBY.d.mts +64 -0
  58. package/dist/filterable-batch-span-processor-zO5kcjBY.d.ts +64 -0
  59. package/dist/index.d.mts +48 -0
  60. package/{src/observability/exporters/langwatch-exporter.ts → dist/index.d.ts} +13 -18
  61. package/dist/index.js +30 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/index.mjs +30 -0
  64. package/dist/index.mjs.map +1 -0
  65. package/dist/observability/index.d.mts +260 -0
  66. package/dist/observability/index.d.ts +260 -0
  67. package/dist/observability/index.js +20 -0
  68. package/dist/observability/index.js.map +1 -0
  69. package/dist/observability/index.mjs +20 -0
  70. package/dist/observability/index.mjs.map +1 -0
  71. package/dist/observability/instrumentation/langchain/index.d.mts +40 -0
  72. package/dist/observability/instrumentation/langchain/index.d.ts +40 -0
  73. package/dist/observability/instrumentation/langchain/index.js +666 -0
  74. package/dist/observability/instrumentation/langchain/index.js.map +1 -0
  75. package/dist/observability/instrumentation/langchain/index.mjs +666 -0
  76. package/dist/observability/instrumentation/langchain/index.mjs.map +1 -0
  77. package/dist/prompt/index.d.mts +10 -0
  78. package/dist/prompt/index.d.ts +10 -0
  79. package/dist/prompt/index.js +18 -0
  80. package/dist/prompt/index.js.map +1 -0
  81. package/dist/prompt/index.mjs +18 -0
  82. package/dist/prompt/index.mjs.map +1 -0
  83. package/dist/prompt-BXJWdbQp.d.mts +1967 -0
  84. package/dist/prompt-BXJWdbQp.d.ts +1967 -0
  85. package/dist/record-evaluation-CmxMXa-3.d.mts +25 -0
  86. package/dist/record-evaluation-CmxMXa-3.d.ts +25 -0
  87. package/dist/trace-D-bZOuqb.d.mts +622 -0
  88. package/dist/trace-G2312klE.d.ts +622 -0
  89. package/package.json +9 -4
  90. package/.editorconfig +0 -16
  91. package/.eslintrc.cjs +0 -37
  92. package/copy-types.sh +0 -28
  93. package/examples/langchain/.env.example +0 -2
  94. package/examples/langchain/README.md +0 -42
  95. package/examples/langchain/package-lock.json +0 -2930
  96. package/examples/langchain/package.json +0 -27
  97. package/examples/langchain/src/cli-markdown.d.ts +0 -137
  98. package/examples/langchain/src/index.ts +0 -109
  99. package/examples/langchain/tsconfig.json +0 -25
  100. package/examples/langgraph/.env.example +0 -2
  101. package/examples/langgraph/README.md +0 -42
  102. package/examples/langgraph/package-lock.json +0 -3031
  103. package/examples/langgraph/package.json +0 -28
  104. package/examples/langgraph/src/cli-markdown.d.ts +0 -137
  105. package/examples/langgraph/src/index.ts +0 -196
  106. package/examples/langgraph/tsconfig.json +0 -25
  107. package/examples/mastra/.env.example +0 -2
  108. package/examples/mastra/README.md +0 -57
  109. package/examples/mastra/package-lock.json +0 -5296
  110. package/examples/mastra/package.json +0 -32
  111. package/examples/mastra/src/cli-markdown.d.ts +0 -137
  112. package/examples/mastra/src/index.ts +0 -120
  113. package/examples/mastra/src/mastra/agents/weather-agent.ts +0 -30
  114. package/examples/mastra/src/mastra/index.ts +0 -21
  115. package/examples/mastra/src/mastra/tools/weather-tool.ts +0 -102
  116. package/examples/mastra/tsconfig.json +0 -25
  117. package/examples/vercel-ai/.env.example +0 -2
  118. package/examples/vercel-ai/README.md +0 -38
  119. package/examples/vercel-ai/package-lock.json +0 -2571
  120. package/examples/vercel-ai/package.json +0 -27
  121. package/examples/vercel-ai/src/cli-markdown.d.ts +0 -137
  122. package/examples/vercel-ai/src/index.ts +0 -110
  123. package/examples/vercel-ai/src/instrumentation.ts +0 -9
  124. package/examples/vercel-ai/tsconfig.json +0 -25
  125. package/src/__tests__/client-browser.test.ts +0 -92
  126. package/src/__tests__/client-node.test.ts +0 -76
  127. package/src/__tests__/client.test.ts +0 -71
  128. package/src/__tests__/integration/client-browser.test.ts +0 -46
  129. package/src/__tests__/integration/client-node.test.ts +0 -46
  130. package/src/client-browser.ts +0 -70
  131. package/src/client-node.ts +0 -82
  132. package/src/client-shared.ts +0 -72
  133. package/src/client.ts +0 -119
  134. package/src/evaluation/__tests__/record-evaluation.test.ts +0 -112
  135. package/src/evaluation/__tests__/run-evaluation.test.ts +0 -171
  136. package/src/evaluation/index.ts +0 -2
  137. package/src/evaluation/record-evaluation.ts +0 -101
  138. package/src/evaluation/run-evaluation.ts +0 -133
  139. package/src/evaluation/tracer.ts +0 -3
  140. package/src/evaluation/types.ts +0 -23
  141. package/src/index.ts +0 -13
  142. package/src/internal/api/__tests__/errors.test.ts +0 -98
  143. package/src/internal/api/client.ts +0 -30
  144. package/src/internal/api/errors.ts +0 -32
  145. package/src/internal/generated/openapi/.gitkeep +0 -0
  146. package/src/internal/generated/types/.gitkeep +0 -0
  147. package/src/observability/__tests__/integration/base.test.ts +0 -74
  148. package/src/observability/__tests__/integration/browser-setup-ordering.test.ts +0 -60
  149. package/src/observability/__tests__/integration/complex-nested-spans.test.ts +0 -29
  150. package/src/observability/__tests__/integration/error-handling.test.ts +0 -24
  151. package/src/observability/__tests__/integration/langwatch-disabled-otel.test.ts +0 -24
  152. package/src/observability/__tests__/integration/langwatch-first-then-vercel.test.ts +0 -24
  153. package/src/observability/__tests__/integration/multiple-setup-attempts.test.ts +0 -27
  154. package/src/observability/__tests__/integration/otel-ordering.test.ts +0 -27
  155. package/src/observability/__tests__/integration/vercel-configurations.test.ts +0 -20
  156. package/src/observability/__tests__/integration/vercel-first-then-langwatch.test.ts +0 -27
  157. package/src/observability/__tests__/span.test.ts +0 -214
  158. package/src/observability/__tests__/trace.test.ts +0 -180
  159. package/src/observability/exporters/index.ts +0 -1
  160. package/src/observability/index.ts +0 -4
  161. package/src/observability/instrumentation/langchain/__tests__/integration/langchain-chatbot.test.ts +0 -112
  162. package/src/observability/instrumentation/langchain/__tests__/langchain.test.ts +0 -284
  163. package/src/observability/instrumentation/langchain/index.ts +0 -624
  164. package/src/observability/processors/__tests__/filterable-batch-span-exporter.test.ts +0 -98
  165. package/src/observability/processors/filterable-batch-span-processor.ts +0 -99
  166. package/src/observability/processors/index.ts +0 -1
  167. package/src/observability/semconv/attributes.ts +0 -185
  168. package/src/observability/semconv/events.ts +0 -42
  169. package/src/observability/semconv/index.ts +0 -16
  170. package/src/observability/semconv/values.ts +0 -159
  171. package/src/observability/span.ts +0 -728
  172. package/src/observability/trace.ts +0 -301
  173. package/src/prompt/__tests__/prompt.test.ts +0 -139
  174. package/src/prompt/get-prompt-version.ts +0 -49
  175. package/src/prompt/get-prompt.ts +0 -44
  176. package/src/prompt/index.ts +0 -3
  177. package/src/prompt/prompt.ts +0 -133
  178. package/src/prompt/service.ts +0 -221
  179. package/src/prompt/tracer.ts +0 -3
  180. package/src/prompt/types.ts +0 -0
  181. package/ts-to-zod.config.js +0 -35
  182. package/tsconfig.json +0 -26
  183. package/tsup.config.ts +0 -20
  184. package/vitest.config.ts +0 -9
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/internal/api/client.ts","../src/prompt/prompt.ts","../src/prompt/service.ts","../src/prompt/tracer.ts","../src/prompt/get-prompt.ts","../src/prompt/get-prompt-version.ts"],"sourcesContent":["import openApiCreateClient from \"openapi-fetch\";\nimport type { paths } from \"../generated/openapi/api-client\";\nimport { z } from \"zod\";\nimport { getApiKey, getEndpoint } from \"../../client\";\n\n// Define the client type explicitly to avoid naming issues\nexport type LangwatchApiClient = ReturnType<typeof openApiCreateClient<paths>>;\n\nconst configSchema = z.object({\n apiKey: z.string().min(1, \"API key is required\"),\n endpoint: z.string().url(\"Endpoint must be a valid URL\"),\n});\n\nexport function createLangWatchApiClient(apiKey?: string | undefined, endpoint?: string | undefined ): LangwatchApiClient {\n // This will error if the config is invalid\n const config = configSchema.parse({\n apiKey: apiKey ?? getApiKey(),\n endpoint: endpoint ?? getEndpoint(),\n });\n\n return openApiCreateClient<paths>({\n baseUrl: config.endpoint,\n headers: {\n \"X-Auth-Token\": config.apiKey,\n \"Content-Type\": \"application/json\",\n },\n });\n}\n\n\n","import { Liquid } from \"liquidjs\";\nimport type { paths } from \"../internal/generated/openapi/api-client\";\n\n// Extract the prompt response type from OpenAPI schema\nexport type PromptResponse = NonNullable<\n paths[\"/api/prompts/{id}\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"]\n>;\n\n// Type for template variables - supporting common data types\nexport type TemplateVariables = Record<\n string,\n string | number | boolean | object | null\n>;\n\n/**\n * Error class for template compilation issues\n */\nexport class PromptCompilationError extends Error {\n constructor(\n message: string,\n public readonly template: string,\n public readonly originalError?: any\n ) {\n super(message);\n this.name = \"PromptCompilationError\";\n }\n}\n\n// Global Liquid instance - shared across all prompts for efficiency\nconst liquid = new Liquid({\n strictFilters: true,\n});\n\nexport class Prompt implements PromptResponse {\n public readonly id!: string;\n public readonly name!: string;\n public readonly updatedAt!: string;\n public readonly version!: number;\n public readonly versionId!: string;\n public readonly versionCreatedAt!: string;\n public readonly model!: string;\n public readonly prompt!: string;\n public readonly messages!: PromptResponse[\"messages\"];\n public readonly response_format!: PromptResponse[\"response_format\"];\n\n constructor(promptData: PromptResponse) {\n this.id = promptData.id;\n this.name = promptData.name;\n this.updatedAt = promptData.updatedAt;\n this.version = promptData.version;\n this.versionId = promptData.versionId;\n this.versionCreatedAt = promptData.versionCreatedAt;\n this.model = promptData.model;\n this.prompt = promptData.prompt;\n this.messages = promptData.messages;\n this.response_format = promptData.response_format;\n }\n\n /**\n * Get the raw prompt data from the API\n */\n get raw(): PromptResponse {\n return this;\n }\n\n /**\n * Compile the prompt template with provided variables (lenient - missing variables become empty)\n * @param variables - Object containing variable values for template compilation\n * @returns CompiledPrompt instance with compiled content\n */\n private _compile(variables: TemplateVariables, strict: boolean): CompiledPrompt {\n try {\n // Compile main prompt\n const compiledPrompt = this.prompt\n ? liquid.parseAndRenderSync(this.prompt, variables, {\n strictVariables: strict,\n })\n : \"\";\n\n // Compile messages\n const compiledMessages = (this.messages || []).map((message) => ({\n ...message,\n content: message.content\n ? liquid.parseAndRenderSync(message.content, variables, {\n strictVariables: strict,\n })\n : message.content,\n }));\n\n // Create new prompt data with compiled content\n const compiledData: PromptResponse = {\n ...this,\n prompt: compiledPrompt,\n messages: compiledMessages,\n };\n\n return new CompiledPrompt(compiledData, this);\n } catch (error) {\n const templateStr = this.prompt || JSON.stringify(this.messages);\n throw new PromptCompilationError(\n `Failed to compile prompt template: ${error instanceof Error ? error.message : \"Unknown error\"\n }`,\n templateStr,\n error\n );\n }\n }\n\n compile(variables: TemplateVariables = {}): CompiledPrompt {\n return this._compile(variables, false);\n }\n\n /**\n * Compile with validation - throws error if required variables are missing\n * @param variables - Template variables\n * @returns CompiledPrompt instance with compiled content\n */\n compileStrict(variables: TemplateVariables): CompiledPrompt {\n return this._compile(variables, true);\n }\n}\n\n/**\n * Represents a compiled prompt that extends Prompt with reference to the original template\n */\nexport class CompiledPrompt extends Prompt {\n constructor(\n compiledData: PromptResponse,\n public readonly original: Prompt\n ) {\n super(compiledData);\n }\n}\n","import {\n createLangWatchApiClient,\n type LangwatchApiClient,\n} from \"../internal/api/client\";\nimport type { paths } from \"../internal/generated/openapi/api-client\";\nimport { Prompt } from \"./prompt\";\n\n// Extract types directly from OpenAPI schema for strong type safety.\ntype CreatePromptBody = NonNullable<\n paths[\"/api/prompts\"][\"post\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\ntype UpdatePromptBody = NonNullable<\n paths[\"/api/prompts/{id}\"][\"put\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\ntype CreateVersionBody = NonNullable<\n paths[\"/api/prompts/{id}/versions\"][\"post\"][\"requestBody\"]\n>[\"content\"][\"application/json\"];\n\n/**\n * Custom error class for Prompts API operations.\n * Provides context about the failed operation and the original error.\n */\nexport class PromptsError extends Error {\n constructor(\n message: string,\n public readonly operation: string,\n public readonly originalError?: any,\n ) {\n super(message);\n this.name = \"PromptsError\";\n }\n}\n\ninterface PromptServiceOptions {\n client?: LangwatchApiClient;\n}\n\n/**\n * Service for managing prompt resources via the Langwatch API.\n *\n * Responsibilities:\n * - CRUD operations for prompts\n * - Creating prompt versions\n * - Error handling with contextual information\n *\n * All methods return Prompt instances, which encapsulate prompt data and template logic.\n */\nexport class PromptService {\n private client: LangwatchApiClient;\n private static instance: PromptService | null = null;\n\n constructor(opts?: PromptServiceOptions) {\n this.client = opts?.client ?? createLangWatchApiClient();\n }\n\n /**\n * Gets the singleton instance of PromptService.\n * Creates the instance lazily on first access.\n */\n public static getInstance(): PromptService {\n if (!PromptService.instance) {\n PromptService.instance = new PromptService();\n }\n return PromptService.instance;\n }\n\n /**\n * Resets the singleton instance. Primarily used for testing.\n */\n public static resetInstance(): void {\n PromptService.instance = null;\n }\n\n /**\n * Handles API errors by throwing a PromptsError with operation context.\n * @param operation Description of the operation being performed.\n * @param error The error object returned from the API client.\n * @throws {PromptsError}\n */\n private handleApiError(operation: string, error: any): never {\n const errorMessage =\n typeof error === \"string\"\n ? error\n : error?.error ?? error?.message ?? \"Unknown error occurred\";\n throw new PromptsError(\n `Failed to ${operation}: ${errorMessage}`,\n operation,\n error,\n );\n }\n\n /**\n * Fetches all prompts from the API.\n * @returns Array of Prompt instances.\n * @throws {PromptsError} If the API call fails.\n */\n async getAll(): Promise<Prompt[]> {\n const { data, error } = await this.client.GET(\"/api/prompts\");\n if (error) this.handleApiError(\"fetch all prompts\", error);\n return data.map((promptData) => new Prompt(promptData));\n }\n\n /**\n * Fetches a single prompt by its ID.\n * @param id The prompt's unique identifier.\n * @returns The Prompt instance.\n * @throws {PromptsError} If the API call fails.\n */\n async get(id: string): Promise<Prompt> {\n const { data, error } = await this.client.GET(\"/api/prompts/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`fetch prompt with ID \"${id}\"`, error);\n return new Prompt(data);\n }\n\n /**\n * Creates a new prompt.\n * @param params The prompt creation payload, matching the OpenAPI schema.\n * @returns The created Prompt instance.\n * @throws {PromptsError} If the API call fails.\n */\n async create(params: CreatePromptBody): Promise<Prompt> {\n const { data, error } = await this.client.POST(\"/api/prompts\", {\n body: params,\n });\n if (error) this.handleApiError(\"create prompt\", error);\n return new Prompt(data);\n }\n\n /**\n * Updates an existing prompt.\n * @param id The prompt's unique identifier.\n * @param params The update payload, matching the OpenAPI schema.\n * @returns The updated Prompt instance.\n * @throws {PromptsError} If the API call fails.\n * @remarks\n * The API does not return the updated prompt directly, so this method fetches it after updating.\n */\n async update(id: string, params: UpdatePromptBody): Promise<Prompt> {\n const { error } = await this.client.PUT(\"/api/prompts/{id}\", {\n params: { path: { id } },\n body: params,\n });\n if (error) this.handleApiError(`update prompt with ID \"${id}\"`, error);\n // TODO: This is a workaround to get the updated prompt. It would be better to return the updated prompt directly.\n return await this.get(id);\n }\n\n /**\n * Deletes a prompt by its ID.\n * @param id The prompt's unique identifier.\n * @throws {PromptsError} If the API call fails.\n */\n async delete(id: string): Promise<void> {\n const { error } = await this.client.DELETE(\"/api/prompts/{id}\", {\n params: { path: { id } },\n });\n if (error) this.handleApiError(`delete prompt with ID \"${id}\"`, error);\n }\n\n /**\n * Fetches all versions for a given prompt.\n * @param id The prompt's unique identifier.\n * @throws {PromptsError} If the API call fails.\n */\n async getVersions(\n id: string,\n ): Promise<Record<string, Prompt>> {\n const { data, error } = await this.client.GET(\n \"/api/prompts/{id}/versions\",\n {\n params: { path: { id } },\n },\n );\n if (error)\n this.handleApiError(`fetch versions for prompt with ID \"${id}\"`, error);\n\n const prompts: Record<string, Prompt> = {};\n const dataTypeCorrected = data as unknown as NonNullable<\n paths[\"/api/prompts/{id}/versions\"][\"get\"][\"responses\"][\"200\"][\"content\"][\"application/json\"]\n >[];\n\n for (const version of dataTypeCorrected) {\n prompts[version.id] = new Prompt({\n id: version.configId,\n messages: version.configData.messages,\n model: version.configData.model,\n prompt: version.configData.prompt,\n response_format: null,\n name: `Prompt ${version.configId}@${version.id}`,\n updatedAt: version.createdAt,\n version: version.configData.version ?? 0,\n versionCreatedAt: version.createdAt,\n versionId: version.id,\n });\n }\n\n return prompts;\n }\n\n /**\n * Creates a new version for a given prompt.\n * @param id The prompt's unique identifier.\n * @param params The version creation payload, matching the OpenAPI schema.\n * @returns The updated Prompt instance.\n * @throws {PromptsError} If the API call fails.\n * @remarks\n * The API does not return the updated prompt directly, so this method fetches it after creation.\n */\n async createVersion(id: string, params: CreateVersionBody): Promise<Prompt> {\n const { error } = await this.client.POST(\"/api/prompts/{id}/versions\", {\n params: { path: { id } },\n body: params,\n });\n if (error)\n this.handleApiError(`create version for prompt with ID \"${id}\"`, error);\n // TODO: This is a workaround to get the updated prompt. It would be better to return the updated prompt directly.\n return await this.get(id);\n }\n}\n","import { getLangWatchTracer } from \"../observability/trace\";\n\nexport const tracer = getLangWatchTracer(\"langwatch.prompt\");\n","import { PromptService } from \"./service\";\nimport { CompiledPrompt, Prompt, TemplateVariables } from \"./prompt\";\nimport * as intSemconv from \"../observability/semconv\";\nimport { tracer } from \"./tracer\";\nimport { canAutomaticallyCaptureInput, canAutomaticallyCaptureOutput } from \"../client\";\n\nexport async function getPrompt(id: string, variables: TemplateVariables): Promise<CompiledPrompt>;\nexport async function getPrompt(id: string): Promise<Prompt>;\n\nexport async function getPrompt(id: string, variables?: TemplateVariables): Promise<Prompt | CompiledPrompt> {\n return tracer.withActiveSpan(\"retrieve prompt\", async (span) => {\n span.setType(\"prompt\");\n span.setAttribute(intSemconv.ATTR_LANGWATCH_PROMPT_ID, id);\n\n const service = PromptService.getInstance();\n const prompt = await service.get(id);\n\n if (canAutomaticallyCaptureOutput()) {\n span.setOutput(prompt);\n }\n\n span.setAttributes({\n [intSemconv.ATTR_LANGWATCH_PROMPT_ID]: id,\n [intSemconv.ATTR_LANGWATCH_PROMPT_VERSION_ID]: prompt.versionId,\n [intSemconv.ATTR_LANGWATCH_PROMPT_VERSION_NUMBER]: prompt.version,\n });\n\n if (variables) {\n if (canAutomaticallyCaptureInput()) {\n span.setAttribute(\n intSemconv.ATTR_LANGWATCH_PROMPT_VARIABLES,\n JSON.stringify({\n type: \"json\",\n value: variables,\n }),\n );\n }\n\n return prompt.compile(variables);\n }\n\n return prompt;\n });\n}\n","import { PromptService } from \"./service\";\nimport { CompiledPrompt, Prompt, TemplateVariables } from \"./prompt\";\nimport * as intSemconv from \"../observability/semconv\";\nimport { tracer } from \"./tracer\";\nimport { canAutomaticallyCaptureInput, canAutomaticallyCaptureOutput } from \"../client\";\n\nexport async function getPromptVersion(id: string, versionId: string, variables: TemplateVariables): Promise<CompiledPrompt>;\nexport async function getPromptVersion(id: string, versionId: string): Promise<Prompt>;\n\nexport async function getPromptVersion(id: string, versionId: string, variables?: TemplateVariables): Promise<Prompt | CompiledPrompt> {\n return tracer.withActiveSpan(\"retrieve prompt version\", async (span) => {\n span.setType(\"prompt\");\n span.setAttribute(intSemconv.ATTR_LANGWATCH_PROMPT_ID, id);\n\n const service = PromptService.getInstance();\n const prompt = await service.getVersions(id);\n const promptVersion = prompt[versionId];\n\n if (!promptVersion) {\n throw new Error(`Prompt version ${versionId} not found for prompt ${id}`);\n }\n\n if (canAutomaticallyCaptureOutput()) {\n span.setOutput(prompt);\n }\n\n span.setAttributes({\n [intSemconv.ATTR_LANGWATCH_PROMPT_ID]: id,\n [intSemconv.ATTR_LANGWATCH_PROMPT_VERSION_ID]: promptVersion.id,\n [intSemconv.ATTR_LANGWATCH_PROMPT_VERSION_NUMBER]: promptVersion.version,\n });\n\n if (variables) {\n if (canAutomaticallyCaptureInput()) {\n span.setAttribute(\n intSemconv.ATTR_LANGWATCH_PROMPT_VARIABLES,\n JSON.stringify({\n type: \"json\",\n value: variables,\n }),\n );\n }\n\n return promptVersion.compile(variables);\n }\n\n return promptVersion;\n });\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,51 @@
1
+ import { SpanProcessor } from '@opentelemetry/sdk-trace-base';
2
+ import { Attributes } from '@opentelemetry/api';
3
+ import { S as SpanProcessingExcludeRule } from './filterable-batch-span-processor-zO5kcjBY.js';
4
+
5
+ interface SetupOptions {
6
+ /**
7
+ * The API key to use for the LangWatch API.
8
+ */
9
+ apiKey?: string;
10
+ /**
11
+ * The endpoint to use for the LangWatch API.
12
+ */
13
+ endpoint?: string;
14
+ /**
15
+ * The span processors to use for the OpenTelemetry SDK.
16
+ *
17
+ * If provided, these will be added to the OpenTelemetry SDK after the LangWatch SDK has
18
+ * been initialized.
19
+ */
20
+ otelSpanProcessors?: SpanProcessor[];
21
+ /**
22
+ * The span processing exclude rules to use for the OpenTelemetry SDK.
23
+ *
24
+ * If provided, these will be added to the OpenTelemetry SDK after the LangWatch SDK has
25
+ * been initialized.
26
+ *
27
+ * If you are using the `otelSpanProcessors` option, then these will be ignored.
28
+ */
29
+ otelSpanProcessingExcludeRules?: SpanProcessingExcludeRule[];
30
+ /**
31
+ * Whether to skip the automatic setup of the OpenTelemetry SDK. If this is set, then
32
+ * the LangWatch SDK will not attempt to setup the OpenTelemetry SDK. You will need to
33
+ * setup the OpenTelemetry yourself, and ensure that a SpanProcessor is added to the
34
+ * OpenTelemetry SDK that will send traces to the LangWatch API.
35
+ */
36
+ skipOpenTelemetrySetup?: boolean;
37
+ /**
38
+ * Whether to disable the automatic capture of input.
39
+ */
40
+ disableAutomaticInputCapture?: boolean;
41
+ /**
42
+ * Whether to disable the automatic capture of output.
43
+ */
44
+ disableAutomaticOutputCapture?: boolean;
45
+ /**
46
+ * The base attributes to use for the OpenTelemetry SDK.
47
+ */
48
+ baseAttributes?: Attributes;
49
+ }
50
+
51
+ export type { SetupOptions as S };
@@ -0,0 +1,51 @@
1
+ import { SpanProcessor } from '@opentelemetry/sdk-trace-base';
2
+ import { Attributes } from '@opentelemetry/api';
3
+ import { S as SpanProcessingExcludeRule } from './filterable-batch-span-processor-zO5kcjBY.mjs';
4
+
5
+ interface SetupOptions {
6
+ /**
7
+ * The API key to use for the LangWatch API.
8
+ */
9
+ apiKey?: string;
10
+ /**
11
+ * The endpoint to use for the LangWatch API.
12
+ */
13
+ endpoint?: string;
14
+ /**
15
+ * The span processors to use for the OpenTelemetry SDK.
16
+ *
17
+ * If provided, these will be added to the OpenTelemetry SDK after the LangWatch SDK has
18
+ * been initialized.
19
+ */
20
+ otelSpanProcessors?: SpanProcessor[];
21
+ /**
22
+ * The span processing exclude rules to use for the OpenTelemetry SDK.
23
+ *
24
+ * If provided, these will be added to the OpenTelemetry SDK after the LangWatch SDK has
25
+ * been initialized.
26
+ *
27
+ * If you are using the `otelSpanProcessors` option, then these will be ignored.
28
+ */
29
+ otelSpanProcessingExcludeRules?: SpanProcessingExcludeRule[];
30
+ /**
31
+ * Whether to skip the automatic setup of the OpenTelemetry SDK. If this is set, then
32
+ * the LangWatch SDK will not attempt to setup the OpenTelemetry SDK. You will need to
33
+ * setup the OpenTelemetry yourself, and ensure that a SpanProcessor is added to the
34
+ * OpenTelemetry SDK that will send traces to the LangWatch API.
35
+ */
36
+ skipOpenTelemetrySetup?: boolean;
37
+ /**
38
+ * Whether to disable the automatic capture of input.
39
+ */
40
+ disableAutomaticInputCapture?: boolean;
41
+ /**
42
+ * Whether to disable the automatic capture of output.
43
+ */
44
+ disableAutomaticOutputCapture?: boolean;
45
+ /**
46
+ * The base attributes to use for the OpenTelemetry SDK.
47
+ */
48
+ baseAttributes?: Attributes;
49
+ }
50
+
51
+ export type { SetupOptions as S };
@@ -0,0 +1,8 @@
1
+ import { S as SetupOptions } from './client-XyCqclCi.mjs';
2
+ import '@opentelemetry/sdk-trace-base';
3
+ import '@opentelemetry/api';
4
+ import './filterable-batch-span-processor-zO5kcjBY.mjs';
5
+
6
+ declare function setupLangWatch(options?: SetupOptions): Promise<void>;
7
+
8
+ export { setupLangWatch };
@@ -0,0 +1,8 @@
1
+ import { S as SetupOptions } from './client-B2HqIKg6.js';
2
+ import '@opentelemetry/sdk-trace-base';
3
+ import '@opentelemetry/api';
4
+ import './filterable-batch-span-processor-zO5kcjBY.js';
5
+
6
+ declare function setupLangWatch(options?: SetupOptions): Promise<void>;
7
+
8
+ export { setupLangWatch };
@@ -0,0 +1,83 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkLD74LVRUjs = require('./chunk-LD74LVRU.js');
6
+
7
+
8
+
9
+ var _chunkWM2GRSRWjs = require('./chunk-WM2GRSRW.js');
10
+
11
+
12
+ var _chunkKGDAENGDjs = require('./chunk-KGDAENGD.js');
13
+
14
+
15
+
16
+
17
+ var _chunkPCQVQ7SBjs = require('./chunk-PCQVQ7SB.js');
18
+
19
+
20
+
21
+
22
+
23
+
24
+ var _chunkVJSOCNPAjs = require('./chunk-VJSOCNPA.js');
25
+
26
+ // src/client-browser.ts
27
+ var _sdktraceweb = require('@opentelemetry/sdk-trace-web');
28
+ var _contextzone = require('@opentelemetry/context-zone');
29
+ var _core = require('@opentelemetry/core');
30
+ var _resources = require('@opentelemetry/resources');
31
+ var managedSpanProcessors = [];
32
+ var provider = null;
33
+ var browserSetupCalled = false;
34
+ async function setupLangWatch(options = {}) {
35
+ var _a, _b, _c;
36
+ if (browserSetupCalled) {
37
+ throw new Error("LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.");
38
+ }
39
+ _chunkPCQVQ7SBjs.setConfig.call(void 0, options);
40
+ if (options.skipOpenTelemetrySetup) return;
41
+ const endpointURL = new URL("/api/otel/v1/traces", _chunkPCQVQ7SBjs.getEndpoint.call(void 0, ));
42
+ const langwatchSpanProcessor = new (0, _chunkKGDAENGDjs.FilterableBatchSpanProcessor)(
43
+ new (0, _chunkWM2GRSRWjs.LangWatchExporter)(_chunkPCQVQ7SBjs.getApiKey.call(void 0, ), endpointURL.toString()),
44
+ (_a = options.otelSpanProcessingExcludeRules) != null ? _a : []
45
+ );
46
+ const langwatchResource = _resources.resourceFromAttributes.call(void 0, _chunkVJSOCNPAjs.__spreadProps.call(void 0, _chunkVJSOCNPAjs.__spreadValues.call(void 0, {}, options.baseAttributes), {
47
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
48
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_VERSION]: _chunkWM2GRSRWjs.version,
49
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
50
+ }));
51
+ if (_chunkLD74LVRUjs.isOtelInitialized.call(void 0, )) {
52
+ _chunkLD74LVRUjs.mergeResourceIntoExistingTracerProvider.call(void 0, langwatchResource);
53
+ _chunkLD74LVRUjs.addSpanProcessorToExistingTracerProvider.call(void 0, langwatchSpanProcessor);
54
+ for (const spanProcessor of (_b = options.otelSpanProcessors) != null ? _b : []) {
55
+ _chunkLD74LVRUjs.addSpanProcessorToExistingTracerProvider.call(void 0, spanProcessor);
56
+ }
57
+ managedSpanProcessors = [langwatchSpanProcessor];
58
+ } else {
59
+ provider = new (0, _sdktraceweb.WebTracerProvider)({
60
+ resource: _resources.resourceFromAttributes.call(void 0, {
61
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
62
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_VERSION]: _chunkWM2GRSRWjs.version,
63
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
64
+ }),
65
+ spanProcessors: [langwatchSpanProcessor, ...(_c = options.otelSpanProcessors) != null ? _c : []]
66
+ });
67
+ provider.register({
68
+ contextManager: new (0, _contextzone.ZoneContextManager)(),
69
+ propagator: new (0, _core.W3CTraceContextPropagator)()
70
+ });
71
+ }
72
+ window.addEventListener("beforeunload", async () => {
73
+ if (provider) {
74
+ await provider.shutdown();
75
+ } else {
76
+ await Promise.all(managedSpanProcessors.map((p) => p.shutdown()));
77
+ }
78
+ });
79
+ }
80
+
81
+
82
+ exports.setupLangWatch = setupLangWatch;
83
+ //# sourceMappingURL=client-browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-browser.js","../src/client-browser.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-browser.js","sourcesContent":[null,"import { setConfig, SetupOptions, getApiKey, getEndpoint } from \"./client\";\nimport { SpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { version } from \"../package.json\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { FilterableBatchSpanProcessor } from \"./observability/processors\";\nimport { LangWatchExporter } from \"./observability/exporters\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet provider: WebTracerProvider | null = null;\nlet browserSetupCalled: boolean = false;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (browserSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n provider = new WebTracerProvider({\n resource: resourceFromAttributes({\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n }),\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n });\n\n provider.register({\n contextManager: new ZoneContextManager(),\n propagator: new W3CTraceContextPropagator(),\n });\n }\n\n // This is not guaranteed to be called, but it's a good nice to have.\n window.addEventListener(\"beforeunload\", async () => {\n if (provider) {\n await provider.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n });\n}\n"]}
@@ -0,0 +1,83 @@
1
+ import {
2
+ addSpanProcessorToExistingTracerProvider,
3
+ isOtelInitialized,
4
+ mergeResourceIntoExistingTracerProvider
5
+ } from "./chunk-F63YKTXA.mjs";
6
+ import {
7
+ LangWatchExporter,
8
+ version
9
+ } from "./chunk-REUCVT7A.mjs";
10
+ import {
11
+ FilterableBatchSpanProcessor
12
+ } from "./chunk-PR3JDWC3.mjs";
13
+ import {
14
+ getApiKey,
15
+ getEndpoint,
16
+ setConfig
17
+ } from "./chunk-QEWDG5QE.mjs";
18
+ import {
19
+ ATTR_LANGWATCH_SDK_LANGUAGE,
20
+ ATTR_LANGWATCH_SDK_NAME,
21
+ ATTR_LANGWATCH_SDK_VERSION,
22
+ __spreadProps,
23
+ __spreadValues
24
+ } from "./chunk-4BZATFKJ.mjs";
25
+
26
+ // src/client-browser.ts
27
+ import { WebTracerProvider } from "@opentelemetry/sdk-trace-web";
28
+ import { ZoneContextManager } from "@opentelemetry/context-zone";
29
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
30
+ import { resourceFromAttributes } from "@opentelemetry/resources";
31
+ var managedSpanProcessors = [];
32
+ var provider = null;
33
+ var browserSetupCalled = false;
34
+ async function setupLangWatch(options = {}) {
35
+ var _a, _b, _c;
36
+ if (browserSetupCalled) {
37
+ throw new Error("LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.");
38
+ }
39
+ setConfig(options);
40
+ if (options.skipOpenTelemetrySetup) return;
41
+ const endpointURL = new URL("/api/otel/v1/traces", getEndpoint());
42
+ const langwatchSpanProcessor = new FilterableBatchSpanProcessor(
43
+ new LangWatchExporter(getApiKey(), endpointURL.toString()),
44
+ (_a = options.otelSpanProcessingExcludeRules) != null ? _a : []
45
+ );
46
+ const langwatchResource = resourceFromAttributes(__spreadProps(__spreadValues({}, options.baseAttributes), {
47
+ [ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
48
+ [ATTR_LANGWATCH_SDK_VERSION]: version,
49
+ [ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
50
+ }));
51
+ if (isOtelInitialized()) {
52
+ mergeResourceIntoExistingTracerProvider(langwatchResource);
53
+ addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);
54
+ for (const spanProcessor of (_b = options.otelSpanProcessors) != null ? _b : []) {
55
+ addSpanProcessorToExistingTracerProvider(spanProcessor);
56
+ }
57
+ managedSpanProcessors = [langwatchSpanProcessor];
58
+ } else {
59
+ provider = new WebTracerProvider({
60
+ resource: resourceFromAttributes({
61
+ [ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-browser",
62
+ [ATTR_LANGWATCH_SDK_VERSION]: version,
63
+ [ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
64
+ }),
65
+ spanProcessors: [langwatchSpanProcessor, ...(_c = options.otelSpanProcessors) != null ? _c : []]
66
+ });
67
+ provider.register({
68
+ contextManager: new ZoneContextManager(),
69
+ propagator: new W3CTraceContextPropagator()
70
+ });
71
+ }
72
+ window.addEventListener("beforeunload", async () => {
73
+ if (provider) {
74
+ await provider.shutdown();
75
+ } else {
76
+ await Promise.all(managedSpanProcessors.map((p) => p.shutdown()));
77
+ }
78
+ });
79
+ }
80
+ export {
81
+ setupLangWatch
82
+ };
83
+ //# sourceMappingURL=client-browser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client-browser.ts"],"sourcesContent":["import { setConfig, SetupOptions, getApiKey, getEndpoint } from \"./client\";\nimport { SpanProcessor, WebTracerProvider } from '@opentelemetry/sdk-trace-web';\nimport { ZoneContextManager } from '@opentelemetry/context-zone';\nimport { W3CTraceContextPropagator } from '@opentelemetry/core';\nimport { version } from \"../package.json\";\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { FilterableBatchSpanProcessor } from \"./observability/processors\";\nimport { LangWatchExporter } from \"./observability/exporters\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet provider: WebTracerProvider | null = null;\nlet browserSetupCalled: boolean = false;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (browserSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n provider = new WebTracerProvider({\n resource: resourceFromAttributes({\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-browser\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n }),\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n });\n\n provider.register({\n contextManager: new ZoneContextManager(),\n propagator: new W3CTraceContextPropagator(),\n });\n }\n\n // This is not guaranteed to be called, but it's a good nice to have.\n window.addEventListener(\"beforeunload\", async () => {\n if (provider) {\n await provider.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AACA,SAAwB,yBAAyB;AACjD,SAAS,0BAA0B;AACnC,SAAS,iCAAiC;AAE1C,SAAS,8BAA8B;AAMvC,IAAI,wBAAyC,CAAC;AAC9C,IAAI,WAAqC;AACzC,IAAI,qBAA8B;AAElC,eAAsB,eAAe,UAAwB,CAAC,GAAG;AAfjE;AAgBE,MAAI,oBAAoB;AACtB,UAAM,IAAI,MAAM,4KAA4K;AAAA,EAC9L;AAEA,YAAU,OAAO;AAEjB,MAAI,QAAQ,uBAAwB;AAEpC,QAAM,cAAc,IAAI,IAAI,uBAAuB,YAAY,CAAC;AAChE,QAAM,yBAAyB,IAAI;AAAA,IACjC,IAAI,kBAAkB,UAAU,GAAG,YAAY,SAAS,CAAC;AAAA,KACzD,aAAQ,mCAAR,YAA0C,CAAC;AAAA,EAC7C;AAEA,QAAM,oBAAoB,uBAAuB,iCAC5C,QAAQ,iBADoC;AAAA,IAE/C,CAAY,2BAA2B,GAAG;AAAA,IAC1C,CAAY,0BAA0B,GAAG;AAAA,IACzC,CAAY,uBAAuB,GAAG;AAAA,EACxC,EAAC;AAED,MAAI,kBAAkB,GAAG;AACvB,4CAAwC,iBAAiB;AACzD,6CAAyC,sBAAsB;AAC/D,eAAW,kBAAiB,aAAQ,uBAAR,YAA8B,CAAC,GAAG;AAC5D,+CAAyC,aAAa;AAAA,IACxD;AAEA,4BAAwB,CAAC,sBAAsB;AAAA,EACjD,OAAO;AACL,eAAW,IAAI,kBAAkB;AAAA,MAC/B,UAAU,uBAAuB;AAAA,QAC/B,CAAY,2BAA2B,GAAG;AAAA,QAC1C,CAAY,0BAA0B,GAAG;AAAA,QACzC,CAAY,uBAAuB,GAAG;AAAA,MACxC,CAAC;AAAA,MACD,gBAAgB,CAAC,wBAAwB,IAAI,aAAQ,uBAAR,YAA8B,CAAC,CAAE;AAAA,IAChF,CAAC;AAED,aAAS,SAAS;AAAA,MAChB,gBAAgB,IAAI,mBAAmB;AAAA,MACvC,YAAY,IAAI,0BAA0B;AAAA,IAC5C,CAAC;AAAA,EACH;AAGA,SAAO,iBAAiB,gBAAgB,YAAY;AAClD,QAAI,UAAU;AACZ,YAAM,SAAS,SAAS;AAAA,IAC1B,OAAO;AACL,YAAM,QAAQ,IAAI,sBAAsB,IAAI,OAAK,EAAE,SAAS,CAAC,CAAC;AAAA,IAChE;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -0,0 +1,8 @@
1
+ import { S as SetupOptions } from './client-XyCqclCi.mjs';
2
+ import '@opentelemetry/sdk-trace-base';
3
+ import '@opentelemetry/api';
4
+ import './filterable-batch-span-processor-zO5kcjBY.mjs';
5
+
6
+ declare function setupLangWatch(options?: SetupOptions): Promise<void>;
7
+
8
+ export { setupLangWatch };
@@ -0,0 +1,8 @@
1
+ import { S as SetupOptions } from './client-B2HqIKg6.js';
2
+ import '@opentelemetry/sdk-trace-base';
3
+ import '@opentelemetry/api';
4
+ import './filterable-batch-span-processor-zO5kcjBY.js';
5
+
6
+ declare function setupLangWatch(options?: SetupOptions): Promise<void>;
7
+
8
+ export { setupLangWatch };
@@ -0,0 +1,90 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+
4
+
5
+ var _chunkLD74LVRUjs = require('./chunk-LD74LVRU.js');
6
+
7
+
8
+
9
+ var _chunkWM2GRSRWjs = require('./chunk-WM2GRSRW.js');
10
+ require('./chunk-G3AUABT7.js');
11
+
12
+
13
+ var _chunkKGDAENGDjs = require('./chunk-KGDAENGD.js');
14
+
15
+
16
+
17
+
18
+ var _chunkPCQVQ7SBjs = require('./chunk-PCQVQ7SB.js');
19
+ require('./chunk-SVJ7SCGB.js');
20
+
21
+
22
+
23
+
24
+
25
+
26
+ var _chunkVJSOCNPAjs = require('./chunk-VJSOCNPA.js');
27
+
28
+ // src/client-node.ts
29
+ var _sdknode = require('@opentelemetry/sdk-node');
30
+ var _resources = require('@opentelemetry/resources');
31
+ var _contextasynchooks = require('@opentelemetry/context-async-hooks');
32
+ var _core = require('@opentelemetry/core');
33
+ var managedSpanProcessors = [];
34
+ var nodeSetupCalled = false;
35
+ var sdk = null;
36
+ async function setupLangWatch(options = {}) {
37
+ var _a, _b, _c;
38
+ if (nodeSetupCalled) {
39
+ throw new Error("LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.");
40
+ }
41
+ _chunkPCQVQ7SBjs.setConfig.call(void 0, options);
42
+ nodeSetupCalled = true;
43
+ if (options.skipOpenTelemetrySetup) return;
44
+ const endpointURL = new URL("/api/otel/v1/traces", _chunkPCQVQ7SBjs.getEndpoint.call(void 0, ));
45
+ const langwatchSpanProcessor = new (0, _chunkKGDAENGDjs.FilterableBatchSpanProcessor)(
46
+ new (0, _chunkWM2GRSRWjs.LangWatchExporter)(_chunkPCQVQ7SBjs.getApiKey.call(void 0, ), endpointURL.toString()),
47
+ (_a = options.otelSpanProcessingExcludeRules) != null ? _a : []
48
+ );
49
+ const langwatchResource = _resources.resourceFromAttributes.call(void 0, _chunkVJSOCNPAjs.__spreadProps.call(void 0, _chunkVJSOCNPAjs.__spreadValues.call(void 0, {}, options.baseAttributes), {
50
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-node",
51
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_VERSION]: _chunkWM2GRSRWjs.version,
52
+ [_chunkVJSOCNPAjs.ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
53
+ }));
54
+ if (_chunkLD74LVRUjs.isOtelInitialized.call(void 0, )) {
55
+ _chunkLD74LVRUjs.mergeResourceIntoExistingTracerProvider.call(void 0, langwatchResource);
56
+ _chunkLD74LVRUjs.addSpanProcessorToExistingTracerProvider.call(void 0, langwatchSpanProcessor);
57
+ for (const spanProcessor of (_b = options.otelSpanProcessors) != null ? _b : []) {
58
+ _chunkLD74LVRUjs.addSpanProcessorToExistingTracerProvider.call(void 0, spanProcessor);
59
+ }
60
+ managedSpanProcessors = [langwatchSpanProcessor];
61
+ } else {
62
+ sdk = new (0, _sdknode.NodeSDK)({
63
+ resource: langwatchResource,
64
+ spanProcessors: [langwatchSpanProcessor, ...(_c = options.otelSpanProcessors) != null ? _c : []],
65
+ contextManager: new (0, _contextasynchooks.AsyncLocalStorageContextManager)(),
66
+ textMapPropagator: new (0, _core.W3CTraceContextPropagator)()
67
+ });
68
+ sdk.start();
69
+ }
70
+ ["SIGINT", "SIGTERM", "beforeExit"].forEach((signal) => {
71
+ process.on(signal, async () => {
72
+ try {
73
+ if (sdk) {
74
+ await sdk.shutdown();
75
+ } else {
76
+ await Promise.all(managedSpanProcessors.map((p) => p.shutdown()));
77
+ }
78
+ } catch (error) {
79
+ console.error("Error shutting down OpenTelemetry SDK:", error);
80
+ }
81
+ if (signal !== "beforeExit") {
82
+ process.exit();
83
+ }
84
+ });
85
+ });
86
+ }
87
+
88
+
89
+ exports.setupLangWatch = setupLangWatch;
90
+ //# sourceMappingURL=client-node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-node.js","../src/client-node.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/client-node.js","sourcesContent":[null,"import { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { getApiKey, getEndpoint, setConfig, SetupOptions } from \"./client\";\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport { version } from \"../package.json\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\nimport { FilterableBatchSpanProcessor } from \"./observability\";\nimport { LangWatchExporter } from \"./observability/exporters\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet nodeSetupCalled: boolean = false;\nlet sdk: NodeSDK | null = null;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (nodeSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n nodeSetupCalled = true;\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-node\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n sdk = new NodeSDK({\n resource: langwatchResource,\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n contextManager: new AsyncLocalStorageContextManager(),\n textMapPropagator: new W3CTraceContextPropagator(),\n });\n\n sdk.start();\n }\n\n // If we detect interrupt, termination, or test beforeExit signals, then we attempt\n // to shutdown.\n // - If an SDK exists, then we just attempt to shutdown the SDK.\n // - If no SDK exists, then we attempt to shutdown ONLY the SpanProcessors that are\n // managed by this LangWatch SDK.\n [\"SIGINT\", \"SIGTERM\", \"beforeExit\"].forEach((signal) => {\n process.on(signal as any, async () => {\n try {\n if (sdk) {\n await sdk.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error shutting down OpenTelemetry SDK:\", error);\n }\n\n if (signal !== \"beforeExit\") {\n process.exit();\n }\n });\n });\n}\n"]}
@@ -0,0 +1,90 @@
1
+ import {
2
+ addSpanProcessorToExistingTracerProvider,
3
+ isOtelInitialized,
4
+ mergeResourceIntoExistingTracerProvider
5
+ } from "./chunk-F63YKTXA.mjs";
6
+ import {
7
+ LangWatchExporter,
8
+ version
9
+ } from "./chunk-REUCVT7A.mjs";
10
+ import "./chunk-OM7VY3XT.mjs";
11
+ import {
12
+ FilterableBatchSpanProcessor
13
+ } from "./chunk-PR3JDWC3.mjs";
14
+ import {
15
+ getApiKey,
16
+ getEndpoint,
17
+ setConfig
18
+ } from "./chunk-QEWDG5QE.mjs";
19
+ import "./chunk-PMBEK6YE.mjs";
20
+ import {
21
+ ATTR_LANGWATCH_SDK_LANGUAGE,
22
+ ATTR_LANGWATCH_SDK_NAME,
23
+ ATTR_LANGWATCH_SDK_VERSION,
24
+ __spreadProps,
25
+ __spreadValues
26
+ } from "./chunk-4BZATFKJ.mjs";
27
+
28
+ // src/client-node.ts
29
+ import { NodeSDK } from "@opentelemetry/sdk-node";
30
+ import { resourceFromAttributes } from "@opentelemetry/resources";
31
+ import { AsyncLocalStorageContextManager } from "@opentelemetry/context-async-hooks";
32
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
33
+ var managedSpanProcessors = [];
34
+ var nodeSetupCalled = false;
35
+ var sdk = null;
36
+ async function setupLangWatch(options = {}) {
37
+ var _a, _b, _c;
38
+ if (nodeSetupCalled) {
39
+ throw new Error("LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.");
40
+ }
41
+ setConfig(options);
42
+ nodeSetupCalled = true;
43
+ if (options.skipOpenTelemetrySetup) return;
44
+ const endpointURL = new URL("/api/otel/v1/traces", getEndpoint());
45
+ const langwatchSpanProcessor = new FilterableBatchSpanProcessor(
46
+ new LangWatchExporter(getApiKey(), endpointURL.toString()),
47
+ (_a = options.otelSpanProcessingExcludeRules) != null ? _a : []
48
+ );
49
+ const langwatchResource = resourceFromAttributes(__spreadProps(__spreadValues({}, options.baseAttributes), {
50
+ [ATTR_LANGWATCH_SDK_LANGUAGE]: "typescript-node",
51
+ [ATTR_LANGWATCH_SDK_VERSION]: version,
52
+ [ATTR_LANGWATCH_SDK_NAME]: "langwatch-observability-sdk"
53
+ }));
54
+ if (isOtelInitialized()) {
55
+ mergeResourceIntoExistingTracerProvider(langwatchResource);
56
+ addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);
57
+ for (const spanProcessor of (_b = options.otelSpanProcessors) != null ? _b : []) {
58
+ addSpanProcessorToExistingTracerProvider(spanProcessor);
59
+ }
60
+ managedSpanProcessors = [langwatchSpanProcessor];
61
+ } else {
62
+ sdk = new NodeSDK({
63
+ resource: langwatchResource,
64
+ spanProcessors: [langwatchSpanProcessor, ...(_c = options.otelSpanProcessors) != null ? _c : []],
65
+ contextManager: new AsyncLocalStorageContextManager(),
66
+ textMapPropagator: new W3CTraceContextPropagator()
67
+ });
68
+ sdk.start();
69
+ }
70
+ ["SIGINT", "SIGTERM", "beforeExit"].forEach((signal) => {
71
+ process.on(signal, async () => {
72
+ try {
73
+ if (sdk) {
74
+ await sdk.shutdown();
75
+ } else {
76
+ await Promise.all(managedSpanProcessors.map((p) => p.shutdown()));
77
+ }
78
+ } catch (error) {
79
+ console.error("Error shutting down OpenTelemetry SDK:", error);
80
+ }
81
+ if (signal !== "beforeExit") {
82
+ process.exit();
83
+ }
84
+ });
85
+ });
86
+ }
87
+ export {
88
+ setupLangWatch
89
+ };
90
+ //# sourceMappingURL=client-node.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/client-node.ts"],"sourcesContent":["import { SpanProcessor } from \"@opentelemetry/sdk-trace-base\";\nimport { getApiKey, getEndpoint, setConfig, SetupOptions } from \"./client\";\nimport { NodeSDK } from '@opentelemetry/sdk-node';\nimport { resourceFromAttributes } from \"@opentelemetry/resources\";\nimport { AsyncLocalStorageContextManager } from \"@opentelemetry/context-async-hooks\";\nimport { W3CTraceContextPropagator } from \"@opentelemetry/core\";\nimport { version } from \"../package.json\";\nimport * as intSemconv from \"./observability/semconv\";\nimport { addSpanProcessorToExistingTracerProvider, isOtelInitialized, mergeResourceIntoExistingTracerProvider } from \"./client-shared\";\nimport { FilterableBatchSpanProcessor } from \"./observability\";\nimport { LangWatchExporter } from \"./observability/exporters\";\n\nlet managedSpanProcessors: SpanProcessor[] = [];\nlet nodeSetupCalled: boolean = false;\nlet sdk: NodeSDK | null = null;\n\nexport async function setupLangWatch(options: SetupOptions = {}) {\n if (nodeSetupCalled) {\n throw new Error(\"LangWatch setup has already been called in this process. Setup can only be called once, if you need to modify OpenTelemetry setup then use the OpenTelemetry API directly.\");\n }\n\n setConfig(options);\n nodeSetupCalled = true;\n\n if (options.skipOpenTelemetrySetup) return;\n\n const endpointURL = new URL(\"/api/otel/v1/traces\", getEndpoint());\n const langwatchSpanProcessor = new FilterableBatchSpanProcessor(\n new LangWatchExporter(getApiKey(), endpointURL.toString()),\n options.otelSpanProcessingExcludeRules ?? [],\n );\n\n const langwatchResource = resourceFromAttributes({\n ...options.baseAttributes,\n [intSemconv.ATTR_LANGWATCH_SDK_LANGUAGE]: \"typescript-node\",\n [intSemconv.ATTR_LANGWATCH_SDK_VERSION]: version,\n [intSemconv.ATTR_LANGWATCH_SDK_NAME]: \"langwatch-observability-sdk\",\n });\n\n if (isOtelInitialized()) {\n mergeResourceIntoExistingTracerProvider(langwatchResource);\n addSpanProcessorToExistingTracerProvider(langwatchSpanProcessor);\n for (const spanProcessor of options.otelSpanProcessors ?? []) {\n addSpanProcessorToExistingTracerProvider(spanProcessor);\n }\n\n managedSpanProcessors = [langwatchSpanProcessor];\n } else {\n sdk = new NodeSDK({\n resource: langwatchResource,\n spanProcessors: [langwatchSpanProcessor, ...(options.otelSpanProcessors ?? [])],\n contextManager: new AsyncLocalStorageContextManager(),\n textMapPropagator: new W3CTraceContextPropagator(),\n });\n\n sdk.start();\n }\n\n // If we detect interrupt, termination, or test beforeExit signals, then we attempt\n // to shutdown.\n // - If an SDK exists, then we just attempt to shutdown the SDK.\n // - If no SDK exists, then we attempt to shutdown ONLY the SpanProcessors that are\n // managed by this LangWatch SDK.\n [\"SIGINT\", \"SIGTERM\", \"beforeExit\"].forEach((signal) => {\n process.on(signal as any, async () => {\n try {\n if (sdk) {\n await sdk.shutdown();\n } else {\n await Promise.all(managedSpanProcessors.map(p => p.shutdown()));\n }\n } catch (error) {\n // eslint-disable-next-line no-console\n console.error(\"Error shutting down OpenTelemetry SDK:\", error);\n }\n\n if (signal !== \"beforeExit\") {\n process.exit();\n }\n });\n });\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,SAAS,eAAe;AACxB,SAAS,8BAA8B;AACvC,SAAS,uCAAuC;AAChD,SAAS,iCAAiC;AAO1C,IAAI,wBAAyC,CAAC;AAC9C,IAAI,kBAA2B;AAC/B,IAAI,MAAsB;AAE1B,eAAsB,eAAe,UAAwB,CAAC,GAAG;AAhBjE;AAiBE,MAAI,iBAAiB;AACnB,UAAM,IAAI,MAAM,4KAA4K;AAAA,EAC9L;AAEA,YAAU,OAAO;AACjB,oBAAkB;AAElB,MAAI,QAAQ,uBAAwB;AAEpC,QAAM,cAAc,IAAI,IAAI,uBAAuB,YAAY,CAAC;AAChE,QAAM,yBAAyB,IAAI;AAAA,IACjC,IAAI,kBAAkB,UAAU,GAAG,YAAY,SAAS,CAAC;AAAA,KACzD,aAAQ,mCAAR,YAA0C,CAAC;AAAA,EAC7C;AAEA,QAAM,oBAAoB,uBAAuB,iCAC5C,QAAQ,iBADoC;AAAA,IAE/C,CAAY,2BAA2B,GAAG;AAAA,IAC1C,CAAY,0BAA0B,GAAG;AAAA,IACzC,CAAY,uBAAuB,GAAG;AAAA,EACxC,EAAC;AAED,MAAI,kBAAkB,GAAG;AACvB,4CAAwC,iBAAiB;AACzD,6CAAyC,sBAAsB;AAC/D,eAAW,kBAAiB,aAAQ,uBAAR,YAA8B,CAAC,GAAG;AAC5D,+CAAyC,aAAa;AAAA,IACxD;AAEA,4BAAwB,CAAC,sBAAsB;AAAA,EACjD,OAAO;AACL,UAAM,IAAI,QAAQ;AAAA,MAChB,UAAU;AAAA,MACV,gBAAgB,CAAC,wBAAwB,IAAI,aAAQ,uBAAR,YAA8B,CAAC,CAAE;AAAA,MAC9E,gBAAgB,IAAI,gCAAgC;AAAA,MACpD,mBAAmB,IAAI,0BAA0B;AAAA,IACnD,CAAC;AAED,QAAI,MAAM;AAAA,EACZ;AAOA,GAAC,UAAU,WAAW,YAAY,EAAE,QAAQ,CAAC,WAAW;AACtD,YAAQ,GAAG,QAAe,YAAY;AACpC,UAAI;AACF,YAAI,KAAK;AACP,gBAAM,IAAI,SAAS;AAAA,QACrB,OAAO;AACL,gBAAM,QAAQ,IAAI,sBAAsB,IAAI,OAAK,EAAE,SAAS,CAAC,CAAC;AAAA,QAChE;AAAA,MACF,SAAS,OAAO;AAEd,gBAAQ,MAAM,0CAA0C,KAAK;AAAA,MAC/D;AAEA,UAAI,WAAW,cAAc;AAC3B,gBAAQ,KAAK;AAAA,MACf;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;","names":[]}