langwatch 0.4.2 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/{add-SV662KZU.js → add-4WXEWG5H.js} +63 -34
  2. package/dist/add-4WXEWG5H.js.map +1 -0
  3. package/dist/{add-SMYALCQG.mjs → add-D2WVVKIP.mjs} +48 -19
  4. package/dist/add-D2WVVKIP.mjs.map +1 -0
  5. package/dist/{chunk-ZZLIF3DE.js → chunk-7OZKH5K2.js} +10 -10
  6. package/dist/{chunk-ZZLIF3DE.js.map → chunk-7OZKH5K2.js.map} +1 -1
  7. package/dist/{chunk-I5NDMIK5.js → chunk-AZHZ4NB4.js} +1 -1
  8. package/dist/{chunk-I5NDMIK5.js.map → chunk-AZHZ4NB4.js.map} +1 -1
  9. package/dist/{chunk-YQVVPMKH.mjs → chunk-BTBSMJTY.mjs} +1 -1
  10. package/dist/chunk-BTBSMJTY.mjs.map +1 -0
  11. package/dist/{chunk-P5F63PAW.js → chunk-CAZONSXV.js} +5 -5
  12. package/dist/{chunk-P5F63PAW.js.map → chunk-CAZONSXV.js.map} +1 -1
  13. package/dist/{chunk-7ZRAJ52N.mjs → chunk-CKVDNVFL.mjs} +3 -3
  14. package/dist/{chunk-K4ICRI7W.mjs → chunk-DLJO7AK5.mjs} +2 -2
  15. package/dist/{chunk-T7FQHOLK.js → chunk-DSIQSULK.js} +15 -18
  16. package/dist/chunk-DSIQSULK.js.map +1 -0
  17. package/dist/{chunk-ILTCLEIF.js → chunk-ECOC36EA.js} +7 -7
  18. package/dist/chunk-ECOC36EA.js.map +1 -0
  19. package/dist/{chunk-5ZKAT4KI.mjs → chunk-H5PON53W.mjs} +12 -29
  20. package/dist/chunk-H5PON53W.mjs.map +1 -0
  21. package/dist/{chunk-NVKMXXNP.js → chunk-P4SQTYGN.js} +14 -14
  22. package/dist/{chunk-NVKMXXNP.js.map → chunk-P4SQTYGN.js.map} +1 -1
  23. package/dist/{chunk-VI5NJ53L.js → chunk-QCYYSMCU.js} +2 -2
  24. package/dist/chunk-QCYYSMCU.js.map +1 -0
  25. package/dist/{chunk-VILW5FYO.mjs → chunk-QZGTM76F.mjs} +7 -7
  26. package/dist/{chunk-VILW5FYO.mjs.map → chunk-QZGTM76F.mjs.map} +1 -1
  27. package/dist/{chunk-PUHM465C.js → chunk-R6FBJN7K.js} +18 -4
  28. package/dist/chunk-R6FBJN7K.js.map +1 -0
  29. package/dist/{chunk-NFM6RB4R.js → chunk-SVXNUWZI.js} +15 -32
  30. package/dist/chunk-SVXNUWZI.js.map +1 -0
  31. package/dist/{chunk-LXVDGQA4.mjs → chunk-V5M3HUBV.mjs} +18 -4
  32. package/dist/chunk-V5M3HUBV.mjs.map +1 -0
  33. package/dist/{chunk-RBZNMZTF.mjs → chunk-YEGQXDTE.mjs} +5 -8
  34. package/dist/{chunk-RBZNMZTF.mjs.map → chunk-YEGQXDTE.mjs.map} +1 -1
  35. package/dist/{chunk-CAVBDSBT.mjs → chunk-YKFTFYKK.mjs} +2 -2
  36. package/dist/chunk-YKFTFYKK.mjs.map +1 -0
  37. package/dist/{chunk-ENSRDEDA.mjs → chunk-ZIULPOMQ.mjs} +2 -2
  38. package/dist/cli/index.js +9 -9
  39. package/dist/cli/index.mjs +8 -8
  40. package/dist/{create-GUY3HZM2.js → create-4LG4N2A4.js} +27 -16
  41. package/dist/create-4LG4N2A4.js.map +1 -0
  42. package/dist/{create-BHWZP6YD.mjs → create-OQEMO4MU.mjs} +22 -11
  43. package/dist/create-OQEMO4MU.mjs.map +1 -0
  44. package/dist/{implementation--7B7PUww.d.ts → implementation-BIlL6-SW.d.ts} +1 -1
  45. package/dist/{implementation-D7LzdQop.d.mts → implementation-fAgqv8OM.d.mts} +1 -1
  46. package/dist/index.d.mts +2 -2
  47. package/dist/index.d.ts +2 -2
  48. package/dist/index.js +7 -7
  49. package/dist/index.mjs +6 -6
  50. package/dist/init-EKNL2SQE.js +16 -0
  51. package/dist/{init-OO2BUJ6V.js.map → init-EKNL2SQE.js.map} +1 -1
  52. package/dist/{init-RDW2F4G3.mjs → init-MQXXHCNT.mjs} +5 -5
  53. package/dist/{list-GZGLSJ52.js → list-GIAXAAH5.js} +10 -10
  54. package/dist/list-GIAXAAH5.js.map +1 -0
  55. package/dist/{list-32BRZ6RS.mjs → list-PFWV7IU6.mjs} +7 -7
  56. package/dist/list-PFWV7IU6.mjs.map +1 -0
  57. package/dist/{login-IAP4RFUM.js → login-3STX2FAO.js} +3 -3
  58. package/dist/{login-IAP4RFUM.js.map → login-3STX2FAO.js.map} +1 -1
  59. package/dist/{login-VXLW2OXR.mjs → login-BYLXS23I.mjs} +2 -2
  60. package/dist/observability-sdk/index.d.mts +3 -3
  61. package/dist/observability-sdk/index.d.ts +3 -3
  62. package/dist/observability-sdk/index.js +4 -4
  63. package/dist/observability-sdk/index.mjs +3 -3
  64. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
  65. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
  66. package/dist/observability-sdk/instrumentation/langchain/index.js +3 -3
  67. package/dist/observability-sdk/instrumentation/langchain/index.mjs +1 -1
  68. package/dist/observability-sdk/setup/node/index.d.mts +1 -1
  69. package/dist/observability-sdk/setup/node/index.d.ts +1 -1
  70. package/dist/observability-sdk/setup/node/index.js +10 -10
  71. package/dist/observability-sdk/setup/node/index.mjs +2 -2
  72. package/dist/{remove-JUVM6M7G.mjs → remove-FTF3EBYV.mjs} +8 -8
  73. package/dist/{remove-N3324KHS.js → remove-U3PILQDV.js} +16 -16
  74. package/dist/{remove-N3324KHS.js.map → remove-U3PILQDV.js.map} +1 -1
  75. package/dist/{sync-B4YK6QYX.mjs → sync-FOW7DHAH.mjs} +23 -18
  76. package/dist/sync-FOW7DHAH.mjs.map +1 -0
  77. package/dist/{sync-E32H3H52.js → sync-T3T22GVZ.js} +41 -36
  78. package/dist/sync-T3T22GVZ.js.map +1 -0
  79. package/dist/{types-D6Cs1385.d.ts → types-DyUmlaDx.d.ts} +71 -21
  80. package/dist/{types-D61S7yPU.d.mts → types-jrEEZt9d.d.mts} +71 -21
  81. package/package.json +6 -5
  82. package/dist/add-SMYALCQG.mjs.map +0 -1
  83. package/dist/add-SV662KZU.js.map +0 -1
  84. package/dist/chunk-5ZKAT4KI.mjs.map +0 -1
  85. package/dist/chunk-CAVBDSBT.mjs.map +0 -1
  86. package/dist/chunk-ILTCLEIF.js.map +0 -1
  87. package/dist/chunk-LXVDGQA4.mjs.map +0 -1
  88. package/dist/chunk-NFM6RB4R.js.map +0 -1
  89. package/dist/chunk-PUHM465C.js.map +0 -1
  90. package/dist/chunk-T7FQHOLK.js.map +0 -1
  91. package/dist/chunk-VI5NJ53L.js.map +0 -1
  92. package/dist/chunk-YQVVPMKH.mjs.map +0 -1
  93. package/dist/create-BHWZP6YD.mjs.map +0 -1
  94. package/dist/create-GUY3HZM2.js.map +0 -1
  95. package/dist/init-OO2BUJ6V.js +0 -16
  96. package/dist/list-32BRZ6RS.mjs.map +0 -1
  97. package/dist/list-GZGLSJ52.js.map +0 -1
  98. package/dist/sync-B4YK6QYX.mjs.map +0 -1
  99. package/dist/sync-E32H3H52.js.map +0 -1
  100. /package/dist/{chunk-7ZRAJ52N.mjs.map → chunk-CKVDNVFL.mjs.map} +0 -0
  101. /package/dist/{chunk-K4ICRI7W.mjs.map → chunk-DLJO7AK5.mjs.map} +0 -0
  102. /package/dist/{chunk-ENSRDEDA.mjs.map → chunk-ZIULPOMQ.mjs.map} +0 -0
  103. /package/dist/{init-RDW2F4G3.mjs.map → init-MQXXHCNT.mjs.map} +0 -0
  104. /package/dist/{login-VXLW2OXR.mjs.map → login-BYLXS23I.mjs.map} +0 -0
  105. /package/dist/{remove-JUVM6M7G.mjs.map → remove-FTF3EBYV.mjs.map} +0 -0
@@ -3,19 +3,19 @@ import {
3
3
  } from "./chunk-DHJKJVY7.mjs";
4
4
  import {
5
5
  ensureProjectInitialized
6
- } from "./chunk-K4ICRI7W.mjs";
6
+ } from "./chunk-DLJO7AK5.mjs";
7
7
  import {
8
8
  FileManager
9
- } from "./chunk-7ZRAJ52N.mjs";
10
- import "./chunk-LXVDGQA4.mjs";
11
- import "./chunk-YQVVPMKH.mjs";
9
+ } from "./chunk-CKVDNVFL.mjs";
10
+ import "./chunk-V5M3HUBV.mjs";
11
+ import "./chunk-BTBSMJTY.mjs";
12
12
  import "./chunk-CU3443HD.mjs";
13
13
 
14
14
  // src/cli/commands/create.ts
15
15
  import * as fs from "fs";
16
16
  import * as path from "path";
17
17
  import chalk from "chalk";
18
- var createCommand = async (name, options) => {
18
+ var createCommand = async (name, _options) => {
19
19
  try {
20
20
  if (!name || name.trim() === "") {
21
21
  console.error(chalk.red("Error: Prompt name cannot be empty"));
@@ -23,16 +23,22 @@ var createCommand = async (name, options) => {
23
23
  }
24
24
  checkApiKey();
25
25
  await ensureProjectInitialized();
26
- const promptPath = path.join(process.cwd(), "prompts", `${name}.prompt.yaml`);
26
+ const promptPath = path.join(
27
+ process.cwd(),
28
+ "prompts",
29
+ `${name}.prompt.yaml`
30
+ );
27
31
  if (fs.existsSync(promptPath)) {
28
- console.error(chalk.red(`Error: Prompt file already exists at ${promptPath}`));
32
+ console.error(
33
+ chalk.red(`Error: Prompt file already exists at ${promptPath}`)
34
+ );
29
35
  process.exit(1);
30
36
  }
31
37
  const promptsDir = path.dirname(promptPath);
32
38
  if (!fs.existsSync(promptsDir)) {
33
39
  fs.mkdirSync(promptsDir, { recursive: true });
34
40
  }
35
- const defaultContent = `model: openai/gpt-4o-mini
41
+ const defaultContent = `model: openai/gpt-5
36
42
  modelParameters:
37
43
  temperature: 0.7
38
44
  messages:
@@ -56,15 +62,20 @@ messages:
56
62
  };
57
63
  FileManager.savePromptsLock(lock);
58
64
  const displayPath = `./${relativePath}`;
59
- console.log(chalk.green(`\u2713 Created prompt file: ${chalk.cyan(displayPath)}`));
65
+ console.log(
66
+ chalk.green(`\u2713 Created prompt file: ${chalk.cyan(displayPath)}`)
67
+ );
60
68
  console.log(chalk.gray(` Edit this file and then run:`));
61
69
  console.log(chalk.cyan(` langwatch prompt sync`));
62
70
  } catch (error) {
63
- console.error(chalk.red("Unexpected error:"), error instanceof Error ? error.message : error);
71
+ console.error(
72
+ chalk.red("Unexpected error:"),
73
+ error instanceof Error ? error.message : error
74
+ );
64
75
  process.exit(1);
65
76
  }
66
77
  };
67
78
  export {
68
79
  createCommand
69
80
  };
70
- //# sourceMappingURL=create-BHWZP6YD.mjs.map
81
+ //# sourceMappingURL=create-OQEMO4MU.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/create.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;;;;;;AAAA,YAAY,QAAQ;AACpB,YAAY,UAAU;AACtB,OAAO,WAAW;AAOX,IAAM,gBAAgB,OAC3B,MACA,aACkB;AAClB,MAAI;AAEF,QAAI,CAAC,QAAQ,KAAK,KAAK,MAAM,IAAI;AAC/B,cAAQ,MAAM,MAAM,IAAI,oCAAoC,CAAC;AAC7D,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,gBAAY;AAGZ,UAAM,yBAAyB;AAG/B,UAAM,aAAkB;AAAA,MACtB,QAAQ,IAAI;AAAA,MACZ;AAAA,MACA,GAAG,IAAI;AAAA,IACT;AAEA,QAAO,cAAW,UAAU,GAAG;AAC7B,cAAQ;AAAA,QACN,MAAM,IAAI,wCAAwC,UAAU,EAAE;AAAA,MAChE;AACA,cAAQ,KAAK,CAAC;AAAA,IAChB;AAGA,UAAM,aAAkB,aAAQ,UAAU;AAC1C,QAAI,CAAI,cAAW,UAAU,GAAG;AAC9B,MAAG,aAAU,YAAY,EAAE,WAAW,KAAK,CAAC;AAAA,IAC9C;AAGA,UAAM,iBAAiB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWvB,IAAG,iBAAc,YAAY,gBAAgB,MAAM;AAGnD,UAAM,gBAAgB,YAAY,kBAAkB;AACpD,UAAM,eAAoB,cAAS,QAAQ,IAAI,GAAG,UAAU;AAC5D,kBAAc,QAAQ,IAAI,IAAI,QAAQ,YAAY;AAClD,gBAAY,kBAAkB,aAAa;AAG3C,UAAM,OAAO,YAAY,gBAAgB;AACzC,SAAK,QAAQ,IAAI,IAAI;AAAA,MACnB,SAAS;AAAA;AAAA,MACT,WAAW;AAAA,MACX,cAAc;AAAA;AAAA,IAChB;AACA,gBAAY,gBAAgB,IAAI;AAEhC,UAAM,cAAc,KAAK,YAAY;AACrC,YAAQ;AAAA,MACN,MAAM,MAAM,+BAA0B,MAAM,KAAK,WAAW,CAAC,EAAE;AAAA,IACjE;AACA,YAAQ,IAAI,MAAM,KAAK,gCAAgC,CAAC;AACxD,YAAQ,IAAI,MAAM,KAAK,yBAAyB,CAAC;AAAA,EACnD,SAAS,OAAO;AACd,YAAQ;AAAA,MACN,MAAM,IAAI,mBAAmB;AAAA,MAC7B,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAC3C;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}
@@ -3,7 +3,7 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
3
3
  import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
4
4
  import { a as SemConvLogRecordAttributes, S as SemConvAttributes } from './types-DRiQaKFG.js';
5
5
  import { TracerProvider } from '@opentelemetry/api';
6
- import { a as LangWatchTracer } from './types-D6Cs1385.js';
6
+ import { a as LangWatchTracer } from './types-DyUmlaDx.js';
7
7
 
8
8
  /**
9
9
  * Filterable Batch Span Exporter for OpenTelemetry
@@ -3,7 +3,7 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
3
3
  import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
4
4
  import { a as SemConvLogRecordAttributes, S as SemConvAttributes } from './types-DRiQaKFG.mjs';
5
5
  import { TracerProvider } from '@opentelemetry/api';
6
- import { a as LangWatchTracer } from './types-D61S7yPU.mjs';
6
+ import { a as LangWatchTracer } from './types-jrEEZt9d.mjs';
7
7
 
8
8
  /**
9
9
  * Filterable Batch Span Exporter for OpenTelemetry
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { L as Logger, C as ConsoleLogger, N as NoOpLogger } from './index-DTEZr0Jn.mjs';
2
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-D7LzdQop.mjs';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-fAgqv8OM.mjs';
3
3
  export { l as attributes } from './types-DRiQaKFG.mjs';
4
- import { p as paths, P as PromptResponse, g as Prompt } from './types-D61S7yPU.mjs';
4
+ import { p as paths, P as PromptResponse, g as Prompt } from './types-jrEEZt9d.mjs';
5
5
  import openApiCreateClient from 'openapi-fetch';
6
6
  import '@opentelemetry/sdk-trace-base';
7
7
  import '@opentelemetry/exporter-trace-otlp-http';
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { L as Logger, C as ConsoleLogger, N as NoOpLogger } from './index-DTEZr0Jn.js';
2
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation--7B7PUww.js';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-BIlL6-SW.js';
3
3
  export { l as attributes } from './types-DRiQaKFG.js';
4
- import { p as paths, P as PromptResponse, g as Prompt } from './types-D6Cs1385.js';
4
+ import { p as paths, P as PromptResponse, g as Prompt } from './types-DyUmlaDx.js';
5
5
  import openApiCreateClient from 'openapi-fetch';
6
6
  import '@opentelemetry/sdk-trace-base';
7
7
  import '@opentelemetry/exporter-trace-otlp-http';
package/dist/index.js CHANGED
@@ -1,24 +1,24 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkT7FQHOLKjs = require('./chunk-T7FQHOLK.js');
4
- require('./chunk-NFM6RB4R.js');
3
+ var _chunkDSIQSULKjs = require('./chunk-DSIQSULK.js');
4
+ require('./chunk-SVXNUWZI.js');
5
5
 
6
6
 
7
7
  var _chunkYH5TIVK2js = require('./chunk-YH5TIVK2.js');
8
8
 
9
9
 
10
- var _chunkILTCLEIFjs = require('./chunk-ILTCLEIF.js');
10
+ var _chunkECOC36EAjs = require('./chunk-ECOC36EA.js');
11
11
 
12
12
 
13
13
 
14
- var _chunkNVKMXXNPjs = require('./chunk-NVKMXXNP.js');
15
- require('./chunk-VI5NJ53L.js');
14
+ var _chunkP4SQTYGNjs = require('./chunk-P4SQTYGN.js');
15
+ require('./chunk-QCYYSMCU.js');
16
16
 
17
17
 
18
18
 
19
19
 
20
20
  var _chunkDISMHYXCjs = require('./chunk-DISMHYXC.js');
21
- require('./chunk-PUHM465C.js');
21
+ require('./chunk-R6FBJN7K.js');
22
22
  require('./chunk-OXBO24RB.js');
23
23
 
24
24
  // src/index.ts
@@ -34,5 +34,5 @@ var logger = {
34
34
 
35
35
 
36
36
 
37
- exports.FilterableBatchSpanProcessor = _chunkYH5TIVK2js.FilterableBatchSpanProcessor; exports.LangWatch = _chunkT7FQHOLKjs.LangWatch; exports.LangWatchExporter = _chunkNVKMXXNPjs.LangWatchTraceExporter; exports.attributes = _chunkDISMHYXCjs.attributes_exports; exports.getLangWatchLogger = _chunkNVKMXXNPjs.getLangWatchLogger; exports.getLangWatchTracer = _chunkILTCLEIFjs.getLangWatchTracer; exports.logger = logger;
37
+ exports.FilterableBatchSpanProcessor = _chunkYH5TIVK2js.FilterableBatchSpanProcessor; exports.LangWatch = _chunkDSIQSULKjs.LangWatch; exports.LangWatchExporter = _chunkP4SQTYGNjs.LangWatchTraceExporter; exports.attributes = _chunkDISMHYXCjs.attributes_exports; exports.getLangWatchLogger = _chunkP4SQTYGNjs.getLangWatchLogger; exports.getLangWatchTracer = _chunkECOC36EAjs.getLangWatchTracer; exports.logger = logger;
38
38
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  LangWatch
3
- } from "./chunk-RBZNMZTF.mjs";
4
- import "./chunk-5ZKAT4KI.mjs";
3
+ } from "./chunk-YEGQXDTE.mjs";
4
+ import "./chunk-H5PON53W.mjs";
5
5
  import {
6
6
  FilterableBatchSpanProcessor
7
7
  } from "./chunk-N2V6J3U2.mjs";
8
8
  import {
9
9
  getLangWatchTracer
10
- } from "./chunk-VILW5FYO.mjs";
10
+ } from "./chunk-QZGTM76F.mjs";
11
11
  import {
12
12
  LangWatchTraceExporter,
13
13
  getLangWatchLogger
14
- } from "./chunk-ENSRDEDA.mjs";
15
- import "./chunk-CAVBDSBT.mjs";
14
+ } from "./chunk-ZIULPOMQ.mjs";
15
+ import "./chunk-YKFTFYKK.mjs";
16
16
  import {
17
17
  ConsoleLogger,
18
18
  NoOpLogger,
19
19
  attributes_exports
20
20
  } from "./chunk-YNQ44U6D.mjs";
21
- import "./chunk-LXVDGQA4.mjs";
21
+ import "./chunk-V5M3HUBV.mjs";
22
22
  import "./chunk-CU3443HD.mjs";
23
23
 
24
24
  // src/index.ts
@@ -0,0 +1,16 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk7OZKH5K2js = require('./chunk-7OZKH5K2.js');
4
+ require('./chunk-CAZONSXV.js');
5
+ require('./chunk-R6FBJN7K.js');
6
+ require('./chunk-AZHZ4NB4.js');
7
+ require('./chunk-OXBO24RB.js');
8
+
9
+ // src/cli/commands/init.ts
10
+ var initCommand = async () => {
11
+ await _chunk7OZKH5K2js.initializeProject.call(void 0, );
12
+ };
13
+
14
+
15
+ exports.initCommand = initCommand;
16
+ //# sourceMappingURL=init-EKNL2SQE.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-OO2BUJ6V.js","../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACNO,IAAM,YAAA,EAAc,MAAA,CAAA,EAAA,GAA2B;AACpD,EAAA,MAAM,gDAAA,CAAkB;AAC1B,CAAA;ADQA;AACE;AACF,kCAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-OO2BUJ6V.js","sourcesContent":[null,"import { initializeProject } from \"../utils/init\";\n\nexport const initCommand = async (): Promise<void> => {\n await initializeProject();\n};"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-EKNL2SQE.js","../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACNO,IAAM,YAAA,EAAc,MAAA,CAAA,EAAA,GAA2B;AACpD,EAAA,MAAM,gDAAA,CAAkB;AAC1B,CAAA;ADQA;AACE;AACF,kCAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-EKNL2SQE.js","sourcesContent":[null,"import { initializeProject } from \"../utils/init\";\n\nexport const initCommand = async (): Promise<void> => {\n await initializeProject();\n};"]}
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  initializeProject
3
- } from "./chunk-K4ICRI7W.mjs";
4
- import "./chunk-7ZRAJ52N.mjs";
5
- import "./chunk-LXVDGQA4.mjs";
6
- import "./chunk-YQVVPMKH.mjs";
3
+ } from "./chunk-DLJO7AK5.mjs";
4
+ import "./chunk-CKVDNVFL.mjs";
5
+ import "./chunk-V5M3HUBV.mjs";
6
+ import "./chunk-BTBSMJTY.mjs";
7
7
  import "./chunk-CU3443HD.mjs";
8
8
 
9
9
  // src/cli/commands/init.ts
@@ -13,4 +13,4 @@ var initCommand = async () => {
13
13
  export {
14
14
  initCommand
15
15
  };
16
- //# sourceMappingURL=init-RDW2F4G3.mjs.map
16
+ //# sourceMappingURL=init-MQXXHCNT.mjs.map
@@ -3,16 +3,16 @@
3
3
  var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
4
4
 
5
5
 
6
- var _chunkT7FQHOLKjs = require('./chunk-T7FQHOLK.js');
6
+ var _chunkDSIQSULKjs = require('./chunk-DSIQSULK.js');
7
7
 
8
8
 
9
- var _chunkNFM6RB4Rjs = require('./chunk-NFM6RB4R.js');
9
+ var _chunkSVXNUWZIjs = require('./chunk-SVXNUWZI.js');
10
10
  require('./chunk-YH5TIVK2.js');
11
- require('./chunk-ILTCLEIF.js');
12
- require('./chunk-NVKMXXNP.js');
13
- require('./chunk-VI5NJ53L.js');
11
+ require('./chunk-ECOC36EA.js');
12
+ require('./chunk-P4SQTYGN.js');
13
+ require('./chunk-QCYYSMCU.js');
14
14
  require('./chunk-DISMHYXC.js');
15
- require('./chunk-PUHM465C.js');
15
+ require('./chunk-R6FBJN7K.js');
16
16
  require('./chunk-OXBO24RB.js');
17
17
 
18
18
  // src/cli/commands/list.ts
@@ -80,7 +80,7 @@ var formatRelativeTime = (dateString) => {
80
80
  var listCommand = async () => {
81
81
  try {
82
82
  _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
83
- const langwatch = new (0, _chunkT7FQHOLKjs.LangWatch)();
83
+ const langwatch = new (0, _chunkDSIQSULKjs.LangWatch)();
84
84
  const spinner = _ora2.default.call(void 0, "Fetching prompts from server...").start();
85
85
  try {
86
86
  const allPrompts = await langwatch.prompts.getAll();
@@ -119,7 +119,7 @@ var listCommand = async () => {
119
119
  );
120
120
  } catch (error) {
121
121
  spinner.fail();
122
- if (error instanceof _chunkNFM6RB4Rjs.PromptsError) {
122
+ if (error instanceof _chunkSVXNUWZIjs.PromptsError) {
123
123
  console.error(_chalk2.default.red(`Error: ${error.message}`));
124
124
  } else {
125
125
  console.error(
@@ -131,7 +131,7 @@ var listCommand = async () => {
131
131
  process.exit(1);
132
132
  }
133
133
  } catch (error) {
134
- if (error instanceof _chunkNFM6RB4Rjs.PromptsError) {
134
+ if (error instanceof _chunkSVXNUWZIjs.PromptsError) {
135
135
  console.error(_chalk2.default.red(`Error: ${error.message}`));
136
136
  } else {
137
137
  console.error(
@@ -146,4 +146,4 @@ var listCommand = async () => {
146
146
 
147
147
 
148
148
  exports.listCommand = listCommand;
149
- //# sourceMappingURL=list-GZGLSJ52.js.map
149
+ //# sourceMappingURL=list-GIAXAAH5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/list-GIAXAAH5.js","../src/cli/commands/list.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACjBA,4EAAkB;AAClB,oEAAgB;AAMhB,IAAM,UAAA,EAAY,CAAC,GAAA,EAAA,GAAwB;AAEzC,EAAA,OAAO,GAAA,CAAI,OAAA,CAAQ,mBAAA,EAAqB,EAAE,CAAA;AAC5C,CAAA;AAGA,IAAM,YAAA,EAAc,CAClB,IAAA,EACA,OAAA,EAAA,GACS;AACT,EAAA,GAAA,CAAI,IAAA,CAAK,OAAA,IAAW,CAAA,EAAG;AACrB,IAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,kBAAkB,CAAC,CAAA;AAC1C,IAAA,MAAA;AAAA,EACF;AAGA,EAAA,MAAM,UAAA,EAAoC,CAAC,CAAA;AAC3C,EAAA,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,EAAA,GAAW;AAC1B,IAAA,SAAA,CAAU,MAAM,EAAA,EAAI,IAAA,CAAK,GAAA;AAAA,MACvB,MAAA,CAAO,MAAA;AAAA,MACP,GAAG,IAAA,CAAK,GAAA,CAAI,CAAC,GAAA,EAAA,GAAK;AA3BxB,QAAA,IAAA,EAAA;AA2B2B,QAAA,OAAA,SAAA,CAAA,CAAU,GAAA,EAAA,GAAA,CAAI,MAAM,CAAA,EAAA,GAAV,KAAA,EAAA,GAAA,EAAe,EAAE,CAAA,CAAE,MAAA;AAAA,MAAA,CAAM;AAAA,IAC1D,CAAA;AAAA,EACF,CAAC,CAAA;AAGD,EAAA,MAAM,UAAA,EAAY,OAAA,CACf,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,eAAA,CAAM,IAAA,CAAK,MAAA,CAAO,MAAA,CAAO,SAAA,CAAU,MAAM,CAAE,CAAC,CAAC,CAAA,CAC7D,IAAA,CAAK,IAAI,CAAA;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,SAAS,CAAA;AAGrB,EAAA,MAAM,UAAA,EAAY,OAAA,CACf,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW,QAAA,CAAI,MAAA,CAAO,SAAA,CAAU,MAAM,CAAE,CAAC,CAAA,CAC9C,IAAA,CAAK,IAAI,CAAA;AACZ,EAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,SAAS,CAAC,CAAA;AAGjC,EAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,GAAA,EAAA,GAAQ;AACpB,IAAA,MAAM,QAAA,EAAU,OAAA,CACb,GAAA,CAAI,CAAC,MAAA,EAAA,GAAW;AA9CvB,MAAA,IAAA,EAAA;AA+CQ,MAAA,MAAM,MAAA,EAAA,CAAQ,GAAA,EAAA,GAAA,CAAI,MAAM,CAAA,EAAA,GAAV,KAAA,EAAA,GAAA,EAAe,EAAA;AAC7B,MAAA,MAAM,eAAA,EAAiB,SAAA,CAAU,KAAK,CAAA,CAAE,MAAA;AACxC,MAAA,MAAM,cAAA,EAAgB,SAAA,CAAU,MAAM,EAAA,EAAK,cAAA;AAC3C,MAAA,MAAM,YAAA,EAAc,MAAA,EAAQ,GAAA,CAAI,MAAA,CAAO,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,aAAa,CAAC,CAAA;AAGjE,MAAA,GAAA,CAAI,OAAA,IAAW,MAAA,EAAQ;AACrB,QAAA,OAAO,eAAA,CAAM,IAAA,CAAK,WAAW,CAAA;AAAA,MAC/B,EAAA,KAAA,GAAA,CAAW,OAAA,IAAW,SAAA,EAAW;AAC/B,QAAA,OAAO,eAAA,CAAM,KAAA,CAAM,WAAW,CAAA;AAAA,MAChC,EAAA,KAAA,GAAA,CAAW,OAAA,IAAW,OAAA,EAAS;AAC7B,QAAA,OAAO,eAAA,CAAM,MAAA,CAAO,WAAW,CAAA;AAAA,MACjC,EAAA,KAAO;AACL,QAAA,OAAO,eAAA,CAAM,IAAA,CAAK,WAAW,CAAA;AAAA,MAC/B;AAAA,IACF,CAAC,CAAA,CACA,IAAA,CAAK,IAAI,CAAA;AACZ,IAAA,OAAA,CAAQ,GAAA,CAAI,OAAO,CAAA;AAAA,EACrB,CAAC,CAAA;AACH,CAAA;AAEA,IAAM,mBAAA,EAAqB,CAAC,UAAA,EAAA,GAA+B;AACzD,EAAA,MAAM,KAAA,EAAO,IAAI,IAAA,CAAK,UAAU,CAAA;AAChC,EAAA,MAAM,IAAA,kBAAM,IAAI,IAAA,CAAK,CAAA;AACrB,EAAA,MAAM,OAAA,EAAS,GAAA,CAAI,OAAA,CAAQ,EAAA,EAAI,IAAA,CAAK,OAAA,CAAQ,CAAA;AAE5C,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,GAAI,CAAA;AACxC,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU,EAAE,CAAA;AACvC,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU,EAAE,CAAA;AACrC,EAAA,MAAM,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,MAAA,EAAQ,EAAE,CAAA;AAClC,EAAA,MAAM,OAAA,EAAS,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,EAAE,CAAA;AACnC,EAAA,MAAM,MAAA,EAAQ,IAAA,CAAK,KAAA,CAAM,KAAA,EAAO,GAAG,CAAA;AAEnC,EAAA,GAAA,CAAI,MAAA,EAAQ,CAAA,EAAG,OAAO,CAAA,EAAA;AACC,EAAA;AACF,EAAA;AACC,EAAA;AACL,EAAA;AACA,EAAA;AACnB;AAE2B;AACrB,EAAA;AAEU,IAAA;AAGM,IAAA;AAEE,IAAA;AAEhB,IAAA;AAEiB,MAAA;AACH,MAAA;AACV,MAAA;AAEE,MAAA;AACW,QAAA;AAIR,UAAA;AAGP,QAAA;AACJ,MAAA;AAEY,MAAA;AACE,QAAA;AACA,QAAA;AACA,QAAA;AACA,QAAA;AACZ,QAAA;AACF,MAAA;AAEY,MAAA;AAGM,MAAA;AA9HxB,QAAA;AA8HiD,QAAA;AACnC,UAAA;AACG,UAAA;AACF,UAAA;AACE,UAAA;AACX,QAAA;AAAE,MAAA;AAGU,MAAA;AAEA,MAAA;AACJ,MAAA;AACA,QAAA;AACS,UAAA;AACX,YAAA;AACD,UAAA;AACH,QAAA;AACF,MAAA;AACc,IAAA;AACD,MAAA;AACT,MAAA;AACY,QAAA;AACT,MAAA;AACG,QAAA;AACA,UAAA;AACJ,YAAA;AAGF,UAAA;AACF,QAAA;AACF,MAAA;AACc,MAAA;AAChB,IAAA;AACc,EAAA;AACO,IAAA;AACL,MAAA;AACT,IAAA;AACG,MAAA;AACA,QAAA;AACJ,UAAA;AAGF,QAAA;AACF,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;AD5ByB;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/list-GIAXAAH5.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { PromptsError } from \"@/client-sdk/services/prompts\";\nimport { LangWatch } from \"@/client-sdk\";\nimport { checkApiKey } from \"../utils/apiKey\";\n\n// Helper to strip ANSI codes for length calculation\nconst stripAnsi = (str: string): string => {\n // eslint-disable-next-line no-control-regex\n return str.replace(/\\u001b\\[[0-9;]*m/g, \"\");\n};\n\n// Simple table formatting helper\nconst formatTable = (\n data: Array<Record<string, string>>,\n headers: string[],\n): void => {\n if (data.length === 0) {\n console.log(chalk.gray(\"No prompts found\"));\n return;\n }\n\n // Calculate column widths (strip ANSI codes for accurate length calculation)\n const colWidths: Record<string, number> = {};\n headers.forEach((header) => {\n colWidths[header] = Math.max(\n header.length,\n ...data.map((row) => stripAnsi(row[header] ?? \"\").length),\n );\n });\n\n // Print header\n const headerRow = headers\n .map((header) => chalk.bold(header.padEnd(colWidths[header]!)))\n .join(\" \");\n console.log(headerRow);\n\n // Print separator\n const separator = headers\n .map((header) => \"─\".repeat(colWidths[header]!))\n .join(\" \");\n console.log(chalk.gray(separator));\n\n // Print data rows\n data.forEach((row) => {\n const dataRow = headers\n .map((header) => {\n const value = row[header] ?? \"\";\n const strippedLength = stripAnsi(value).length;\n const paddingNeeded = colWidths[header]! - strippedLength;\n const paddedValue = value + \" \".repeat(Math.max(0, paddingNeeded));\n\n // Color coding\n if (header === \"Name\") {\n return chalk.cyan(paddedValue);\n } else if (header === \"Version\") {\n return chalk.green(paddedValue);\n } else if (header === \"Model\") {\n return chalk.yellow(paddedValue);\n } else {\n return chalk.gray(paddedValue);\n }\n })\n .join(\" \");\n console.log(dataRow);\n });\n};\n\nconst formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n\n const seconds = Math.floor(diffMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) return `${years}y ago`;\n if (months > 0) return `${months}mo ago`;\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return `${seconds}s ago`;\n};\n\nexport const listCommand = async (): Promise<void> => {\n try {\n // Check API key before doing anything else\n checkApiKey();\n\n // Get LangWatch client\n const langwatch = new LangWatch();\n\n const spinner = ora(\"Fetching prompts from server...\").start();\n\n try {\n // Fetch all prompts\n const allPrompts = await langwatch.prompts.getAll();\n const prompts = allPrompts.filter((prompt) => prompt.version);\n const draftPrompts = allPrompts.filter((prompt) => !prompt.version);\n\n spinner.succeed(\n `Found ${prompts.length} published prompt${\n prompts.length !== 1 ? \"s\" : \"\"\n } ` +\n chalk.gray(\n `(+${draftPrompts.length} draft${\n draftPrompts.length !== 1 ? \"s\" : \"\"\n })`,\n ),\n );\n\n if (prompts.length === 0) {\n console.log();\n console.log(chalk.gray(\"No prompts found on the server.\"));\n console.log(chalk.gray(\"Create your first prompt with:\"));\n console.log(chalk.cyan(\" langwatch prompt init\"));\n return;\n }\n\n console.log();\n\n // Format prompts for table display\n const tableData = prompts.map((prompt) => ({\n Name: prompt.handle ?? `${prompt.name} ` + chalk.gray(`(${prompt.id})`),\n Version: prompt.version ? `${prompt.version}` : \"N/A\",\n Model: prompt.model ?? \"N/A\",\n Updated: formatRelativeTime(prompt.updatedAt),\n }));\n\n // Display table\n formatTable(tableData, [\"Name\", \"Version\", \"Model\", \"Updated\"]);\n\n console.log();\n console.log(\n chalk.gray(\n `Use ${chalk.cyan(\n \"langwatch prompt add <name>\",\n )} to add a prompt to your project`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error fetching prompts: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"]}
@@ -3,16 +3,16 @@ import {
3
3
  } from "./chunk-DHJKJVY7.mjs";
4
4
  import {
5
5
  LangWatch
6
- } from "./chunk-RBZNMZTF.mjs";
6
+ } from "./chunk-YEGQXDTE.mjs";
7
7
  import {
8
8
  PromptsError
9
- } from "./chunk-5ZKAT4KI.mjs";
9
+ } from "./chunk-H5PON53W.mjs";
10
10
  import "./chunk-N2V6J3U2.mjs";
11
- import "./chunk-VILW5FYO.mjs";
12
- import "./chunk-ENSRDEDA.mjs";
13
- import "./chunk-CAVBDSBT.mjs";
11
+ import "./chunk-QZGTM76F.mjs";
12
+ import "./chunk-ZIULPOMQ.mjs";
13
+ import "./chunk-YKFTFYKK.mjs";
14
14
  import "./chunk-YNQ44U6D.mjs";
15
- import "./chunk-LXVDGQA4.mjs";
15
+ import "./chunk-V5M3HUBV.mjs";
16
16
  import "./chunk-CU3443HD.mjs";
17
17
 
18
18
  // src/cli/commands/list.ts
@@ -146,4 +146,4 @@ var listCommand = async () => {
146
146
  export {
147
147
  listCommand
148
148
  };
149
- //# sourceMappingURL=list-32BRZ6RS.mjs.map
149
+ //# sourceMappingURL=list-PFWV7IU6.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/list.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { PromptsError } from \"@/client-sdk/services/prompts\";\nimport { LangWatch } from \"@/client-sdk\";\nimport { checkApiKey } from \"../utils/apiKey\";\n\n// Helper to strip ANSI codes for length calculation\nconst stripAnsi = (str: string): string => {\n // eslint-disable-next-line no-control-regex\n return str.replace(/\\u001b\\[[0-9;]*m/g, \"\");\n};\n\n// Simple table formatting helper\nconst formatTable = (\n data: Array<Record<string, string>>,\n headers: string[],\n): void => {\n if (data.length === 0) {\n console.log(chalk.gray(\"No prompts found\"));\n return;\n }\n\n // Calculate column widths (strip ANSI codes for accurate length calculation)\n const colWidths: Record<string, number> = {};\n headers.forEach((header) => {\n colWidths[header] = Math.max(\n header.length,\n ...data.map((row) => stripAnsi(row[header] ?? \"\").length),\n );\n });\n\n // Print header\n const headerRow = headers\n .map((header) => chalk.bold(header.padEnd(colWidths[header]!)))\n .join(\" \");\n console.log(headerRow);\n\n // Print separator\n const separator = headers\n .map((header) => \"─\".repeat(colWidths[header]!))\n .join(\" \");\n console.log(chalk.gray(separator));\n\n // Print data rows\n data.forEach((row) => {\n const dataRow = headers\n .map((header) => {\n const value = row[header] ?? \"\";\n const strippedLength = stripAnsi(value).length;\n const paddingNeeded = colWidths[header]! - strippedLength;\n const paddedValue = value + \" \".repeat(Math.max(0, paddingNeeded));\n\n // Color coding\n if (header === \"Name\") {\n return chalk.cyan(paddedValue);\n } else if (header === \"Version\") {\n return chalk.green(paddedValue);\n } else if (header === \"Model\") {\n return chalk.yellow(paddedValue);\n } else {\n return chalk.gray(paddedValue);\n }\n })\n .join(\" \");\n console.log(dataRow);\n });\n};\n\nconst formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n\n const seconds = Math.floor(diffMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) return `${years}y ago`;\n if (months > 0) return `${months}mo ago`;\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return `${seconds}s ago`;\n};\n\nexport const listCommand = async (): Promise<void> => {\n try {\n // Check API key before doing anything else\n checkApiKey();\n\n // Get LangWatch client\n const langwatch = new LangWatch();\n\n const spinner = ora(\"Fetching prompts from server...\").start();\n\n try {\n // Fetch all prompts\n const allPrompts = await langwatch.prompts.getAll();\n const prompts = allPrompts.filter((prompt) => prompt.version);\n const draftPrompts = allPrompts.filter((prompt) => !prompt.version);\n\n spinner.succeed(\n `Found ${prompts.length} published prompt${\n prompts.length !== 1 ? \"s\" : \"\"\n } ` +\n chalk.gray(\n `(+${draftPrompts.length} draft${\n draftPrompts.length !== 1 ? \"s\" : \"\"\n })`,\n ),\n );\n\n if (prompts.length === 0) {\n console.log();\n console.log(chalk.gray(\"No prompts found on the server.\"));\n console.log(chalk.gray(\"Create your first prompt with:\"));\n console.log(chalk.cyan(\" langwatch prompt init\"));\n return;\n }\n\n console.log();\n\n // Format prompts for table display\n const tableData = prompts.map((prompt) => ({\n Name: prompt.handle ?? `${prompt.name} ` + chalk.gray(`(${prompt.id})`),\n Version: prompt.version ? `${prompt.version}` : \"N/A\",\n Model: prompt.model ?? \"N/A\",\n Updated: formatRelativeTime(prompt.updatedAt),\n }));\n\n // Display table\n formatTable(tableData, [\"Name\", \"Version\", \"Model\", \"Updated\"]);\n\n console.log();\n console.log(\n chalk.gray(\n `Use ${chalk.cyan(\n \"langwatch prompt add <name>\",\n )} to add a prompt to your project`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error fetching prompts: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkVI5NJ53Ljs = require('./chunk-VI5NJ53L.js');
3
+ var _chunkQCYYSMCUjs = require('./chunk-QCYYSMCU.js');
4
4
  require('./chunk-OXBO24RB.js');
5
5
 
6
6
  // src/cli/commands/login.ts
@@ -11,7 +11,7 @@ var _ora = require('ora'); var _ora2 = _interopRequireDefault(_ora);
11
11
  var _prompts = require('prompts'); var _prompts2 = _interopRequireDefault(_prompts);
12
12
  var getEndpoint = () => {
13
13
  var _a;
14
- return (_a = process.env.LANGWATCH_ENDPOINT) != null ? _a : _chunkVI5NJ53Ljs.DEFAULT_ENDPOINT;
14
+ return (_a = process.env.LANGWATCH_ENDPOINT) != null ? _a : _chunkQCYYSMCUjs.DEFAULT_ENDPOINT;
15
15
  };
16
16
  var updateEnvFile = (apiKey) => {
17
17
  const envPath = path.join(process.cwd(), ".env");
@@ -111,4 +111,4 @@ var loginCommand = async () => {
111
111
 
112
112
 
113
113
  exports.loginCommand = loginCommand;
114
- //# sourceMappingURL=login-IAP4RFUM.js.map
114
+ //# sourceMappingURL=login-3STX2FAO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-IAP4RFUM.js","../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACLA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAChB,oFAAoB;AAGpB,IAAM,YAAA,EAAc,CAAA,EAAA,GAAc;AAPlC,EAAA,IAAA,EAAA;AAQE,EAAA,OAAA,CAAO,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAkC,iCAAA;AAC3C,CAAA;AAEA,IAAM,cAAA,EAAgB,CACpB,MAAA,EAAA,GACyD;AACzD,EAAA,MAAM,QAAA,EAAe,IAAA,CAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA;AAG/C,EAAA,GAAA,CAAI,CAAI,EAAA,CAAA,UAAA,CAAW,OAAO,CAAA,EAAG;AAE3B,IAAG,EAAA,CAAA,aAAA,CAAc,OAAA,EAAS,CAAA,kBAAA,EAAqB,MAAM,CAAA;AAAA,CAAI,CAAA;AACzD,IAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,QAAQ,CAAA;AAAA,EACxD;AAGA,EAAA,MAAM,QAAA,EAAa,EAAA,CAAA,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA;AAChD,EAAA,MAAM,MAAA,EAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAGhC,EAAA,IAAI,MAAA,EAAQ,KAAA;AACZ,EAAA,MAAM,aAAA,EAAe,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS;AACvC,IAAA,GAAA,CAAI,IAAA,CAAK,UAAA,CAAW,oBAAoB,CAAA,EAAG;AACzC,MAAA,MAAA,EAAQ,IAAA;AACR,MAAA,OAAO,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAA;AACpC,IAAA;AACO,IAAA;AACR,EAAA;AAEW,EAAA;AAEoB,IAAA;AACV,MAAA;AACb,IAAA;AACiB,MAAA;AACxB,IAAA;AACF,EAAA;AAEuC,EAAA;AACL,EAAA;AACpC;AAEuD;AACjD,EAAA;AACqB,IAAA;AACf,IAAA;AACA,MAAA;AACJ,QAAA;AACF,MAAA;AACF,IAAA;AACY,IAAA;AAGiB,IAAA;AACF,IAAA;AAEQ,IAAA;AAGf,IAAA;AAEhB,IAAA;AAC+B,MAAA;AACf,MAAA;AACc,MAAA;AAClB,IAAA;AACD,MAAA;AACY,MAAA;AAC3B,IAAA;AAEY,IAAA;AACW,IAAA;AACA,IAAA;AACA,IAAA;AACX,IAAA;AAGmB,IAAA;AACvB,MAAA;AACA,MAAA;AACG,MAAA;AACoB,MAAA;AACI,QAAA;AACtB,UAAA;AACT,QAAA;AACuB,QAAA;AACd,UAAA;AACT,QAAA;AACO,QAAA;AACT,MAAA;AACD,IAAA;AAEqB,IAAA;AACK,MAAA;AACX,MAAA;AAChB,IAAA;AAEoC,IAAA;AAGJ,IAAA;AAEpB,IAAA;AACY,IAAA;AAED,IAAA;AACE,MAAA;AACK,IAAA;AACL,MAAA;AAClB,IAAA;AACkB,MAAA;AACzB,IAAA;AAEY,IAAA;AACY,IAAA;AACD,IAAA;AACA,IAAA;AACT,EAAA;AACN,IAAA;AACA,MAAA;AAEF,QAAA;AAEJ,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADzByC;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-IAP4RFUM.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\nconst getEndpoint = (): string => {\n return process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT;\n};\n\nconst updateEnvFile = (\n apiKey: string,\n): { created: boolean; updated: boolean; path: string } => {\n const envPath = path.join(process.cwd(), \".env\");\n\n // Check if .env exists\n if (!fs.existsSync(envPath)) {\n // Create new .env file\n fs.writeFileSync(envPath, `LANGWATCH_API_KEY=${apiKey}\\n`);\n return { created: true, updated: false, path: envPath };\n }\n\n // Read existing .env file\n const content = fs.readFileSync(envPath, \"utf-8\");\n const lines = content.split(\"\\n\");\n\n // Check if LANGWATCH_API_KEY already exists and update it\n let found = false;\n const updatedLines = lines.map((line) => {\n if (line.startsWith(\"LANGWATCH_API_KEY=\")) {\n found = true;\n return `LANGWATCH_API_KEY=${apiKey}`;\n }\n return line;\n });\n\n if (!found) {\n // Add to end of file\n if (content.endsWith(\"\\n\") || content === \"\") {\n updatedLines.push(`LANGWATCH_API_KEY=${apiKey}`);\n } else {\n updatedLines.push(\"\", `LANGWATCH_API_KEY=${apiKey}`);\n }\n }\n\n fs.writeFileSync(envPath, updatedLines.join(\"\\n\"));\n return { created: false, updated: found, path: envPath };\n};\n\nexport const loginCommand = async (): Promise<void> => {\n try {\n console.log(chalk.blue(\"🔐 LangWatch Login\"));\n console.log(\n chalk.gray(\n \"This will open your browser to get an API key from LangWatch.\",\n ),\n );\n console.log();\n\n // Get the authorization URL\n const endpoint = getEndpoint();\n const authUrl = `${endpoint}/authorize`;\n\n console.log(chalk.cyan(`Opening: ${authUrl}`));\n\n // Open browser\n const spinner = ora(\"Opening browser...\").start();\n\n try {\n const open = (await import(\"open\")).default;\n await open(authUrl);\n spinner.succeed(\"Browser opened\");\n } catch (error) {\n spinner.fail(\"Failed to open browser\");\n console.log(chalk.yellow(`Please manually open: ${chalk.cyan(authUrl)}`));\n }\n\n console.log();\n console.log(chalk.gray(\"1. Log in to LangWatch in your browser\"));\n console.log(chalk.gray(\"2. Copy your API key\"));\n console.log(chalk.gray(\"3. Come back here and paste it\"));\n console.log();\n\n // Wait for user input using prompts library\n const response = await prompts({\n type: \"password\",\n name: \"apiKey\",\n message: \"Paste your API key here:\",\n validate: (value: string) => {\n if (!value || value.trim() === \"\") {\n return \"API key is required\";\n }\n if (value.length < 10) {\n return \"API key seems too short. Please check and try again.\";\n }\n return true;\n },\n });\n\n if (!response.apiKey) {\n console.log(chalk.yellow(\"Login cancelled\"));\n process.exit(0);\n }\n\n const apiKey = response.apiKey.trim();\n\n // Save to .env file\n const envResult = updateEnvFile(apiKey);\n\n console.log();\n console.log(chalk.green(\"✓ API key saved successfully!\"));\n\n if (envResult.created) {\n console.log(chalk.gray(`• Created .env file with your API key`));\n } else if (envResult.updated) {\n console.log(chalk.gray(`• Updated existing API key in .env file`));\n } else {\n console.log(chalk.gray(`• Added API key to existing .env file`));\n }\n\n console.log();\n console.log(chalk.green(\"🎉 You're all set! You can now use:\"));\n console.log(chalk.cyan(\" langwatch prompt add <name>\"));\n console.log(chalk.cyan(\" langwatch prompt sync\"));\n } catch (error) {\n console.error(\n chalk.red(\n `Error during login: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-3STX2FAO.js","../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACLA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAChB,oFAAoB;AAGpB,IAAM,YAAA,EAAc,CAAA,EAAA,GAAc;AAPlC,EAAA,IAAA,EAAA;AAQE,EAAA,OAAA,CAAO,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAkC,iCAAA;AAC3C,CAAA;AAEA,IAAM,cAAA,EAAgB,CACpB,MAAA,EAAA,GACyD;AACzD,EAAA,MAAM,QAAA,EAAe,IAAA,CAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA;AAG/C,EAAA,GAAA,CAAI,CAAI,EAAA,CAAA,UAAA,CAAW,OAAO,CAAA,EAAG;AAE3B,IAAG,EAAA,CAAA,aAAA,CAAc,OAAA,EAAS,CAAA,kBAAA,EAAqB,MAAM,CAAA;AAAA,CAAI,CAAA;AACzD,IAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,QAAQ,CAAA;AAAA,EACxD;AAGA,EAAA,MAAM,QAAA,EAAa,EAAA,CAAA,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA;AAChD,EAAA,MAAM,MAAA,EAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAGhC,EAAA,IAAI,MAAA,EAAQ,KAAA;AACZ,EAAA,MAAM,aAAA,EAAe,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS;AACvC,IAAA,GAAA,CAAI,IAAA,CAAK,UAAA,CAAW,oBAAoB,CAAA,EAAG;AACzC,MAAA,MAAA,EAAQ,IAAA;AACR,MAAA,OAAO,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAA;AACpC,IAAA;AACO,IAAA;AACR,EAAA;AAEW,EAAA;AAEoB,IAAA;AACV,MAAA;AACb,IAAA;AACiB,MAAA;AACxB,IAAA;AACF,EAAA;AAEuC,EAAA;AACL,EAAA;AACpC;AAEuD;AACjD,EAAA;AACqB,IAAA;AACf,IAAA;AACA,MAAA;AACJ,QAAA;AACF,MAAA;AACF,IAAA;AACY,IAAA;AAGiB,IAAA;AACF,IAAA;AAEQ,IAAA;AAGf,IAAA;AAEhB,IAAA;AAC+B,MAAA;AACf,MAAA;AACc,MAAA;AAClB,IAAA;AACD,MAAA;AACY,MAAA;AAC3B,IAAA;AAEY,IAAA;AACW,IAAA;AACA,IAAA;AACA,IAAA;AACX,IAAA;AAGmB,IAAA;AACvB,MAAA;AACA,MAAA;AACG,MAAA;AACoB,MAAA;AACI,QAAA;AACtB,UAAA;AACT,QAAA;AACuB,QAAA;AACd,UAAA;AACT,QAAA;AACO,QAAA;AACT,MAAA;AACD,IAAA;AAEqB,IAAA;AACK,MAAA;AACX,MAAA;AAChB,IAAA;AAEoC,IAAA;AAGJ,IAAA;AAEpB,IAAA;AACY,IAAA;AAED,IAAA;AACE,MAAA;AACK,IAAA;AACL,MAAA;AAClB,IAAA;AACkB,MAAA;AACzB,IAAA;AAEY,IAAA;AACY,IAAA;AACD,IAAA;AACA,IAAA;AACT,EAAA;AACN,IAAA;AACA,MAAA;AAEF,QAAA;AAEJ,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADzByC;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-3STX2FAO.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\nconst getEndpoint = (): string => {\n return process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT;\n};\n\nconst updateEnvFile = (\n apiKey: string,\n): { created: boolean; updated: boolean; path: string } => {\n const envPath = path.join(process.cwd(), \".env\");\n\n // Check if .env exists\n if (!fs.existsSync(envPath)) {\n // Create new .env file\n fs.writeFileSync(envPath, `LANGWATCH_API_KEY=${apiKey}\\n`);\n return { created: true, updated: false, path: envPath };\n }\n\n // Read existing .env file\n const content = fs.readFileSync(envPath, \"utf-8\");\n const lines = content.split(\"\\n\");\n\n // Check if LANGWATCH_API_KEY already exists and update it\n let found = false;\n const updatedLines = lines.map((line) => {\n if (line.startsWith(\"LANGWATCH_API_KEY=\")) {\n found = true;\n return `LANGWATCH_API_KEY=${apiKey}`;\n }\n return line;\n });\n\n if (!found) {\n // Add to end of file\n if (content.endsWith(\"\\n\") || content === \"\") {\n updatedLines.push(`LANGWATCH_API_KEY=${apiKey}`);\n } else {\n updatedLines.push(\"\", `LANGWATCH_API_KEY=${apiKey}`);\n }\n }\n\n fs.writeFileSync(envPath, updatedLines.join(\"\\n\"));\n return { created: false, updated: found, path: envPath };\n};\n\nexport const loginCommand = async (): Promise<void> => {\n try {\n console.log(chalk.blue(\"🔐 LangWatch Login\"));\n console.log(\n chalk.gray(\n \"This will open your browser to get an API key from LangWatch.\",\n ),\n );\n console.log();\n\n // Get the authorization URL\n const endpoint = getEndpoint();\n const authUrl = `${endpoint}/authorize`;\n\n console.log(chalk.cyan(`Opening: ${authUrl}`));\n\n // Open browser\n const spinner = ora(\"Opening browser...\").start();\n\n try {\n const open = (await import(\"open\")).default;\n await open(authUrl);\n spinner.succeed(\"Browser opened\");\n } catch (error) {\n spinner.fail(\"Failed to open browser\");\n console.log(chalk.yellow(`Please manually open: ${chalk.cyan(authUrl)}`));\n }\n\n console.log();\n console.log(chalk.gray(\"1. Log in to LangWatch in your browser\"));\n console.log(chalk.gray(\"2. Copy your API key\"));\n console.log(chalk.gray(\"3. Come back here and paste it\"));\n console.log();\n\n // Wait for user input using prompts library\n const response = await prompts({\n type: \"password\",\n name: \"apiKey\",\n message: \"Paste your API key here:\",\n validate: (value: string) => {\n if (!value || value.trim() === \"\") {\n return \"API key is required\";\n }\n if (value.length < 10) {\n return \"API key seems too short. Please check and try again.\";\n }\n return true;\n },\n });\n\n if (!response.apiKey) {\n console.log(chalk.yellow(\"Login cancelled\"));\n process.exit(0);\n }\n\n const apiKey = response.apiKey.trim();\n\n // Save to .env file\n const envResult = updateEnvFile(apiKey);\n\n console.log();\n console.log(chalk.green(\"✓ API key saved successfully!\"));\n\n if (envResult.created) {\n console.log(chalk.gray(`• Created .env file with your API key`));\n } else if (envResult.updated) {\n console.log(chalk.gray(`• Updated existing API key in .env file`));\n } else {\n console.log(chalk.gray(`• Added API key to existing .env file`));\n }\n\n console.log();\n console.log(chalk.green(\"🎉 You're all set! You can now use:\"));\n console.log(chalk.cyan(\" langwatch prompt add <name>\"));\n console.log(chalk.cyan(\" langwatch prompt sync\"));\n } catch (error) {\n console.error(\n chalk.red(\n `Error during login: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n process.exit(1);\n }\n};\n"]}
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  DEFAULT_ENDPOINT
3
- } from "./chunk-CAVBDSBT.mjs";
3
+ } from "./chunk-YKFTFYKK.mjs";
4
4
  import "./chunk-CU3443HD.mjs";
5
5
 
6
6
  // src/cli/commands/login.ts
@@ -111,4 +111,4 @@ var loginCommand = async () => {
111
111
  export {
112
112
  loginCommand
113
113
  };
114
- //# sourceMappingURL=login-VXLW2OXR.mjs.map
114
+ //# sourceMappingURL=login-BYLXS23I.mjs.map
@@ -1,9 +1,9 @@
1
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation-D7LzdQop.mjs';
1
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation-fAgqv8OM.mjs';
2
2
  import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
3
3
  import { a as DataCaptureMode } from '../types-Dmazk5Bk.mjs';
4
4
  export { b as DataCaptureConfig, c as DataCaptureContext, D as DataCaptureOptions, d as DataCapturePredicate } from '../types-Dmazk5Bk.mjs';
5
- import { L as LangWatchSpan } from '../types-D61S7yPU.mjs';
6
- export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-D61S7yPU.mjs';
5
+ import { L as LangWatchSpan } from '../types-jrEEZt9d.mjs';
6
+ export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-jrEEZt9d.mjs';
7
7
  import { Span } from '@opentelemetry/api';
8
8
  export { b as SemConvAttributeKey, S as SemConvAttributes, a as SemConvLogRecordAttributes, l as attributes } from '../types-DRiQaKFG.mjs';
9
9
  import '@opentelemetry/sdk-trace-base';
@@ -1,9 +1,9 @@
1
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation--7B7PUww.js';
1
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation-BIlL6-SW.js';
2
2
  import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
3
3
  import { a as DataCaptureMode } from '../types-Dmazk5Bk.js';
4
4
  export { b as DataCaptureConfig, c as DataCaptureContext, D as DataCaptureOptions, d as DataCapturePredicate } from '../types-Dmazk5Bk.js';
5
- import { L as LangWatchSpan } from '../types-D6Cs1385.js';
6
- export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-D6Cs1385.js';
5
+ import { L as LangWatchSpan } from '../types-DyUmlaDx.js';
6
+ export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-DyUmlaDx.js';
7
7
  import { Span } from '@opentelemetry/api';
8
8
  export { b as SemConvAttributeKey, S as SemConvAttributes, a as SemConvLogRecordAttributes, l as attributes } from '../types-DRiQaKFG.js';
9
9
  import '@opentelemetry/sdk-trace-base';
@@ -7,14 +7,14 @@ var _chunkYH5TIVK2js = require('../chunk-YH5TIVK2.js');
7
7
 
8
8
 
9
9
 
10
- var _chunkILTCLEIFjs = require('../chunk-ILTCLEIF.js');
10
+ var _chunkECOC36EAjs = require('../chunk-ECOC36EA.js');
11
11
 
12
12
 
13
13
 
14
14
 
15
15
 
16
- var _chunkNVKMXXNPjs = require('../chunk-NVKMXXNP.js');
17
- require('../chunk-VI5NJ53L.js');
16
+ var _chunkP4SQTYGNjs = require('../chunk-P4SQTYGN.js');
17
+ require('../chunk-QCYYSMCU.js');
18
18
 
19
19
 
20
20
 
@@ -38,5 +38,5 @@ require('../chunk-OXBO24RB.js');
38
38
 
39
39
 
40
40
 
41
- exports.DataCapturePresets = _chunkYH5TIVK2js.DataCapturePresets; exports.FilterableBatchSpanProcessor = _chunkYH5TIVK2js.FilterableBatchSpanProcessor; exports.LangWatchExporter = _chunkNVKMXXNPjs.LangWatchTraceExporter; exports.LangWatchLogsExporter = _chunkNVKMXXNPjs.LangWatchLogsExporter; exports.LangWatchTraceExporter = _chunkNVKMXXNPjs.LangWatchTraceExporter; exports.attributes = _chunkDISMHYXCjs.attributes_exports; exports.createLangWatchSpan = _chunkILTCLEIFjs.createLangWatchSpan; exports.getDataCaptureMode = _chunkDISMHYXCjs.getDataCaptureMode; exports.getLangWatchLogger = _chunkNVKMXXNPjs.getLangWatchLogger; exports.getLangWatchLoggerFromProvider = _chunkNVKMXXNPjs.getLangWatchLoggerFromProvider; exports.getLangWatchTracer = _chunkILTCLEIFjs.getLangWatchTracer; exports.getLangWatchTracerFromProvider = _chunkILTCLEIFjs.getLangWatchTracerFromProvider; exports.shouldCaptureInput = _chunkDISMHYXCjs.shouldCaptureInput; exports.shouldCaptureOutput = _chunkDISMHYXCjs.shouldCaptureOutput; exports.spanTypes = _chunkILTCLEIFjs.spanTypes;
41
+ exports.DataCapturePresets = _chunkYH5TIVK2js.DataCapturePresets; exports.FilterableBatchSpanProcessor = _chunkYH5TIVK2js.FilterableBatchSpanProcessor; exports.LangWatchExporter = _chunkP4SQTYGNjs.LangWatchTraceExporter; exports.LangWatchLogsExporter = _chunkP4SQTYGNjs.LangWatchLogsExporter; exports.LangWatchTraceExporter = _chunkP4SQTYGNjs.LangWatchTraceExporter; exports.attributes = _chunkDISMHYXCjs.attributes_exports; exports.createLangWatchSpan = _chunkECOC36EAjs.createLangWatchSpan; exports.getDataCaptureMode = _chunkDISMHYXCjs.getDataCaptureMode; exports.getLangWatchLogger = _chunkP4SQTYGNjs.getLangWatchLogger; exports.getLangWatchLoggerFromProvider = _chunkP4SQTYGNjs.getLangWatchLoggerFromProvider; exports.getLangWatchTracer = _chunkECOC36EAjs.getLangWatchTracer; exports.getLangWatchTracerFromProvider = _chunkECOC36EAjs.getLangWatchTracerFromProvider; exports.shouldCaptureInput = _chunkDISMHYXCjs.shouldCaptureInput; exports.shouldCaptureOutput = _chunkDISMHYXCjs.shouldCaptureOutput; exports.spanTypes = _chunkECOC36EAjs.spanTypes;
42
42
  //# sourceMappingURL=index.js.map
@@ -7,14 +7,14 @@ import {
7
7
  getLangWatchTracer,
8
8
  getLangWatchTracerFromProvider,
9
9
  spanTypes
10
- } from "../chunk-VILW5FYO.mjs";
10
+ } from "../chunk-QZGTM76F.mjs";
11
11
  import {
12
12
  LangWatchLogsExporter,
13
13
  LangWatchTraceExporter,
14
14
  getLangWatchLogger,
15
15
  getLangWatchLoggerFromProvider
16
- } from "../chunk-ENSRDEDA.mjs";
17
- import "../chunk-CAVBDSBT.mjs";
16
+ } from "../chunk-ZIULPOMQ.mjs";
17
+ import "../chunk-YKFTFYKK.mjs";
18
18
  import {
19
19
  attributes_exports,
20
20
  getDataCaptureMode,
@@ -1,6 +1,6 @@
1
1
  import * as _opentelemetry_api from '@opentelemetry/api';
2
2
  import { Attributes } from '@opentelemetry/api';
3
- import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-D61S7yPU.mjs';
3
+ import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-jrEEZt9d.mjs';
4
4
  import { AgentAction, AgentFinish } from '@langchain/core/agents';
5
5
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
6
6
  import { DocumentInterface } from '@langchain/core/documents';
@@ -1,6 +1,6 @@
1
1
  import * as _opentelemetry_api from '@opentelemetry/api';
2
2
  import { Attributes } from '@opentelemetry/api';
3
- import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-D6Cs1385.js';
3
+ import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-DyUmlaDx.js';
4
4
  import { AgentAction, AgentFinish } from '@langchain/core/agents';
5
5
  import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
6
6
  import { DocumentInterface } from '@langchain/core/documents';
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkILTCLEIFjs = require('../../../chunk-ILTCLEIF.js');
4
+ var _chunkECOC36EAjs = require('../../../chunk-ECOC36EA.js');
5
5
 
6
6
 
7
7
 
@@ -31,7 +31,7 @@ var LangWatchCallbackHandler = class extends _base.BaseCallbackHandler {
31
31
  constructor() {
32
32
  super(...arguments);
33
33
  this.name = "LangWatchCallbackHandler";
34
- this.tracer = _chunkILTCLEIFjs.getLangWatchTracer.call(void 0, "langwatch.instrumentation.langchain");
34
+ this.tracer = _chunkECOC36EAjs.getLangWatchTracer.call(void 0, "langwatch.instrumentation.langchain");
35
35
  this.spans = {};
36
36
  this.parentOf = {};
37
37
  this.skipped = {};
@@ -362,7 +362,7 @@ function wrapNonScalarValues(value) {
362
362
  if (value === null) return JSON.stringify(null);
363
363
  if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
364
364
  return value;
365
- const chatMessages = _chunkILTCLEIFjs.chatMessageSchema.array().safeParse(value);
365
+ const chatMessages = _chunkECOC36EAjs.chatMessageSchema.array().safeParse(value);
366
366
  if (Array.isArray(value) && chatMessages.success) {
367
367
  return JSON.stringify({ type: "chat_messages", value: chatMessages.data });
368
368
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  chatMessageSchema,
3
3
  getLangWatchTracer
4
- } from "../../../chunk-VILW5FYO.mjs";
4
+ } from "../../../chunk-QZGTM76F.mjs";
5
5
  import {
6
6
  shouldCaptureInput,
7
7
  shouldCaptureOutput
@@ -58,7 +58,7 @@ interface SetupObservabilityOptions {
58
58
  * LangWatch endpoint URL for sending traces and logs.
59
59
  * Defaults to LANGWATCH_ENDPOINT environment variable or production endpoint.
60
60
  *
61
- * @default "https://api.langwatch.ai"
61
+ * @default "https://app.langwatch.ai"
62
62
  * @default LANGWATCH_ENDPOINT environment variable
63
63
  */
64
64
  endpoint?: string;
@@ -58,7 +58,7 @@ interface SetupObservabilityOptions {
58
58
  * LangWatch endpoint URL for sending traces and logs.
59
59
  * Defaults to LANGWATCH_ENDPOINT environment variable or production endpoint.
60
60
  *
61
- * @default "https://api.langwatch.ai"
61
+ * @default "https://app.langwatch.ai"
62
62
  * @default LANGWATCH_ENDPOINT environment variable
63
63
  */
64
64
  endpoint?: string;