langwatch 0.7.1 → 0.7.4

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 (86) hide show
  1. package/README.md +5 -62
  2. package/dist/{add-HWFRMAQX.mjs → add-XLEUNNZI.mjs} +7 -7
  3. package/dist/{add-5QV3TEWC.js → add-Y543UEBX.js} +24 -24
  4. package/dist/{add-5QV3TEWC.js.map → add-Y543UEBX.js.map} +1 -1
  5. package/dist/{chunk-5HAVK64Q.js → chunk-BKVMRI32.js} +2 -2
  6. package/dist/chunk-BKVMRI32.js.map +1 -0
  7. package/dist/{chunk-VMZUN4EF.js → chunk-BP2WGNIV.js} +3 -1
  8. package/dist/chunk-BP2WGNIV.js.map +1 -0
  9. package/dist/{chunk-UNMZPS55.mjs → chunk-DQU2PZAL.mjs} +3 -1
  10. package/dist/chunk-DQU2PZAL.mjs.map +1 -0
  11. package/dist/{chunk-DZH6SY3Z.js → chunk-GC7VHCU5.js} +10 -10
  12. package/dist/{chunk-DZH6SY3Z.js.map → chunk-GC7VHCU5.js.map} +1 -1
  13. package/dist/{chunk-7MG7DGPP.mjs → chunk-HRPIRC67.mjs} +2 -2
  14. package/dist/{chunk-D7UAKYVI.js → chunk-J4YLJUX5.js} +26 -16
  15. package/dist/chunk-J4YLJUX5.js.map +1 -0
  16. package/dist/{chunk-AD7QRYIJ.mjs → chunk-MBXENFRR.mjs} +2 -2
  17. package/dist/{chunk-J55AV2YW.js → chunk-MZ2O5ZJL.js} +14 -14
  18. package/dist/{chunk-J55AV2YW.js.map → chunk-MZ2O5ZJL.js.map} +1 -1
  19. package/dist/{chunk-PYVDTUA6.mjs → chunk-O6D3W3PG.mjs} +38 -49
  20. package/dist/chunk-O6D3W3PG.mjs.map +1 -0
  21. package/dist/{chunk-EPGKOTSN.mjs → chunk-QPHTXDJ5.mjs} +17 -7
  22. package/dist/chunk-QPHTXDJ5.mjs.map +1 -0
  23. package/dist/{chunk-7VHZNB2S.mjs → chunk-VMI2XPCC.mjs} +2 -2
  24. package/dist/chunk-VMI2XPCC.mjs.map +1 -0
  25. package/dist/{chunk-36XAYVMC.js → chunk-WAAQLJ67.js} +39 -50
  26. package/dist/chunk-WAAQLJ67.js.map +1 -0
  27. package/dist/cli/index.js +7 -7
  28. package/dist/cli/index.mjs +7 -7
  29. package/dist/{create-S5RDGF3H.js → create-ACGBGFVO.js} +8 -8
  30. package/dist/{create-S5RDGF3H.js.map → create-ACGBGFVO.js.map} +1 -1
  31. package/dist/{create-LXQB4EFB.mjs → create-YUOTG2TS.mjs} +3 -3
  32. package/dist/{implementation-nE9dgTwc.d.mts → implementation-BhgBtqp4.d.mts} +1 -1
  33. package/dist/{implementation-DsHp9FYU.d.ts → implementation-JKO2kHPl.d.ts} +1 -1
  34. package/dist/index.d.mts +4 -2
  35. package/dist/index.d.ts +4 -2
  36. package/dist/index.js +13 -13
  37. package/dist/index.mjs +5 -5
  38. package/dist/{init-T4YDPHBA.mjs → init-ED3OW3TK.mjs} +3 -3
  39. package/dist/{init-UADBKUJU.js → init-UFZF26SF.js} +4 -4
  40. package/dist/{init-UADBKUJU.js.map → init-UFZF26SF.js.map} +1 -1
  41. package/dist/{list-BQXECLEM.mjs → list-5C6V2OEO.mjs} +6 -6
  42. package/dist/{list-HSCIBC4Z.js → list-LULA2BWM.js} +9 -9
  43. package/dist/{list-HSCIBC4Z.js.map → list-LULA2BWM.js.map} +1 -1
  44. package/dist/{login-EUDCIJRM.js → login-RUMQOHW4.js} +3 -3
  45. package/dist/{login-EUDCIJRM.js.map → login-RUMQOHW4.js.map} +1 -1
  46. package/dist/{login-3IM3PYSJ.mjs → login-XY2RAXYR.mjs} +2 -2
  47. package/dist/observability-sdk/index.d.mts +3 -3
  48. package/dist/observability-sdk/index.d.ts +3 -3
  49. package/dist/observability-sdk/index.js +4 -4
  50. package/dist/observability-sdk/index.mjs +3 -3
  51. package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
  52. package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
  53. package/dist/observability-sdk/instrumentation/langchain/index.js +3 -3
  54. package/dist/observability-sdk/instrumentation/langchain/index.mjs +1 -1
  55. package/dist/observability-sdk/setup/node/index.js +29 -10
  56. package/dist/observability-sdk/setup/node/index.js.map +1 -1
  57. package/dist/observability-sdk/setup/node/index.mjs +21 -2
  58. package/dist/observability-sdk/setup/node/index.mjs.map +1 -1
  59. package/dist/{remove-IVFQAHNT.mjs → remove-GA3OQ5AQ.mjs} +6 -6
  60. package/dist/{remove-VDQ4M6JF.js → remove-NIEHQCQN.js} +14 -14
  61. package/dist/{remove-VDQ4M6JF.js.map → remove-NIEHQCQN.js.map} +1 -1
  62. package/dist/{sync-KUMBMGJS.js → sync-J2FH4OZC.js} +30 -31
  63. package/dist/sync-J2FH4OZC.js.map +1 -0
  64. package/dist/{sync-2MVHHWCX.mjs → sync-X3KE2DNE.mjs} +12 -13
  65. package/dist/sync-X3KE2DNE.mjs.map +1 -0
  66. package/dist/{types-B9772cUR.d.ts → types-DOVKZCnN.d.ts} +20 -10
  67. package/dist/{types-DbPAi4US.d.mts → types-DoNHhlm6.d.mts} +20 -10
  68. package/package.json +3 -2
  69. package/dist/chunk-36XAYVMC.js.map +0 -1
  70. package/dist/chunk-5HAVK64Q.js.map +0 -1
  71. package/dist/chunk-7VHZNB2S.mjs.map +0 -1
  72. package/dist/chunk-D7UAKYVI.js.map +0 -1
  73. package/dist/chunk-EPGKOTSN.mjs.map +0 -1
  74. package/dist/chunk-PYVDTUA6.mjs.map +0 -1
  75. package/dist/chunk-UNMZPS55.mjs.map +0 -1
  76. package/dist/chunk-VMZUN4EF.js.map +0 -1
  77. package/dist/sync-2MVHHWCX.mjs.map +0 -1
  78. package/dist/sync-KUMBMGJS.js.map +0 -1
  79. /package/dist/{add-HWFRMAQX.mjs.map → add-XLEUNNZI.mjs.map} +0 -0
  80. /package/dist/{chunk-7MG7DGPP.mjs.map → chunk-HRPIRC67.mjs.map} +0 -0
  81. /package/dist/{chunk-AD7QRYIJ.mjs.map → chunk-MBXENFRR.mjs.map} +0 -0
  82. /package/dist/{create-LXQB4EFB.mjs.map → create-YUOTG2TS.mjs.map} +0 -0
  83. /package/dist/{init-T4YDPHBA.mjs.map → init-ED3OW3TK.mjs.map} +0 -0
  84. /package/dist/{list-BQXECLEM.mjs.map → list-5C6V2OEO.mjs.map} +0 -0
  85. /package/dist/{login-3IM3PYSJ.mjs.map → login-XY2RAXYR.mjs.map} +0 -0
  86. /package/dist/{remove-IVFQAHNT.mjs.map → remove-GA3OQ5AQ.mjs.map} +0 -0
@@ -49,9 +49,11 @@ var PromptConverter = class {
49
49
  * expected by the API service for upserting.
50
50
  */
51
51
  static fromLocalToApiFormat(config) {
52
+ var _a, _b;
52
53
  return {
53
54
  model: config.model,
54
- modelParameters: config.modelParameters,
55
+ temperature: (_a = config.modelParameters) == null ? void 0 : _a.temperature,
56
+ maxTokens: (_b = config.modelParameters) == null ? void 0 : _b.max_tokens,
55
57
  messages: config.messages
56
58
  };
57
59
  }
@@ -70,47 +72,6 @@ var PromptConverter = class {
70
72
  static filterNonSystemMessages(messages) {
71
73
  return messages.filter((m) => m.role !== "system");
72
74
  }
73
- /**
74
- * Converts version specification strings to actual version constraints.
75
- * Handles npm-style version specs like "latest", "5", "^5", etc.
76
- */
77
- static parseVersionSpec(versionSpec) {
78
- if (versionSpec === "latest") {
79
- return { type: "latest", value: "latest" };
80
- }
81
- if (/^\d+$/.test(versionSpec)) {
82
- return { type: "exact", value: versionSpec };
83
- }
84
- return { type: "tag", value: versionSpec };
85
- }
86
- /**
87
- * Validates that a YAML config can be safely converted to API format.
88
- * Returns validation errors if any, or null if valid.
89
- */
90
- static validateForApiConversion(config) {
91
- var _a;
92
- const errors = [];
93
- if (!((_a = config.model) == null ? void 0 : _a.trim())) {
94
- errors.push("Model is required and cannot be empty");
95
- }
96
- if (!config.messages || config.messages.length === 0) {
97
- errors.push("At least one message is required");
98
- }
99
- if (config.messages) {
100
- config.messages.forEach((message, index) => {
101
- var _a2;
102
- if (!["system", "user", "assistant"].includes(message.role)) {
103
- errors.push(
104
- `Message ${index}: role must be 'system', 'user', or 'assistant'`
105
- );
106
- }
107
- if (!((_a2 = message.content) == null ? void 0 : _a2.trim())) {
108
- errors.push(`Message ${index}: content cannot be empty`);
109
- }
110
- });
111
- }
112
- return errors;
113
- }
114
75
  };
115
76
 
116
77
  // src/cli/utils/fileManager.ts
@@ -118,15 +79,42 @@ var _fs = require('fs'); var fs = _interopRequireWildcard(_fs);
118
79
  var _path = require('path'); var path = _interopRequireWildcard(_path);
119
80
  var _jsyaml = require('js-yaml'); var yaml = _interopRequireWildcard(_jsyaml);
120
81
  var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);
82
+
83
+ // src/cli/utils/errors/prompt-not-found.error.ts
84
+ var PromptFileNotFoundError = class extends Error {
85
+ constructor(filePath) {
86
+ super(`Local prompt file not found: ${filePath}`);
87
+ this.name = "PromptFileNotFoundError";
88
+ }
89
+ };
90
+
91
+ // src/cli/utils/fileManager.ts
121
92
  var _FileManager = class _FileManager {
93
+ static findProjectRoot() {
94
+ if (this._projectRoot) {
95
+ return this._projectRoot;
96
+ }
97
+ let currentDir = process.cwd();
98
+ const root = path.parse(currentDir).root;
99
+ while (currentDir !== root) {
100
+ const configPath = path.join(currentDir, this.PROMPTS_CONFIG_FILE);
101
+ if (fs.existsSync(configPath)) {
102
+ this._projectRoot = currentDir;
103
+ return currentDir;
104
+ }
105
+ currentDir = path.dirname(currentDir);
106
+ }
107
+ this._projectRoot = process.cwd();
108
+ return this._projectRoot;
109
+ }
122
110
  static getPromptsConfigPath() {
123
- return path.join(process.cwd(), this.PROMPTS_CONFIG_FILE);
111
+ return path.join(this.findProjectRoot(), this.PROMPTS_CONFIG_FILE);
124
112
  }
125
113
  static getPromptsLockPath() {
126
- return path.join(process.cwd(), this.PROMPTS_LOCK_FILE);
114
+ return path.join(this.findProjectRoot(), this.PROMPTS_LOCK_FILE);
127
115
  }
128
116
  static getPromptsDir() {
129
- return path.join(process.cwd(), this.PROMPTS_DIR);
117
+ return path.join(this.findProjectRoot(), this.PROMPTS_DIR);
130
118
  }
131
119
  static getMaterializedDir() {
132
120
  return path.join(this.getPromptsDir(), this.MATERIALIZED_DIR);
@@ -242,7 +230,7 @@ var _FileManager = class _FileManager {
242
230
  return cleaned;
243
231
  }
244
232
  static updateLockEntry(lock, name, prompt, materializedPath) {
245
- const relativePath = path.relative(process.cwd(), materializedPath);
233
+ const relativePath = path.relative(this.findProjectRoot(), materializedPath);
246
234
  lock.prompts[name] = {
247
235
  version: prompt.version,
248
236
  versionId: prompt.versionId,
@@ -255,7 +243,7 @@ var _FileManager = class _FileManager {
255
243
  }
256
244
  }
257
245
  static addToGitignore(entry) {
258
- const gitignorePath = path.join(process.cwd(), ".gitignore");
246
+ const gitignorePath = path.join(this.findProjectRoot(), ".gitignore");
259
247
  if (!fs.existsSync(gitignorePath)) {
260
248
  fs.writeFileSync(gitignorePath, `${entry}
261
249
  `);
@@ -296,7 +284,7 @@ _FileManager.loadPromptsLock = () => {
296
284
  _FileManager.loadLocalPrompt = (filePath) => {
297
285
  const fullPath = path.resolve(filePath);
298
286
  if (!fs.existsSync(fullPath)) {
299
- throw new Error(`Local prompt file not found: ${filePath}`);
287
+ throw new PromptFileNotFoundError(filePath);
300
288
  }
301
289
  try {
302
290
  const content = fs.readFileSync(fullPath, "utf-8");
@@ -348,5 +336,6 @@ var FileManager = _FileManager;
348
336
 
349
337
 
350
338
 
351
- exports.PromptConverter = PromptConverter; exports.FileManager = FileManager;
352
- //# sourceMappingURL=chunk-36XAYVMC.js.map
339
+
340
+ exports.PromptConverter = PromptConverter; exports.PromptFileNotFoundError = PromptFileNotFoundError; exports.FileManager = FileManager;
341
+ //# sourceMappingURL=chunk-WAAQLJ67.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-WAAQLJ67.js","../src/cli/utils/promptConverter.ts","../src/cli/utils/fileManager.ts","../src/cli/utils/errors/prompt-not-found.error.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-WAAQLJ67.js","sourcesContent":[null,"import type { LocalPromptConfig, MaterializedPrompt } from \"../types\";\nimport { type PromptResponse, type UpdatePromptBody } from \"@/client-sdk/services/prompts/types\";\n\n/**\n * Converter utility for transforming between YAML prompt format and API service format.\n *\n * The YAML format follows the GitHub .prompt.yaml file format standard,\n * while the API format is our internal prompt service schema tied to the database.\n *\n * This separation allows us to maintain and evolve both formats independently\n * while keeping the conversion logic centralized and well-tested.\n */\nexport class PromptConverter {\n /**\n * Converts a Prompt instance from the API service to the MaterializedPrompt format\n * used for saving to the .materialized directory.\n */\n static fromApiToMaterialized(prompt: PromptResponse): MaterializedPrompt {\n return {\n id: prompt.id,\n name: prompt.name,\n version: prompt.version,\n versionId: prompt.versionId,\n model: prompt.model,\n messages: prompt.messages,\n prompt: prompt.prompt,\n temperature: prompt.temperature,\n maxTokens: prompt.maxTokens,\n inputs: prompt.inputs,\n outputs: prompt.outputs,\n updatedAt: prompt.updatedAt,\n };\n }\n\n /**\n * Converts a MaterializedPrompt to the YAML content structure\n * for saving to .prompt.yaml files.\n */\n static fromMaterializedToYaml(prompt: MaterializedPrompt): {\n model: string;\n modelParameters?: {\n temperature?: number;\n maxTokens?: number;\n };\n messages: Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>;\n } {\n const result: any = {\n model: prompt.model,\n messages: prompt.messages,\n };\n\n // Add modelParameters if temperature or maxTokens exist\n if (prompt.temperature !== undefined || prompt.maxTokens !== undefined) {\n result.modelParameters = {};\n if (prompt.temperature !== undefined) {\n result.modelParameters.temperature = prompt.temperature;\n }\n if (prompt.maxTokens !== undefined) {\n result.modelParameters.maxTokens = prompt.maxTokens;\n }\n }\n\n return result;\n }\n\n /**\n * Converts a LocalPromptConfig (loaded from YAML) to the format\n * expected by the API service for upserting.\n */\n static fromLocalToApiFormat(config: LocalPromptConfig): Omit<UpdatePromptBody, \"commitMessage\">\n {\n return {\n model: config.model,\n temperature: config.modelParameters?.temperature,\n maxTokens: config.modelParameters?.max_tokens,\n messages: config.messages,\n };\n }\n\n /**\n * Extracts the system prompt from messages array.\n * Used when converting to API format that separates system prompt from messages.\n */\n static extractSystemPrompt(\n messages: Array<{ role: string; content: string }>,\n ): string {\n return messages.find((m) => m.role === \"system\")?.content ?? \"\";\n }\n\n /**\n * Filters out system messages from the messages array.\n * Used when converting to API format that handles system prompt separately.\n */\n static filterNonSystemMessages(\n messages: Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n ): Array<{ role: \"user\" | \"assistant\"; content: string }> {\n return messages.filter((m) => m.role !== \"system\") as Array<{\n role: \"user\" | \"assistant\";\n content: string;\n }>;\n }\n}\n","import * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as yaml from \"js-yaml\";\nimport chalk from \"chalk\";\nimport type { PromptsConfig, LocalPromptConfig, MaterializedPrompt, PromptsLock } from \"../types\";\nimport { localPromptConfigSchema } from \"../types\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport { PromptFileNotFoundError } from \"./errors/prompt-not-found.error\";\n\nexport class FileManager {\n private static readonly PROMPTS_CONFIG_FILE = \"prompts.json\";\n private static readonly PROMPTS_LOCK_FILE = \"prompts-lock.json\";\n private static readonly PROMPTS_DIR = \"prompts\";\n private static readonly MATERIALIZED_DIR = \".materialized\";\n\n private static _projectRoot: string | undefined;\n\n private static findProjectRoot(): string {\n if (this._projectRoot) {\n return this._projectRoot;\n }\n\n let currentDir = process.cwd();\n const root = path.parse(currentDir).root;\n\n while (currentDir !== root) {\n const configPath = path.join(currentDir, this.PROMPTS_CONFIG_FILE);\n if (fs.existsSync(configPath)) {\n this._projectRoot = currentDir;\n return currentDir;\n }\n currentDir = path.dirname(currentDir);\n }\n\n // Fallback to cwd if no prompts.json found\n this._projectRoot = process.cwd();\n return this._projectRoot;\n }\n\n static getPromptsConfigPath(): string {\n return path.join(this.findProjectRoot(), this.PROMPTS_CONFIG_FILE);\n }\n\n static getPromptsLockPath(): string {\n return path.join(this.findProjectRoot(), this.PROMPTS_LOCK_FILE);\n }\n\n static getPromptsDir(): string {\n return path.join(this.findProjectRoot(), this.PROMPTS_DIR);\n }\n\n static getMaterializedDir(): string {\n return path.join(this.getPromptsDir(), this.MATERIALIZED_DIR);\n }\n\n static ensureDirectories(): void {\n const promptsDir = this.getPromptsDir();\n const materializedDir = this.getMaterializedDir();\n\n if (!fs.existsSync(promptsDir)) {\n fs.mkdirSync(promptsDir, { recursive: true });\n }\n\n if (!fs.existsSync(materializedDir)) {\n fs.mkdirSync(materializedDir, { recursive: true });\n }\n }\n\n static loadPromptsConfig(): PromptsConfig {\n const configPath = this.getPromptsConfigPath();\n\n if (!fs.existsSync(configPath)) {\n return { prompts: {} };\n }\n\n try {\n const content = fs.readFileSync(configPath, \"utf-8\");\n return JSON.parse(content) as PromptsConfig;\n } catch (error) {\n throw new Error(`Failed to parse prompts.json: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n }\n }\n\n static savePromptsConfig(config: PromptsConfig): void {\n const configPath = this.getPromptsConfigPath();\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2) + \"\\n\");\n }\n\n static initializePromptsConfig(): { created: boolean; path: string } {\n const configPath = this.getPromptsConfigPath();\n const existed = fs.existsSync(configPath);\n\n if (!existed) {\n const emptyConfig: PromptsConfig = { prompts: {} };\n this.savePromptsConfig(emptyConfig);\n return { created: true, path: configPath };\n }\n\n return { created: false, path: configPath };\n }\n\n static loadPromptsLock = (): PromptsLock => {\n const lockPath = this.getPromptsLockPath();\n\n if (!fs.existsSync(lockPath)) {\n return {\n lockfileVersion: 1,\n prompts: {}\n };\n }\n\n try {\n const content = fs.readFileSync(lockPath, \"utf-8\");\n return JSON.parse(content) as PromptsLock;\n } catch (error) {\n throw new Error(`Failed to parse prompts-lock.json: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n }\n }\n\n static savePromptsLock(lock: PromptsLock): void {\n const lockPath = this.getPromptsLockPath();\n fs.writeFileSync(lockPath, JSON.stringify(lock, null, 2) + \"\\n\");\n }\n\n static initializePromptsLock(): { created: boolean; path: string } {\n const lockPath = this.getPromptsLockPath();\n const existed = fs.existsSync(lockPath);\n\n if (!existed) {\n const emptyLock: PromptsLock = {\n lockfileVersion: 1,\n prompts: {}\n };\n this.savePromptsLock(emptyLock);\n return { created: true, path: lockPath };\n }\n\n return { created: false, path: lockPath };\n }\n\n static loadLocalPrompt = (filePath: string): LocalPromptConfig => {\n const fullPath = path.resolve(filePath);\n\n if (!fs.existsSync(fullPath)) {\n throw new PromptFileNotFoundError(filePath);\n }\n\n try {\n const content = fs.readFileSync(fullPath, \"utf-8\");\n const rawData = yaml.load(content);\n\n // Validate with zod and provide nice error messages\n const result = localPromptConfigSchema.safeParse(rawData);\n\n if (!result.success) {\n // Format zod errors nicely (manually since z.prettifyError might not be available)\n const prettyError = result.error.issues\n .map(issue => `✖ ${issue.message}${issue.path.length > 0 ? `\\n → at ${issue.path.join('.')}` : ''}`)\n .join('\\n');\n\n throw new Error(\n `Invalid prompt configuration in ${chalk.yellow(filePath)}:\\n${prettyError}`\n );\n }\n\n return result.data;\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"Invalid prompt configuration\")) {\n throw error; // Re-throw zod validation errors as-is\n }\n throw new Error(`Failed to parse local prompt file ${filePath}: ${error instanceof Error ? error.message : \"Unknown error\"}`);\n }\n }\n\n static saveMaterializedPrompt(name: string, prompt: MaterializedPrompt): string {\n const materializedDir = this.getMaterializedDir();\n const parts = name.split(\"/\");\n const fileName = `${parts[parts.length - 1]}.prompt.yaml`;\n\n // Create nested directories if needed\n if (parts.length > 1) {\n const subDir = path.join(materializedDir, ...parts.slice(0, -1));\n if (!fs.existsSync(subDir)) {\n fs.mkdirSync(subDir, { recursive: true });\n }\n }\n\n const filePath = path.join(materializedDir, ...parts.slice(0, -1), fileName);\n\n // Convert to YAML format using the converter\n const yamlContent = PromptConverter.fromMaterializedToYaml(prompt);\n\n const yamlString = yaml.dump(yamlContent, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false\n });\n\n fs.writeFileSync(filePath, yamlString);\n return filePath;\n }\n\n static getLocalPromptFiles = (): string[] => {\n const promptsDir = this.getPromptsDir();\n const materializedDir = this.getMaterializedDir();\n\n if (!fs.existsSync(promptsDir)) {\n return [];\n }\n\n const files: string[] = [];\n\n const walkDir = (dir: string, relativePath = \"\"): void => {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relativeFilePath = path.join(relativePath, entry.name);\n\n if (entry.isDirectory()) {\n // Skip the .materialized directory\n if (fullPath === materializedDir) {\n continue;\n }\n walkDir(fullPath, relativeFilePath);\n } else if (entry.isFile() && entry.name.endsWith(\".prompt.yaml\")) {\n files.push(path.join(promptsDir, relativeFilePath));\n }\n }\n };\n\n walkDir(promptsDir);\n return files;\n }\n\n static promptNameFromPath(filePath: string): string {\n const promptsDir = this.getPromptsDir();\n const relativePath = path.relative(promptsDir, filePath);\n return relativePath.replace(/\\.prompt\\.yaml$/, \"\");\n }\n\n static cleanupOrphanedMaterializedFiles(currentDependencies: Set<string>): string[] {\n const materializedDir = this.getMaterializedDir();\n\n if (!fs.existsSync(materializedDir)) {\n return [];\n }\n\n const cleaned: string[] = [];\n\n const cleanupDir = (dir: string, relativePath = \"\"): void => {\n const entries = fs.readdirSync(dir, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relativeFilePath = path.join(relativePath, entry.name);\n\n if (entry.isDirectory()) {\n cleanupDir(fullPath, relativeFilePath);\n\n // Remove empty directories\n try {\n const dirEntries = fs.readdirSync(fullPath);\n if (dirEntries.length === 0) {\n fs.rmdirSync(fullPath);\n }\n } catch {\n // Directory not empty or other error, ignore\n }\n } else if (entry.isFile() && entry.name.endsWith(\".prompt.yaml\")) {\n // Extract prompt name from materialized file path\n const promptName = relativeFilePath.replace(/\\.prompt\\.yaml$/, \"\");\n\n if (!currentDependencies.has(promptName)) {\n fs.unlinkSync(fullPath);\n cleaned.push(promptName);\n }\n }\n }\n };\n\n cleanupDir(materializedDir);\n return cleaned;\n }\n\n static updateLockEntry(lock: PromptsLock, name: string, prompt: MaterializedPrompt, materializedPath: string): void {\n const relativePath = path.relative(this.findProjectRoot(), materializedPath);\n\n lock.prompts[name] = {\n version: prompt.version,\n versionId: prompt.versionId,\n materialized: relativePath,\n };\n }\n\n static removeFromLock(lock: PromptsLock, names: string[]): void {\n for (const name of names) {\n delete lock.prompts[name];\n }\n }\n\n static addToGitignore(entry: string): { added: boolean; existed: boolean } {\n const gitignorePath = path.join(this.findProjectRoot(), \".gitignore\");\n\n // Check if .gitignore exists\n if (!fs.existsSync(gitignorePath)) {\n // Create new .gitignore with the entry\n fs.writeFileSync(gitignorePath, `${entry}\\n`);\n return { added: true, existed: false };\n }\n\n // Read existing .gitignore\n const content = fs.readFileSync(gitignorePath, \"utf-8\");\n const lines = content.split(\"\\n\").map(line => line.trim());\n\n // Check if entry already exists\n if (lines.includes(entry)) {\n return { added: false, existed: true };\n }\n\n // Add entry to .gitignore\n const newContent = content.endsWith(\"\\n\") ? `${content}${entry}\\n` : `${content}\\n${entry}\\n`;\n fs.writeFileSync(gitignorePath, newContent);\n\n return { added: true, existed: false };\n }\n}\n","export class PromptFileNotFoundError extends Error {\n constructor(filePath: string) {\n super(`Local prompt file not found: ${filePath}`);\n this.name = 'PromptFileNotFoundError';\n }\n}\n"]}
package/dist/cli/index.js CHANGED
@@ -9,31 +9,31 @@ var _dotenv = require('dotenv');
9
9
  var _commander = require('commander');
10
10
  _dotenv.config.call(void 0, );
11
11
  var addCommand = async (name, options) => {
12
- const { addCommand: addCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../add-5QV3TEWC.js")));
12
+ const { addCommand: addCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../add-Y543UEBX.js")));
13
13
  return addCommandImpl(name, options);
14
14
  };
15
15
  var removeCommand = async (name) => {
16
- const { removeCommand: removeCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../remove-VDQ4M6JF.js")));
16
+ const { removeCommand: removeCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../remove-NIEHQCQN.js")));
17
17
  return removeCommandImpl(name);
18
18
  };
19
19
  var initCommand = async () => {
20
- const { initCommand: initCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../init-UADBKUJU.js")));
20
+ const { initCommand: initCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../init-UFZF26SF.js")));
21
21
  return initCommandImpl();
22
22
  };
23
23
  var loginCommand = async () => {
24
- const { loginCommand: loginCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../login-EUDCIJRM.js")));
24
+ const { loginCommand: loginCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../login-RUMQOHW4.js")));
25
25
  return loginCommandImpl();
26
26
  };
27
27
  var listCommand = async () => {
28
- const { listCommand: listCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../list-HSCIBC4Z.js")));
28
+ const { listCommand: listCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../list-LULA2BWM.js")));
29
29
  return listCommandImpl();
30
30
  };
31
31
  var syncCommand = async () => {
32
- const { syncCommand: syncCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../sync-KUMBMGJS.js")));
32
+ const { syncCommand: syncCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../sync-J2FH4OZC.js")));
33
33
  return syncCommandImpl();
34
34
  };
35
35
  var createCommand = async (name, options) => {
36
- const { createCommand: createCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../create-S5RDGF3H.js")));
36
+ const { createCommand: createCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../create-ACGBGFVO.js")));
37
37
  return createCommandImpl(name, options);
38
38
  };
39
39
  var program = new (0, _commander.Command)();
@@ -9,31 +9,31 @@ import { config } from "dotenv";
9
9
  import { Command } from "commander";
10
10
  config();
11
11
  var addCommand = async (name, options) => {
12
- const { addCommand: addCommandImpl } = await import("../add-HWFRMAQX.mjs");
12
+ const { addCommand: addCommandImpl } = await import("../add-XLEUNNZI.mjs");
13
13
  return addCommandImpl(name, options);
14
14
  };
15
15
  var removeCommand = async (name) => {
16
- const { removeCommand: removeCommandImpl } = await import("../remove-IVFQAHNT.mjs");
16
+ const { removeCommand: removeCommandImpl } = await import("../remove-GA3OQ5AQ.mjs");
17
17
  return removeCommandImpl(name);
18
18
  };
19
19
  var initCommand = async () => {
20
- const { initCommand: initCommandImpl } = await import("../init-T4YDPHBA.mjs");
20
+ const { initCommand: initCommandImpl } = await import("../init-ED3OW3TK.mjs");
21
21
  return initCommandImpl();
22
22
  };
23
23
  var loginCommand = async () => {
24
- const { loginCommand: loginCommandImpl } = await import("../login-3IM3PYSJ.mjs");
24
+ const { loginCommand: loginCommandImpl } = await import("../login-XY2RAXYR.mjs");
25
25
  return loginCommandImpl();
26
26
  };
27
27
  var listCommand = async () => {
28
- const { listCommand: listCommandImpl } = await import("../list-BQXECLEM.mjs");
28
+ const { listCommand: listCommandImpl } = await import("../list-5C6V2OEO.mjs");
29
29
  return listCommandImpl();
30
30
  };
31
31
  var syncCommand = async () => {
32
- const { syncCommand: syncCommandImpl } = await import("../sync-2MVHHWCX.mjs");
32
+ const { syncCommand: syncCommandImpl } = await import("../sync-X3KE2DNE.mjs");
33
33
  return syncCommandImpl();
34
34
  };
35
35
  var createCommand = async (name, options) => {
36
- const { createCommand: createCommandImpl } = await import("../create-LXQB4EFB.mjs");
36
+ const { createCommand: createCommandImpl } = await import("../create-YUOTG2TS.mjs");
37
37
  return createCommandImpl(name, options);
38
38
  };
39
39
  var program = new Command();
@@ -3,10 +3,10 @@
3
3
  var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
4
4
 
5
5
 
6
- var _chunkDZH6SY3Zjs = require('./chunk-DZH6SY3Z.js');
6
+ var _chunkGC7VHCU5js = require('./chunk-GC7VHCU5.js');
7
7
 
8
8
 
9
- var _chunk36XAYVMCjs = require('./chunk-36XAYVMC.js');
9
+ var _chunkWAAQLJ67js = require('./chunk-WAAQLJ67.js');
10
10
  require('./chunk-AZHZ4NB4.js');
11
11
  require('./chunk-OHM7JUMR.js');
12
12
 
@@ -21,7 +21,7 @@ var createCommand = async (name, _options) => {
21
21
  process.exit(1);
22
22
  }
23
23
  _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
24
- await _chunkDZH6SY3Zjs.ensureProjectInitialized.call(void 0, );
24
+ await _chunkGC7VHCU5js.ensureProjectInitialized.call(void 0, );
25
25
  const promptPath = path.join(
26
26
  process.cwd(),
27
27
  "prompts",
@@ -47,11 +47,11 @@ messages:
47
47
  content: "{{input}}"
48
48
  `;
49
49
  fs.writeFileSync(promptPath, defaultContent, "utf8");
50
- const promptsConfig = _chunk36XAYVMCjs.FileManager.loadPromptsConfig();
50
+ const promptsConfig = _chunkWAAQLJ67js.FileManager.loadPromptsConfig();
51
51
  const relativePath = path.relative(process.cwd(), promptPath);
52
52
  promptsConfig.prompts[name] = `file:${relativePath}`;
53
- _chunk36XAYVMCjs.FileManager.savePromptsConfig(promptsConfig);
54
- const lock = _chunk36XAYVMCjs.FileManager.loadPromptsLock();
53
+ _chunkWAAQLJ67js.FileManager.savePromptsConfig(promptsConfig);
54
+ const lock = _chunkWAAQLJ67js.FileManager.loadPromptsLock();
55
55
  lock.prompts[name] = {
56
56
  version: 0,
57
57
  // Local files start at version 0
@@ -59,7 +59,7 @@ messages:
59
59
  materialized: relativePath
60
60
  // Store the original file path
61
61
  };
62
- _chunk36XAYVMCjs.FileManager.savePromptsLock(lock);
62
+ _chunkWAAQLJ67js.FileManager.savePromptsLock(lock);
63
63
  const displayPath = `./${relativePath}`;
64
64
  console.log(
65
65
  _chalk2.default.green(`\u2713 Created prompt file: ${_chalk2.default.cyan(displayPath)}`)
@@ -77,4 +77,4 @@ messages:
77
77
 
78
78
 
79
79
  exports.createCommand = createCommand;
80
- //# sourceMappingURL=create-S5RDGF3H.js.map
80
+ //# sourceMappingURL=create-ACGBGFVO.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-S5RDGF3H.js","../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACZA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAOX,IAAM,cAAA,EAAgB,MAAA,CAC3B,IAAA,EACA,QAAA,EAAA,GACkB;AAClB,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,0CAAA,CAAY;AAGZ,IAAA,MAAM,uDAAA,CAAyB;AAG/B,IAAA,MAAM,WAAA,EAAkB,IAAA,CAAA,IAAA;AAAA,MACtB,OAAA,CAAQ,GAAA,CAAI,CAAA;AAAA,MACZ,SAAA;AAAA,MACA,CAAA,EAAA;AACF,IAAA;AAEA,IAAA;AACE,MAAA;AAAQ,QAAA;AAER,MAAA;AACA,MAAA;AACF,IAAA;AAGA,IAAA;AACA,IAAA;AACK,MAAA;AACL,IAAA;AAGA,IAAA;AAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWpB,IAAA;AAGH,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAGA,IAAA;AACA,IAAA;AACE,MAAA;AAAS;AACT,MAAA;AACA,MAAA;AAAc;AAChB,IAAA;AACA,IAAA;AAEA,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACE,IAAA;AACE,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AACF;ADZO;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-S5RDGF3H.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { ensureProjectInitialized } from \"../utils/init\";\n\ntype CreateOptions = Record<string, unknown>;\n\nexport const createCommand = async (\n name: string,\n _options: CreateOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Check if file already exists\n const promptPath = path.join(\n process.cwd(),\n \"prompts\",\n `${name}.prompt.yaml`,\n );\n\n if (fs.existsSync(promptPath)) {\n console.error(\n chalk.red(`Error: Prompt file already exists at ${promptPath}`),\n );\n process.exit(1);\n }\n\n // Create prompts directory if it doesn't exist\n const promptsDir = path.dirname(promptPath);\n if (!fs.existsSync(promptsDir)) {\n fs.mkdirSync(promptsDir, { recursive: true });\n }\n\n // Default prompt content\n const defaultContent = `model: openai/gpt-5\nmodelParameters:\n temperature: 0.7\nmessages:\n - role: system\n content: You are a helpful assistant.\n - role: user\n content: \"{{input}}\"\n`;\n\n // Write the file\n fs.writeFileSync(promptPath, defaultContent, \"utf8\");\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n const relativePath = path.relative(process.cwd(), promptPath);\n promptsConfig.prompts[name] = `file:${relativePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: relativePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n const displayPath = `./${relativePath}`;\n console.log(\n chalk.green(`✓ Created prompt file: ${chalk.cyan(displayPath)}`),\n );\n console.log(chalk.gray(` Edit this file and then run:`));\n console.log(chalk.cyan(` langwatch prompt sync`));\n } catch (error) {\n console.error(\n chalk.red(\"Unexpected error:\"),\n error instanceof Error ? error.message : error,\n );\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-ACGBGFVO.js","../src/cli/commands/create.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACZA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAOX,IAAM,cAAA,EAAgB,MAAA,CAC3B,IAAA,EACA,QAAA,EAAA,GACkB;AAClB,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,0CAAA,CAAY;AAGZ,IAAA,MAAM,uDAAA,CAAyB;AAG/B,IAAA,MAAM,WAAA,EAAkB,IAAA,CAAA,IAAA;AAAA,MACtB,OAAA,CAAQ,GAAA,CAAI,CAAA;AAAA,MACZ,SAAA;AAAA,MACA,CAAA,EAAA;AACF,IAAA;AAEA,IAAA;AACE,MAAA;AAAQ,QAAA;AAER,MAAA;AACA,MAAA;AACF,IAAA;AAGA,IAAA;AACA,IAAA;AACK,MAAA;AACL,IAAA;AAGA,IAAA;AAAuB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWpB,IAAA;AAGH,IAAA;AACA,IAAA;AACA,IAAA;AACA,IAAA;AAGA,IAAA;AACA,IAAA;AACE,MAAA;AAAS;AACT,MAAA;AACA,MAAA;AAAc;AAChB,IAAA;AACA,IAAA;AAEA,IAAA;AACA,IAAA;AACE,MAAA;AACF,IAAA;AACA,IAAA;AACA,IAAA;AACF,EAAA;AACE,IAAA;AACE,MAAA;AACA,MAAA;AACF,IAAA;AACA,IAAA;AACF,EAAA;AACF;ADZO;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/create-ACGBGFVO.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { ensureProjectInitialized } from \"../utils/init\";\n\ntype CreateOptions = Record<string, unknown>;\n\nexport const createCommand = async (\n name: string,\n _options: CreateOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Check if file already exists\n const promptPath = path.join(\n process.cwd(),\n \"prompts\",\n `${name}.prompt.yaml`,\n );\n\n if (fs.existsSync(promptPath)) {\n console.error(\n chalk.red(`Error: Prompt file already exists at ${promptPath}`),\n );\n process.exit(1);\n }\n\n // Create prompts directory if it doesn't exist\n const promptsDir = path.dirname(promptPath);\n if (!fs.existsSync(promptsDir)) {\n fs.mkdirSync(promptsDir, { recursive: true });\n }\n\n // Default prompt content\n const defaultContent = `model: openai/gpt-5\nmodelParameters:\n temperature: 0.7\nmessages:\n - role: system\n content: You are a helpful assistant.\n - role: user\n content: \"{{input}}\"\n`;\n\n // Write the file\n fs.writeFileSync(promptPath, defaultContent, \"utf8\");\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n const relativePath = path.relative(process.cwd(), promptPath);\n promptsConfig.prompts[name] = `file:${relativePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: relativePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n const displayPath = `./${relativePath}`;\n console.log(\n chalk.green(`✓ Created prompt file: ${chalk.cyan(displayPath)}`),\n );\n console.log(chalk.gray(` Edit this file and then run:`));\n console.log(chalk.cyan(` langwatch prompt sync`));\n } catch (error) {\n console.error(\n chalk.red(\"Unexpected error:\"),\n error instanceof Error ? error.message : error,\n );\n process.exit(1);\n }\n};\n"]}
@@ -3,10 +3,10 @@ import {
3
3
  } from "./chunk-DHJKJVY7.mjs";
4
4
  import {
5
5
  ensureProjectInitialized
6
- } from "./chunk-AD7QRYIJ.mjs";
6
+ } from "./chunk-MBXENFRR.mjs";
7
7
  import {
8
8
  FileManager
9
- } from "./chunk-PYVDTUA6.mjs";
9
+ } from "./chunk-O6D3W3PG.mjs";
10
10
  import "./chunk-BTBSMJTY.mjs";
11
11
  import "./chunk-URTD2WOC.mjs";
12
12
 
@@ -77,4 +77,4 @@ messages:
77
77
  export {
78
78
  createCommand
79
79
  };
80
- //# sourceMappingURL=create-LXQB4EFB.mjs.map
80
+ //# sourceMappingURL=create-YUOTG2TS.mjs.map
@@ -3,7 +3,7 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
3
3
  import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
4
4
  import { a as SemConvLogRecordAttributes, S as SemConvAttributes } from './types-DRiQaKFG.mjs';
5
5
  import { TracerProvider } from '@opentelemetry/api';
6
- import { a as LangWatchTracer } from './types-DbPAi4US.mjs';
6
+ import { a as LangWatchTracer } from './types-DoNHhlm6.mjs';
7
7
 
8
8
  /**
9
9
  * Filterable Batch Span Exporter for OpenTelemetry
@@ -3,7 +3,7 @@ import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
3
3
  import { Logger, LogRecord, LoggerProvider } from '@opentelemetry/api-logs';
4
4
  import { a as SemConvLogRecordAttributes, S as SemConvAttributes } from './types-DRiQaKFG.js';
5
5
  import { TracerProvider } from '@opentelemetry/api';
6
- import { a as LangWatchTracer } from './types-B9772cUR.js';
6
+ import { a as LangWatchTracer } from './types-DOVKZCnN.js';
7
7
 
8
8
  /**
9
9
  * Filterable Batch Span Exporter for OpenTelemetry
package/dist/index.d.mts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { L as Logger, C as ConsoleLogger, N as NoOpLogger } from './index-D7rKIGrO.mjs';
2
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-nE9dgTwc.mjs';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-BhgBtqp4.mjs';
3
3
  export { l as attributes } from './types-DRiQaKFG.mjs';
4
- import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-DbPAi4US.mjs';
4
+ import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-DoNHhlm6.mjs';
5
5
  import openApiCreateClient from 'openapi-fetch';
6
6
  import { z } from 'zod';
7
7
  import '@opentelemetry/sdk-trace-base';
@@ -197,6 +197,8 @@ declare class FileManager {
197
197
  private static readonly PROMPTS_LOCK_FILE;
198
198
  private static readonly PROMPTS_DIR;
199
199
  private static readonly MATERIALIZED_DIR;
200
+ private static _projectRoot;
201
+ private static findProjectRoot;
200
202
  static getPromptsConfigPath(): string;
201
203
  static getPromptsLockPath(): string;
202
204
  static getPromptsDir(): string;
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { L as Logger, C as ConsoleLogger, N as NoOpLogger } from './index-D7rKIGrO.js';
2
- export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-DsHp9FYU.js';
2
+ export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, S as SpanProcessingExcludeRule, g as getLangWatchLogger, d as getLangWatchTracer } from './implementation-JKO2kHPl.js';
3
3
  export { l as attributes } from './types-DRiQaKFG.js';
4
- import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-B9772cUR.js';
4
+ import { p as paths, P as PromptResponse, g as CreatePromptBody, U as UpdatePromptBody, h as PromptData, i as Prompt } from './types-DOVKZCnN.js';
5
5
  import openApiCreateClient from 'openapi-fetch';
6
6
  import { z } from 'zod';
7
7
  import '@opentelemetry/sdk-trace-base';
@@ -197,6 +197,8 @@ declare class FileManager {
197
197
  private static readonly PROMPTS_LOCK_FILE;
198
198
  private static readonly PROMPTS_DIR;
199
199
  private static readonly MATERIALIZED_DIR;
200
+ private static _projectRoot;
201
+ private static findProjectRoot;
200
202
  static getPromptsConfigPath(): string;
201
203
  static getPromptsLockPath(): string;
202
204
  static getPromptsDir(): string;
package/dist/index.js CHANGED
@@ -4,28 +4,28 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkD7UAKYVIjs = require('./chunk-D7UAKYVI.js');
7
+ var _chunkJ4YLJUX5js = require('./chunk-J4YLJUX5.js');
8
8
 
9
9
 
10
10
  var _chunkSNDTNU3Tjs = require('./chunk-SNDTNU3T.js');
11
11
 
12
12
 
13
- var _chunkVMZUN4EFjs = require('./chunk-VMZUN4EF.js');
13
+ var _chunkBP2WGNIVjs = require('./chunk-BP2WGNIV.js');
14
14
 
15
15
 
16
16
 
17
- var _chunkJ55AV2YWjs = require('./chunk-J55AV2YW.js');
17
+ var _chunkMZ2O5ZJLjs = require('./chunk-MZ2O5ZJL.js');
18
18
 
19
19
 
20
20
 
21
21
 
22
- var _chunk5HAVK64Qjs = require('./chunk-5HAVK64Q.js');
22
+ var _chunkBKVMRI32js = require('./chunk-BKVMRI32.js');
23
23
 
24
24
 
25
25
 
26
26
 
27
27
  var _chunkCKIZDPIJjs = require('./chunk-CKIZDPIJ.js');
28
- require('./chunk-36XAYVMC.js');
28
+ require('./chunk-WAAQLJ67.js');
29
29
  require('./chunk-AZHZ4NB4.js');
30
30
 
31
31
 
@@ -46,13 +46,13 @@ var TracesError = class extends Error {
46
46
  };
47
47
 
48
48
  // src/client-sdk/services/traces/tracing/tracer.ts
49
- var tracer = _chunkVMZUN4EFjs.getLangWatchTracer.call(void 0, `${_chunk5HAVK64Qjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunk5HAVK64Qjs.LANGWATCH_SDK_VERSION);
49
+ var tracer = _chunkBP2WGNIVjs.getLangWatchTracer.call(void 0, `${_chunkBKVMRI32js.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunkBKVMRI32js.LANGWATCH_SDK_VERSION);
50
50
 
51
51
  // src/client-sdk/services/traces/service.ts
52
52
  var TracesService = class {
53
53
  constructor(config) {
54
54
  this.config = config;
55
- return _chunkD7UAKYVIjs.createTracingProxy.call(void 0,
55
+ return _chunkJ4YLJUX5js.createTracingProxy.call(void 0,
56
56
  this,
57
57
  tracer
58
58
  );
@@ -115,15 +115,15 @@ var LangWatch = class {
115
115
  _chunkOHM7JUMRjs.__privateAdd.call(void 0, this, _LangWatch_instances);
116
116
  var _a, _b, _c, _d;
117
117
  const apiKey = (_b = (_a = options.apiKey) != null ? _a : process.env.LANGWATCH_API_KEY) != null ? _b : "";
118
- const endpoint = (_d = (_c = options.endpoint) != null ? _c : process.env.LANGWATCH_ENDPOINT) != null ? _d : _chunk5HAVK64Qjs.DEFAULT_ENDPOINT;
118
+ const endpoint = (_d = (_c = options.endpoint) != null ? _c : process.env.LANGWATCH_ENDPOINT) != null ? _d : _chunkBKVMRI32js.DEFAULT_ENDPOINT;
119
119
  this.config = _chunkOHM7JUMRjs.__privateMethod.call(void 0, this, _LangWatch_instances, createInternalConfig_fn).call(this, {
120
120
  apiKey,
121
121
  endpoint,
122
122
  options: options.options
123
123
  });
124
- this.prompts = new (0, _chunkD7UAKYVIjs.PromptsFacade)(_chunkOHM7JUMRjs.__spreadValues.call(void 0, {
125
- promptsApiService: new (0, _chunkD7UAKYVIjs.PromptsApiService)(this.config),
126
- localPromptsService: new (0, _chunkD7UAKYVIjs.LocalPromptsService)()
124
+ this.prompts = new (0, _chunkJ4YLJUX5js.PromptsFacade)(_chunkOHM7JUMRjs.__spreadValues.call(void 0, {
125
+ promptsApiService: new (0, _chunkJ4YLJUX5js.PromptsApiService)(this.config),
126
+ localPromptsService: new (0, _chunkJ4YLJUX5js.LocalPromptsService)()
127
127
  }, this.config));
128
128
  this.traces = new TracesFacade(this.config);
129
129
  }
@@ -140,7 +140,7 @@ createInternalConfig_fn = function({
140
140
  var _a;
141
141
  return {
142
142
  logger: (_a = options == null ? void 0 : options.logger) != null ? _a : new (0, _chunkCKIZDPIJjs.NoOpLogger)(),
143
- langwatchApiClient: _chunkD7UAKYVIjs.createLangWatchApiClient.call(void 0, apiKey, endpoint)
143
+ langwatchApiClient: _chunkJ4YLJUX5js.createLangWatchApiClient.call(void 0, apiKey, endpoint)
144
144
  };
145
145
  };
146
146
 
@@ -157,5 +157,5 @@ var logger = {
157
157
 
158
158
 
159
159
 
160
- exports.FilterableBatchSpanProcessor = _chunkSNDTNU3Tjs.FilterableBatchSpanProcessor; exports.LangWatch = LangWatch; exports.LangWatchExporter = _chunkJ55AV2YWjs.LangWatchTraceExporter; exports.attributes = _chunkCKIZDPIJjs.attributes_exports; exports.getLangWatchLogger = _chunkJ55AV2YWjs.getLangWatchLogger; exports.getLangWatchTracer = _chunkVMZUN4EFjs.getLangWatchTracer; exports.logger = logger;
160
+ exports.FilterableBatchSpanProcessor = _chunkSNDTNU3Tjs.FilterableBatchSpanProcessor; exports.LangWatch = LangWatch; exports.LangWatchExporter = _chunkMZ2O5ZJLjs.LangWatchTraceExporter; exports.attributes = _chunkCKIZDPIJjs.attributes_exports; exports.getLangWatchLogger = _chunkMZ2O5ZJLjs.getLangWatchLogger; exports.getLangWatchTracer = _chunkBP2WGNIVjs.getLangWatchTracer; exports.logger = logger;
161
161
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -4,28 +4,28 @@ import {
4
4
  PromptsFacade,
5
5
  createLangWatchApiClient,
6
6
  createTracingProxy
7
- } from "./chunk-EPGKOTSN.mjs";
7
+ } from "./chunk-QPHTXDJ5.mjs";
8
8
  import {
9
9
  FilterableBatchSpanProcessor
10
10
  } from "./chunk-FEL5FLHA.mjs";
11
11
  import {
12
12
  getLangWatchTracer
13
- } from "./chunk-UNMZPS55.mjs";
13
+ } from "./chunk-DQU2PZAL.mjs";
14
14
  import {
15
15
  LangWatchTraceExporter,
16
16
  getLangWatchLogger
17
- } from "./chunk-7MG7DGPP.mjs";
17
+ } from "./chunk-HRPIRC67.mjs";
18
18
  import {
19
19
  DEFAULT_ENDPOINT,
20
20
  LANGWATCH_SDK_NAME_CLIENT,
21
21
  LANGWATCH_SDK_VERSION
22
- } from "./chunk-7VHZNB2S.mjs";
22
+ } from "./chunk-VMI2XPCC.mjs";
23
23
  import {
24
24
  ConsoleLogger,
25
25
  NoOpLogger,
26
26
  attributes_exports
27
27
  } from "./chunk-I2SOBPAF.mjs";
28
- import "./chunk-PYVDTUA6.mjs";
28
+ import "./chunk-O6D3W3PG.mjs";
29
29
  import "./chunk-BTBSMJTY.mjs";
30
30
  import {
31
31
  __privateAdd,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  initializeProject
3
- } from "./chunk-AD7QRYIJ.mjs";
4
- import "./chunk-PYVDTUA6.mjs";
3
+ } from "./chunk-MBXENFRR.mjs";
4
+ import "./chunk-O6D3W3PG.mjs";
5
5
  import "./chunk-BTBSMJTY.mjs";
6
6
  import "./chunk-URTD2WOC.mjs";
7
7
 
@@ -12,4 +12,4 @@ var initCommand = async () => {
12
12
  export {
13
13
  initCommand
14
14
  };
15
- //# sourceMappingURL=init-T4YDPHBA.mjs.map
15
+ //# sourceMappingURL=init-ED3OW3TK.mjs.map
@@ -1,15 +1,15 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkDZH6SY3Zjs = require('./chunk-DZH6SY3Z.js');
4
- require('./chunk-36XAYVMC.js');
3
+ var _chunkGC7VHCU5js = require('./chunk-GC7VHCU5.js');
4
+ require('./chunk-WAAQLJ67.js');
5
5
  require('./chunk-AZHZ4NB4.js');
6
6
  require('./chunk-OHM7JUMR.js');
7
7
 
8
8
  // src/cli/commands/init.ts
9
9
  var initCommand = async () => {
10
- await _chunkDZH6SY3Zjs.initializeProject.call(void 0, );
10
+ await _chunkGC7VHCU5js.initializeProject.call(void 0, );
11
11
  };
12
12
 
13
13
 
14
14
  exports.initCommand = initCommand;
15
- //# sourceMappingURL=init-UADBKUJU.js.map
15
+ //# sourceMappingURL=init-UFZF26SF.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-UADBKUJU.js","../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACLO,IAAM,YAAA,EAAc,MAAA,CAAA,EAAA,GAA2B;AACpD,EAAA,MAAM,gDAAA,CAAkB;AAC1B,CAAA;ADOA;AACE;AACF,kCAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-UADBKUJU.js","sourcesContent":[null,"import { initializeProject } from \"../utils/init\";\n\nexport const initCommand = async (): Promise<void> => {\n await initializeProject();\n};"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-UFZF26SF.js","../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACLO,IAAM,YAAA,EAAc,MAAA,CAAA,EAAA,GAA2B;AACpD,EAAA,MAAM,gDAAA,CAAkB;AAC1B,CAAA;ADOA;AACE;AACF,kCAAC","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/init-UFZF26SF.js","sourcesContent":[null,"import { initializeProject } from \"../utils/init\";\n\nexport const initCommand = async (): Promise<void> => {\n await initializeProject();\n};"]}
@@ -4,13 +4,13 @@ import {
4
4
  import {
5
5
  PromptsApiService,
6
6
  PromptsError
7
- } from "./chunk-EPGKOTSN.mjs";
7
+ } from "./chunk-QPHTXDJ5.mjs";
8
8
  import "./chunk-FEL5FLHA.mjs";
9
- import "./chunk-UNMZPS55.mjs";
10
- import "./chunk-7MG7DGPP.mjs";
11
- import "./chunk-7VHZNB2S.mjs";
9
+ import "./chunk-DQU2PZAL.mjs";
10
+ import "./chunk-HRPIRC67.mjs";
11
+ import "./chunk-VMI2XPCC.mjs";
12
12
  import "./chunk-I2SOBPAF.mjs";
13
- import "./chunk-PYVDTUA6.mjs";
13
+ import "./chunk-O6D3W3PG.mjs";
14
14
  import "./chunk-BTBSMJTY.mjs";
15
15
  import "./chunk-URTD2WOC.mjs";
16
16
 
@@ -145,4 +145,4 @@ var listCommand = async () => {
145
145
  export {
146
146
  listCommand
147
147
  };
148
- //# sourceMappingURL=list-BQXECLEM.mjs.map
148
+ //# sourceMappingURL=list-5C6V2OEO.mjs.map