@bike4mind/cli 0.2.5-feat-auto-context-customization.17095 → 0.2.5-feat-server-side-tool-execution.17096

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.
@@ -0,0 +1,47 @@
1
+ /**
2
+ * HTTP client for communicating with B4M backend API
3
+ * Handles authentication, request/response formatting, and error handling
4
+ */
5
+ export interface ToolExecuteRequest {
6
+ tool: string;
7
+ params: Record<string, unknown>;
8
+ }
9
+ export interface ToolExecuteResponse {
10
+ success: boolean;
11
+ data?: unknown;
12
+ error?: {
13
+ code: string;
14
+ message: string;
15
+ details?: Record<string, unknown>;
16
+ };
17
+ metadata?: {
18
+ executionTime: number;
19
+ tool: string;
20
+ };
21
+ }
22
+ export interface ClientConfig {
23
+ /** Base URL for B4M API (e.g., https://api.bike4mind.com or http://localhost:3000) */
24
+ apiUrl: string;
25
+ /** JWT authentication token */
26
+ authToken: string;
27
+ /** Request timeout in milliseconds */
28
+ timeout?: number;
29
+ }
30
+ /**
31
+ * Client for executing tools via B4M backend API
32
+ */
33
+ export declare class B4MApiClient {
34
+ private readonly apiUrl;
35
+ private readonly authToken;
36
+ private readonly timeout;
37
+ constructor(config: ClientConfig);
38
+ /**
39
+ * Execute a tool via the backend API
40
+ */
41
+ executeTool(tool: string, params: Record<string, unknown>): Promise<ToolExecuteResponse>;
42
+ /**
43
+ * Test connection to backend API
44
+ */
45
+ testConnection(): Promise<boolean>;
46
+ }
47
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,aAAa,EAAE,MAAM,CAAC;QACtB,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,YAAY;IAC3B,sFAAsF;IACtF,MAAM,EAAE,MAAM,CAAC;IACf,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,YAAY;IAMhC;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAgG9F;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;CAezC"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * HTTP client for communicating with B4M backend API
3
+ * Handles authentication, request/response formatting, and error handling
4
+ */
5
+ /**
6
+ * Client for executing tools via B4M backend API
7
+ */
8
+ export class B4MApiClient {
9
+ apiUrl;
10
+ authToken;
11
+ timeout;
12
+ constructor(config) {
13
+ this.apiUrl = config.apiUrl.replace(/\/$/, ''); // Remove trailing slash
14
+ this.authToken = config.authToken;
15
+ this.timeout = config.timeout || 30000; // 30s default
16
+ }
17
+ /**
18
+ * Execute a tool via the backend API
19
+ */
20
+ async executeTool(tool, params) {
21
+ const url = `${this.apiUrl}/api/tools/execute`;
22
+ const requestBody = {
23
+ tool,
24
+ params,
25
+ };
26
+ try {
27
+ // Create abort controller for timeout
28
+ const controller = new AbortController();
29
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
30
+ const response = await fetch(url, {
31
+ method: 'POST',
32
+ headers: {
33
+ 'Content-Type': 'application/json',
34
+ Authorization: `Bearer ${this.authToken}`,
35
+ 'User-Agent': 'B4M-MCP-Proxy/1.0',
36
+ },
37
+ body: JSON.stringify(requestBody),
38
+ signal: controller.signal,
39
+ });
40
+ clearTimeout(timeoutId);
41
+ // Parse response
42
+ const data = (await response.json());
43
+ // Check for HTTP errors
44
+ if (!response.ok) {
45
+ // Handle authentication errors with helpful message
46
+ if (response.status === 401) {
47
+ return {
48
+ success: false,
49
+ error: {
50
+ code: 'AUTHENTICATION_REQUIRED',
51
+ message: 'Authentication required. Please run /login in the CLI to authenticate with your B4M account.',
52
+ details: data.error?.details,
53
+ },
54
+ metadata: data.metadata,
55
+ };
56
+ }
57
+ return {
58
+ success: false,
59
+ error: {
60
+ code: data.error?.code || 'HTTP_ERROR',
61
+ message: data.error?.message || `HTTP ${response.status}: ${response.statusText}`,
62
+ details: data.error?.details,
63
+ },
64
+ metadata: data.metadata,
65
+ };
66
+ }
67
+ return data;
68
+ }
69
+ catch (error) {
70
+ // Handle timeout
71
+ if (error instanceof Error && error.name === 'AbortError') {
72
+ return {
73
+ success: false,
74
+ error: {
75
+ code: 'TIMEOUT',
76
+ message: `Request timeout after ${this.timeout}ms`,
77
+ },
78
+ };
79
+ }
80
+ // Handle network errors
81
+ if (error instanceof TypeError) {
82
+ return {
83
+ success: false,
84
+ error: {
85
+ code: 'NETWORK_ERROR',
86
+ message: 'Failed to connect to B4M API',
87
+ details: {
88
+ error: error.message,
89
+ },
90
+ },
91
+ };
92
+ }
93
+ // Unknown error
94
+ return {
95
+ success: false,
96
+ error: {
97
+ code: 'UNKNOWN_ERROR',
98
+ message: error instanceof Error ? error.message : 'An unknown error occurred',
99
+ details: {
100
+ error: String(error),
101
+ },
102
+ },
103
+ };
104
+ }
105
+ }
106
+ /**
107
+ * Test connection to backend API
108
+ */
109
+ async testConnection() {
110
+ try {
111
+ const controller = new AbortController();
112
+ const timeoutId = setTimeout(() => controller.abort(), 5000);
113
+ const response = await fetch(`${this.apiUrl}/api/health`, {
114
+ signal: controller.signal,
115
+ });
116
+ clearTimeout(timeoutId);
117
+ return response.ok;
118
+ }
119
+ catch {
120
+ return false;
121
+ }
122
+ }
123
+ }
124
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * B4M MCP Proxy Server
4
+ *
5
+ * This MCP server acts as a proxy between Claude CLI and B4M backend API.
6
+ * It executes tools server-side using B4M company API keys, ensuring
7
+ * keys are never exposed to clients.
8
+ *
9
+ * Environment Variables:
10
+ * - B4M_API_URL: Base URL for B4M API (default: https://api.bike4mind.com)
11
+ * - B4M_AUTH_TOKEN: JWT authentication token (required)
12
+ * - B4M_TIMEOUT: Request timeout in milliseconds (default: 30000)
13
+ *
14
+ * Usage:
15
+ * node dist/index.js
16
+ *
17
+ * MCP Configuration (claude_desktop_config.json):
18
+ * {
19
+ * "mcpServers": {
20
+ * "b4m-tools": {
21
+ * "command": "node",
22
+ * "args": ["/path/to/mcp-server-b4m-proxy/dist/index.js"],
23
+ * "env": {
24
+ * "B4M_API_URL": "https://api.bike4mind.com",
25
+ * "B4M_AUTH_TOKEN": "your-jwt-token"
26
+ * }
27
+ * }
28
+ * }
29
+ * }
30
+ */
31
+ export {};
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG"}
@@ -0,0 +1,187 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * B4M MCP Proxy Server
4
+ *
5
+ * This MCP server acts as a proxy between Claude CLI and B4M backend API.
6
+ * It executes tools server-side using B4M company API keys, ensuring
7
+ * keys are never exposed to clients.
8
+ *
9
+ * Environment Variables:
10
+ * - B4M_API_URL: Base URL for B4M API (default: https://api.bike4mind.com)
11
+ * - B4M_AUTH_TOKEN: JWT authentication token (required)
12
+ * - B4M_TIMEOUT: Request timeout in milliseconds (default: 30000)
13
+ *
14
+ * Usage:
15
+ * node dist/index.js
16
+ *
17
+ * MCP Configuration (claude_desktop_config.json):
18
+ * {
19
+ * "mcpServers": {
20
+ * "b4m-tools": {
21
+ * "command": "node",
22
+ * "args": ["/path/to/mcp-server-b4m-proxy/dist/index.js"],
23
+ * "env": {
24
+ * "B4M_API_URL": "https://api.bike4mind.com",
25
+ * "B4M_AUTH_TOKEN": "your-jwt-token"
26
+ * }
27
+ * }
28
+ * }
29
+ * }
30
+ */
31
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
32
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
33
+ import { CallToolRequestSchema, ListToolsRequestSchema, McpError, ErrorCode, } from '@modelcontextprotocol/sdk/types.js';
34
+ import { B4MApiClient } from './client.js';
35
+ // Configuration from environment
36
+ const API_URL = process.env.B4M_API_URL || 'https://api.bike4mind.com';
37
+ const AUTH_TOKEN = process.env.B4M_AUTH_TOKEN || '';
38
+ const TIMEOUT = parseInt(process.env.B4M_TIMEOUT || '30000', 10);
39
+ // Warn if no authentication token (but allow server to start)
40
+ // The wrapper script (b4m-mcp-proxy.mjs) already logs a user-friendly warning
41
+ if (!AUTH_TOKEN) {
42
+ console.error('Warning: B4M_AUTH_TOKEN not set - tools will fail until authenticated');
43
+ }
44
+ // Initialize API client
45
+ const client = new B4MApiClient({
46
+ apiUrl: API_URL,
47
+ authToken: AUTH_TOKEN,
48
+ timeout: TIMEOUT,
49
+ });
50
+ /**
51
+ * Tool definitions for MCP
52
+ * These match the tools available in the backend
53
+ */
54
+ const TOOLS = [
55
+ {
56
+ name: 'weather',
57
+ description: 'Get current weather information for any location worldwide. Returns temperature, conditions, humidity, wind speed, and more.',
58
+ inputSchema: {
59
+ type: 'object',
60
+ properties: {
61
+ location: {
62
+ type: 'string',
63
+ description: 'City name, state, and/or country (e.g., "San Francisco, CA" or "London, UK")',
64
+ },
65
+ units: {
66
+ type: 'string',
67
+ enum: ['metric', 'imperial', 'standard'],
68
+ description: 'Temperature units (metric = Celsius, imperial = Fahrenheit, standard = Kelvin)',
69
+ default: 'metric',
70
+ },
71
+ },
72
+ required: ['location'],
73
+ },
74
+ },
75
+ {
76
+ name: 'serper',
77
+ description: 'Search the web using Google via SerpAPI. Returns organic search results with titles, links, and snippets.',
78
+ inputSchema: {
79
+ type: 'object',
80
+ properties: {
81
+ query: {
82
+ type: 'string',
83
+ description: 'Search query to execute',
84
+ },
85
+ num_results: {
86
+ type: 'number',
87
+ description: 'Number of results to return (1-10, default: 3)',
88
+ minimum: 1,
89
+ maximum: 10,
90
+ default: 3,
91
+ },
92
+ },
93
+ required: ['query'],
94
+ },
95
+ },
96
+ ];
97
+ /**
98
+ * Create and configure MCP server
99
+ */
100
+ const server = new Server({
101
+ name: 'b4m-tools',
102
+ version: '1.0.0',
103
+ }, {
104
+ capabilities: {
105
+ tools: {},
106
+ },
107
+ });
108
+ /**
109
+ * Handle tool list requests
110
+ */
111
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
112
+ return {
113
+ tools: TOOLS,
114
+ };
115
+ });
116
+ /**
117
+ * Handle tool execution requests
118
+ */
119
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
120
+ const { name: toolName, arguments: toolArgs } = request.params;
121
+ try {
122
+ // Validate tool exists
123
+ const tool = TOOLS.find(t => t.name === toolName);
124
+ if (!tool) {
125
+ throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${toolName}`);
126
+ }
127
+ // Execute tool via backend API
128
+ const result = await client.executeTool(toolName, toolArgs || {});
129
+ // Handle backend errors
130
+ if (!result.success) {
131
+ throw new McpError(ErrorCode.InternalError, result.error?.message || 'Tool execution failed', result.error?.details);
132
+ }
133
+ // Return successful result
134
+ return {
135
+ content: [
136
+ {
137
+ type: 'text',
138
+ text: JSON.stringify(result.data, null, 2),
139
+ },
140
+ ],
141
+ };
142
+ }
143
+ catch (error) {
144
+ // Re-throw McpErrors
145
+ if (error instanceof McpError) {
146
+ throw error;
147
+ }
148
+ // Wrap other errors
149
+ throw new McpError(ErrorCode.InternalError, error instanceof Error ? error.message : 'Unknown error occurred', {
150
+ error: String(error),
151
+ });
152
+ }
153
+ });
154
+ /**
155
+ * Start the MCP server
156
+ */
157
+ async function main() {
158
+ // Test connection to backend
159
+ const isConnected = await client.testConnection();
160
+ if (!isConnected) {
161
+ console.error(`Warning: Could not connect to backend API at ${API_URL}`);
162
+ console.error('Server will start but tool execution may fail.');
163
+ }
164
+ else {
165
+ console.error(`Connected to B4M API at ${API_URL}`);
166
+ }
167
+ // Start stdio transport
168
+ const transport = new StdioServerTransport();
169
+ await server.connect(transport);
170
+ console.error('B4M MCP Proxy Server running on stdio');
171
+ console.error(`Available tools: ${TOOLS.map(t => t.name).join(', ')}`);
172
+ }
173
+ // Handle errors
174
+ process.on('uncaughtException', error => {
175
+ console.error('Uncaught exception:', error);
176
+ process.exit(1);
177
+ });
178
+ process.on('unhandledRejection', reason => {
179
+ console.error('Unhandled rejection:', reason);
180
+ process.exit(1);
181
+ });
182
+ // Start server
183
+ main().catch(error => {
184
+ console.error('Failed to start server:', error);
185
+ process.exit(1);
186
+ });
187
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  findMostSimilarMemento,
4
4
  getRelevantMementos
5
- } from "./chunk-55PRVW6C.js";
6
- import "./chunk-RM2KFSVU.js";
5
+ } from "./chunk-WNBKV4FX.js";
6
+ import "./chunk-LYNNVNEC.js";
7
7
  import "./chunk-AMDXHL6S.js";
8
- import "./chunk-2RFX62SX.js";
8
+ import "./chunk-WR6YZRQV.js";
9
9
  import "./chunk-PDX44BCA.js";
10
10
  export {
11
11
  findMostSimilarMemento,
@@ -120,7 +120,7 @@ import {
120
120
  validateMermaidSyntax,
121
121
  warmUpSettingsCache,
122
122
  withRetry
123
- } from "./chunk-RM2KFSVU.js";
123
+ } from "./chunk-LYNNVNEC.js";
124
124
  import {
125
125
  Logger,
126
126
  NotificationDeduplicator,
@@ -129,7 +129,7 @@ import {
129
129
  postLowCreditsNotificationToSlack,
130
130
  postMessageToSlack
131
131
  } from "./chunk-AMDXHL6S.js";
132
- import "./chunk-2RFX62SX.js";
132
+ import "./chunk-WR6YZRQV.js";
133
133
  import "./chunk-PDX44BCA.js";
134
134
  export {
135
135
  AWSBackend,
@@ -291,7 +291,7 @@ import {
291
291
  validateQuestMasterArtifactV2,
292
292
  validateReactArtifactV2,
293
293
  validateSvgArtifactV2
294
- } from "./chunk-2RFX62SX.js";
294
+ } from "./chunk-WR6YZRQV.js";
295
295
  import "./chunk-PDX44BCA.js";
296
296
  export {
297
297
  ALL_IMAGE_MODELS,
@@ -2,10 +2,10 @@
2
2
  import {
3
3
  SubtractCreditsSchema,
4
4
  subtractCredits
5
- } from "./chunk-GXADX53I.js";
6
- import "./chunk-RM2KFSVU.js";
5
+ } from "./chunk-LEG2UM5Q.js";
6
+ import "./chunk-LYNNVNEC.js";
7
7
  import "./chunk-AMDXHL6S.js";
8
- import "./chunk-2RFX62SX.js";
8
+ import "./chunk-WR6YZRQV.js";
9
9
  import "./chunk-PDX44BCA.js";
10
10
  export {
11
11
  SubtractCreditsSchema,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bike4mind/cli",
3
- "version": "0.2.5-feat-auto-context-customization.17095+87596453c",
3
+ "version": "0.2.5-feat-server-side-tool-execution.17096+d6b936a82",
4
4
  "type": "module",
5
5
  "description": "Interactive CLI tool for Bike4Mind with ReAct agents",
6
6
  "license": "UNLICENSED",
@@ -33,6 +33,7 @@
33
33
  "scripts": {
34
34
  "dev": "tsx src/index.tsx",
35
35
  "build": "tsup",
36
+ "postbuild": "node scripts/bundle-mcp-proxy.mjs",
36
37
  "typecheck": "tsc --noEmit",
37
38
  "test": "vitest run",
38
39
  "test:watch": "vitest",
@@ -102,10 +103,11 @@
102
103
  },
103
104
  "devDependencies": {
104
105
  "@bike4mind/agents": "0.1.0",
105
- "@bike4mind/common": "2.37.1-feat-auto-context-customization.17095+87596453c",
106
- "@bike4mind/mcp": "1.19.6-feat-auto-context-customization.17095+87596453c",
107
- "@bike4mind/services": "2.32.2-feat-auto-context-customization.17095+87596453c",
108
- "@bike4mind/utils": "2.1.1-feat-auto-context-customization.17095+87596453c",
106
+ "@bike4mind/common": "2.37.1-feat-server-side-tool-execution.17096+d6b936a82",
107
+ "@bike4mind/mcp": "1.19.6-feat-server-side-tool-execution.17096+d6b936a82",
108
+ "@bike4mind/mcp-server-b4m-proxy": "1.0.1-feat-server-side-tool-execution.17096+d6b936a82",
109
+ "@bike4mind/services": "2.32.2-feat-server-side-tool-execution.17096+d6b936a82",
110
+ "@bike4mind/utils": "2.1.1-feat-server-side-tool-execution.17096+d6b936a82",
109
111
  "@types/diff": "^5.0.9",
110
112
  "@types/jsonwebtoken": "^9.0.4",
111
113
  "@types/node": "^22.9.0",
@@ -117,5 +119,5 @@
117
119
  "typescript": "^5.9.3",
118
120
  "vitest": "^3.2.4"
119
121
  },
120
- "gitHead": "87596453cb00639e899f648a585324f86425ab17"
122
+ "gitHead": "d6b936a82aed081ee4ef534a0e5260bc9fbe5714"
121
123
  }