langwatch 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/dist/{add-M7C2SHH6.mjs → add-5RVW7RGD.mjs} +4 -4
  2. package/dist/{add-EVFFDW2A.js → add-MJE7G2BM.js} +7 -7
  3. package/dist/{add-EVFFDW2A.js.map → add-MJE7G2BM.js.map} +1 -1
  4. package/dist/{chunk-4SKRBJ7S.mjs → chunk-3NPLA2MU.mjs} +2 -2
  5. package/dist/{chunk-HHUV6AIH.mjs → chunk-AXCVJYSK.mjs} +2 -2
  6. package/dist/{chunk-QMBVJJ7O.js → chunk-DKEWJFMO.js} +14 -14
  7. package/dist/{chunk-QMBVJJ7O.js.map → chunk-DKEWJFMO.js.map} +1 -1
  8. package/dist/{chunk-IM26RCOC.js → chunk-EHWKVO46.js} +21 -24
  9. package/dist/chunk-EHWKVO46.js.map +1 -0
  10. package/dist/{chunk-HHVHS252.js → chunk-KIFN3ONO.js} +11 -11
  11. package/dist/{chunk-HHVHS252.js.map → chunk-KIFN3ONO.js.map} +1 -1
  12. package/dist/{chunk-ZUZDSFF3.mjs → chunk-MRQNP55T.mjs} +14 -17
  13. package/dist/chunk-MRQNP55T.mjs.map +1 -0
  14. package/dist/{chunk-KTGDPRNQ.mjs → chunk-NKGYK3B7.mjs} +3 -3
  15. package/dist/{chunk-A6TFUHIB.js → chunk-RPCEDRSR.js} +2 -2
  16. package/dist/{chunk-A6TFUHIB.js.map → chunk-RPCEDRSR.js.map} +1 -1
  17. package/dist/{chunk-SLQLYGFZ.js → chunk-SAEA37H5.js} +4 -4
  18. package/dist/{chunk-SLQLYGFZ.js.map → chunk-SAEA37H5.js.map} +1 -1
  19. package/dist/{chunk-BLAK7SL3.mjs → chunk-WQ7AKXY7.mjs} +2 -2
  20. package/dist/{chunk-BLAK7SL3.mjs.map → chunk-WQ7AKXY7.mjs.map} +1 -1
  21. package/dist/{chunk-KBV3UJEZ.mjs → chunk-WSSWTQIB.mjs} +2 -2
  22. package/dist/{chunk-NWFQOLJI.js → chunk-XEYCRZ64.js} +4 -4
  23. package/dist/{chunk-NWFQOLJI.js.map → chunk-XEYCRZ64.js.map} +1 -1
  24. package/dist/cli/index.js +8 -8
  25. package/dist/cli/index.mjs +8 -8
  26. package/dist/index.js +14 -14
  27. package/dist/index.mjs +4 -4
  28. package/dist/{list-TFMD5BMK.mjs → list-IGP275AO.mjs} +4 -4
  29. package/dist/{list-GT7Y62ZX.js → list-QMPURSWH.js} +7 -7
  30. package/dist/{list-GT7Y62ZX.js.map → list-QMPURSWH.js.map} +1 -1
  31. package/dist/{login-EFCVED4N.mjs → login-EBPGM5GC.mjs} +2 -2
  32. package/dist/{login-PUVTWTBN.js → login-ZKVIVJC6.js} +3 -3
  33. package/dist/{login-PUVTWTBN.js.map → login-ZKVIVJC6.js.map} +1 -1
  34. package/dist/observability-sdk/index.js +3 -3
  35. package/dist/observability-sdk/index.mjs +2 -2
  36. package/dist/observability-sdk/setup/node/index.js +4 -4
  37. package/dist/observability-sdk/setup/node/index.mjs +3 -3
  38. package/dist/{pull-N4XHB5X6.js → pull-22TPEMFM.js} +6 -6
  39. package/dist/{pull-N4XHB5X6.js.map → pull-22TPEMFM.js.map} +1 -1
  40. package/dist/{pull-D423APC3.mjs → pull-3NWDN7CX.mjs} +5 -5
  41. package/dist/{push-XKUPVH5J.mjs → push-3CMG3MTX.mjs} +5 -5
  42. package/dist/{push-W3JKQZZB.js → push-7WZUQYC3.js} +6 -6
  43. package/dist/{push-W3JKQZZB.js.map → push-7WZUQYC3.js.map} +1 -1
  44. package/dist/{remove-VE7DNGO5.js → remove-HPZGTSOK.js} +6 -6
  45. package/dist/{remove-VE7DNGO5.js.map → remove-HPZGTSOK.js.map} +1 -1
  46. package/dist/{remove-I7AR2UEV.mjs → remove-QJJWZ2ZA.mjs} +4 -4
  47. package/dist/{sync-V6PBB7AZ.js → sync-67UMHLSY.js} +10 -10
  48. package/dist/{sync-V6PBB7AZ.js.map → sync-67UMHLSY.js.map} +1 -1
  49. package/dist/{sync-T7SI3YTF.mjs → sync-BNPR6W4G.mjs} +6 -6
  50. package/package.json +30 -1
  51. package/dist/chunk-IM26RCOC.js.map +0 -1
  52. package/dist/chunk-ZUZDSFF3.mjs.map +0 -1
  53. /package/dist/{add-M7C2SHH6.mjs.map → add-5RVW7RGD.mjs.map} +0 -0
  54. /package/dist/{chunk-4SKRBJ7S.mjs.map → chunk-3NPLA2MU.mjs.map} +0 -0
  55. /package/dist/{chunk-HHUV6AIH.mjs.map → chunk-AXCVJYSK.mjs.map} +0 -0
  56. /package/dist/{chunk-KTGDPRNQ.mjs.map → chunk-NKGYK3B7.mjs.map} +0 -0
  57. /package/dist/{chunk-KBV3UJEZ.mjs.map → chunk-WSSWTQIB.mjs.map} +0 -0
  58. /package/dist/{list-TFMD5BMK.mjs.map → list-IGP275AO.mjs.map} +0 -0
  59. /package/dist/{login-EFCVED4N.mjs.map → login-EBPGM5GC.mjs.map} +0 -0
  60. /package/dist/{pull-D423APC3.mjs.map → pull-3NWDN7CX.mjs.map} +0 -0
  61. /package/dist/{push-XKUPVH5J.mjs.map → push-3CMG3MTX.mjs.map} +0 -0
  62. /package/dist/{remove-I7AR2UEV.mjs.map → remove-QJJWZ2ZA.mjs.map} +0 -0
  63. /package/dist/{sync-T7SI3YTF.mjs.map → sync-BNPR6W4G.mjs.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-SLQLYGFZ.js","../src/cli/commands/push.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-SLQLYGFZ.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsApiService,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport readline from \"node:readline\";\n\n// Handle conflict resolution - show diff and ask user to choose\nconst handleConflict = async (\n promptName: string,\n conflictInfo: {\n localVersion: number;\n remoteVersion: number;\n differences: string[];\n remoteConfigData: any;\n }\n): Promise<\"local\" | \"remote\" | \"abort\"> => {\n console.log(\n chalk.yellow(`\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`)\n );\n console.log(\n chalk.gray(\n `Local version: ${conflictInfo.localVersion}, Remote version: ${conflictInfo.remoteVersion}`\n )\n );\n\n if (conflictInfo.differences.length > 0) {\n console.log(chalk.yellow(\"\\nDifferences:\"));\n conflictInfo.differences.forEach((diff) => {\n console.log(chalk.gray(` • ${diff}`));\n });\n }\n\n console.log(chalk.yellow(\"\\nOptions:\"));\n console.log(\" [l] Use local version (overwrite remote)\");\n console.log(\" [r] Use remote version (overwrite local)\");\n console.log(\" [a] Abort push for this prompt\");\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(\"Choose resolution (l/r/a): \", (answer: string) => {\n rl.close();\n const choice = answer.toLowerCase();\n if (choice === \"l\" || choice === \"local\") {\n resolve(\"local\");\n } else if (choice === \"r\" || choice === \"remote\") {\n resolve(\"remote\");\n } else {\n resolve(\"abort\");\n }\n });\n });\n};\n\n/**\n * Core push logic: pushes local prompts to the server.\n * Returns the result and mutates the lock object in place.\n */\nexport const pushPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n}): Promise<void> => {\n const localFileRefs = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n return typeof dependency === \"string\" && dependency.startsWith(\"file:\");\n }\n );\n\n if (localFileRefs.length > 0) {\n const pushSpinner = ora(\n `Pushing ${localFileRefs.length} local prompts...`\n ).start();\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Build outputs based on response_format if present\n const responseFormat = (localConfig as any).response_format;\n let outputs: ConfigData[\"outputs\"] = [{ identifier: \"output\", type: \"str\" }];\n if (responseFormat?.schema) {\n outputs = [\n {\n identifier: responseFormat.name ?? \"output\",\n type: \"json_schema\",\n json_schema: responseFormat.schema,\n },\n ];\n }\n\n const configData: ConfigData = {\n model: localConfig.model,\n prompt: PromptConverter.extractSystemPrompt(localConfig.messages),\n messages: PromptConverter.filterNonSystemMessages(\n localConfig.messages\n ) as Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n temperature: localConfig.modelParameters?.temperature,\n max_tokens: localConfig.modelParameters?.max_tokens,\n inputs: [{ identifier: \"input\", type: \"str\" }],\n outputs,\n // response_format is derived from outputs on the server side\n };\n\n const syncResult = await promptsApiService.sync({\n name: promptName,\n configData,\n localVersion: currentVersion,\n commitMessage: `Synced from local file: ${path.basename(filePath)}`,\n });\n\n const relativePath = path.relative(process.cwd(), filePath);\n\n let conflictResolution: \"local\" | \"remote\" | \"abort\" | null = null;\n if (syncResult.action === \"conflict\") {\n pushSpinner.stop();\n conflictResolution = await handleConflict(\n promptName,\n syncResult.conflictInfo!\n );\n if (conflictResolution === \"abort\") {\n result.errors.push({\n name: promptName,\n error: \"Push aborted due to conflict\",\n });\n continue;\n }\n\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n const remoteConfig = {\n model: syncResult.conflictInfo.remoteConfigData.model,\n modelParameters: {\n temperature:\n syncResult.conflictInfo.remoteConfigData.temperature,\n max_tokens:\n syncResult.conflictInfo.remoteConfigData.max_tokens,\n },\n messages: [\n {\n role: \"system\" as const,\n content: syncResult.conflictInfo.remoteConfigData.prompt,\n },\n ...(syncResult.conflictInfo.remoteConfigData.messages ?? []),\n ],\n };\n\n const yamlContent = yaml.dump(remoteConfig, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n });\n\n fs.writeFileSync(filePath, yamlContent);\n }\n\n pushSpinner.start();\n }\n\n if (syncResult.prompt) {\n lock.prompts[promptName] = {\n version: syncResult.prompt.version,\n versionId: syncResult.prompt.versionId,\n materialized: filePath,\n };\n } else if (syncResult.action === \"conflict\") {\n const remoteVersion = syncResult.conflictInfo?.remoteVersion ?? 0;\n if (conflictResolution === \"remote\") {\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\",\n materialized: filePath,\n };\n } else {\n const formattedConfig = PromptConverter.fromLocalToApiFormat(localConfig);\n const updatedPrompt = await promptsApiService.update(promptName, {\n ...formattedConfig,\n commitMessage: `Updated via CLI: synced from local file`\n });\n lock.prompts[promptName] = {\n version: updatedPrompt.version,\n versionId: updatedPrompt.versionId,\n materialized: filePath,\n };\n }\n }\n\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\";\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\",\n });\n } else {\n actionText = \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1,\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n actionText = \"Up-to-date\";\n result.unchanged.push(promptName);\n } else {\n const actionMap: Record<SyncAction, string> = {\n created: \"Created\",\n updated: \"Updated\",\n conflict: \"Conflict resolved\",\n up_to_date: \"Up to date\",\n };\n actionText = actionMap[syncResult.action as SyncAction] || \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: syncResult.prompt?.version ?? 0,\n });\n }\n\n pushSpinner.text = `${actionText} ${chalk.cyan(\n promptName\n )} ${chalk.gray(\n `(version ${\n syncResult.prompt?.version ??\n syncResult.conflictInfo?.remoteVersion ??\n \"unknown\"\n })`\n )} ${conflictResolution === \"remote\" ? \"to\" : \"from\"} ${chalk.gray(\n relativePath\n )}`;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name: promptName, error: errorMessage });\n }\n }\n\n pushSpinner.stop();\n }\n\n // Check for orphan local prompt files and show helpful warnings\n const discoveredLocalFiles = FileManager.getLocalPromptFiles();\n const orphanFiles = discoveredLocalFiles.filter((filePath) => {\n const promptName = FileManager.promptNameFromPath(filePath);\n return !config.prompts[promptName];\n });\n\n if (orphanFiles.length > 0) {\n console.log(\n chalk.yellow(\n `\\n⚠ Found ${orphanFiles.length} orphan prompt file${\n orphanFiles.length > 1 ? \"s\" : \"\"\n }:`\n )\n );\n\n for (const filePath of orphanFiles) {\n const promptName = FileManager.promptNameFromPath(filePath);\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.yellow(` ${relativePath}`));\n console.log(\n chalk.gray(\n ` Add to prompts.json: \"${promptName}\": \"file:${relativePath}\"`\n )\n );\n }\n\n console.log(\n chalk.gray(\n `\\nTip: Add these to prompts.json to include them in push operations.`\n )\n );\n }\n};\n\nconst printPushResults = ({\n result,\n duration,\n}: {\n result: SyncResult;\n duration: string;\n}): void => {\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n if (result.fetched.length > 0) {\n for (const { name, version } of result.fetched) {\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} (resolved conflict with remote)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.pushed.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pushed in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} pulled (conflict resolution)`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pushed ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pushCommand = async (): Promise<void> => {\n console.log(\"⬆️ Pushing local prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pushPrompts({ config, lock, promptsApiService, result });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPushResults({ result, duration });\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n )\n );\n }\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-SAEA37H5.js","../src/cli/commands/push.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-SAEA37H5.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsApiService,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport readline from \"node:readline\";\n\n// Handle conflict resolution - show diff and ask user to choose\nconst handleConflict = async (\n promptName: string,\n conflictInfo: {\n localVersion: number;\n remoteVersion: number;\n differences: string[];\n remoteConfigData: any;\n }\n): Promise<\"local\" | \"remote\" | \"abort\"> => {\n console.log(\n chalk.yellow(`\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`)\n );\n console.log(\n chalk.gray(\n `Local version: ${conflictInfo.localVersion}, Remote version: ${conflictInfo.remoteVersion}`\n )\n );\n\n if (conflictInfo.differences.length > 0) {\n console.log(chalk.yellow(\"\\nDifferences:\"));\n conflictInfo.differences.forEach((diff) => {\n console.log(chalk.gray(` • ${diff}`));\n });\n }\n\n console.log(chalk.yellow(\"\\nOptions:\"));\n console.log(\" [l] Use local version (overwrite remote)\");\n console.log(\" [r] Use remote version (overwrite local)\");\n console.log(\" [a] Abort push for this prompt\");\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n });\n\n return new Promise((resolve) => {\n rl.question(\"Choose resolution (l/r/a): \", (answer: string) => {\n rl.close();\n const choice = answer.toLowerCase();\n if (choice === \"l\" || choice === \"local\") {\n resolve(\"local\");\n } else if (choice === \"r\" || choice === \"remote\") {\n resolve(\"remote\");\n } else {\n resolve(\"abort\");\n }\n });\n });\n};\n\n/**\n * Core push logic: pushes local prompts to the server.\n * Returns the result and mutates the lock object in place.\n */\nexport const pushPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n}): Promise<void> => {\n const localFileRefs = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n return typeof dependency === \"string\" && dependency.startsWith(\"file:\");\n }\n );\n\n if (localFileRefs.length > 0) {\n const pushSpinner = ora(\n `Pushing ${localFileRefs.length} local prompts...`\n ).start();\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Build outputs based on response_format if present\n const responseFormat = (localConfig as any).response_format;\n let outputs: ConfigData[\"outputs\"] = [{ identifier: \"output\", type: \"str\" }];\n if (responseFormat?.schema) {\n outputs = [\n {\n identifier: responseFormat.name ?? \"output\",\n type: \"json_schema\",\n json_schema: responseFormat.schema,\n },\n ];\n }\n\n const configData: ConfigData = {\n model: localConfig.model,\n prompt: PromptConverter.extractSystemPrompt(localConfig.messages),\n messages: PromptConverter.filterNonSystemMessages(\n localConfig.messages\n ) as Array<{\n role: \"system\" | \"user\" | \"assistant\";\n content: string;\n }>,\n temperature: localConfig.modelParameters?.temperature,\n max_tokens: localConfig.modelParameters?.max_tokens,\n inputs: [{ identifier: \"input\", type: \"str\" }],\n outputs,\n // response_format is derived from outputs on the server side\n };\n\n const syncResult = await promptsApiService.sync({\n name: promptName,\n configData,\n localVersion: currentVersion,\n commitMessage: `Synced from local file: ${path.basename(filePath)}`,\n });\n\n const relativePath = path.relative(process.cwd(), filePath);\n\n let conflictResolution: \"local\" | \"remote\" | \"abort\" | null = null;\n if (syncResult.action === \"conflict\") {\n pushSpinner.stop();\n conflictResolution = await handleConflict(\n promptName,\n syncResult.conflictInfo!\n );\n if (conflictResolution === \"abort\") {\n result.errors.push({\n name: promptName,\n error: \"Push aborted due to conflict\",\n });\n continue;\n }\n\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n const remoteConfig = {\n model: syncResult.conflictInfo.remoteConfigData.model,\n modelParameters: {\n temperature:\n syncResult.conflictInfo.remoteConfigData.temperature,\n max_tokens:\n syncResult.conflictInfo.remoteConfigData.max_tokens,\n },\n messages: [\n {\n role: \"system\" as const,\n content: syncResult.conflictInfo.remoteConfigData.prompt,\n },\n ...(syncResult.conflictInfo.remoteConfigData.messages ?? []),\n ],\n };\n\n const yamlContent = yaml.dump(remoteConfig, {\n lineWidth: -1,\n noRefs: true,\n sortKeys: false,\n });\n\n fs.writeFileSync(filePath, yamlContent);\n }\n\n pushSpinner.start();\n }\n\n if (syncResult.prompt) {\n lock.prompts[promptName] = {\n version: syncResult.prompt.version,\n versionId: syncResult.prompt.versionId,\n materialized: filePath,\n };\n } else if (syncResult.action === \"conflict\") {\n const remoteVersion = syncResult.conflictInfo?.remoteVersion ?? 0;\n if (conflictResolution === \"remote\") {\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\",\n materialized: filePath,\n };\n } else {\n const formattedConfig = PromptConverter.fromLocalToApiFormat(localConfig);\n const updatedPrompt = await promptsApiService.update(promptName, {\n ...formattedConfig,\n commitMessage: `Updated via CLI: synced from local file`\n });\n lock.prompts[promptName] = {\n version: updatedPrompt.version,\n versionId: updatedPrompt.versionId,\n materialized: filePath,\n };\n }\n }\n\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\";\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\",\n });\n } else {\n actionText = \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1,\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n actionText = \"Up-to-date\";\n result.unchanged.push(promptName);\n } else {\n const actionMap: Record<SyncAction, string> = {\n created: \"Created\",\n updated: \"Updated\",\n conflict: \"Conflict resolved\",\n up_to_date: \"Up to date\",\n };\n actionText = actionMap[syncResult.action as SyncAction] || \"Pushed\";\n result.pushed.push({\n name: promptName,\n version: syncResult.prompt?.version ?? 0,\n });\n }\n\n pushSpinner.text = `${actionText} ${chalk.cyan(\n promptName\n )} ${chalk.gray(\n `(version ${\n syncResult.prompt?.version ??\n syncResult.conflictInfo?.remoteVersion ??\n \"unknown\"\n })`\n )} ${conflictResolution === \"remote\" ? \"to\" : \"from\"} ${chalk.gray(\n relativePath\n )}`;\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name: promptName, error: errorMessage });\n }\n }\n\n pushSpinner.stop();\n }\n\n // Check for orphan local prompt files and show helpful warnings\n const discoveredLocalFiles = FileManager.getLocalPromptFiles();\n const orphanFiles = discoveredLocalFiles.filter((filePath) => {\n const promptName = FileManager.promptNameFromPath(filePath);\n return !config.prompts[promptName];\n });\n\n if (orphanFiles.length > 0) {\n console.log(\n chalk.yellow(\n `\\n⚠ Found ${orphanFiles.length} orphan prompt file${\n orphanFiles.length > 1 ? \"s\" : \"\"\n }:`\n )\n );\n\n for (const filePath of orphanFiles) {\n const promptName = FileManager.promptNameFromPath(filePath);\n const relativePath = path.relative(process.cwd(), filePath);\n\n console.log(chalk.yellow(` ${relativePath}`));\n console.log(\n chalk.gray(\n ` Add to prompts.json: \"${promptName}\": \"file:${relativePath}\"`\n )\n );\n }\n\n console.log(\n chalk.gray(\n `\\nTip: Add these to prompts.json to include them in push operations.`\n )\n );\n }\n};\n\nconst printPushResults = ({\n result,\n duration,\n}: {\n result: SyncResult;\n duration: string;\n}): void => {\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} from ${chalk.gray(localPath)}`\n )\n );\n }\n }\n\n if (result.fetched.length > 0) {\n for (const { name, version } of result.fetched) {\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`\n )} (resolved conflict with remote)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.pushed.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pushed in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} pulled (conflict resolution)`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pushed ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pushCommand = async (): Promise<void> => {\n console.log(\"⬆️ Pushing local prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pushPrompts({ config, lock, promptsApiService, result });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPushResults({ result, duration });\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n )\n );\n }\n process.exit(1);\n }\n};\n"]}
@@ -1,5 +1,5 @@
1
1
  // package.json
2
- var version = "0.17.0";
2
+ var version = "0.18.0";
3
3
 
4
4
  // src/internal/runtime.ts
5
5
  var _runtime;
@@ -60,4 +60,4 @@ export {
60
60
  TRACES_PATH,
61
61
  LOGS_PATH
62
62
  };
63
- //# sourceMappingURL=chunk-BLAK7SL3.mjs.map
63
+ //# sourceMappingURL=chunk-WQ7AKXY7.mjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../package.json","../src/internal/runtime.ts","../src/internal/constants.ts"],"sourcesContent":["{\n \"name\": \"langwatch\",\n \"version\": \"0.17.0\",\n \"description\": \"LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"author\": \"LangWatch\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=20\",\n \"pnpm\": \">=8\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"bin\": {\n \"langwatch\": \"./dist/cli/index.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability-sdk/index.d.ts\",\n \"require\": \"./dist/observability-sdk/index.js\",\n \"import\": \"./dist/observability-sdk/index.mjs\"\n },\n \"./observability/node\": {\n \"types\": \"./dist/observability-sdk/setup/node/index.d.ts\",\n \"require\": \"./dist/observability-sdk/setup/node/index.js\",\n \"import\": \"./dist/observability-sdk/setup/node/index.mjs\"\n },\n \"./observability/instrumentation/langchain\": {\n \"types\": \"./dist/observability-sdk/instrumentation/langchain/index.d.ts\",\n \"require\": \"./dist/observability-sdk/instrumentation/langchain/index.js\",\n \"import\": \"./dist/observability-sdk/instrumentation/langchain/index.mjs\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/langwatch/langwatch.git\",\n \"directory\": \"typescript-sdk\"\n },\n \"scripts\": {\n \"prepare\": \"pnpm run generate:server-types && pnpm run generate:openapi-types\",\n \"cli\": \"node dist/cli/index.js\",\n \"lint\": \"eslint .\",\n \"test\": \"vitest\",\n \"test:unit\": \"vitest run --exclude '**/*.integration.test.ts'\",\n \"test:e2e\": \"dotenv -- vitest run -c ./vitest.e2e.config.mts\",\n \"test:seed\": \"dotenv -e .env.test -- bash -c 'cd ../langwatch && pnpm prisma:seed'\",\n \"prebuild\": \"pnpm run prepare\",\n \"build\": \"tsc --noEmit && tsup\",\n \"tarball\": \"pnpm build && pnpm pack\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepublish\": \"pnpm run build\",\n \"generate:openapi-types\": \"pnpx openapi-typescript ../langwatch/src/app/api/openapiLangWatch.json -o ./src/internal/generated/openapi/api-client.ts\",\n \"generate:server-types\": \"./copy-types.sh\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.32.0\",\n \"@langchain/core\": \">=0.3.68 <0.4.0\",\n \"@langchain/langgraph\": \">=0.4.0 <1.0.0\",\n \"@langchain/openai\": \">=0.6.0 <1.0.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/sdk-trace-node\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-web\": \">=2.0.1\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.1.0\",\n \"@typescript/native-preview\": \"7.0.0-dev.20250804.1\",\n \"@vercel/otel\": \"^1.13.0\",\n \"@vitest/coverage-v8\": \"3.2.4\",\n \"dotenv-cli\": \"^11.0.0\",\n \"esbuild\": \"^0.27.3\",\n \"eslint\": \"^9.32.0\",\n \"fets\": \"^0.8.5\",\n \"fishery\": \"^2.3.1\",\n \"langchain\": \">=0.3.0 <2.0.0\",\n \"msw\": \"^2.10.4\",\n \"nock\": \"^14.0.8\",\n \"openapi-msw\": \"^1.2.0\",\n \"ts-to-zod\": \"4.0.1\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"typescript-eslint\": \"^8.38.0\",\n \"vitest\": \"^3.2.4\",\n \"vitest-mock-extended\": \"^3.1.0\",\n \"yaml\": \"^2.8.1\",\n \"@opentelemetry/api\": \"^1.9.0\"\n },\n \"dependencies\": {\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-metrics\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.36.0\",\n \"@types/prompts\": \"^2.4.9\",\n \"chalk\": \"^4.1.2\",\n \"commander\": \"^12.0.0\",\n \"dotenv\": \"^17.3.1\",\n \"js-yaml\": \"^4.1.0\",\n \"liquidjs\": \"^10.21.1\",\n \"open\": \"^11.0.0\",\n \"openapi-fetch\": \"^0.16.0\",\n \"ora\": \"^9.3.0\",\n \"prompts\": \"^2.4.2\",\n \"xksuid\": \"^0.0.4\",\n \"zod\": \"^4.0.14\"\n },\n \"peerDependencies\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@ai-sdk/openai\": \">=2.0.0 <3.0.0\",\n \"@langchain/core\": \">=0.3.0 <1.0.0\",\n \"@langchain/langgraph\": \">=0.4.0 <1.0.0\",\n \"@langchain/openai\": \">=0.6.0 <1.0.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/context-zone\": \">=1.19.0 <3.0.0\",\n \"@opentelemetry/sdk-node\": \">=0.200.0 <1.0.0\",\n \"@opentelemetry/sdk-trace-web\": \">=1.19.0 <3.0.0\",\n \"langchain\": \">=0.3.0 <2.0.0\"\n },\n \"pnpm\": {\n \"overrides\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"zod\": \"^4.0.14\"\n }\n }\n}\n","export type JsRuntime = \"node\" | \"deno\" | \"bun\" | \"web\" | \"unknown\";\n\nlet _runtime: JsRuntime | undefined;\n\n/**\n * Gets the cached JavaScript runtime environment.\n * @returns The detected runtime environment\n */\nexport const getRuntime = (): JsRuntime => {\n _runtime ??= detectRuntime();\n return _runtime;\n};\n\n/**\n * Resets the cached runtime. Only used for testing.\n * @internal\n */\nexport const resetRuntimeCache = (): void => {\n _runtime = undefined;\n};\n\n/**\n * Detects the JavaScript runtime environment.\n * @param globals - (Test only) Optionally override the global object for environment simulation. Only used if NODE_ENV === 'test'.\n */\nexport function detectRuntime(globals?: any): JsRuntime {\n let g = globalThis;\n if (globals) {\n if (process.env.NODE_ENV === \"test\") {\n g = globals;\n } else {\n console.warn(\"[LangWatch Observability] overriding detectRuntime is only supported when running in NODE_ENV=test\");\n }\n }\n\n try {\n if (\n \"Deno\" in g &&\n typeof g.Deno === \"object\" &&\n g.Deno &&\n 'version' in g.Deno &&\n typeof g.Deno.version === \"object\"\n ) {\n return \"deno\";\n }\n if (\n \"Bun\" in g &&\n typeof g.Bun === \"object\" &&\n g.Bun &&\n 'version' in g.Bun &&\n typeof g.Bun.version === \"string\"\n ) {\n return \"bun\";\n }\n if (\n \"process\" in g &&\n typeof g.process === \"object\" &&\n g.process &&\n typeof g.process.versions === \"object\" &&\n typeof g.process.versions.node === \"string\"\n ) {\n return \"node\";\n }\n if (\n typeof g.window?.document !== \"undefined\" &&\n g === g.window\n ) {\n return \"web\";\n }\n return \"unknown\";\n } catch (error) {\n console.warn(\"[LangWatch Observability] Failed to detect runtime\", error);\n return \"unknown\";\n }\n}\n","import { version } from \"../../package.json\";\nimport { getRuntime } from \"./runtime\";\n\nexport const LANGWATCH_SDK_RUNTIME = getRuntime;\n\nexport const LANGWATCH_SDK_NAME_OBSERVABILITY = \"langwatch-observability-sdk\";\nexport const LANGWATCH_SDK_NAME_CLIENT = \"langwatch-client-sdk\";\nexport const LANGWATCH_SDK_LANGUAGE = \"typescript\";\nexport const LANGWATCH_SDK_VERSION = version;\n\nexport const DEFAULT_ENDPOINT = \"https://app.langwatch.ai/\";\nexport const DEFAULT_SERVICE_NAME = \"unknown-service.langwatch\";\n\nexport const TRACES_PATH = \"/api/otel/v1/traces\";\nexport const LOGS_PATH = \"/api/otel/v1/logs\";\nexport const METRICS_PATH = \"/api/otel/v1/metrics\";\n"],"mappings":";AAEI,cAAW;;;ACAf,IAAI;AAMG,IAAM,aAAa,MAAiB;AACzC,2CAAa,cAAc;AAC3B,SAAO;AACT;AAcO,SAAS,cAAc,SAA0B;AAzBxD;AA0BE,MAAI,IAAI;AACR,MAAI,SAAS;AACX,QAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC,UAAI;AAAA,IACN,OAAO;AACL,cAAQ,KAAK,oGAAoG;AAAA,IACnH;AAAA,EACF;AAEA,MAAI;AACF,QACE,UAAU,KACV,OAAO,EAAE,SAAS,YAClB,EAAE,QACF,aAAa,EAAE,QACf,OAAO,EAAE,KAAK,YAAY,UAC1B;AACA,aAAO;AAAA,IACT;AACA,QACE,SAAS,KACT,OAAO,EAAE,QAAQ,YACjB,EAAE,OACF,aAAa,EAAE,OACf,OAAO,EAAE,IAAI,YAAY,UACzB;AACA,aAAO;AAAA,IACT;AACA,QACE,aAAa,KACb,OAAO,EAAE,YAAY,YACrB,EAAE,WACF,OAAO,EAAE,QAAQ,aAAa,YAC9B,OAAO,EAAE,QAAQ,SAAS,SAAS,UACnC;AACA,aAAO;AAAA,IACT;AACA,QACE,SAAO,OAAE,WAAF,mBAAU,cAAa,eAC9B,MAAM,EAAE,QACR;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,KAAK,sDAAsD,KAAK;AACxE,WAAO;AAAA,EACT;AACF;;;ACvEO,IAAM,wBAAwB;AAE9B,IAAM,mCAAmC;AACzC,IAAM,4BAA4B;AAClC,IAAM,yBAAyB;AAC/B,IAAM,wBAAwB;AAE9B,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAE7B,IAAM,cAAc;AACpB,IAAM,YAAY;","names":[]}
1
+ {"version":3,"sources":["../package.json","../src/internal/runtime.ts","../src/internal/constants.ts"],"sourcesContent":["{\n \"name\": \"langwatch\",\n \"version\": \"0.18.0\",\n \"description\": \"LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide\",\n \"main\": \"dist/index.js\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"author\": \"LangWatch\",\n \"license\": \"MIT\",\n \"engines\": {\n \"node\": \">=20\",\n \"pnpm\": \">=8\"\n },\n \"files\": [\n \"dist\",\n \"README.md\",\n \"LICENSE\"\n ],\n \"bin\": {\n \"langwatch\": \"./dist/cli/index.js\"\n },\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.js\"\n },\n \"./observability\": {\n \"types\": \"./dist/observability-sdk/index.d.ts\",\n \"require\": \"./dist/observability-sdk/index.js\",\n \"import\": \"./dist/observability-sdk/index.mjs\"\n },\n \"./observability/node\": {\n \"types\": \"./dist/observability-sdk/setup/node/index.d.ts\",\n \"require\": \"./dist/observability-sdk/setup/node/index.js\",\n \"import\": \"./dist/observability-sdk/setup/node/index.mjs\"\n },\n \"./observability/instrumentation/langchain\": {\n \"types\": \"./dist/observability-sdk/instrumentation/langchain/index.d.ts\",\n \"require\": \"./dist/observability-sdk/instrumentation/langchain/index.js\",\n \"import\": \"./dist/observability-sdk/instrumentation/langchain/index.mjs\"\n }\n },\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/langwatch/langwatch.git\",\n \"directory\": \"typescript-sdk\"\n },\n \"scripts\": {\n \"prepare\": \"pnpm run generate:server-types && pnpm run generate:openapi-types\",\n \"cli\": \"node dist/cli/index.js\",\n \"lint\": \"eslint .\",\n \"test\": \"vitest\",\n \"test:unit\": \"vitest run --exclude '**/*.integration.test.ts'\",\n \"test:e2e\": \"dotenv -- vitest run -c ./vitest.e2e.config.mts\",\n \"test:seed\": \"dotenv -e .env.test -- bash -c 'cd ../langwatch && pnpm prisma:seed'\",\n \"prebuild\": \"pnpm run prepare\",\n \"build\": \"tsc --noEmit && tsup\",\n \"tarball\": \"pnpm build && pnpm pack\",\n \"typecheck\": \"tsc --noEmit\",\n \"prepublish\": \"pnpm run build\",\n \"generate:openapi-types\": \"pnpx openapi-typescript ../langwatch/src/app/api/openapiLangWatch.json -o ./src/internal/generated/openapi/api-client.ts\",\n \"generate:server-types\": \"./copy-types.sh\"\n },\n \"devDependencies\": {\n \"@eslint/js\": \"^9.32.0\",\n \"@langchain/core\": \">=0.3.68 <0.4.0\",\n \"@langchain/langgraph\": \">=0.4.0 <1.0.0\",\n \"@langchain/openai\": \">=0.6.0 <1.0.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/sdk-trace-node\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-web\": \">=2.0.1\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/js-yaml\": \"^4.0.9\",\n \"@types/node\": \"^24.1.0\",\n \"@typescript/native-preview\": \"7.0.0-dev.20250804.1\",\n \"@vercel/otel\": \"^1.13.0\",\n \"@vitest/coverage-v8\": \"3.2.4\",\n \"dotenv-cli\": \"^11.0.0\",\n \"esbuild\": \"^0.27.3\",\n \"eslint\": \"^9.32.0\",\n \"fets\": \"^0.8.5\",\n \"fishery\": \"^2.3.1\",\n \"langchain\": \">=0.3.0 <2.0.0\",\n \"msw\": \"^2.10.4\",\n \"nock\": \"^14.0.8\",\n \"openapi-msw\": \"^1.2.0\",\n \"ts-to-zod\": \"4.0.1\",\n \"tsup\": \"^8.5.0\",\n \"typescript\": \"^5.9.2\",\n \"typescript-eslint\": \"^8.38.0\",\n \"vitest\": \"^3.2.4\",\n \"vitest-mock-extended\": \"^3.1.0\",\n \"yaml\": \"^2.8.1\",\n \"@opentelemetry/api\": \"^1.9.0\"\n },\n \"dependencies\": {\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-metrics\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/semantic-conventions\": \"^1.36.0\",\n \"@types/prompts\": \"^2.4.9\",\n \"chalk\": \"^4.1.2\",\n \"commander\": \"^12.0.0\",\n \"dotenv\": \"^17.3.1\",\n \"js-yaml\": \"^4.1.0\",\n \"liquidjs\": \"^10.21.1\",\n \"open\": \"^11.0.0\",\n \"openapi-fetch\": \"^0.16.0\",\n \"ora\": \"^9.3.0\",\n \"prompts\": \"^2.4.2\",\n \"xksuid\": \"^0.0.4\",\n \"zod\": \"^4.0.14\"\n },\n \"peerDependencies\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@ai-sdk/openai\": \">=2.0.0 <3.0.0\",\n \"@langchain/core\": \">=0.3.0 <1.0.0\",\n \"@langchain/langgraph\": \">=0.4.0 <1.0.0\",\n \"@langchain/openai\": \">=0.6.0 <1.0.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/context-zone\": \">=1.19.0 <3.0.0\",\n \"@opentelemetry/sdk-node\": \">=0.200.0 <1.0.0\",\n \"@opentelemetry/sdk-trace-web\": \">=1.19.0 <3.0.0\",\n \"langchain\": \">=0.3.0 <2.0.0\"\n },\n \"peerDependenciesMeta\": {\n \"@ai-sdk/openai\": { \"optional\": true },\n \"@langchain/core\": { \"optional\": true },\n \"@langchain/langgraph\": { \"optional\": true },\n \"@langchain/openai\": { \"optional\": true },\n \"@opentelemetry/context-async-hooks\": { \"optional\": true },\n \"@opentelemetry/context-zone\": { \"optional\": true },\n \"@opentelemetry/sdk-node\": { \"optional\": true },\n \"@opentelemetry/sdk-trace-web\": { \"optional\": true },\n \"langchain\": { \"optional\": true }\n },\n \"pnpm\": {\n \"overrides\": {\n \"@opentelemetry/api\": \"^1.9.0\",\n \"@opentelemetry/core\": \"^2.0.1\",\n \"@opentelemetry/resources\": \"^2.0.1\",\n \"@opentelemetry/sdk-trace-base\": \"^2.0.1\",\n \"@opentelemetry/instrumentation\": \"0.212.0\",\n \"@opentelemetry/sdk-node\": \"0.205.0\",\n \"@opentelemetry/context-async-hooks\": \"^2.1.0\",\n \"@opentelemetry/api-logs\": \"0.205.0\",\n \"@opentelemetry/sdk-logs\": \"0.205.0\",\n \"@opentelemetry/exporter-logs-otlp-http\": \"0.205.0\",\n \"@opentelemetry/exporter-trace-otlp-http\": \"0.205.0\",\n \"zod\": \"^4.0.14\",\n \"langchain@<0.3.37\": \"0.3.37\",\n \"@langchain/core@<0.3.80\": \"0.3.80\"\n }\n }\n}\n","export type JsRuntime = \"node\" | \"deno\" | \"bun\" | \"web\" | \"unknown\";\n\nlet _runtime: JsRuntime | undefined;\n\n/**\n * Gets the cached JavaScript runtime environment.\n * @returns The detected runtime environment\n */\nexport const getRuntime = (): JsRuntime => {\n _runtime ??= detectRuntime();\n return _runtime;\n};\n\n/**\n * Resets the cached runtime. Only used for testing.\n * @internal\n */\nexport const resetRuntimeCache = (): void => {\n _runtime = undefined;\n};\n\n/**\n * Detects the JavaScript runtime environment.\n * @param globals - (Test only) Optionally override the global object for environment simulation. Only used if NODE_ENV === 'test'.\n */\nexport function detectRuntime(globals?: any): JsRuntime {\n let g = globalThis;\n if (globals) {\n if (process.env.NODE_ENV === \"test\") {\n g = globals;\n } else {\n console.warn(\"[LangWatch Observability] overriding detectRuntime is only supported when running in NODE_ENV=test\");\n }\n }\n\n try {\n if (\n \"Deno\" in g &&\n typeof g.Deno === \"object\" &&\n g.Deno &&\n 'version' in g.Deno &&\n typeof g.Deno.version === \"object\"\n ) {\n return \"deno\";\n }\n if (\n \"Bun\" in g &&\n typeof g.Bun === \"object\" &&\n g.Bun &&\n 'version' in g.Bun &&\n typeof g.Bun.version === \"string\"\n ) {\n return \"bun\";\n }\n if (\n \"process\" in g &&\n typeof g.process === \"object\" &&\n g.process &&\n typeof g.process.versions === \"object\" &&\n typeof g.process.versions.node === \"string\"\n ) {\n return \"node\";\n }\n if (\n typeof g.window?.document !== \"undefined\" &&\n g === g.window\n ) {\n return \"web\";\n }\n return \"unknown\";\n } catch (error) {\n console.warn(\"[LangWatch Observability] Failed to detect runtime\", error);\n return \"unknown\";\n }\n}\n","import { version } from \"../../package.json\";\nimport { getRuntime } from \"./runtime\";\n\nexport const LANGWATCH_SDK_RUNTIME = getRuntime;\n\nexport const LANGWATCH_SDK_NAME_OBSERVABILITY = \"langwatch-observability-sdk\";\nexport const LANGWATCH_SDK_NAME_CLIENT = \"langwatch-client-sdk\";\nexport const LANGWATCH_SDK_LANGUAGE = \"typescript\";\nexport const LANGWATCH_SDK_VERSION = version;\n\nexport const DEFAULT_ENDPOINT = \"https://app.langwatch.ai/\";\nexport const DEFAULT_SERVICE_NAME = \"unknown-service.langwatch\";\n\nexport const TRACES_PATH = \"/api/otel/v1/traces\";\nexport const LOGS_PATH = \"/api/otel/v1/logs\";\nexport const METRICS_PATH = \"/api/otel/v1/metrics\";\n"],"mappings":";AAEI,cAAW;;;ACAf,IAAI;AAMG,IAAM,aAAa,MAAiB;AACzC,2CAAa,cAAc;AAC3B,SAAO;AACT;AAcO,SAAS,cAAc,SAA0B;AAzBxD;AA0BE,MAAI,IAAI;AACR,MAAI,SAAS;AACX,QAAI,QAAQ,IAAI,aAAa,QAAQ;AACnC,UAAI;AAAA,IACN,OAAO;AACL,cAAQ,KAAK,oGAAoG;AAAA,IACnH;AAAA,EACF;AAEA,MAAI;AACF,QACE,UAAU,KACV,OAAO,EAAE,SAAS,YAClB,EAAE,QACF,aAAa,EAAE,QACf,OAAO,EAAE,KAAK,YAAY,UAC1B;AACA,aAAO;AAAA,IACT;AACA,QACE,SAAS,KACT,OAAO,EAAE,QAAQ,YACjB,EAAE,OACF,aAAa,EAAE,OACf,OAAO,EAAE,IAAI,YAAY,UACzB;AACA,aAAO;AAAA,IACT;AACA,QACE,aAAa,KACb,OAAO,EAAE,YAAY,YACrB,EAAE,WACF,OAAO,EAAE,QAAQ,aAAa,YAC9B,OAAO,EAAE,QAAQ,SAAS,SAAS,UACnC;AACA,aAAO;AAAA,IACT;AACA,QACE,SAAO,OAAE,WAAF,mBAAU,cAAa,eAC9B,MAAM,EAAE,QACR;AACA,aAAO;AAAA,IACT;AACA,WAAO;AAAA,EACT,SAAS,OAAO;AACd,YAAQ,KAAK,sDAAsD,KAAK;AACxE,WAAO;AAAA,EACT;AACF;;;ACvEO,IAAM,wBAAwB;AAE9B,IAAM,mCAAmC;AACzC,IAAM,4BAA4B;AAClC,IAAM,yBAAyB;AAC/B,IAAM,wBAAwB;AAE9B,IAAM,mBAAmB;AACzB,IAAM,uBAAuB;AAE7B,IAAM,cAAc;AACpB,IAAM,YAAY;","names":[]}
@@ -6,7 +6,7 @@ import {
6
6
  LANGWATCH_SDK_VERSION,
7
7
  LOGS_PATH,
8
8
  TRACES_PATH
9
- } from "./chunk-BLAK7SL3.mjs";
9
+ } from "./chunk-WQ7AKXY7.mjs";
10
10
  import {
11
11
  shouldCaptureOutput
12
12
  } from "./chunk-JVIQJFUE.mjs";
@@ -293,4 +293,4 @@ export {
293
293
  getLangWatchLogger,
294
294
  getLangWatchLoggerFromProvider
295
295
  };
296
- //# sourceMappingURL=chunk-KBV3UJEZ.mjs.map
296
+ //# sourceMappingURL=chunk-WSSWTQIB.mjs.map
@@ -4,7 +4,7 @@ var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkIM26RCOCjs = require('./chunk-IM26RCOC.js');
7
+ var _chunkEHWKVO46js = require('./chunk-EHWKVO46.js');
8
8
 
9
9
 
10
10
  var _chunkBYG3QS2Xjs = require('./chunk-BYG3QS2X.js');
@@ -152,7 +152,7 @@ var pullCommand = async () => {
152
152
  const startTime = Date.now();
153
153
  try {
154
154
  _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
155
- const promptsApiService = new (0, _chunkIM26RCOCjs.PromptsApiService)();
155
+ const promptsApiService = new (0, _chunkEHWKVO46js.PromptsApiService)();
156
156
  await _chunkBYG3QS2Xjs.ensureProjectInitialized.call(void 0, false);
157
157
  const config = _chunkWAAQLJ67js.FileManager.loadPromptsConfig();
158
158
  const lock = _chunkWAAQLJ67js.FileManager.loadPromptsLock();
@@ -171,7 +171,7 @@ var pullCommand = async () => {
171
171
  process.exit(1);
172
172
  }
173
173
  } catch (error) {
174
- if (error instanceof _chunkIM26RCOCjs.PromptsError) {
174
+ if (error instanceof _chunkEHWKVO46js.PromptsError) {
175
175
  console.error(_chalk2.default.red(`Error: ${error.message}`));
176
176
  } else {
177
177
  console.error(
@@ -188,4 +188,4 @@ var pullCommand = async () => {
188
188
 
189
189
 
190
190
  exports.pullPrompts = pullPrompts; exports.pullCommand = pullCommand;
191
- //# sourceMappingURL=chunk-NWFQOLJI.js.map
191
+ //# sourceMappingURL=chunk-XEYCRZ64.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-NWFQOLJI.js","../src/cli/commands/pull.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-NWFQOLJI.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n PromptsApiService,\n PromptsError,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\n\n/**\n * Core pull logic: fetches remote prompts and materializes them locally.\n * Returns the result and mutates the lock object in place.\n */\nexport const pullPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n}): Promise<void> => {\n const remoteDeps = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n if (typeof dependency === \"object\" && dependency.file) {\n return false;\n }\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n return false;\n }\n return true;\n }\n );\n\n if (remoteDeps.length > 0) {\n const fetchSpinner = ora(\n `Checking ${remoteDeps.length} remote prompts...`\n ).start();\n\n for (const [name, dependency] of remoteDeps) {\n try {\n const versionSpec =\n typeof dependency === \"string\"\n ? dependency\n : dependency.version ?? \"latest\";\n\n const lockEntry = lock.prompts[name];\n\n const prompt = await promptsApiService.get(name, { version: versionSpec });\n\n if (prompt) {\n const needsUpdate =\n lockEntry?.version !== prompt.version ||\n !lockEntry.materialized ||\n !fs.existsSync(path.resolve(lockEntry.materialized));\n\n if (needsUpdate) {\n const materializedPrompt =\n PromptConverter.fromApiToMaterialized(prompt);\n\n const savedPath = FileManager.saveMaterializedPrompt(\n name,\n materializedPrompt\n );\n const relativePath = path.relative(process.cwd(), savedPath);\n result.fetched.push({\n name,\n version: prompt.version,\n versionSpec,\n });\n\n FileManager.updateLockEntry(\n lock,\n name,\n materializedPrompt,\n savedPath\n );\n\n fetchSpinner.text = `Fetched ${chalk.cyan(\n `${name}@${versionSpec}`\n )} ${chalk.gray(`(version ${prompt.version})`)} → ${chalk.gray(\n relativePath\n )}`;\n } else {\n result.unchanged.push(name);\n }\n } else {\n result.errors.push({ name, error: \"Prompt not found\" });\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name, error: errorMessage });\n }\n }\n\n fetchSpinner.stop();\n }\n\n // Cleanup orphaned materialized files\n const currentDependencies = new Set(\n Object.keys(config.prompts).filter((name) => {\n const dependency = config.prompts[name];\n if (typeof dependency === \"object\" && dependency.file) {\n return false;\n }\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n return false;\n }\n return true;\n })\n );\n\n const cleanedFiles =\n FileManager.cleanupOrphanedMaterializedFiles(currentDependencies);\n if (cleanedFiles.length > 0) {\n result.cleaned = cleanedFiles;\n FileManager.removeFromLock(lock, cleanedFiles);\n }\n};\n\nconst printPullResults = ({\n result,\n lock,\n duration,\n}: {\n result: SyncResult;\n lock: PromptsLock;\n duration: string;\n}): void => {\n if (result.fetched.length > 0) {\n for (const { name, version, versionSpec } of result.fetched) {\n const lockEntry = lock.prompts[name];\n const displayPath = lockEntry?.materialized\n ? `./${lockEntry.materialized}`\n : `./prompts/.materialized/${name}.prompt.yaml`;\n\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${versionSpec}`)} ${chalk.gray(\n `(version ${version})`\n )} → ${chalk.gray(displayPath)}`\n )\n );\n }\n }\n\n if (result.cleaned.length > 0) {\n for (const name of result.cleaned) {\n console.log(\n chalk.yellow(\n `✓ Cleaned ${chalk.cyan(name)} (no longer in dependencies)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.cleaned.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pulled in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} fetched`);\n if (result.cleaned.length > 0)\n summary.push(`${result.cleaned.length} cleaned`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pulled ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pullCommand = async (): Promise<void> => {\n console.log(\"⬇️ Pulling remote prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pullPrompts({ config, lock, promptsApiService, result });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPullResults({ result, lock, duration });\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n )\n );\n }\n process.exit(1);\n }\n};\n"]}
1
+ {"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-XEYCRZ64.js","../src/cli/commands/pull.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/chunk-XEYCRZ64.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n PromptsApiService,\n PromptsError,\n} from \"@/client-sdk/services/prompts\";\nimport type { PromptsConfig, PromptsLock, SyncResult } from \"../types\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\n\n/**\n * Core pull logic: fetches remote prompts and materializes them locally.\n * Returns the result and mutates the lock object in place.\n */\nexport const pullPrompts = async ({\n config,\n lock,\n promptsApiService,\n result,\n}: {\n config: PromptsConfig;\n lock: PromptsLock;\n promptsApiService: PromptsApiService;\n result: SyncResult;\n}): Promise<void> => {\n const remoteDeps = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n if (typeof dependency === \"object\" && dependency.file) {\n return false;\n }\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n return false;\n }\n return true;\n }\n );\n\n if (remoteDeps.length > 0) {\n const fetchSpinner = ora(\n `Checking ${remoteDeps.length} remote prompts...`\n ).start();\n\n for (const [name, dependency] of remoteDeps) {\n try {\n const versionSpec =\n typeof dependency === \"string\"\n ? dependency\n : dependency.version ?? \"latest\";\n\n const lockEntry = lock.prompts[name];\n\n const prompt = await promptsApiService.get(name, { version: versionSpec });\n\n if (prompt) {\n const needsUpdate =\n lockEntry?.version !== prompt.version ||\n !lockEntry.materialized ||\n !fs.existsSync(path.resolve(lockEntry.materialized));\n\n if (needsUpdate) {\n const materializedPrompt =\n PromptConverter.fromApiToMaterialized(prompt);\n\n const savedPath = FileManager.saveMaterializedPrompt(\n name,\n materializedPrompt\n );\n const relativePath = path.relative(process.cwd(), savedPath);\n result.fetched.push({\n name,\n version: prompt.version,\n versionSpec,\n });\n\n FileManager.updateLockEntry(\n lock,\n name,\n materializedPrompt,\n savedPath\n );\n\n fetchSpinner.text = `Fetched ${chalk.cyan(\n `${name}@${versionSpec}`\n )} ${chalk.gray(`(version ${prompt.version})`)} → ${chalk.gray(\n relativePath\n )}`;\n } else {\n result.unchanged.push(name);\n }\n } else {\n result.errors.push({ name, error: \"Prompt not found\" });\n }\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : \"Unknown error\";\n result.errors.push({ name, error: errorMessage });\n }\n }\n\n fetchSpinner.stop();\n }\n\n // Cleanup orphaned materialized files\n const currentDependencies = new Set(\n Object.keys(config.prompts).filter((name) => {\n const dependency = config.prompts[name];\n if (typeof dependency === \"object\" && dependency.file) {\n return false;\n }\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n return false;\n }\n return true;\n })\n );\n\n const cleanedFiles =\n FileManager.cleanupOrphanedMaterializedFiles(currentDependencies);\n if (cleanedFiles.length > 0) {\n result.cleaned = cleanedFiles;\n FileManager.removeFromLock(lock, cleanedFiles);\n }\n};\n\nconst printPullResults = ({\n result,\n lock,\n duration,\n}: {\n result: SyncResult;\n lock: PromptsLock;\n duration: string;\n}): void => {\n if (result.fetched.length > 0) {\n for (const { name, version, versionSpec } of result.fetched) {\n const lockEntry = lock.prompts[name];\n const displayPath = lockEntry?.materialized\n ? `./${lockEntry.materialized}`\n : `./prompts/.materialized/${name}.prompt.yaml`;\n\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${versionSpec}`)} ${chalk.gray(\n `(version ${version})`\n )} → ${chalk.gray(displayPath)}`\n )\n );\n }\n }\n\n if (result.cleaned.length > 0) {\n for (const name of result.cleaned) {\n console.log(\n chalk.yellow(\n `✓ Cleaned ${chalk.cyan(name)} (no longer in dependencies)`\n )\n );\n }\n }\n\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n const totalActions = result.fetched.length + result.cleaned.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Pulled in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} fetched`);\n if (result.cleaned.length > 0)\n summary.push(`${result.cleaned.length} cleaned`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Pulled ${summary.join(\", \")} in ${duration}s`));\n }\n};\n\nexport const pullCommand = async (): Promise<void> => {\n console.log(\"⬇️ Pulling remote prompts...\");\n\n const startTime = Date.now();\n\n try {\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n\n await ensureProjectInitialized(false);\n\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n await pullPrompts({ config, lock, promptsApiService, result });\n\n FileManager.savePromptsLock(lock);\n\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n printPullResults({ result, lock, duration });\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`\n )\n );\n }\n process.exit(1);\n }\n};\n"]}
package/dist/cli/index.js CHANGED
@@ -9,11 +9,11 @@ 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-EVFFDW2A.js")));
12
+ const { addCommand: addCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../add-MJE7G2BM.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-VE7DNGO5.js")));
16
+ const { removeCommand: removeCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../remove-HPZGTSOK.js")));
17
17
  return removeCommandImpl(name);
18
18
  };
19
19
  var initCommand = async () => {
@@ -21,23 +21,23 @@ var initCommand = async () => {
21
21
  return initCommandImpl();
22
22
  };
23
23
  var loginCommand = async () => {
24
- const { loginCommand: loginCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../login-PUVTWTBN.js")));
24
+ const { loginCommand: loginCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../login-ZKVIVJC6.js")));
25
25
  return loginCommandImpl();
26
26
  };
27
27
  var listCommand = async () => {
28
- const { listCommand: listCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../list-GT7Y62ZX.js")));
28
+ const { listCommand: listCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../list-QMPURSWH.js")));
29
29
  return listCommandImpl();
30
30
  };
31
31
  var syncCommand = async () => {
32
- const { syncCommand: syncCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../sync-V6PBB7AZ.js")));
32
+ const { syncCommand: syncCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../sync-67UMHLSY.js")));
33
33
  return syncCommandImpl();
34
34
  };
35
35
  var pullCommand = async () => {
36
- const { pullCommand: pullCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../pull-N4XHB5X6.js")));
36
+ const { pullCommand: pullCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../pull-22TPEMFM.js")));
37
37
  return pullCommandImpl();
38
38
  };
39
39
  var pushCommand = async () => {
40
- const { pushCommand: pushCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../push-W3JKQZZB.js")));
40
+ const { pushCommand: pushCommandImpl } = await Promise.resolve().then(() => _interopRequireWildcard(require("../push-7WZUQYC3.js")));
41
41
  return pushCommandImpl();
42
42
  };
43
43
  var createCommand = async (name, options) => {
@@ -45,7 +45,7 @@ var createCommand = async (name, options) => {
45
45
  return createCommandImpl(name, options);
46
46
  };
47
47
  var program = new (0, _commander.Command)();
48
- program.name("langwatch").description("LangWatch CLI - The npm of prompts").version("0.17.0", "-v, --version", "Display the current version").configureHelp({
48
+ program.name("langwatch").description("LangWatch CLI - The npm of prompts").version("0.18.0", "-v, --version", "Display the current version").configureHelp({
49
49
  showGlobalOptions: true
50
50
  }).showHelpAfterError().showSuggestionAfterError();
51
51
  program.command("login").description("Login to LangWatch and save API key").action(async () => {
@@ -9,11 +9,11 @@ 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-M7C2SHH6.mjs");
12
+ const { addCommand: addCommandImpl } = await import("../add-5RVW7RGD.mjs");
13
13
  return addCommandImpl(name, options);
14
14
  };
15
15
  var removeCommand = async (name) => {
16
- const { removeCommand: removeCommandImpl } = await import("../remove-I7AR2UEV.mjs");
16
+ const { removeCommand: removeCommandImpl } = await import("../remove-QJJWZ2ZA.mjs");
17
17
  return removeCommandImpl(name);
18
18
  };
19
19
  var initCommand = async () => {
@@ -21,23 +21,23 @@ var initCommand = async () => {
21
21
  return initCommandImpl();
22
22
  };
23
23
  var loginCommand = async () => {
24
- const { loginCommand: loginCommandImpl } = await import("../login-EFCVED4N.mjs");
24
+ const { loginCommand: loginCommandImpl } = await import("../login-EBPGM5GC.mjs");
25
25
  return loginCommandImpl();
26
26
  };
27
27
  var listCommand = async () => {
28
- const { listCommand: listCommandImpl } = await import("../list-TFMD5BMK.mjs");
28
+ const { listCommand: listCommandImpl } = await import("../list-IGP275AO.mjs");
29
29
  return listCommandImpl();
30
30
  };
31
31
  var syncCommand = async () => {
32
- const { syncCommand: syncCommandImpl } = await import("../sync-T7SI3YTF.mjs");
32
+ const { syncCommand: syncCommandImpl } = await import("../sync-BNPR6W4G.mjs");
33
33
  return syncCommandImpl();
34
34
  };
35
35
  var pullCommand = async () => {
36
- const { pullCommand: pullCommandImpl } = await import("../pull-D423APC3.mjs");
36
+ const { pullCommand: pullCommandImpl } = await import("../pull-3NWDN7CX.mjs");
37
37
  return pullCommandImpl();
38
38
  };
39
39
  var pushCommand = async () => {
40
- const { pushCommand: pushCommandImpl } = await import("../push-XKUPVH5J.mjs");
40
+ const { pushCommand: pushCommandImpl } = await import("../push-3CMG3MTX.mjs");
41
41
  return pushCommandImpl();
42
42
  };
43
43
  var createCommand = async (name, options) => {
@@ -45,7 +45,7 @@ var createCommand = async (name, options) => {
45
45
  return createCommandImpl(name, options);
46
46
  };
47
47
  var program = new Command();
48
- program.name("langwatch").description("LangWatch CLI - The npm of prompts").version("0.17.0", "-v, --version", "Display the current version").configureHelp({
48
+ program.name("langwatch").description("LangWatch CLI - The npm of prompts").version("0.18.0", "-v, --version", "Display the current version").configureHelp({
49
49
  showGlobalOptions: true
50
50
  }).showHelpAfterError().showSuggestionAfterError();
51
51
  program.command("login").description("Login to LangWatch and save API key").action(async () => {
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
2
 
3
- var _chunkHHVHS252js = require('./chunk-HHVHS252.js');
3
+ var _chunkKIFN3ONOjs = require('./chunk-KIFN3ONO.js');
4
4
 
5
5
 
6
6
 
@@ -8,7 +8,7 @@ var _chunkHHVHS252js = require('./chunk-HHVHS252.js');
8
8
 
9
9
 
10
10
 
11
- var _chunkIM26RCOCjs = require('./chunk-IM26RCOC.js');
11
+ var _chunkEHWKVO46js = require('./chunk-EHWKVO46.js');
12
12
 
13
13
 
14
14
  var _chunkQNT5P6VVjs = require('./chunk-QNT5P6VV.js');
@@ -19,12 +19,12 @@ var _chunkODBP2KFBjs = require('./chunk-ODBP2KFB.js');
19
19
 
20
20
 
21
21
 
22
- var _chunkQMBVJJ7Ojs = require('./chunk-QMBVJJ7O.js');
22
+ var _chunkDKEWJFMOjs = require('./chunk-DKEWJFMO.js');
23
23
 
24
24
 
25
25
 
26
26
 
27
- var _chunkA6TFUHIBjs = require('./chunk-A6TFUHIB.js');
27
+ var _chunkRPCEDRSRjs = require('./chunk-RPCEDRSR.js');
28
28
 
29
29
 
30
30
 
@@ -355,7 +355,7 @@ var Experiment = class _Experiment {
355
355
  * Initialize an evaluation session
356
356
  */
357
357
  static async init(name, options) {
358
- _chunkHHVHS252js.ensureSetup.call(void 0, );
358
+ _chunkKIFN3ONOjs.ensureSetup.call(void 0, );
359
359
  const experiment = new _Experiment(name, options);
360
360
  await experiment.initialize();
361
361
  return experiment;
@@ -1455,13 +1455,13 @@ var TracesError = class extends Error {
1455
1455
  };
1456
1456
 
1457
1457
  // src/client-sdk/services/traces/tracing/tracer.ts
1458
- var tracer = _chunkODBP2KFBjs.getLangWatchTracer.call(void 0, `${_chunkA6TFUHIBjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunkA6TFUHIBjs.LANGWATCH_SDK_VERSION);
1458
+ var tracer = _chunkODBP2KFBjs.getLangWatchTracer.call(void 0, `${_chunkRPCEDRSRjs.LANGWATCH_SDK_NAME_CLIENT}.traces`, _chunkRPCEDRSRjs.LANGWATCH_SDK_VERSION);
1459
1459
 
1460
1460
  // src/client-sdk/services/traces/service.ts
1461
1461
  var TracesService = class {
1462
1462
  constructor(config) {
1463
1463
  this.config = config;
1464
- return _chunkIM26RCOCjs.createTracingProxy.call(void 0,
1464
+ return _chunkEHWKVO46js.createTracingProxy.call(void 0,
1465
1465
  this,
1466
1466
  tracer
1467
1467
  );
@@ -1524,15 +1524,15 @@ var LangWatch = class {
1524
1524
  _chunkOHM7JUMRjs.__privateAdd.call(void 0, this, _LangWatch_instances);
1525
1525
  var _a, _b, _c, _d;
1526
1526
  const apiKey = (_b = (_a = options.apiKey) != null ? _a : process.env.LANGWATCH_API_KEY) != null ? _b : "";
1527
- const endpoint = (_d = (_c = options.endpoint) != null ? _c : process.env.LANGWATCH_ENDPOINT) != null ? _d : _chunkA6TFUHIBjs.DEFAULT_ENDPOINT;
1527
+ const endpoint = (_d = (_c = options.endpoint) != null ? _c : process.env.LANGWATCH_ENDPOINT) != null ? _d : _chunkRPCEDRSRjs.DEFAULT_ENDPOINT;
1528
1528
  this.config = _chunkOHM7JUMRjs.__privateMethod.call(void 0, this, _LangWatch_instances, createInternalConfig_fn).call(this, {
1529
1529
  apiKey,
1530
1530
  endpoint,
1531
1531
  options: options.options
1532
1532
  });
1533
- this.prompts = new (0, _chunkIM26RCOCjs.PromptsFacade)(_chunkOHM7JUMRjs.__spreadValues.call(void 0, {
1534
- promptsApiService: new (0, _chunkIM26RCOCjs.PromptsApiService)(this.config),
1535
- localPromptsService: new (0, _chunkIM26RCOCjs.LocalPromptsService)()
1533
+ this.prompts = new (0, _chunkEHWKVO46js.PromptsFacade)(_chunkOHM7JUMRjs.__spreadValues.call(void 0, {
1534
+ promptsApiService: new (0, _chunkEHWKVO46js.PromptsApiService)(this.config),
1535
+ localPromptsService: new (0, _chunkEHWKVO46js.LocalPromptsService)()
1536
1536
  }, this.config));
1537
1537
  this.traces = new TracesFacade(this.config);
1538
1538
  this.experiments = new ExperimentsFacade({
@@ -1564,7 +1564,7 @@ createInternalConfig_fn = function({
1564
1564
  var _a;
1565
1565
  return {
1566
1566
  logger: (_a = options == null ? void 0 : options.logger) != null ? _a : new (0, _chunk5LYWRKDFjs.NoOpLogger)(),
1567
- langwatchApiClient: _chunkIM26RCOCjs.createLangWatchApiClient.call(void 0, apiKey, endpoint),
1567
+ langwatchApiClient: _chunkEHWKVO46js.createLangWatchApiClient.call(void 0, apiKey, endpoint),
1568
1568
  endpoint,
1569
1569
  apiKey
1570
1570
  };
@@ -1584,7 +1584,7 @@ var EvaluatorsApiError = class extends Error {
1584
1584
  var EvaluatorsApiService = class {
1585
1585
  constructor(config) {
1586
1586
  var _a;
1587
- this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunkIM26RCOCjs.createLangWatchApiClient.call(void 0, );
1587
+ this.apiClient = (_a = config == null ? void 0 : config.langwatchApiClient) != null ? _a : _chunkEHWKVO46js.createLangWatchApiClient.call(void 0, );
1588
1588
  }
1589
1589
  handleApiError(operation, error) {
1590
1590
  var _a;
@@ -1660,5 +1660,5 @@ var logger = {
1660
1660
 
1661
1661
 
1662
1662
 
1663
- exports.EvaluationError = EvaluationError; exports.EvaluationsApiError = EvaluationsApiError; exports.EvaluationsFacade = EvaluationsFacade; exports.EvaluatorCallError = EvaluatorCallError; exports.EvaluatorError = EvaluatorError; exports.EvaluatorNotFoundError = EvaluatorNotFoundError; exports.EvaluatorsApiError = EvaluatorsApiError; exports.EvaluatorsApiService = EvaluatorsApiService; exports.Experiment = Experiment; exports.ExperimentApiError = ExperimentApiError; exports.ExperimentError = ExperimentError; exports.ExperimentInitError = ExperimentInitError; exports.ExperimentsFacade = ExperimentsFacade; exports.FetchPolicy = _chunkIM26RCOCjs.FetchPolicy; exports.FilterableBatchSpanProcessor = _chunkQNT5P6VVjs.FilterableBatchSpanProcessor; exports.LangWatch = LangWatch; exports.LangWatchExporter = _chunkQMBVJJ7Ojs.LangWatchTraceExporter; exports.TargetMetadataConflictError = TargetMetadataConflictError; exports.attributes = _chunk5LYWRKDFjs.attributes_exports; exports.getLangWatchLogger = _chunkQMBVJJ7Ojs.getLangWatchLogger; exports.getLangWatchTracer = _chunkODBP2KFBjs.getLangWatchTracer; exports.logger = logger;
1663
+ exports.EvaluationError = EvaluationError; exports.EvaluationsApiError = EvaluationsApiError; exports.EvaluationsFacade = EvaluationsFacade; exports.EvaluatorCallError = EvaluatorCallError; exports.EvaluatorError = EvaluatorError; exports.EvaluatorNotFoundError = EvaluatorNotFoundError; exports.EvaluatorsApiError = EvaluatorsApiError; exports.EvaluatorsApiService = EvaluatorsApiService; exports.Experiment = Experiment; exports.ExperimentApiError = ExperimentApiError; exports.ExperimentError = ExperimentError; exports.ExperimentInitError = ExperimentInitError; exports.ExperimentsFacade = ExperimentsFacade; exports.FetchPolicy = _chunkEHWKVO46js.FetchPolicy; exports.FilterableBatchSpanProcessor = _chunkQNT5P6VVjs.FilterableBatchSpanProcessor; exports.LangWatch = LangWatch; exports.LangWatchExporter = _chunkDKEWJFMOjs.LangWatchTraceExporter; exports.TargetMetadataConflictError = TargetMetadataConflictError; exports.attributes = _chunk5LYWRKDFjs.attributes_exports; exports.getLangWatchLogger = _chunkDKEWJFMOjs.getLangWatchLogger; exports.getLangWatchTracer = _chunkODBP2KFBjs.getLangWatchTracer; exports.logger = logger;
1664
1664
  //# sourceMappingURL=index.js.map
package/dist/index.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  ensureSetup
3
- } from "./chunk-KTGDPRNQ.mjs";
3
+ } from "./chunk-NKGYK3B7.mjs";
4
4
  import {
5
5
  FetchPolicy,
6
6
  LocalPromptsService,
@@ -8,7 +8,7 @@ import {
8
8
  PromptsFacade,
9
9
  createLangWatchApiClient,
10
10
  createTracingProxy
11
- } from "./chunk-ZUZDSFF3.mjs";
11
+ } from "./chunk-MRQNP55T.mjs";
12
12
  import {
13
13
  FilterableBatchSpanProcessor
14
14
  } from "./chunk-FMYG6IOZ.mjs";
@@ -19,12 +19,12 @@ import {
19
19
  import {
20
20
  LangWatchTraceExporter,
21
21
  getLangWatchLogger
22
- } from "./chunk-KBV3UJEZ.mjs";
22
+ } from "./chunk-WSSWTQIB.mjs";
23
23
  import {
24
24
  DEFAULT_ENDPOINT,
25
25
  LANGWATCH_SDK_NAME_CLIENT,
26
26
  LANGWATCH_SDK_VERSION
27
- } from "./chunk-BLAK7SL3.mjs";
27
+ } from "./chunk-WQ7AKXY7.mjs";
28
28
  import {
29
29
  ConsoleLogger,
30
30
  NoOpLogger,
@@ -4,11 +4,11 @@ import {
4
4
  import {
5
5
  PromptsApiService,
6
6
  PromptsError
7
- } from "./chunk-ZUZDSFF3.mjs";
7
+ } from "./chunk-MRQNP55T.mjs";
8
8
  import "./chunk-FMYG6IOZ.mjs";
9
9
  import "./chunk-WAHZXF7I.mjs";
10
- import "./chunk-KBV3UJEZ.mjs";
11
- import "./chunk-BLAK7SL3.mjs";
10
+ import "./chunk-WSSWTQIB.mjs";
11
+ import "./chunk-WQ7AKXY7.mjs";
12
12
  import "./chunk-JVIQJFUE.mjs";
13
13
  import "./chunk-O6D3W3PG.mjs";
14
14
  import "./chunk-BTBSMJTY.mjs";
@@ -145,4 +145,4 @@ var listCommand = async () => {
145
145
  export {
146
146
  listCommand
147
147
  };
148
- //# sourceMappingURL=list-TFMD5BMK.mjs.map
148
+ //# sourceMappingURL=list-IGP275AO.mjs.map
@@ -4,11 +4,11 @@ var _chunkF6E4XQQUjs = require('./chunk-F6E4XQQU.js');
4
4
 
5
5
 
6
6
 
7
- var _chunkIM26RCOCjs = require('./chunk-IM26RCOC.js');
7
+ var _chunkEHWKVO46js = require('./chunk-EHWKVO46.js');
8
8
  require('./chunk-QNT5P6VV.js');
9
9
  require('./chunk-ODBP2KFB.js');
10
- require('./chunk-QMBVJJ7O.js');
11
- require('./chunk-A6TFUHIB.js');
10
+ require('./chunk-DKEWJFMO.js');
11
+ require('./chunk-RPCEDRSR.js');
12
12
  require('./chunk-5LYWRKDF.js');
13
13
  require('./chunk-WAAQLJ67.js');
14
14
  require('./chunk-AZHZ4NB4.js');
@@ -79,7 +79,7 @@ var formatRelativeTime = (dateString) => {
79
79
  var listCommand = async () => {
80
80
  try {
81
81
  _chunkF6E4XQQUjs.checkApiKey.call(void 0, );
82
- const promptsApiService = new (0, _chunkIM26RCOCjs.PromptsApiService)();
82
+ const promptsApiService = new (0, _chunkEHWKVO46js.PromptsApiService)();
83
83
  const spinner = _ora2.default.call(void 0, "Fetching prompts from server...").start();
84
84
  try {
85
85
  const allPrompts = await promptsApiService.getAll();
@@ -118,7 +118,7 @@ var listCommand = async () => {
118
118
  );
119
119
  } catch (error) {
120
120
  spinner.fail();
121
- if (error instanceof _chunkIM26RCOCjs.PromptsError) {
121
+ if (error instanceof _chunkEHWKVO46js.PromptsError) {
122
122
  console.error(_chalk2.default.red(`Error: ${error.message}`));
123
123
  } else {
124
124
  console.error(
@@ -130,7 +130,7 @@ var listCommand = async () => {
130
130
  process.exit(1);
131
131
  }
132
132
  } catch (error) {
133
- if (error instanceof _chunkIM26RCOCjs.PromptsError) {
133
+ if (error instanceof _chunkEHWKVO46js.PromptsError) {
134
134
  console.error(_chalk2.default.red(`Error: ${error.message}`));
135
135
  } else {
136
136
  console.error(
@@ -145,4 +145,4 @@ var listCommand = async () => {
145
145
 
146
146
 
147
147
  exports.listCommand = listCommand;
148
- //# sourceMappingURL=list-GT7Y62ZX.js.map
148
+ //# sourceMappingURL=list-QMPURSWH.js.map