langwatch 0.4.1 → 0.4.2
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.
- package/dist/{add-WLUMK5VQ.mjs → add-SMYALCQG.mjs} +10 -10
- package/dist/{add-RGWB3264.js → add-SV662KZU.js} +27 -27
- package/dist/{add-RGWB3264.js.map → add-SV662KZU.js.map} +1 -1
- package/dist/{chunk-IZ2U3ABC.mjs → chunk-5ZKAT4KI.mjs} +70 -113
- package/dist/chunk-5ZKAT4KI.mjs.map +1 -0
- package/dist/{chunk-HUI45ULC.mjs → chunk-7ZRAJ52N.mjs} +3 -3
- package/dist/{chunk-FQSWUK5N.mjs → chunk-CAVBDSBT.mjs} +2 -2
- package/dist/chunk-CAVBDSBT.mjs.map +1 -0
- package/dist/{chunk-ZJZ3MIWE.mjs → chunk-ENSRDEDA.mjs} +2 -2
- package/dist/{chunk-HA3LI5IK.js → chunk-I5NDMIK5.js} +1 -1
- package/dist/{chunk-HA3LI5IK.js.map → chunk-I5NDMIK5.js.map} +1 -1
- package/dist/{chunk-M4VUHTT2.js → chunk-ILTCLEIF.js} +5 -5
- package/dist/{chunk-M4VUHTT2.js.map → chunk-ILTCLEIF.js.map} +1 -1
- package/dist/{chunk-ECUXLXFT.mjs → chunk-K4ICRI7W.mjs} +53 -13
- package/dist/chunk-K4ICRI7W.mjs.map +1 -0
- package/dist/{chunk-SYMZPWZE.mjs → chunk-LXVDGQA4.mjs} +5 -4
- package/dist/chunk-LXVDGQA4.mjs.map +1 -0
- package/dist/{chunk-5N5BUR2Z.js → chunk-NFM6RB4R.js} +71 -114
- package/dist/chunk-NFM6RB4R.js.map +1 -0
- package/dist/{chunk-4TF2O2TH.js → chunk-NVKMXXNP.js} +14 -14
- package/dist/{chunk-4TF2O2TH.js.map → chunk-NVKMXXNP.js.map} +1 -1
- package/dist/{chunk-D2CSG4SJ.js → chunk-P5F63PAW.js} +5 -5
- package/dist/{chunk-D2CSG4SJ.js.map → chunk-P5F63PAW.js.map} +1 -1
- package/dist/{chunk-SGNJDRCT.js → chunk-PUHM465C.js} +5 -4
- package/dist/chunk-PUHM465C.js.map +1 -0
- package/dist/{chunk-4ILMGMAP.mjs → chunk-RBZNMZTF.mjs} +4 -4
- package/dist/{chunk-AZELEDOV.js → chunk-T7FQHOLK.js} +14 -14
- package/dist/{chunk-AZELEDOV.js.map → chunk-T7FQHOLK.js.map} +1 -1
- package/dist/{chunk-DEVJ7BPE.js → chunk-VI5NJ53L.js} +2 -2
- package/dist/chunk-VI5NJ53L.js.map +1 -0
- package/dist/{chunk-EJWJXTPU.mjs → chunk-VILW5FYO.mjs} +2 -2
- package/dist/chunk-VILW5FYO.mjs.map +1 -0
- package/dist/{chunk-4NRLVT2U.mjs → chunk-YQVVPMKH.mjs} +1 -1
- package/dist/chunk-YQVVPMKH.mjs.map +1 -0
- package/dist/{chunk-K64Y6YUG.js → chunk-ZZLIF3DE.js} +59 -19
- package/dist/chunk-ZZLIF3DE.js.map +1 -0
- package/dist/cli/index.js +9 -9
- package/dist/cli/index.mjs +8 -8
- package/dist/{create-MK7NEGCM.mjs → create-BHWZP6YD.mjs} +5 -5
- package/dist/{create-7K2CC4KQ.js → create-GUY3HZM2.js} +10 -10
- package/dist/{create-7K2CC4KQ.js.map → create-GUY3HZM2.js.map} +1 -1
- package/dist/{implementation-CzemP9jY.d.ts → implementation--7B7PUww.d.ts} +1 -1
- package/dist/{implementation-C4lvooSg.d.mts → implementation-D7LzdQop.d.mts} +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +7 -7
- package/dist/index.mjs +6 -6
- package/dist/init-OO2BUJ6V.js +16 -0
- package/dist/{init-GDKJICSS.js.map → init-OO2BUJ6V.js.map} +1 -1
- package/dist/{init-RINSTP4L.mjs → init-RDW2F4G3.mjs} +5 -5
- package/dist/{list-ZOMRKOBV.mjs → list-32BRZ6RS.mjs} +7 -7
- package/dist/list-32BRZ6RS.mjs.map +1 -0
- package/dist/{list-DBUK47MA.js → list-GZGLSJ52.js} +10 -10
- package/dist/{list-DBUK47MA.js.map → list-GZGLSJ52.js.map} +1 -1
- package/dist/{login-A7LEPNBR.js → login-IAP4RFUM.js} +3 -3
- package/dist/{login-A7LEPNBR.js.map → login-IAP4RFUM.js.map} +1 -1
- package/dist/{login-ULPHWIAX.mjs → login-VXLW2OXR.mjs} +2 -2
- package/dist/observability-sdk/index.d.mts +3 -3
- package/dist/observability-sdk/index.d.ts +3 -3
- package/dist/observability-sdk/index.js +4 -4
- package/dist/observability-sdk/index.mjs +3 -3
- package/dist/observability-sdk/instrumentation/langchain/index.d.mts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.d.ts +1 -1
- package/dist/observability-sdk/instrumentation/langchain/index.js +3 -3
- package/dist/observability-sdk/instrumentation/langchain/index.mjs +1 -1
- package/dist/observability-sdk/setup/node/index.js +10 -10
- package/dist/observability-sdk/setup/node/index.mjs +2 -2
- package/dist/{remove-RAJBGHQQ.mjs → remove-JUVM6M7G.mjs} +8 -8
- package/dist/{remove-ODTJLFWR.js → remove-N3324KHS.js} +16 -16
- package/dist/{remove-ODTJLFWR.js.map → remove-N3324KHS.js.map} +1 -1
- package/dist/{sync-2IXPWN64.mjs → sync-B4YK6QYX.mjs} +14 -11
- package/dist/sync-B4YK6QYX.mjs.map +1 -0
- package/dist/{sync-PBOL5ODF.js → sync-E32H3H52.js} +32 -29
- package/dist/sync-E32H3H52.js.map +1 -0
- package/dist/{types-1q5wIYP5.d.mts → types-D61S7yPU.d.mts} +917 -527
- package/dist/{types-C9k5gGhU.d.ts → types-D6Cs1385.d.ts} +917 -527
- package/package.json +11 -10
- package/dist/chunk-4NRLVT2U.mjs.map +0 -1
- package/dist/chunk-5N5BUR2Z.js.map +0 -1
- package/dist/chunk-DEVJ7BPE.js.map +0 -1
- package/dist/chunk-ECUXLXFT.mjs.map +0 -1
- package/dist/chunk-EJWJXTPU.mjs.map +0 -1
- package/dist/chunk-FQSWUK5N.mjs.map +0 -1
- package/dist/chunk-IZ2U3ABC.mjs.map +0 -1
- package/dist/chunk-K64Y6YUG.js.map +0 -1
- package/dist/chunk-SGNJDRCT.js.map +0 -1
- package/dist/chunk-SYMZPWZE.mjs.map +0 -1
- package/dist/init-GDKJICSS.js +0 -16
- package/dist/list-ZOMRKOBV.mjs.map +0 -1
- package/dist/sync-2IXPWN64.mjs.map +0 -1
- package/dist/sync-PBOL5ODF.js.map +0 -1
- /package/dist/{add-WLUMK5VQ.mjs.map → add-SMYALCQG.mjs.map} +0 -0
- /package/dist/{chunk-HUI45ULC.mjs.map → chunk-7ZRAJ52N.mjs.map} +0 -0
- /package/dist/{chunk-ZJZ3MIWE.mjs.map → chunk-ENSRDEDA.mjs.map} +0 -0
- /package/dist/{chunk-4ILMGMAP.mjs.map → chunk-RBZNMZTF.mjs.map} +0 -0
- /package/dist/{create-MK7NEGCM.mjs.map → create-BHWZP6YD.mjs.map} +0 -0
- /package/dist/{init-RINSTP4L.mjs.map → init-RDW2F4G3.mjs.map} +0 -0
- /package/dist/{login-ULPHWIAX.mjs.map → login-VXLW2OXR.mjs.map} +0 -0
- /package/dist/{remove-RAJBGHQQ.mjs.map → remove-JUVM6M7G.mjs.map} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/list-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/list-GZGLSJ52.js","../src/cli/commands/list.ts"],"names":[],"mappings":"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","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/list-GZGLSJ52.js","sourcesContent":[null,"import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { PromptsError } from \"@/client-sdk/services/prompts\";\nimport { LangWatch } from \"@/client-sdk\";\nimport { checkApiKey } from \"../utils/apiKey\";\n\n// Helper to strip ANSI codes for length calculation\nconst stripAnsi = (str: string): string => {\n return str.replace(/\\u001b\\[[0-9;]*m/g, \"\");\n};\n\n// Simple table formatting helper\nconst formatTable = (\n data: Array<Record<string, string>>,\n headers: string[],\n): void => {\n if (data.length === 0) {\n console.log(chalk.gray(\"No prompts found\"));\n return;\n }\n\n // Calculate column widths (strip ANSI codes for accurate length calculation)\n const colWidths: Record<string, number> = {};\n headers.forEach((header) => {\n colWidths[header] = Math.max(\n header.length,\n ...data.map((row) => stripAnsi(row[header] ?? \"\").length),\n );\n });\n\n // Print header\n const headerRow = headers\n .map((header) => chalk.bold(header.padEnd(colWidths[header]!)))\n .join(\" \");\n console.log(headerRow);\n\n // Print separator\n const separator = headers\n .map((header) => \"─\".repeat(colWidths[header]!))\n .join(\" \");\n console.log(chalk.gray(separator));\n\n // Print data rows\n data.forEach((row) => {\n const dataRow = headers\n .map((header) => {\n const value = row[header] ?? \"\";\n const strippedLength = stripAnsi(value).length;\n const paddingNeeded = colWidths[header]! - strippedLength;\n const paddedValue = value + \" \".repeat(Math.max(0, paddingNeeded));\n\n // Color coding\n if (header === \"Name\") {\n return chalk.cyan(paddedValue);\n } else if (header === \"Version\") {\n return chalk.green(paddedValue);\n } else if (header === \"Model\") {\n return chalk.yellow(paddedValue);\n } else {\n return chalk.gray(paddedValue);\n }\n })\n .join(\" \");\n console.log(dataRow);\n });\n};\n\nconst formatRelativeTime = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n\n const seconds = Math.floor(diffMs / 1000);\n const minutes = Math.floor(seconds / 60);\n const hours = Math.floor(minutes / 60);\n const days = Math.floor(hours / 24);\n const months = Math.floor(days / 30);\n const years = Math.floor(days / 365);\n\n if (years > 0) return `${years}y ago`;\n if (months > 0) return `${months}mo ago`;\n if (days > 0) return `${days}d ago`;\n if (hours > 0) return `${hours}h ago`;\n if (minutes > 0) return `${minutes}m ago`;\n return `${seconds}s ago`;\n};\n\nexport const listCommand = async (): Promise<void> => {\n try {\n // Check API key before doing anything else\n checkApiKey();\n\n // Get LangWatch client\n const langwatch = new LangWatch();\n\n const spinner = ora(\"Fetching prompts from server...\").start();\n\n try {\n // Fetch all prompts\n const allPrompts = await langwatch.prompts.getAll();\n const prompts = allPrompts.filter((prompt) => prompt.version);\n const draftPrompts = allPrompts.filter((prompt) => !prompt.version);\n\n spinner.succeed(\n `Found ${prompts.length} published prompt${\n prompts.length !== 1 ? \"s\" : \"\"\n } ` +\n chalk.gray(\n `(+${draftPrompts.length} draft${\n draftPrompts.length !== 1 ? \"s\" : \"\"\n })`,\n ),\n );\n\n if (prompts.length === 0) {\n console.log();\n console.log(chalk.gray(\"No prompts found on the server.\"));\n console.log(chalk.gray(\"Create your first prompt with:\"));\n console.log(chalk.cyan(\" langwatch prompt init\"));\n return;\n }\n\n console.log();\n\n // Format prompts for table display\n const tableData = prompts.map((prompt) => ({\n Name: prompt.handle ?? `${prompt.name} ` + chalk.gray(`(${prompt.id})`),\n Version: prompt.version ? `${prompt.version}` : \"N/A\",\n Model: prompt.model ?? \"N/A\",\n Updated: formatRelativeTime(prompt.updatedAt),\n }));\n\n // Display table\n formatTable(tableData, [\"Name\", \"Version\", \"Model\", \"Updated\"]);\n\n console.log();\n console.log(\n chalk.gray(\n `Use ${chalk.cyan(\n \"langwatch prompt add <name>\",\n )} to add a prompt to your project`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error fetching prompts: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkVI5NJ53Ljs = require('./chunk-VI5NJ53L.js');
|
|
4
4
|
require('./chunk-OXBO24RB.js');
|
|
5
5
|
|
|
6
6
|
// src/cli/commands/login.ts
|
|
@@ -11,7 +11,7 @@ var _ora = require('ora'); var _ora2 = _interopRequireDefault(_ora);
|
|
|
11
11
|
var _prompts = require('prompts'); var _prompts2 = _interopRequireDefault(_prompts);
|
|
12
12
|
var getEndpoint = () => {
|
|
13
13
|
var _a;
|
|
14
|
-
return (_a = process.env.LANGWATCH_ENDPOINT) != null ? _a :
|
|
14
|
+
return (_a = process.env.LANGWATCH_ENDPOINT) != null ? _a : _chunkVI5NJ53Ljs.DEFAULT_ENDPOINT;
|
|
15
15
|
};
|
|
16
16
|
var updateEnvFile = (apiKey) => {
|
|
17
17
|
const envPath = path.join(process.cwd(), ".env");
|
|
@@ -111,4 +111,4 @@ var loginCommand = async () => {
|
|
|
111
111
|
|
|
112
112
|
|
|
113
113
|
exports.loginCommand = loginCommand;
|
|
114
|
-
//# sourceMappingURL=login-
|
|
114
|
+
//# sourceMappingURL=login-IAP4RFUM.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-IAP4RFUM.js","../src/cli/commands/login.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACLA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAChB,oFAAoB;AAGpB,IAAM,YAAA,EAAc,CAAA,EAAA,GAAc;AAPlC,EAAA,IAAA,EAAA;AAQE,EAAA,OAAA,CAAO,GAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,kBAAA,EAAA,GAAZ,KAAA,EAAA,GAAA,EAAkC,iCAAA;AAC3C,CAAA;AAEA,IAAM,cAAA,EAAgB,CACpB,MAAA,EAAA,GACyD;AACzD,EAAA,MAAM,QAAA,EAAe,IAAA,CAAA,IAAA,CAAK,OAAA,CAAQ,GAAA,CAAI,CAAA,EAAG,MAAM,CAAA;AAG/C,EAAA,GAAA,CAAI,CAAI,EAAA,CAAA,UAAA,CAAW,OAAO,CAAA,EAAG;AAE3B,IAAG,EAAA,CAAA,aAAA,CAAc,OAAA,EAAS,CAAA,kBAAA,EAAqB,MAAM,CAAA;AAAA,CAAI,CAAA;AACzD,IAAA,OAAO,EAAE,OAAA,EAAS,IAAA,EAAM,OAAA,EAAS,KAAA,EAAO,IAAA,EAAM,QAAQ,CAAA;AAAA,EACxD;AAGA,EAAA,MAAM,QAAA,EAAa,EAAA,CAAA,YAAA,CAAa,OAAA,EAAS,OAAO,CAAA;AAChD,EAAA,MAAM,MAAA,EAAQ,OAAA,CAAQ,KAAA,CAAM,IAAI,CAAA;AAGhC,EAAA,IAAI,MAAA,EAAQ,KAAA;AACZ,EAAA,MAAM,aAAA,EAAe,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,EAAA,GAAS;AACvC,IAAA,GAAA,CAAI,IAAA,CAAK,UAAA,CAAW,oBAAoB,CAAA,EAAG;AACzC,MAAA,MAAA,EAAQ,IAAA;AACR,MAAA,OAAO,CAAA,kBAAA,EAAqB,MAAM,CAAA,CAAA;AACpC,IAAA;AACO,IAAA;AACR,EAAA;AAEW,EAAA;AAEoB,IAAA;AACV,MAAA;AACb,IAAA;AACiB,MAAA;AACxB,IAAA;AACF,EAAA;AAEuC,EAAA;AACL,EAAA;AACpC;AAEuD;AACjD,EAAA;AACqB,IAAA;AACf,IAAA;AACA,MAAA;AACJ,QAAA;AACF,MAAA;AACF,IAAA;AACY,IAAA;AAGiB,IAAA;AACF,IAAA;AAEQ,IAAA;AAGf,IAAA;AAEhB,IAAA;AAC+B,MAAA;AACf,MAAA;AACc,MAAA;AAClB,IAAA;AACD,MAAA;AACY,MAAA;AAC3B,IAAA;AAEY,IAAA;AACW,IAAA;AACA,IAAA;AACA,IAAA;AACX,IAAA;AAGmB,IAAA;AACvB,MAAA;AACA,MAAA;AACG,MAAA;AACoB,MAAA;AACI,QAAA;AACtB,UAAA;AACT,QAAA;AACuB,QAAA;AACd,UAAA;AACT,QAAA;AACO,QAAA;AACT,MAAA;AACD,IAAA;AAEqB,IAAA;AACK,MAAA;AACX,MAAA;AAChB,IAAA;AAEoC,IAAA;AAGJ,IAAA;AAEpB,IAAA;AACY,IAAA;AAED,IAAA;AACE,MAAA;AACK,IAAA;AACL,MAAA;AAClB,IAAA;AACkB,MAAA;AACzB,IAAA;AAEY,IAAA;AACY,IAAA;AACD,IAAA;AACA,IAAA;AACT,EAAA;AACN,IAAA;AACA,MAAA;AAEF,QAAA;AAEJ,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADzByC;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/login-IAP4RFUM.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport prompts from \"prompts\";\nimport { DEFAULT_ENDPOINT } from \"@/internal/constants\";\n\nconst getEndpoint = (): string => {\n return process.env.LANGWATCH_ENDPOINT ?? DEFAULT_ENDPOINT;\n};\n\nconst updateEnvFile = (\n apiKey: string,\n): { created: boolean; updated: boolean; path: string } => {\n const envPath = path.join(process.cwd(), \".env\");\n\n // Check if .env exists\n if (!fs.existsSync(envPath)) {\n // Create new .env file\n fs.writeFileSync(envPath, `LANGWATCH_API_KEY=${apiKey}\\n`);\n return { created: true, updated: false, path: envPath };\n }\n\n // Read existing .env file\n const content = fs.readFileSync(envPath, \"utf-8\");\n const lines = content.split(\"\\n\");\n\n // Check if LANGWATCH_API_KEY already exists and update it\n let found = false;\n const updatedLines = lines.map((line) => {\n if (line.startsWith(\"LANGWATCH_API_KEY=\")) {\n found = true;\n return `LANGWATCH_API_KEY=${apiKey}`;\n }\n return line;\n });\n\n if (!found) {\n // Add to end of file\n if (content.endsWith(\"\\n\") || content === \"\") {\n updatedLines.push(`LANGWATCH_API_KEY=${apiKey}`);\n } else {\n updatedLines.push(\"\", `LANGWATCH_API_KEY=${apiKey}`);\n }\n }\n\n fs.writeFileSync(envPath, updatedLines.join(\"\\n\"));\n return { created: false, updated: found, path: envPath };\n};\n\nexport const loginCommand = async (): Promise<void> => {\n try {\n console.log(chalk.blue(\"🔐 LangWatch Login\"));\n console.log(\n chalk.gray(\n \"This will open your browser to get an API key from LangWatch.\",\n ),\n );\n console.log();\n\n // Get the authorization URL\n const endpoint = getEndpoint();\n const authUrl = `${endpoint}/authorize`;\n\n console.log(chalk.cyan(`Opening: ${authUrl}`));\n\n // Open browser\n const spinner = ora(\"Opening browser...\").start();\n\n try {\n const open = (await import(\"open\")).default;\n await open(authUrl);\n spinner.succeed(\"Browser opened\");\n } catch (error) {\n spinner.fail(\"Failed to open browser\");\n console.log(chalk.yellow(`Please manually open: ${chalk.cyan(authUrl)}`));\n }\n\n console.log();\n console.log(chalk.gray(\"1. Log in to LangWatch in your browser\"));\n console.log(chalk.gray(\"2. Copy your API key\"));\n console.log(chalk.gray(\"3. Come back here and paste it\"));\n console.log();\n\n // Wait for user input using prompts library\n const response = await prompts({\n type: \"password\",\n name: \"apiKey\",\n message: \"Paste your API key here:\",\n validate: (value: string) => {\n if (!value || value.trim() === \"\") {\n return \"API key is required\";\n }\n if (value.length < 10) {\n return \"API key seems too short. Please check and try again.\";\n }\n return true;\n },\n });\n\n if (!response.apiKey) {\n console.log(chalk.yellow(\"Login cancelled\"));\n process.exit(0);\n }\n\n const apiKey = response.apiKey.trim();\n\n // Save to .env file\n const envResult = updateEnvFile(apiKey);\n\n console.log();\n console.log(chalk.green(\"✓ API key saved successfully!\"));\n\n if (envResult.created) {\n console.log(chalk.gray(`• Created .env file with your API key`));\n } else if (envResult.updated) {\n console.log(chalk.gray(`• Updated existing API key in .env file`));\n } else {\n console.log(chalk.gray(`• Added API key to existing .env file`));\n }\n\n console.log();\n console.log(chalk.green(\"🎉 You're all set! You can now use:\"));\n console.log(chalk.cyan(\" langwatch prompt add <name>\"));\n console.log(chalk.cyan(\" langwatch prompt sync\"));\n } catch (error) {\n console.error(\n chalk.red(\n `Error during login: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n process.exit(1);\n }\n};\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_ENDPOINT
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CAVBDSBT.mjs";
|
|
4
4
|
import "./chunk-CU3443HD.mjs";
|
|
5
5
|
|
|
6
6
|
// src/cli/commands/login.ts
|
|
@@ -111,4 +111,4 @@ var loginCommand = async () => {
|
|
|
111
111
|
export {
|
|
112
112
|
loginCommand
|
|
113
113
|
};
|
|
114
|
-
//# sourceMappingURL=login-
|
|
114
|
+
//# sourceMappingURL=login-VXLW2OXR.mjs.map
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation-
|
|
1
|
+
export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation-D7LzdQop.mjs';
|
|
2
2
|
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
3
3
|
import { a as DataCaptureMode } from '../types-Dmazk5Bk.mjs';
|
|
4
4
|
export { b as DataCaptureConfig, c as DataCaptureContext, D as DataCaptureOptions, d as DataCapturePredicate } from '../types-Dmazk5Bk.mjs';
|
|
5
|
-
import { L as LangWatchSpan } from '../types-
|
|
6
|
-
export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-
|
|
5
|
+
import { L as LangWatchSpan } from '../types-D61S7yPU.mjs';
|
|
6
|
+
export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-D61S7yPU.mjs';
|
|
7
7
|
import { Span } from '@opentelemetry/api';
|
|
8
8
|
export { b as SemConvAttributeKey, S as SemConvAttributes, a as SemConvLogRecordAttributes, l as attributes } from '../types-DRiQaKFG.mjs';
|
|
9
9
|
import '@opentelemetry/sdk-trace-base';
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation
|
|
1
|
+
export { F as FilterableBatchSpanProcessor, L as LangWatchExporter, a as LangWatchExporterOptions, c as LangWatchLogger, L as LangWatchTraceExporter, a as LangWatchTraceExporterOptions, S as SpanProcessingExcludeRule, g as getLangWatchLogger, b as getLangWatchLoggerFromProvider, d as getLangWatchTracer, e as getLangWatchTracerFromProvider } from '../implementation--7B7PUww.js';
|
|
2
2
|
import { OTLPLogExporter } from '@opentelemetry/exporter-logs-otlp-http';
|
|
3
3
|
import { a as DataCaptureMode } from '../types-Dmazk5Bk.js';
|
|
4
4
|
export { b as DataCaptureConfig, c as DataCaptureContext, D as DataCaptureOptions, d as DataCapturePredicate } from '../types-Dmazk5Bk.js';
|
|
5
|
-
import { L as LangWatchSpan } from '../types-
|
|
6
|
-
export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-
|
|
5
|
+
import { L as LangWatchSpan } from '../types-D6Cs1385.js';
|
|
6
|
+
export { f as INPUT_OUTPUT_TYPES, I as InputOutputType, J as JsonSerializable, b as LangWatchSpanMetrics, d as LangWatchSpanOptions, c as LangWatchSpanRAGContext, a as LangWatchTracer, e as SimpleChatMessage, S as SpanType, s as spanTypes } from '../types-D6Cs1385.js';
|
|
7
7
|
import { Span } from '@opentelemetry/api';
|
|
8
8
|
export { b as SemConvAttributeKey, S as SemConvAttributes, a as SemConvLogRecordAttributes, l as attributes } from '../types-DRiQaKFG.js';
|
|
9
9
|
import '@opentelemetry/sdk-trace-base';
|
|
@@ -7,14 +7,14 @@ var _chunkYH5TIVK2js = require('../chunk-YH5TIVK2.js');
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
var
|
|
10
|
+
var _chunkILTCLEIFjs = require('../chunk-ILTCLEIF.js');
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
17
|
-
require('../chunk-
|
|
16
|
+
var _chunkNVKMXXNPjs = require('../chunk-NVKMXXNP.js');
|
|
17
|
+
require('../chunk-VI5NJ53L.js');
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
|
|
@@ -38,5 +38,5 @@ require('../chunk-OXBO24RB.js');
|
|
|
38
38
|
|
|
39
39
|
|
|
40
40
|
|
|
41
|
-
exports.DataCapturePresets = _chunkYH5TIVK2js.DataCapturePresets; exports.FilterableBatchSpanProcessor = _chunkYH5TIVK2js.FilterableBatchSpanProcessor; exports.LangWatchExporter =
|
|
41
|
+
exports.DataCapturePresets = _chunkYH5TIVK2js.DataCapturePresets; exports.FilterableBatchSpanProcessor = _chunkYH5TIVK2js.FilterableBatchSpanProcessor; exports.LangWatchExporter = _chunkNVKMXXNPjs.LangWatchTraceExporter; exports.LangWatchLogsExporter = _chunkNVKMXXNPjs.LangWatchLogsExporter; exports.LangWatchTraceExporter = _chunkNVKMXXNPjs.LangWatchTraceExporter; exports.attributes = _chunkDISMHYXCjs.attributes_exports; exports.createLangWatchSpan = _chunkILTCLEIFjs.createLangWatchSpan; exports.getDataCaptureMode = _chunkDISMHYXCjs.getDataCaptureMode; exports.getLangWatchLogger = _chunkNVKMXXNPjs.getLangWatchLogger; exports.getLangWatchLoggerFromProvider = _chunkNVKMXXNPjs.getLangWatchLoggerFromProvider; exports.getLangWatchTracer = _chunkILTCLEIFjs.getLangWatchTracer; exports.getLangWatchTracerFromProvider = _chunkILTCLEIFjs.getLangWatchTracerFromProvider; exports.shouldCaptureInput = _chunkDISMHYXCjs.shouldCaptureInput; exports.shouldCaptureOutput = _chunkDISMHYXCjs.shouldCaptureOutput; exports.spanTypes = _chunkILTCLEIFjs.spanTypes;
|
|
42
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -7,14 +7,14 @@ import {
|
|
|
7
7
|
getLangWatchTracer,
|
|
8
8
|
getLangWatchTracerFromProvider,
|
|
9
9
|
spanTypes
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-VILW5FYO.mjs";
|
|
11
11
|
import {
|
|
12
12
|
LangWatchLogsExporter,
|
|
13
13
|
LangWatchTraceExporter,
|
|
14
14
|
getLangWatchLogger,
|
|
15
15
|
getLangWatchLoggerFromProvider
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-ENSRDEDA.mjs";
|
|
17
|
+
import "../chunk-CAVBDSBT.mjs";
|
|
18
18
|
import {
|
|
19
19
|
attributes_exports,
|
|
20
20
|
getDataCaptureMode,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _opentelemetry_api from '@opentelemetry/api';
|
|
2
2
|
import { Attributes } from '@opentelemetry/api';
|
|
3
|
-
import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-
|
|
3
|
+
import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-D61S7yPU.mjs';
|
|
4
4
|
import { AgentAction, AgentFinish } from '@langchain/core/agents';
|
|
5
5
|
import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
|
|
6
6
|
import { DocumentInterface } from '@langchain/core/documents';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as _opentelemetry_api from '@opentelemetry/api';
|
|
2
2
|
import { Attributes } from '@opentelemetry/api';
|
|
3
|
-
import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-
|
|
3
|
+
import { L as LangWatchSpan, a as LangWatchTracer, C as ChatMessage } from '../../../types-D6Cs1385.js';
|
|
4
4
|
import { AgentAction, AgentFinish } from '@langchain/core/agents';
|
|
5
5
|
import { BaseCallbackHandler } from '@langchain/core/callbacks/base';
|
|
6
6
|
import { DocumentInterface } from '@langchain/core/documents';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true});
|
|
2
2
|
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _chunkILTCLEIFjs = require('../../../chunk-ILTCLEIF.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
@@ -31,7 +31,7 @@ var LangWatchCallbackHandler = class extends _base.BaseCallbackHandler {
|
|
|
31
31
|
constructor() {
|
|
32
32
|
super(...arguments);
|
|
33
33
|
this.name = "LangWatchCallbackHandler";
|
|
34
|
-
this.tracer =
|
|
34
|
+
this.tracer = _chunkILTCLEIFjs.getLangWatchTracer.call(void 0, "langwatch.instrumentation.langchain");
|
|
35
35
|
this.spans = {};
|
|
36
36
|
this.parentOf = {};
|
|
37
37
|
this.skipped = {};
|
|
@@ -362,7 +362,7 @@ function wrapNonScalarValues(value) {
|
|
|
362
362
|
if (value === null) return JSON.stringify(null);
|
|
363
363
|
if (typeof value === "string" || typeof value === "number" || typeof value === "boolean")
|
|
364
364
|
return value;
|
|
365
|
-
const chatMessages =
|
|
365
|
+
const chatMessages = _chunkILTCLEIFjs.chatMessageSchema.array().safeParse(value);
|
|
366
366
|
if (Array.isArray(value) && chatMessages.success) {
|
|
367
367
|
return JSON.stringify({ type: "chat_messages", value: chatMessages.data });
|
|
368
368
|
}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
|
|
5
|
-
var
|
|
5
|
+
var _chunkNVKMXXNPjs = require('../../../chunk-NVKMXXNP.js');
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _chunkVI5NJ53Ljs = require('../../../chunk-VI5NJ53L.js');
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
@@ -30,12 +30,12 @@ var _resources = require('@opentelemetry/resources');
|
|
|
30
30
|
var _incubating = require('@opentelemetry/semantic-conventions/incubating'); var semconv = _interopRequireWildcard(_incubating);
|
|
31
31
|
function createMergedResource(attributes, serviceName, givenResource) {
|
|
32
32
|
const langwatchResource = _resources.resourceFromAttributes.call(void 0, {
|
|
33
|
-
[semconv.ATTR_TELEMETRY_SDK_NAME]:
|
|
34
|
-
[semconv.ATTR_TELEMETRY_SDK_LANGUAGE]:
|
|
35
|
-
[semconv.ATTR_TELEMETRY_SDK_VERSION]:
|
|
33
|
+
[semconv.ATTR_TELEMETRY_SDK_NAME]: _chunkVI5NJ53Ljs.LANGWATCH_SDK_NAME_OBSERVABILITY,
|
|
34
|
+
[semconv.ATTR_TELEMETRY_SDK_LANGUAGE]: _chunkVI5NJ53Ljs.LANGWATCH_SDK_LANGUAGE,
|
|
35
|
+
[semconv.ATTR_TELEMETRY_SDK_VERSION]: _chunkVI5NJ53Ljs.LANGWATCH_SDK_VERSION
|
|
36
36
|
});
|
|
37
37
|
const userResource = _resources.resourceFromAttributes.call(void 0, _chunkOXBO24RBjs.__spreadValues.call(void 0, {
|
|
38
|
-
[semconv.ATTR_SERVICE_NAME]: serviceName != null ? serviceName :
|
|
38
|
+
[semconv.ATTR_SERVICE_NAME]: serviceName != null ? serviceName : _chunkVI5NJ53Ljs.DEFAULT_SERVICE_NAME
|
|
39
39
|
}, attributes != null ? attributes : {}));
|
|
40
40
|
return (givenResource != null ? givenResource : _resources.defaultResource.call(void 0, )).merge(langwatchResource).merge(userResource);
|
|
41
41
|
}
|
|
@@ -89,7 +89,7 @@ var getLangWatchConfig = (options) => {
|
|
|
89
89
|
return {
|
|
90
90
|
disabled: isDisabled,
|
|
91
91
|
apiKey: isDisabled ? void 0 : (_a = config.apiKey) != null ? _a : process.env.LANGWATCH_API_KEY,
|
|
92
|
-
endpoint: isDisabled ? void 0 : (_c = (_b = config.endpoint) != null ? _b : process.env.LANGWATCH_ENDPOINT) != null ? _c :
|
|
92
|
+
endpoint: isDisabled ? void 0 : (_c = (_b = config.endpoint) != null ? _b : process.env.LANGWATCH_ENDPOINT) != null ? _c : _chunkVI5NJ53Ljs.DEFAULT_ENDPOINT,
|
|
93
93
|
processorType: (_d = config.processorType) != null ? _d : "simple"
|
|
94
94
|
};
|
|
95
95
|
};
|
|
@@ -196,11 +196,11 @@ function createAndStartNodeSdk(options, logger, resource) {
|
|
|
196
196
|
logger.debug("Console recording of logs enabled; adding console log record processor");
|
|
197
197
|
}
|
|
198
198
|
if (!langwatch.disabled) {
|
|
199
|
-
const traceExporter = new (0,
|
|
199
|
+
const traceExporter = new (0, _chunkNVKMXXNPjs.LangWatchTraceExporter)({
|
|
200
200
|
apiKey: langwatch.apiKey,
|
|
201
201
|
endpoint: langwatch.endpoint
|
|
202
202
|
});
|
|
203
|
-
const logExporter = new (0,
|
|
203
|
+
const logExporter = new (0, _chunkNVKMXXNPjs.LangWatchLogsExporter)({
|
|
204
204
|
apiKey: langwatch.apiKey,
|
|
205
205
|
endpoint: langwatch.endpoint
|
|
206
206
|
});
|
|
@@ -253,7 +253,7 @@ function createAndStartNodeSdk(options, logger, resource) {
|
|
|
253
253
|
sdk.start();
|
|
254
254
|
logger.info("NodeSDK started successfully");
|
|
255
255
|
if (loggerProvider) {
|
|
256
|
-
|
|
256
|
+
_chunkNVKMXXNPjs.setLangWatchLoggerProvider.call(void 0, loggerProvider);
|
|
257
257
|
logger.debug("Set LangWatch logger provider");
|
|
258
258
|
}
|
|
259
259
|
if (!((_e = options.advanced) == null ? void 0 : _e.disableAutoShutdown)) {
|
|
@@ -2,14 +2,14 @@ import {
|
|
|
2
2
|
LangWatchLogsExporter,
|
|
3
3
|
LangWatchTraceExporter,
|
|
4
4
|
setLangWatchLoggerProvider
|
|
5
|
-
} from "../../../chunk-
|
|
5
|
+
} from "../../../chunk-ENSRDEDA.mjs";
|
|
6
6
|
import {
|
|
7
7
|
DEFAULT_ENDPOINT,
|
|
8
8
|
DEFAULT_SERVICE_NAME,
|
|
9
9
|
LANGWATCH_SDK_LANGUAGE,
|
|
10
10
|
LANGWATCH_SDK_NAME_OBSERVABILITY,
|
|
11
11
|
LANGWATCH_SDK_VERSION
|
|
12
|
-
} from "../../../chunk-
|
|
12
|
+
} from "../../../chunk-CAVBDSBT.mjs";
|
|
13
13
|
import {
|
|
14
14
|
ConsoleLogger,
|
|
15
15
|
initializeObservabilitySdkConfig
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import {
|
|
2
2
|
PromptsError
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-5ZKAT4KI.mjs";
|
|
4
4
|
import "./chunk-N2V6J3U2.mjs";
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-
|
|
7
|
-
import "./chunk-
|
|
5
|
+
import "./chunk-VILW5FYO.mjs";
|
|
6
|
+
import "./chunk-ENSRDEDA.mjs";
|
|
7
|
+
import "./chunk-CAVBDSBT.mjs";
|
|
8
8
|
import "./chunk-YNQ44U6D.mjs";
|
|
9
9
|
import {
|
|
10
10
|
FileManager
|
|
11
|
-
} from "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
} from "./chunk-7ZRAJ52N.mjs";
|
|
12
|
+
import "./chunk-LXVDGQA4.mjs";
|
|
13
|
+
import "./chunk-YQVVPMKH.mjs";
|
|
14
14
|
import "./chunk-CU3443HD.mjs";
|
|
15
15
|
|
|
16
16
|
// src/cli/commands/remove.ts
|
|
@@ -107,4 +107,4 @@ var removeCommand = async (name) => {
|
|
|
107
107
|
export {
|
|
108
108
|
removeCommand
|
|
109
109
|
};
|
|
110
|
-
//# sourceMappingURL=remove-
|
|
110
|
+
//# sourceMappingURL=remove-JUVM6M7G.mjs.map
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var _chunkNFM6RB4Rjs = require('./chunk-NFM6RB4R.js');
|
|
4
4
|
require('./chunk-YH5TIVK2.js');
|
|
5
|
-
require('./chunk-
|
|
6
|
-
require('./chunk-
|
|
7
|
-
require('./chunk-
|
|
5
|
+
require('./chunk-ILTCLEIF.js');
|
|
6
|
+
require('./chunk-NVKMXXNP.js');
|
|
7
|
+
require('./chunk-VI5NJ53L.js');
|
|
8
8
|
require('./chunk-DISMHYXC.js');
|
|
9
9
|
|
|
10
10
|
|
|
11
|
-
var
|
|
12
|
-
require('./chunk-
|
|
13
|
-
require('./chunk-
|
|
11
|
+
var _chunkP5F63PAWjs = require('./chunk-P5F63PAW.js');
|
|
12
|
+
require('./chunk-PUHM465C.js');
|
|
13
|
+
require('./chunk-I5NDMIK5.js');
|
|
14
14
|
require('./chunk-OXBO24RB.js');
|
|
15
15
|
|
|
16
16
|
// src/cli/commands/remove.ts
|
|
@@ -24,8 +24,8 @@ var removeCommand = async (name) => {
|
|
|
24
24
|
console.error(_chalk2.default.red("Error: Prompt name cannot be empty"));
|
|
25
25
|
process.exit(1);
|
|
26
26
|
}
|
|
27
|
-
const config =
|
|
28
|
-
const lock =
|
|
27
|
+
const config = _chunkP5F63PAWjs.FileManager.loadPromptsConfig();
|
|
28
|
+
const lock = _chunkP5F63PAWjs.FileManager.loadPromptsLock();
|
|
29
29
|
if (!config.prompts[name]) {
|
|
30
30
|
console.error(_chalk2.default.red(`Error: Prompt "${name}" not found in dependencies`));
|
|
31
31
|
console.log(_chalk2.default.gray(`Available prompts: ${Object.keys(config.prompts).join(", ") || "none"}`));
|
|
@@ -42,7 +42,7 @@ var removeCommand = async (name) => {
|
|
|
42
42
|
} else if (typeof dependency === "object" && dependency.file) {
|
|
43
43
|
localFilePath = path.resolve(dependency.file);
|
|
44
44
|
} else {
|
|
45
|
-
localFilePath = path.join(
|
|
45
|
+
localFilePath = path.join(_chunkP5F63PAWjs.FileManager.getPromptsDir(), `${name}.prompt.yaml`);
|
|
46
46
|
}
|
|
47
47
|
if (fs.existsSync(localFilePath)) {
|
|
48
48
|
fs.unlinkSync(localFilePath);
|
|
@@ -61,7 +61,7 @@ var removeCommand = async (name) => {
|
|
|
61
61
|
if (fs.existsSync(materializedPath)) {
|
|
62
62
|
fs.unlinkSync(materializedPath);
|
|
63
63
|
const materializedDir = path.dirname(materializedPath);
|
|
64
|
-
const rootMaterializedDir =
|
|
64
|
+
const rootMaterializedDir = _chunkP5F63PAWjs.FileManager.getMaterializedDir();
|
|
65
65
|
let currentDir = materializedDir;
|
|
66
66
|
while (currentDir !== rootMaterializedDir && currentDir !== path.dirname(currentDir)) {
|
|
67
67
|
try {
|
|
@@ -80,15 +80,15 @@ var removeCommand = async (name) => {
|
|
|
80
80
|
}
|
|
81
81
|
delete config.prompts[name];
|
|
82
82
|
delete lock.prompts[name];
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
_chunkP5F63PAWjs.FileManager.savePromptsConfig(config);
|
|
84
|
+
_chunkP5F63PAWjs.FileManager.savePromptsLock(lock);
|
|
85
85
|
if (!isLocalPrompt) {
|
|
86
86
|
spinner.succeed();
|
|
87
87
|
console.log(_chalk2.default.green(`\u2713 Removed ${_chalk2.default.cyan(name)} from dependencies`));
|
|
88
88
|
}
|
|
89
89
|
} catch (error) {
|
|
90
90
|
spinner.fail();
|
|
91
|
-
if (error instanceof
|
|
91
|
+
if (error instanceof _chunkNFM6RB4Rjs.PromptsError) {
|
|
92
92
|
console.error(_chalk2.default.red(`Error: ${error.message}`));
|
|
93
93
|
} else {
|
|
94
94
|
console.error(_chalk2.default.red(`Error removing prompt: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
@@ -96,7 +96,7 @@ var removeCommand = async (name) => {
|
|
|
96
96
|
process.exit(1);
|
|
97
97
|
}
|
|
98
98
|
} catch (error) {
|
|
99
|
-
if (error instanceof
|
|
99
|
+
if (error instanceof _chunkNFM6RB4Rjs.PromptsError) {
|
|
100
100
|
console.error(_chalk2.default.red(`Error: ${error.message}`));
|
|
101
101
|
} else {
|
|
102
102
|
console.error(_chalk2.default.red(`Unexpected error: ${error instanceof Error ? error.message : "Unknown error"}`));
|
|
@@ -107,4 +107,4 @@ var removeCommand = async (name) => {
|
|
|
107
107
|
|
|
108
108
|
|
|
109
109
|
exports.removeCommand = removeCommand;
|
|
110
|
-
//# sourceMappingURL=remove-
|
|
110
|
+
//# sourceMappingURL=remove-N3324KHS.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-
|
|
1
|
+
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-N3324KHS.js","../src/cli/commands/remove.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACfA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAIT,IAAM,cAAA,EAAgB,MAAA,CAAO,IAAA,EAAA,GAAgC;AAClE,EAAA,IAAI;AAEF,IAAA,GAAA,CAAI,CAAC,KAAA,GAAQ,IAAA,CAAK,IAAA,CAAK,EAAA,IAAM,EAAA,EAAI;AAC/B,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,oCAAoC,CAAC,CAAA;AAC7D,MAAA,OAAA,CAAQ,IAAA,CAAK,CAAC,CAAA;AAAA,IAChB;AAGA,IAAA,MAAM,OAAA,EAAS,4BAAA,CAAY,iBAAA,CAAkB,CAAA;AAC7C,IAAA,MAAM,KAAA,EAAO,4BAAA,CAAY,eAAA,CAAgB,CAAA;AAGzC,IAAA,GAAA,CAAI,CAAC,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,EAAG;AACzB,MAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,CAAA,eAAA,EAAkB,IAAI,CAAA,2BAAA,CAA6B,CAAC,CAAA;AAC5E,MAAA,OAAA,CAAQ,GAAA,CAAI,eAAA,CAAM,IAAA,CAAK,CAAA,mBAAA,EAAsB,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,IAAI,EAAA,GAAK,MAAM,CAAA,CAAA;AAC/E,MAAA;AAChB,IAAA;AAEsC,IAAA;AAEhB,IAAA;AAEuC,IAAA;AAEzD,IAAA;AAEiB,MAAA;AACb,QAAA;AAEkE,QAAA;AACpB,UAAA;AACY,QAAA;AAChB,UAAA;AACvC,QAAA;AAEuE,UAAA;AAC9E,QAAA;AAGkC,QAAA;AACL,UAAA;AACoC,UAAA;AAC/C,UAAA;AAC2D,UAAA;AACtE,QAAA;AACW,UAAA;AACqD,UAAA;AACvE,QAAA;AAEyB,QAAA;AAC3B,MAAA;AAGmC,MAAA;AACN,MAAA;AACiC,QAAA;AACvB,QAAA;AACL,UAAA;AAGuB,UAAA;AACM,UAAA;AAE1C,UAAA;AACqE,UAAA;AAChF,YAAA;AACuC,cAAA;AACf,cAAA;AACD,gBAAA;AACa,gBAAA;AAC/B,cAAA;AACL,gBAAA;AACF,cAAA;AACM,YAAA;AACN,cAAA;AACF,YAAA;AACF,UAAA;AACF,QAAA;AACF,MAAA;AAG0B,MAAA;AACF,MAAA;AAGY,MAAA;AACJ,MAAA;AAEZ,MAAA;AACF,QAAA;AAC0D,QAAA;AAC5E,MAAA;AAEc,IAAA;AACD,MAAA;AACsB,MAAA;AACiB,QAAA;AAC7C,MAAA;AACsF,QAAA;AAC7F,MAAA;AACc,MAAA;AAChB,IAAA;AAEc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACiF,MAAA;AACxF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADboG;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/remove-N3324KHS.js","sourcesContent":[null,"import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { PromptsError } from \"@/client-sdk/services/prompts\";\n\nexport const removeCommand = async (name: string): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Load existing config and lock\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n // Check if prompt exists in dependencies\n if (!config.prompts[name]) {\n console.error(chalk.red(`Error: Prompt \"${name}\" not found in dependencies`));\n console.log(chalk.gray(`Available prompts: ${Object.keys(config.prompts).join(', ') || 'none'}`));\n process.exit(1);\n }\n\n const dependency = config.prompts[name];\n const isLocalPrompt = (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) ||\n (typeof dependency === \"object\" && dependency.file);\n\n const spinner = ora(`Removing ${chalk.cyan(name)}...`).start();\n\n try {\n // Handle local prompts\n if (isLocalPrompt) {\n let localFilePath: string;\n\n if (typeof dependency === \"string\" && dependency.startsWith(\"file:\")) {\n localFilePath = path.resolve(dependency.slice(5)); // Remove \"file:\" prefix\n } else if (typeof dependency === \"object\" && dependency.file) {\n localFilePath = path.resolve(dependency.file);\n } else {\n // Fallback: assume it's in the prompts directory\n localFilePath = path.join(FileManager.getPromptsDir(), `${name}.prompt.yaml`);\n }\n\n // Delete the local file if it exists\n if (fs.existsSync(localFilePath)) {\n fs.unlinkSync(localFilePath);\n const relativePath = path.relative(process.cwd(), localFilePath);\n spinner.succeed();\n console.log(chalk.green(`✓ Removed local file ${chalk.gray(relativePath)}`));\n } else {\n spinner.succeed();\n console.log(chalk.yellow(`⚠ Local file not found (already deleted?)`));\n }\n\n console.log(chalk.yellow(`⚠ Note: This prompt may still exist on the server. Visit LangWatch to fully delete it.`));\n }\n\n // Remove materialized file if it exists\n const lockEntry = lock.prompts[name];\n if (lockEntry?.materialized) {\n const materializedPath = path.resolve(lockEntry.materialized);\n if (fs.existsSync(materializedPath)) {\n fs.unlinkSync(materializedPath);\n\n // Clean up empty directories\n const materializedDir = path.dirname(materializedPath);\n const rootMaterializedDir = FileManager.getMaterializedDir();\n\n let currentDir = materializedDir;\n while (currentDir !== rootMaterializedDir && currentDir !== path.dirname(currentDir)) {\n try {\n const entries = fs.readdirSync(currentDir);\n if (entries.length === 0) {\n fs.rmdirSync(currentDir);\n currentDir = path.dirname(currentDir);\n } else {\n break;\n }\n } catch {\n break;\n }\n }\n }\n }\n\n // Remove from config and lock\n delete config.prompts[name];\n delete lock.prompts[name];\n\n // Save updated files\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n if (!isLocalPrompt) {\n spinner.succeed();\n console.log(chalk.green(`✓ Removed ${chalk.cyan(name)} from dependencies`));\n }\n\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(chalk.red(`Error removing prompt: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n }\n\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(chalk.red(`Unexpected error: ${error instanceof Error ? error.message : \"Unknown error\"}`));\n }\n process.exit(1);\n }\n};\n"]}
|
|
@@ -3,25 +3,25 @@ import {
|
|
|
3
3
|
} from "./chunk-DHJKJVY7.mjs";
|
|
4
4
|
import {
|
|
5
5
|
LangWatch
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RBZNMZTF.mjs";
|
|
7
7
|
import {
|
|
8
8
|
PromptsError
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-5ZKAT4KI.mjs";
|
|
10
10
|
import "./chunk-N2V6J3U2.mjs";
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-VILW5FYO.mjs";
|
|
12
|
+
import "./chunk-ENSRDEDA.mjs";
|
|
13
|
+
import "./chunk-CAVBDSBT.mjs";
|
|
14
14
|
import "./chunk-YNQ44U6D.mjs";
|
|
15
15
|
import {
|
|
16
16
|
ensureProjectInitialized
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-K4ICRI7W.mjs";
|
|
18
18
|
import {
|
|
19
19
|
FileManager
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-7ZRAJ52N.mjs";
|
|
21
21
|
import {
|
|
22
22
|
PromptConverter
|
|
23
|
-
} from "./chunk-
|
|
24
|
-
import "./chunk-
|
|
23
|
+
} from "./chunk-LXVDGQA4.mjs";
|
|
24
|
+
import "./chunk-YQVVPMKH.mjs";
|
|
25
25
|
import "./chunk-CU3443HD.mjs";
|
|
26
26
|
|
|
27
27
|
// src/cli/commands/sync.ts
|
|
@@ -73,6 +73,7 @@ var handleConflict = async (promptName, conflictInfo) => {
|
|
|
73
73
|
};
|
|
74
74
|
var syncCommand = async () => {
|
|
75
75
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q;
|
|
76
|
+
console.log("\u{1F504} Starting sync...");
|
|
76
77
|
const startTime = Date.now();
|
|
77
78
|
try {
|
|
78
79
|
checkApiKey();
|
|
@@ -353,7 +354,9 @@ Tip: Add these to prompts.json to include them in sync operations.`
|
|
|
353
354
|
const localPath = `./prompts/${name}.prompt.yaml`;
|
|
354
355
|
console.log(
|
|
355
356
|
chalk.green(
|
|
356
|
-
`\u2713 Pushed ${chalk.cyan(name)} ${chalk.gray(
|
|
357
|
+
`\u2713 Pushed ${chalk.cyan(name)} ${chalk.gray(
|
|
358
|
+
`(version ${version})`
|
|
359
|
+
)} from ${chalk.gray(localPath)}`
|
|
357
360
|
)
|
|
358
361
|
);
|
|
359
362
|
}
|
|
@@ -407,4 +410,4 @@ Tip: Add these to prompts.json to include them in sync operations.`
|
|
|
407
410
|
export {
|
|
408
411
|
syncCommand
|
|
409
412
|
};
|
|
410
|
-
//# sourceMappingURL=sync-
|
|
413
|
+
//# sourceMappingURL=sync-B4YK6QYX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli/commands/sync.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport * as yaml from \"js-yaml\";\nimport { PromptConverter } from \"@/cli/utils/promptConverter\";\nimport {\n type ConfigData,\n PromptsError,\n type SyncAction,\n} from \"@/client-sdk/services/prompts\";\nimport { LangWatch } from \"@/client-sdk\";\nimport type { 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 `\\n⚠ Conflict detected for prompt: ${chalk.cyan(promptName)}`,\n ),\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 sync 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\nexport const syncCommand = async (): Promise<void> => {\n console.log(\"🔄 Starting sync...\");\n\n const startTime = Date.now();\n\n try {\n // Check API key before doing anything else\n checkApiKey();\n\n // Get LangWatch client\n const langwatch = new LangWatch();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized(false); // Don't prompt for .gitignore in sync\n\n // Load prompts config and lock\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n const result: SyncResult = {\n fetched: [],\n pushed: [],\n unchanged: [],\n cleaned: [],\n errors: [],\n };\n\n // Process remote prompts (fetch and materialize)\n const remoteDeps = Object.entries(config.prompts).filter(\n ([, dependency]) => {\n // Skip local file dependencies (both object format and string format)\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 // Check if we already have this prompt with the same version\n const lockEntry = lock.prompts[name];\n\n // Fetch the prompt from the API to check current version\n const prompt = await langwatch.prompts.get(name);\n\n if (prompt) {\n // Check if we need to update (new version or not materialized)\n const needsUpdate =\n !lockEntry ||\n lockEntry.version !== prompt.version ||\n !lockEntry.materialized ||\n !fs.existsSync(path.resolve(lockEntry.materialized));\n\n if (needsUpdate) {\n // Convert to MaterializedPrompt format using the converter\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 // Update lock file entry\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 // No change needed, track as unchanged\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 // Process local prompts (push to API) - only those explicitly declared in prompts.json\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 // Use the existing lock file instead of reloading it\n // const lock = FileManager.loadPromptsLock(); // Don't reload - use existing lock\n\n for (const [promptName, dependency] of localFileRefs) {\n try {\n const filePath = (dependency as string).slice(5); // Remove \"file:\" prefix\n\n // Load local prompt config\n const localConfig = FileManager.loadLocalPrompt(filePath);\n\n // Get current version from lock file\n const currentVersion = lock.prompts[promptName]?.version;\n\n // Convert local config to API configData format\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: [{ identifier: \"output\", type: \"str\" }],\n };\n\n // Use new sync API with conflict detection\n const syncResult = await langwatch.prompts.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 // Handle conflict - prompt user for resolution\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: \"Sync aborted due to conflict\",\n });\n continue;\n }\n\n // If user chose remote, we should pull the remote version to local file\n if (conflictResolution === \"remote\" && syncResult.conflictInfo) {\n // Update local file with remote content\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 // If user chose to proceed, we continue with the sync\n pushSpinner.start();\n }\n\n // Update lock file with new version info\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 // User chose remote - use remote version\n lock.prompts[promptName] = {\n version: remoteVersion,\n versionId: \"remote_version\", // We don't have the actual versionId from conflict info\n materialized: filePath,\n };\n } else {\n // User chose local - create new version (remote + 1)\n lock.prompts[promptName] = {\n version: remoteVersion + 1,\n versionId: \"conflict_resolved\", // Temporary until we get actual versionId\n materialized: filePath,\n };\n }\n }\n\n // Determine the action text based on sync result and conflict resolution\n let actionText: string;\n if (syncResult.action === \"conflict\") {\n if (conflictResolution === \"remote\") {\n actionText = \"Pulled\"; // User chose to use remote version\n result.fetched.push({\n name: promptName,\n version: syncResult.conflictInfo?.remoteVersion ?? 0,\n versionSpec: \"latest\", // Default for conflict resolution\n });\n } else {\n actionText = \"Pushed\"; // User chose to use local version (or forced push)\n result.pushed.push({\n name: promptName,\n version: (syncResult.conflictInfo?.remoteVersion ?? 0) + 1, // New version after push\n });\n }\n } else if (syncResult.action === \"up_to_date\") {\n // For up-to-date prompts, add to unchanged instead of pushed\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 // Save lock file with all updates\n FileManager.savePromptsLock(lock);\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]; // Not declared in prompts.json\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 sync operations.`,\n ),\n );\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 // Only include remote dependencies (not local file: dependencies)\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 // Save the updated lock file\n FileManager.savePromptsLock(lock);\n\n // Print individual results if there were actions\n if (result.fetched.length > 0) {\n for (const { name, version, versionSpec } of result.fetched) {\n // Get the actual saved path from lock file for display consistency\n const lockEntry = lock.prompts[name];\n const displayPath = lockEntry?.materialized\n ? `./${lockEntry.materialized}`\n : `./prompts/.materialized/${name}.prompt.yaml`;\n\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${versionSpec}`)} ${chalk.gray(\n `(version ${version})`,\n )} → ${chalk.gray(displayPath)}`,\n ),\n );\n }\n }\n\n if (result.pushed.length > 0) {\n for (const { name, version } of result.pushed) {\n const localPath = `./prompts/${name}.prompt.yaml`;\n console.log(\n chalk.green(\n `✓ Pushed ${chalk.cyan(name)} ${chalk.gray(\n `(version ${version})`,\n )} from ${chalk.gray(localPath)}`,\n ),\n );\n }\n }\n\n // Print cleaned up files\n if (result.cleaned.length > 0) {\n for (const name of result.cleaned) {\n console.log(\n chalk.yellow(\n `✓ Cleaned ${chalk.cyan(name)} (no longer in dependencies)`,\n ),\n );\n }\n }\n\n // Print errors\n if (result.errors.length > 0) {\n for (const { name, error } of result.errors) {\n console.log(chalk.red(`✗ Failed ${chalk.cyan(name)}: ${error}`));\n }\n }\n\n // Print summary\n const duration = ((Date.now() - startTime) / 1000).toFixed(1);\n const totalActions =\n result.fetched.length + result.pushed.length + result.cleaned.length;\n\n if (totalActions === 0 && result.errors.length === 0) {\n console.log(chalk.gray(`Synced in ${duration}s, no changes`));\n } else {\n const summary = [];\n if (result.fetched.length > 0)\n summary.push(`${result.fetched.length} fetched`);\n if (result.pushed.length > 0)\n summary.push(`${result.pushed.length} pushed`);\n if (result.cleaned.length > 0)\n summary.push(`${result.cleaned.length} cleaned`);\n if (result.errors.length > 0)\n summary.push(`${result.errors.length} errors`);\n\n console.log(chalk.gray(`Synced ${summary.join(\", \")} in ${duration}s`));\n }\n\n if (result.errors.length > 0) {\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"],"mappings":"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","names":["resolve"]}
|