langwatch 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{add-5FRWEQ32.mjs → add-2UHFYNUA.mjs} +8 -8
- package/dist/add-2UHFYNUA.mjs.map +1 -0
- package/dist/{add-CXUS4ZSQ.js → add-LUETMKBD.js} +11 -11
- package/dist/add-LUETMKBD.js.map +1 -0
- package/dist/{chunk-CKIZDPIJ.js → chunk-5MQQRSVM.js} +1 -1
- package/dist/{chunk-CKIZDPIJ.js.map → chunk-5MQQRSVM.js.map} +1 -1
- package/dist/{chunk-NM5OKM7F.js → chunk-6SSCBYJM.js} +21 -20
- package/dist/chunk-6SSCBYJM.js.map +1 -0
- package/dist/{chunk-SNDTNU3T.js → chunk-ASTAIRXG.js} +2 -2
- package/dist/{chunk-SNDTNU3T.js.map → chunk-ASTAIRXG.js.map} +1 -1
- package/dist/{chunk-BTCJWUS5.js → chunk-BQRUUTN3.js} +17 -17
- package/dist/{chunk-BTCJWUS5.js.map → chunk-BQRUUTN3.js.map} +1 -1
- package/dist/{chunk-YWO3NE5A.js → chunk-C4XUWCQR.js} +2 -2
- package/dist/{chunk-YWO3NE5A.js.map → chunk-C4XUWCQR.js.map} +1 -1
- package/dist/{chunk-WHPBZSTS.mjs → chunk-IIUI2XYW.mjs} +2 -2
- package/dist/{chunk-A43BYF5Q.js → chunk-ONXIZKC6.js} +11 -11
- package/dist/{chunk-A43BYF5Q.js.map → chunk-ONXIZKC6.js.map} +1 -1
- package/dist/{chunk-I3X7VMSP.mjs → chunk-OTID7S7K.mjs} +8 -7
- package/dist/chunk-OTID7S7K.mjs.map +1 -0
- package/dist/{chunk-I2SOBPAF.mjs → chunk-RSIPLYVA.mjs} +1 -1
- package/dist/{chunk-I2SOBPAF.mjs.map → chunk-RSIPLYVA.mjs.map} +1 -1
- package/dist/{chunk-W6FD5ZO3.mjs → chunk-TB5KB737.mjs} +2 -2
- package/dist/{chunk-W6FD5ZO3.mjs.map → chunk-TB5KB737.mjs.map} +1 -1
- package/dist/{chunk-VGVWXKVM.mjs → chunk-WCNDT5SD.mjs} +3 -3
- package/dist/{chunk-FEL5FLHA.mjs → chunk-ZEPKV5YO.mjs} +2 -2
- package/dist/cli/index.js +6 -6
- package/dist/cli/index.mjs +6 -6
- package/dist/{implementation-CPxv2BdW.d.ts → implementation-Bnc8Aymq.d.ts} +1 -1
- package/dist/{implementation-CVrmD0bz.d.mts → implementation-Ck58nRkT.d.mts} +1 -1
- package/dist/index.d.mts +666 -3
- package/dist/index.d.ts +666 -3
- package/dist/index.js +1249 -17
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1241 -9
- package/dist/index.mjs.map +1 -1
- package/dist/{list-K6E3OGYH.js → list-7U3M64GY.js} +10 -10
- package/dist/{list-K6E3OGYH.js.map → list-7U3M64GY.js.map} +1 -1
- package/dist/{list-DQ6XLQCK.mjs → list-WV5LA6LD.mjs} +7 -7
- package/dist/{login-HX7WMLPL.js → login-B7DKMN7P.js} +4 -4
- package/dist/{login-HX7WMLPL.js.map → login-B7DKMN7P.js.map} +1 -1
- package/dist/{login-TJ2NCUAJ.mjs → login-QKRT6PXA.mjs} +3 -3
- package/dist/login-QKRT6PXA.mjs.map +1 -0
- package/dist/observability-sdk/index.d.mts +3 -3
- package/dist/observability-sdk/index.d.ts +3 -3
- package/dist/observability-sdk/index.js +6 -6
- package/dist/observability-sdk/index.js.map +1 -1
- package/dist/observability-sdk/index.mjs +10 -10
- 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 +16 -16
- package/dist/observability-sdk/instrumentation/langchain/index.mjs +2 -2
- package/dist/observability-sdk/setup/node/index.js +13 -13
- package/dist/observability-sdk/setup/node/index.mjs +3 -3
- package/dist/{remove-5ZOYQTF4.mjs → remove-2OGMXSTR.mjs} +7 -7
- package/dist/{remove-45A7WUCB.js → remove-A4DKCN7A.js} +9 -9
- package/dist/{remove-45A7WUCB.js.map → remove-A4DKCN7A.js.map} +1 -1
- package/dist/{sync-LL6TTFMS.mjs → sync-TNVCKWTC.mjs} +9 -9
- package/dist/sync-TNVCKWTC.mjs.map +1 -0
- package/dist/{sync-BE7XZC2A.js → sync-WRZXIBZS.js} +11 -11
- package/dist/sync-WRZXIBZS.js.map +1 -0
- package/dist/{types-Kts5RGLY.d.mts → types-5h2Im4pl.d.mts} +162 -0
- package/dist/{types-usU5mTCX.d.ts → types-fo-Ij9pl.d.ts} +162 -0
- package/package.json +125 -142
- package/dist/add-5FRWEQ32.mjs.map +0 -1
- package/dist/add-CXUS4ZSQ.js.map +0 -1
- package/dist/chunk-I3X7VMSP.mjs.map +0 -1
- package/dist/chunk-NM5OKM7F.js.map +0 -1
- package/dist/login-TJ2NCUAJ.mjs.map +0 -1
- package/dist/sync-BE7XZC2A.js.map +0 -1
- package/dist/sync-LL6TTFMS.mjs.map +0 -1
- /package/dist/{chunk-WHPBZSTS.mjs.map → chunk-IIUI2XYW.mjs.map} +0 -0
- /package/dist/{chunk-VGVWXKVM.mjs.map → chunk-WCNDT5SD.mjs.map} +0 -0
- /package/dist/{chunk-FEL5FLHA.mjs.map → chunk-ZEPKV5YO.mjs.map} +0 -0
- /package/dist/{list-DQ6XLQCK.mjs.map → list-WV5LA6LD.mjs.map} +0 -0
- /package/dist/{remove-5ZOYQTF4.mjs.map → remove-2OGMXSTR.mjs.map} +0 -0
|
@@ -852,6 +852,40 @@ interface paths {
|
|
|
852
852
|
patch?: never;
|
|
853
853
|
trace?: never;
|
|
854
854
|
};
|
|
855
|
+
"/api/evaluations/v3/{slug}/run": {
|
|
856
|
+
parameters: {
|
|
857
|
+
query?: never;
|
|
858
|
+
header?: never;
|
|
859
|
+
path?: never;
|
|
860
|
+
cookie?: never;
|
|
861
|
+
};
|
|
862
|
+
get?: never;
|
|
863
|
+
put?: never;
|
|
864
|
+
/** @description Start execution of a saved Evaluations V3 experiment by slug. Returns immediately with a runId for polling, or streams SSE events if Accept: text/event-stream header is provided. */
|
|
865
|
+
post: operations["postEvaluationsV3Run"];
|
|
866
|
+
delete?: never;
|
|
867
|
+
options?: never;
|
|
868
|
+
head?: never;
|
|
869
|
+
patch?: never;
|
|
870
|
+
trace?: never;
|
|
871
|
+
};
|
|
872
|
+
"/api/evaluations/v3/runs/{runId}": {
|
|
873
|
+
parameters: {
|
|
874
|
+
query?: never;
|
|
875
|
+
header?: never;
|
|
876
|
+
path?: never;
|
|
877
|
+
cookie?: never;
|
|
878
|
+
};
|
|
879
|
+
/** @description Get the current status of an evaluation run for polling. Returns progress while running, and summary when completed. */
|
|
880
|
+
get: operations["getEvaluationsV3RunStatus"];
|
|
881
|
+
put?: never;
|
|
882
|
+
post?: never;
|
|
883
|
+
delete?: never;
|
|
884
|
+
options?: never;
|
|
885
|
+
head?: never;
|
|
886
|
+
patch?: never;
|
|
887
|
+
trace?: never;
|
|
888
|
+
};
|
|
855
889
|
}
|
|
856
890
|
interface components {
|
|
857
891
|
schemas: {
|
|
@@ -2817,6 +2851,134 @@ interface operations {
|
|
|
2817
2851
|
};
|
|
2818
2852
|
};
|
|
2819
2853
|
};
|
|
2854
|
+
postEvaluationsV3Run: {
|
|
2855
|
+
parameters: {
|
|
2856
|
+
query?: never;
|
|
2857
|
+
header?: never;
|
|
2858
|
+
path: {
|
|
2859
|
+
/** @description The slug of the evaluation to run */
|
|
2860
|
+
slug: string;
|
|
2861
|
+
};
|
|
2862
|
+
cookie?: never;
|
|
2863
|
+
};
|
|
2864
|
+
requestBody?: never;
|
|
2865
|
+
responses: {
|
|
2866
|
+
/** @description Run started successfully */
|
|
2867
|
+
200: {
|
|
2868
|
+
headers: {
|
|
2869
|
+
[name: string]: unknown;
|
|
2870
|
+
};
|
|
2871
|
+
content: {
|
|
2872
|
+
"application/json": {
|
|
2873
|
+
/** @description Unique identifier for this run */
|
|
2874
|
+
runId: string;
|
|
2875
|
+
/**
|
|
2876
|
+
* @description Initial status of the run
|
|
2877
|
+
* @enum {string}
|
|
2878
|
+
*/
|
|
2879
|
+
status: "running";
|
|
2880
|
+
/** @description Total number of cells to execute */
|
|
2881
|
+
total: number;
|
|
2882
|
+
/** @description URL to view the run in LangWatch */
|
|
2883
|
+
runUrl?: string;
|
|
2884
|
+
};
|
|
2885
|
+
"text/event-stream": string;
|
|
2886
|
+
};
|
|
2887
|
+
};
|
|
2888
|
+
/** @description Unauthorized - Missing or invalid API key */
|
|
2889
|
+
401: {
|
|
2890
|
+
headers: {
|
|
2891
|
+
[name: string]: unknown;
|
|
2892
|
+
};
|
|
2893
|
+
content: {
|
|
2894
|
+
"application/json": {
|
|
2895
|
+
error: string;
|
|
2896
|
+
};
|
|
2897
|
+
};
|
|
2898
|
+
};
|
|
2899
|
+
/** @description Evaluation not found */
|
|
2900
|
+
404: {
|
|
2901
|
+
headers: {
|
|
2902
|
+
[name: string]: unknown;
|
|
2903
|
+
};
|
|
2904
|
+
content: {
|
|
2905
|
+
"application/json": {
|
|
2906
|
+
error: string;
|
|
2907
|
+
};
|
|
2908
|
+
};
|
|
2909
|
+
};
|
|
2910
|
+
};
|
|
2911
|
+
};
|
|
2912
|
+
getEvaluationsV3RunStatus: {
|
|
2913
|
+
parameters: {
|
|
2914
|
+
query?: never;
|
|
2915
|
+
header?: never;
|
|
2916
|
+
path: {
|
|
2917
|
+
/** @description The run ID returned from POST /api/evaluations/v3/{slug}/run */
|
|
2918
|
+
runId: string;
|
|
2919
|
+
};
|
|
2920
|
+
cookie?: never;
|
|
2921
|
+
};
|
|
2922
|
+
requestBody?: never;
|
|
2923
|
+
responses: {
|
|
2924
|
+
/** @description Run status */
|
|
2925
|
+
200: {
|
|
2926
|
+
headers: {
|
|
2927
|
+
[name: string]: unknown;
|
|
2928
|
+
};
|
|
2929
|
+
content: {
|
|
2930
|
+
"application/json": {
|
|
2931
|
+
runId: string;
|
|
2932
|
+
/** @enum {string} */
|
|
2933
|
+
status: "pending" | "running" | "completed" | "failed" | "stopped";
|
|
2934
|
+
/** @description Number of cells completed */
|
|
2935
|
+
progress: number;
|
|
2936
|
+
/** @description Total number of cells */
|
|
2937
|
+
total: number;
|
|
2938
|
+
/** @description Unix timestamp when run started */
|
|
2939
|
+
startedAt?: number;
|
|
2940
|
+
/** @description Unix timestamp when run finished (only present when completed/failed/stopped) */
|
|
2941
|
+
finishedAt?: number;
|
|
2942
|
+
/** @description Execution summary (only present when completed) */
|
|
2943
|
+
summary?: {
|
|
2944
|
+
runId?: string;
|
|
2945
|
+
totalCells?: number;
|
|
2946
|
+
completedCells?: number;
|
|
2947
|
+
failedCells?: number;
|
|
2948
|
+
/** @description Total execution time in milliseconds */
|
|
2949
|
+
duration?: number;
|
|
2950
|
+
/** @description URL to view the run in LangWatch */
|
|
2951
|
+
runUrl?: string;
|
|
2952
|
+
};
|
|
2953
|
+
/** @description Error message (only present when failed) */
|
|
2954
|
+
error?: string;
|
|
2955
|
+
};
|
|
2956
|
+
};
|
|
2957
|
+
};
|
|
2958
|
+
/** @description Unauthorized - Missing or invalid API key */
|
|
2959
|
+
401: {
|
|
2960
|
+
headers: {
|
|
2961
|
+
[name: string]: unknown;
|
|
2962
|
+
};
|
|
2963
|
+
content: {
|
|
2964
|
+
"application/json": {
|
|
2965
|
+
error: string;
|
|
2966
|
+
};
|
|
2967
|
+
};
|
|
2968
|
+
};
|
|
2969
|
+
/** @description Run not found */
|
|
2970
|
+
404: {
|
|
2971
|
+
headers: {
|
|
2972
|
+
[name: string]: unknown;
|
|
2973
|
+
};
|
|
2974
|
+
content: {
|
|
2975
|
+
"application/json": {
|
|
2976
|
+
error: string;
|
|
2977
|
+
};
|
|
2978
|
+
};
|
|
2979
|
+
};
|
|
2980
|
+
};
|
|
2981
|
+
};
|
|
2820
2982
|
}
|
|
2821
2983
|
|
|
2822
2984
|
/**
|
|
@@ -852,6 +852,40 @@ interface paths {
|
|
|
852
852
|
patch?: never;
|
|
853
853
|
trace?: never;
|
|
854
854
|
};
|
|
855
|
+
"/api/evaluations/v3/{slug}/run": {
|
|
856
|
+
parameters: {
|
|
857
|
+
query?: never;
|
|
858
|
+
header?: never;
|
|
859
|
+
path?: never;
|
|
860
|
+
cookie?: never;
|
|
861
|
+
};
|
|
862
|
+
get?: never;
|
|
863
|
+
put?: never;
|
|
864
|
+
/** @description Start execution of a saved Evaluations V3 experiment by slug. Returns immediately with a runId for polling, or streams SSE events if Accept: text/event-stream header is provided. */
|
|
865
|
+
post: operations["postEvaluationsV3Run"];
|
|
866
|
+
delete?: never;
|
|
867
|
+
options?: never;
|
|
868
|
+
head?: never;
|
|
869
|
+
patch?: never;
|
|
870
|
+
trace?: never;
|
|
871
|
+
};
|
|
872
|
+
"/api/evaluations/v3/runs/{runId}": {
|
|
873
|
+
parameters: {
|
|
874
|
+
query?: never;
|
|
875
|
+
header?: never;
|
|
876
|
+
path?: never;
|
|
877
|
+
cookie?: never;
|
|
878
|
+
};
|
|
879
|
+
/** @description Get the current status of an evaluation run for polling. Returns progress while running, and summary when completed. */
|
|
880
|
+
get: operations["getEvaluationsV3RunStatus"];
|
|
881
|
+
put?: never;
|
|
882
|
+
post?: never;
|
|
883
|
+
delete?: never;
|
|
884
|
+
options?: never;
|
|
885
|
+
head?: never;
|
|
886
|
+
patch?: never;
|
|
887
|
+
trace?: never;
|
|
888
|
+
};
|
|
855
889
|
}
|
|
856
890
|
interface components {
|
|
857
891
|
schemas: {
|
|
@@ -2817,6 +2851,134 @@ interface operations {
|
|
|
2817
2851
|
};
|
|
2818
2852
|
};
|
|
2819
2853
|
};
|
|
2854
|
+
postEvaluationsV3Run: {
|
|
2855
|
+
parameters: {
|
|
2856
|
+
query?: never;
|
|
2857
|
+
header?: never;
|
|
2858
|
+
path: {
|
|
2859
|
+
/** @description The slug of the evaluation to run */
|
|
2860
|
+
slug: string;
|
|
2861
|
+
};
|
|
2862
|
+
cookie?: never;
|
|
2863
|
+
};
|
|
2864
|
+
requestBody?: never;
|
|
2865
|
+
responses: {
|
|
2866
|
+
/** @description Run started successfully */
|
|
2867
|
+
200: {
|
|
2868
|
+
headers: {
|
|
2869
|
+
[name: string]: unknown;
|
|
2870
|
+
};
|
|
2871
|
+
content: {
|
|
2872
|
+
"application/json": {
|
|
2873
|
+
/** @description Unique identifier for this run */
|
|
2874
|
+
runId: string;
|
|
2875
|
+
/**
|
|
2876
|
+
* @description Initial status of the run
|
|
2877
|
+
* @enum {string}
|
|
2878
|
+
*/
|
|
2879
|
+
status: "running";
|
|
2880
|
+
/** @description Total number of cells to execute */
|
|
2881
|
+
total: number;
|
|
2882
|
+
/** @description URL to view the run in LangWatch */
|
|
2883
|
+
runUrl?: string;
|
|
2884
|
+
};
|
|
2885
|
+
"text/event-stream": string;
|
|
2886
|
+
};
|
|
2887
|
+
};
|
|
2888
|
+
/** @description Unauthorized - Missing or invalid API key */
|
|
2889
|
+
401: {
|
|
2890
|
+
headers: {
|
|
2891
|
+
[name: string]: unknown;
|
|
2892
|
+
};
|
|
2893
|
+
content: {
|
|
2894
|
+
"application/json": {
|
|
2895
|
+
error: string;
|
|
2896
|
+
};
|
|
2897
|
+
};
|
|
2898
|
+
};
|
|
2899
|
+
/** @description Evaluation not found */
|
|
2900
|
+
404: {
|
|
2901
|
+
headers: {
|
|
2902
|
+
[name: string]: unknown;
|
|
2903
|
+
};
|
|
2904
|
+
content: {
|
|
2905
|
+
"application/json": {
|
|
2906
|
+
error: string;
|
|
2907
|
+
};
|
|
2908
|
+
};
|
|
2909
|
+
};
|
|
2910
|
+
};
|
|
2911
|
+
};
|
|
2912
|
+
getEvaluationsV3RunStatus: {
|
|
2913
|
+
parameters: {
|
|
2914
|
+
query?: never;
|
|
2915
|
+
header?: never;
|
|
2916
|
+
path: {
|
|
2917
|
+
/** @description The run ID returned from POST /api/evaluations/v3/{slug}/run */
|
|
2918
|
+
runId: string;
|
|
2919
|
+
};
|
|
2920
|
+
cookie?: never;
|
|
2921
|
+
};
|
|
2922
|
+
requestBody?: never;
|
|
2923
|
+
responses: {
|
|
2924
|
+
/** @description Run status */
|
|
2925
|
+
200: {
|
|
2926
|
+
headers: {
|
|
2927
|
+
[name: string]: unknown;
|
|
2928
|
+
};
|
|
2929
|
+
content: {
|
|
2930
|
+
"application/json": {
|
|
2931
|
+
runId: string;
|
|
2932
|
+
/** @enum {string} */
|
|
2933
|
+
status: "pending" | "running" | "completed" | "failed" | "stopped";
|
|
2934
|
+
/** @description Number of cells completed */
|
|
2935
|
+
progress: number;
|
|
2936
|
+
/** @description Total number of cells */
|
|
2937
|
+
total: number;
|
|
2938
|
+
/** @description Unix timestamp when run started */
|
|
2939
|
+
startedAt?: number;
|
|
2940
|
+
/** @description Unix timestamp when run finished (only present when completed/failed/stopped) */
|
|
2941
|
+
finishedAt?: number;
|
|
2942
|
+
/** @description Execution summary (only present when completed) */
|
|
2943
|
+
summary?: {
|
|
2944
|
+
runId?: string;
|
|
2945
|
+
totalCells?: number;
|
|
2946
|
+
completedCells?: number;
|
|
2947
|
+
failedCells?: number;
|
|
2948
|
+
/** @description Total execution time in milliseconds */
|
|
2949
|
+
duration?: number;
|
|
2950
|
+
/** @description URL to view the run in LangWatch */
|
|
2951
|
+
runUrl?: string;
|
|
2952
|
+
};
|
|
2953
|
+
/** @description Error message (only present when failed) */
|
|
2954
|
+
error?: string;
|
|
2955
|
+
};
|
|
2956
|
+
};
|
|
2957
|
+
};
|
|
2958
|
+
/** @description Unauthorized - Missing or invalid API key */
|
|
2959
|
+
401: {
|
|
2960
|
+
headers: {
|
|
2961
|
+
[name: string]: unknown;
|
|
2962
|
+
};
|
|
2963
|
+
content: {
|
|
2964
|
+
"application/json": {
|
|
2965
|
+
error: string;
|
|
2966
|
+
};
|
|
2967
|
+
};
|
|
2968
|
+
};
|
|
2969
|
+
/** @description Run not found */
|
|
2970
|
+
404: {
|
|
2971
|
+
headers: {
|
|
2972
|
+
[name: string]: unknown;
|
|
2973
|
+
};
|
|
2974
|
+
content: {
|
|
2975
|
+
"application/json": {
|
|
2976
|
+
error: string;
|
|
2977
|
+
};
|
|
2978
|
+
};
|
|
2979
|
+
};
|
|
2980
|
+
};
|
|
2981
|
+
};
|
|
2820
2982
|
}
|
|
2821
2983
|
|
|
2822
2984
|
/**
|
package/package.json
CHANGED
|
@@ -1,147 +1,130 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
2
|
+
"name": "langwatch",
|
|
3
|
+
"version": "0.12.0",
|
|
4
|
+
"description": "LangWatch TypeScript/JavaScript SDK. Interact with the full LangWatch API and use the LangWatch OpenTelemetry SDK to instrument your application. For more information, see https://docs.langwatch.ai/integration/typescript/guide",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"module": "dist/index.mjs",
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
|
+
"author": "LangWatch",
|
|
9
|
+
"license": "MIT",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=20",
|
|
12
|
+
"pnpm": ">=8"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md",
|
|
17
|
+
"LICENSE"
|
|
18
|
+
],
|
|
19
|
+
"bin": {
|
|
20
|
+
"langwatch": "./dist/cli/index.js"
|
|
21
|
+
},
|
|
22
|
+
"exports": {
|
|
23
|
+
".": {
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"import": "./dist/index.mjs",
|
|
26
|
+
"require": "./dist/index.js"
|
|
13
27
|
},
|
|
14
|
-
"
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
],
|
|
19
|
-
"bin": {
|
|
20
|
-
"langwatch": "./dist/cli/index.js"
|
|
28
|
+
"./observability": {
|
|
29
|
+
"types": "./dist/observability-sdk/index.d.ts",
|
|
30
|
+
"require": "./dist/observability-sdk/index.js",
|
|
31
|
+
"import": "./dist/observability-sdk/index.mjs"
|
|
21
32
|
},
|
|
22
|
-
"
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
"require": "./dist/index.js"
|
|
27
|
-
},
|
|
28
|
-
"./observability": {
|
|
29
|
-
"types": "./dist/observability-sdk/index.d.ts",
|
|
30
|
-
"require": "./dist/observability-sdk/index.js",
|
|
31
|
-
"import": "./dist/observability-sdk/index.mjs"
|
|
32
|
-
},
|
|
33
|
-
"./observability/node": {
|
|
34
|
-
"types": "./dist/observability-sdk/setup/node/index.d.ts",
|
|
35
|
-
"require": "./dist/observability-sdk/setup/node/index.js",
|
|
36
|
-
"import": "./dist/observability-sdk/setup/node/index.mjs"
|
|
37
|
-
},
|
|
38
|
-
"./observability/instrumentation/langchain": {
|
|
39
|
-
"types": "./dist/observability-sdk/instrumentation/langchain/index.d.ts",
|
|
40
|
-
"require": "./dist/observability-sdk/instrumentation/langchain/index.js",
|
|
41
|
-
"import": "./dist/observability-sdk/instrumentation/langchain/index.mjs"
|
|
42
|
-
}
|
|
33
|
+
"./observability/node": {
|
|
34
|
+
"types": "./dist/observability-sdk/setup/node/index.d.ts",
|
|
35
|
+
"require": "./dist/observability-sdk/setup/node/index.js",
|
|
36
|
+
"import": "./dist/observability-sdk/setup/node/index.mjs"
|
|
43
37
|
},
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
},
|
|
49
|
-
"scripts": {
|
|
50
|
-
"prepare": "pnpm run generate:server-types && pnpm run generate:openapi-types",
|
|
51
|
-
"cli": "node dist/cli/index.js",
|
|
52
|
-
"lint": "eslint .",
|
|
53
|
-
"test": "vitest",
|
|
54
|
-
"test:unit": "vitest run --exclude '**/*.integration.test.ts'",
|
|
55
|
-
"test:e2e": "vitest run -c ./vitest.e2e.config.mts",
|
|
56
|
-
"test:seed": "dotenv -e .env.test -- bash -c 'cd ../langwatch && pnpm prisma:seed'",
|
|
57
|
-
"prebuild": "pnpm run prepare",
|
|
58
|
-
"build": "tsc --noEmit && tsup",
|
|
59
|
-
"tarball": "pnpm build && pnpm pack",
|
|
60
|
-
"typecheck": "tsc --noEmit",
|
|
61
|
-
"prepublish": "pnpm run build",
|
|
62
|
-
"generate:openapi-types": "pnpx openapi-typescript ../langwatch/src/app/api/openapiLangWatch.json -o ./src/internal/generated/openapi/api-client.ts",
|
|
63
|
-
"generate:server-types": "./copy-types.sh"
|
|
64
|
-
},
|
|
65
|
-
"devDependencies": {
|
|
66
|
-
"@eslint/js": "^9.32.0",
|
|
67
|
-
"@langchain/core": ">=0.3.68 <0.4.0",
|
|
68
|
-
"@langchain/langgraph": ">=0.4.0 <1.0.0",
|
|
69
|
-
"@langchain/openai": ">=0.6.0 <1.0.0",
|
|
70
|
-
"@opentelemetry/sdk-node": "0.205.0",
|
|
71
|
-
"@opentelemetry/sdk-trace-node": "^2.0.1",
|
|
72
|
-
"@opentelemetry/sdk-trace-web": ">=2.0.1",
|
|
73
|
-
"@types/debug": "^4.1.12",
|
|
74
|
-
"@types/js-yaml": "^4.0.9",
|
|
75
|
-
"@types/node": "^24.1.0",
|
|
76
|
-
"@typescript/native-preview": "7.0.0-dev.20250804.1",
|
|
77
|
-
"@vercel/otel": "^1.13.0",
|
|
78
|
-
"@vitest/coverage-v8": "3.2.4",
|
|
79
|
-
"esbuild": "^0.25.8",
|
|
80
|
-
"eslint": "^9.32.0",
|
|
81
|
-
"fets": "^0.8.5",
|
|
82
|
-
"fishery": "^2.3.1",
|
|
83
|
-
"langchain": ">=0.3.0 <1.0.0",
|
|
84
|
-
"msw": "^2.10.4",
|
|
85
|
-
"nock": "^14.0.8",
|
|
86
|
-
"openapi-msw": "^1.2.0",
|
|
87
|
-
"ts-to-zod": "4.0.1",
|
|
88
|
-
"tsup": "^8.5.0",
|
|
89
|
-
"typescript": "^5.9.2",
|
|
90
|
-
"typescript-eslint": "^8.38.0",
|
|
91
|
-
"vitest": "^3.2.4",
|
|
92
|
-
"vitest-mock-extended": "^3.1.0",
|
|
93
|
-
"yaml": "^2.8.1"
|
|
94
|
-
},
|
|
95
|
-
"dependencies": {
|
|
96
|
-
"@opentelemetry/api": "^1.9.0",
|
|
97
|
-
"@opentelemetry/api-logs": "0.205.0",
|
|
98
|
-
"@opentelemetry/core": "^2.0.1",
|
|
99
|
-
"@opentelemetry/exporter-logs-otlp-http": "0.205.0",
|
|
100
|
-
"@opentelemetry/exporter-trace-otlp-http": "0.205.0",
|
|
101
|
-
"@opentelemetry/instrumentation": "0.205.0",
|
|
102
|
-
"@opentelemetry/resources": "^2.0.1",
|
|
103
|
-
"@opentelemetry/sdk-logs": "0.205.0",
|
|
104
|
-
"@opentelemetry/sdk-metrics": "^2.0.1",
|
|
105
|
-
"@opentelemetry/sdk-trace-base": "^2.0.1",
|
|
106
|
-
"@opentelemetry/semantic-conventions": "^1.36.0",
|
|
107
|
-
"@types/prompts": "^2.4.9",
|
|
108
|
-
"chalk": "^4.1.2",
|
|
109
|
-
"commander": "^12.0.0",
|
|
110
|
-
"dotenv": "^16.6.1",
|
|
111
|
-
"js-yaml": "^4.1.0",
|
|
112
|
-
"liquidjs": "^10.21.1",
|
|
113
|
-
"open": "^10.2.0",
|
|
114
|
-
"openapi-fetch": "^0.14.0",
|
|
115
|
-
"ora": "^5.4.1",
|
|
116
|
-
"prompts": "^2.4.2",
|
|
117
|
-
"xksuid": "^0.0.4",
|
|
118
|
-
"zod": "^4.0.14"
|
|
119
|
-
},
|
|
120
|
-
"peerDependencies": {
|
|
121
|
-
"@ai-sdk/openai": ">=2.0.0 <3.0.0",
|
|
122
|
-
"@langchain/core": ">=0.3.0 <1.0.0",
|
|
123
|
-
"@langchain/langgraph": ">=0.4.0 <1.0.0",
|
|
124
|
-
"@langchain/openai": ">=0.6.0 <1.0.0",
|
|
125
|
-
"@opentelemetry/context-async-hooks": "^2.1.0",
|
|
126
|
-
"@opentelemetry/context-zone": ">=1.19.0 <3.0.0",
|
|
127
|
-
"@opentelemetry/sdk-node": ">=0.200.0 <1.0.0",
|
|
128
|
-
"@opentelemetry/sdk-trace-web": ">=1.19.0 <3.0.0",
|
|
129
|
-
"langchain": ">=0.3.0 <1.0.0"
|
|
130
|
-
},
|
|
131
|
-
"pnpm": {
|
|
132
|
-
"overrides": {
|
|
133
|
-
"@opentelemetry/api": "^1.9.0",
|
|
134
|
-
"@opentelemetry/core": "^2.0.1",
|
|
135
|
-
"@opentelemetry/resources": "^2.0.1",
|
|
136
|
-
"@opentelemetry/sdk-trace-base": "^2.0.1",
|
|
137
|
-
"@opentelemetry/instrumentation": "0.205.0",
|
|
138
|
-
"@opentelemetry/sdk-node": "0.205.0",
|
|
139
|
-
"@opentelemetry/context-async-hooks": "^2.1.0",
|
|
140
|
-
"@opentelemetry/api-logs": "0.205.0",
|
|
141
|
-
"@opentelemetry/sdk-logs": "0.205.0",
|
|
142
|
-
"@opentelemetry/exporter-logs-otlp-http": "0.205.0",
|
|
143
|
-
"@opentelemetry/exporter-trace-otlp-http": "0.205.0",
|
|
144
|
-
"zod": "^4.0.14"
|
|
145
|
-
}
|
|
38
|
+
"./observability/instrumentation/langchain": {
|
|
39
|
+
"types": "./dist/observability-sdk/instrumentation/langchain/index.d.ts",
|
|
40
|
+
"require": "./dist/observability-sdk/instrumentation/langchain/index.js",
|
|
41
|
+
"import": "./dist/observability-sdk/instrumentation/langchain/index.mjs"
|
|
146
42
|
}
|
|
147
|
-
}
|
|
43
|
+
},
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "https://github.com/langwatch/langwatch.git",
|
|
47
|
+
"directory": "typescript-sdk"
|
|
48
|
+
},
|
|
49
|
+
"devDependencies": {
|
|
50
|
+
"@eslint/js": "^9.32.0",
|
|
51
|
+
"@langchain/core": ">=0.3.68 <0.4.0",
|
|
52
|
+
"@langchain/langgraph": ">=0.4.0 <1.0.0",
|
|
53
|
+
"@langchain/openai": ">=0.6.0 <1.0.0",
|
|
54
|
+
"@opentelemetry/sdk-node": "0.205.0",
|
|
55
|
+
"@opentelemetry/sdk-trace-node": "^2.0.1",
|
|
56
|
+
"@opentelemetry/sdk-trace-web": ">=2.0.1",
|
|
57
|
+
"@types/debug": "^4.1.12",
|
|
58
|
+
"@types/js-yaml": "^4.0.9",
|
|
59
|
+
"@types/node": "^24.1.0",
|
|
60
|
+
"@typescript/native-preview": "7.0.0-dev.20250804.1",
|
|
61
|
+
"@vercel/otel": "^1.13.0",
|
|
62
|
+
"@vitest/coverage-v8": "3.2.4",
|
|
63
|
+
"esbuild": "^0.25.8",
|
|
64
|
+
"eslint": "^9.32.0",
|
|
65
|
+
"fets": "^0.8.5",
|
|
66
|
+
"fishery": "^2.3.1",
|
|
67
|
+
"langchain": ">=0.3.0 <1.0.0",
|
|
68
|
+
"msw": "^2.10.4",
|
|
69
|
+
"nock": "^14.0.8",
|
|
70
|
+
"openapi-msw": "^1.2.0",
|
|
71
|
+
"ts-to-zod": "4.0.1",
|
|
72
|
+
"tsup": "^8.5.0",
|
|
73
|
+
"typescript": "^5.9.2",
|
|
74
|
+
"typescript-eslint": "^8.38.0",
|
|
75
|
+
"vitest": "^3.2.4",
|
|
76
|
+
"vitest-mock-extended": "^3.1.0",
|
|
77
|
+
"yaml": "^2.8.1"
|
|
78
|
+
},
|
|
79
|
+
"dependencies": {
|
|
80
|
+
"@opentelemetry/api": "^1.9.0",
|
|
81
|
+
"@opentelemetry/api-logs": "0.205.0",
|
|
82
|
+
"@opentelemetry/core": "^2.0.1",
|
|
83
|
+
"@opentelemetry/exporter-logs-otlp-http": "0.205.0",
|
|
84
|
+
"@opentelemetry/exporter-trace-otlp-http": "0.205.0",
|
|
85
|
+
"@opentelemetry/instrumentation": "0.205.0",
|
|
86
|
+
"@opentelemetry/resources": "^2.0.1",
|
|
87
|
+
"@opentelemetry/sdk-logs": "0.205.0",
|
|
88
|
+
"@opentelemetry/sdk-metrics": "^2.0.1",
|
|
89
|
+
"@opentelemetry/sdk-trace-base": "^2.0.1",
|
|
90
|
+
"@opentelemetry/semantic-conventions": "^1.36.0",
|
|
91
|
+
"@types/prompts": "^2.4.9",
|
|
92
|
+
"chalk": "^4.1.2",
|
|
93
|
+
"commander": "^12.0.0",
|
|
94
|
+
"dotenv": "^16.6.1",
|
|
95
|
+
"js-yaml": "^4.1.0",
|
|
96
|
+
"liquidjs": "^10.21.1",
|
|
97
|
+
"open": "^10.2.0",
|
|
98
|
+
"openapi-fetch": "^0.14.0",
|
|
99
|
+
"ora": "^5.4.1",
|
|
100
|
+
"prompts": "^2.4.2",
|
|
101
|
+
"xksuid": "^0.0.4",
|
|
102
|
+
"zod": "^4.0.14"
|
|
103
|
+
},
|
|
104
|
+
"peerDependencies": {
|
|
105
|
+
"@ai-sdk/openai": ">=2.0.0 <3.0.0",
|
|
106
|
+
"@langchain/core": ">=0.3.0 <1.0.0",
|
|
107
|
+
"@langchain/langgraph": ">=0.4.0 <1.0.0",
|
|
108
|
+
"@langchain/openai": ">=0.6.0 <1.0.0",
|
|
109
|
+
"@opentelemetry/context-async-hooks": "^2.1.0",
|
|
110
|
+
"@opentelemetry/context-zone": ">=1.19.0 <3.0.0",
|
|
111
|
+
"@opentelemetry/sdk-node": ">=0.200.0 <1.0.0",
|
|
112
|
+
"@opentelemetry/sdk-trace-web": ">=1.19.0 <3.0.0",
|
|
113
|
+
"langchain": ">=0.3.0 <1.0.0"
|
|
114
|
+
},
|
|
115
|
+
"scripts": {
|
|
116
|
+
"cli": "node dist/cli/index.js",
|
|
117
|
+
"lint": "eslint .",
|
|
118
|
+
"test": "vitest",
|
|
119
|
+
"test:unit": "vitest run --exclude '**/*.integration.test.ts'",
|
|
120
|
+
"test:e2e": "vitest run -c ./vitest.e2e.config.mts",
|
|
121
|
+
"test:seed": "dotenv -e .env.test -- bash -c 'cd ../langwatch && pnpm prisma:seed'",
|
|
122
|
+
"prebuild": "pnpm run prepare",
|
|
123
|
+
"build": "tsc --noEmit && tsup",
|
|
124
|
+
"tarball": "pnpm build && pnpm pack",
|
|
125
|
+
"typecheck": "tsc --noEmit",
|
|
126
|
+
"prepublish": "pnpm run build",
|
|
127
|
+
"generate:openapi-types": "pnpx openapi-typescript ../langwatch/src/app/api/openapiLangWatch.json -o ./src/internal/generated/openapi/api-client.ts",
|
|
128
|
+
"generate:server-types": "./copy-types.sh"
|
|
129
|
+
}
|
|
130
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli/commands/add.ts"],"sourcesContent":["import * as fs from \"fs\";\nimport * as path from \"path\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport { FileManager } from \"../utils/fileManager\";\nimport { PromptsApiService, PromptsError } from \"@/client-sdk/services/prompts\";\nimport { PromptConverter } from \"../utils/promptConverter\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { LangWatch } from \"@/client-sdk\";\n\ninterface AddOptions {\n version?: string;\n localFile?: string;\n}\n\nconst addLocalFile = async (\n name: string,\n localFilePath: string,\n): Promise<void> => {\n // Validate that the file exists and has the right extension\n if (!fs.existsSync(localFilePath)) {\n console.error(chalk.red(`Error: Local file not found: ${localFilePath}`));\n process.exit(1);\n }\n\n if (!localFilePath.endsWith(\".prompt.yaml\")) {\n console.error(\n chalk.red(`Error: Local file must have .prompt.yaml extension`),\n );\n process.exit(1);\n }\n\n // Load and validate the YAML file\n try {\n FileManager.loadLocalPrompt(localFilePath);\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n promptsConfig.prompts[name] = `file:${localFilePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: localFilePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n console.log(\n chalk.green(\n `✓ Added local prompt: ${chalk.cyan(name)} → ${chalk.gray(\n localFilePath,\n )}`,\n ),\n );\n } catch (error) {\n console.error(chalk.red(\"Error loading local prompt file:\"));\n console.error(\n chalk.red(error instanceof Error ? error.message : String(error)),\n );\n process.exit(1);\n }\n};\n\nexport const addCommand = async (\n name: string,\n options: AddOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Handle local file addition\n if (options.localFile) {\n await addLocalFile(name, options.localFile);\n return;\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n const version = options.version ?? \"latest\";\n\n // Fetch and materialize the prompt (like sync does for individual prompts)\n const spinner = ora(\n `Adding ${chalk.cyan(`${name}@${version}`)}...`,\n ).start();\n\n try {\n // Fetch the prompt from the API\n const prompt = await promptsApiService.get(name);\n\n if (!prompt) {\n spinner.fail();\n console.error(chalk.red(`Error: Prompt \"${name}\" not found`));\n process.exit(1);\n }\n\n // Stop spinner before any user input prompts\n spinner.stop();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized();\n\n // Restart spinner for the actual work\n spinner.start(`Adding ${chalk.cyan(`${name}@${version}`)}...`);\n\n // Convert to MaterializedPrompt format and save\n const materializedPrompt = PromptConverter.fromApiToMaterialized(prompt);\n const savedPath = FileManager.saveMaterializedPrompt(\n name,\n materializedPrompt,\n );\n const relativePath = path.relative(process.cwd(), savedPath);\n\n // Load existing config and lock, add the new dependency\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n config.prompts[name] = version;\n FileManager.updateLockEntry(lock, name, materializedPrompt, savedPath);\n\n // Save the updated config and lock\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n spinner.succeed();\n\n // Show what was done (add ./ prefix for consistency)\n const displayPath = relativePath.startsWith(\"./\")\n ? relativePath\n : `./${relativePath}`;\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${version}`)} ${chalk.gray(\n `(version ${prompt.version})`,\n )} → ${chalk.gray(displayPath)}`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error adding prompt: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"],"mappings":"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","names":[]}
|
package/dist/add-CXUS4ZSQ.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["/home/runner/work/langwatch/langwatch/typescript-sdk/dist/add-CXUS4ZSQ.js","../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACA;ACtBA,+DAAoB;AACpB,uEAAsB;AACtB,4EAAkB;AAClB,oEAAgB;AAahB,IAAM,aAAA,EAAe,MAAA,CACnB,IAAA,EACA,aAAA,EAAA,GACkB;AAElB,EAAA,GAAA,CAAI,CAAI,EAAA,CAAA,UAAA,CAAW,aAAa,CAAA,EAAG;AACjC,IAAA,OAAA,CAAQ,KAAA,CAAM,eAAA,CAAM,GAAA,CAAI,CAAA,6BAAA,EAAgC,aAAa,CAAA,CAAA;AACvD,IAAA;AAChB,EAAA;AAE6C,EAAA;AACnC,IAAA;AACwD,MAAA;AAChE,IAAA;AACc,IAAA;AAChB,EAAA;AAGI,EAAA;AACuC,IAAA;AAGV,IAAA;AAGqB,IAAA;AACD,IAAA;AACR,IAAA;AAGF,IAAA;AACpB,IAAA;AACV,MAAA;AAAA;AACE,MAAA;AACG,MAAA;AAAA;AAChB,IAAA;AACgC,IAAA;AAExB,IAAA;AACA,MAAA;AACiD,QAAA;AACnD,UAAA;AACD,QAAA;AACH,MAAA;AACF,IAAA;AACc,EAAA;AAC6C,IAAA;AACnD,IAAA;AAC0D,MAAA;AAClE,IAAA;AACc,IAAA;AAChB,EAAA;AACF;AAKoB;AAzEpB,EAAA;AA0EM,EAAA;AAE+B,IAAA;AAC8B,MAAA;AAC/C,MAAA;AAChB,IAAA;AAGuB,IAAA;AACqB,MAAA;AAC1C,MAAA;AACF,IAAA;AAGY,IAAA;AAEoC,IAAA;AACb,IAAA;AAGnB,IAAA;AAC4B,MAAA;AACpC,IAAA;AAEJ,IAAA;AAE6C,MAAA;AAElC,MAAA;AACE,QAAA;AAC+C,QAAA;AAC9C,QAAA;AAChB,MAAA;AAGa,MAAA;AAGkB,MAAA;AAG8B,MAAA;AAGI,MAAA;AACnC,MAAA;AAC5B,QAAA;AACA,QAAA;AACF,MAAA;AAC2D,MAAA;AAGd,MAAA;AACJ,MAAA;AAElB,MAAA;AACqC,MAAA;AAGxB,MAAA;AACJ,MAAA;AAEhB,MAAA;AAKZ,MAAA;AACI,MAAA;AACA,QAAA;AACkD,UAAA;AAC1B,YAAA;AACE,UAAA;AAChC,QAAA;AACF,MAAA;AACc,IAAA;AACD,MAAA;AACsB,MAAA;AACiB,QAAA;AAC7C,MAAA;AACG,QAAA;AACA,UAAA;AAE6B,YAAA;AAEnC,UAAA;AACF,QAAA;AACF,MAAA;AACc,MAAA;AAChB,IAAA;AACc,EAAA;AACqB,IAAA;AACiB,MAAA;AAC7C,IAAA;AACG,MAAA;AACA,QAAA;AAEuC,UAAA;AAE7C,QAAA;AACF,MAAA;AACF,IAAA;AACc,IAAA;AAChB,EAAA;AACF;ADpC0E;AACA;AACA","file":"/home/runner/work/langwatch/langwatch/typescript-sdk/dist/add-CXUS4ZSQ.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 { PromptsApiService, PromptsError } from \"@/client-sdk/services/prompts\";\nimport { PromptConverter } from \"../utils/promptConverter\";\nimport { ensureProjectInitialized } from \"../utils/init\";\nimport { checkApiKey } from \"../utils/apiKey\";\nimport { LangWatch } from \"@/client-sdk\";\n\ninterface AddOptions {\n version?: string;\n localFile?: string;\n}\n\nconst addLocalFile = async (\n name: string,\n localFilePath: string,\n): Promise<void> => {\n // Validate that the file exists and has the right extension\n if (!fs.existsSync(localFilePath)) {\n console.error(chalk.red(`Error: Local file not found: ${localFilePath}`));\n process.exit(1);\n }\n\n if (!localFilePath.endsWith(\".prompt.yaml\")) {\n console.error(\n chalk.red(`Error: Local file must have .prompt.yaml extension`),\n );\n process.exit(1);\n }\n\n // Load and validate the YAML file\n try {\n FileManager.loadLocalPrompt(localFilePath);\n\n // Ensure project is initialized\n await ensureProjectInitialized();\n\n // Add to prompts.json as a file: dependency\n const promptsConfig = FileManager.loadPromptsConfig();\n promptsConfig.prompts[name] = `file:${localFilePath}`;\n FileManager.savePromptsConfig(promptsConfig);\n\n // Update lock file\n const lock = FileManager.loadPromptsLock();\n lock.prompts[name] = {\n version: 0, // Local files start at version 0\n versionId: \"local\",\n materialized: localFilePath, // Store the original file path\n };\n FileManager.savePromptsLock(lock);\n\n console.log(\n chalk.green(\n `✓ Added local prompt: ${chalk.cyan(name)} → ${chalk.gray(\n localFilePath,\n )}`,\n ),\n );\n } catch (error) {\n console.error(chalk.red(\"Error loading local prompt file:\"));\n console.error(\n chalk.red(error instanceof Error ? error.message : String(error)),\n );\n process.exit(1);\n }\n};\n\nexport const addCommand = async (\n name: string,\n options: AddOptions,\n): Promise<void> => {\n try {\n // Validate prompt name\n if (!name || name.trim() === \"\") {\n console.error(chalk.red(\"Error: Prompt name cannot be empty\"));\n process.exit(1);\n }\n\n // Handle local file addition\n if (options.localFile) {\n await addLocalFile(name, options.localFile);\n return;\n }\n\n // Check API key before doing anything else\n checkApiKey();\n\n const promptsApiService = new PromptsApiService();\n const version = options.version ?? \"latest\";\n\n // Fetch and materialize the prompt (like sync does for individual prompts)\n const spinner = ora(\n `Adding ${chalk.cyan(`${name}@${version}`)}...`,\n ).start();\n\n try {\n // Fetch the prompt from the API\n const prompt = await promptsApiService.get(name);\n\n if (!prompt) {\n spinner.fail();\n console.error(chalk.red(`Error: Prompt \"${name}\" not found`));\n process.exit(1);\n }\n\n // Stop spinner before any user input prompts\n spinner.stop();\n\n // Ensure project is initialized (prompts.json, lock file, directories)\n await ensureProjectInitialized();\n\n // Restart spinner for the actual work\n spinner.start(`Adding ${chalk.cyan(`${name}@${version}`)}...`);\n\n // Convert to MaterializedPrompt format and save\n const materializedPrompt = PromptConverter.fromApiToMaterialized(prompt);\n const savedPath = FileManager.saveMaterializedPrompt(\n name,\n materializedPrompt,\n );\n const relativePath = path.relative(process.cwd(), savedPath);\n\n // Load existing config and lock, add the new dependency\n const config = FileManager.loadPromptsConfig();\n const lock = FileManager.loadPromptsLock();\n\n config.prompts[name] = version;\n FileManager.updateLockEntry(lock, name, materializedPrompt, savedPath);\n\n // Save the updated config and lock\n FileManager.savePromptsConfig(config);\n FileManager.savePromptsLock(lock);\n\n spinner.succeed();\n\n // Show what was done (add ./ prefix for consistency)\n const displayPath = relativePath.startsWith(\"./\")\n ? relativePath\n : `./${relativePath}`;\n console.log(\n chalk.green(\n `✓ Pulled ${chalk.cyan(`${name}@${version}`)} ${chalk.gray(\n `(version ${prompt.version})`,\n )} → ${chalk.gray(displayPath)}`,\n ),\n );\n } catch (error) {\n spinner.fail();\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Error adding prompt: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n } catch (error) {\n if (error instanceof PromptsError) {\n console.error(chalk.red(`Error: ${error.message}`));\n } else {\n console.error(\n chalk.red(\n `Unexpected error: ${\n error instanceof Error ? error.message : \"Unknown error\"\n }`,\n ),\n );\n }\n process.exit(1);\n }\n};\n"]}
|