fa-mcp-sdk 0.4.17 → 0.4.19

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.
@@ -1,212 +1,312 @@
1
- ---
2
-
3
- #accessPoints:
4
- # myService:
5
- # title: 'My remote service'
6
- # host: <host>
7
- # port: 9999
8
- # token: '***'
9
- # noConsul: true # Use if the service developers do not provide registration in consul
10
- # consulServiceName: <consulServiceName>
11
-
12
- ad:
13
- # Active Directory / LDAP settings.
14
- # Used for authentication/authorization (e.g., NTLM in admin panel) and checking user membership in AD groups.
15
- domains:
16
- # Map of domains. Key is a domain name
17
- MYDOMAIN:
18
- # Marks this domain as default one
19
- default: true
20
- # List of LDAP controllers (can be multiple for failover).
21
- # Use ldap:// for plain LDAP or ldaps:// for LDAP over TLS.
22
- controllers:
23
- - 'ldap://c1.corp.com'
24
- - 'ldap://c2.corp.com'
25
- # Service account (bind DN or username) used to connect to LDAP.
26
- username: '***'
27
- # Service account password.
28
- password: '***'
29
- # Base DN for LDAP searches. Auto-derived from controller URL if not set.
30
- # baseDn: 'DC=corp,DC=com'
31
- # Cache TTL for group membership checks (default: 600000 = 10 min)
32
- # groupCacheTtlMs: 600000
33
- # Cache TTL for user/group DN lookups (default: 86400000 = 24 hours)
34
- # dnCacheTtlMs: 86400000
35
-
36
- agentTester:
37
- enabled: true
38
- showFooterLink: true # true (default) show Agent Tester link in home page footer; false — hide link without disabling tester
39
- useAuth: false # true — protect Agent Tester with full multi-auth (permanentTokens/basic/JWT/custom); browser users see a login dialog, headless clients pass Authorization header
40
- sessionTtlMs: 28800000 # Browser login session lifetime in milliseconds. Default: 28800000 (8 hours). Applies only when useAuth is true. Sessions are in-memory on the server — lost on restart.
41
- logJson: false # true — emit structured JSON events (tool_call, tool_result, llm_response, response) to stdout during agent execution
42
- openAi:
43
- apiKey: ''
44
- # baseURL: ''
45
- httpHeaders:
46
- # Key-value pairs for HTTP requests that should be auto-populated in agentTester
47
- # Example: X-User-Id: 12345
48
-
49
- # --------------------------------------------------
50
- # CACHING Reduces API calls by caching responses
51
- # --------------------------------------------------
52
- cache:
53
- # time in seconds to check all data and delete expired keys
54
- checkPeriod: 1200
55
- # Default maximum number of cached items
56
- maxItems: 1000
57
- # Default Cache TTL in seconds
58
- ttlSeconds: 300
59
-
60
-
61
- consul:
62
- check:
63
- interval: '10s'
64
- timeout: '5s'
65
- deregistercriticalserviceafter: '3m'
66
- agent:
67
- # Credentials for getting information about services in the DEV DC
68
- dev:
69
- dc: '{{consul.agent.dev.dc}}'
70
- host: '{{consul.agent.dev.host}}'
71
- port: 443
72
- secure: true
73
- # Token for getting information about DEV services
74
- token: '***'
75
- # Credentials for getting information about services in the PROD DC
76
- prd:
77
- dc: '{{consul.agent.prd.dc}}'
78
- host: '{{consul.agent.prd.host}}'
79
- port: 443
80
- secure: true
81
- # Token for obtaining information about PROD services
82
- token: '***'
83
- # Credentials for registering the service with Consul
84
- reg:
85
- # The host of the consul agent where the service will be registered. If not specified, the server on which the service is running is used
86
- host: null
87
- port: 8500
88
- secure: false
89
- # Token for registering the service in the consul agent
90
- token: '***'
91
- service:
92
- enable: {{consul.service.enable}} # true - Allows registration of the service with the consul
93
- name: <name> # Here you can specify an alternative name for the service. String "<name>" will be replaced by env SERVICE_NAME | <package.json>.name at initialization
94
- instance: '{{SERVICE_INSTANCE}}' # This value will be specified as a suffix in the id of the service
95
- version: <version> # String "<version>" will be replaced by <package.json>.version at initialization
96
- description: <description> # Here you can specify an alternative name description. String "<description>" will be replaced by <package.json>.description at initialization
97
- tags: [ ] # If null or empty array - Will be pulled up from package.keywords at initialization
98
- meta:
99
- # "Home" page link template
100
- who: 'http://{address}:{port}/'
101
- envCode: # Used to generate the service ID
102
- prod: '{{consul.envCode.prod}}' # Production environment code
103
- dev: '{{consul.envCode.dev}}' # Development environment code
104
-
105
- db:
106
- postgres:
107
- dbs:
108
- main:
109
- label: 'My Database'
110
- host: '' # To exclude the use of the database, you need to set host = ''
111
- port: 5432
112
- database: <database>
113
- user: <user>
114
- password: <password>
115
- usedExtensions: [ ]
116
-
117
- logger:
118
- level: info
119
- useFileLogger: {{logger.useFileLogger}} # To use or not to use logging to a file
120
- # Absolute path to the folder where logs will be written. Default <proj_root>/../logs
121
- dir: '{{logger.dir}}'
122
-
123
- mcp:
124
- transportType: http # stdio | http
125
- # Response format configuration.
126
- # - structuredContent - default - the response in result.structuredContent returns JSON
127
- # - text - in the response, serialized JSON is returned in result.content[0].text
128
- toolAnswerAs: text # text | structuredContent
129
- rateLimit:
130
- maxRequests: 100
131
- windowMs: 60000 # 1 minute
132
-
133
- swagger:
134
- servers: # An array of servers that will be added to swagger docs
135
- # - url: http://localhost:{{port}}
136
- # description: "Development server (localhost)"
137
- # - url: http://0.0.0.0:{{port}}
138
- # description: "Development server (all interfaces)"
139
- # - url: http://<prod_server_host_or_ip>:{{port}}
140
- # description: "PROD server"
141
- - url: https://{{mcp.domain}}
142
- description: "PROD server"
143
-
144
- homePage:
145
- helpLink:
146
- url: '' # If empty help link is not shown in footer
147
- label: 'Help' # Link text (default: "Help")
148
-
149
- uiColor:
150
- # Font color of the header and a number of interface elements on the HOME page
151
- primary: '#0f65dc'
152
-
153
- webServer:
154
- host: '0.0.0.0'
155
- port: {{port}}
156
- # array of hosts that CORS skips
157
- originHosts: [ 'localhost', '0.0.0.0' ]
158
- # Authentication is configured here only when accessing the MCP server
159
- # Authentication in services that enable tools, resources, and prompts
160
- # is implemented more deeply. To do this, you need to use the information passed in HTTP headers
161
- # You can also use a custom authorization function
162
- auth:
163
- enabled: false # Enables/disables authorization
164
- # ========================================================================
165
- # PERMANENT SERVER TOKENS
166
- # Static tokens for server-to-server communication
167
- # CPU cost: O(1) - fastest authentication method
168
- #
169
- # To enable this authentication, you need to set auth.enabled = true
170
- # and set one token of at least 20 characters in length
171
- # ========================================================================
172
- permanentServerTokens: [ ] # Add your server tokens here: ['token1', 'token2']
173
-
174
- # ========================================================================
175
- # JWT TOKEN WITH SYMMETRIC ENCRYPTION
176
- # Custom JWT tokens with AES-256 encryption
177
- # CPU cost: Medium - decryption + JSON parsing
178
- #
179
- # To enable this authentication, you need to set auth.enabled = true and set
180
- # encryptKey to at least 20 characters
181
- # ========================================================================
182
- jwtToken:
183
- # Symmetric encryption key to generate a token for this MCP (minimum 8 chars)
184
- encryptKey: '***'
185
- # If webServer.auth.enabled and the parameter true, the service name and the service specified in the token will be checked
186
- checkMCPName: true
187
- # If true and JWT token contains non-empty 'ip' field,
188
- # the client IP will be checked against the allowed list in the token
189
- isCheckIP: false
190
-
191
- # ========================================================================
192
- # Basic Authentication - Base64 encoded username:password
193
- # CPU cost: Medium - Base64 decoding + string comparison
194
- # To enable this authentication, you need to set auth.enabled = true
195
- # and set username and password to valid values
196
- # ========================================================================
197
- basic:
198
- username: ''
199
- password: '***'
200
-
201
- # ========================================================================
202
- # ADMIN PANEL AUTHENTICATION
203
- # Token generation page available at /admin endpoint
204
- # Supports 4 authentication methods: permanentServerTokens, basic, jwtToken, ntlm
205
- # ========================================================================
206
- adminAuth:
207
- enabled: true # Enable/disable admin panel
208
- # Authentication type for admin panel: 'permanentServerTokens' | 'basic' | 'jwtToken' | 'ntlm'
209
- # For permanentServerTokens, basic, jwtToken - uses credentials from webServer.auth section
210
- # For ntlm - uses AD configuration from ad.domains section (no additional credentials needed)
211
- type: 'basic'
212
-
1
+ ---
2
+
3
+ #> ========================================================================
4
+ #> Outbound access points — connection settings for remote services this MCP talks to.
5
+ #> Each entry under accessPoints is keyed by a logical alias used in code to look up host/port/token.
6
+ #> By default, hosts/ports are resolved via Consul; the fields below let you override that or
7
+ #> describe a service that is not registered in Consul at all.
8
+ #> ========================================================================
9
+ # accessPoints:
10
+ # myService:
11
+ # #> Human-readable title shown in diagnostics and admin pages
12
+ # title: 'My remote service'
13
+ # #> Remote service host (used when noConsul=true or as a fallback)
14
+ # host: <host>
15
+ # #> Remote service TCP port
16
+ # port: 9999
17
+ # #> Auth token sent to the remote service
18
+ # token: '***'
19
+ # #> Use if the service developers do not provide registration in consul —
20
+ # #> disables Consul lookup and forces use of the host/port above
21
+ # noConsul: true
22
+ # #> Override the Consul service name to look up (defaults to the alias key)
23
+ # consulServiceName: <consulServiceName>
24
+
25
+ #> Active Directory / LDAP settings.
26
+ #> Used for authentication/authorization (e.g., NTLM in admin panel) and checking user membership in AD groups.
27
+ ad:
28
+ #> Map of domains. Key is a domain name
29
+ domains:
30
+ MYDOMAIN:
31
+ #> Marks this domain as default one
32
+ default: true
33
+ #> List of LDAP controllers (can be multiple for failover).
34
+ #> Use ldap:// for plain LDAP or ldaps:// for LDAP over TLS.
35
+ controllers:
36
+ - 'ldap://c1.corp.com'
37
+ - 'ldap://c2.corp.com'
38
+ #> Service account (bind DN or username) used to connect to LDAP.
39
+ username: '***'
40
+ #> Service account password.
41
+ password: '***'
42
+ #> Base DN for LDAP searches. Auto-derived from controller URL if not set.
43
+ # baseDn: 'DC=corp,DC=com'
44
+ #> Cache TTL for group membership checks (default: 600000 = 10 min)
45
+ # groupCacheTtlMs: 600000
46
+ #> Cache TTL for user/group DN lookups (default: 86400000 = 24 hours)
47
+ # dnCacheTtlMs: 86400000
48
+
49
+ #> Built-in chat UI for testing MCP tools with an LLM.
50
+ agentTester:
51
+ #> Enables the Agent Tester UI at /agent-tester
52
+ enabled: true
53
+ #> true (default) — show Agent Tester link in home page footer; false hide link without disabling tester
54
+ showFooterLink: true
55
+ #> true protect Agent Tester with full multi-auth (permanentTokens/basic/JWT/custom);
56
+ #> browser users see a login dialog, headless clients pass Authorization header
57
+ useAuth: false
58
+ #> Browser login session lifetime in milliseconds. Default: 28800000 (8 hours).
59
+ #> Applies only when useAuth is true. Sessions are in-memory on the server — lost on restart.
60
+ sessionTtlMs: 28800000
61
+ #> true — emit structured JSON events (tool_call, tool_result, llm_response, response) to stdout during agent execution
62
+ logJson: false
63
+ #> OpenAI-compatible LLM credentials used by Agent Tester to drive tool calls
64
+ openAi:
65
+ #> API key for LLM provider (OpenAI and compatible)
66
+ apiKey: '***'
67
+ #> Key name (for logging and debugging)
68
+ apiKeyName: '***'
69
+ #> Override base URL for OpenAI-compatible providers (Azure, local LLMs, proxies)
70
+ baseURL: ''
71
+ #> -------------------------------------------------------------------------
72
+ #> When true, baseURL and apiKey are sent to the Agent Tester UI as defaults
73
+ #> and auto-saved into the browser's localStorage on first open. The UI shows
74
+ #> them in the LLM Settings dialog. Enable only if the tester is protected by
75
+ #> useAuth=true OR deployed in a trusted network otherwise anyone who opens
76
+ #> /agent-tester can read the key. Default: false (safe).
77
+ #> -------------------------------------------------------------------------
78
+ exposeToClient: false
79
+
80
+
81
+ #> Key-value pairs for HTTP requests that should be auto-populated in agentTester
82
+ #> Example: X-User-Id: 12345
83
+ httpHeaders:
84
+
85
+ #> --------------------------------------------------
86
+ #> CACHING Reduces API calls by caching responses
87
+ #> --------------------------------------------------
88
+ cache:
89
+ #> Time in seconds to check all data and delete expired keys
90
+ checkPeriod: 1200
91
+ #> Default maximum number of cached items
92
+ maxItems: 1000
93
+ #> Default Cache TTL in seconds
94
+ ttlSeconds: 300
95
+
96
+
97
+ #> Consul service discovery and registration settings
98
+ consul:
99
+ #> Health check parameters reported to Consul for this service
100
+ check:
101
+ #> How often Consul invokes the health check
102
+ interval: '10s'
103
+ #> Per-attempt timeout for the health check
104
+ timeout: '5s'
105
+ #> Auto-deregister the service after it has been critical for this duration
106
+ deregistercriticalserviceafter: '3m'
107
+ agent:
108
+ #> Credentials for getting information about services in the DEV DC
109
+ dev:
110
+ #> DEV datacenter name
111
+ dc: '{{consul.agent.dev.dc}}'
112
+ #> DEV consul agent host
113
+ host: '{{consul.agent.dev.host}}'
114
+ #> DEV consul agent port
115
+ port: 443
116
+ #> Use HTTPS for the DEV consul agent
117
+ secure: true
118
+ #> Token for getting information about DEV services
119
+ token: '***'
120
+ #> Credentials for getting information about services in the PROD DC
121
+ prd:
122
+ #> PROD datacenter name
123
+ dc: '{{consul.agent.prd.dc}}'
124
+ #> PROD consul agent host
125
+ host: '{{consul.agent.prd.host}}'
126
+ #> PROD consul agent port
127
+ port: 443
128
+ #> Use HTTPS for the PROD consul agent
129
+ secure: true
130
+ #> Token for obtaining information about PROD services
131
+ token: '***'
132
+ #> Credentials for registering the service with Consul
133
+ reg:
134
+ #> The host of the consul agent where the service will be registered.
135
+ #> If not specified, the server on which the service is running is used
136
+ host: null
137
+ #> Consul agent port for registration
138
+ port: 8500
139
+ #> Use HTTPS when calling the registration agent
140
+ secure: false
141
+ #> Token for registering the service in the consul agent
142
+ token: '***'
143
+ service:
144
+ #> true — Allows registration of the service with the consul
145
+ enable: {{consul.service.enable}}
146
+ #> Here you can specify an alternative name for the service.
147
+ #> String "<name>" will be replaced by env SERVICE_NAME | <package.json>.name at initialization
148
+ name: <name>
149
+ #> This value will be specified as a suffix in the id of the service
150
+ instance: '{{SERVICE_INSTANCE}}'
151
+ #> String "<version>" will be replaced by <package.json>.version at initialization
152
+ version: <version>
153
+ #> Here you can specify an alternative name description.
154
+ #> String "<description>" will be replaced by <package.json>.description at initialization
155
+ description: <description>
156
+ #> If null or empty array Will be pulled up from package.keywords at initialization
157
+ tags: [ ]
158
+ #> Arbitrary metadata published with the service registration
159
+ meta:
160
+ #> "Home" page link template
161
+ who: 'http://{address}:{port}/'
162
+ #> Used to generate the service ID
163
+ envCode:
164
+ #> Production environment code
165
+ prod: '{{consul.envCode.prod}}'
166
+ #> Development environment code
167
+ dev: '{{consul.envCode.dev}}'
168
+
169
+ #> Database connections used by the service
170
+ db:
171
+ #> PostgreSQL connection pool definitions
172
+ postgres:
173
+ #> Map of named PostgreSQL databases (key is a logical alias used in code)
174
+ dbs:
175
+ main:
176
+ #> Human-readable label shown in diagnostics and admin pages
177
+ label: 'My Database'
178
+ #> To exclude the use of the database, you need to set host = ''
179
+ host: ''
180
+ #> PostgreSQL server port
181
+ port: 5432
182
+ #> Database name
183
+ database: <database>
184
+ #> Database user
185
+ user: <user>
186
+ #> Database password
187
+ password: <password>
188
+ #> List of PostgreSQL extensions required by the service (e.g., 'pgvector', 'uuid-ossp')
189
+ usedExtensions: []
190
+ # - pgvector
191
+
192
+
193
+ #> Logging configuration (tslog-based)
194
+ logger:
195
+ #> Minimum log level: silly | trace | debug | info | warn | error | fatal
196
+ level: info
197
+ #> To use or not to use logging to a file
198
+ useFileLogger: {{logger.useFileLogger}}
199
+ #> Absolute path to the folder where logs will be written. Default <proj_root>/../logs
200
+ dir: '{{logger.dir}}'
201
+
202
+ #> MCP (Model Context Protocol) server settings
203
+ mcp:
204
+ #> Transport for the MCP server: stdio | http
205
+ transportType: http
206
+ #> Response format configuration.
207
+ #> - structuredContent — default — the response in result.structuredContent returns JSON
208
+ #> - text in the response, serialized JSON is returned in result.content[0].text
209
+ toolAnswerAs: text
210
+ #> Per-client request rate limiting for the MCP endpoint
211
+ rateLimit:
212
+ #> Maximum number of requests allowed within windowMs
213
+ maxRequests: 100
214
+ #> Rate limit window length in milliseconds (1 minute)
215
+ windowMs: 60000
216
+
217
+ #> Swagger / OpenAPI documentation settings
218
+ swagger:
219
+ #> An array of servers that will be added to swagger docs
220
+ servers:
221
+ # - url: http://localhost:{{port}}
222
+ # description: "Development server (localhost)"
223
+ # - url: http://0.0.0.0:{{port}}
224
+ # description: "Development server (all interfaces)"
225
+ # - url: http://<prod_server_host_or_ip>:{{port}}
226
+ # description: "PROD server"
227
+ - url: https://{{mcp.domain}}
228
+ description: "PROD server"
229
+
230
+ #> Service home page (`/`) customization
231
+ homePage:
232
+ #> Optional help link rendered in the home page footer
233
+ helpLink:
234
+ #> If empty — help link is not shown in footer
235
+ url: ''
236
+ #> Link text (default: "Help")
237
+ label: 'Help'
238
+
239
+ #> UI theme overrides for built-in pages (home, admin, agent-tester)
240
+ uiColor:
241
+ #> Font color of the header and a number of interface elements on the HOME page
242
+ primary: '#0f65dc'
243
+
244
+ #> HTTP server hosting MCP, admin panel, agent tester, swagger and health endpoints
245
+ webServer:
246
+ #> Bind address for the HTTP server
247
+ host: '0.0.0.0'
248
+ #> TCP port for the HTTP server
249
+ port: {{port}}
250
+ #> Array of hosts that CORS skips
251
+ originHosts: [ 'localhost', '0.0.0.0' ]
252
+ #> ========================================================================
253
+ #> Authentication is configured here only when accessing the MCP server.
254
+ #> Authentication in services that enable tools, resources, and prompts
255
+ #> is implemented more deeply. To do this, you need to use the information passed in HTTP headers.
256
+ #> You can also use a custom authorization function.
257
+ #> ========================================================================
258
+ auth:
259
+ #> Enables/disables authorization
260
+ enabled: false
261
+ #> ========================================================================
262
+ #> PERMANENT SERVER TOKENS
263
+ #> Static tokens for server-to-server communication
264
+ #> CPU cost: O(1) — fastest authentication method
265
+ #>
266
+ #> To enable this authentication, you need to set auth.enabled = true
267
+ #> and set one token of at least 20 characters in length
268
+ #> ========================================================================
269
+ #> Add your server tokens here: ['token1', 'token2']
270
+ permanentServerTokens: [ ]
271
+
272
+ #> ========================================================================
273
+ #> JWT TOKEN WITH SYMMETRIC ENCRYPTION
274
+ #> Custom JWT tokens with AES-256 encryption
275
+ #> CPU cost: Medium — decryption + JSON parsing
276
+ #>
277
+ #> To enable this authentication, you need to set auth.enabled = true and set
278
+ #> encryptKey to at least 20 characters
279
+ #> ========================================================================
280
+ jwtToken:
281
+ #> Symmetric encryption key to generate a token for this MCP (minimum 8 chars)
282
+ encryptKey: '***'
283
+ #> If webServer.auth.enabled and the parameter true, the service name and the service specified in the token will be checked
284
+ checkMCPName: true
285
+ #> If true and JWT token contains non-empty 'ip' field,
286
+ #> the client IP will be checked against the allowed list in the token
287
+ isCheckIP: false
288
+
289
+ #> ========================================================================
290
+ #> Basic Authentication — Base64 encoded username:password
291
+ #> CPU cost: Medium — Base64 decoding + string comparison
292
+ #> To enable this authentication, you need to set auth.enabled = true
293
+ #> and set username and password to valid values
294
+ #> ========================================================================
295
+ basic:
296
+ #> Username for HTTP Basic auth
297
+ username: ''
298
+ #> Password for HTTP Basic auth
299
+ password: '***'
300
+
301
+ #> ========================================================================
302
+ #> ADMIN PANEL AUTHENTICATION
303
+ #> Token generation page available at /admin endpoint
304
+ #> Supports 4 authentication methods: permanentServerTokens, basic, jwtToken, ntlm
305
+ #> ========================================================================
306
+ adminAuth:
307
+ #> Enable/disable admin panel
308
+ enabled: true
309
+ #> Authentication type for admin panel: 'permanentServerTokens' | 'basic' | 'jwtToken' | 'ntlm'
310
+ #> For permanentServerTokens, basic, jwtToken — uses credentials from webServer.auth section
311
+ #> For ntlm — uses AD configuration from ad.domains section (no additional credentials needed)
312
+ type: 'basic'
package/config/local.yaml CHANGED
@@ -4,9 +4,10 @@ agentTester:
4
4
  showFooterLink: true # true (default) — show Agent Tester link in home page footer; false — hide link without disabling tester
5
5
  useAuth: true
6
6
  openAi:
7
- apiKey: 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
7
+ apiKey: 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
8
8
  apiKeyName: oai-aite-vvmakarov
9
9
  baseURL: ''
10
+ exposeToClient: false
10
11
 
11
12
  ad:
12
13
  domains:
@@ -95,6 +96,9 @@ webServer:
95
96
  encryptKey: '66666666-7777-8888-9999-000000000000'
96
97
  # If webServer.auth.enabled and the parameter true, the service name and the service specified in the token will be checked
97
98
  checkMCPName: true
99
+ # If true and JWT token contains non-empty 'ip' field,
100
+ # the client IP will be checked against the allowed list in the token
101
+ isCheckIP: false
98
102
  basic:
99
103
  username: vpupkin
100
104
  password: '1'
@@ -61,6 +61,7 @@ interface IAgentTesterConfig {
61
61
  openAi?: {
62
62
  apiKey: string;
63
63
  baseURL?: string;
64
+ exposeToClient?: boolean;
64
65
  };
65
66
  httpHeaders?: Record<string, string>;
66
67
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/_types_/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/core/_types_/config.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tester-router.d.ts","sourceRoot":"","sources":["../../../src/core/agent-tester/agent-tester-router.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA4BjC,wBAAgB,uBAAuB,CAAE,OAAO,GAAE;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,GAAG,MAAM,CAkQd"}
1
+ {"version":3,"file":"agent-tester-router.d.ts","sourceRoot":"","sources":["../../../src/core/agent-tester/agent-tester-router.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AA4BjC,wBAAgB,uBAAuB,CAAE,OAAO,GAAE;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3C,GAAG,MAAM,CAwQd"}
@@ -62,10 +62,16 @@ export function createAgentTesterRouter(options = {}) {
62
62
  // ===== Config API =====
63
63
  // API: Get default config (port, MCP URL)
64
64
  router.get('/api/config', (req, res) => {
65
+ const openAi = appConfig.agentTester?.openAi;
66
+ const expose = !!openAi?.exposeToClient;
65
67
  res.json({
66
68
  defaultMcpUrl: options.defaultMcpUrl || null,
67
69
  authEnabled: !!appConfig.webServer?.auth?.enabled,
68
70
  httpHeaders: appConfig.agentTester?.httpHeaders || {},
71
+ llmDefaults: {
72
+ baseURL: expose ? (openAi?.baseURL || '') : '',
73
+ apiKey: expose ? (openAi?.apiKey || '') : '',
74
+ },
69
75
  });
70
76
  });
71
77
  // API: Get auth token for auto-fill (MCP server Authorization header)