@toolplex/client 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/mcp-server/clientContext.d.ts +7 -4
  2. package/dist/mcp-server/clientContext.js +21 -10
  3. package/dist/mcp-server/index.js +9 -7
  4. package/dist/mcp-server/logging/telemetryLogger.d.ts +2 -2
  5. package/dist/mcp-server/logging/telemetryLogger.js +2 -2
  6. package/dist/mcp-server/policy/callToolObserver.js +4 -2
  7. package/dist/mcp-server/policy/feedbackPolicy.d.ts +4 -4
  8. package/dist/mcp-server/policy/feedbackPolicy.js +1 -1
  9. package/dist/mcp-server/policy/installObserver.js +4 -4
  10. package/dist/mcp-server/policy/playbookPolicy.d.ts +3 -3
  11. package/dist/mcp-server/policy/playbookPolicy.js +5 -5
  12. package/dist/mcp-server/policy/policyEnforcer.d.ts +4 -4
  13. package/dist/mcp-server/policy/policyEnforcer.js +13 -13
  14. package/dist/mcp-server/policy/serverPolicy.d.ts +1 -1
  15. package/dist/mcp-server/policy/serverPolicy.js +4 -2
  16. package/dist/mcp-server/promptsCache.js +2 -2
  17. package/dist/mcp-server/registry.d.ts +8 -8
  18. package/dist/mcp-server/registry.js +19 -17
  19. package/dist/mcp-server/serversCache.d.ts +1 -1
  20. package/dist/mcp-server/serversCache.js +6 -6
  21. package/dist/mcp-server/staticPrompts.js +2 -2
  22. package/dist/mcp-server/toolDefinitionsCache.d.ts +3 -3
  23. package/dist/mcp-server/toolDefinitionsCache.js +3 -3
  24. package/dist/mcp-server/toolHandlers/callToolHandler.d.ts +2 -2
  25. package/dist/mcp-server/toolHandlers/callToolHandler.js +22 -20
  26. package/dist/mcp-server/toolHandlers/getServerConfigHandler.d.ts +2 -2
  27. package/dist/mcp-server/toolHandlers/getServerConfigHandler.js +24 -18
  28. package/dist/mcp-server/toolHandlers/initHandler.d.ts +2 -2
  29. package/dist/mcp-server/toolHandlers/initHandler.js +41 -39
  30. package/dist/mcp-server/toolHandlers/installServerHandler.d.ts +2 -2
  31. package/dist/mcp-server/toolHandlers/installServerHandler.js +36 -32
  32. package/dist/mcp-server/toolHandlers/listServersHandler.d.ts +1 -1
  33. package/dist/mcp-server/toolHandlers/listServersHandler.js +21 -17
  34. package/dist/mcp-server/toolHandlers/listToolsHandler.d.ts +2 -2
  35. package/dist/mcp-server/toolHandlers/listToolsHandler.js +32 -26
  36. package/dist/mcp-server/toolHandlers/logPlaybookUsageHandler.d.ts +2 -2
  37. package/dist/mcp-server/toolHandlers/logPlaybookUsageHandler.js +14 -14
  38. package/dist/mcp-server/toolHandlers/lookupEntityHandler.d.ts +2 -2
  39. package/dist/mcp-server/toolHandlers/lookupEntityHandler.js +30 -28
  40. package/dist/mcp-server/toolHandlers/savePlaybookHandler.d.ts +2 -2
  41. package/dist/mcp-server/toolHandlers/savePlaybookHandler.js +17 -15
  42. package/dist/mcp-server/toolHandlers/searchHandler.d.ts +2 -2
  43. package/dist/mcp-server/toolHandlers/searchHandler.js +33 -28
  44. package/dist/mcp-server/toolHandlers/serverManagerUtils.d.ts +1 -1
  45. package/dist/mcp-server/toolHandlers/serverManagerUtils.js +2 -2
  46. package/dist/mcp-server/toolHandlers/submitFeedbackHandler.d.ts +2 -2
  47. package/dist/mcp-server/toolHandlers/submitFeedbackHandler.js +17 -15
  48. package/dist/mcp-server/toolHandlers/uninstallServerHandler.d.ts +2 -2
  49. package/dist/mcp-server/toolHandlers/uninstallServerHandler.js +21 -19
  50. package/dist/mcp-server/toolplexApi/service.d.ts +8 -8
  51. package/dist/mcp-server/toolplexApi/service.js +24 -28
  52. package/dist/mcp-server/toolplexApi/types.d.ts +3 -3
  53. package/dist/mcp-server/toolplexServer.d.ts +1 -1
  54. package/dist/mcp-server/toolplexServer.js +78 -77
  55. package/dist/mcp-server/tools.d.ts +1 -1
  56. package/dist/mcp-server/tools.js +3 -3
  57. package/dist/mcp-server/utils/initServerManagers.d.ts +4 -4
  58. package/dist/mcp-server/utils/initServerManagers.js +5 -5
  59. package/dist/mcp-server/utils/resultAnnotators.js +3 -7
  60. package/dist/mcp-server/utils/runtimeCheck.js +8 -8
  61. package/dist/server-manager/index.js +4 -4
  62. package/dist/server-manager/serverManager.d.ts +6 -6
  63. package/dist/server-manager/serverManager.js +34 -36
  64. package/dist/server-manager/stdioServer.js +37 -35
  65. package/dist/server-manager/stdioTransportProtocol.d.ts +2 -2
  66. package/dist/server-manager/stdioTransportProtocol.js +7 -7
  67. package/dist/shared/enhancedPath.js +13 -13
  68. package/dist/shared/fileLogger.js +19 -19
  69. package/dist/shared/mcpServerTypes.d.ts +4 -3
  70. package/dist/shared/mcpServerTypes.js +17 -10
  71. package/dist/shared/serverManagerTypes.d.ts +1 -1
  72. package/dist/shared/serverManagerTypes.js +1 -1
  73. package/dist/shared/stdioServerManagerClient.js +20 -18
  74. package/dist/version.d.ts +1 -1
  75. package/dist/version.js +1 -1
  76. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
- import { FileLogger } from '../../shared/fileLogger.js';
2
- import Registry from '../registry.js';
1
+ import { FileLogger } from "../../shared/fileLogger.js";
2
+ import Registry from "../registry.js";
3
3
  const logger = FileLogger;
4
4
  export async function handleSubmitFeedback(params) {
5
5
  const startTime = Date.now();
6
- await logger.info('Handling submit feedback request');
6
+ await logger.info("Handling submit feedback request");
7
7
  await logger.debug(`Feedback params: ${JSON.stringify(params)}`);
8
8
  const { target_type, target_id, vote, message, security_assessment } = params;
9
9
  const apiService = Registry.getToolplexApiService();
@@ -13,18 +13,18 @@ export async function handleSubmitFeedback(params) {
13
13
  const clientContext = Registry.getClientContext();
14
14
  try {
15
15
  // Check if the client is in restricted mode
16
- if (clientContext.clientMode === 'restricted') {
17
- throw new Error('Feedback functionality is disabled in restricted mode.');
16
+ if (clientContext.clientMode === "restricted") {
17
+ throw new Error("Feedback functionality is disabled in restricted mode.");
18
18
  }
19
19
  // Check if read-only mode is enabled
20
20
  if (clientContext.permissions.enable_read_only_mode) {
21
- throw new Error('Saving playbooks is disabled in read-only mode');
21
+ throw new Error("Saving playbooks is disabled in read-only mode");
22
22
  }
23
23
  // Enforce feedback policy before submitting
24
24
  policyEnforcer.enforceFeedbackPolicy(params);
25
25
  const response = await apiService.submitFeedback(target_type, target_id, vote, message, security_assessment);
26
26
  await logger.info(`Feedback submitted successfully for ${target_type} ${target_id}`);
27
- await telemetryLogger.log('client_submit_feedback', {
27
+ await telemetryLogger.log("client_submit_feedback", {
28
28
  success: true,
29
29
  log_context: {
30
30
  target_type,
@@ -34,13 +34,13 @@ export async function handleSubmitFeedback(params) {
34
34
  latency_ms: Date.now() - startTime,
35
35
  });
36
36
  return {
37
- role: 'system',
37
+ role: "system",
38
38
  content: [
39
39
  {
40
- type: 'text',
40
+ type: "text",
41
41
  text: promptsCache
42
- .getPrompt('submit_feedback_success')
43
- .replace('{FEEDBACK_ID}', response.id),
42
+ .getPrompt("submit_feedback_success")
43
+ .replace("{FEEDBACK_ID}", response.id),
44
44
  },
45
45
  ],
46
46
  };
@@ -48,7 +48,7 @@ export async function handleSubmitFeedback(params) {
48
48
  catch (error) {
49
49
  const errorMessage = error instanceof Error ? error.message : String(error);
50
50
  await logger.error(`Failed to submit feedback: ${errorMessage}`);
51
- await telemetryLogger.log('client_submit_feedback', {
51
+ await telemetryLogger.log("client_submit_feedback", {
52
52
  success: false,
53
53
  log_context: {
54
54
  target_type,
@@ -58,11 +58,13 @@ export async function handleSubmitFeedback(params) {
58
58
  latency_ms: Date.now() - startTime,
59
59
  });
60
60
  return {
61
- role: 'system',
61
+ role: "system",
62
62
  content: [
63
63
  {
64
- type: 'text',
65
- text: promptsCache.getPrompt('unexpected_error').replace('{ERROR}', errorMessage),
64
+ type: "text",
65
+ text: promptsCache
66
+ .getPrompt("unexpected_error")
67
+ .replace("{ERROR}", errorMessage),
66
68
  },
67
69
  ],
68
70
  };
@@ -1,3 +1,3 @@
1
- import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
- import { UninstallParams } from '../../shared/mcpServerTypes.js';
1
+ import { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import { UninstallParams } from "../../shared/mcpServerTypes.js";
3
3
  export declare function handleUninstallServer(params: UninstallParams): Promise<CallToolResult>;
@@ -1,7 +1,7 @@
1
- import { findServerManagerClient } from './serverManagerUtils.js';
2
- import { ServerUninstallResultSchema } from '../../shared/serverManagerTypes.js';
3
- import { FileLogger } from '../../shared/fileLogger.js';
4
- import Registry from '../registry.js';
1
+ import { findServerManagerClient } from "./serverManagerUtils.js";
2
+ import { ServerUninstallResultSchema } from "../../shared/serverManagerTypes.js";
3
+ import { FileLogger } from "../../shared/fileLogger.js";
4
+ import Registry from "../registry.js";
5
5
  const logger = FileLogger;
6
6
  export async function handleUninstallServer(params) {
7
7
  const startTime = Date.now();
@@ -15,14 +15,14 @@ export async function handleUninstallServer(params) {
15
15
  let errorMessage;
16
16
  try {
17
17
  // Check if the client is in restricted mode
18
- if (clientContext.clientMode === 'restricted') {
19
- throw new Error('Uninstall functionality is disabled in restricted mode.');
18
+ if (clientContext.clientMode === "restricted") {
19
+ throw new Error("Uninstall functionality is disabled in restricted mode.");
20
20
  }
21
21
  const server_id = params.server_id;
22
22
  await logger.info(`Handling uninstall request for server ${server_id}`);
23
23
  const client = await findServerManagerClient(server_id, serverManagerClients);
24
- const response = await client.sendRequest('uninstall', { server_id });
25
- if ('error' in response) {
24
+ const response = await client.sendRequest("uninstall", { server_id });
25
+ if ("error" in response) {
26
26
  errorMessage = `Failed to uninstall server_id: ${server_id}, error message: ${response.error.message}`;
27
27
  throw new Error(errorMessage);
28
28
  }
@@ -33,7 +33,7 @@ export async function handleUninstallServer(params) {
33
33
  // Refresh the servers cache after successful uninstall
34
34
  await serversCache.refreshCache(serverManagerClients);
35
35
  await logger.info(`Successfully uninstalled server ${server_id}`);
36
- await telemetryLogger.log('client_uninstall', {
36
+ await telemetryLogger.log("client_uninstall", {
37
37
  success: true,
38
38
  log_context: {
39
39
  server_id: parsed.data.server_id,
@@ -41,14 +41,14 @@ export async function handleUninstallServer(params) {
41
41
  latency_ms: Date.now() - startTime,
42
42
  });
43
43
  return {
44
- role: 'system',
44
+ role: "system",
45
45
  content: [
46
46
  {
47
- type: 'text',
47
+ type: "text",
48
48
  text: promptsCache
49
- .getPrompt('uninstall_success')
50
- .replace('{SERVER_ID}', parsed.data.server_id)
51
- .replace('{SERVER_NAME}', parsed.data.server_name),
49
+ .getPrompt("uninstall_success")
50
+ .replace("{SERVER_ID}", parsed.data.server_id)
51
+ .replace("{SERVER_NAME}", parsed.data.server_name),
52
52
  },
53
53
  ],
54
54
  };
@@ -58,20 +58,22 @@ export async function handleUninstallServer(params) {
58
58
  errorMessage = error.message;
59
59
  }
60
60
  else {
61
- errorMessage = promptsCache.getPrompt('unexpected_error');
61
+ errorMessage = promptsCache.getPrompt("unexpected_error");
62
62
  }
63
63
  await logger.error(`Failed to uninstall server: ${errorMessage}`);
64
- await telemetryLogger.log('client_uninstall', {
64
+ await telemetryLogger.log("client_uninstall", {
65
65
  success: false,
66
66
  pii_sanitized_error_message: errorMessage,
67
67
  latency_ms: Date.now() - startTime,
68
68
  });
69
69
  return {
70
- role: 'system',
70
+ role: "system",
71
71
  content: [
72
72
  {
73
- type: 'text',
74
- text: promptsCache.getPrompt('uninstall_failure').replace('{ERROR}', errorMessage),
73
+ type: "text",
74
+ text: promptsCache
75
+ .getPrompt("uninstall_failure")
76
+ .replace("{ERROR}", errorMessage),
75
77
  },
76
78
  ],
77
79
  };
@@ -1,7 +1,7 @@
1
- import { CreatePlaybookResponse, LogPlaybookUsageResponse, SubmitFeedbackResponse, SecurityAssessment, FeedbackSummaryResponse, LogTelemetryRequest, LogTelemetryBatchResponse, InitResponse } from './types.js';
2
- import { ClientContext } from '../clientContext.js';
3
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
4
- import { PlaybookAction } from '../../shared/mcpServerTypes.js';
1
+ import { CreatePlaybookResponse, LogPlaybookUsageResponse, SubmitFeedbackResponse, SecurityAssessment, FeedbackSummaryResponse, LogTelemetryRequest, LogTelemetryBatchResponse, InitResponse } from "./types.js";
2
+ import { ClientContext } from "../clientContext.js";
3
+ import { Tool } from "@modelcontextprotocol/sdk/types.js";
4
+ import { PlaybookAction } from "../../shared/mcpServerTypes.js";
5
5
  export declare class ToolplexApiService {
6
6
  private readonly baseUrl;
7
7
  private readonly clientContext;
@@ -17,16 +17,16 @@ export declare class ToolplexApiService {
17
17
  tools: Tool[];
18
18
  }>;
19
19
  logTelemetryEvents(events: Array<{
20
- eventType: LogTelemetryRequest['event_type'];
21
- data: Partial<Omit<LogTelemetryRequest, 'event_type'>>;
20
+ eventType: LogTelemetryRequest["event_type"];
21
+ data: Partial<Omit<LogTelemetryRequest, "event_type">>;
22
22
  }>): Promise<LogTelemetryBatchResponse>;
23
- lookupEntity(entityType: 'server' | 'playbook' | 'feedback', entityId: string): Promise<any>;
23
+ lookupEntity(entityType: "server" | "playbook" | "feedback", entityId: string): Promise<any>;
24
24
  search(query: string, expandedKeywords?: string[], filter?: string, size?: number): Promise<{
25
25
  mcp_servers?: any[];
26
26
  playbooks?: any[];
27
27
  }>;
28
28
  createPlaybook(description: string, actions: Array<PlaybookAction>, domain?: string, keywords?: string[], requirements?: string[], sourcePlaybookId?: string, forkReason?: string): Promise<CreatePlaybookResponse>;
29
29
  logPlaybookUsage(playbookId: string, success: boolean, errorMessage?: string): Promise<LogPlaybookUsageResponse>;
30
- submitFeedback(targetType: 'server' | 'playbook', targetId: string, vote: 'up' | 'down', message?: string, securityAssessment?: SecurityAssessment): Promise<SubmitFeedbackResponse>;
30
+ submitFeedback(targetType: "server" | "playbook", targetId: string, vote: "up" | "down", message?: string, securityAssessment?: SecurityAssessment): Promise<SubmitFeedbackResponse>;
31
31
  getFeedbackSummary(): Promise<FeedbackSummaryResponse>;
32
32
  }
@@ -1,14 +1,14 @@
1
- import fetch from 'node-fetch';
2
- import { FileLogger } from '../../shared/fileLogger.js';
3
- import os from 'os';
1
+ import fetch from "node-fetch";
2
+ import { FileLogger } from "../../shared/fileLogger.js";
3
+ import os from "os";
4
4
  const logger = FileLogger;
5
5
  export class ToolplexApiService {
6
6
  constructor(clientContext) {
7
7
  if (!clientContext.apiKey) {
8
- throw new Error('API key not set in client context');
8
+ throw new Error("API key not set in client context");
9
9
  }
10
10
  if (!clientContext.clientVersion) {
11
- throw new Error('Client version not set in client context');
11
+ throw new Error("Client version not set in client context");
12
12
  }
13
13
  this.clientContext = clientContext;
14
14
  this.baseUrl = this.getBaseUrl(clientContext.dev);
@@ -20,7 +20,7 @@ export class ToolplexApiService {
20
20
  };
21
21
  }
22
22
  getBaseUrl(dev) {
23
- return dev ? 'http://localhost:8080' : 'https://api.toolplex.ai';
23
+ return dev ? "http://localhost:8080" : "https://api.toolplex.ai";
24
24
  }
25
25
  async handleFetchResponse(response) {
26
26
  if (!response.ok) {
@@ -31,17 +31,18 @@ export class ToolplexApiService {
31
31
  }
32
32
  getBaseHeaders() {
33
33
  return {
34
- 'Content-Type': 'application/json',
35
- Accept: 'application/json',
36
- 'x-api-key': this.clientContext.apiKey,
37
- 'x-client-mode': this.clientContext.clientMode,
38
- 'x-client-version': this.clientContext.clientVersion,
34
+ "Content-Type": "application/json",
35
+ Accept: "application/json",
36
+ "x-api-key": this.clientContext.apiKey,
37
+ "x-client-mode": this.clientContext.clientMode,
38
+ "x-client-name": this.clientContext.clientName,
39
+ "x-client-version": this.clientContext.clientVersion,
39
40
  };
40
41
  }
41
42
  getHeadersWithSession() {
42
43
  return {
43
44
  ...this.getBaseHeaders(),
44
- 'x-session-id': this.clientContext.sessionId,
45
+ "x-session-id": this.clientContext.sessionId,
45
46
  };
46
47
  }
47
48
  async init() {
@@ -50,7 +51,7 @@ export class ToolplexApiService {
50
51
  llm_context: this.clientContext.llmContext,
51
52
  };
52
53
  const response = await fetch(`${this.baseUrl}/init`, {
53
- method: 'POST',
54
+ method: "POST",
54
55
  headers: this.getBaseHeaders(),
55
56
  body: JSON.stringify(initRequest),
56
57
  });
@@ -64,7 +65,7 @@ export class ToolplexApiService {
64
65
  async getTools() {
65
66
  try {
66
67
  const response = await fetch(`${this.baseUrl}/tools`, {
67
- method: 'POST',
68
+ method: "POST",
68
69
  headers: this.getBaseHeaders(),
69
70
  body: JSON.stringify({}),
70
71
  });
@@ -78,7 +79,7 @@ export class ToolplexApiService {
78
79
  async logTelemetryEvents(events) {
79
80
  try {
80
81
  const response = await fetch(`${this.baseUrl}/telemetry/log/batch`, {
81
- method: 'POST',
82
+ method: "POST",
82
83
  headers: this.getHeadersWithSession(),
83
84
  body: JSON.stringify(events.map((event) => ({
84
85
  event_type: event.eventType,
@@ -92,12 +93,10 @@ export class ToolplexApiService {
92
93
  return { success: false };
93
94
  }
94
95
  }
95
- async lookupEntity(entityType, entityId
96
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
97
- ) {
96
+ async lookupEntity(entityType, entityId) {
98
97
  try {
99
98
  const response = await fetch(`${this.baseUrl}/lookup-entity`, {
100
- method: 'POST',
99
+ method: "POST",
101
100
  headers: this.getHeadersWithSession(),
102
101
  body: JSON.stringify({
103
102
  entity_type: entityType,
@@ -111,9 +110,7 @@ export class ToolplexApiService {
111
110
  throw err;
112
111
  }
113
112
  }
114
- async search(query, expandedKeywords = [], filter = 'all', size = 10
115
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
116
- ) {
113
+ async search(query, expandedKeywords = [], filter = "all", size = 10) {
117
114
  const requestBody = {
118
115
  query,
119
116
  expanded_keywords: expandedKeywords,
@@ -123,7 +120,7 @@ export class ToolplexApiService {
123
120
  await logger.debug(`Searching API at ${this.baseUrl} with query: ${query}`);
124
121
  try {
125
122
  const response = await fetch(`${this.baseUrl}/search`, {
126
- method: 'POST',
123
+ method: "POST",
127
124
  headers: this.getHeadersWithSession(),
128
125
  body: JSON.stringify(requestBody),
129
126
  });
@@ -131,7 +128,6 @@ export class ToolplexApiService {
131
128
  const errorText = await response.text();
132
129
  throw new Error(`HTTP ${response.status}: ${errorText}`);
133
130
  }
134
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
135
131
  return (await response.json());
136
132
  }
137
133
  catch (err) {
@@ -152,7 +148,7 @@ export class ToolplexApiService {
152
148
  };
153
149
  try {
154
150
  const response = await fetch(`${this.baseUrl}/playbooks/create`, {
155
- method: 'POST',
151
+ method: "POST",
156
152
  headers: this.getHeadersWithSession(),
157
153
  body: JSON.stringify(requestBody),
158
154
  });
@@ -172,7 +168,7 @@ export class ToolplexApiService {
172
168
  };
173
169
  try {
174
170
  const response = await fetch(`${this.baseUrl}/playbooks/log-usage`, {
175
- method: 'POST',
171
+ method: "POST",
176
172
  headers: this.getHeadersWithSession(),
177
173
  body: JSON.stringify(requestBody),
178
174
  });
@@ -195,7 +191,7 @@ export class ToolplexApiService {
195
191
  };
196
192
  try {
197
193
  const response = await fetch(`${this.baseUrl}/feedback/submit`, {
198
- method: 'POST',
194
+ method: "POST",
199
195
  headers: this.getHeadersWithSession(),
200
196
  body: JSON.stringify(requestBody),
201
197
  });
@@ -209,7 +205,7 @@ export class ToolplexApiService {
209
205
  async getFeedbackSummary() {
210
206
  try {
211
207
  const response = await fetch(`${this.baseUrl}/feedback/summarize`, {
212
- method: 'GET',
208
+ method: "GET",
213
209
  headers: this.getHeadersWithSession(),
214
210
  });
215
211
  return this.handleFetchResponse(response);
@@ -68,9 +68,9 @@ export interface LogPlaybookUsageResponse {
68
68
  success: boolean;
69
69
  }
70
70
  export interface SubmitFeedbackRequest {
71
- target_type: 'server' | 'playbook';
71
+ target_type: "server" | "playbook";
72
72
  target_id: string;
73
- vote: 'up' | 'down';
73
+ vote: "up" | "down";
74
74
  message?: string;
75
75
  llm_context: LlmContext;
76
76
  machine_context: {
@@ -103,7 +103,7 @@ export interface LogTelemetryRequest {
103
103
  event_type: string;
104
104
  session_id?: string;
105
105
  agent_id?: string;
106
- agent_type?: 'user' | 'system' | 'external';
106
+ agent_type?: "user" | "system" | "external";
107
107
  success?: boolean;
108
108
  pii_sanitized_error_message?: string;
109
109
  log_context?: {
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { ToolplexServerConfig } from '../shared/mcpServerTypes.js';
2
+ import { ToolplexServerConfig } from "../shared/mcpServerTypes.js";
3
3
  export declare function serve(config: ToolplexServerConfig): Promise<void>;