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