langwatch 0.19.0 → 0.20.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 (65) hide show
  1. package/dist/{add-WLIE6XEG.mjs → add-2I554R6L.mjs} +4 -4
  2. package/dist/{add-OYRTMKQO.js → add-FJ2SMVQE.js} +7 -7
  3. package/dist/{add-OYRTMKQO.js.map → add-FJ2SMVQE.js.map} +1 -1
  4. package/dist/{chunk-MPOVGCVD.mjs → chunk-5M66X6SZ.mjs} +2 -2
  5. package/dist/{chunk-CIMNUH6E.mjs → chunk-A7CF6ZGH.mjs} +14 -7
  6. package/dist/chunk-A7CF6ZGH.mjs.map +1 -0
  7. package/dist/{chunk-44V235QR.js → chunk-BJUXJHMQ.js} +2 -2
  8. package/dist/{chunk-44V235QR.js.map → chunk-BJUXJHMQ.js.map} +1 -1
  9. package/dist/{chunk-CCDYGS72.mjs → chunk-CWXQ53NE.mjs} +2 -2
  10. package/dist/{chunk-HZAW7WTJ.js → chunk-NW32UPEI.js} +14 -14
  11. package/dist/{chunk-HZAW7WTJ.js.map → chunk-NW32UPEI.js.map} +1 -1
  12. package/dist/{chunk-JSD3JAHK.js → chunk-OLI6GF46.js} +11 -11
  13. package/dist/{chunk-JSD3JAHK.js.map → chunk-OLI6GF46.js.map} +1 -1
  14. package/dist/{chunk-22J3GPSB.js → chunk-PIF2RJWZ.js} +12 -12
  15. package/dist/{chunk-22J3GPSB.js.map → chunk-PIF2RJWZ.js.map} +1 -1
  16. package/dist/{chunk-SPEPSXKI.js → chunk-QLBNSGWC.js} +16 -9
  17. package/dist/chunk-QLBNSGWC.js.map +1 -0
  18. package/dist/{chunk-DCKVBP6R.mjs → chunk-SSONRNFB.mjs} +2 -2
  19. package/dist/{chunk-DCKVBP6R.mjs.map → chunk-SSONRNFB.mjs.map} +1 -1
  20. package/dist/{chunk-QD7BOTQC.mjs → chunk-WASZSPD7.mjs} +5 -5
  21. package/dist/{chunk-QD7BOTQC.mjs.map → chunk-WASZSPD7.mjs.map} +1 -1
  22. package/dist/{chunk-HYPS247A.mjs → chunk-WSESRS6L.mjs} +3 -3
  23. package/dist/{chunk-IJWZY7FY.js → chunk-ZLCERT3X.js} +4 -4
  24. package/dist/{chunk-IJWZY7FY.js.map → chunk-ZLCERT3X.js.map} +1 -1
  25. package/dist/cli/index.js +12 -12
  26. package/dist/cli/index.js.map +1 -1
  27. package/dist/cli/index.mjs +12 -12
  28. package/dist/cli/index.mjs.map +1 -1
  29. package/dist/index.js +14 -14
  30. package/dist/index.mjs +4 -4
  31. package/dist/{list-LZTSDYZO.mjs → list-53QTWXGF.mjs} +4 -4
  32. package/dist/{list-TVCERIYC.js → list-LBDUK454.js} +7 -7
  33. package/dist/{list-TVCERIYC.js.map → list-LBDUK454.js.map} +1 -1
  34. package/dist/{login-IC7I2IMY.mjs → login-QWXRNDAM.mjs} +2 -2
  35. package/dist/{login-2SBOQ62B.js → login-XBFOVP6G.js} +3 -3
  36. package/dist/{login-2SBOQ62B.js.map → login-XBFOVP6G.js.map} +1 -1
  37. package/dist/observability-sdk/index.js +3 -3
  38. package/dist/observability-sdk/index.mjs +2 -2
  39. package/dist/observability-sdk/setup/node/index.js +4 -4
  40. package/dist/observability-sdk/setup/node/index.mjs +3 -3
  41. package/dist/{pull-UFR3NBC7.js → pull-3B3CBSSM.js} +6 -6
  42. package/dist/{pull-UFR3NBC7.js.map → pull-3B3CBSSM.js.map} +1 -1
  43. package/dist/{pull-KXRSK5HG.mjs → pull-WK6P7KS2.mjs} +5 -5
  44. package/dist/{push-KFRI5YNG.mjs → push-G457CXVG.mjs} +5 -5
  45. package/dist/{push-73ABYK6C.js → push-GKFQL6GO.js} +6 -6
  46. package/dist/{push-73ABYK6C.js.map → push-GKFQL6GO.js.map} +1 -1
  47. package/dist/{remove-AIXQHYLS.js → remove-KIZPGE7J.js} +6 -6
  48. package/dist/{remove-AIXQHYLS.js.map → remove-KIZPGE7J.js.map} +1 -1
  49. package/dist/{remove-P3V4V2YO.mjs → remove-Q573N52S.mjs} +4 -4
  50. package/dist/{sync-53MALFUS.mjs → sync-TM7JZNNW.mjs} +6 -6
  51. package/dist/{sync-KQW7FUGI.js → sync-YPJIIHKC.js} +10 -10
  52. package/dist/{sync-KQW7FUGI.js.map → sync-YPJIIHKC.js.map} +1 -1
  53. package/package.json +5 -5
  54. package/dist/chunk-CIMNUH6E.mjs.map +0 -1
  55. package/dist/chunk-SPEPSXKI.js.map +0 -1
  56. /package/dist/{add-WLIE6XEG.mjs.map → add-2I554R6L.mjs.map} +0 -0
  57. /package/dist/{chunk-MPOVGCVD.mjs.map → chunk-5M66X6SZ.mjs.map} +0 -0
  58. /package/dist/{chunk-CCDYGS72.mjs.map → chunk-CWXQ53NE.mjs.map} +0 -0
  59. /package/dist/{chunk-HYPS247A.mjs.map → chunk-WSESRS6L.mjs.map} +0 -0
  60. /package/dist/{list-LZTSDYZO.mjs.map → list-53QTWXGF.mjs.map} +0 -0
  61. /package/dist/{login-IC7I2IMY.mjs.map → login-QWXRNDAM.mjs.map} +0 -0
  62. /package/dist/{pull-KXRSK5HG.mjs.map → pull-WK6P7KS2.mjs.map} +0 -0
  63. /package/dist/{push-KFRI5YNG.mjs.map → push-G457CXVG.mjs.map} +0 -0
  64. /package/dist/{remove-P3V4V2YO.mjs.map → remove-Q573N52S.mjs.map} +0 -0
  65. /package/dist/{sync-53MALFUS.mjs.map → sync-TM7JZNNW.mjs.map} +0 -0
@@ -13,8 +13,8 @@ var _chunkVCC7F6B7js = require('../chunk-VCC7F6B7.js');
13
13
 
14
14
 
15
15
 
16
- var _chunkHZAW7WTJjs = require('../chunk-HZAW7WTJ.js');
17
- require('../chunk-44V235QR.js');
16
+ var _chunkNW32UPEIjs = require('../chunk-NW32UPEI.js');
17
+ require('../chunk-BJUXJHMQ.js');
18
18
 
19
19
 
20
20
 
@@ -38,5 +38,5 @@ require('../chunk-OHM7JUMR.js');
38
38
 
39
39
 
40
40
 
41
- exports.DataCapturePresets = _chunkQNT5P6VVjs.DataCapturePresets; exports.FilterableBatchSpanProcessor = _chunkQNT5P6VVjs.FilterableBatchSpanProcessor; exports.LangWatchExporter = _chunkHZAW7WTJjs.LangWatchTraceExporter; exports.LangWatchLogsExporter = _chunkHZAW7WTJjs.LangWatchLogsExporter; exports.LangWatchTraceExporter = _chunkHZAW7WTJjs.LangWatchTraceExporter; exports.attributes = _chunk5LYWRKDFjs.attributes_exports; exports.createLangWatchSpan = _chunkVCC7F6B7js.createLangWatchSpan; exports.getDataCaptureMode = _chunk5LYWRKDFjs.getDataCaptureMode; exports.getLangWatchLogger = _chunkHZAW7WTJjs.getLangWatchLogger; exports.getLangWatchLoggerFromProvider = _chunkHZAW7WTJjs.getLangWatchLoggerFromProvider; exports.getLangWatchTracer = _chunkVCC7F6B7js.getLangWatchTracer; exports.getLangWatchTracerFromProvider = _chunkVCC7F6B7js.getLangWatchTracerFromProvider; exports.shouldCaptureInput = _chunk5LYWRKDFjs.shouldCaptureInput; exports.shouldCaptureOutput = _chunk5LYWRKDFjs.shouldCaptureOutput; exports.spanTypes = _chunkVCC7F6B7js.spanTypes;
41
+ exports.DataCapturePresets = _chunkQNT5P6VVjs.DataCapturePresets; exports.FilterableBatchSpanProcessor = _chunkQNT5P6VVjs.FilterableBatchSpanProcessor; exports.LangWatchExporter = _chunkNW32UPEIjs.LangWatchTraceExporter; exports.LangWatchLogsExporter = _chunkNW32UPEIjs.LangWatchLogsExporter; exports.LangWatchTraceExporter = _chunkNW32UPEIjs.LangWatchTraceExporter; exports.attributes = _chunk5LYWRKDFjs.attributes_exports; exports.createLangWatchSpan = _chunkVCC7F6B7js.createLangWatchSpan; exports.getDataCaptureMode = _chunk5LYWRKDFjs.getDataCaptureMode; exports.getLangWatchLogger = _chunkNW32UPEIjs.getLangWatchLogger; exports.getLangWatchLoggerFromProvider = _chunkNW32UPEIjs.getLangWatchLoggerFromProvider; exports.getLangWatchTracer = _chunkVCC7F6B7js.getLangWatchTracer; exports.getLangWatchTracerFromProvider = _chunkVCC7F6B7js.getLangWatchTracerFromProvider; exports.shouldCaptureInput = _chunk5LYWRKDFjs.shouldCaptureInput; exports.shouldCaptureOutput = _chunk5LYWRKDFjs.shouldCaptureOutput; exports.spanTypes = _chunkVCC7F6B7js.spanTypes;
42
42
  //# sourceMappingURL=index.js.map
@@ -13,8 +13,8 @@ import {
13
13
  LangWatchTraceExporter,
14
14
  getLangWatchLogger,
15
15
  getLangWatchLoggerFromProvider
16
- } from "../chunk-MPOVGCVD.mjs";
17
- import "../chunk-DCKVBP6R.mjs";
16
+ } from "../chunk-5M66X6SZ.mjs";
17
+ import "../chunk-SSONRNFB.mjs";
18
18
  import {
19
19
  attributes_exports,
20
20
  getDataCaptureMode,
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkJSD3JAHKjs = require('../../../chunk-JSD3JAHK.js');
5
- require('../../../chunk-HZAW7WTJ.js');
6
- require('../../../chunk-44V235QR.js');
4
+ var _chunkOLI6GF46js = require('../../../chunk-OLI6GF46.js');
5
+ require('../../../chunk-NW32UPEI.js');
6
+ require('../../../chunk-BJUXJHMQ.js');
7
7
  require('../../../chunk-5LYWRKDF.js');
8
8
  require('../../../chunk-OHM7JUMR.js');
9
9
 
10
10
 
11
11
 
12
- exports.ensureSetup = _chunkJSD3JAHKjs.ensureSetup; exports.setupObservability = _chunkJSD3JAHKjs.setupObservability;
12
+ exports.ensureSetup = _chunkOLI6GF46js.ensureSetup; exports.setupObservability = _chunkOLI6GF46js.setupObservability;
13
13
  //# sourceMappingURL=index.js.map
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  ensureSetup,
3
3
  setupObservability
4
- } from "../../../chunk-HYPS247A.mjs";
5
- import "../../../chunk-MPOVGCVD.mjs";
6
- import "../../../chunk-DCKVBP6R.mjs";
4
+ } from "../../../chunk-WSESRS6L.mjs";
5
+ import "../../../chunk-5M66X6SZ.mjs";
6
+ import "../../../chunk-SSONRNFB.mjs";
7
7
  import "../../../chunk-JVIQJFUE.mjs";
8
8
  import "../../../chunk-URTD2WOC.mjs";
9
9
  export {
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkIJWZY7FYjs = require('./chunk-IJWZY7FY.js');
4
+ var _chunkZLCERT3Xjs = require('./chunk-ZLCERT3X.js');
5
5
  require('./chunk-F6E4XQQU.js');
6
- require('./chunk-22J3GPSB.js');
6
+ require('./chunk-PIF2RJWZ.js');
7
7
  require('./chunk-QNT5P6VV.js');
8
8
  require('./chunk-VCC7F6B7.js');
9
- require('./chunk-HZAW7WTJ.js');
10
- require('./chunk-44V235QR.js');
9
+ require('./chunk-NW32UPEI.js');
10
+ require('./chunk-BJUXJHMQ.js');
11
11
  require('./chunk-5LYWRKDF.js');
12
12
  require('./chunk-BYG3QS2X.js');
13
13
  require('./chunk-WAAQLJ67.js');
@@ -16,5 +16,5 @@ require('./chunk-OHM7JUMR.js');
16
16
 
17
17
 
18
18
 
19
- exports.pullCommand = _chunkIJWZY7FYjs.pullCommand; exports.pullPrompts = _chunkIJWZY7FYjs.pullPrompts;
20
- //# sourceMappingURL=pull-UFR3NBC7.js.map
19
+ exports.pullCommand = _chunkZLCERT3Xjs.pullCommand; exports.pullPrompts = _chunkZLCERT3Xjs.pullPrompts;
20
+ //# sourceMappingURL=pull-3B3CBSSM.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/pull-UFR3NBC7.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,uGAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/pull-UFR3NBC7.js"}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/pull-3B3CBSSM.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,uGAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/pull-3B3CBSSM.js"}
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  pullCommand,
3
3
  pullPrompts
4
- } from "./chunk-CCDYGS72.mjs";
4
+ } from "./chunk-CWXQ53NE.mjs";
5
5
  import "./chunk-DHJKJVY7.mjs";
6
- import "./chunk-QD7BOTQC.mjs";
6
+ import "./chunk-WASZSPD7.mjs";
7
7
  import "./chunk-FMYG6IOZ.mjs";
8
8
  import "./chunk-L5Z7F7MG.mjs";
9
- import "./chunk-MPOVGCVD.mjs";
10
- import "./chunk-DCKVBP6R.mjs";
9
+ import "./chunk-5M66X6SZ.mjs";
10
+ import "./chunk-SSONRNFB.mjs";
11
11
  import "./chunk-JVIQJFUE.mjs";
12
12
  import "./chunk-W3V3NX7P.mjs";
13
13
  import "./chunk-O6D3W3PG.mjs";
@@ -17,4 +17,4 @@ export {
17
17
  pullCommand,
18
18
  pullPrompts
19
19
  };
20
- //# sourceMappingURL=pull-KXRSK5HG.mjs.map
20
+ //# sourceMappingURL=pull-WK6P7KS2.mjs.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  pushCommand,
3
3
  pushPrompts
4
- } from "./chunk-CIMNUH6E.mjs";
4
+ } from "./chunk-A7CF6ZGH.mjs";
5
5
  import "./chunk-DHJKJVY7.mjs";
6
- import "./chunk-QD7BOTQC.mjs";
6
+ import "./chunk-WASZSPD7.mjs";
7
7
  import "./chunk-FMYG6IOZ.mjs";
8
8
  import "./chunk-L5Z7F7MG.mjs";
9
- import "./chunk-MPOVGCVD.mjs";
10
- import "./chunk-DCKVBP6R.mjs";
9
+ import "./chunk-5M66X6SZ.mjs";
10
+ import "./chunk-SSONRNFB.mjs";
11
11
  import "./chunk-JVIQJFUE.mjs";
12
12
  import "./chunk-W3V3NX7P.mjs";
13
13
  import "./chunk-O6D3W3PG.mjs";
@@ -17,4 +17,4 @@ export {
17
17
  pushCommand,
18
18
  pushPrompts
19
19
  };
20
- //# sourceMappingURL=push-KFRI5YNG.mjs.map
20
+ //# sourceMappingURL=push-G457CXVG.mjs.map
@@ -1,13 +1,13 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
3
 
4
- var _chunkSPEPSXKIjs = require('./chunk-SPEPSXKI.js');
4
+ var _chunkQLBNSGWCjs = require('./chunk-QLBNSGWC.js');
5
5
  require('./chunk-F6E4XQQU.js');
6
- require('./chunk-22J3GPSB.js');
6
+ require('./chunk-PIF2RJWZ.js');
7
7
  require('./chunk-QNT5P6VV.js');
8
8
  require('./chunk-VCC7F6B7.js');
9
- require('./chunk-HZAW7WTJ.js');
10
- require('./chunk-44V235QR.js');
9
+ require('./chunk-NW32UPEI.js');
10
+ require('./chunk-BJUXJHMQ.js');
11
11
  require('./chunk-5LYWRKDF.js');
12
12
  require('./chunk-BYG3QS2X.js');
13
13
  require('./chunk-WAAQLJ67.js');
@@ -16,5 +16,5 @@ require('./chunk-OHM7JUMR.js');
16
16
 
17
17
 
18
18
 
19
- exports.pushCommand = _chunkSPEPSXKIjs.pushCommand; exports.pushPrompts = _chunkSPEPSXKIjs.pushPrompts;
20
- //# sourceMappingURL=push-73ABYK6C.js.map
19
+ exports.pushCommand = _chunkQLBNSGWCjs.pushCommand; exports.pushPrompts = _chunkQLBNSGWCjs.pushPrompts;
20
+ //# sourceMappingURL=push-GKFQL6GO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/push-73ABYK6C.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,uGAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/push-73ABYK6C.js"}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/push-GKFQL6GO.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACF,uGAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/push-GKFQL6GO.js"}
@@ -1,10 +1,10 @@
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 _chunk22J3GPSBjs = require('./chunk-22J3GPSB.js');
3
+ var _chunkPIF2RJWZjs = require('./chunk-PIF2RJWZ.js');
4
4
  require('./chunk-QNT5P6VV.js');
5
5
  require('./chunk-VCC7F6B7.js');
6
- require('./chunk-HZAW7WTJ.js');
7
- require('./chunk-44V235QR.js');
6
+ require('./chunk-NW32UPEI.js');
7
+ require('./chunk-BJUXJHMQ.js');
8
8
  require('./chunk-5LYWRKDF.js');
9
9
 
10
10
 
@@ -87,7 +87,7 @@ var removeCommand = async (name) => {
87
87
  }
88
88
  } catch (error) {
89
89
  spinner.fail();
90
- if (error instanceof _chunk22J3GPSBjs.PromptsError) {
90
+ if (error instanceof _chunkPIF2RJWZjs.PromptsError) {
91
91
  console.error(_chalk2.default.red(`Error: ${error.message}`));
92
92
  } else {
93
93
  console.error(_chalk2.default.red(`Error removing prompt: ${error instanceof Error ? error.message : "Unknown error"}`));
@@ -95,7 +95,7 @@ var removeCommand = async (name) => {
95
95
  process.exit(1);
96
96
  }
97
97
  } catch (error) {
98
- if (error instanceof _chunk22J3GPSBjs.PromptsError) {
98
+ if (error instanceof _chunkPIF2RJWZjs.PromptsError) {
99
99
  console.error(_chalk2.default.red(`Error: ${error.message}`));
100
100
  } else {
101
101
  console.error(_chalk2.default.red(`Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`));
@@ -106,4 +106,4 @@ var removeCommand = async (name) => {
106
106
 
107
107
 
108
108
  exports.removeCommand = removeCommand;
109
- //# sourceMappingURL=remove-AIXQHYLS.js.map
109
+ //# sourceMappingURL=remove-KIZPGE7J.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-AIXQHYLS.js","../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACdA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAIT,IAAM,cAAA,EAAgB,MAAA,CAAO,IAAA,EAAA,GAAgC;AAClE,EAAA,IAAI;AAEF,IAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI;AAC/B,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,oCAAoC,CAAC,CAAA;AAC7D,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,MAAM,OAAA,EAAS,4BAAA,CAAY,iBAAA,CAAkB,CAAA;AAC7C,IAAA,MAAM,KAAA,EAAO,4BAAA,CAAY,eAAA,CAAgB,CAAA;AAGzC,IAAA,GAAA,CAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,CAAA,eAAA,EAAkB,IAAI,CAAA,2BAAA,CAA6B,CAAC,CAAA;AAC5E,MAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,CAAA,mBAAA,EAAsB,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,EAAA,GAAK,MAAM,CAAA,CAAA;AAC/E,MAAA;AAChB,IAAA;AAEsC,IAAA;AAEhB,IAAA;AAEuC,IAAA;AAEzD,IAAA;AAEiB,MAAA;AACb,QAAA;AAEkE,QAAA;AACpB,UAAA;AACY,QAAA;AAChB,UAAA;AACvC,QAAA;AAEuE,UAAA;AAC9E,QAAA;AAGkC,QAAA;AACL,UAAA;AACoC,UAAA;AAC/C,UAAA;AAC2D,UAAA;AACtE,QAAA;AACW,UAAA;AACqD,UAAA;AACvE,QAAA;AAEyB,QAAA;AAC3B,MAAA;AAGmC,MAAA;AACN,MAAA;AACiC,QAAA;AACvB,QAAA;AACL,UAAA;AAGuB,UAAA;AACM,UAAA;AAE1C,UAAA;AACqE,UAAA;AAChF,YAAA;AACuC,cAAA;AACf,cAAA;AACD,gBAAA;AACa,gBAAA;AAC/B,cAAA;AACL,gBAAA;AACF,cAAA;AACM,YAAA;AACN,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AAG0B,MAAA;AACF,MAAA;AAGY,MAAA;AACJ,MAAA;AAEZ,MAAA;AACF,QAAA;AAC0D,QAAA;AAC5E,MAAA;AAEc,IAAA;AACD,MAAA;AACsB,MAAA;AACiB,QAAA;AAC7C,MAAA;AACsF,QAAA;AAC7F,MAAA;AACc,MAAA;AAChB,IAAA;AAEc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACiF,MAAA;AACxF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADdoG;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-AIXQHYLS.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { PromptsError } from \"@/client-sdk/services/prompts\";\n\nexport const removeCommand = async (name: string): 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 // Load existing config and lock\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n // Check if prompt exists in dependencies\n if (!config.prompts[name]) {\n console.error(chalk.red(`Error: Prompt \"${name}\" not found in dependencies`));\n console.log(chalk.gray(`Available prompts: ${Object.keys(config.prompts).join(', ') || 'none'}`));\n process.exit(1);\n }\n\n const dependency = config.prompts[name];\n const isLocalPrompt = (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) ||\n (typeof dependency === \"object\" && dependency.file);\n\n const spinner = ora(`Removing ${chalk.cyan(name)}...`).start();\n\n try {\n // Handle local prompts\n if (isLocalPrompt) {\n let localFilePath: string;\n\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n localFilePath = path.resolve(dependency.slice(5)); // Remove \"file:\" prefix\n } else if (typeof dependency === \"object\" && dependency.file) {\n localFilePath = path.resolve(dependency.file);\n } else {\n // Fallback: assume it's in the prompts directory\n localFilePath = path.join(FileManager.getPromptsDir(), `${name}.prompt.yaml`);\n }\n\n // Delete the local file if it exists\n if (fs.existsSync(localFilePath)) {\n fs.unlinkSync(localFilePath);\n const relativePath = path.relative(process.cwd(), localFilePath);\n spinner.succeed();\n console.log(chalk.green(`✓ Removed local file ${chalk.gray(relativePath)}`));\n } else {\n spinner.succeed();\n console.log(chalk.yellow(`⚠ Local file not found (already deleted?)`));\n }\n\n console.log(chalk.yellow(`⚠ Note: This prompt may still exist on the server. Visit LangWatch to fully delete it.`));\n }\n\n // Remove materialized file if it exists\n const lockEntry = lock.prompts[name];\n if (lockEntry?.materialized) {\n const materializedPath = path.resolve(lockEntry.materialized);\n if (fs.existsSync(materializedPath)) {\n fs.unlinkSync(materializedPath);\n\n // Clean up empty directories\n const materializedDir = path.dirname(materializedPath);\n const rootMaterializedDir = FileManager.getMaterializedDir();\n\n let currentDir = materializedDir;\n while (currentDir !== rootMaterializedDir && currentDir !== path.dirname(currentDir)) {\n try {\n const entries = fs.readdirSync(currentDir);\n if (entries.length === 0) {\n fs.rmdirSync(currentDir);\n currentDir = path.dirname(currentDir);\n } else {\n break;\n }\n } catch {\n break;\n }\n }\n }\n }\n\n // Remove from config and lock\n delete config.prompts[name];\n delete lock.prompts[name];\n\n // Save updated files\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n if (!isLocalPrompt) {\n spinner.succeed();\n console.log(chalk.green(`✓ Removed ${chalk.cyan(name)} from dependencies`));\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(chalk.red(`Error removing prompt: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n }\n\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(chalk.red(`Unexpected error: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-KIZPGE7J.js","../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACdA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAIT,IAAM,cAAA,EAAgB,MAAA,CAAO,IAAA,EAAA,GAAgC;AAClE,EAAA,IAAI;AAEF,IAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI;AAC/B,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,oCAAoC,CAAC,CAAA;AAC7D,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,MAAM,OAAA,EAAS,4BAAA,CAAY,iBAAA,CAAkB,CAAA;AAC7C,IAAA,MAAM,KAAA,EAAO,4BAAA,CAAY,eAAA,CAAgB,CAAA;AAGzC,IAAA,GAAA,CAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,CAAA,eAAA,EAAkB,IAAI,CAAA,2BAAA,CAA6B,CAAC,CAAA;AAC5E,MAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,CAAA,mBAAA,EAAsB,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,EAAA,GAAK,MAAM,CAAA,CAAA;AAC/E,MAAA;AAChB,IAAA;AAEsC,IAAA;AAEhB,IAAA;AAEuC,IAAA;AAEzD,IAAA;AAEiB,MAAA;AACb,QAAA;AAEkE,QAAA;AACpB,UAAA;AACY,QAAA;AAChB,UAAA;AACvC,QAAA;AAEuE,UAAA;AAC9E,QAAA;AAGkC,QAAA;AACL,UAAA;AACoC,UAAA;AAC/C,UAAA;AAC2D,UAAA;AACtE,QAAA;AACW,UAAA;AACqD,UAAA;AACvE,QAAA;AAEyB,QAAA;AAC3B,MAAA;AAGmC,MAAA;AACN,MAAA;AACiC,QAAA;AACvB,QAAA;AACL,UAAA;AAGuB,UAAA;AACM,UAAA;AAE1C,UAAA;AACqE,UAAA;AAChF,YAAA;AACuC,cAAA;AACf,cAAA;AACD,gBAAA;AACa,gBAAA;AAC/B,cAAA;AACL,gBAAA;AACF,cAAA;AACM,YAAA;AACN,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AAG0B,MAAA;AACF,MAAA;AAGY,MAAA;AACJ,MAAA;AAEZ,MAAA;AACF,QAAA;AAC0D,QAAA;AAC5E,MAAA;AAEc,IAAA;AACD,MAAA;AACsB,MAAA;AACiB,QAAA;AAC7C,MAAA;AACsF,QAAA;AAC7F,MAAA;AACc,MAAA;AAChB,IAAA;AAEc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACiF,MAAA;AACxF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADdoG;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-KIZPGE7J.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { PromptsError } from \"@/client-sdk/services/prompts\";\n\nexport const removeCommand = async (name: string): 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 // Load existing config and lock\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n // Check if prompt exists in dependencies\n if (!config.prompts[name]) {\n console.error(chalk.red(`Error: Prompt \"${name}\" not found in dependencies`));\n console.log(chalk.gray(`Available prompts: ${Object.keys(config.prompts).join(', ') || 'none'}`));\n process.exit(1);\n }\n\n const dependency = config.prompts[name];\n const isLocalPrompt = (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) ||\n (typeof dependency === \"object\" && dependency.file);\n\n const spinner = ora(`Removing ${chalk.cyan(name)}...`).start();\n\n try {\n // Handle local prompts\n if (isLocalPrompt) {\n let localFilePath: string;\n\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n localFilePath = path.resolve(dependency.slice(5)); // Remove \"file:\" prefix\n } else if (typeof dependency === \"object\" && dependency.file) {\n localFilePath = path.resolve(dependency.file);\n } else {\n // Fallback: assume it's in the prompts directory\n localFilePath = path.join(FileManager.getPromptsDir(), `${name}.prompt.yaml`);\n }\n\n // Delete the local file if it exists\n if (fs.existsSync(localFilePath)) {\n fs.unlinkSync(localFilePath);\n const relativePath = path.relative(process.cwd(), localFilePath);\n spinner.succeed();\n console.log(chalk.green(`✓ Removed local file ${chalk.gray(relativePath)}`));\n } else {\n spinner.succeed();\n console.log(chalk.yellow(`⚠ Local file not found (already deleted?)`));\n }\n\n console.log(chalk.yellow(`⚠ Note: This prompt may still exist on the server. Visit LangWatch to fully delete it.`));\n }\n\n // Remove materialized file if it exists\n const lockEntry = lock.prompts[name];\n if (lockEntry?.materialized) {\n const materializedPath = path.resolve(lockEntry.materialized);\n if (fs.existsSync(materializedPath)) {\n fs.unlinkSync(materializedPath);\n\n // Clean up empty directories\n const materializedDir = path.dirname(materializedPath);\n const rootMaterializedDir = FileManager.getMaterializedDir();\n\n let currentDir = materializedDir;\n while (currentDir !== rootMaterializedDir && currentDir !== path.dirname(currentDir)) {\n try {\n const entries = fs.readdirSync(currentDir);\n if (entries.length === 0) {\n fs.rmdirSync(currentDir);\n currentDir = path.dirname(currentDir);\n } else {\n break;\n }\n } catch {\n break;\n }\n }\n }\n }\n\n // Remove from config and lock\n delete config.prompts[name];\n delete lock.prompts[name];\n\n // Save updated files\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n if (!isLocalPrompt) {\n spinner.succeed();\n console.log(chalk.green(`✓ Removed ${chalk.cyan(name)} from dependencies`));\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(chalk.red(`Error removing prompt: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n }\n\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(chalk.red(`Unexpected error: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n }\n};\n"]}
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  PromptsError
3
- } from "./chunk-QD7BOTQC.mjs";
3
+ } from "./chunk-WASZSPD7.mjs";
4
4
  import "./chunk-FMYG6IOZ.mjs";
5
5
  import "./chunk-L5Z7F7MG.mjs";
6
- import "./chunk-MPOVGCVD.mjs";
7
- import "./chunk-DCKVBP6R.mjs";
6
+ import "./chunk-5M66X6SZ.mjs";
7
+ import "./chunk-SSONRNFB.mjs";
8
8
  import "./chunk-JVIQJFUE.mjs";
9
9
  import {
10
10
  FileManager
@@ -106,4 +106,4 @@ var removeCommand = async (name) => {
106
106
  export {
107
107
  removeCommand
108
108
  };
109
- //# sourceMappingURL=remove-P3V4V2YO.mjs.map
109
+ //# sourceMappingURL=remove-Q573N52S.mjs.map
@@ -1,20 +1,20 @@
1
1
  import {
2
2
  pullPrompts
3
- } from "./chunk-CCDYGS72.mjs";
3
+ } from "./chunk-CWXQ53NE.mjs";
4
4
  import {
5
5
  pushPrompts
6
- } from "./chunk-CIMNUH6E.mjs";
6
+ } from "./chunk-A7CF6ZGH.mjs";
7
7
  import {
8
8
  checkApiKey
9
9
  } from "./chunk-DHJKJVY7.mjs";
10
10
  import {
11
11
  PromptsApiService,
12
12
  PromptsError
13
- } from "./chunk-QD7BOTQC.mjs";
13
+ } from "./chunk-WASZSPD7.mjs";
14
14
  import "./chunk-FMYG6IOZ.mjs";
15
15
  import "./chunk-L5Z7F7MG.mjs";
16
- import "./chunk-MPOVGCVD.mjs";
17
- import "./chunk-DCKVBP6R.mjs";
16
+ import "./chunk-5M66X6SZ.mjs";
17
+ import "./chunk-SSONRNFB.mjs";
18
18
  import "./chunk-JVIQJFUE.mjs";
19
19
  import {
20
20
  ensureProjectInitialized
@@ -120,4 +120,4 @@ var syncCommand = async () => {
120
120
  export {
121
121
  syncCommand
122
122
  };
123
- //# sourceMappingURL=sync-53MALFUS.mjs.map
123
+ //# sourceMappingURL=sync-TM7JZNNW.mjs.map
@@ -1,20 +1,20 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkIJWZY7FYjs = require('./chunk-IJWZY7FY.js');
3
+ var _chunkZLCERT3Xjs = require('./chunk-ZLCERT3X.js');
4
4
 
5
5
 
6
- var _chunkSPEPSXKIjs = require('./chunk-SPEPSXKI.js');
6
+ var _chunkQLBNSGWCjs = require('./chunk-QLBNSGWC.js');
7
7
 
8
8
 
9
9
  var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
10
10
 
11
11
 
12
12
 
13
- var _chunk22J3GPSBjs = require('./chunk-22J3GPSB.js');
13
+ var _chunkPIF2RJWZjs = require('./chunk-PIF2RJWZ.js');
14
14
  require('./chunk-QNT5P6VV.js');
15
15
  require('./chunk-VCC7F6B7.js');
16
- require('./chunk-HZAW7WTJ.js');
17
- require('./chunk-44V235QR.js');
16
+ require('./chunk-NW32UPEI.js');
17
+ require('./chunk-BJUXJHMQ.js');
18
18
  require('./chunk-5LYWRKDF.js');
19
19
 
20
20
 
@@ -32,7 +32,7 @@ var syncCommand = async () => {
32
32
  const startTime = Date.now();
33
33
  try {
34
34
  _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
35
- const promptsApiService = new (0, _chunk22J3GPSBjs.PromptsApiService)();
35
+ const promptsApiService = new (0, _chunkPIF2RJWZjs.PromptsApiService)();
36
36
  await _chunkBYG3QS2Xjs.ensureProjectInitialized.call(void 0, false);
37
37
  const config = _chunkWAAQLJ67js.FileManager.loadPromptsConfig();
38
38
  const lock = _chunkWAAQLJ67js.FileManager.loadPromptsLock();
@@ -43,8 +43,8 @@ var syncCommand = async () => {
43
43
  cleaned: [],
44
44
  errors: []
45
45
  };
46
- await _chunkIJWZY7FYjs.pullPrompts.call(void 0, { config, lock, promptsApiService, result });
47
- await _chunkSPEPSXKIjs.pushPrompts.call(void 0, { config, lock, promptsApiService, result });
46
+ await _chunkZLCERT3Xjs.pullPrompts.call(void 0, { config, lock, promptsApiService, result });
47
+ await _chunkQLBNSGWCjs.pushPrompts.call(void 0, { config, lock, promptsApiService, result });
48
48
  _chunkWAAQLJ67js.FileManager.savePromptsLock(lock);
49
49
  if (result.fetched.length > 0) {
50
50
  for (const { name, version, versionSpec } of result.fetched) {
@@ -105,7 +105,7 @@ var syncCommand = async () => {
105
105
  process.exit(1);
106
106
  }
107
107
  } catch (error) {
108
- if (error instanceof _chunk22J3GPSBjs.PromptsError) {
108
+ if (error instanceof _chunkPIF2RJWZjs.PromptsError) {
109
109
  console.error(_chalk2.default.red(`Error: ${error.message}`));
110
110
  } else {
111
111
  console.error(
@@ -120,4 +120,4 @@ var syncCommand = async () => {
120
120
 
121
121
 
122
122
  exports.syncCommand = syncCommand;
123
- //# sourceMappingURL=sync-KQW7FUGI.js.map
123
+ //# sourceMappingURL=sync-YPJIIHKC.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/sync-KQW7FUGI.js","../src/cli/commands/sync.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;AC3BA,4EAAkB;AAYX,IAAM,YAAA,EAAc,MAAA,CAAA,EAAA,GAA2B;AACpD,EAAA,OAAA,CAAQ,GAAA,CAAI,4BAAqB,CAAA;AAEjC,EAAA,MAAM,UAAA,EAAY,IAAA,CAAK,GAAA,CAAI,CAAA;AAE3B,EAAA,IAAI;AAEF,IAAA,0CAAA,CAAY;AAGZ,IAAA,MAAM,kBAAA,EAAoB,IAAI,uCAAA,CAAkB,CAAA;AAGhD,IAAA,MAAM,uDAAA,KAA8B,CAAA;AAGpC,IAAA,MAAM,OAAA,EAAS,4BAAA,CAAY,iBAAA,CAAkB,CAAA;AAC7C,IAAA,MAAM,KAAA,EAAO,4BAAA,CAAY,eAAA,CAAgB,CAAA;AAEzC,IAAA,MAAM,OAAA,EAAqB;AAAA,MACzB,OAAA,EAAS,CAAC,CAAA;AAAA,MACV,MAAA,EAAQ,CAAC,CAAA;AAAA,MACT,SAAA,EAAW,CAAC,CAAA;AAAA,MACZ,OAAA,EAAS,CAAC,CAAA;AAAA,MACV,MAAA,EAAQ,CAAC;AAAA,IACX,CAAA;AAGA,IAAA,MAAM,0CAAA,EAAc,MAAA,EAAQ,IAAA,EAAM,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAG7D,IAAA,MAAM,0CAAA,EAAc,MAAA,EAAQ,IAAA,EAAM,iBAAA,EAAmB,OAAO,CAAC,CAAA;AAG7D,IAAA,4BAAA,CAAY,eAAA,CAAgB,IAAI,CAAA;AAGhC,IAAA,GAAA,CAAI,MAAA,CAAO,OAAA,CAAQ,OAAA,EAAS,CAAA,EAAG;AAC7B,MAAA,IAAA,CAAA,MAAW,EAAE,IAAA,EAAM,OAAA,EAAS,YAAY,EAAA,GAAK,MAAA,CAAO,OAAA,EAAS;AAC3D,QAAA,MAAM,UAAA,EAAY,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AACnC,QAAA,MAAM,YAAA,EAAA,CAAc,UAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,SAAA,CAAW,YAAA,EAAA,EAC3B,CAAA,EAAA,EAAK,SAAA,CAAU,YAAY,CAAA,EAAA;AAGvB,QAAA;AACA,UAAA;AACsD,YAAA;AACrC,cAAA;AACS,YAAA;AAChC,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAE8B,IAAA;AACmB,MAAA;AACV,QAAA;AAC3B,QAAA;AACA,UAAA;AACkC,YAAA;AACjB,cAAA;AACU,YAAA;AACjC,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAG+B,IAAA;AACM,MAAA;AACzB,QAAA;AACA,UAAA;AACyB,YAAA;AAC/B,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AAG8B,IAAA;AACiB,MAAA;AACoB,QAAA;AACjE,MAAA;AACF,IAAA;AAG4D,IAAA;AAEI,IAAA;AAEV,IAAA;AACQ,MAAA;AACvD,IAAA;AACY,MAAA;AACW,MAAA;AACqB,QAAA;AACtB,MAAA;AACoB,QAAA;AACnB,MAAA;AACqB,QAAA;AACtB,MAAA;AACoB,QAAA;AAEuB,MAAA;AACxE,IAAA;AAE8B,IAAA;AACd,MAAA;AAChB,IAAA;AACc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACG,MAAA;AACA,QAAA;AAGJ,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADhBgH;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/sync-KQW7FUGI.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport {\n PromptsApiService,\n PromptsError,\n} from \"@/client-sdk/services/prompts\";\nimport type { SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { pullPrompts } from \"./pull\";\nimport { pushPrompts } from \"./push\";\n\nexport const syncCommand = async (): Promise<void> => {\n console.log(\"🔄 Starting sync...\");\n\n const startTime = Date.now();\n\n try {\n // Check API key before doing anything else\n checkApiKey();\n\n // Get prompts API service\n const promptsApiService = new PromptsApiService();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized(false); // Don't prompt for .gitignore in sync\n\n // Load prompts config and lock\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n // Pull remote prompts (fetch and materialize)\n await pullPrompts({ config, lock, promptsApiService, result });\n\n // Push local prompts to API\n await pushPrompts({ config, lock, promptsApiService, result });\n\n // Save the updated lock file\n FileManager.savePromptsLock(lock);\n\n // Print individual results if there were actions\n if (result.fetched.length > 0) {\n for (const { name, version, versionSpec } of result.fetched) {\n const lockEntry = lock.prompts[name];\n const displayPath = lockEntry?.materialized\n ? `./${lockEntry.materialized}`\n : `./prompts/.materialized/${name}.prompt.yaml`;\n\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${versionSpec}`)} ${chalk.gray(\n `(version ${version})`\n )} → ${chalk.gray(displayPath)}`\n )\n );\n }\n }\n\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n // Print cleaned up files\n if (result.cleaned.length > 0) {\n for (const name of result.cleaned) {\n console.log(\n chalk.yellow(\n `✓ Cleaned ${chalk.cyan(name)} (no longer in dependencies)`\n )\n );\n }\n }\n\n // Print errors\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n // Print summary\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n const totalActions =\n result.fetched.length + result.pushed.length + result.cleaned.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Synced in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} fetched`);\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.cleaned.length > 0)\n summary.push(`${result.cleaned.length} cleaned`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Synced ${summary.join(\", \")} in ${duration}s`));\n }\n\n if (result.errors.length > 0) {\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"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/sync-YPJIIHKC.js","../src/cli/commands/sync.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/sync-YPJIIHKC.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport {\n PromptsApiService,\n PromptsError,\n} from \"@/client-sdk/services/prompts\";\nimport type { SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { pullPrompts } from \"./pull\";\nimport { pushPrompts } from \"./push\";\n\nexport const syncCommand = async (): Promise<void> => {\n console.log(\"🔄 Starting sync...\");\n\n const startTime = Date.now();\n\n try {\n // Check API key before doing anything else\n checkApiKey();\n\n // Get prompts API service\n const promptsApiService = new PromptsApiService();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized(false); // Don't prompt for .gitignore in sync\n\n // Load prompts config and lock\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n // Pull remote prompts (fetch and materialize)\n await pullPrompts({ config, lock, promptsApiService, result });\n\n // Push local prompts to API\n await pushPrompts({ config, lock, promptsApiService, result });\n\n // Save the updated lock file\n FileManager.savePromptsLock(lock);\n\n // Print individual results if there were actions\n if (result.fetched.length > 0) {\n for (const { name, version, versionSpec } of result.fetched) {\n const lockEntry = lock.prompts[name];\n const displayPath = lockEntry?.materialized\n ? `./${lockEntry.materialized}`\n : `./prompts/.materialized/${name}.prompt.yaml`;\n\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${versionSpec}`)} ${chalk.gray(\n `(version ${version})`\n )} → ${chalk.gray(displayPath)}`\n )\n );\n }\n }\n\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n // Print cleaned up files\n if (result.cleaned.length > 0) {\n for (const name of result.cleaned) {\n console.log(\n chalk.yellow(\n `✓ Cleaned ${chalk.cyan(name)} (no longer in dependencies)`\n )\n );\n }\n }\n\n // Print errors\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n // Print summary\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n const totalActions =\n result.fetched.length + result.pushed.length + result.cleaned.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Synced in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} fetched`);\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.cleaned.length > 0)\n summary.push(`${result.cleaned.length} cleaned`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Synced ${summary.join(\", \")} in ${duration}s`));\n }\n\n if (result.errors.length > 0) {\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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "langwatch",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",
@@ -104,10 +104,10 @@
104
104
  },
105
105
  "peerDependencies": {
106
106
  "@opentelemetry/api": "^1.9.0",
107
- "@ai-sdk/openai": ">=2.0.0 <3.0.0",
108
- "@langchain/core": ">=0.3.0 <1.0.0",
109
- "@langchain/langgraph": ">=0.4.0 <1.0.0",
110
- "@langchain/openai": ">=0.6.0 <1.0.0",
107
+ "@ai-sdk/openai": ">=2.0.0 <4.0.0",
108
+ "@langchain/core": ">=0.3.0 <2.0.0",
109
+ "@langchain/langgraph": ">=0.4.0 <2.0.0",
110
+ "@langchain/openai": ">=0.6.0 <2.0.0",
111
111
  "@opentelemetry/context-async-hooks": "^2.1.0",
112
112
  "@opentelemetry/context-zone": ">=1.19.0 <3.0.0",
113
113
  "@opentelemetry/sdk-node": ">=0.200.0 <1.0.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/cli/commands/push.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsApiService,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport readline from \"node:readline\";\n\n// Handle conflict resolution - show diff and ask user to choose\nconst handleConflict = async (\n promptName: string,\n conflictInfo: {\n localVersion: number;\n remoteVersion: number;\n differences: string[];\n remoteConfigData: any;\n }\n): Promise<\"local\" | \"remote\" | \"abort\"> => {\n console.log(\n chalk.yellow(`\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`)\n );\n console.log(\n chalk.gray(\n `Local version: ${conflictInfo.localVersion}, Remote version: ${conflictInfo.remoteVersion}`\n )\n );\n\n if (conflictInfo.differences.length > 0) {\n console.log(chalk.yellow(\"\\nDifferences:\"));\n conflictInfo.differences.forEach((diff) => {\n console.log(chalk.gray(` • ${diff}`));\n });\n }\n\n console.log(chalk.yellow(\"\\nOptions:\"));\n console.log(\" [l] Use local version (overwrite remote)\");\n console.log(\" [r] Use remote version (overwrite local)\");\n console.log(\" [a] Abort push for this prompt\");\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(\"Choose resolution (l/r/a): \", (answer: string) => {\n rl.close();\n const choice = answer.toLowerCase();\n if (choice === \"l\" || choice === \"local\") {\n resolve(\"local\");\n } else if (choice === \"r\" || choice === \"remote\") {\n resolve(\"remote\");\n } else {\n resolve(\"abort\");\n }\n });\n });\n};\n\n/**\n * Core push logic: pushes local prompts to the server.\n * Returns the result and mutates the lock object in place.\n */\nexport const pushPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n}): Promise<void> => {\n const localFileRefs = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n return typeof dependency === \"string\" && dependency.startsWith(\"file:\");\n }\n );\n\n if (localFileRefs.length > 0) {\n const pushSpinner = ora(\n `Pushing ${localFileRefs.length} local prompts...`\n ).start();\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Build outputs based on response_format if present\n const responseFormat = (localConfig as any).response_format;\n let outputs: ConfigData[\"outputs\"] = [{ identifier: \"output\", type: \"str\" }];\n if (responseFormat?.schema) {\n outputs = [\n {\n identifier: responseFormat.name ?? \"output\",\n type: \"json_schema\",\n json_schema: responseFormat.schema,\n },\n ];\n }\n\n const configData: ConfigData = {\n model: localConfig.model,\n prompt: PromptConverter.extractSystemPrompt(localConfig.messages),\n messages: PromptConverter.filterNonSystemMessages(\n localConfig.messages\n ) as Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n temperature: localConfig.modelParameters?.temperature,\n max_tokens: localConfig.modelParameters?.max_tokens,\n inputs: [{ identifier: \"input\", type: \"str\" }],\n outputs,\n // response_format is derived from outputs on the server side\n };\n\n const syncResult = await promptsApiService.sync({\n name: promptName,\n configData,\n localVersion: currentVersion,\n commitMessage: `Synced from local file: ${path.basename(filePath)}`,\n });\n\n const relativePath = path.relative(process.cwd(), filePath);\n\n let conflictResolution: \"local\" | \"remote\" | \"abort\" | null = null;\n if (syncResult.action === \"conflict\") {\n pushSpinner.stop();\n conflictResolution = await handleConflict(\n promptName,\n syncResult.conflictInfo!\n );\n if (conflictResolution === \"abort\") {\n result.errors.push({\n name: promptName,\n error: \"Push aborted due to conflict\",\n });\n continue;\n }\n\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n const remoteConfig = {\n model: syncResult.conflictInfo.remoteConfigData.model,\n modelParameters: {\n temperature:\n syncResult.conflictInfo.remoteConfigData.temperature,\n max_tokens:\n syncResult.conflictInfo.remoteConfigData.max_tokens,\n },\n messages: [\n {\n role: \"system\" as const,\n content: syncResult.conflictInfo.remoteConfigData.prompt,\n },\n ...(syncResult.conflictInfo.remoteConfigData.messages ?? []),\n ],\n };\n\n const yamlContent = yaml.dump(remoteConfig, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n });\n\n fs.writeFileSync(filePath, yamlContent);\n }\n\n pushSpinner.start();\n }\n\n if (syncResult.prompt) {\n lock.prompts[promptName] = {\n version: syncResult.prompt.version,\n versionId: syncResult.prompt.versionId,\n materialized: filePath,\n };\n } else if (syncResult.action === \"conflict\") {\n const remoteVersion = syncResult.conflictInfo?.remoteVersion ?? 0;\n if (conflictResolution === \"remote\") {\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\",\n materialized: filePath,\n };\n } else {\n const formattedConfig = PromptConverter.fromLocalToApiFormat(localConfig);\n const updatedPrompt = await promptsApiService.update(promptName, {\n ...formattedConfig,\n commitMessage: `Updated via CLI: synced from local file`\n });\n lock.prompts[promptName] = {\n version: updatedPrompt.version,\n versionId: updatedPrompt.versionId,\n materialized: filePath,\n };\n }\n }\n\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\";\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\",\n });\n } else {\n actionText = \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1,\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n actionText = \"Up-to-date\";\n result.unchanged.push(promptName);\n } else {\n const actionMap: Record<SyncAction, string> = {\n created: \"Created\",\n updated: \"Updated\",\n conflict: \"Conflict resolved\",\n up_to_date: \"Up to date\",\n };\n actionText = actionMap[syncResult.action as SyncAction] || \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: syncResult.prompt?.version ?? 0,\n });\n }\n\n pushSpinner.text = `${actionText} ${chalk.cyan(\n promptName\n )} ${chalk.gray(\n `(version ${\n syncResult.prompt?.version ??\n syncResult.conflictInfo?.remoteVersion ??\n \"unknown\"\n })`\n )} ${conflictResolution === \"remote\" ? \"to\" : \"from\"} ${chalk.gray(\n relativePath\n )}`;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name: promptName, error: errorMessage });\n }\n }\n\n pushSpinner.stop();\n }\n\n // Check for orphan local prompt files and show helpful warnings\n const discoveredLocalFiles = FileManager.getLocalPromptFiles();\n const orphanFiles = discoveredLocalFiles.filter((filePath) => {\n const promptName = FileManager.promptNameFromPath(filePath);\n return !config.prompts[promptName];\n });\n\n if (orphanFiles.length > 0) {\n console.log(\n chalk.yellow(\n `\\n⚠ Found ${orphanFiles.length} orphan prompt file${\n orphanFiles.length > 1 ? \"s\" : \"\"\n }:`\n )\n );\n\n for (const filePath of orphanFiles) {\n const promptName = FileManager.promptNameFromPath(filePath);\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.yellow(` ${relativePath}`));\n console.log(\n chalk.gray(\n ` Add to prompts.json: \"${promptName}\": \"file:${relativePath}\"`\n )\n );\n }\n\n console.log(\n chalk.gray(\n `\\nTip: Add these to prompts.json to include them in push operations.`\n )\n );\n }\n};\n\nconst printPushResults = ({\n result,\n duration,\n}: {\n result: SyncResult;\n duration: string;\n}): void => {\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n if (result.fetched.length > 0) {\n for (const { name, version } of result.fetched) {\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} (resolved conflict with remote)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.pushed.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pushed in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} pulled (conflict resolution)`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pushed ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pushCommand = async (): Promise<void> => {\n console.log(\"⬆️ Pushing local prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pushPrompts({ config, lock, promptsApiService, result });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPushResults({ result, duration });\n\n if (result.errors.length > 0) {\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 +0,0 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-SPEPSXKI.js","../src/cli/commands/push.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-SPEPSXKI.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsApiService,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport readline from \"node:readline\";\n\n// Handle conflict resolution - show diff and ask user to choose\nconst handleConflict = async (\n promptName: string,\n conflictInfo: {\n localVersion: number;\n remoteVersion: number;\n differences: string[];\n remoteConfigData: any;\n }\n): Promise<\"local\" | \"remote\" | \"abort\"> => {\n console.log(\n chalk.yellow(`\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`)\n );\n console.log(\n chalk.gray(\n `Local version: ${conflictInfo.localVersion}, Remote version: ${conflictInfo.remoteVersion}`\n )\n );\n\n if (conflictInfo.differences.length > 0) {\n console.log(chalk.yellow(\"\\nDifferences:\"));\n conflictInfo.differences.forEach((diff) => {\n console.log(chalk.gray(` • ${diff}`));\n });\n }\n\n console.log(chalk.yellow(\"\\nOptions:\"));\n console.log(\" [l] Use local version (overwrite remote)\");\n console.log(\" [r] Use remote version (overwrite local)\");\n console.log(\" [a] Abort push for this prompt\");\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(\"Choose resolution (l/r/a): \", (answer: string) => {\n rl.close();\n const choice = answer.toLowerCase();\n if (choice === \"l\" || choice === \"local\") {\n resolve(\"local\");\n } else if (choice === \"r\" || choice === \"remote\") {\n resolve(\"remote\");\n } else {\n resolve(\"abort\");\n }\n });\n });\n};\n\n/**\n * Core push logic: pushes local prompts to the server.\n * Returns the result and mutates the lock object in place.\n */\nexport const pushPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n}): Promise<void> => {\n const localFileRefs = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n return typeof dependency === \"string\" && dependency.startsWith(\"file:\");\n }\n );\n\n if (localFileRefs.length > 0) {\n const pushSpinner = ora(\n `Pushing ${localFileRefs.length} local prompts...`\n ).start();\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Build outputs based on response_format if present\n const responseFormat = (localConfig as any).response_format;\n let outputs: ConfigData[\"outputs\"] = [{ identifier: \"output\", type: \"str\" }];\n if (responseFormat?.schema) {\n outputs = [\n {\n identifier: responseFormat.name ?? \"output\",\n type: \"json_schema\",\n json_schema: responseFormat.schema,\n },\n ];\n }\n\n const configData: ConfigData = {\n model: localConfig.model,\n prompt: PromptConverter.extractSystemPrompt(localConfig.messages),\n messages: PromptConverter.filterNonSystemMessages(\n localConfig.messages\n ) as Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n temperature: localConfig.modelParameters?.temperature,\n max_tokens: localConfig.modelParameters?.max_tokens,\n inputs: [{ identifier: \"input\", type: \"str\" }],\n outputs,\n // response_format is derived from outputs on the server side\n };\n\n const syncResult = await promptsApiService.sync({\n name: promptName,\n configData,\n localVersion: currentVersion,\n commitMessage: `Synced from local file: ${path.basename(filePath)}`,\n });\n\n const relativePath = path.relative(process.cwd(), filePath);\n\n let conflictResolution: \"local\" | \"remote\" | \"abort\" | null = null;\n if (syncResult.action === \"conflict\") {\n pushSpinner.stop();\n conflictResolution = await handleConflict(\n promptName,\n syncResult.conflictInfo!\n );\n if (conflictResolution === \"abort\") {\n result.errors.push({\n name: promptName,\n error: \"Push aborted due to conflict\",\n });\n continue;\n }\n\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n const remoteConfig = {\n model: syncResult.conflictInfo.remoteConfigData.model,\n modelParameters: {\n temperature:\n syncResult.conflictInfo.remoteConfigData.temperature,\n max_tokens:\n syncResult.conflictInfo.remoteConfigData.max_tokens,\n },\n messages: [\n {\n role: \"system\" as const,\n content: syncResult.conflictInfo.remoteConfigData.prompt,\n },\n ...(syncResult.conflictInfo.remoteConfigData.messages ?? []),\n ],\n };\n\n const yamlContent = yaml.dump(remoteConfig, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n });\n\n fs.writeFileSync(filePath, yamlContent);\n }\n\n pushSpinner.start();\n }\n\n if (syncResult.prompt) {\n lock.prompts[promptName] = {\n version: syncResult.prompt.version,\n versionId: syncResult.prompt.versionId,\n materialized: filePath,\n };\n } else if (syncResult.action === \"conflict\") {\n const remoteVersion = syncResult.conflictInfo?.remoteVersion ?? 0;\n if (conflictResolution === \"remote\") {\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\",\n materialized: filePath,\n };\n } else {\n const formattedConfig = PromptConverter.fromLocalToApiFormat(localConfig);\n const updatedPrompt = await promptsApiService.update(promptName, {\n ...formattedConfig,\n commitMessage: `Updated via CLI: synced from local file`\n });\n lock.prompts[promptName] = {\n version: updatedPrompt.version,\n versionId: updatedPrompt.versionId,\n materialized: filePath,\n };\n }\n }\n\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\";\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\",\n });\n } else {\n actionText = \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1,\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n actionText = \"Up-to-date\";\n result.unchanged.push(promptName);\n } else {\n const actionMap: Record<SyncAction, string> = {\n created: \"Created\",\n updated: \"Updated\",\n conflict: \"Conflict resolved\",\n up_to_date: \"Up to date\",\n };\n actionText = actionMap[syncResult.action as SyncAction] || \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: syncResult.prompt?.version ?? 0,\n });\n }\n\n pushSpinner.text = `${actionText} ${chalk.cyan(\n promptName\n )} ${chalk.gray(\n `(version ${\n syncResult.prompt?.version ??\n syncResult.conflictInfo?.remoteVersion ??\n \"unknown\"\n })`\n )} ${conflictResolution === \"remote\" ? \"to\" : \"from\"} ${chalk.gray(\n relativePath\n )}`;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name: promptName, error: errorMessage });\n }\n }\n\n pushSpinner.stop();\n }\n\n // Check for orphan local prompt files and show helpful warnings\n const discoveredLocalFiles = FileManager.getLocalPromptFiles();\n const orphanFiles = discoveredLocalFiles.filter((filePath) => {\n const promptName = FileManager.promptNameFromPath(filePath);\n return !config.prompts[promptName];\n });\n\n if (orphanFiles.length > 0) {\n console.log(\n chalk.yellow(\n `\\n⚠ Found ${orphanFiles.length} orphan prompt file${\n orphanFiles.length > 1 ? \"s\" : \"\"\n }:`\n )\n );\n\n for (const filePath of orphanFiles) {\n const promptName = FileManager.promptNameFromPath(filePath);\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.yellow(` ${relativePath}`));\n console.log(\n chalk.gray(\n ` Add to prompts.json: \"${promptName}\": \"file:${relativePath}\"`\n )\n );\n }\n\n console.log(\n chalk.gray(\n `\\nTip: Add these to prompts.json to include them in push operations.`\n )\n );\n }\n};\n\nconst printPushResults = ({\n result,\n duration,\n}: {\n result: SyncResult;\n duration: string;\n}): void => {\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n if (result.fetched.length > 0) {\n for (const { name, version } of result.fetched) {\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} (resolved conflict with remote)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.pushed.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pushed in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} pulled (conflict resolution)`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pushed ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pushCommand = async (): Promise<void> => {\n console.log(\"⬆️ Pushing local prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pushPrompts({ config, lock, promptsApiService, result });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPushResults({ result, duration });\n\n if (result.errors.length > 0) {\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"]}