langwatch 0.4.1 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/dist/{add-RGWB3264.js → add-4WXEWG5H.js} +63 -34
  2. package/dist/add-4WXEWG5H.js.map +1 -0
  3. package/dist/{add-WLUMK5VQ.mjs → add-D2WVVKIP.mjs} +48 -19
  4. package/dist/add-D2WVVKIP.mjs.map +1 -0
  5. package/dist/{chunk-K64Y6YUG.js → chunk-7OZKH5K2.js} +59 -19
  6. package/dist/chunk-7OZKH5K2.js.map +1 -0
  7. package/dist/{chunk-HA3LI5IK.js → chunk-AZHZ4NB4.js} +1 -1
  8. package/dist/{chunk-HA3LI5IK.js.map → chunk-AZHZ4NB4.js.map} +1 -1
  9. package/dist/{chunk-4NRLVT2U.mjs → chunk-BTBSMJTY.mjs} +1 -1
  10. package/dist/chunk-BTBSMJTY.mjs.map +1 -0
  11. package/dist/{chunk-D2CSG4SJ.js → chunk-CAZONSXV.js} +5 -5
  12. package/dist/{chunk-D2CSG4SJ.js.map → chunk-CAZONSXV.js.map} +1 -1
  13. package/dist/{chunk-HUI45ULC.mjs → chunk-CKVDNVFL.mjs} +3 -3
  14. package/dist/{chunk-ECUXLXFT.mjs → chunk-DLJO7AK5.mjs} +53 -13
  15. package/dist/chunk-DLJO7AK5.mjs.map +1 -0
  16. package/dist/{chunk-AZELEDOV.js → chunk-DSIQSULK.js} +15 -18
  17. package/dist/chunk-DSIQSULK.js.map +1 -0
  18. package/dist/{chunk-M4VUHTT2.js → chunk-ECOC36EA.js} +11 -11
  19. package/dist/chunk-ECOC36EA.js.map +1 -0
  20. package/dist/{chunk-IZ2U3ABC.mjs → chunk-H5PON53W.mjs} +67 -127
  21. package/dist/chunk-H5PON53W.mjs.map +1 -0
  22. package/dist/{chunk-4TF2O2TH.js → chunk-P4SQTYGN.js} +14 -14
  23. package/dist/{chunk-4TF2O2TH.js.map → chunk-P4SQTYGN.js.map} +1 -1
  24. package/dist/{chunk-DEVJ7BPE.js → chunk-QCYYSMCU.js} +2 -2
  25. package/dist/chunk-QCYYSMCU.js.map +1 -0
  26. package/dist/{chunk-EJWJXTPU.mjs → chunk-QZGTM76F.mjs} +8 -8
  27. package/dist/chunk-QZGTM76F.mjs.map +1 -0
  28. package/dist/{chunk-SGNJDRCT.js → chunk-R6FBJN7K.js} +22 -7
  29. package/dist/chunk-R6FBJN7K.js.map +1 -0
  30. package/dist/{chunk-5N5BUR2Z.js → chunk-SVXNUWZI.js} +68 -128
  31. package/dist/chunk-SVXNUWZI.js.map +1 -0
  32. package/dist/{chunk-SYMZPWZE.mjs → chunk-V5M3HUBV.mjs} +22 -7
  33. package/dist/chunk-V5M3HUBV.mjs.map +1 -0
  34. package/dist/{chunk-4ILMGMAP.mjs → chunk-YEGQXDTE.mjs} +5 -8
  35. package/dist/{chunk-4ILMGMAP.mjs.map → chunk-YEGQXDTE.mjs.map} +1 -1
  36. package/dist/{chunk-FQSWUK5N.mjs → chunk-YKFTFYKK.mjs} +2 -2
  37. package/dist/chunk-YKFTFYKK.mjs.map +1 -0
  38. package/dist/{chunk-ZJZ3MIWE.mjs → chunk-ZIULPOMQ.mjs} +2 -2
  39. package/dist/cli/index.js +9 -9
  40. package/dist/cli/index.mjs +8 -8
  41. package/dist/{create-7K2CC4KQ.js → create-4LG4N2A4.js} +27 -16
  42. package/dist/create-4LG4N2A4.js.map +1 -0
  43. package/dist/{create-MK7NEGCM.mjs → create-OQEMO4MU.mjs} +22 -11
  44. package/dist/create-OQEMO4MU.mjs.map +1 -0
  45. package/dist/{implementation-CzemP9jY.d.ts → implementation-BIlL6-SW.d.ts} +1 -1
  46. package/dist/{implementation-C4lvooSg.d.mts → implementation-fAgqv8OM.d.mts} +1 -1
  47. package/dist/index.d.mts +2 -2
  48. package/dist/index.d.ts +2 -2
  49. package/dist/index.js +7 -7
  50. package/dist/index.mjs +6 -6
  51. package/dist/init-EKNL2SQE.js +16 -0
  52. package/dist/{init-GDKJICSS.js.map → init-EKNL2SQE.js.map} +1 -1
  53. package/dist/{init-RINSTP4L.mjs → init-MQXXHCNT.mjs} +5 -5
  54. package/dist/{list-DBUK47MA.js → list-GIAXAAH5.js} +10 -10
  55. package/dist/list-GIAXAAH5.js.map +1 -0
  56. package/dist/{list-ZOMRKOBV.mjs → list-PFWV7IU6.mjs} +7 -7
  57. package/dist/list-PFWV7IU6.mjs.map +1 -0
  58. package/dist/{login-A7LEPNBR.js → login-3STX2FAO.js} +3 -3
  59. package/dist/{login-A7LEPNBR.js.map → login-3STX2FAO.js.map} +1 -1
  60. package/dist/{login-ULPHWIAX.mjs → login-BYLXS23I.mjs} +2 -2
  61. package/dist/observability-sdk/index.d.mts +3 -3
  62. package/dist/observability-sdk/index.d.ts +3 -3
  63. package/dist/observability-sdk/index.js +4 -4
  64. package/dist/observability-sdk/index.mjs +3 -3
  65. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
  66. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
  67. package/dist/observability-sdk/instrumentation/langchain/index.js +3 -3
  68. package/dist/observability-sdk/instrumentation/langchain/index.mjs +1 -1
  69. package/dist/observability-sdk/setup/node/index.d.mts +1 -1
  70. package/dist/observability-sdk/setup/node/index.d.ts +1 -1
  71. package/dist/observability-sdk/setup/node/index.js +10 -10
  72. package/dist/observability-sdk/setup/node/index.mjs +2 -2
  73. package/dist/{remove-RAJBGHQQ.mjs → remove-FTF3EBYV.mjs} +8 -8
  74. package/dist/{remove-ODTJLFWR.js → remove-U3PILQDV.js} +16 -16
  75. package/dist/{remove-ODTJLFWR.js.map → remove-U3PILQDV.js.map} +1 -1
  76. package/dist/{sync-2IXPWN64.mjs → sync-FOW7DHAH.mjs} +27 -19
  77. package/dist/sync-FOW7DHAH.mjs.map +1 -0
  78. package/dist/{sync-PBOL5ODF.js → sync-T3T22GVZ.js} +45 -37
  79. package/dist/sync-T3T22GVZ.js.map +1 -0
  80. package/dist/{types-C9k5gGhU.d.ts → types-DyUmlaDx.d.ts} +973 -533
  81. package/dist/{types-1q5wIYP5.d.mts → types-jrEEZt9d.d.mts} +973 -533
  82. package/package.json +16 -14
  83. package/dist/add-RGWB3264.js.map +0 -1
  84. package/dist/add-WLUMK5VQ.mjs.map +0 -1
  85. package/dist/chunk-4NRLVT2U.mjs.map +0 -1
  86. package/dist/chunk-5N5BUR2Z.js.map +0 -1
  87. package/dist/chunk-AZELEDOV.js.map +0 -1
  88. package/dist/chunk-DEVJ7BPE.js.map +0 -1
  89. package/dist/chunk-ECUXLXFT.mjs.map +0 -1
  90. package/dist/chunk-EJWJXTPU.mjs.map +0 -1
  91. package/dist/chunk-FQSWUK5N.mjs.map +0 -1
  92. package/dist/chunk-IZ2U3ABC.mjs.map +0 -1
  93. package/dist/chunk-K64Y6YUG.js.map +0 -1
  94. package/dist/chunk-M4VUHTT2.js.map +0 -1
  95. package/dist/chunk-SGNJDRCT.js.map +0 -1
  96. package/dist/chunk-SYMZPWZE.mjs.map +0 -1
  97. package/dist/create-7K2CC4KQ.js.map +0 -1
  98. package/dist/create-MK7NEGCM.mjs.map +0 -1
  99. package/dist/init-GDKJICSS.js +0 -16
  100. package/dist/list-DBUK47MA.js.map +0 -1
  101. package/dist/list-ZOMRKOBV.mjs.map +0 -1
  102. package/dist/sync-2IXPWN64.mjs.map +0 -1
  103. package/dist/sync-PBOL5ODF.js.map +0 -1
  104. /package/dist/{chunk-HUI45ULC.mjs.map → chunk-CKVDNVFL.mjs.map} +0 -0
  105. /package/dist/{chunk-ZJZ3MIWE.mjs.map → chunk-ZIULPOMQ.mjs.map} +0 -0
  106. /package/dist/{init-RINSTP4L.mjs.map → init-MQXXHCNT.mjs.map} +0 -0
  107. /package/dist/{login-ULPHWIAX.mjs.map → login-BYLXS23I.mjs.map} +0 -0
  108. /package/dist/{remove-RAJBGHQQ.mjs.map → remove-FTF3EBYV.mjs.map} +0 -0
@@ -3,25 +3,25 @@
3
3
  var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
4
4
 
5
5
 
6
- var _chunkAZELEDOVjs = require('./chunk-AZELEDOV.js');
6
+ var _chunkDSIQSULKjs = require('./chunk-DSIQSULK.js');
7
7
 
8
8
 
9
- var _chunk5N5BUR2Zjs = require('./chunk-5N5BUR2Z.js');
9
+ var _chunkSVXNUWZIjs = require('./chunk-SVXNUWZI.js');
10
10
  require('./chunk-YH5TIVK2.js');
11
- require('./chunk-M4VUHTT2.js');
12
- require('./chunk-4TF2O2TH.js');
13
- require('./chunk-DEVJ7BPE.js');
11
+ require('./chunk-ECOC36EA.js');
12
+ require('./chunk-P4SQTYGN.js');
13
+ require('./chunk-QCYYSMCU.js');
14
14
  require('./chunk-DISMHYXC.js');
15
15
 
16
16
 
17
- var _chunkK64Y6YUGjs = require('./chunk-K64Y6YUG.js');
17
+ var _chunk7OZKH5K2js = require('./chunk-7OZKH5K2.js');
18
18
 
19
19
 
20
- var _chunkD2CSG4SJjs = require('./chunk-D2CSG4SJ.js');
20
+ var _chunkCAZONSXVjs = require('./chunk-CAZONSXV.js');
21
21
 
22
22
 
23
- var _chunkSGNJDRCTjs = require('./chunk-SGNJDRCT.js');
24
- require('./chunk-HA3LI5IK.js');
23
+ var _chunkR6FBJN7Kjs = require('./chunk-R6FBJN7K.js');
24
+ require('./chunk-AZHZ4NB4.js');
25
25
  require('./chunk-OXBO24RB.js');
26
26
 
27
27
  // src/cli/commands/add.ts
@@ -35,16 +35,18 @@ var addLocalFile = async (name, localFilePath) => {
35
35
  process.exit(1);
36
36
  }
37
37
  if (!localFilePath.endsWith(".prompt.yaml")) {
38
- console.error(_chalk2.default.red(`Error: Local file must have .prompt.yaml extension`));
38
+ console.error(
39
+ _chalk2.default.red(`Error: Local file must have .prompt.yaml extension`)
40
+ );
39
41
  process.exit(1);
40
42
  }
41
43
  try {
42
- const config = _chunkD2CSG4SJjs.FileManager.loadLocalPrompt(localFilePath);
43
- await _chunkK64Y6YUGjs.ensureProjectInitialized.call(void 0, );
44
- const promptsConfig = _chunkD2CSG4SJjs.FileManager.loadPromptsConfig();
44
+ _chunkCAZONSXVjs.FileManager.loadLocalPrompt(localFilePath);
45
+ await _chunk7OZKH5K2js.ensureProjectInitialized.call(void 0, );
46
+ const promptsConfig = _chunkCAZONSXVjs.FileManager.loadPromptsConfig();
45
47
  promptsConfig.prompts[name] = `file:${localFilePath}`;
46
- _chunkD2CSG4SJjs.FileManager.savePromptsConfig(promptsConfig);
47
- const lock = _chunkD2CSG4SJjs.FileManager.loadPromptsLock();
48
+ _chunkCAZONSXVjs.FileManager.savePromptsConfig(promptsConfig);
49
+ const lock = _chunkCAZONSXVjs.FileManager.loadPromptsLock();
48
50
  lock.prompts[name] = {
49
51
  version: 0,
50
52
  // Local files start at version 0
@@ -52,11 +54,19 @@ var addLocalFile = async (name, localFilePath) => {
52
54
  materialized: localFilePath
53
55
  // Store the original file path
54
56
  };
55
- _chunkD2CSG4SJjs.FileManager.savePromptsLock(lock);
56
- console.log(_chalk2.default.green(`\u2713 Added local prompt: ${_chalk2.default.cyan(name)} \u2192 ${_chalk2.default.gray(localFilePath)}`));
57
+ _chunkCAZONSXVjs.FileManager.savePromptsLock(lock);
58
+ console.log(
59
+ _chalk2.default.green(
60
+ `\u2713 Added local prompt: ${_chalk2.default.cyan(name)} \u2192 ${_chalk2.default.gray(
61
+ localFilePath
62
+ )}`
63
+ )
64
+ );
57
65
  } catch (error) {
58
66
  console.error(_chalk2.default.red("Error loading local prompt file:"));
59
- console.error(_chalk2.default.red(error instanceof Error ? error.message : String(error)));
67
+ console.error(
68
+ _chalk2.default.red(error instanceof Error ? error.message : String(error))
69
+ );
60
70
  process.exit(1);
61
71
  }
62
72
  };
@@ -72,9 +82,11 @@ var addCommand = async (name, options) => {
72
82
  return;
73
83
  }
74
84
  _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
75
- const langwatch = new (0, _chunkAZELEDOVjs.LangWatch)();
85
+ const langwatch = new (0, _chunkDSIQSULKjs.LangWatch)();
76
86
  const version = (_a = options.version) != null ? _a : "latest";
77
- const spinner = _ora2.default.call(void 0, `Adding ${_chalk2.default.cyan(`${name}@${version}`)}...`).start();
87
+ const spinner = _ora2.default.call(void 0,
88
+ `Adding ${_chalk2.default.cyan(`${name}@${version}`)}...`
89
+ ).start();
78
90
  try {
79
91
  const prompt = await langwatch.prompts.get(name);
80
92
  if (!prompt) {
@@ -83,34 +95,51 @@ var addCommand = async (name, options) => {
83
95
  process.exit(1);
84
96
  }
85
97
  spinner.stop();
86
- await _chunkK64Y6YUGjs.ensureProjectInitialized.call(void 0, );
98
+ await _chunk7OZKH5K2js.ensureProjectInitialized.call(void 0, );
87
99
  spinner.start(`Adding ${_chalk2.default.cyan(`${name}@${version}`)}...`);
88
- const materializedPrompt = _chunkSGNJDRCTjs.PromptConverter.fromApiToMaterialized(prompt);
89
- const savedPath = _chunkD2CSG4SJjs.FileManager.saveMaterializedPrompt(name, materializedPrompt);
100
+ const materializedPrompt = _chunkR6FBJN7Kjs.PromptConverter.fromApiToMaterialized(prompt);
101
+ const savedPath = _chunkCAZONSXVjs.FileManager.saveMaterializedPrompt(
102
+ name,
103
+ materializedPrompt
104
+ );
90
105
  const relativePath = path.relative(process.cwd(), savedPath);
91
- const config = _chunkD2CSG4SJjs.FileManager.loadPromptsConfig();
92
- const lock = _chunkD2CSG4SJjs.FileManager.loadPromptsLock();
106
+ const config = _chunkCAZONSXVjs.FileManager.loadPromptsConfig();
107
+ const lock = _chunkCAZONSXVjs.FileManager.loadPromptsLock();
93
108
  config.prompts[name] = version;
94
- _chunkD2CSG4SJjs.FileManager.updateLockEntry(lock, name, materializedPrompt, savedPath);
95
- _chunkD2CSG4SJjs.FileManager.savePromptsConfig(config);
96
- _chunkD2CSG4SJjs.FileManager.savePromptsLock(lock);
109
+ _chunkCAZONSXVjs.FileManager.updateLockEntry(lock, name, materializedPrompt, savedPath);
110
+ _chunkCAZONSXVjs.FileManager.savePromptsConfig(config);
111
+ _chunkCAZONSXVjs.FileManager.savePromptsLock(lock);
97
112
  spinner.succeed();
98
113
  const displayPath = relativePath.startsWith("./") ? relativePath : `./${relativePath}`;
99
- console.log(_chalk2.default.green(`\u2713 Pulled ${_chalk2.default.cyan(`${name}@${version}`)} ${_chalk2.default.gray(`(version ${prompt.version})`)} \u2192 ${_chalk2.default.gray(displayPath)}`));
114
+ console.log(
115
+ _chalk2.default.green(
116
+ `\u2713 Pulled ${_chalk2.default.cyan(`${name}@${version}`)} ${_chalk2.default.gray(
117
+ `(version ${prompt.version})`
118
+ )} \u2192 ${_chalk2.default.gray(displayPath)}`
119
+ )
120
+ );
100
121
  } catch (error) {
101
122
  spinner.fail();
102
- if (error instanceof _chunk5N5BUR2Zjs.PromptsError) {
123
+ if (error instanceof _chunkSVXNUWZIjs.PromptsError) {
103
124
  console.error(_chalk2.default.red(`Error: ${error.message}`));
104
125
  } else {
105
- console.error(_chalk2.default.red(`Error adding prompt: ${error instanceof Error ? error.message : "Unknown error"}`));
126
+ console.error(
127
+ _chalk2.default.red(
128
+ `Error adding prompt: ${error instanceof Error ? error.message : "Unknown error"}`
129
+ )
130
+ );
106
131
  }
107
132
  process.exit(1);
108
133
  }
109
134
  } catch (error) {
110
- if (error instanceof _chunk5N5BUR2Zjs.PromptsError) {
135
+ if (error instanceof _chunkSVXNUWZIjs.PromptsError) {
111
136
  console.error(_chalk2.default.red(`Error: ${error.message}`));
112
137
  } else {
113
- console.error(_chalk2.default.red(`Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`));
138
+ console.error(
139
+ _chalk2.default.red(
140
+ `Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`
141
+ )
142
+ );
114
143
  }
115
144
  process.exit(1);
116
145
  }
@@ -118,4 +147,4 @@ var addCommand = async (name, options) => {
118
147
 
119
148
 
120
149
  exports.addCommand = addCommand;
121
- //# sourceMappingURL=add-RGWB3264.js.map
150
+ //# sourceMappingURL=add-4WXEWG5H.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/add-4WXEWG5H.js","../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;AC1BA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAahB,IAAM,aAAA,EAAe,MAAA,CACnB,IAAA,EACA,aAAA,EAAA,GACkB;AAElB,EAAA,GAAA,CAAI,CAAI,EAAA,CAAA,UAAA,CAAW,aAAa,CAAA,EAAG;AACjC,IAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,CAAA,6BAAA,EAAgC,aAAa,CAAA,CAAA;AACvD,IAAA;AAChB,EAAA;AAE6C,EAAA;AACnC,IAAA;AACwD,MAAA;AAChE,IAAA;AACc,IAAA;AAChB,EAAA;AAGI,EAAA;AACuC,IAAA;AAGV,IAAA;AAGqB,IAAA;AACD,IAAA;AACR,IAAA;AAGF,IAAA;AACpB,IAAA;AACV,MAAA;AAAA;AACE,MAAA;AACG,MAAA;AAAA;AAChB,IAAA;AACgC,IAAA;AAExB,IAAA;AACA,MAAA;AACiD,QAAA;AACnD,UAAA;AACD,QAAA;AACH,MAAA;AACF,IAAA;AACc,EAAA;AAC6C,IAAA;AACnD,IAAA;AAC0D,MAAA;AAClE,IAAA;AACc,IAAA;AAChB,EAAA;AACF;AAKoB;AAzEpB,EAAA;AA0EM,EAAA;AAE+B,IAAA;AAC8B,MAAA;AAC/C,MAAA;AAChB,IAAA;AAGuB,IAAA;AACqB,MAAA;AAC1C,MAAA;AACF,IAAA;AAGY,IAAA;AAEoB,IAAA;AACG,IAAA;AAGnB,IAAA;AAC4B,MAAA;AACpC,IAAA;AAEJ,IAAA;AAE6C,MAAA;AAElC,MAAA;AACE,QAAA;AAC+C,QAAA;AAC9C,QAAA;AAChB,MAAA;AAGa,MAAA;AAGkB,MAAA;AAG8B,MAAA;AAGI,MAAA;AACnC,MAAA;AAC5B,QAAA;AACA,QAAA;AACF,MAAA;AAC2D,MAAA;AAGd,MAAA;AACJ,MAAA;AAElB,MAAA;AACqC,MAAA;AAGxB,MAAA;AACJ,MAAA;AAEhB,MAAA;AAKZ,MAAA;AACI,MAAA;AACA,QAAA;AACkD,UAAA;AAC1B,YAAA;AACE,UAAA;AAChC,QAAA;AACF,MAAA;AACc,IAAA;AACD,MAAA;AACsB,MAAA;AACiB,QAAA;AAC7C,MAAA;AACG,QAAA;AACA,UAAA;AAE6B,YAAA;AAEnC,UAAA;AACF,QAAA;AACF,MAAA;AACc,MAAA;AAChB,IAAA;AACc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACG,MAAA;AACA,QAAA;AAEuC,UAAA;AAE7C,QAAA;AACF,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADhC0E;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/add-4WXEWG5H.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\";\nimport { PromptConverter } from \"../utils/promptConverter\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { LangWatch } from \"@/client-sdk\";\n\ninterface AddOptions {\n version?: string;\n localFile?: string;\n}\n\nconst addLocalFile = async (\n name: string,\n localFilePath: string,\n): Promise<void> => {\n // Validate that the file exists and has the right extension\n if (!fs.existsSync(localFilePath)) {\n console.error(chalk.red(`Error: Local file not found: ${localFilePath}`));\n process.exit(1);\n }\n\n if (!localFilePath.endsWith(\".prompt.yaml\")) {\n console.error(\n chalk.red(`Error: Local file must have .prompt.yaml extension`),\n );\n process.exit(1);\n }\n\n // Load and validate the YAML file\n try {\n FileManager.loadLocalPrompt(localFilePath);\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n promptsConfig.prompts[name] = `file:${localFilePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: localFilePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n console.log(\n chalk.green(\n `✓ Added local prompt: ${chalk.cyan(name)} → ${chalk.gray(\n localFilePath,\n )}`,\n ),\n );\n } catch (error) {\n console.error(chalk.red(\"Error loading local prompt file:\"));\n console.error(\n chalk.red(error instanceof Error ? error.message : String(error)),\n );\n process.exit(1);\n }\n};\n\nexport const addCommand = async (\n name: string,\n options: AddOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Handle local file addition\n if (options.localFile) {\n await addLocalFile(name, options.localFile);\n return;\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n const langwatch = new LangWatch();\n const version = options.version ?? \"latest\";\n\n // Fetch and materialize the prompt (like sync does for individual prompts)\n const spinner = ora(\n `Adding ${chalk.cyan(`${name}@${version}`)}...`,\n ).start();\n\n try {\n // Fetch the prompt from the API\n const prompt = await langwatch.prompts.get(name);\n\n if (!prompt) {\n spinner.fail();\n console.error(chalk.red(`Error: Prompt \"${name}\" not found`));\n process.exit(1);\n }\n\n // Stop spinner before any user input prompts\n spinner.stop();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized();\n\n // Restart spinner for the actual work\n spinner.start(`Adding ${chalk.cyan(`${name}@${version}`)}...`);\n\n // Convert to MaterializedPrompt format and save\n const materializedPrompt = PromptConverter.fromApiToMaterialized(prompt);\n const savedPath = FileManager.saveMaterializedPrompt(\n name,\n materializedPrompt,\n );\n const relativePath = path.relative(process.cwd(), savedPath);\n\n // Load existing config and lock, add the new dependency\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n config.prompts[name] = version;\n FileManager.updateLockEntry(lock, name, materializedPrompt, savedPath);\n\n // Save the updated config and lock\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n spinner.succeed();\n\n // Show what was done (add ./ prefix for consistency)\n const displayPath = relativePath.startsWith(\"./\")\n ? relativePath\n : `./${relativePath}`;\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${version}`)} ${chalk.gray(\n `(version ${prompt.version})`,\n )} → ${chalk.gray(displayPath)}`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error adding prompt: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"]}
@@ -3,25 +3,25 @@ import {
3
3
  } from "./chunk-DHJKJVY7.mjs";
4
4
  import {
5
5
  LangWatch
6
- } from "./chunk-4ILMGMAP.mjs";
6
+ } from "./chunk-YEGQXDTE.mjs";
7
7
  import {
8
8
  PromptsError
9
- } from "./chunk-IZ2U3ABC.mjs";
9
+ } from "./chunk-H5PON53W.mjs";
10
10
  import "./chunk-N2V6J3U2.mjs";
11
- import "./chunk-EJWJXTPU.mjs";
12
- import "./chunk-ZJZ3MIWE.mjs";
13
- import "./chunk-FQSWUK5N.mjs";
11
+ import "./chunk-QZGTM76F.mjs";
12
+ import "./chunk-ZIULPOMQ.mjs";
13
+ import "./chunk-YKFTFYKK.mjs";
14
14
  import "./chunk-YNQ44U6D.mjs";
15
15
  import {
16
16
  ensureProjectInitialized
17
- } from "./chunk-ECUXLXFT.mjs";
17
+ } from "./chunk-DLJO7AK5.mjs";
18
18
  import {
19
19
  FileManager
20
- } from "./chunk-HUI45ULC.mjs";
20
+ } from "./chunk-CKVDNVFL.mjs";
21
21
  import {
22
22
  PromptConverter
23
- } from "./chunk-SYMZPWZE.mjs";
24
- import "./chunk-4NRLVT2U.mjs";
23
+ } from "./chunk-V5M3HUBV.mjs";
24
+ import "./chunk-BTBSMJTY.mjs";
25
25
  import "./chunk-CU3443HD.mjs";
26
26
 
27
27
  // src/cli/commands/add.ts
@@ -35,11 +35,13 @@ var addLocalFile = async (name, localFilePath) => {
35
35
  process.exit(1);
36
36
  }
37
37
  if (!localFilePath.endsWith(".prompt.yaml")) {
38
- console.error(chalk.red(`Error: Local file must have .prompt.yaml extension`));
38
+ console.error(
39
+ chalk.red(`Error: Local file must have .prompt.yaml extension`)
40
+ );
39
41
  process.exit(1);
40
42
  }
41
43
  try {
42
- const config = FileManager.loadLocalPrompt(localFilePath);
44
+ FileManager.loadLocalPrompt(localFilePath);
43
45
  await ensureProjectInitialized();
44
46
  const promptsConfig = FileManager.loadPromptsConfig();
45
47
  promptsConfig.prompts[name] = `file:${localFilePath}`;
@@ -53,10 +55,18 @@ var addLocalFile = async (name, localFilePath) => {
53
55
  // Store the original file path
54
56
  };
55
57
  FileManager.savePromptsLock(lock);
56
- console.log(chalk.green(`\u2713 Added local prompt: ${chalk.cyan(name)} \u2192 ${chalk.gray(localFilePath)}`));
58
+ console.log(
59
+ chalk.green(
60
+ `\u2713 Added local prompt: ${chalk.cyan(name)} \u2192 ${chalk.gray(
61
+ localFilePath
62
+ )}`
63
+ )
64
+ );
57
65
  } catch (error) {
58
66
  console.error(chalk.red("Error loading local prompt file:"));
59
- console.error(chalk.red(error instanceof Error ? error.message : String(error)));
67
+ console.error(
68
+ chalk.red(error instanceof Error ? error.message : String(error))
69
+ );
60
70
  process.exit(1);
61
71
  }
62
72
  };
@@ -74,7 +84,9 @@ var addCommand = async (name, options) => {
74
84
  checkApiKey();
75
85
  const langwatch = new LangWatch();
76
86
  const version = (_a = options.version) != null ? _a : "latest";
77
- const spinner = ora(`Adding ${chalk.cyan(`${name}@${version}`)}...`).start();
87
+ const spinner = ora(
88
+ `Adding ${chalk.cyan(`${name}@${version}`)}...`
89
+ ).start();
78
90
  try {
79
91
  const prompt = await langwatch.prompts.get(name);
80
92
  if (!prompt) {
@@ -86,7 +98,10 @@ var addCommand = async (name, options) => {
86
98
  await ensureProjectInitialized();
87
99
  spinner.start(`Adding ${chalk.cyan(`${name}@${version}`)}...`);
88
100
  const materializedPrompt = PromptConverter.fromApiToMaterialized(prompt);
89
- const savedPath = FileManager.saveMaterializedPrompt(name, materializedPrompt);
101
+ const savedPath = FileManager.saveMaterializedPrompt(
102
+ name,
103
+ materializedPrompt
104
+ );
90
105
  const relativePath = path.relative(process.cwd(), savedPath);
91
106
  const config = FileManager.loadPromptsConfig();
92
107
  const lock = FileManager.loadPromptsLock();
@@ -96,13 +111,23 @@ var addCommand = async (name, options) => {
96
111
  FileManager.savePromptsLock(lock);
97
112
  spinner.succeed();
98
113
  const displayPath = relativePath.startsWith("./") ? relativePath : `./${relativePath}`;
99
- console.log(chalk.green(`\u2713 Pulled ${chalk.cyan(`${name}@${version}`)} ${chalk.gray(`(version ${prompt.version})`)} \u2192 ${chalk.gray(displayPath)}`));
114
+ console.log(
115
+ chalk.green(
116
+ `\u2713 Pulled ${chalk.cyan(`${name}@${version}`)} ${chalk.gray(
117
+ `(version ${prompt.version})`
118
+ )} \u2192 ${chalk.gray(displayPath)}`
119
+ )
120
+ );
100
121
  } catch (error) {
101
122
  spinner.fail();
102
123
  if (error instanceof PromptsError) {
103
124
  console.error(chalk.red(`Error: ${error.message}`));
104
125
  } else {
105
- console.error(chalk.red(`Error adding prompt: ${error instanceof Error ? error.message : "Unknown error"}`));
126
+ console.error(
127
+ chalk.red(
128
+ `Error adding prompt: ${error instanceof Error ? error.message : "Unknown error"}`
129
+ )
130
+ );
106
131
  }
107
132
  process.exit(1);
108
133
  }
@@ -110,7 +135,11 @@ var addCommand = async (name, options) => {
110
135
  if (error instanceof PromptsError) {
111
136
  console.error(chalk.red(`Error: ${error.message}`));
112
137
  } else {
113
- console.error(chalk.red(`Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`));
138
+ console.error(
139
+ chalk.red(
140
+ `Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`
141
+ )
142
+ );
114
143
  }
115
144
  process.exit(1);
116
145
  }
@@ -118,4 +147,4 @@ var addCommand = async (name, options) => {
118
147
  export {
119
148
  addCommand
120
149
  };
121
- //# sourceMappingURL=add-WLUMK5VQ.mjs.map
150
+ //# sourceMappingURL=add-D2WVVKIP.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/commands/add.ts"],"sourcesContent":["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\";\nimport { PromptConverter } from \"../utils/promptConverter\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { LangWatch } from \"@/client-sdk\";\n\ninterface AddOptions {\n version?: string;\n localFile?: string;\n}\n\nconst addLocalFile = async (\n name: string,\n localFilePath: string,\n): Promise<void> => {\n // Validate that the file exists and has the right extension\n if (!fs.existsSync(localFilePath)) {\n console.error(chalk.red(`Error: Local file not found: ${localFilePath}`));\n process.exit(1);\n }\n\n if (!localFilePath.endsWith(\".prompt.yaml\")) {\n console.error(\n chalk.red(`Error: Local file must have .prompt.yaml extension`),\n );\n process.exit(1);\n }\n\n // Load and validate the YAML file\n try {\n FileManager.loadLocalPrompt(localFilePath);\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n promptsConfig.prompts[name] = `file:${localFilePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: localFilePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n console.log(\n chalk.green(\n `✓ Added local prompt: ${chalk.cyan(name)} → ${chalk.gray(\n localFilePath,\n )}`,\n ),\n );\n } catch (error) {\n console.error(chalk.red(\"Error loading local prompt file:\"));\n console.error(\n chalk.red(error instanceof Error ? error.message : String(error)),\n );\n process.exit(1);\n }\n};\n\nexport const addCommand = async (\n name: string,\n options: AddOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Handle local file addition\n if (options.localFile) {\n await addLocalFile(name, options.localFile);\n return;\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n const langwatch = new LangWatch();\n const version = options.version ?? \"latest\";\n\n // Fetch and materialize the prompt (like sync does for individual prompts)\n const spinner = ora(\n `Adding ${chalk.cyan(`${name}@${version}`)}...`,\n ).start();\n\n try {\n // Fetch the prompt from the API\n const prompt = await langwatch.prompts.get(name);\n\n if (!prompt) {\n spinner.fail();\n console.error(chalk.red(`Error: Prompt \"${name}\" not found`));\n process.exit(1);\n }\n\n // Stop spinner before any user input prompts\n spinner.stop();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized();\n\n // Restart spinner for the actual work\n spinner.start(`Adding ${chalk.cyan(`${name}@${version}`)}...`);\n\n // Convert to MaterializedPrompt format and save\n const materializedPrompt = PromptConverter.fromApiToMaterialized(prompt);\n const savedPath = FileManager.saveMaterializedPrompt(\n name,\n materializedPrompt,\n );\n const relativePath = path.relative(process.cwd(), savedPath);\n\n // Load existing config and lock, add the new dependency\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n config.prompts[name] = version;\n FileManager.updateLockEntry(lock, name, materializedPrompt, savedPath);\n\n // Save the updated config and lock\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n spinner.succeed();\n\n // Show what was done (add ./ prefix for consistency)\n const displayPath = relativePath.startsWith(\"./\")\n ? relativePath\n : `./${relativePath}`;\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${version}`)} ${chalk.gray(\n `(version ${prompt.version})`,\n )} → ${chalk.gray(displayPath)}`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error adding prompt: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
2
 
3
- var _chunkD2CSG4SJjs = require('./chunk-D2CSG4SJ.js');
3
+ var _chunkCAZONSXVjs = require('./chunk-CAZONSXV.js');
4
4
 
5
5
  // src/cli/utils/init.ts
6
6
  var _readline = require('readline'); var readline = _interopRequireWildcard(_readline);
@@ -19,67 +19,107 @@ var promptUser = (question) => {
19
19
  };
20
20
  var initializeProject = async () => {
21
21
  console.log(_chalk2.default.blue("Initializing LangWatch prompts project..."));
22
- const configResult = _chunkD2CSG4SJjs.FileManager.initializePromptsConfig();
22
+ const configResult = _chunkCAZONSXVjs.FileManager.initializePromptsConfig();
23
23
  if (configResult.created) {
24
24
  console.log(_chalk2.default.green(`\u2713 Created ${_chalk2.default.gray("./prompts.json")}`));
25
25
  const shouldAddGitignore = await promptUser(
26
26
  _chalk2.default.yellow("Add 'prompts/.materialized' to .gitignore? [Y/n]: ")
27
27
  );
28
28
  if (shouldAddGitignore === "" || shouldAddGitignore === "y" || shouldAddGitignore === "yes") {
29
- const gitignoreResult = _chunkD2CSG4SJjs.FileManager.addToGitignore("prompts/.materialized");
29
+ const gitignoreResult = _chunkCAZONSXVjs.FileManager.addToGitignore(
30
+ "prompts/.materialized"
31
+ );
30
32
  if (gitignoreResult.added) {
31
33
  if (gitignoreResult.existed) {
32
- console.log(_chalk2.default.green(`\u2713 Added ${_chalk2.default.gray("prompts/.materialized")} to existing .gitignore`));
34
+ console.log(
35
+ _chalk2.default.green(
36
+ `\u2713 Added ${_chalk2.default.gray(
37
+ "prompts/.materialized"
38
+ )} to existing .gitignore`
39
+ )
40
+ );
33
41
  } else {
34
- console.log(_chalk2.default.green(`\u2713 Created .gitignore with ${_chalk2.default.gray("prompts/.materialized")}`));
42
+ console.log(
43
+ _chalk2.default.green(
44
+ `\u2713 Created .gitignore with ${_chalk2.default.gray(
45
+ "prompts/.materialized"
46
+ )}`
47
+ )
48
+ );
35
49
  }
36
50
  } else {
37
- console.log(_chalk2.default.gray(`\u2022 ${_chalk2.default.gray("prompts/.materialized")} already in .gitignore`));
51
+ console.log(
52
+ _chalk2.default.gray(
53
+ `\u2022 ${_chalk2.default.gray("prompts/.materialized")} already in .gitignore`
54
+ )
55
+ );
38
56
  }
39
57
  }
40
58
  } else {
41
59
  console.log(_chalk2.default.gray(`\u2022 prompts.json already exists`));
42
60
  }
43
- const lockResult = _chunkD2CSG4SJjs.FileManager.initializePromptsLock();
61
+ const lockResult = _chunkCAZONSXVjs.FileManager.initializePromptsLock();
44
62
  if (lockResult.created) {
45
63
  console.log(_chalk2.default.green(`\u2713 Created ${_chalk2.default.gray("./prompts-lock.json")}`));
46
64
  } else {
47
65
  console.log(_chalk2.default.gray(`\u2022 prompts-lock.json already exists`));
48
66
  }
49
- _chunkD2CSG4SJjs.FileManager.ensureDirectories();
50
- console.log(_chalk2.default.green(`\u2713 Created ${_chalk2.default.gray("./prompts/")} directory structure`));
51
- console.log(_chalk2.default.green("\n\u2728 Project initialized! You can now add prompts with:"));
67
+ _chunkCAZONSXVjs.FileManager.ensureDirectories();
68
+ console.log(
69
+ _chalk2.default.green(`\u2713 Created ${_chalk2.default.gray("./prompts/")} directory structure`)
70
+ );
71
+ console.log(
72
+ _chalk2.default.green("\n\u2728 Project initialized! You can now add prompts with:")
73
+ );
52
74
  console.log(_chalk2.default.gray(" langwatch prompt add <name>"));
53
75
  };
54
76
  var ensureProjectInitialized = async (shouldPromptForGitignore = true) => {
55
- const configResult = _chunkD2CSG4SJjs.FileManager.initializePromptsConfig();
77
+ const configResult = _chunkCAZONSXVjs.FileManager.initializePromptsConfig();
56
78
  let askedAboutGitignore = false;
57
79
  if (configResult.created) {
58
80
  console.log(_chalk2.default.green(`\u2713 Created ${_chalk2.default.gray("./prompts.json")}`));
59
- if (shouldPromptForGitignore) {
81
+ if (shouldPromptForGitignore && !askedAboutGitignore) {
60
82
  askedAboutGitignore = true;
61
83
  const shouldAddGitignore = await promptUser(
62
84
  _chalk2.default.yellow("Add 'prompts/.materialized' to .gitignore? [Y/n]: ")
63
85
  );
64
86
  if (shouldAddGitignore === "" || shouldAddGitignore === "y" || shouldAddGitignore === "yes") {
65
- const gitignoreResult = _chunkD2CSG4SJjs.FileManager.addToGitignore("prompts/.materialized");
87
+ const gitignoreResult = _chunkCAZONSXVjs.FileManager.addToGitignore(
88
+ "prompts/.materialized"
89
+ );
66
90
  if (gitignoreResult.added) {
67
91
  if (gitignoreResult.existed) {
68
- console.log(_chalk2.default.green(`\u2713 Added ${_chalk2.default.gray("prompts/.materialized")} to existing .gitignore`));
92
+ console.log(
93
+ _chalk2.default.green(
94
+ `\u2713 Added ${_chalk2.default.gray(
95
+ "prompts/.materialized"
96
+ )} to existing .gitignore`
97
+ )
98
+ );
69
99
  } else {
70
- console.log(_chalk2.default.green(`\u2713 Created .gitignore with ${_chalk2.default.gray("prompts/.materialized")}`));
100
+ console.log(
101
+ _chalk2.default.green(
102
+ `\u2713 Created .gitignore with ${_chalk2.default.gray(
103
+ "prompts/.materialized"
104
+ )}`
105
+ )
106
+ );
71
107
  }
72
108
  } else {
73
- console.log(_chalk2.default.gray(`\u2022 ${_chalk2.default.gray("prompts/.materialized")} already in .gitignore`));
109
+ console.log(
110
+ _chalk2.default.gray(
111
+ `\u2022 ${_chalk2.default.gray("prompts/.materialized")} already in .gitignore`
112
+ )
113
+ );
74
114
  }
75
115
  }
76
116
  }
77
117
  }
78
- const lockResult = _chunkD2CSG4SJjs.FileManager.initializePromptsLock();
118
+ const lockResult = _chunkCAZONSXVjs.FileManager.initializePromptsLock();
79
119
  if (lockResult.created) {
80
120
  console.log(_chalk2.default.green(`\u2713 Created ${_chalk2.default.gray("./prompts-lock.json")}`));
81
121
  }
82
- _chunkD2CSG4SJjs.FileManager.ensureDirectories();
122
+ _chunkCAZONSXVjs.FileManager.ensureDirectories();
83
123
  return {
84
124
  configCreated: configResult.created,
85
125
  lockCreated: lockResult.created
@@ -90,4 +130,4 @@ var ensureProjectInitialized = async (shouldPromptForGitignore = true) => {
90
130
 
91
131
 
92
132
  exports.initializeProject = initializeProject; exports.ensureProjectInitialized = ensureProjectInitialized;
93
- //# sourceMappingURL=chunk-K64Y6YUG.js.map
133
+ //# sourceMappingURL=chunk-7OZKH5K2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-7OZKH5K2.js","../src/cli/utils/init.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACA;ACJA,uFAA0B;AAC1B,4EAAkB;AAGlB,IAAM,WAAA,EAAa,CAAC,QAAA,EAAA,GAAsC;AACxD,EAAA,MAAM,GAAA,EAAc,QAAA,CAAA,eAAA,CAAgB;AAAA,IAClC,KAAA,EAAO,OAAA,CAAQ,KAAA;AAAA,IACf,MAAA,EAAQ,OAAA,CAAQ;AAAA,EAClB,CAAC,CAAA;AAED,EAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,EAAA,GAAY;AAC9B,IAAA,EAAA,CAAG,QAAA,CAAS,QAAA,EAAU,CAAC,MAAA,EAAA,GAAW;AAChC,MAAA,EAAA,CAAG,KAAA,CAAM,CAAA;AACT,MAAA,OAAA,CAAQ,MAAA,CAAO,IAAA,CAAK,CAAA,CAAE,WAAA,CAAY,CAAC,CAAA;AAAA,IACrC,CAAC,CAAA;AAAA,EACH,CAAC,CAAA;AACH,CAAA;AAEO,IAAM,kBAAA,EAAoB,MAAA,CAAA,EAAA,GAA2B;AAC1D,EAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,2CAA2C,CAAC,CAAA;AAGnE,EAAA,MAAM,aAAA,EAAe,4BAAA,CAAY,uBAAA,CAAwB,CAAA;AACzD,EAAA,GAAA,CAAI,YAAA,CAAa,OAAA,EAAS;AACxB,IAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,KAAA,CAAM,CAAA,eAAA,EAAa,eAAA,CAAM,IAAA,CAAK,gBAAgB,CAAC,CAAA,CAAA;AAGhC,IAAA;AACkC,MAAA;AACnE,IAAA;AAKE,IAAA;AAEoC,MAAA;AAClC,QAAA;AACF,MAAA;AAC2B,MAAA;AACI,QAAA;AACnB,UAAA;AACA,YAAA;AACa,cAAA;AACf,gBAAA;AACD,cAAA;AACH,YAAA;AACF,UAAA;AACK,QAAA;AACG,UAAA;AACA,YAAA;AAC+B,cAAA;AACjC,gBAAA;AACD,cAAA;AACH,YAAA;AACF,UAAA;AACF,QAAA;AACK,MAAA;AACG,QAAA;AACA,UAAA;AACoC,YAAA;AAC1C,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACK,EAAA;AACkD,IAAA;AACzD,EAAA;AAGqD,EAAA;AAC7B,EAAA;AAC0B,IAAA;AAC3C,EAAA;AACuD,IAAA;AAC9D,EAAA;AAG8B,EAAA;AACtB,EAAA;AAC2C,IAAA;AACnD,EAAA;AAEQ,EAAA;AACM,IAAA;AACd,EAAA;AACuD,EAAA;AACzD;AAIgE;AAEL,EAAA;AAC/B,EAAA;AAEA,EAAA;AACyC,IAAA;AAGX,IAAA;AAC9B,MAAA;AACW,MAAA;AACkC,QAAA;AACnE,MAAA;AAKE,MAAA;AAEoC,QAAA;AAClC,UAAA;AACF,QAAA;AAC2B,QAAA;AACI,UAAA;AACnB,YAAA;AACA,cAAA;AACa,gBAAA;AACf,kBAAA;AACD,gBAAA;AACH,cAAA;AACF,YAAA;AACK,UAAA;AACG,YAAA;AACA,cAAA;AAC+B,gBAAA;AACjC,kBAAA;AACD,gBAAA;AACH,cAAA;AACF,YAAA;AACF,UAAA;AACK,QAAA;AACG,UAAA;AACA,YAAA;AACoC,cAAA;AAC1C,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AACF,IAAA;AACF,EAAA;AAGqD,EAAA;AAC7B,EAAA;AAC0B,IAAA;AAClD,EAAA;AAG8B,EAAA;AAEvB,EAAA;AACuB,IAAA;AACJ,IAAA;AAC1B,EAAA;AACF;AD7B2E;AACA;AACA;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-7OZKH5K2.js","sourcesContent":[null,"import * as readline from \"readline\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"./fileManager\";\n\nconst promptUser = (question: string): Promise<string> => {\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(question, (answer) => {\n rl.close();\n resolve(answer.trim().toLowerCase());\n });\n });\n};\n\nexport const initializeProject = async (): Promise<void> => {\n console.log(chalk.blue(\"Initializing LangWatch prompts project...\"));\n\n // Initialize prompts.json\n const configResult = FileManager.initializePromptsConfig();\n if (configResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts.json\")}`));\n\n // Ask about .gitignore\n const shouldAddGitignore = await promptUser(\n chalk.yellow(\"Add 'prompts/.materialized' to .gitignore? [Y/n]: \"),\n );\n\n if (\n shouldAddGitignore === \"\" ||\n shouldAddGitignore === \"y\" ||\n shouldAddGitignore === \"yes\"\n ) {\n const gitignoreResult = FileManager.addToGitignore(\n \"prompts/.materialized\",\n );\n if (gitignoreResult.added) {\n if (gitignoreResult.existed) {\n console.log(\n chalk.green(\n `✓ Added ${chalk.gray(\n \"prompts/.materialized\",\n )} to existing .gitignore`,\n ),\n );\n } else {\n console.log(\n chalk.green(\n `✓ Created .gitignore with ${chalk.gray(\n \"prompts/.materialized\",\n )}`,\n ),\n );\n }\n } else {\n console.log(\n chalk.gray(\n `• ${chalk.gray(\"prompts/.materialized\")} already in .gitignore`,\n ),\n );\n }\n }\n } else {\n console.log(chalk.gray(`• prompts.json already exists`));\n }\n\n // Initialize lock file\n const lockResult = FileManager.initializePromptsLock();\n if (lockResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts-lock.json\")}`));\n } else {\n console.log(chalk.gray(`• prompts-lock.json already exists`));\n }\n\n // Ensure directories exist\n FileManager.ensureDirectories();\n console.log(\n chalk.green(`✓ Created ${chalk.gray(\"./prompts/\")} directory structure`),\n );\n\n console.log(\n chalk.green(\"\\n✨ Project initialized! You can now add prompts with:\"),\n );\n console.log(chalk.gray(\" langwatch prompt add <name>\"));\n};\n\nexport const ensureProjectInitialized = async (\n shouldPromptForGitignore = true,\n): Promise<{ configCreated: boolean; lockCreated: boolean }> => {\n // Initialize prompts.json\n const configResult = FileManager.initializePromptsConfig();\n let askedAboutGitignore = false;\n\n if (configResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts.json\")}`));\n\n // Ask about .gitignore only if we should prompt and haven't asked yet\n if (shouldPromptForGitignore && !askedAboutGitignore) {\n askedAboutGitignore = true;\n const shouldAddGitignore = await promptUser(\n chalk.yellow(\"Add 'prompts/.materialized' to .gitignore? [Y/n]: \"),\n );\n\n if (\n shouldAddGitignore === \"\" ||\n shouldAddGitignore === \"y\" ||\n shouldAddGitignore === \"yes\"\n ) {\n const gitignoreResult = FileManager.addToGitignore(\n \"prompts/.materialized\",\n );\n if (gitignoreResult.added) {\n if (gitignoreResult.existed) {\n console.log(\n chalk.green(\n `✓ Added ${chalk.gray(\n \"prompts/.materialized\",\n )} to existing .gitignore`,\n ),\n );\n } else {\n console.log(\n chalk.green(\n `✓ Created .gitignore with ${chalk.gray(\n \"prompts/.materialized\",\n )}`,\n ),\n );\n }\n } else {\n console.log(\n chalk.gray(\n `• ${chalk.gray(\"prompts/.materialized\")} already in .gitignore`,\n ),\n );\n }\n }\n }\n }\n\n // Initialize lock file\n const lockResult = FileManager.initializePromptsLock();\n if (lockResult.created) {\n console.log(chalk.green(`✓ Created ${chalk.gray(\"./prompts-lock.json\")}`));\n }\n\n // Ensure directories exist\n FileManager.ensureDirectories();\n\n return {\n configCreated: configResult.created,\n lockCreated: lockResult.created,\n };\n};\n"]}
@@ -32,4 +32,4 @@ var parsePromptSpec = (spec) => {
32
32
 
33
33
 
34
34
  exports.localPromptConfigSchema = localPromptConfigSchema; exports.parsePromptSpec = parsePromptSpec;
35
- //# sourceMappingURL=chunk-HA3LI5IK.js.map
35
+ //# sourceMappingURL=chunk-AZHZ4NB4.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-HA3LI5IK.js","../src/cli/types.ts"],"names":[],"mappings":"AAAA;ACAA,0BAAkB;AAcX,IAAM,wBAAA,EAA0B,MAAA,CACpC,MAAA,CAAO;AAAA,EACN,KAAA,EAAO,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,EAAG,mBAAmB,CAAA;AAAA,EAC5C,eAAA,EAAiB,MAAA,CACd,MAAA,CAAO;AAAA,IACN,WAAA,EAAa,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,IACjC,UAAA,EAAY,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS;AAAA,EAClC,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,CACN,QAAA,CAAS,CAAA;AAAA,EACZ,QAAA,EAAU,MAAA,CACP,KAAA;AAAA,IACC,MAAA,CACG,MAAA,CAAO;AAAA,MACN,IAAA,EAAM,MAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,MAC5C,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,EAAG,iCAAiC;AAAA,IAC9D,CAAC,CAAA,CACA,KAAA,CAAM;AAAA,EACX,CAAA,CACC,GAAA,CAAI,CAAA,EAAG,kCAAkC;AAC9C,CAAC,CAAA,CACA,KAAA,CAAM,CAAA;AAuCF,IAAM,gBAAA,EAAkB,CAC7B,IAAA,EAAA,GACsC;AACtC,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,WAAA,CAAY,GAAG,CAAA;AACpC,EAAA,GAAA,CAAI,QAAA,IAAY,CAAA,CAAA,EAAI;AAClB,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,SAAS,CAAA;AAAA,EACzC;AAEA,EAAA,MAAM,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA;AAClC,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU,CAAC,CAAA;AAEtC,EAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,CAAC,OAAA,EAAS;AACrB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,8BAAA,EAAiC,IAAI,CAAA,0CAAA;AAAA,IACvC,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,IAAA,EAAM,QAAQ,CAAA;AACzB,CAAA;AD/DA;AACA;AACE;AACA;AACF,qGAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-HA3LI5IK.js","sourcesContent":[null,"import { z } from \"zod\";\n\nexport type PromptDependency =\n | string\n | {\n version?: string;\n file?: string;\n };\n\nexport type PromptsConfig = {\n prompts: Record<string, PromptDependency>;\n};\n\n// Zod schema for local prompt config with permissive validation\nexport const localPromptConfigSchema = z\n .object({\n model: z.string().min(1, \"Model is required\"),\n modelParameters: z\n .object({\n temperature: z.number().optional(),\n max_tokens: z.number().optional(),\n })\n .loose()\n .optional(),\n messages: z\n .array(\n z\n .object({\n role: z.enum([\"system\", \"user\", \"assistant\"]),\n content: z.string().min(1, \"Message content cannot be empty\"),\n })\n .loose(),\n )\n .min(1, \"At least one message is required\"),\n })\n .loose();\n\nexport type LocalPromptConfig = z.infer<typeof localPromptConfigSchema>;\n\nexport type MaterializedPrompt = {\n id: string;\n name: string;\n version: number;\n versionId: string;\n model: string;\n messages: Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>;\n prompt: string;\n updatedAt: string;\n versionCreatedAt: string;\n};\n\nexport type SyncResult = {\n fetched: Array<{ name: string; version: number; versionSpec: string }>;\n pushed: Array<{ name: string; version: number }>;\n unchanged: string[];\n cleaned: string[];\n errors: Array<{ name: string; error: string }>;\n};\n\nexport type PromptsLockEntry = {\n version: number;\n versionId: string;\n materialized: string;\n};\n\nexport type PromptsLock = {\n lockfileVersion: number;\n prompts: Record<string, PromptsLockEntry>;\n};\n\n// Parse npm-style version specifications like \"foo@latest\" or \"bar@5\"\nexport const parsePromptSpec = (\n spec: string,\n): { name: string; version: string } => {\n const atIndex = spec.lastIndexOf(\"@\");\n if (atIndex === -1) {\n return { name: spec, version: \"latest\" };\n }\n\n const name = spec.slice(0, atIndex);\n const version = spec.slice(atIndex + 1);\n\n if (!name || !version) {\n throw new Error(\n `Invalid prompt specification: ${spec}. Use format 'name@version' or just 'name'`,\n );\n }\n\n return { name, version };\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-AZHZ4NB4.js","../src/cli/types.ts"],"names":[],"mappings":"AAAA;ACAA,0BAAkB;AAcX,IAAM,wBAAA,EAA0B,MAAA,CACpC,MAAA,CAAO;AAAA,EACN,KAAA,EAAO,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,EAAG,mBAAmB,CAAA;AAAA,EAC5C,eAAA,EAAiB,MAAA,CACd,MAAA,CAAO;AAAA,IACN,WAAA,EAAa,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,IACjC,UAAA,EAAY,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS;AAAA,EAClC,CAAC,CAAA,CACA,KAAA,CAAM,CAAA,CACN,QAAA,CAAS,CAAA;AAAA,EACZ,QAAA,EAAU,MAAA,CACP,KAAA;AAAA,IACC,MAAA,CACG,MAAA,CAAO;AAAA,MACN,IAAA,EAAM,MAAA,CAAE,IAAA,CAAK,CAAC,QAAA,EAAU,MAAA,EAAQ,WAAW,CAAC,CAAA;AAAA,MAC5C,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAA,EAAG,iCAAiC;AAAA,IAC9D,CAAC,CAAA,CACA,KAAA,CAAM;AAAA,EACX,CAAA,CACC,GAAA,CAAI,CAAA,EAAG,kCAAkC;AAC9C,CAAC,CAAA,CACA,KAAA,CAAM,CAAA;AA0CF,IAAM,gBAAA,EAAkB,CAC7B,IAAA,EAAA,GACsC;AACtC,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,WAAA,CAAY,GAAG,CAAA;AACpC,EAAA,GAAA,CAAI,QAAA,IAAY,CAAA,CAAA,EAAI;AAClB,IAAA,OAAO,EAAE,IAAA,EAAM,IAAA,EAAM,OAAA,EAAS,SAAS,CAAA;AAAA,EACzC;AAEA,EAAA,MAAM,KAAA,EAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,OAAO,CAAA;AAClC,EAAA,MAAM,QAAA,EAAU,IAAA,CAAK,KAAA,CAAM,QAAA,EAAU,CAAC,CAAA;AAEtC,EAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,CAAC,OAAA,EAAS;AACrB,IAAA,MAAM,IAAI,KAAA;AAAA,MACR,CAAA,8BAAA,EAAiC,IAAI,CAAA,0CAAA;AAAA,IACvC,CAAA;AAAA,EACF;AAEA,EAAA,OAAO,EAAE,IAAA,EAAM,QAAQ,CAAA;AACzB,CAAA;ADlEA;AACA;AACE;AACA;AACF,qGAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-AZHZ4NB4.js","sourcesContent":[null,"import { z } from \"zod\";\n\nexport type PromptDependency =\n | string\n | {\n version?: string;\n file?: string;\n };\n\nexport type PromptsConfig = {\n prompts: Record<string, PromptDependency>;\n};\n\n// Zod schema for local prompt config with permissive validation\nexport const localPromptConfigSchema = z\n .object({\n model: z.string().min(1, \"Model is required\"),\n modelParameters: z\n .object({\n temperature: z.number().optional(),\n max_tokens: z.number().optional(),\n })\n .loose()\n .optional(),\n messages: z\n .array(\n z\n .object({\n role: z.enum([\"system\", \"user\", \"assistant\"]),\n content: z.string().min(1, \"Message content cannot be empty\"),\n })\n .loose(),\n )\n .min(1, \"At least one message is required\"),\n })\n .loose();\n\nexport type LocalPromptConfig = z.infer<typeof localPromptConfigSchema>;\n\nexport type MaterializedPrompt = {\n id: string;\n name: string;\n version: number;\n versionId: string;\n model: string;\n messages: Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>;\n prompt: string;\n temperature?: number;\n maxTokens?: number;\n inputs?: any;\n outputs?: any;\n updatedAt: string;\n};\n\nexport type SyncResult = {\n fetched: Array<{ name: string; version: number; versionSpec: string }>;\n pushed: Array<{ name: string; version: number }>;\n unchanged: string[];\n cleaned: string[];\n errors: Array<{ name: string; error: string }>;\n};\n\nexport type PromptsLockEntry = {\n version: number;\n versionId: string;\n materialized: string;\n};\n\nexport type PromptsLock = {\n lockfileVersion: number;\n prompts: Record<string, PromptsLockEntry>;\n};\n\n// Parse npm-style version specifications like \"foo@latest\" or \"bar@5\"\nexport const parsePromptSpec = (\n spec: string,\n): { name: string; version: string } => {\n const atIndex = spec.lastIndexOf(\"@\");\n if (atIndex === -1) {\n return { name: spec, version: \"latest\" };\n }\n\n const name = spec.slice(0, atIndex);\n const version = spec.slice(atIndex + 1);\n\n if (!name || !version) {\n throw new Error(\n `Invalid prompt specification: ${spec}. Use format 'name@version' or just 'name'`,\n );\n }\n\n return { name, version };\n};\n"]}
@@ -32,4 +32,4 @@ export {
32
32
  localPromptConfigSchema,
33
33
  parsePromptSpec
34
34
  };
35
- //# sourceMappingURL=chunk-4NRLVT2U.mjs.map
35
+ //# sourceMappingURL=chunk-BTBSMJTY.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/types.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type PromptDependency =\n | string\n | {\n version?: string;\n file?: string;\n };\n\nexport type PromptsConfig = {\n prompts: Record<string, PromptDependency>;\n};\n\n// Zod schema for local prompt config with permissive validation\nexport const localPromptConfigSchema = z\n .object({\n model: z.string().min(1, \"Model is required\"),\n modelParameters: z\n .object({\n temperature: z.number().optional(),\n max_tokens: z.number().optional(),\n })\n .loose()\n .optional(),\n messages: z\n .array(\n z\n .object({\n role: z.enum([\"system\", \"user\", \"assistant\"]),\n content: z.string().min(1, \"Message content cannot be empty\"),\n })\n .loose(),\n )\n .min(1, \"At least one message is required\"),\n })\n .loose();\n\nexport type LocalPromptConfig = z.infer<typeof localPromptConfigSchema>;\n\nexport type MaterializedPrompt = {\n id: string;\n name: string;\n version: number;\n versionId: string;\n model: string;\n messages: Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>;\n prompt: string;\n temperature?: number;\n maxTokens?: number;\n inputs?: any;\n outputs?: any;\n updatedAt: string;\n};\n\nexport type SyncResult = {\n fetched: Array<{ name: string; version: number; versionSpec: string }>;\n pushed: Array<{ name: string; version: number }>;\n unchanged: string[];\n cleaned: string[];\n errors: Array<{ name: string; error: string }>;\n};\n\nexport type PromptsLockEntry = {\n version: number;\n versionId: string;\n materialized: string;\n};\n\nexport type PromptsLock = {\n lockfileVersion: number;\n prompts: Record<string, PromptsLockEntry>;\n};\n\n// Parse npm-style version specifications like \"foo@latest\" or \"bar@5\"\nexport const parsePromptSpec = (\n spec: string,\n): { name: string; version: string } => {\n const atIndex = spec.lastIndexOf(\"@\");\n if (atIndex === -1) {\n return { name: spec, version: \"latest\" };\n }\n\n const name = spec.slice(0, atIndex);\n const version = spec.slice(atIndex + 1);\n\n if (!name || !version) {\n throw new Error(\n `Invalid prompt specification: ${spec}. Use format 'name@version' or just 'name'`,\n );\n }\n\n return { name, version };\n};\n"],"mappings":";AAAA,SAAS,SAAS;AAcX,IAAM,0BAA0B,EACpC,OAAO;AAAA,EACN,OAAO,EAAE,OAAO,EAAE,IAAI,GAAG,mBAAmB;AAAA,EAC5C,iBAAiB,EACd,OAAO;AAAA,IACN,aAAa,EAAE,OAAO,EAAE,SAAS;AAAA,IACjC,YAAY,EAAE,OAAO,EAAE,SAAS;AAAA,EAClC,CAAC,EACA,MAAM,EACN,SAAS;AAAA,EACZ,UAAU,EACP;AAAA,IACC,EACG,OAAO;AAAA,MACN,MAAM,EAAE,KAAK,CAAC,UAAU,QAAQ,WAAW,CAAC;AAAA,MAC5C,SAAS,EAAE,OAAO,EAAE,IAAI,GAAG,iCAAiC;AAAA,IAC9D,CAAC,EACA,MAAM;AAAA,EACX,EACC,IAAI,GAAG,kCAAkC;AAC9C,CAAC,EACA,MAAM;AA0CF,IAAM,kBAAkB,CAC7B,SACsC;AACtC,QAAM,UAAU,KAAK,YAAY,GAAG;AACpC,MAAI,YAAY,IAAI;AAClB,WAAO,EAAE,MAAM,MAAM,SAAS,SAAS;AAAA,EACzC;AAEA,QAAM,OAAO,KAAK,MAAM,GAAG,OAAO;AAClC,QAAM,UAAU,KAAK,MAAM,UAAU,CAAC;AAEtC,MAAI,CAAC,QAAQ,CAAC,SAAS;AACrB,UAAM,IAAI;AAAA,MACR,iCAAiC,IAAI;AAAA,IACvC;AAAA,EACF;AAEA,SAAO,EAAE,MAAM,QAAQ;AACzB;","names":[]}
@@ -1,9 +1,9 @@
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 _chunkSGNJDRCTjs = require('./chunk-SGNJDRCT.js');
3
+ var _chunkR6FBJN7Kjs = require('./chunk-R6FBJN7K.js');
4
4
 
5
5
 
6
- var _chunkHA3LI5IKjs = require('./chunk-HA3LI5IK.js');
6
+ var _chunkAZHZ4NB4js = require('./chunk-AZHZ4NB4.js');
7
7
 
8
8
  // src/cli/utils/fileManager.ts
9
9
  var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
@@ -99,7 +99,7 @@ var FileManager = class {
99
99
  try {
100
100
  const content = fs.readFileSync(fullPath, "utf-8");
101
101
  const rawData = yaml.load(content);
102
- const result = _chunkHA3LI5IKjs.localPromptConfigSchema.safeParse(rawData);
102
+ const result = _chunkAZHZ4NB4js.localPromptConfigSchema.safeParse(rawData);
103
103
  if (!result.success) {
104
104
  const prettyError = result.error.issues.map((issue) => `\u2716 ${issue.message}${issue.path.length > 0 ? `
105
105
  \u2192 at ${issue.path.join(".")}` : ""}`).join("\n");
@@ -127,7 +127,7 @@ ${prettyError}`
127
127
  }
128
128
  }
129
129
  const filePath = path.join(materializedDir, ...parts.slice(0, -1), fileName);
130
- const yamlContent = _chunkSGNJDRCTjs.PromptConverter.fromMaterializedToYaml(prompt);
130
+ const yamlContent = _chunkR6FBJN7Kjs.PromptConverter.fromMaterializedToYaml(prompt);
131
131
  const yamlString = yaml.dump(yamlContent, {
132
132
  lineWidth: -1,
133
133
  noRefs: true,
@@ -239,4 +239,4 @@ FileManager.MATERIALIZED_DIR = ".materialized";
239
239
 
240
240
 
241
241
  exports.FileManager = FileManager;
242
- //# sourceMappingURL=chunk-D2CSG4SJ.js.map
242
+ //# sourceMappingURL=chunk-CAZONSXV.js.map