@@ -95,4 +95,87 @@ public URI fetchProjectURI() {
9595 var orgAndProject = client .getProjectAndOrgInfo ().orElseThrow ();
9696 return BraintrustUtils .createProjectURI (appUrl (), orgAndProject );
9797 }
98+
99+ public static Builder builder () {
100+ return new Builder ();
101+ }
102+
103+ public static class Builder {
104+ private final Map <String , String > envOverrides = new HashMap <>();
105+
106+ public Builder apiKey (String value ) {
107+ envOverrides .put ("BRAINTRUST_API_KEY" , value );
108+ return this ;
109+ }
110+
111+ public Builder apiUrl (String value ) {
112+ envOverrides .put ("BRAINTRUST_API_URL" , value );
113+ return this ;
114+ }
115+
116+ public Builder appUrl (String value ) {
117+ envOverrides .put ("BRAINTRUST_APP_URL" , value );
118+ return this ;
119+ }
120+
121+ public Builder tracesPath (String value ) {
122+ envOverrides .put ("BRAINTRUST_TRACES_PATH" , value );
123+ return this ;
124+ }
125+
126+ public Builder logsPath (String value ) {
127+ envOverrides .put ("BRAINTRUST_LOGS_PATH" , value );
128+ return this ;
129+ }
130+
131+ public Builder defaultProjectId (String value ) {
132+ if (value != null ) {
133+ envOverrides .put ("BRAINTRUST_DEFAULT_PROJECT_ID" , value );
134+ } else {
135+ envOverrides .put ("BRAINTRUST_DEFAULT_PROJECT_ID" , NULL_OVERRIDE );
136+ }
137+ return this ;
138+ }
139+
140+ public Builder defaultProjectName (String value ) {
141+ if (value != null ) {
142+ envOverrides .put ("BRAINTRUST_DEFAULT_PROJECT_NAME" , value );
143+ } else {
144+ envOverrides .put ("BRAINTRUST_DEFAULT_PROJECT_NAME" , NULL_OVERRIDE );
145+ }
146+ return this ;
147+ }
148+
149+ public Builder enableTraceConsoleLog (boolean value ) {
150+ envOverrides .put ("BRAINTRUST_ENABLE_TRACE_CONSOLE_LOG" , String .valueOf (value ));
151+ return this ;
152+ }
153+
154+ public Builder debug (boolean value ) {
155+ envOverrides .put ("BRAINTRUST_DEBUG" , String .valueOf (value ));
156+ return this ;
157+ }
158+
159+ public Builder requestTimeout (Duration value ) {
160+ envOverrides .put ("BRAINTRUST_REQUEST_TIMEOUT" , String .valueOf (value .getSeconds ()));
161+ return this ;
162+ }
163+
164+ // hiding visibility. only used for testing
165+ Builder experimentalOtelLogs (boolean value ) {
166+ envOverrides .put ("BRAINTRUST_X_OTEL_LOGS" , String .valueOf (value ));
167+ return this ;
168+ }
169+
170+ // hiding visibility. only used for testing
171+ Builder exportSpansInMemoryForUnitTest (boolean value ) {
172+ envOverrides .put (
173+ "BRAINTRUST_JAVA_EXPORT_SPANS_IN_MEMORY_FOR_UNIT_TEST" , String .valueOf (value ));
174+ return this ;
175+ }
176+
177+ public BraintrustConfig build () {
178+ return new BraintrustConfig (envOverrides );
179+ }
180+ }
98181}
0 commit comments