langwatch 0.4.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/README.md +19 -0
  2. package/dist/{add-SV662KZU.js → add-CGTO6GC2.js} +65 -40
  3. package/dist/add-CGTO6GC2.js.map +1 -0
  4. package/dist/{add-SMYALCQG.mjs → add-XCI65PVN.mjs} +53 -28
  5. package/dist/add-XCI65PVN.mjs.map +1 -0
  6. package/dist/{chunk-NVKMXXNP.js → chunk-2GYC6KEA.js} +32 -32
  7. package/dist/{chunk-NVKMXXNP.js.map → chunk-2GYC6KEA.js.map} +1 -1
  8. package/dist/{chunk-P5F63PAW.js → chunk-36XAYVMC.js} +186 -76
  9. package/dist/chunk-36XAYVMC.js.map +1 -0
  10. package/dist/{chunk-ENSRDEDA.mjs → chunk-3P4ROGZJ.mjs} +4 -4
  11. package/dist/{chunk-K4ICRI7W.mjs → chunk-AD7QRYIJ.mjs} +2 -2
  12. package/dist/{chunk-I5NDMIK5.js → chunk-AZHZ4NB4.js} +1 -1
  13. package/dist/{chunk-I5NDMIK5.js.map → chunk-AZHZ4NB4.js.map} +1 -1
  14. package/dist/{chunk-YQVVPMKH.mjs → chunk-BTBSMJTY.mjs} +1 -1
  15. package/dist/chunk-BTBSMJTY.mjs.map +1 -0
  16. package/dist/{chunk-DISMHYXC.js → chunk-CKIZDPIJ.js} +24 -22
  17. package/dist/chunk-CKIZDPIJ.js.map +1 -0
  18. package/dist/{chunk-ZZLIF3DE.js → chunk-DZH6SY3Z.js} +10 -10
  19. package/dist/{chunk-ZZLIF3DE.js.map → chunk-DZH6SY3Z.js.map} +1 -1
  20. package/dist/{chunk-N2V6J3U2.mjs → chunk-FEL5FLHA.mjs} +2 -2
  21. package/dist/{chunk-5ZKAT4KI.mjs → chunk-GAFUPYJ3.mjs} +336 -162
  22. package/dist/chunk-GAFUPYJ3.mjs.map +1 -0
  23. package/dist/{chunk-NFM6RB4R.js → chunk-HVW45GST.js} +347 -173
  24. package/dist/chunk-HVW45GST.js.map +1 -0
  25. package/dist/{chunk-YNQ44U6D.mjs → chunk-I2SOBPAF.mjs} +23 -21
  26. package/dist/chunk-I2SOBPAF.mjs.map +1 -0
  27. package/dist/{chunk-ILTCLEIF.js → chunk-J7B7BNDN.js} +17 -17
  28. package/dist/chunk-J7B7BNDN.js.map +1 -0
  29. package/dist/{chunk-VILW5FYO.mjs → chunk-JPWKINZP.mjs} +8 -8
  30. package/dist/{chunk-VILW5FYO.mjs.map → chunk-JPWKINZP.mjs.map} +1 -1
  31. package/dist/{chunk-OXBO24RB.js → chunk-OHM7JUMR.js} +15 -2
  32. package/dist/chunk-OHM7JUMR.js.map +1 -0
  33. package/dist/chunk-PYVDTUA6.mjs +352 -0
  34. package/dist/chunk-PYVDTUA6.mjs.map +1 -0
  35. package/dist/{chunk-YH5TIVK2.js → chunk-SNDTNU3T.js} +2 -2
  36. package/dist/{chunk-YH5TIVK2.js.map → chunk-SNDTNU3T.js.map} +1 -1
  37. package/dist/{chunk-CU3443HD.mjs → chunk-URTD2WOC.mjs} +14 -1
  38. package/dist/{chunk-CAVBDSBT.mjs → chunk-WOBPYIKO.mjs} +2 -2
  39. package/dist/chunk-WOBPYIKO.mjs.map +1 -0
  40. package/dist/{chunk-VI5NJ53L.js → chunk-Z3NTWVVA.js} +2 -2
  41. package/dist/chunk-Z3NTWVVA.js.map +1 -0
  42. package/dist/cli/index.js +10 -10
  43. package/dist/cli/index.mjs +9 -9
  44. package/dist/{create-BHWZP6YD.mjs → create-LXQB4EFB.mjs} +22 -12
  45. package/dist/create-LXQB4EFB.mjs.map +1 -0
  46. package/dist/{create-GUY3HZM2.js → create-S5RDGF3H.js} +27 -17
  47. package/dist/create-S5RDGF3H.js.map +1 -0
  48. package/dist/{implementation--7B7PUww.d.ts → implementation-DsHp9FYU.d.ts} +1 -1
  49. package/dist/{implementation-D7LzdQop.d.mts → implementation-nE9dgTwc.d.mts} +1 -1
  50. package/dist/{index-DTEZr0Jn.d.mts → index-D7rKIGrO.d.mts} +12 -12
  51. package/dist/{index-DTEZr0Jn.d.ts → index-D7rKIGrO.d.ts} +12 -12
  52. package/dist/index.d.mts +256 -11
  53. package/dist/index.d.ts +256 -11
  54. package/dist/index.js +135 -12
  55. package/dist/index.js.map +1 -1
  56. package/dist/index.mjs +133 -10
  57. package/dist/index.mjs.map +1 -1
  58. package/dist/init-T4YDPHBA.mjs +15 -0
  59. package/dist/{init-RDW2F4G3.mjs.map → init-T4YDPHBA.mjs.map} +1 -1
  60. package/dist/init-UADBKUJU.js +15 -0
  61. package/dist/init-UADBKUJU.js.map +1 -0
  62. package/dist/{list-GZGLSJ52.js → list-GRKVAGJS.js} +14 -15
  63. package/dist/list-GRKVAGJS.js.map +1 -0
  64. package/dist/{list-32BRZ6RS.mjs → list-XHXVFN24.mjs} +13 -14
  65. package/dist/list-XHXVFN24.mjs.map +1 -0
  66. package/dist/{login-IAP4RFUM.js → login-4GWM5I6F.js} +4 -4
  67. package/dist/{login-IAP4RFUM.js.map → login-4GWM5I6F.js.map} +1 -1
  68. package/dist/{login-VXLW2OXR.mjs → login-EKE7SFN3.mjs} +3 -3
  69. package/dist/observability-sdk/index.d.mts +4 -3
  70. package/dist/observability-sdk/index.d.ts +4 -3
  71. package/dist/observability-sdk/index.js +7 -7
  72. package/dist/observability-sdk/index.mjs +6 -6
  73. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +2 -1
  74. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +2 -1
  75. package/dist/observability-sdk/instrumentation/langchain/index.js +19 -19
  76. package/dist/observability-sdk/instrumentation/langchain/index.mjs +3 -3
  77. package/dist/observability-sdk/setup/node/index.d.mts +2 -2
  78. package/dist/observability-sdk/setup/node/index.d.ts +2 -2
  79. package/dist/observability-sdk/setup/node/index.js +15 -15
  80. package/dist/observability-sdk/setup/node/index.mjs +4 -4
  81. package/dist/{remove-N3324KHS.js → remove-7EXB2Z6R.js} +18 -19
  82. package/dist/remove-7EXB2Z6R.js.map +1 -0
  83. package/dist/{remove-JUVM6M7G.mjs → remove-W44FQ5MF.mjs} +10 -11
  84. package/dist/{remove-JUVM6M7G.mjs.map → remove-W44FQ5MF.mjs.map} +1 -1
  85. package/dist/{sync-E32H3H52.js → sync-V7WRMNJV.js} +41 -40
  86. package/dist/sync-V7WRMNJV.js.map +1 -0
  87. package/dist/{sync-B4YK6QYX.mjs → sync-XGFABFAW.mjs} +28 -27
  88. package/dist/sync-XGFABFAW.mjs.map +1 -0
  89. package/dist/{types-D6Cs1385.d.ts → types-B9772cUR.d.ts} +146 -27
  90. package/dist/{types-D61S7yPU.d.mts → types-DbPAi4US.d.mts} +146 -27
  91. package/package.json +9 -7
  92. package/dist/add-SMYALCQG.mjs.map +0 -1
  93. package/dist/add-SV662KZU.js.map +0 -1
  94. package/dist/chunk-5ZKAT4KI.mjs.map +0 -1
  95. package/dist/chunk-7ZRAJ52N.mjs +0 -242
  96. package/dist/chunk-7ZRAJ52N.mjs.map +0 -1
  97. package/dist/chunk-CAVBDSBT.mjs.map +0 -1
  98. package/dist/chunk-DISMHYXC.js.map +0 -1
  99. package/dist/chunk-ILTCLEIF.js.map +0 -1
  100. package/dist/chunk-LXVDGQA4.mjs +0 -101
  101. package/dist/chunk-LXVDGQA4.mjs.map +0 -1
  102. package/dist/chunk-NFM6RB4R.js.map +0 -1
  103. package/dist/chunk-OXBO24RB.js.map +0 -1
  104. package/dist/chunk-P5F63PAW.js.map +0 -1
  105. package/dist/chunk-PUHM465C.js +0 -101
  106. package/dist/chunk-PUHM465C.js.map +0 -1
  107. package/dist/chunk-RBZNMZTF.mjs +0 -155
  108. package/dist/chunk-RBZNMZTF.mjs.map +0 -1
  109. package/dist/chunk-T7FQHOLK.js +0 -155
  110. package/dist/chunk-T7FQHOLK.js.map +0 -1
  111. package/dist/chunk-VI5NJ53L.js.map +0 -1
  112. package/dist/chunk-YNQ44U6D.mjs.map +0 -1
  113. package/dist/chunk-YQVVPMKH.mjs.map +0 -1
  114. package/dist/create-BHWZP6YD.mjs.map +0 -1
  115. package/dist/create-GUY3HZM2.js.map +0 -1
  116. package/dist/init-OO2BUJ6V.js +0 -16
  117. package/dist/init-OO2BUJ6V.js.map +0 -1
  118. package/dist/init-RDW2F4G3.mjs +0 -16
  119. package/dist/list-32BRZ6RS.mjs.map +0 -1
  120. package/dist/list-GZGLSJ52.js.map +0 -1
  121. package/dist/remove-N3324KHS.js.map +0 -1
  122. package/dist/sync-B4YK6QYX.mjs.map +0 -1
  123. package/dist/sync-E32H3H52.js.map +0 -1
  124. /package/dist/{chunk-ENSRDEDA.mjs.map → chunk-3P4ROGZJ.mjs.map} +0 -0
  125. /package/dist/{chunk-K4ICRI7W.mjs.map → chunk-AD7QRYIJ.mjs.map} +0 -0
  126. /package/dist/{chunk-N2V6J3U2.mjs.map → chunk-FEL5FLHA.mjs.map} +0 -0
  127. /package/dist/{chunk-CU3443HD.mjs.map → chunk-URTD2WOC.mjs.map} +0 -0
  128. /package/dist/{login-VXLW2OXR.mjs.map → login-EKE7SFN3.mjs.map} +0 -0
@@ -1,24 +1,29 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkILTCLEIFjs = require('./chunk-ILTCLEIF.js');
3
+ var _chunkJ7B7BNDNjs = require('./chunk-J7B7BNDN.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkVI5NJ53Ljs = require('./chunk-VI5NJ53L.js');
8
7
 
9
8
 
10
9
 
11
- var _chunkDISMHYXCjs = require('./chunk-DISMHYXC.js');
12
10
 
13
11
 
14
- var _chunkPUHM465Cjs = require('./chunk-PUHM465C.js');
12
+ var _chunkZ3NTWVVAjs = require('./chunk-Z3NTWVVA.js');
15
13
 
16
14
 
17
15
 
18
- var _chunkOXBO24RBjs = require('./chunk-OXBO24RB.js');
19
16
 
20
- // src/client-sdk/services/prompts/prompt.ts
21
- var _liquidjs = require('liquidjs');
17
+ var _chunkCKIZDPIJjs = require('./chunk-CKIZDPIJ.js');
18
+
19
+
20
+
21
+ var _chunk36XAYVMCjs = require('./chunk-36XAYVMC.js');
22
+
23
+
24
+
25
+
26
+ var _chunkOHM7JUMRjs = require('./chunk-OHM7JUMR.js');
22
27
 
23
28
  // src/client-sdk/services/prompts/tracing/prompt-tracing.decorator.ts
24
29
  var PromptTracingDecorator = class {
@@ -28,8 +33,8 @@ var PromptTracingDecorator = class {
28
33
  traceCompilation(span, variables, compileFn) {
29
34
  var _a;
30
35
  span.setType("prompt");
31
- if (_chunkDISMHYXCjs.shouldCaptureInput.call(void 0, )) {
32
- span.setInput(this.target.raw);
36
+ if (_chunkCKIZDPIJjs.shouldCaptureInput.call(void 0, )) {
37
+ span.setInput(this.target);
33
38
  if (variables) {
34
39
  span.setAttribute(
35
40
  "langwatch.prompt.variables",
@@ -47,8 +52,8 @@ var PromptTracingDecorator = class {
47
52
  "langwatch.prompt.version.id": result.versionId,
48
53
  "langwatch.prompt.version.number": result.version
49
54
  });
50
- if (_chunkDISMHYXCjs.shouldCaptureOutput.call(void 0, )) {
51
- span.setOutput(_chunkOXBO24RBjs.__spreadProps.call(void 0, _chunkOXBO24RBjs.__spreadValues.call(void 0, {}, result), {
55
+ if (_chunkCKIZDPIJjs.shouldCaptureOutput.call(void 0, )) {
56
+ span.setOutput(_chunkOHM7JUMRjs.__spreadProps.call(void 0, _chunkOHM7JUMRjs.__spreadValues.call(void 0, {}, result), {
52
57
  raw: void 0
53
58
  // TODO(afr): Figure out a better way to do this.
54
59
  }));
@@ -89,37 +94,41 @@ var PromptServiceTracingDecorator = class {
89
94
  "langwatch.prompt.version.number": result.version
90
95
  });
91
96
  }
92
- if (result && _chunkDISMHYXCjs.shouldCaptureOutput.call(void 0, )) {
93
- span.setOutput("json", result.raw);
97
+ if (result && _chunkCKIZDPIJjs.shouldCaptureOutput.call(void 0, )) {
98
+ span.setOutput("json", result);
94
99
  }
95
100
  return result;
96
101
  }
97
102
  async create(span, params) {
98
103
  var _a;
99
104
  span.setType("prompt");
100
- if (_chunkDISMHYXCjs.shouldCaptureInput.call(void 0, )) {
105
+ if (_chunkCKIZDPIJjs.shouldCaptureInput.call(void 0, )) {
101
106
  span.setInput(params);
102
107
  }
103
108
  const result = await this.target.create(params);
104
- span.setAttribute("langwatch.prompt.id", result.id);
105
- span.setAttribute("langwatch.prompt.handle", (_a = result.handle) != null ? _a : "");
106
- span.setAttribute("langwatch.prompt.scope", result.scope);
107
- span.setAttribute("langwatch.prompt.version.id", result.versionId);
108
- span.setAttribute("langwatch.prompt.version.number", result.version);
109
+ span.setAttributes({
110
+ "langwatch.prompt.id": result.id,
111
+ "langwatch.prompt.handle": (_a = result.handle) != null ? _a : void 0,
112
+ "langwatch.prompt.scope": result.scope,
113
+ "langwatch.prompt.version.id": result.versionId,
114
+ "langwatch.prompt.version.number": result.version
115
+ });
109
116
  return result;
110
117
  }
111
118
  async update(span, id, params) {
112
119
  var _a;
113
- if (_chunkDISMHYXCjs.shouldCaptureInput.call(void 0, )) {
120
+ if (_chunkCKIZDPIJjs.shouldCaptureInput.call(void 0, )) {
114
121
  span.setInput(params);
115
122
  }
116
123
  const result = await this.target.update(id, params);
117
124
  span.setType("prompt");
118
- span.setAttribute("langwatch.prompt.id", id);
119
- span.setAttribute("langwatch.prompt.handle", (_a = result.handle) != null ? _a : "");
120
- span.setAttribute("langwatch.prompt.scope", result.scope);
121
- span.setAttribute("langwatch.prompt.version.id", result.versionId);
122
- span.setAttribute("langwatch.prompt.version.number", result.version);
125
+ span.setAttributes({
126
+ "langwatch.prompt.id": id,
127
+ "langwatch.prompt.handle": (_a = result.handle) != null ? _a : void 0,
128
+ "langwatch.prompt.scope": result.scope,
129
+ "langwatch.prompt.version.id": result.versionId,
130
+ "langwatch.prompt.version.number": result.version
131
+ });
123
132
  return result;
124
133
  }
125
134
  async delete(span, id) {
@@ -130,20 +139,22 @@ var PromptServiceTracingDecorator = class {
130
139
  return result;
131
140
  }
132
141
  async upsert(span, handle, config) {
133
- if (_chunkDISMHYXCjs.shouldCaptureInput.call(void 0, )) {
142
+ if (_chunkCKIZDPIJjs.shouldCaptureInput.call(void 0, )) {
134
143
  span.setInput(config);
135
144
  }
136
145
  const result = await this.target.upsert(handle, config);
137
146
  span.setType("prompt");
138
- span.setAttribute("langwatch.prompt.handle", handle);
139
- span.setAttribute("langwatch.prompt.created", result.created.toString());
140
- span.setAttribute("langwatch.prompt.id", result.prompt.id);
141
- span.setAttribute("langwatch.prompt.version.id", result.prompt.versionId);
142
- span.setAttribute("langwatch.prompt.version.number", result.prompt.version);
147
+ span.setAttributes({
148
+ "langwatch.prompt.handle": handle,
149
+ "langwatch.prompt.created": result.created.toString(),
150
+ "langwatch.prompt.id": result.prompt.id,
151
+ "langwatch.prompt.version.id": result.prompt.versionId,
152
+ "langwatch.prompt.version.number": result.prompt.version
153
+ });
143
154
  return result;
144
155
  }
145
156
  async sync(span, params) {
146
- if (_chunkDISMHYXCjs.shouldCaptureInput.call(void 0, )) {
157
+ if (_chunkCKIZDPIJjs.shouldCaptureInput.call(void 0, )) {
147
158
  span.setInput(params);
148
159
  }
149
160
  const result = await this.target.sync(params);
@@ -151,16 +162,18 @@ var PromptServiceTracingDecorator = class {
151
162
  span.setAttribute("langwatch.prompt.name", params.name);
152
163
  span.setAttribute("langwatch.prompt.sync.action", result.action);
153
164
  if (result.conflictInfo) {
154
- span.setAttribute("langwatch.prompt.sync.has_conflict", "true");
155
- span.setAttribute("langwatch.prompt.sync.local_version", result.conflictInfo.localVersion.toString());
156
- span.setAttribute("langwatch.prompt.sync.remote_version", result.conflictInfo.remoteVersion.toString());
165
+ span.setAttributes({
166
+ "langwatch.prompt.sync.has_conflict": "true",
167
+ "langwatch.prompt.sync.local_version": result.conflictInfo.localVersion.toString(),
168
+ "langwatch.prompt.sync.remote_version": result.conflictInfo.remoteVersion.toString()
169
+ });
157
170
  }
158
171
  return result;
159
172
  }
160
173
  };
161
174
 
162
175
  // src/client-sdk/services/prompts/tracing/tracer.ts
163
- var tracer = _chunkILTCLEIFjs.getLangWatchTracer.call(void 0, `${_chunkVI5NJ53Ljs.LANGWATCH_SDK_NAME_CLIENT}.prompts`, _chunkVI5NJ53Ljs.LANGWATCH_SDK_VERSION);
176
+ var tracer = _chunkJ7B7BNDNjs.getLangWatchTracer.call(void 0, `${_chunkZ3NTWVVAjs.LANGWATCH_SDK_NAME_CLIENT}.prompts`, _chunkZ3NTWVVAjs.LANGWATCH_SDK_VERSION);
164
177
 
165
178
  // src/client-sdk/tracing/create-tracing-proxy.ts
166
179
  var _api = require('@opentelemetry/api');
@@ -226,79 +239,23 @@ var isBuiltInMethod = (prop) => {
226
239
  return builtInMethods.includes(prop);
227
240
  };
228
241
 
229
- // src/client-sdk/services/prompts/prompt.ts
230
- var PromptCompilationError = class extends Error {
231
- constructor(message, template, originalError) {
232
- super(message);
233
- this.template = template;
234
- this.originalError = originalError;
235
- this.name = "PromptCompilationError";
236
- }
237
- };
238
- var liquid = new (0, _liquidjs.Liquid)({
239
- strictFilters: true
240
- });
241
- var Prompt = class {
242
- constructor(promptData) {
243
- this.promptData = promptData;
244
- Object.assign(this, promptData);
245
- return createTracingProxy(this, tracer, PromptTracingDecorator);
246
- }
247
- /**
248
- * Get the raw prompt data from the API
249
- */
250
- get raw() {
251
- return this.promptData;
252
- }
253
- /**
254
- * Compile the prompt template with provided variables (lenient - missing variables become empty)
255
- * @param variables - Object containing variable values for template compilation
256
- * @returns CompiledPrompt instance with compiled content
257
- */
258
- _compile(variables, strict) {
259
- try {
260
- const compiledPrompt = this.prompt ? liquid.parseAndRenderSync(this.prompt, variables, {
261
- strictVariables: strict
262
- }) : "";
263
- const compiledMessages = (this.messages || []).map((message) => _chunkOXBO24RBjs.__spreadProps.call(void 0, _chunkOXBO24RBjs.__spreadValues.call(void 0, {}, message), {
264
- content: message.content ? liquid.parseAndRenderSync(message.content, variables, {
265
- strictVariables: strict
266
- }) : message.content
267
- }));
268
- const compiledData = _chunkOXBO24RBjs.__spreadProps.call(void 0, _chunkOXBO24RBjs.__spreadValues.call(void 0, {}, this), {
269
- prompt: compiledPrompt,
270
- messages: compiledMessages
271
- });
272
- return new CompiledPrompt(compiledData, this);
273
- } catch (error) {
274
- const templateStr = this.prompt || JSON.stringify(this.messages);
275
- throw new PromptCompilationError(
276
- `Failed to compile prompt template: ${error instanceof Error ? error.message : "Unknown error"}`,
277
- templateStr,
278
- error
279
- );
280
- }
281
- }
282
- compile(variables = {}) {
283
- return this._compile(variables, false);
284
- }
285
- /**
286
- * Compile with validation - throws error if required variables are missing
287
- * @param variables - Template variables
288
- * @returns CompiledPrompt instance with compiled content
289
- */
290
- compileStrict(variables) {
291
- return this._compile(variables, true);
292
- }
293
- };
294
- var CompiledPrompt = class extends Prompt {
295
- constructor(compiledData, original) {
296
- super(compiledData);
297
- this.original = original;
298
- }
242
+ // src/internal/api/client.ts
243
+ var _openapifetch = require('openapi-fetch'); var _openapifetch2 = _interopRequireDefault(_openapifetch);
244
+ var createLangWatchApiClient = (apiKey = ((_a) => (_a = process.env.LANGWATCH_API_KEY) != null ? _a : "")(), endpoint = ((_b) => (_b = process.env.LANGWATCH_ENDPOINT) != null ? _b : (0, _chunkZ3NTWVVAjs.DEFAULT_ENDPOINT))()) => {
245
+ return _openapifetch2.default.call(void 0, {
246
+ baseUrl: endpoint,
247
+ headers: _chunkOHM7JUMRjs.__spreadProps.call(void 0, _chunkOHM7JUMRjs.__spreadValues.call(void 0, {}, apiKey ? { authorization: `Bearer ${apiKey}`, "x-auth-token": apiKey } : {}), {
248
+ "content-type": "application/json",
249
+ "user-agent": `langwatch-sdk-node/${_chunkZ3NTWVVAjs.version}`,
250
+ "x-langwatch-sdk-name": _chunkZ3NTWVVAjs.LANGWATCH_SDK_NAME_OBSERVABILITY,
251
+ "x-langwatch-sdk-language": _chunkZ3NTWVVAjs.LANGWATCH_SDK_LANGUAGE,
252
+ "x-langwatch-sdk-version": _chunkZ3NTWVVAjs.LANGWATCH_SDK_VERSION,
253
+ "x-langwatch-sdk-platform": _chunkZ3NTWVVAjs.LANGWATCH_SDK_RUNTIME.call(void 0, )
254
+ })
255
+ });
299
256
  };
300
257
 
301
- // src/client-sdk/services/prompts/service.ts
258
+ // src/client-sdk/services/prompts/prompts-api.service.ts
302
259
  var PromptsError = class extends Error {
303
260
  constructor(message, operation, originalError) {
304
261
  super(message);
@@ -307,9 +264,31 @@ var PromptsError = class extends Error {
307
264
  this.name = "PromptsError";
308
265
  }
309
266
  };
310
- var PromptsService = class {
267
+ var PromptsApiService = class {
311
268
  constructor(config) {
312
- this.config = config;
269
+ /**
270
+ * Fetches a single prompt by its ID.
271
+ * @param id The prompt's unique identifier.
272
+ * @returns Raw PromptResponse data.
273
+ * @throws {PromptsError} If the API call fails.
274
+ */
275
+ this.get = async (id, options) => {
276
+ const { data, error } = await this.apiClient.GET(
277
+ "/api/prompts/{id}",
278
+ {
279
+ params: { path: { id } },
280
+ query: {
281
+ version: options == null ? void 0 : options.version
282
+ }
283
+ }
284
+ );
285
+ if (error) {
286
+ this.handleApiError(`fetch prompt with ID "${id}"`, error);
287
+ }
288
+ return data;
289
+ };
290
+ var _a;
291
+ this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : createLangWatchApiClient();
313
292
  return createTracingProxy(
314
293
  this,
315
294
  tracer,
@@ -333,34 +312,13 @@ var PromptsService = class {
333
312
  }
334
313
  /**
335
314
  * Fetches all prompts from the API.
336
- * @returns Array of Prompt instances.
315
+ * @returns Array of raw PromptResponse data.
337
316
  * @throws {PromptsError} If the API call fails.
338
317
  */
339
318
  async getAll() {
340
- const { data, error } = await this.config.langwatchApiClient.GET("/api/prompts");
319
+ const { data, error } = await this.apiClient.GET("/api/prompts");
341
320
  if (error) this.handleApiError("fetch all prompts", error);
342
- return data.map((promptData) => new Prompt(promptData));
343
- }
344
- /**
345
- * Fetches a single prompt by its ID.
346
- * @param id The prompt's unique identifier.
347
- * @returns The Prompt instance.
348
- * @throws {PromptsError} If the API call fails.
349
- */
350
- async get(id, options) {
351
- const { data, error } = await this.config.langwatchApiClient.GET(
352
- "/api/prompts/{id}",
353
- {
354
- params: { path: { id } },
355
- query: {
356
- version: options == null ? void 0 : options.version
357
- }
358
- }
359
- );
360
- if (error) {
361
- this.handleApiError(`fetch prompt with ID "${id}"`, error);
362
- }
363
- return new Prompt(data);
321
+ return data;
364
322
  }
365
323
  /**
366
324
  * Validates if a prompt exists.
@@ -383,45 +341,32 @@ var PromptsService = class {
383
341
  /**
384
342
  * Creates a new prompt.
385
343
  * @param params The prompt creation payload, matching the OpenAPI schema.
386
- * @returns The created Prompt instance.
344
+ * @returns Raw PromptResponse data of the created prompt.
387
345
  * @throws {PromptsError} If the API call fails.
388
346
  */
389
347
  async create(params) {
390
- const { data, error } = await this.config.langwatchApiClient.POST(
348
+ const { data, error } = await this.apiClient.POST(
391
349
  "/api/prompts",
392
350
  {
393
351
  body: params
394
352
  }
395
353
  );
396
354
  if (error) this.handleApiError("create prompt", error);
397
- return new Prompt(data);
355
+ return data;
398
356
  }
399
357
  /**
400
358
  * Updates an existing prompt.
401
359
  * @param id The prompt's unique identifier.
402
360
  * @param params The update payload, matching the OpenAPI schema.
403
- * @returns The updated Prompt instance.
361
+ * @returns Raw PromptResponse data of the updated prompt.
404
362
  * @throws {PromptsError} If the API call fails.
405
- * @remarks
406
- * The API does not return the updated prompt directly, so this method fetches it after updating.
407
363
  */
408
364
  async update(id, params) {
409
- const { error } = await this.config.langwatchApiClient.PUT(
410
- "/api/prompts/{id}",
411
- {
412
- params: { path: { id } },
413
- body: params
414
- }
415
- );
365
+ const { error, data: updatedPrompt } = await this.apiClient.PUT("/api/prompts/{id}", {
366
+ params: { path: { id } },
367
+ body: params
368
+ });
416
369
  if (error) this.handleApiError(`update prompt with ID "${id}"`, error);
417
- const updatedPrompt = await this.get(id);
418
- if (!updatedPrompt) {
419
- throw new PromptsError(
420
- "Prompt not found after update",
421
- "update prompt",
422
- null
423
- );
424
- }
425
370
  return updatedPrompt;
426
371
  }
427
372
  /**
@@ -430,7 +375,7 @@ var PromptsService = class {
430
375
  * @throws {PromptsError} If the API call fails.
431
376
  */
432
377
  async delete(id) {
433
- const { data, error } = await this.config.langwatchApiClient.DELETE(
378
+ const { data, error } = await this.apiClient.DELETE(
434
379
  "/api/prompts/{id}",
435
380
  {
436
381
  params: { path: { id } }
@@ -442,10 +387,11 @@ var PromptsService = class {
442
387
  /**
443
388
  * Fetches all versions for a given prompt.
444
389
  * @param id The prompt's unique identifier.
390
+ * @returns Array of raw PromptResponse data for each version.
445
391
  * @throws {PromptsError} If the API call fails.
446
392
  */
447
393
  async getVersions(id) {
448
- const { data, error } = await this.config.langwatchApiClient.GET(
394
+ const { data, error } = await this.apiClient.GET(
449
395
  "/api/prompts/{id}/versions",
450
396
  {
451
397
  params: { path: { id } }
@@ -453,13 +399,13 @@ var PromptsService = class {
453
399
  );
454
400
  if (error)
455
401
  this.handleApiError(`fetch versions for prompt with ID "${id}"`, error);
456
- return data.map((version) => new Prompt(version));
402
+ return data;
457
403
  }
458
404
  /**
459
405
  * Upserts a prompt with local configuration - creates if doesn't exist, updates version if exists.
460
406
  * @param handle The prompt's handle/identifier.
461
407
  * @param config Local prompt configuration.
462
- * @returns Object with created flag and the prompt instance.
408
+ * @returns Object with created flag and raw PromptResponse data.
463
409
  * @throws {PromptsError} If the API call fails.
464
410
  */
465
411
  async upsert(handle, config) {
@@ -467,8 +413,8 @@ var PromptsService = class {
467
413
  const payload = {
468
414
  handle,
469
415
  model: config.model,
470
- prompt: _chunkPUHM465Cjs.PromptConverter.extractSystemPrompt(config.messages),
471
- messages: _chunkPUHM465Cjs.PromptConverter.filterNonSystemMessages(config.messages),
416
+ prompt: _chunk36XAYVMCjs.PromptConverter.extractSystemPrompt(config.messages),
417
+ messages: _chunk36XAYVMCjs.PromptConverter.filterNonSystemMessages(config.messages),
472
418
  temperature: (_a = config.modelParameters) == null ? void 0 : _a.temperature,
473
419
  maxTokens: (_b = config.modelParameters) == null ? void 0 : _b.max_tokens,
474
420
  inputs: [{ identifier: "input", type: "str" }],
@@ -496,7 +442,7 @@ var PromptsService = class {
496
442
  async sync(params) {
497
443
  var _a, _b;
498
444
  try {
499
- const response = await this.config.langwatchApiClient.POST(
445
+ const response = await this.apiClient.POST(
500
446
  "/api/prompts/{id}/sync",
501
447
  {
502
448
  params: { path: { id: params.name } },
@@ -523,11 +469,227 @@ var PromptsService = class {
523
469
  }
524
470
  };
525
471
 
526
- // src/client-sdk/services/prompts/facade.ts
472
+ // src/client-sdk/services/prompts/prompt.ts
473
+ var _liquidjs = require('liquidjs');
474
+
475
+ // src/client-sdk/services/prompts/schema/prompt.schema.ts
476
+ var _zod = require('zod');
477
+
478
+ // src/client-sdk/services/prompts/constants.ts
479
+ var PromptScope = {
480
+ ORGANIZATION: "ORGANIZATION",
481
+ PROJECT: "PROJECT"
482
+ };
483
+
484
+ // src/client-sdk/services/prompts/schema/prompt.schema.ts
485
+ var messageSchema = _zod.z.object({
486
+ role: _zod.z.enum(["user", "assistant", "system"]),
487
+ content: _zod.z.string()
488
+ });
489
+ var responseFormatSchema = _zod.z.object({
490
+ type: _zod.z.literal("json_schema"),
491
+ json_schema: _zod.z.object({
492
+ name: _zod.z.string(),
493
+ schema: _zod.z.record(_zod.z.string(), _zod.z.unknown())
494
+ }).nullable()
495
+ }).optional();
496
+ var corePromptDataSchema = _zod.z.object({
497
+ model: _zod.z.string().min(1, "Model cannot be empty"),
498
+ messages: _zod.z.array(messageSchema).min(1, "At least one message is required"),
499
+ prompt: _zod.z.string().optional(),
500
+ temperature: _zod.z.number().min(0).max(2).optional(),
501
+ maxTokens: _zod.z.number().positive().optional(),
502
+ responseFormat: responseFormatSchema
503
+ });
504
+ var promptMetadataSchema = _zod.z.object({
505
+ id: _zod.z.string().optional(),
506
+ handle: _zod.z.string().nullable().optional(),
507
+ version: _zod.z.number().min(0).optional(),
508
+ versionId: _zod.z.string().optional(),
509
+ scope: _zod.z.enum(PromptScope).optional()
510
+ });
511
+ var promptDataSchema = _zod.z.object(_chunkOHM7JUMRjs.__spreadValues.call(void 0, _chunkOHM7JUMRjs.__spreadValues.call(void 0, {}, corePromptDataSchema.shape), promptMetadataSchema.shape));
512
+
513
+ // src/client-sdk/services/prompts/errors/prompt-compilation.error.ts
514
+ var PromptCompilationError = class extends Error {
515
+ constructor(message, template, originalError) {
516
+ super(message);
517
+ this.template = template;
518
+ this.originalError = originalError;
519
+ this.name = "PromptCompilationError";
520
+ }
521
+ };
522
+
523
+ // src/client-sdk/services/prompts/errors/prompt-validation.error.ts
524
+ var PromptValidationError = class extends Error {
525
+ constructor(message, validationErrors) {
526
+ super(message);
527
+ this.validationErrors = validationErrors;
528
+ this.name = "PromptValidationError";
529
+ }
530
+ };
531
+
532
+ // src/client-sdk/services/prompts/prompt.ts
533
+ var liquid = new (0, _liquidjs.Liquid)({
534
+ strictFilters: true
535
+ });
536
+ var Prompt = class {
537
+ constructor(data) {
538
+ var _a;
539
+ const validationResult = promptDataSchema.strip().safeParse(data);
540
+ if (!validationResult.success) {
541
+ throw new PromptValidationError(
542
+ "Invalid prompt data provided",
543
+ validationResult.error
544
+ );
545
+ }
546
+ Object.assign(this, validationResult.data);
547
+ (_a = this.prompt) != null ? _a : this.prompt = this.extractSystemPrompt();
548
+ return createTracingProxy(this, tracer, PromptTracingDecorator);
549
+ }
550
+ extractSystemPrompt() {
551
+ var _a, _b;
552
+ return (_b = (_a = this.messages.find((m) => m.role === "system")) == null ? void 0 : _a.content) != null ? _b : "";
553
+ }
554
+ /**
555
+ * Compile the prompt template with provided variables (lenient - missing variables become empty)
556
+ * @param variables - Object containing variable values for template compilation
557
+ * @returns CompiledPrompt instance with compiled content
558
+ */
559
+ _compile(variables, strict) {
560
+ var _a;
561
+ try {
562
+ const compiledPrompt = this.prompt ? liquid.parseAndRenderSync(this.prompt, variables, {
563
+ strictVariables: strict
564
+ }) : "";
565
+ const compiledMessages = (this.messages || []).map((message) => _chunkOHM7JUMRjs.__spreadProps.call(void 0, _chunkOHM7JUMRjs.__spreadValues.call(void 0, {}, message), {
566
+ content: message.content ? liquid.parseAndRenderSync(message.content, variables, {
567
+ strictVariables: strict
568
+ }) : message.content
569
+ }));
570
+ const compiledData = _chunkOHM7JUMRjs.__spreadProps.call(void 0, _chunkOHM7JUMRjs.__spreadValues.call(void 0, {}, this), {
571
+ prompt: compiledPrompt,
572
+ messages: compiledMessages
573
+ });
574
+ return new CompiledPrompt(compiledData, this);
575
+ } catch (error) {
576
+ const templateStr = (_a = this.prompt) != null ? _a : JSON.stringify(this.messages);
577
+ throw new PromptCompilationError(
578
+ `Failed to compile prompt template: ${error instanceof Error ? error.message : "Unknown error"}`,
579
+ templateStr,
580
+ error
581
+ );
582
+ }
583
+ }
584
+ compile(variables = {}) {
585
+ return this._compile(variables, false);
586
+ }
587
+ /**
588
+ * Compile with validation - throws error if required variables are missing
589
+ * @param variables - Template variables
590
+ * @returns CompiledPrompt instance with compiled content
591
+ */
592
+ compileStrict(variables) {
593
+ return this._compile(variables, true);
594
+ }
595
+ };
596
+ var CompiledPrompt = class extends Prompt {
597
+ constructor(compiledData, original) {
598
+ super(compiledData);
599
+ this.original = original;
600
+ }
601
+ };
602
+
603
+ // src/client-sdk/services/prompts/local-prompts.service.ts
604
+ var LocalPromptsService = class {
605
+ constructor(config) {
606
+ var _a, _b;
607
+ this.fileManager = (_a = config == null ? void 0 : config.fileManager) != null ? _a : _chunk36XAYVMCjs.FileManager;
608
+ this.logger = (_b = config == null ? void 0 : config.logger) != null ? _b : new (0, _chunkCKIZDPIJjs.NoOpLogger)();
609
+ }
610
+ /**
611
+ * Retrieves a prompt using the configured search strategy.
612
+ * Tries each source in priority order until found or all sources exhausted.
613
+ */
614
+ async get(handleOrId) {
615
+ var _a, _b;
616
+ try {
617
+ const dependency = await this.getDependencyFromConfig(handleOrId);
618
+ if (!dependency) {
619
+ return null;
620
+ }
621
+ const localPromptConfig = (_b = (_a = await this.getFromConfig(dependency)) != null ? _a : await this.getFromLockFile(handleOrId)) != null ? _b : await this.getFromLocalFiles(handleOrId);
622
+ return localPromptConfig ? this.convertToPromptData(_chunkOHM7JUMRjs.__spreadProps.call(void 0, _chunkOHM7JUMRjs.__spreadValues.call(void 0, {}, localPromptConfig), {
623
+ handle: handleOrId
624
+ })) : null;
625
+ } catch (error) {
626
+ this.logger.warn(`Failed to get prompt "${handleOrId}": ${error instanceof Error ? error.message : String(error)}`);
627
+ return null;
628
+ }
629
+ }
630
+ /**
631
+ * Searches for prompt using explicit file mapping in prompts.json.
632
+ * Looks for dependencies with a 'file' property pointing to a specific path.
633
+ */
634
+ async getFromConfig(dependency) {
635
+ if (typeof dependency === "string" && dependency.startsWith("file:")) {
636
+ return this.fileManager.loadLocalPrompt(dependency.slice(5));
637
+ }
638
+ return null;
639
+ }
640
+ /**
641
+ * Searches for prompt using materialized path from lock file.
642
+ * Lock file contains resolved paths for prompts that have been synced/materialized.
643
+ */
644
+ async getFromLockFile(handleOrId) {
645
+ const lock = this.fileManager.loadPromptsLock();
646
+ const lockEntry = lock.prompts[handleOrId];
647
+ if (lockEntry == null ? void 0 : lockEntry.materialized) {
648
+ return this.fileManager.loadLocalPrompt(lockEntry.materialized);
649
+ }
650
+ return null;
651
+ }
652
+ /**
653
+ * Searches for prompt by scanning all .prompt.yaml files in prompts directory.
654
+ * Extracts prompt name from file path and matches against the requested handle.
655
+ * This is the fallback method when explicit mappings don't exist.
656
+ */
657
+ async getFromLocalFiles(handleOrId) {
658
+ const localFiles = this.fileManager.getLocalPromptFiles();
659
+ for (const filePath of localFiles) {
660
+ const promptName = this.fileManager.promptNameFromPath(filePath);
661
+ if (promptName === handleOrId) {
662
+ return this.fileManager.loadLocalPrompt(filePath);
663
+ }
664
+ }
665
+ return null;
666
+ }
667
+ /**
668
+ * Get dependency from config
669
+ */
670
+ async getDependencyFromConfig(handleOrId) {
671
+ const config = this.fileManager.loadPromptsConfig();
672
+ const dependency = config.prompts[handleOrId];
673
+ return dependency != null ? dependency : null;
674
+ }
675
+ /**
676
+ * Converts LocalPromptConfig to PromptData format
677
+ */
678
+ convertToPromptData(config) {
679
+ const _a = config, { modelParameters } = _a, rest = _chunkOHM7JUMRjs.__objRest.call(void 0, _a, ["modelParameters"]);
680
+ return _chunkOHM7JUMRjs.__spreadValues.call(void 0, {
681
+ maxTokens: modelParameters == null ? void 0 : modelParameters.max_tokens,
682
+ temperature: modelParameters == null ? void 0 : modelParameters.temperature
683
+ }, rest);
684
+ }
685
+ };
686
+
687
+ // src/client-sdk/services/prompts/prompts.facade.ts
527
688
  var PromptsFacade = class {
528
689
  constructor(config) {
529
- this.config = config;
530
- this.service = new PromptsService(config);
690
+ var _a, _b;
691
+ this.promptsApiService = (_a = config.promptsApiService) != null ? _a : new PromptsApiService(config);
692
+ this.localPromptsService = (_b = config.localPromptsService) != null ? _b : new LocalPromptsService();
531
693
  }
532
694
  /**
533
695
  * Creates a new prompt.
@@ -536,7 +698,8 @@ var PromptsFacade = class {
536
698
  * @throws {PromptsError} If the API call fails.
537
699
  */
538
700
  async create(data) {
539
- return this.service.create(data);
701
+ const serverPrompt = await this.promptsApiService.create(data);
702
+ return new Prompt(serverPrompt);
540
703
  }
541
704
  /**
542
705
  * Retrieves a prompt by handle or ID.
@@ -546,7 +709,12 @@ var PromptsFacade = class {
546
709
  * @throws {PromptsError} If the API call fails.
547
710
  */
548
711
  async get(handleOrId, options) {
549
- return this.service.get(handleOrId, options);
712
+ const localPrompt = await this.localPromptsService.get(handleOrId);
713
+ if (localPrompt) {
714
+ return new Prompt(localPrompt);
715
+ }
716
+ const serverPrompt = await this.promptsApiService.get(handleOrId, options);
717
+ return new Prompt(serverPrompt);
550
718
  }
551
719
  /**
552
720
  * Retrieves all prompts.
@@ -554,7 +722,8 @@ var PromptsFacade = class {
554
722
  * @throws {PromptsError} If the API call fails.
555
723
  */
556
724
  async getAll() {
557
- return this.service.getAll();
725
+ const serverPrompts = await this.promptsApiService.getAll();
726
+ return serverPrompts.map((prompt) => new Prompt(prompt));
558
727
  }
559
728
  /**
560
729
  * Updates an existing prompt.
@@ -564,7 +733,8 @@ var PromptsFacade = class {
564
733
  * @throws {PromptsError} If the API call fails.
565
734
  */
566
735
  async update(handleOrId, newData) {
567
- return this.service.update(handleOrId, newData);
736
+ const serverPrompt = await this.promptsApiService.update(handleOrId, newData);
737
+ return new Prompt(serverPrompt);
568
738
  }
569
739
  /**
570
740
  * Deletes a prompt by handle or ID.
@@ -572,7 +742,7 @@ var PromptsFacade = class {
572
742
  * @throws {PromptsError} If the API call fails.
573
743
  */
574
744
  async delete(handleOrId) {
575
- return this.service.delete(handleOrId);
745
+ return this.promptsApiService.delete(handleOrId);
576
746
  }
577
747
  /**
578
748
  * Syncs a prompt with the server.
@@ -581,7 +751,8 @@ var PromptsFacade = class {
581
751
  * @throws {PromptsError} If the API call fails.
582
752
  */
583
753
  async sync(params) {
584
- return this.service.sync(params);
754
+ const syncResult = await this.promptsApiService.sync(params);
755
+ return syncResult;
585
756
  }
586
757
  };
587
758
 
@@ -589,5 +760,8 @@ var PromptsFacade = class {
589
760
 
590
761
 
591
762
 
592
- exports.createTracingProxy = createTracingProxy; exports.PromptsError = PromptsError; exports.PromptsFacade = PromptsFacade;
593
- //# sourceMappingURL=chunk-NFM6RB4R.js.map
763
+
764
+
765
+
766
+ exports.createTracingProxy = createTracingProxy; exports.createLangWatchApiClient = createLangWatchApiClient; exports.PromptsError = PromptsError; exports.PromptsApiService = PromptsApiService; exports.LocalPromptsService = LocalPromptsService; exports.PromptsFacade = PromptsFacade;
767
+ //# sourceMappingURL=chunk-HVW45GST.js.map