@forestadmin/mcp-server 1.5.0 → 1.5.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.
@@ -138,7 +138,10 @@ class ForestOAuthProvider {
138
138
  decoded = jsonwebtoken_1.default.verify(refreshToken, this.authSecret);
139
139
  }
140
140
  catch (error) {
141
- throw new errors_js_1.InvalidTokenError('Invalid or expired refresh token');
141
+ if (error instanceof jsonwebtoken_1.default.TokenExpiredError) {
142
+ throw new errors_js_1.InvalidGrantError('Refresh token has expired');
143
+ }
144
+ throw new errors_js_1.InvalidGrantError('Invalid refresh token');
142
145
  }
143
146
  // Validate token type
144
147
  if (decoded.type !== 'refresh') {
@@ -252,4 +255,4 @@ class ForestOAuthProvider {
252
255
  }
253
256
  }
254
257
  exports.default = ForestOAuthProvider;
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LW9hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1vYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHlGQUFzRTtBQUN0RSwrRUFNeUQ7QUFDekQsZ0VBQXdDO0FBVXhDOztHQUVHO0FBQ0gsTUFBcUIsbUJBQW1CO0lBVXRDLFlBQVksRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxHQUNxQjtRQXdXN0Isd0RBQXdEO1FBQ3hELDRCQUF1QixHQUFHLElBQUksQ0FBQztRQXhXN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLDRCQUF1QixFQUFDO1lBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLDRFQUE0RTtZQUM1RSxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsd0RBQXdELEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFF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
258
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9yZXN0LW9hdXRoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ZvcmVzdC1vYXV0aC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWVBLHlGQUFzRTtBQUN0RSwrRUFPeUQ7QUFDekQsZ0VBQXdDO0FBVXhDOztHQUVHO0FBQ0gsTUFBcUIsbUJBQW1CO0lBVXRDLFlBQVksRUFDVixlQUFlLEVBQ2YsWUFBWSxFQUNaLFNBQVMsRUFDVCxVQUFVLEVBQ1YsTUFBTSxHQUNxQjtRQTRXN0Isd0RBQXdEO1FBQ3hELDRCQUF1QixHQUFHLElBQUksQ0FBQztRQTVXN0IsSUFBSSxDQUFDLGVBQWUsR0FBRyxlQUFlLENBQUM7UUFDdkMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFBLDRCQUF1QixFQUFDO1lBQzFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUNyQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELEtBQUssQ0FBQyxVQUFVO1FBQ2QsSUFBSSxDQUFDO1lBQ0gsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztRQUNsQyxDQUFDO1FBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztZQUNmLDRFQUE0RTtZQUM1RSxzRkFBc0Y7WUFDdEYsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsd0RBQXdELEtBQUssRUFBRSxDQUFDLENBQUM7UUFDdkYsQ0FBQztJQUNILENBQUM7SUFFTyxLQUFLLENBQUMsa0JBQWtCO1FBQzlCLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFF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
@@ -0,0 +1,10 @@
1
+ import type { ForestServerClient } from './types';
2
+ import ForestServerClientImpl from './mcp-http-client';
3
+ export interface CreateForestServerClientOptions {
4
+ forestServerUrl: string;
5
+ envSecret?: string;
6
+ }
7
+ export declare function createForestServerClient(options: CreateForestServerClientOptions): ForestServerClient;
8
+ export { ForestServerClientImpl };
9
+ export type { ActivityLogAction, ActivityLogResponse, ActivityLogsServiceInterface, ActivityLogType, CreateActivityLogParams, ForestServerClient, UpdateActivityLogStatusParams, ForestSchemaCollection, ForestSchemaField, ForestSchemaAction, SchemaServiceInterface, } from './types';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.ForestServerClientImpl = void 0;
7
+ exports.createForestServerClient = createForestServerClient;
8
+ const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
9
+ const mcp_http_client_1 = __importDefault(require("./mcp-http-client"));
10
+ exports.ForestServerClientImpl = mcp_http_client_1.default;
11
+ function createForestServerClient(options) {
12
+ if (!options.envSecret) {
13
+ throw new Error('envSecret is required to create ForestServerClient');
14
+ }
15
+ const schemaService = new forestadmin_client_1.SchemaService({
16
+ forestServerUrl: options.forestServerUrl,
17
+ envSecret: options.envSecret,
18
+ });
19
+ const activityLogsService = new forestadmin_client_1.ActivityLogsService({
20
+ forestServerUrl: options.forestServerUrl,
21
+ headers: { 'Forest-Application-Source': 'MCP' },
22
+ });
23
+ return new mcp_http_client_1.default(schemaService, activityLogsService);
24
+ }
25
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaHR0cC1jbGllbnQvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBV0EsNERBaUJDO0FBMUJELHdFQUFxRjtBQUVyRix3RUFBdUQ7QUEwQjlDLGlDQTFCRix5QkFBc0IsQ0EwQkU7QUFuQi9CLFNBQWdCLHdCQUF3QixDQUN0QyxPQUF3QztJQUV4QyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0RBQW9ELENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxrQ0FBYSxDQUFDO1FBQ3RDLGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4QyxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVM7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsTUFBTSxtQkFBbUIsR0FBRyxJQUFJLHdDQUFtQixDQUFDO1FBQ2xELGVBQWUsRUFBRSxPQUFPLENBQUMsZUFBZTtRQUN4QyxPQUFPLEVBQUUsRUFBRSwyQkFBMkIsRUFBRSxLQUFLLEVBQUU7S0FDaEQsQ0FBQyxDQUFDO0lBRUgsT0FBTyxJQUFJLHlCQUFzQixDQUFDLGFBQWEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3hFLENBQUMifQ==
@@ -0,0 +1,14 @@
1
+ import type { ActivityLogResponse, ActivityLogsServiceInterface, CreateActivityLogParams, ForestSchemaCollection, ForestServerClient, SchemaServiceInterface, UpdateActivityLogStatusParams } from './types';
2
+ /**
3
+ * Default implementation of ForestServerClient that uses SchemaService and ActivityLogsService.
4
+ * This provides a convenient API for MCP server operations.
5
+ */
6
+ export default class ForestServerClientImpl implements ForestServerClient {
7
+ private readonly schemaService;
8
+ private readonly activityLogsService;
9
+ constructor(schemaService: SchemaServiceInterface, activityLogsService: ActivityLogsServiceInterface);
10
+ fetchSchema(): Promise<ForestSchemaCollection[]>;
11
+ createActivityLog(params: CreateActivityLogParams): Promise<ActivityLogResponse>;
12
+ updateActivityLogStatus(params: UpdateActivityLogStatusParams): Promise<void>;
13
+ }
14
+ //# sourceMappingURL=mcp-http-client.d.ts.map
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Default implementation of ForestServerClient that uses SchemaService and ActivityLogsService.
5
+ * This provides a convenient API for MCP server operations.
6
+ */
7
+ class ForestServerClientImpl {
8
+ constructor(schemaService, activityLogsService) {
9
+ this.schemaService = schemaService;
10
+ this.activityLogsService = activityLogsService;
11
+ }
12
+ async fetchSchema() {
13
+ return this.schemaService.getSchema();
14
+ }
15
+ async createActivityLog(params) {
16
+ return this.activityLogsService.createActivityLog(params);
17
+ }
18
+ async updateActivityLogStatus(params) {
19
+ return this.activityLogsService.updateActivityLogStatus(params);
20
+ }
21
+ }
22
+ exports.default = ForestServerClientImpl;
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWNwLWh0dHAtY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2h0dHAtY2xpZW50L21jcC1odHRwLWNsaWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQVVBOzs7R0FHRztBQUNILE1BQXFCLHNCQUFzQjtJQUN6QyxZQUNtQixhQUFxQyxFQUNyQyxtQkFBaUQ7UUFEakQsa0JBQWEsR0FBYixhQUFhLENBQXdCO1FBQ3JDLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBOEI7SUFDakUsQ0FBQztJQUVKLEtBQUssQ0FBQyxXQUFXO1FBQ2YsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxLQUFLLENBQUMsaUJBQWlCLENBQUMsTUFBK0I7UUFDckQsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxNQUFxQztRQUNqRSxPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNsRSxDQUFDO0NBQ0Y7QUFqQkQseUNBaUJDIn0=
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
1
  export { default as ForestMCPServer } from './server';
2
2
  export type { ForestMCPServerOptions, HttpCallback } from './server';
3
3
  export { MCP_PATHS, isMcpRoute } from './mcp-paths';
4
+ export { ForestServerClientImpl, createForestServerClient } from './http-client';
5
+ export type { ForestServerClient, ActivityLogsServiceInterface, SchemaServiceInterface, CreateForestServerClientOptions, } from './http-client';
4
6
  //# sourceMappingURL=index.d.ts.map
package/dist/index.js CHANGED
@@ -3,11 +3,14 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.isMcpRoute = exports.MCP_PATHS = exports.ForestMCPServer = void 0;
6
+ exports.createForestServerClient = exports.ForestServerClientImpl = exports.isMcpRoute = exports.MCP_PATHS = exports.ForestMCPServer = void 0;
7
7
  // Library exports only - no side effects
8
8
  var server_1 = require("./server");
9
9
  Object.defineProperty(exports, "ForestMCPServer", { enumerable: true, get: function () { return __importDefault(server_1).default; } });
10
10
  var mcp_paths_1 = require("./mcp-paths");
11
11
  Object.defineProperty(exports, "MCP_PATHS", { enumerable: true, get: function () { return mcp_paths_1.MCP_PATHS; } });
12
12
  Object.defineProperty(exports, "isMcpRoute", { enumerable: true, get: function () { return mcp_paths_1.isMcpRoute; } });
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLG1DQUFzRDtBQUE3QywwSEFBQSxPQUFPLE9BQW1CO0FBRW5DLHlDQUFvRDtBQUEzQyxzR0FBQSxTQUFTLE9BQUE7QUFBRSx1R0FBQSxVQUFVLE9BQUEifQ==
13
+ var http_client_1 = require("./http-client");
14
+ Object.defineProperty(exports, "ForestServerClientImpl", { enumerable: true, get: function () { return http_client_1.ForestServerClientImpl; } });
15
+ Object.defineProperty(exports, "createForestServerClient", { enumerable: true, get: function () { return http_client_1.createForestServerClient; } });
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEseUNBQXlDO0FBQ3pDLG1DQUFzRDtBQUE3QywwSEFBQSxPQUFPLE9BQW1CO0FBRW5DLHlDQUFvRDtBQUEzQyxzR0FBQSxTQUFTLE9BQUE7QUFBRSx1R0FBQSxVQUFVLE9BQUE7QUFDOUIsNkNBQWlGO0FBQXhFLHFIQUFBLHNCQUFzQixPQUFBO0FBQUUsdUhBQUEsd0JBQXdCLE9BQUEifQ==
package/dist/server.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import './polyfills';
2
+ import type { ForestServerClient } from './http-client';
2
3
  import type { Express } from 'express';
3
4
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
4
5
  import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
@@ -20,18 +21,14 @@ export interface ForestMCPServerOptions {
20
21
  authSecret?: string;
21
22
  /** Optional logger function. Defaults to console logging. */
22
23
  logger?: Logger;
24
+ /** Optional Forest server client for dependency injection (from agent integration) */
25
+ forestServerClient?: ForestServerClient;
23
26
  }
24
27
  /**
25
28
  * Forest Admin MCP Server
26
29
  *
27
30
  * This server provides HTTP REST API access to Forest Admin operations
28
31
  * with OAuth authentication support.
29
- *
30
- * Environment Variables (used as fallback when options not provided):
31
- * - FOREST_ENV_SECRET: Your Forest Admin environment secret (required)
32
- * - FOREST_AUTH_SECRET: Your Forest Admin authentication secret, it must be the same one as the one on your agent (required)
33
- * - FOREST_SERVER_URL: Forest Admin server URL (optional)
34
- * - MCP_SERVER_PORT: Port for the HTTP server (default: 3931)
35
32
  */
36
33
  export default class ForestMCPServer {
37
34
  mcpServer: McpServer;
@@ -40,10 +37,12 @@ export default class ForestMCPServer {
40
37
  expressApp?: Express;
41
38
  forestServerUrl: string;
42
39
  forestAppUrl: string;
40
+ forestServerClient: ForestServerClient;
43
41
  private envSecret?;
44
42
  private authSecret?;
45
43
  private logger;
46
44
  constructor(options?: ForestMCPServerOptions);
45
+ private createDefaultForestServerClient;
47
46
  private setupTools;
48
47
  private ensureSecretsAreSet;
49
48
  /**
package/dist/server.js CHANGED
@@ -50,6 +50,7 @@ const cors_1 = __importDefault(require("cors"));
50
50
  const express_1 = __importDefault(require("express"));
51
51
  const http = __importStar(require("http"));
52
52
  const forest_oauth_provider_1 = __importDefault(require("./forest-oauth-provider"));
53
+ const http_client_1 = require("./http-client");
53
54
  const mcp_paths_1 = require("./mcp-paths");
54
55
  const create_1 = __importDefault(require("./tools/create"));
55
56
  const delete_1 = __importDefault(require("./tools/delete"));
@@ -75,6 +76,7 @@ const SAFE_ARGUMENTS_FOR_LOGGING = {
75
76
  list: ['collectionName'],
76
77
  listRelated: ['collectionName', 'relationName', 'parentRecordId'],
77
78
  create: ['collectionName'],
79
+ update: ['collectionName', 'recordId'],
78
80
  delete: ['collectionName', 'recordIds'],
79
81
  describeCollection: ['collectionName'],
80
82
  };
@@ -83,12 +85,6 @@ const SAFE_ARGUMENTS_FOR_LOGGING = {
83
85
  *
84
86
  * This server provides HTTP REST API access to Forest Admin operations
85
87
  * with OAuth authentication support.
86
- *
87
- * Environment Variables (used as fallback when options not provided):
88
- * - FOREST_ENV_SECRET: Your Forest Admin environment secret (required)
89
- * - FOREST_AUTH_SECRET: Your Forest Admin authentication secret, it must be the same one as the one on your agent (required)
90
- * - FOREST_SERVER_URL: Forest Admin server URL (optional)
91
- * - MCP_SERVER_PORT: Port for the HTTP server (default: 3931)
92
88
  */
93
89
  class ForestMCPServer {
94
90
  constructor(options) {
@@ -97,27 +93,35 @@ class ForestMCPServer {
97
93
  this.envSecret = options?.envSecret;
98
94
  this.authSecret = options?.authSecret;
99
95
  this.logger = options?.logger || defaultLogger;
96
+ // Use injected forestServerClient or create default
97
+ this.forestServerClient = options?.forestServerClient ?? this.createDefaultForestServerClient();
100
98
  this.mcpServer = new mcp_js_1.McpServer({
101
99
  name: version_1.NAME,
102
100
  version: version_1.VERSION,
103
101
  });
104
102
  }
103
+ createDefaultForestServerClient() {
104
+ return (0, http_client_1.createForestServerClient)({
105
+ forestServerUrl: this.forestServerUrl,
106
+ envSecret: this.envSecret,
107
+ });
108
+ }
105
109
  async setupTools() {
106
110
  let collectionNames = [];
107
111
  try {
108
- const schema = await (0, schema_fetcher_1.fetchForestSchema)(this.forestServerUrl);
112
+ const schema = await (0, schema_fetcher_1.fetchForestSchema)(this.forestServerClient);
109
113
  collectionNames = (0, schema_fetcher_1.getCollectionNames)(schema);
110
114
  }
111
115
  catch (error) {
112
- this.logger('Warn', `Failed to fetch forest schema, collection names will not be available: ${error}`);
116
+ this.logger('Warn', `Failed to fetch forest schema: ${error}. MCP server will operate in degraded mode without collection name validation.`);
113
117
  }
114
118
  const toolNames = [
115
- (0, describe_collection_1.default)(this.mcpServer, this.forestServerUrl, this.logger, collectionNames),
116
- (0, list_1.default)(this.mcpServer, this.forestServerUrl, this.logger, collectionNames),
117
- (0, list_related_1.default)(this.mcpServer, this.forestServerUrl, this.logger, collectionNames),
118
- (0, create_1.default)(this.mcpServer, this.forestServerUrl, this.logger, collectionNames),
119
- (0, update_1.default)(this.mcpServer, this.forestServerUrl, this.logger, collectionNames),
120
- (0, delete_1.default)(this.mcpServer, this.forestServerUrl, this.logger, collectionNames),
119
+ (0, describe_collection_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
120
+ (0, list_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
121
+ (0, list_related_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
122
+ (0, create_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
123
+ (0, update_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
124
+ (0, delete_1.default)(this.mcpServer, this.forestServerClient, this.logger, collectionNames),
121
125
  ];
122
126
  this.logger('Info', `[MCP] Registered ${toolNames.length} tools: ${toolNames.join(', ')}`);
123
127
  }
@@ -350,4 +354,4 @@ class ForestMCPServer {
350
354
  }
351
355
  }
352
356
  exports.default = ForestMCPServer;
353
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCxzRUFBc0U7QUFDdEUsdUJBQXFCO0FBSXJCLDhGQUFtRztBQUNuRyxzRkFBdUY7QUFDdkYsMEdBQW9HO0FBQ3BHLGtHQUFtRztBQUNuRywrRUFHeUQ7QUFDekQsb0VBQW9FO0FBQ3BFLDBGQUFtRztBQUNuRyxnREFBd0I7QUFDeEIsc0RBQThCO0FBQzlCLDJDQUE2QjtBQUU3QixvRkFBMEQ7QUFDMUQsMkNBQXlDO0FBQ3pDLDREQUErQztBQUMvQyw0REFBK0M7QUFDL0Msc0ZBQXdFO0FBQ3hFLHdEQUEyQztBQUMzQyx3RUFBMEQ7QUFDMUQsNERBQStDO0FBQy9DLDJEQUErRTtBQUMvRSxnRkFBd0U7QUFDeEUsdUNBQTBDO0FBVzFDLFNBQVMsZUFBZSxDQUFDLEtBQWU7SUFDdEMsSUFBSSxLQUFLLEtBQUssT0FBTztRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDcEYsSUFBSSxLQUFLLEtBQUssTUFBTTtRQUFFLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFFbEYsT0FBTyxDQUFDLEdBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUM5RCxDQUFDO0FBRUQsTUFBTSxhQUFhLEdBQVcsQ0FBQyxLQUFLLEVBQUUsT0FBTyxFQUFFLEVBQUU7SUFDL0MsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2xDLENBQUMsQ0FBQztB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
357
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3NlcnZlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHNEQUFzRDtBQUN0RCxzRUFBc0U7QUFDdEUsdUJBQXFCO0FBS3JCLDhGQUFtRztBQUNuRyxzRkFBdUY7QUFDdkYsMEdBQW9HO0FBQ3BHLGtHQUFtRztBQUNuRywrRUFHeUQ7QUFDekQsb0VBQW9FO0FBQ3BFLDBGQUFtRztBQUNuRyxnREFBd0I7QUFDeEIsc0RBQThCO0FBQzlCLDJDQUE2QjtBQUU3QixvRkFBMEQ7QUFDMUQsK0NBQXlEO0FBQ3pELDJDQUF5QztBQUN6Qyw0REFBK0M7QUFDL0MsNERBQStDO0FBQy9DLHNGQUF3RTtBQUN4RSx3REFBMkM7QUFDM0Msd0VBQTBEO0FBQzFELDREQUErQztBQUMvQywyREFBK0U7QUFDL0UsZ0ZBQXdFO0FBQ3hFLHVDQUEwQztBQVcxQyxTQUFTLGVBQWUsQ0FBQyxLQUFlO0lBQ3RDLElBQUksS0FBSyxLQUFLLE9BQU87UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQ3BGLElBQUksS0FBSyxLQUFLLE1BQU07UUFBRSxPQUFPLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBRWxGLE9BQU8sQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUVELE1BQU0sYUFBYSxHQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO0lBQy9DLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNs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
@@ -1,4 +1,5 @@
1
+ import type { ForestServerClient } from '../http-client';
1
2
  import type { Logger } from '../server';
2
3
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export default function declareCreateTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
4
+ export default function declareCreateTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
4
5
  //# sourceMappingURL=create.d.ts.map
@@ -25,7 +25,7 @@ function createArgumentShape(collectionNames) {
25
25
  attributes: attributesWithPreprocess.describe('The attributes of the record to create. Must be an object with field names as keys.'),
26
26
  };
27
27
  }
28
- function declareCreateTool(mcpServer, forestServerUrl, logger, collectionNames = []) {
28
+ function declareCreateTool(mcpServer, forestServerClient, logger, collectionNames = []) {
29
29
  const argumentShape = createArgumentShape(collectionNames);
30
30
  return (0, tool_with_logging_1.default)(mcpServer, 'create', {
31
31
  title: 'Create a record',
@@ -34,7 +34,7 @@ function declareCreateTool(mcpServer, forestServerUrl, logger, collectionNames =
34
34
  }, async (options, extra) => {
35
35
  const { rpcClient } = (0, agent_caller_1.default)(extra);
36
36
  return (0, with_activity_log_1.default)({
37
- forestServerUrl,
37
+ forestServerClient,
38
38
  request: extra,
39
39
  action: 'create',
40
40
  context: { collectionName: options.collectionName },
@@ -48,4 +48,4 @@ function declareCreateTool(mcpServer, forestServerUrl, logger, collectionNames =
48
48
  });
49
49
  }, logger);
50
50
  }
51
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQW1DQSxvQ0FvQ0M7QUFwRUQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELCtFQUErRTtBQUMvRSxNQUFNLHdCQUF3QixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQU90QyxTQUFTLG1CQUFtQixDQUFDLGVBQXlCO0lBQ3BELE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLENBQzNDLHFGQUFxRixDQUN0RjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBd0IsaUJBQWlCLENBQ3ZDLFNBQW9CLEVBQ3BCLGVBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxrQkFBNEIsRUFBRTtJQUU5QixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUUzRCxPQUFPLElBQUEsMkJBQXVCLEVBQzVCLFNBQVMsRUFDVCxRQUFRLEVBQ1I7UUFDRSxLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLFdBQVcsRUFBRSxrREFBa0Q7UUFDL0QsV0FBVyxFQUFFLGFBQWE7S0FDM0IsRUFDRCxLQUFLLEVBQUUsT0FBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN2QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBQSxzQkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLE9BQU8sSUFBQSwyQkFBZSxFQUFDO1lBQ3JCLGVBQWU7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxFQUFFO1lBQ25ELE1BQU07WUFDTixTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUztxQkFDM0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7cUJBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRTlCLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDIn0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQW9DQSxvQ0FvQ0M7QUFwRUQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELCtFQUErRTtBQUMvRSxNQUFNLHdCQUF3QixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQU90QyxTQUFTLG1CQUFtQixDQUFDLGVBQXlCO0lBQ3BELE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLENBQzNDLHFGQUFxRixDQUN0RjtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBd0IsaUJBQWlCLENBQ3ZDLFNBQW9CLEVBQ3BCLGtCQUFzQyxFQUN0QyxNQUFjLEVBQ2Qsa0JBQTRCLEVBQUU7SUFFOUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFBLDJCQUF1QixFQUM1QixTQUFTLEVBQ1QsUUFBUSxFQUNSO1FBQ0UsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixXQUFXLEVBQUUsa0RBQWtEO1FBQy9ELFdBQVcsRUFBRSxhQUFhO0tBQzNCLEVBQ0QsS0FBSyxFQUFFLE9BQXVCLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUEsMkJBQWUsRUFBQztZQUNyQixrQkFBa0I7WUFDbEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUNuRCxNQUFNO1lBQ04sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVM7cUJBQzNCLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUU5QixPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUMzRSxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
@@ -1,4 +1,5 @@
1
+ import type { ForestServerClient } from '../http-client';
1
2
  import type { Logger } from '../server';
2
3
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export default function declareDeleteTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
4
+ export default function declareDeleteTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
4
5
  //# sourceMappingURL=delete.d.ts.map
@@ -16,7 +16,7 @@ function createArgumentShape(collectionNames) {
16
16
  .describe('The IDs of the records to delete.'),
17
17
  };
18
18
  }
19
- function declareDeleteTool(mcpServer, forestServerUrl, logger, collectionNames = []) {
19
+ function declareDeleteTool(mcpServer, forestServerClient, logger, collectionNames = []) {
20
20
  const argumentShape = createArgumentShape(collectionNames);
21
21
  return (0, tool_with_logging_1.default)(mcpServer, 'delete', {
22
22
  title: 'Delete records',
@@ -27,7 +27,7 @@ function declareDeleteTool(mcpServer, forestServerUrl, logger, collectionNames =
27
27
  // Cast to satisfy the type system - the API accepts both string[] and number[]
28
28
  const recordIds = options.recordIds;
29
29
  return (0, with_activity_log_1.default)({
30
- forestServerUrl,
30
+ forestServerClient,
31
31
  request: extra,
32
32
  action: 'delete',
33
33
  context: {
@@ -44,4 +44,4 @@ function declareDeleteTool(mcpServer, forestServerUrl, logger, collectionNames =
44
44
  });
45
45
  }, logger);
46
46
  }
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2RlbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdCQSxvQ0EwQ0M7QUEvREQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBT3pELFNBQVMsbUJBQW1CLENBQUMsZUFBeUI7SUFDcEQsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDNUYsU0FBUyxFQUFFLE9BQUM7YUFDVCxLQUFLLENBQUMsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3hDLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQXdCLGlCQUFpQixDQUN2QyxTQUFvQixFQUNwQixlQUF1QixFQUN2QixNQUFjLEVBQ2Qsa0JBQTRCLEVBQUU7SUFFOUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFBLDJCQUF1QixFQUM1QixTQUFTLEVBQ1QsUUFBUSxFQUNSO1FBQ0UsS0FBSyxFQUFFLGdCQUFnQjtRQUN2QixXQUFXLEVBQUUsMkRBQTJEO1FBQ3hFLFdBQVcsRUFBRSxhQUFhO0tBQzNCLEVBQ0QsS0FBSyxFQUFFLE9BQXVCLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUV6QywrRUFBK0U7UUFDL0UsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQWdDLENBQUM7UUFFM0QsT0FBTyxJQUFBLDJCQUFlLEVBQUM7WUFDckIsZUFBZTtZQUNmLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLFFBQVE7WUFDaEIsT0FBTyxFQUFFO2dCQUNQLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYztnQkFDdEMsU0FBUzthQUNWO1lBQ0QsTUFBTTtZQUNOLFNBQVMsRUFBRSxLQUFLLElBQUksRUFBRTtnQkFDcEIsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBRXJFLE9BQU87b0JBQ0wsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsWUFBWSxFQUFFLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUM7aUJBQ3RGLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxFQUNELE1BQU0sQ0FDUCxDQUFDO0FBQ0osQ0FBQyJ9
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVsZXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2RlbGV0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXlCQSxvQ0EwQ0M7QUEvREQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBT3pELFNBQVMsbUJBQW1CLENBQUMsZUFBeUI7SUFDcEQsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7UUFDNUYsU0FBUyxFQUFFLE9BQUM7YUFDVCxLQUFLLENBQUMsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQ3hDLFFBQVEsQ0FBQyxtQ0FBbUMsQ0FBQztLQUNqRCxDQUFDO0FBQ0osQ0FBQztBQUVELFNBQXdCLGlCQUFpQixDQUN2QyxTQUFvQixFQUNwQixrQkFBc0MsRUFDdEMsTUFBYyxFQUNkLGtCQUE0QixFQUFFO0lBRTlCLE1BQU0sYUFBYSxHQUFHLG1CQUFtQixDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTNELE9BQU8sSUFBQSwyQkFBdUIsRUFDNUIsU0FBUyxFQUNULFFBQVEsRUFDUjtRQUNFLEtBQUssRUFBRSxnQkFBZ0I7UUFDdkIsV0FBVyxFQUFFLDJEQUEyRDtRQUN4RSxXQUFXLEVBQUUsYUFBYTtLQUMzQixFQUNELEtBQUssRUFBRSxPQUF1QixFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ3ZDLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLHNCQUFXLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsK0VBQStFO1FBQy9FLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFnQyxDQUFDO1FBRTNELE9BQU8sSUFBQSwyQkFBZSxFQUFDO1lBQ3JCLGtCQUFrQjtZQUNsQixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7Z0JBQ3RDLFNBQVM7YUFDVjtZQUNELE1BQU07WUFDTixTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sU0FBUyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO2dCQUVyRSxPQUFPO29CQUNMLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO2lCQUN0RixDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
@@ -1,4 +1,5 @@
1
+ import type { ForestServerClient } from '../http-client';
2
+ import type { Logger } from '../server';
1
3
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
- import { Logger } from '../server';
3
- export default function declareDescribeCollectionTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
4
+ export default function declareDescribeCollectionTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
4
5
  //# sourceMappingURL=describe-collection.d.ts.map
@@ -52,7 +52,7 @@ function mapRelationType(relationship) {
52
52
  return relationship || 'unknown';
53
53
  }
54
54
  }
55
- function declareDescribeCollectionTool(mcpServer, forestServerUrl, logger, collectionNames = []) {
55
+ function declareDescribeCollectionTool(mcpServer, forestServerClient, logger, collectionNames = []) {
56
56
  const argumentShape = createDescribeCollectionArgumentShape(collectionNames);
57
57
  return (0, tool_with_logging_1.default)(mcpServer, 'describeCollection', {
58
58
  title: 'Describe a collection',
@@ -61,14 +61,14 @@ function declareDescribeCollectionTool(mcpServer, forestServerUrl, logger, colle
61
61
  }, async (options, extra) => {
62
62
  const { rpcClient } = (0, agent_caller_1.default)(extra);
63
63
  return (0, with_activity_log_1.default)({
64
- forestServerUrl,
64
+ forestServerClient,
65
65
  request: extra,
66
66
  action: 'describeCollection',
67
67
  context: { collectionName: options.collectionName },
68
68
  logger,
69
69
  operation: async () => {
70
70
  // Get schema from forest server (relations, isFilterable, isSortable, etc.)
71
- const schema = await (0, schema_fetcher_1.fetchForestSchema)(forestServerUrl);
71
+ const schema = await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient);
72
72
  const schemaFields = (0, schema_fetcher_1.getFieldsOfCollection)(schema, options.collectionName);
73
73
  // Try to get capabilities from agent (may be unavailable on older versions)
74
74
  const collectionCapabilities = await tryFetchCapabilities(rpcClient, options.collectionName, logger);
@@ -133,4 +133,4 @@ function declareDescribeCollectionTool(mcpServer, forestServerUrl, logger, colle
133
133
  });
134
134
  }, logger);
135
135
  }
136
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9kZXNjcmliZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBK0VBLGdEQXlHQztBQXRMRCw2QkFBd0I7QUFHeEIseUVBQWdEO0FBQ2hELDREQUlpQztBQUNqQyxtRkFBaUU7QUFDakUsbUZBQXlEO0FBVXpELFNBQVMscUNBQXFDLENBQUMsZUFBeUI7SUFDdEUsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7S0FDN0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUNqQyxTQUFzRCxFQUN0RCxjQUFzQixFQUN0QixNQUFjO0lBRWQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9FLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUNKLE9BQU8sRUFDUCxtREFBbUQsY0FBYyx5QkFBeUIsQ0FDM0YsQ0FBQztZQUVG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
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzY3JpYmUtY29sbGVjdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9kZXNjcmliZS1jb2xsZWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0ZBLGdEQXlHQztBQXJMRCw2QkFBd0I7QUFFeEIseUVBQWdEO0FBQ2hELDREQUlpQztBQUNqQyxtRkFBaUU7QUFDakUsbUZBQXlEO0FBVXpELFNBQVMscUNBQXFDLENBQUMsZUFBeUI7SUFDdEUsT0FBTztRQUNMLGNBQWMsRUFDWixlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBQyxDQUFDLElBQUksQ0FBQyxlQUF3QyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUU7S0FDN0YsQ0FBQztBQUNKLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsS0FBSyxVQUFVLG9CQUFvQixDQUNqQyxTQUFzRCxFQUN0RCxjQUFzQixFQUN0QixNQUFjO0lBRWQsSUFBSSxDQUFDO1FBQ0gsTUFBTSxZQUFZLEdBQUcsTUFBTSxTQUFTLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLFlBQVksRUFBRSxDQUFDO1FBRS9FLE9BQU8sWUFBWSxDQUFDO0lBQ3RCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxZQUFZLEdBQUcsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVFLE1BQU0sS0FBSyxHQUFHLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUVqRixJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsTUFBTSxDQUNKLE9BQU8sRUFDUCxtREFBbUQsY0FBYyx5QkFBeUIsQ0FDM0YsQ0FBQztZQUVGLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxNQUFNLENBQUMsT0FBTyxFQUFFLCtDQUErQyxjQUFjLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMzRixNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLGVBQWUsQ0FBQyxZQUFnQztJQUN2RCxRQUFRLFlBQVksRUFBRSxDQUFDO1FBQ3JCLEtBQUssU0FBUztZQUNaLE9BQU8sYUFBYSxDQUFDO1FBQ3ZCLEtBQUssZUFBZTtZQUNsQixPQUFPLGNBQWMsQ0FBQztRQUN4QixLQUFLLFdBQVc7WUFDZCxPQUFPLGFBQWEsQ0FBQztRQUN2QixLQUFLLFFBQVE7WUFDWCxPQUFPLFlBQVksQ0FBQztRQUN0QjtZQUNFLE9BQU8sWUFBWSxJQUFJLFNBQVMsQ0FBQztJQUNyQyxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQXdCLDZCQUE2QixDQUNuRCxTQUFvQixFQUNwQixrQkFBc0MsRUFDdEMsTUFBYyxFQUNkLGtCQUE0QixFQUFFO0lBRTlCLE1BQU0sYUFBYSxHQUFHLHFDQUFxQyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRTdFLE9BQU8sSUFBQSwyQkFBdUIsRUFDNUIsU0FBUyxFQUNULG9CQUFvQixFQUNwQjtRQUNFLEtBQUssRUFBRSx1QkFBdUI7UUFDOUIsV0FBVyxFQUNULG9NQUFvTTtRQUN0TSxXQUFXLEVBQUUsYUFBYTtLQUMzQixFQUNELEtBQUssRUFBRSxPQUFtQyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQ25ELE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFBLHNCQUFXLEVBQUMsS0FBSyxDQUFDLENBQUM7UUFFekMsT0FBTyxJQUFBLDJCQUFlLEVBQUM7WUFDckIsa0JBQWtCO1lBQ2xCLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLG9CQUFvQjtZQUM1QixPQUFPLEVBQUUsRUFBRSxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWMsRUFBRTtZQUNuRCxNQUFNO1lBQ04sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNwQiw0RUFBNEU7Z0JBQzVFLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBQSxrQ0FBaUIsRUFBQyxrQkFBa0IsQ0FBQyxDQUFDO2dCQUMzRCxNQUFNLFlBQVksR0FBRyxJQUFBLHNDQUFxQixFQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBRTNFLDRFQUE0RTtnQkFDNUUsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLG9CQUFvQixDQUN2RCxTQUFTLEVBQ1QsT0FBTyxDQUFDLGNBQWMsRUFDdEIsTUFBTSxDQUNQLENBQUM7Z0JBRUYsb0ZBQW9GO2dCQUNwRixNQUFNLE1BQU0sR0FBRyxzQkFBc0IsRUFBRSxNQUFNO29CQUMzQyxDQUFDLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTt3QkFDM0MsTUFBTSxXQUFXLEdBQUcsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO3dCQUV0RSxPQUFPOzRCQUNMLElBQUksRUFBRSxRQUFRLENBQUMsSUFBSTs0QkFDbkIsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJOzRCQUNuQixTQUFTLEVBQUUsUUFBUSxDQUFDLFNBQVM7NEJBQzdCLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxJQUFJLEtBQUs7NEJBQ2hELFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxJQUFJLEtBQUs7NEJBQzVDLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxJQUFJLEtBQUs7NEJBQzVDLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxJQUFJLEtBQUs7eUJBQzdDLENBQUM7b0JBQ0osQ0FBQyxDQUFDO29CQUNKLENBQUMsQ0FBQyxZQUFZO3lCQUNULE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLDJCQUEyQjt5QkFDeEQsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDbkIsSUFBSSxFQUFFLFdBQVcsQ0FBQyxLQUFLO3dCQUN2QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7d0JBQ3RCLFNBQVMsRUFBRSxJQUFJLEVBQUUsMkNBQTJDO3dCQUM1RCxZQUFZLEVBQUUsV0FBVyxDQUFDLFlBQVk7d0JBQ3RDLFVBQVUsRUFBRSxXQUFXLENBQUMsVUFBVTt3QkFDbEMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxVQUFVO3dCQUNsQyxVQUFVLEVBQUUsV0FBVyxDQUFDLFVBQVUsSUFBSSxLQUFLO3FCQUM1QyxDQUFDLENBQUMsQ0FBQztnQkFFVixnQ0FBZ0M7Z0JBQ2hDLE1BQU0sU0FBUyxHQUFHLFlBQVk7cUJBQzNCLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUM7cUJBQzNCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7b0JBQ1QsSUFBSSxFQUFFLENBQUMsQ0FBQyxLQUFLO29CQUNiLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQztvQkFDckMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSTtpQkFDckQsQ0FBQyxDQUFDLENBQUM7Z0JBRU4sOEJBQThCO2dCQUM5QixNQUFNLGFBQWEsR0FBRyxJQUFBLHVDQUFzQixFQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7Z0JBQzdFLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxJQUFJLEVBQUUsTUFBTSxDQUFDLElBQUk7b0JBQ2pCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxFQUFFLGdDQUFnQztvQkFDbkQsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXLElBQUksSUFBSTtvQkFDdkMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUk7b0JBQ3RELFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUTtpQkFDMUIsQ0FBQyxDQUFDLENBQUM7Z0JBRUosTUFBTSxNQUFNLEdBQUc7b0JBQ2IsVUFBVSxFQUFFLE9BQU8sQ0FBQyxjQUFjO29CQUNsQyxNQUFNO29CQUNOLFNBQVM7b0JBQ1QsT0FBTztvQkFDUCxLQUFLLEVBQUU7d0JBQ0wscUJBQXFCLEVBQUUsQ0FBQyxDQUFDLHNCQUFzQjt3QkFDL0MsR0FBRyxDQUFDLHNCQUFzQjs0QkFDeEIsQ0FBQyxDQUFDLEVBQUU7NEJBQ0osQ0FBQyxDQUFDO2dDQUNFLElBQUksRUFBRSwyRUFBMkU7NkJBQ2xGLENBQUM7cUJBQ1A7aUJBQ0YsQ0FBQztnQkFFRixPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDaEYsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
@@ -1,4 +1,5 @@
1
+ import type { ForestServerClient } from '../http-client';
1
2
  import type { Logger } from '../server';
2
3
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export default function declareListRelatedTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
4
+ export default function declareListRelatedTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
4
5
  //# sourceMappingURL=list-related.d.ts.map
@@ -21,10 +21,10 @@ function createHasManyArgumentShape(collectionNames) {
21
21
  * Creates an error enhancer for list-related operations.
22
22
  * Enhances error messages with helpful context about available relations and sortable fields.
23
23
  */
24
- function createErrorEnhancer(forestServerUrl, options, logger) {
24
+ function createErrorEnhancer(forestServerClient, options, logger) {
25
25
  return async (errorMessage) => {
26
26
  try {
27
- const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(forestServerUrl), options.collectionName);
27
+ const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient), options.collectionName);
28
28
  const toManyRelations = fields.filter(field => field.relationship === 'HasMany' || field.relationship === 'BelongsToMany');
29
29
  if (errorMessage?.toLowerCase()?.includes('not found') &&
30
30
  !toManyRelations.some(field => field.field === options.relationName)) {
@@ -43,7 +43,7 @@ function createErrorEnhancer(forestServerUrl, options, logger) {
43
43
  return errorMessage;
44
44
  };
45
45
  }
46
- function declareListRelatedTool(mcpServer, forestServerUrl, logger, collectionNames = []) {
46
+ function declareListRelatedTool(mcpServer, forestServerClient, logger, collectionNames = []) {
47
47
  const listArgumentShape = createHasManyArgumentShape(collectionNames);
48
48
  return (0, tool_with_logging_1.default)(mcpServer, 'listRelated', {
49
49
  title: 'List records from a relation',
@@ -60,7 +60,7 @@ function declareListRelatedTool(mcpServer, forestServerUrl, logger, collectionNa
60
60
  }
61
61
  const extraLabel = labelParts.length > 0 ? ` with ${labelParts.join(' and ')}` : '';
62
62
  return (0, with_activity_log_1.default)({
63
- forestServerUrl,
63
+ forestServerClient,
64
64
  request: extra,
65
65
  action: 'listRelatedData',
66
66
  context: {
@@ -87,8 +87,8 @@ function declareListRelatedTool(mcpServer, forestServerUrl, logger, collectionNa
87
87
  }
88
88
  return { content: [{ type: 'text', text: JSON.stringify(response) }] };
89
89
  },
90
- errorEnhancer: createErrorEnhancer(forestServerUrl, options, logger),
90
+ errorEnhancer: createErrorEnhancer(forestServerClient, options, logger),
91
91
  });
92
92
  }, logger);
93
93
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWxhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2xpc3QtcmVsYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXVFQSx5Q0FrRUM7QUFwSUQsNkJBQXdCO0FBRXhCLGlDQUFpRDtBQUNqRCx5RUFBZ0Q7QUFDaEQsNERBQW1GO0FBQ25GLG1GQUFpRTtBQUNqRSxtRkFBeUQ7QUFFekQsU0FBUywwQkFBMEIsQ0FBQyxlQUF5QjtJQUMzRCxPQUFPO1FBQ0wsR0FBRyxJQUFBLDhCQUF1QixFQUFDLGVBQWUsQ0FBQztRQUMzQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN4QixjQUFjLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQU9EOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLGVBQXVCLEVBQ3ZCLE9BQXdCLEVBQ3hCLE1BQWM7SUFFZCxPQUFPLEtBQUssRUFBRSxZQUFvQixFQUFFLEVBQUU7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQ0FBcUIsRUFDbEMsTUFBTSxJQUFBLGtDQUFpQixFQUFDLGVBQWUsQ0FBQyxFQUN4QyxPQUFPLENBQUMsY0FBYyxDQUN2QixDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDbkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLGVBQWUsQ0FDcEYsQ0FBQztZQUVGLElBQ0UsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7Z0JBQ2xELENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFD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
94
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1yZWxhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL2xpc3QtcmVsYXRlZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXdFQSx5Q0FrRUM7QUFwSUQsNkJBQXdCO0FBRXhCLGlDQUFpRDtBQUNqRCx5RUFBZ0Q7QUFDaEQsNERBQW1GO0FBQ25GLG1GQUFpRTtBQUNqRSxtRkFBeUQ7QUFFekQsU0FBUywwQkFBMEIsQ0FBQyxlQUF5QjtJQUMzRCxPQUFPO1FBQ0wsR0FBRyxJQUFBLDhCQUF1QixFQUFDLGVBQWUsQ0FBQztRQUMzQyxZQUFZLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUN4QixjQUFjLEVBQUUsT0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztLQUNsRCxDQUFDO0FBQ0osQ0FBQztBQU9EOzs7R0FHRztBQUNILFNBQVMsbUJBQW1CLENBQzFCLGtCQUFzQyxFQUN0QyxPQUF3QixFQUN4QixNQUFjO0lBRWQsT0FBTyxLQUFLLEVBQUUsWUFBb0IsRUFBRSxFQUFFO1FBQ3BDLElBQUksQ0FBQztZQUNILE1BQU0sTUFBTSxHQUFHLElBQUEsc0NBQXFCLEVBQ2xDLE1BQU0sSUFBQSxrQ0FBaUIsRUFBQyxrQkFBa0IsQ0FBQyxFQUMzQyxPQUFPLENBQUMsY0FBYyxDQUN2QixDQUFDO1lBRUYsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDbkMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsWUFBWSxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLGVBQWUsQ0FDcEYsQ0FBQztZQUVGLElBQ0UsWUFBWSxFQUFFLFdBQVcsRUFBRSxFQUFFLFFBQVEsQ0FBQyxXQUFXLENBQUM7Z0JBQ2xELENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxD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
@@ -1,3 +1,4 @@
1
+ import type { ForestServerClient } from '../http-client';
1
2
  import type { Logger } from '../server';
2
3
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
4
  import { z } from 'zod';
@@ -36,6 +37,6 @@ export declare function createListArgumentShape(collectionNames: string[]): {
36
37
  }, z.core.$strip>>;
37
38
  enableCount: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
38
39
  };
39
- export default function declareListTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
40
+ export default function declareListTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
40
41
  export {};
41
42
  //# sourceMappingURL=list.d.ts.map
@@ -62,7 +62,7 @@ function createListArgumentShape(collectionNames) {
62
62
  collectionName: collectionNames.length > 0 ? zod_1.z.enum(collectionNames) : zod_1.z.string(),
63
63
  };
64
64
  }
65
- function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = []) {
65
+ function declareListTool(mcpServer, forestServerClient, logger, collectionNames = []) {
66
66
  const listArgumentShape = createListArgumentShape(collectionNames);
67
67
  return (0, tool_with_logging_1.default)(mcpServer, 'list', {
68
68
  title: 'List records from a collection',
@@ -78,7 +78,7 @@ function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = [
78
78
  actionType = 'filter';
79
79
  }
80
80
  return (0, with_activity_log_1.default)({
81
- forestServerUrl,
81
+ forestServerClient,
82
82
  request: extra,
83
83
  action: actionType,
84
84
  context: { collectionName: options.collectionName },
@@ -103,7 +103,7 @@ function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = [
103
103
  // Enhance "Invalid sort" errors with available sortable fields
104
104
  if (errorMessage?.includes('Invalid sort')) {
105
105
  try {
106
- const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(forestServerUrl), options.collectionName);
106
+ const fields = (0, schema_fetcher_1.getFieldsOfCollection)(await (0, schema_fetcher_1.fetchForestSchema)(forestServerClient), options.collectionName);
107
107
  return `The sort field provided is invalid for this collection. Available fields for the collection ${options.collectionName} are: ${fields
108
108
  .filter(field => field.isSortable)
109
109
  .map(field => field.field)
@@ -118,4 +118,4 @@ function declareListTool(mcpServer, forestServerUrl, logger, collectionNames = [
118
118
  });
119
119
  }, logger);
120
120
  }
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBZ0VBLDBEQU1DO0FBRUQsa0NBOEVDO0FBbEpELDZCQUF3QjtBQUV4QiwrREFBNkM7QUFDN0MseUVBQWdEO0FBQ2hELDREQUFtRjtBQUNuRixtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELDRFQUE0RTtBQUM1RSxNQUFNLHFCQUFxQixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDL0MsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxxRUFBcUU7UUFDckUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0FBQ0gsQ0FBQyxFQUFFLGdCQUFZLENBQUMsQ0FBQztBQUVqQixNQUFNLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsY0FBYyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDMUIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsT0FBTyxFQUFFLHFCQUFxQjtTQUMzQixRQUFRLENBQ1Asb0pBQW9KLENBQ3JKO1NBQ0EsUUFBUSxFQUFFO0lBQ2IsSUFBSSxFQUFFLE9BQUM7U0FDSixNQUFNLENBQUM7UUFDTixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNqQixTQUFTLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRTtLQUN2QixDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2Isc0JBQXNCLEVBQUUsT0FBQztTQUN0QixPQUFPLEVBQUU7U0FDVCxRQUFRLEVBQUU7U0FDVixPQUFPLENBQUMsS0FBSyxD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
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90b29scy9saXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBaUVBLDBEQU1DO0FBRUQsa0NBOEVDO0FBbEpELDZCQUF3QjtBQUV4QiwrREFBNkM7QUFDN0MseUVBQWdEO0FBQ2hELDREQUFtRjtBQUNuRixtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELDRFQUE0RTtBQUM1RSxNQUFNLHFCQUFxQixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDL0MsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxxRUFBcUU7UUFDckUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0FBQ0gsQ0FBQyxFQUFFLGdCQUFZLENBQUMsQ0FBQztBQUVqQixNQUFNLGtCQUFrQixHQUFHLE9BQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEMsY0FBYyxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUU7SUFDMUIsTUFBTSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLEVBQUU7SUFDN0IsT0FBTyxFQUFFLHFCQUFxQjtTQUMzQixRQUFRLENBQ1Asb0pBQW9KLENBQ3JKO1NBQ0EsUUFBUSxFQUFFO0lBQ2IsSUFBSSxFQUFFLE9BQUM7U0FDSixNQUFNLENBQUM7UUFDTixLQUFLLEVBQUUsT0FBQyxDQUFDLE1BQU0sRUFBRTtRQUNqQixTQUFTLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRTtLQUN2QixDQUFDO1NBQ0QsUUFBUSxFQUFFO0lBQ2Isc0JBQXNCLEVBQUUsT0FBQztTQUN0QixPQUFPLEVBQUU7U0FDVCxRQUFRLEVBQUU7U0FDVixPQUFPLENBQUMsS0FBSyxD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
@@ -1,4 +1,5 @@
1
+ import type { ForestServerClient } from '../http-client';
1
2
  import type { Logger } from '../server';
2
3
  import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
3
- export default function declareUpdateTool(mcpServer: McpServer, forestServerUrl: string, logger: Logger, collectionNames?: string[]): string;
4
+ export default function declareUpdateTool(mcpServer: McpServer, forestServerClient: ForestServerClient, logger: Logger, collectionNames?: string[]): string;
4
5
  //# sourceMappingURL=update.d.ts.map
@@ -26,7 +26,7 @@ function createArgumentShape(collectionNames) {
26
26
  attributes: attributesWithPreprocess.describe('The attributes to update. Must be an object with field names as keys.'),
27
27
  };
28
28
  }
29
- function declareUpdateTool(mcpServer, forestServerUrl, logger, collectionNames = []) {
29
+ function declareUpdateTool(mcpServer, forestServerClient, logger, collectionNames = []) {
30
30
  const argumentShape = createArgumentShape(collectionNames);
31
31
  return (0, tool_with_logging_1.default)(mcpServer, 'update', {
32
32
  title: 'Update a record',
@@ -35,7 +35,7 @@ function declareUpdateTool(mcpServer, forestServerUrl, logger, collectionNames =
35
35
  }, async (options, extra) => {
36
36
  const { rpcClient } = (0, agent_caller_1.default)(extra);
37
37
  return (0, with_activity_log_1.default)({
38
- forestServerUrl,
38
+ forestServerClient,
39
39
  request: extra,
40
40
  action: 'update',
41
41
  context: {
@@ -52,4 +52,4 @@ function declareUpdateTool(mcpServer, forestServerUrl, logger, collectionNames =
52
52
  });
53
53
  }, logger);
54
54
  }
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXFDQSxvQ0F1Q0M7QUF6RUQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELCtFQUErRTtBQUMvRSxNQUFNLHdCQUF3QixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQVF0QyxTQUFTLG1CQUFtQixDQUFDLGVBQXlCO0lBQ3BELE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFFBQVEsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDO1FBQ3ZGLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLENBQzNDLHVFQUF1RSxDQUN4RTtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBd0IsaUJBQWlCLENBQ3ZDLFNBQW9CLEVBQ3BCLGVBQXVCLEVBQ3ZCLE1BQWMsRUFDZCxrQkFBNEIsRUFBRTtJQUU5QixNQUFNLGFBQWEsR0FBRyxtQkFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUUzRCxPQUFPLElBQUEsMkJBQXVCLEVBQzVCLFNBQVMsRUFDVCxRQUFRLEVBQ1I7UUFDRSxLQUFLLEVBQUUsaUJBQWlCO1FBQ3hCLFdBQVcsRUFBRSx3REFBd0Q7UUFDckUsV0FBVyxFQUFFLGFBQWE7S0FDM0IsRUFDRCxLQUFLLEVBQUUsT0FBdUIsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUN2QyxNQUFNLEVBQUUsU0FBUyxFQUFFLEdBQUcsSUFBQSxzQkFBVyxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXpDLE9BQU8sSUFBQSwyQkFBZSxFQUFDO1lBQ3JCLGVBQWU7WUFDZixPQUFPLEVBQUUsS0FBSztZQUNkLE1BQU0sRUFBRSxRQUFRO1lBQ2hCLE9BQU8sRUFBRTtnQkFDUCxjQUFjLEVBQUUsT0FBTyxDQUFDLGNBQWM7Z0JBQ3RDLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTthQUMzQjtZQUNELE1BQU07WUFDTixTQUFTLEVBQUUsS0FBSyxJQUFJLEVBQUU7Z0JBQ3BCLE1BQU0sTUFBTSxHQUFHLE1BQU0sU0FBUztxQkFDM0IsVUFBVSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUM7cUJBQ2xDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFFaEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDM0UsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUMsRUFDRCxNQUFNLENBQ1AsQ0FBQztBQUNKLENBQUMifQ==
55
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Rvb2xzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXNDQSxvQ0F1Q0M7QUF6RUQsNkJBQXdCO0FBRXhCLHlFQUFnRDtBQUNoRCxtRkFBaUU7QUFDakUsbUZBQXlEO0FBRXpELCtFQUErRTtBQUMvRSxNQUFNLHdCQUF3QixHQUFHLE9BQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7SUFDbEQsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRO1FBQUUsT0FBTyxHQUFHLENBQUM7SUFFeEMsSUFBSSxDQUFDO1FBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7QUFDSCxDQUFDLEVBQUUsT0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztBQVF0QyxTQUFTLG1CQUFtQixDQUFDLGVBQXlCO0lBQ3BELE9BQU87UUFDTCxjQUFjLEVBQ1osZUFBZSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQUMsQ0FBQyxJQUFJLENBQUMsZUFBd0MsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFDLENBQUMsTUFBTSxFQUFFO1FBQzVGLFFBQVEsRUFBRSxPQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGlDQUFpQyxDQUFDO1FBQ3ZGLFVBQVUsRUFBRSx3QkFBd0IsQ0FBQyxRQUFRLENBQzNDLHVFQUF1RSxDQUN4RTtLQUNGLENBQUM7QUFDSixDQUFDO0FBRUQsU0FBd0IsaUJBQWlCLENBQ3ZDLFNBQW9CLEVBQ3BCLGtCQUFzQyxFQUN0QyxNQUFjLEVBQ2Qsa0JBQTRCLEVBQUU7SUFFOUIsTUFBTSxhQUFhLEdBQUcsbUJBQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFM0QsT0FBTyxJQUFBLDJCQUF1QixFQUM1QixTQUFTLEVBQ1QsUUFBUSxFQUNSO1FBQ0UsS0FBSyxFQUFFLGlCQUFpQjtRQUN4QixXQUFXLEVBQUUsd0RBQXdEO1FBQ3JFLFdBQVcsRUFBRSxhQUFhO0tBQzNCLEVBQ0QsS0FBSyxFQUFFLE9BQXVCLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDdkMsTUFBTSxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUEsc0JBQVcsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUV6QyxPQUFPLElBQUEsMkJBQWUsRUFBQztZQUNyQixrQkFBa0I7WUFDbEIsT0FBTyxFQUFFLEtBQUs7WUFDZCxNQUFNLEVBQUUsUUFBUTtZQUNoQixPQUFPLEVBQUU7Z0JBQ1AsY0FBYyxFQUFFLE9BQU8sQ0FBQyxjQUFjO2dCQUN0QyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7YUFDM0I7WUFDRCxNQUFNO1lBQ04sU0FBUyxFQUFFLEtBQUssSUFBSSxFQUFFO2dCQUNwQixNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVM7cUJBQzNCLFVBQVUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO3FCQUNsQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRWhELE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQzNFLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDLEVBQ0QsTUFBTSxDQUNQLENBQUM7QUFDSixDQUFDIn0=
@@ -1,26 +1,16 @@
1
+ import type { ActivityLogAction, ActivityLogResponse, ForestServerClient } from '../http-client';
1
2
  import type { Logger } from '../server';
2
3
  import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
3
4
  import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
4
- /**
5
- * Valid activity log actions.
6
- * These must match ActivityLogActions enum in forestadmin-server.
7
- * @see packages/private-api/src/config/activity-logs.ts
8
- */
9
- export type ActivityLogAction = 'index' | 'search' | 'filter' | 'action' | 'create' | 'update' | 'delete' | 'listRelatedData' | 'describeCollection';
10
- type ActivityLogResponse = {
11
- id: string;
12
- attributes: {
13
- index: string;
14
- };
15
- };
16
- export default function createPendingActivityLog(forestServerUrl: string, request: RequestHandlerExtra<ServerRequest, ServerNotification>, action: ActivityLogAction, extra?: {
5
+ export type { ActivityLogAction, ActivityLogResponse };
6
+ export default function createPendingActivityLog(forestServerClient: ForestServerClient, request: RequestHandlerExtra<ServerRequest, ServerNotification>, action: ActivityLogAction, extra?: {
17
7
  collectionName?: string;
18
8
  recordId?: string | number;
19
9
  recordIds?: string[] | number[];
20
10
  label?: string;
21
11
  }): Promise<ActivityLogResponse>;
22
12
  interface MarkActivityLogAsFailedOptions {
23
- forestServerUrl: string;
13
+ forestServerClient: ForestServerClient;
24
14
  request: RequestHandlerExtra<ServerRequest, ServerNotification>;
25
15
  activityLog: ActivityLogResponse;
26
16
  errorMessage: string;
@@ -28,11 +18,10 @@ interface MarkActivityLogAsFailedOptions {
28
18
  }
29
19
  export declare function markActivityLogAsFailed(options: MarkActivityLogAsFailedOptions): void;
30
20
  interface MarkActivityLogAsSucceededOptions {
31
- forestServerUrl: string;
21
+ forestServerClient: ForestServerClient;
32
22
  request: RequestHandlerExtra<ServerRequest, ServerNotification>;
33
23
  activityLog: ActivityLogResponse;
34
24
  logger: Logger;
35
25
  }
36
26
  export declare function markActivityLogAsSucceeded(options: MarkActivityLogAsSucceededOptions): void;
37
- export {};
38
27
  //# sourceMappingURL=activity-logs-creator.d.ts.map
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = createPendingActivityLog;
4
4
  exports.markActivityLogAsFailed = markActivityLogAsFailed;
5
5
  exports.markActivityLogAsSucceeded = markActivityLogAsSucceeded;
6
+ const forestadmin_client_1 = require("@forestadmin/forestadmin-client");
6
7
  const ACTION_TO_TYPE = {
7
8
  index: 'read',
8
9
  search: 'read',
@@ -14,87 +15,67 @@ const ACTION_TO_TYPE = {
14
15
  listRelatedData: 'read',
15
16
  describeCollection: 'read',
16
17
  };
17
- async function createPendingActivityLog(forestServerUrl, request, action, extra) {
18
- const type = ACTION_TO_TYPE[action];
18
+ function getAuthContext(request) {
19
19
  const forestServerToken = request.authInfo?.extra?.forestServerToken;
20
20
  const renderingId = request.authInfo?.extra?.renderingId;
21
- const response = await fetch(`${forestServerUrl}/api/activity-logs-requests`, {
22
- method: 'POST',
23
- headers: {
24
- 'Content-Type': 'application/json',
25
- 'Forest-Application-Source': 'MCP',
26
- Authorization: `Bearer ${forestServerToken}`,
27
- },
28
- body: JSON.stringify({
29
- data: {
30
- id: 1,
31
- type: 'activity-logs-requests',
32
- attributes: {
33
- type,
34
- action,
35
- label: extra?.label,
36
- status: 'pending',
37
- records: (extra?.recordIds || (extra?.recordId ? [extra.recordId] : [])),
38
- },
39
- relationships: {
40
- rendering: {
41
- data: {
42
- id: renderingId,
43
- type: 'renderings',
44
- },
45
- },
46
- collection: {
47
- data: extra?.collectionName
48
- ? {
49
- id: extra.collectionName,
50
- type: 'collections',
51
- }
52
- : null,
53
- },
54
- },
55
- },
56
- }),
57
- });
58
- if (!response.ok) {
59
- throw new Error(`Failed to create activity log: ${await response.text()}`);
21
+ if (!forestServerToken || typeof forestServerToken !== 'string') {
22
+ throw new Error('Invalid or missing forestServerToken in authentication context');
60
23
  }
61
- const { data: activityLog } = (await response.json());
62
- return activityLog;
24
+ // renderingId can be number (from JWT) or string - convert to string for API calls
25
+ if (renderingId === undefined || renderingId === null) {
26
+ throw new Error('Invalid or missing renderingId in authentication context');
27
+ }
28
+ return { forestServerToken, renderingId: String(renderingId) };
29
+ }
30
+ async function createPendingActivityLog(forestServerClient, request, action, extra) {
31
+ const type = ACTION_TO_TYPE[action];
32
+ const { forestServerToken, renderingId } = getAuthContext(request);
33
+ return forestServerClient.createActivityLog({
34
+ forestServerToken,
35
+ renderingId,
36
+ action,
37
+ type,
38
+ collectionName: extra?.collectionName,
39
+ recordId: extra?.recordId,
40
+ recordIds: extra?.recordIds,
41
+ label: extra?.label,
42
+ });
63
43
  }
64
44
  const MAX_RETRIES = 5;
65
45
  const RETRY_DELAY_MS = 500;
66
46
  async function updateActivityLogStatus(options, attempt = 1) {
67
- const { forestServerUrl, request, activityLog, status, errorMessage, logger } = options;
68
- const forestServerToken = request.authInfo?.extra?.forestServerToken;
69
- const response = await fetch(`${forestServerUrl}/api/activity-logs-requests/${activityLog.attributes.index}/${activityLog.id}/status`, {
70
- method: 'PATCH',
71
- headers: {
72
- 'Content-Type': 'application/json',
73
- 'Forest-Application-Source': 'MCP',
74
- Authorization: `Bearer ${forestServerToken}`,
75
- },
76
- body: JSON.stringify({
47
+ const { forestServerClient, request, activityLog, status, errorMessage, logger } = options;
48
+ // Use optional chaining with fallback since we're in error handling context
49
+ // and don't want to throw a different error if auth context is missing
50
+ const forestServerToken = request.authInfo?.extra?.forestServerToken ?? '';
51
+ try {
52
+ await forestServerClient.updateActivityLogStatus({
53
+ forestServerToken,
54
+ activityLog,
77
55
  status,
78
- ...(errorMessage && { errorMessage }),
79
- }),
80
- });
81
- if (response.status === 404 && attempt < MAX_RETRIES) {
82
- logger('Debug', `Activity log not found (attempt ${attempt}/${MAX_RETRIES}), retrying...`);
83
- await new Promise(resolve => {
84
- setTimeout(resolve, RETRY_DELAY_MS);
56
+ errorMessage,
85
57
  });
86
- return updateActivityLogStatus(options, attempt + 1);
87
58
  }
88
- if (!response.ok) {
89
- const responseText = await response.text();
90
- logger('Error', `Failed to update activity log status to '${status}': ${responseText}`);
59
+ catch (error) {
60
+ // Retry on 404 errors (activity log may not be immediately available)
61
+ if (error instanceof forestadmin_client_1.NotFoundError && attempt < MAX_RETRIES) {
62
+ logger('Debug', `Activity log not found (attempt ${attempt}/${MAX_RETRIES}), retrying...`);
63
+ await new Promise(resolve => {
64
+ setTimeout(resolve, RETRY_DELAY_MS);
65
+ });
66
+ return updateActivityLogStatus(options, attempt + 1);
67
+ }
68
+ const errorMsg = error instanceof Error ? error.message : String(error);
69
+ logger('Error', `Failed to update activity log status to '${status}': ${errorMsg}`);
70
+ // Rethrow so callers are aware of the failure
71
+ throw error;
91
72
  }
92
73
  }
93
74
  function markActivityLogAsFailed(options) {
94
- const { forestServerUrl, request, activityLog, errorMessage, logger } = options;
75
+ const { forestServerClient, request, activityLog, errorMessage, logger } = options;
95
76
  // Fire-and-forget: don't block error response on activity log update
96
77
  updateActivityLogStatus({
97
- forestServerUrl,
78
+ forestServerClient,
98
79
  request,
99
80
  activityLog,
100
81
  status: 'failed',
@@ -105,10 +86,10 @@ function markActivityLogAsFailed(options) {
105
86
  });
106
87
  }
107
88
  function markActivityLogAsSucceeded(options) {
108
- const { forestServerUrl, request, activityLog, logger } = options;
89
+ const { forestServerClient, request, activityLog, logger } = options;
109
90
  // Fire-and-forget: don't block successful response on activity log update
110
91
  updateActivityLogStatus({
111
- forestServerUrl,
92
+ forestServerClient,
112
93
  request,
113
94
  activityLog,
114
95
  status: 'completed',
@@ -117,4 +98,4 @@ function markActivityLogAsSucceeded(options) {
117
98
  logger('Error', `Unexpected error updating activity log to 'succeeded': ${error}`);
118
99
  });
119
100
  }
120
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9ncy1jcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FjdGl2aXR5LWxvZ3MtY3JlYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQXVDQSwyQ0E2REM7QUE0REQsMERBYUM7QUFTRCxnRUFZQztBQTlLRCxNQUFNLGNBQWMsR0FBZ0Q7SUFDbEUsS0FBSyxFQUFFLE1BQU07SUFDYixNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxNQUFNO0lBQ2QsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsT0FBTztJQUNmLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE9BQU87SUFDZixlQUFlLEVBQUUsTUFBTTtJQUN2QixrQkFBa0IsRUFBRSxNQUFNO0NBQzNCLENBQUM7QUFTYSxLQUFLLFVBQVUsd0JBQXdCLENBQ3BELGVBQXVCLEVBQ3ZCLE9BQStELEVBQy9ELE1BQXlCLEVBQ3pCLEtBS0M7SUFFRCxNQUFNLElBQUksR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEMsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxpQkFBMkIsQ0FBQztJQUMvRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFxQixDQUFDO0lBRW5FLE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsZUFBZSw2QkFBNkIsRUFBRTtRQUM1RSxNQUFNLEVBQUUsTUFBTTtRQUNkLE9BQU8sRUFBRTtZQUNQLGNBQWMsRUFBRSxrQkFBa0I7WUFDbEMsMkJBQTJCLEVBQUUsS0FBSztZQUNsQyxhQUFhLEVBQUUsVUFBVSxpQkFBaUIsRUFBRTtTQUM3QztRQUNELElBQUksRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ25CLElBQUksRUFBRTtnQkFDSixFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVB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
101
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aXZpdHktbG9ncy1jcmVhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2FjdGl2aXR5LWxvZ3MtY3JlYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTZDQSwyQ0F3QkM7QUEwREQsMERBYUM7QUFTRCxnRUFZQztBQXZKRCx3RUFBZ0U7QUFJaEUsTUFBTSxjQUFjLEdBQStDO0lBQ2pFLEtBQUssRUFBRSxNQUFNO0lBQ2IsTUFBTSxFQUFFLE1BQU07SUFDZCxNQUFNLEVBQUUsTUFBTTtJQUNkLE1BQU0sRUFBRSxPQUFPO0lBQ2YsTUFBTSxFQUFFLE9BQU87SUFDZixNQUFNLEVBQUUsT0FBTztJQUNmLE1BQU0sRUFBRSxPQUFPO0lBQ2YsZUFBZSxFQUFFLE1BQU07SUFDdkIsa0JBQWtCLEVBQUUsTUFBTTtDQUMzQixDQUFDO0FBRUYsU0FBUyxjQUFjLENBQUMsT0FBK0Q7SUFJckYsTUFBTSxpQkFBaUIsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQztJQUNyRSxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUM7SUFFekQsSUFBSSxDQUFDLGlCQUFpQixJQUFJLE9BQU8saUJBQWlCLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDaEUsTUFBTSxJQUFJLEtBQUssQ0FBQyxnRUFBZ0UsQ0FBQyxDQUFDO0lBQ3BGLENBQUM7SUFFRCxtRkFBbUY7SUFDbkYsSUFBSSxXQUFXLEtBQUssU0FBUyxJQUFJLFdBQVcsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUN0RCxNQUFNLElBQUksS0FBSyxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDOUUsQ0FBQztJQUVELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxXQUFXLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7QUFDakUsQ0FBQztBQUVjLEtBQUssVUFBVSx3QkFBd0IsQ0FD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
@@ -1,46 +1,13 @@
1
+ import type { ForestSchemaAction, ForestSchemaCollection, ForestSchemaField, ForestServerClient } from '../http-client';
1
2
  /**
2
3
  * Schema Fetcher Utility
3
4
  *
4
5
  * Fetches the Forest Admin schema from the `/liana/forest-schema` endpoint
5
6
  * and caches it for 24 hours.
6
7
  */
7
- export interface ForestField {
8
- field: string;
9
- type: string;
10
- isFilterable?: boolean;
11
- isSortable?: boolean;
12
- enum: string[] | null;
13
- inverseOf?: string | null;
14
- reference: string | null;
15
- isReadOnly: boolean;
16
- isRequired: boolean;
17
- integration?: string | null;
18
- validations?: unknown[];
19
- defaultValue?: unknown;
20
- isPrimaryKey: boolean;
21
- relationship?: 'HasMany' | 'BelongsToMany' | 'BelongsTo' | 'HasOne' | null;
22
- }
23
- export interface ForestAction {
24
- id: string;
25
- name: string;
26
- type: 'single' | 'bulk' | 'global';
27
- endpoint: string;
28
- description?: string;
29
- submitButtonLabel?: string;
30
- download: boolean;
31
- fields: {
32
- field: string;
33
- }[];
34
- hooks: {
35
- load: boolean;
36
- change: unknown[];
37
- };
38
- }
39
- export interface ForestCollection {
40
- name: string;
41
- fields: ForestField[];
42
- actions?: ForestAction[];
43
- }
8
+ export type ForestField = ForestSchemaField;
9
+ export type ForestAction = ForestSchemaAction;
10
+ export type ForestCollection = ForestSchemaCollection;
44
11
  export interface ForestSchema {
45
12
  collections: ForestCollection[];
46
13
  }
@@ -48,10 +15,10 @@ export interface ForestSchema {
48
15
  * Fetches the Forest Admin schema from the server.
49
16
  * The schema is cached for 24 hours to reduce API calls.
50
17
  *
51
- * @param forestServerUrl - The Forest Admin server URL
18
+ * @param forestServerClient - The Forest server client to use for fetching the schema
52
19
  * @returns The Forest Admin schema containing collections
53
20
  */
54
- export declare function fetchForestSchema(forestServerUrl: string): Promise<ForestSchema>;
21
+ export declare function fetchForestSchema(forestServerClient: ForestServerClient): Promise<ForestSchema>;
55
22
  /**
56
23
  * Extracts collection names from the Forest Admin schema.
57
24
  *
@@ -1,7 +1,4 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.fetchForestSchema = fetchForestSchema;
7
4
  exports.getCollectionNames = getCollectionNames;
@@ -9,42 +6,22 @@ exports.getFieldsOfCollection = getFieldsOfCollection;
9
6
  exports.clearSchemaCache = clearSchemaCache;
10
7
  exports.setSchemaCache = setSchemaCache;
11
8
  exports.getActionsOfCollection = getActionsOfCollection;
12
- const jsonapi_serializer_1 = __importDefault(require("jsonapi-serializer"));
13
9
  const ONE_DAY_MS = 24 * 60 * 60 * 1000;
14
10
  let schemaCache = null;
15
11
  /**
16
12
  * Fetches the Forest Admin schema from the server.
17
13
  * The schema is cached for 24 hours to reduce API calls.
18
14
  *
19
- * @param forestServerUrl - The Forest Admin server URL
15
+ * @param forestServerClient - The Forest server client to use for fetching the schema
20
16
  * @returns The Forest Admin schema containing collections
21
17
  */
22
- async function fetchForestSchema(forestServerUrl) {
18
+ async function fetchForestSchema(forestServerClient) {
23
19
  const now = Date.now();
24
20
  // Return cached schema if it's still valid (less than 24 hours old)
25
21
  if (schemaCache && now - schemaCache.fetchedAt < ONE_DAY_MS) {
26
22
  return schemaCache.schema;
27
23
  }
28
- const envSecret = process.env.FOREST_ENV_SECRET;
29
- if (!envSecret) {
30
- throw new Error('FOREST_ENV_SECRET environment variable is not set');
31
- }
32
- const response = await fetch(`${forestServerUrl}/liana/forest-schema`, {
33
- method: 'GET',
34
- headers: {
35
- 'forest-secret-key': envSecret,
36
- 'Content-Type': 'application/json',
37
- },
38
- });
39
- if (!response.ok) {
40
- const errorText = await response.text();
41
- throw new Error(`Failed to fetch forest schema: ${errorText}`);
42
- }
43
- const schema = (await response.json());
44
- const serializer = new jsonapi_serializer_1.default.Deserializer({
45
- keyForAttribute: 'camelCase',
46
- });
47
- const collections = (await serializer.deserialize(schema));
24
+ const collections = await forestServerClient.fetchSchema();
48
25
  // Update cache
49
26
  schemaCache = {
50
27
  schema: { collections },
@@ -93,4 +70,4 @@ function getActionsOfCollection(schema, collectionName) {
93
70
  }
94
71
  return collection.actions || [];
95
72
  }
96
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2NoZW1hLWZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUEwRUEsOENBNENDO0FBUUQsZ0RBRUM7QUFFRCxzREFRQztBQUtELDRDQUVDO0FBS0Qsd0NBS0M7QUFLRCx3REFXQztBQTNLRCw0RUFBbUQ7QUErRG5ELE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQztBQUV2QyxJQUFJLFdBQVcsR0FBdUIsSUFBSSxDQUFDO0FBRTNDOzs7Ozs7R0FNRztBQUNJLEtBQUssVUFBVSxpQkFBaUIsQ0FBQyxlQUF1QjtJQUM3RCxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsb0VBQW9FO0lBQ3BFLElBQUksV0FBVyxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzVELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQztJQUVoRCxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUM7SUFDdkUsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sS0FBSyxDQUFDLEdBQUcsZUFBZSxzQkFBc0IsRUFBRTtRQUNyRSxNQUFNLEVBQUUsS0FBSztRQUNiLE9BQU8sRUFBRTtZQUNQLG1CQUFtQixFQUFFLFNBQVM7WUFDOUIsY0FBYyxFQUFFLGtCQUFrQjtTQUNuQztLQUNGLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDakIsTUFBTSxTQUFTLEdBQUcsTUFBTSxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FJcEMsQ0FBQztJQUNGLE1BQU0sVUFBVSxHQUFHLElBQUksNEJBQWlCLENBQUMsWUFBWSxDQUFDO1FBQ3BELGVBQWUsRUFBRSxXQUFXO0tBQzdCLENBQUMsQ0FBQztJQUNILE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBTSxVQUFVLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUF1QixDQUFDO0lBRWpGLGVBQWU7SUFDZixXQUFXLEdBQUc7UUFDWixNQUFNLEVBQUUsRUFBRSxXQUFXLEVBQUU7UUFDdkIsU0FBUyxFQUFFLEdBQUc7S0FDZixDQUFDO0lBRUYsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDO0FBQ3pCLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGtCQUFrQixDQUFDLE1BQW9CO0lBQ3JELE9BQU8sTUFBTSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0QsQ0FBQztBQUVELFNBQWdCLHFCQUFxQixDQUFDLE1BQW9CLEVBQUUsY0FBc0I7SUFDaEYsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxLQUFLLGNBQWMsQ0FBQyxDQUFDO0lBRS9FLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsY0FBYyx1QkFBdUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFDM0IsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCO0lBQzlCLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDckIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsY0FBYyxDQUFDLE1BQW9CLEVBQUUsU0FBa0I7SUFDckUsV0FBVyxHQUFHO1FBQ1osTUFBTTtRQUNOLFNBQVMsRUFBRSxTQUFTLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTtLQUNuQyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQ3BDLE1BQW9CLEVBQ3BCLGNBQXNCO0lBRXRCLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQztJQUUvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLGNBQWMsdUJBQXVCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUNsQyxDQUFDIn0=
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLWZldGNoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc2NoZW1hLWZldGNoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUF1Q0EsOENBbUJDO0FBUUQsZ0RBRUM7QUFFRCxzREFRQztBQUtELDRDQUVDO0FBS0Qsd0NBS0M7QUFLRCx3REFXQztBQW5GRCxNQUFNLFVBQVUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFFdkMsSUFBSSxXQUFXLEdBQXVCLElBQUksQ0FBQztBQUUzQzs7Ozs7O0dBTUc7QUFDSSxLQUFLLFVBQVUsaUJBQWlCLENBQ3JDLGtCQUFzQztJQUV0QyxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7SUFFdkIsb0VBQW9FO0lBQ3BFLElBQUksV0FBVyxJQUFJLEdBQUcsR0FBRyxXQUFXLENBQUMsU0FBUyxHQUFHLFVBQVUsRUFBRSxDQUFDO1FBQzVELE9BQU8sV0FBVyxDQUFDLE1BQU0sQ0FBQztJQUM1QixDQUFDO0lBRUQsTUFBTSxXQUFXLEdBQUcsTUFBTSxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUUzRCxlQUFlO0lBQ2YsV0FBVyxHQUFHO1FBQ1osTUFBTSxFQUFFLEVBQUUsV0FBVyxFQUFFO1FBQ3ZCLFNBQVMsRUFBRSxHQUFHO0tBQ2YsQ0FBQztJQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztBQUN6QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFvQjtJQUNyRCxPQUFPLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9ELENBQUM7QUFFRCxTQUFnQixxQkFBcUIsQ0FBQyxNQUFvQixFQUFFLGNBQXNCO0lBQ2hGLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLElBQUksS0FBSyxjQUFjLENBQUMsQ0FBQztJQUUvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLGNBQWMsdUJBQXVCLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBRUQsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDO0FBQzNCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQjtJQUM5QixXQUFXLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGNBQWMsQ0FBQyxNQUFvQixFQUFFLFNBQWtCO0lBQ3JFLFdBQVcsR0FBRztRQUNaLE1BQU07UUFDTixTQUFTLEVBQUUsU0FBUyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUU7S0FDbkMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLHNCQUFzQixDQUNwQyxNQUFvQixFQUNwQixjQUFzQjtJQUV0QixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDLENBQUM7SUFFL0UsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsZUFBZSxjQUFjLHVCQUF1QixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDbEMsQ0FBQyJ9
@@ -1,7 +1,8 @@
1
+ import type { ActivityLogAction } from './activity-logs-creator';
2
+ import type { ForestServerClient } from '../http-client';
1
3
  import type { Logger } from '../server';
2
4
  import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
3
5
  import type { ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
4
- import { ActivityLogAction } from './activity-logs-creator';
5
6
  interface ActivityLogContext {
6
7
  collectionName?: string;
7
8
  recordId?: string | number;
@@ -9,7 +10,7 @@ interface ActivityLogContext {
9
10
  label?: string;
10
11
  }
11
12
  interface WithActivityLogOptions<T> {
12
- forestServerUrl: string;
13
+ forestServerClient: ForestServerClient;
13
14
  request: RequestHandlerExtra<ServerRequest, ServerNotification>;
14
15
  action: ActivityLogAction;
15
16
  context?: ActivityLogContext;
@@ -44,14 +44,14 @@ const error_parser_1 = __importDefault(require("./error-parser"));
44
44
  * Creates a pending activity log, executes the operation, and marks it as succeeded or failed.
45
45
  */
46
46
  async function withActivityLog(options) {
47
- const { forestServerUrl, request, action, context, logger, operation, errorEnhancer } = options;
47
+ const { forestServerClient, request, action, context, logger, operation, errorEnhancer } = options;
48
48
  // We want to create the activity log before executing the operation
49
49
  // If activity log creation fails, we must prevent the execution of the operation
50
- const activityLog = await (0, activity_logs_creator_1.default)(forestServerUrl, request, action, context);
50
+ const activityLog = await (0, activity_logs_creator_1.default)(forestServerClient, request, action, context);
51
51
  try {
52
52
  const result = await operation();
53
53
  (0, activity_logs_creator_1.markActivityLogAsSucceeded)({
54
- forestServerUrl,
54
+ forestServerClient,
55
55
  request,
56
56
  activityLog,
57
57
  logger,
@@ -66,12 +66,12 @@ async function withActivityLog(options) {
66
66
  try {
67
67
  errorMessage = await errorEnhancer(errorMessage, error);
68
68
  }
69
- catch {
70
- // If enhancement fails, use the original parsed message
69
+ catch (enhancerError) {
70
+ logger('Warn', `Error enhancement failed (using original error message): ${enhancerError instanceof Error ? enhancerError.message : String(enhancerError)}`);
71
71
  }
72
72
  }
73
73
  (0, activity_logs_creator_1.markActivityLogAsFailed)({
74
- forestServerUrl,
74
+ forestServerClient,
75
75
  request,
76
76
  activityLog,
77
77
  errorMessage,
@@ -80,4 +80,4 @@ async function withActivityLog(options) {
80
80
  throw new Error(errorMessage);
81
81
  }
82
82
  }
83
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hY3Rpdml0eS1sb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2l0aC1hY3Rpdml0eS1sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFxQ0Esa0NBeUNDO0FBMUVELGlGQUlpQztBQUNqQyxrRUFBNkM7QUF3QjdDOzs7R0FHRztBQUNZLEtBQUssVUFBVSxlQUFlLENBQUksT0FBa0M7SUFDakYsTUFBTSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFFLGFBQWEsRUFBRSxHQUFHLE9BQU8sQ0FBQztJQUVoRyxvRUFBb0U7SUFDcEUsaUZBQWlGO0lBQ2pGLE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBQSwrQkFBd0IsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUU5RixJQUFJLENBQUM7UUFDSCxNQUFNLE1BQU0sR0FBRyxNQUFNLFNBQVMsRUFBRSxDQUFDO1FBRWpDLElBQUEsa0RBQTBCLEVBQUM7WUFDekIsZUFBZTtZQUNmLE9BQU87WUFDUCxXQUFXO1lBQ1gsTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsTUFBTSxXQUFXLEdBQUcsSUFBQSxzQkFBZSxFQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLElBQUksWUFBWSxHQUFHLFdBQVcsSUFBSSxDQUFDLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRTNGLHlGQUF5RjtRQUN6RixJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQztnQkFDSCxZQUFZLEdBQUcsTUFBTSxhQUFhLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzFELENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1Asd0RBQXdEO1lBQzFELENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBQSwrQ0FBdUIsRUFBQztZQUN0QixlQUFlO1lBQ2YsT0FBTztZQUNQLFdBQVc7WUFDWCxZQUFZO1lBQ1osTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUMifQ==
83
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1hY3Rpdml0eS1sb2cuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvd2l0aC1hY3Rpdml0eS1sb2cudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFzQ0Esa0NBK0NDO0FBL0VELGlGQUdpQztBQUNqQyxrRUFBNkM7QUF3QjdDOzs7R0FHRztBQUNZLEtBQUssVUFBVSxlQUFlLENBQUksT0FBa0M7SUFDakYsTUFBTSxFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLEdBQ3RGLE9BQU8sQ0FBQztJQUVWLG9FQUFvRTtJQUNwRSxpRkFBaUY7SUFDakYsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFBLCtCQUF3QixFQUFDLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFakcsSUFBSSxDQUFDO1FBQ0gsTUFBTSxNQUFNLEdBQUcsTUFBTSxTQUFTLEVBQUUsQ0FBQztRQUVqQyxJQUFBLGtEQUEwQixFQUFDO1lBQ3pCLGtCQUFrQjtZQUNsQixPQUFPO1lBQ1AsV0FBVztZQUNYLE1BQU07U0FDUCxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE1BQU0sV0FBVyxHQUFHLElBQUEsc0JBQWUsRUFBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxJQUFJLFlBQVksR0FBRyxXQUFXLElBQUksQ0FBQyxLQUFLLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUUzRix5RkFBeUY7UUFDekYsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUM7Z0JBQ0gsWUFBWSxHQUFHLE1BQU0sYUFBYSxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUMxRCxDQUFDO1lBQUMsT0FBTyxhQUFhLEVBQUUsQ0FBQztnQkFDdkIsTUFBTSxDQUNKLE1BQU0sRUFDTiw0REFDRSxhQUFhLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUMvRSxFQUFFLENBQ0gsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBQSwrQ0FBdUIsRUFBQztZQUN0QixrQkFBa0I7WUFDbEIsT0FBTztZQUNQLFdBQVc7WUFDWCxZQUFZO1lBQ1osTUFBTTtTQUNQLENBQUMsQ0FBQztRQUVILE1BQU0sSUFBSSxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDaEMsQ0FBQztBQUNILENBQUMifQ==
package/dist/version.js CHANGED
@@ -34,10 +34,29 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.NAME = exports.VERSION = void 0;
37
+ // Use require.resolve to find package.json relative to this module
38
+ // This works correctly whether running from src/ or dist/
37
39
  const fs = __importStar(require("fs"));
38
40
  const path = __importStar(require("path"));
39
- const packageJsonPath = path.resolve(__dirname, '..', 'package.json');
40
- const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
41
+ function findPackageJson() {
42
+ // Try multiple possible locations
43
+ const possiblePaths = [
44
+ path.resolve(__dirname, '..', 'package.json'), // from src/
45
+ path.resolve(__dirname, '..', '..', 'package.json'), // from dist/
46
+ ];
47
+ for (const p of possiblePaths) {
48
+ try {
49
+ const content = fs.readFileSync(p, 'utf-8');
50
+ return JSON.parse(content);
51
+ }
52
+ catch {
53
+ // Try next path
54
+ }
55
+ }
56
+ // Fallback values if package.json cannot be found
57
+ return { version: '0.0.0', name: '@forestadmin/mcp-server' };
58
+ }
59
+ const packageJson = findPackageJson();
41
60
  exports.VERSION = packageJson.version;
42
61
  exports.NAME = packageJson.name;
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHVDQUF5QjtBQUN6QiwyQ0FBNkI7QUFFN0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3RFLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUU3RCxRQUFBLE9BQU8sR0FBVyxXQUFXLENBQUMsT0FBTyxDQUFDO0FBQ3RDLFFBQUEsSUFBSSxHQUFXLFdBQVcsQ0FBQyxJQUFJLENBQUMifQ==
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1FQUFtRTtBQUNuRSwwREFBMEQ7QUFDMUQsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUU3QixTQUFTLGVBQWU7SUFDdEIsa0NBQWtDO0lBQ2xDLE1BQU0sYUFBYSxHQUFHO1FBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxjQUFjLENBQUMsRUFBRSxZQUFZO1FBQzNELElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLEVBQUUsYUFBYTtLQUNuRSxDQUFDO0lBRUYsS0FBSyxNQUFNLENBQUMsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUM7WUFDSCxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUU1QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDN0IsQ0FBQztRQUFDLE1BQU0sQ0FBQztZQUNQLGdCQUFnQjtRQUNsQixDQUFDO0lBQ0gsQ0FBQztJQUVELGtEQUFrRDtJQUNsRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUseUJBQXlCLEVBQUUsQ0FBQztBQUMvRCxDQUFDO0FBRUQsTUFBTSxXQUFXLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFFekIsUUFBQSxPQUFPLEdBQVcsV0FBVyxDQUFDLE9BQU8sQ0FBQztBQUN0QyxRQUFBLElBQUksR0FBVyxXQUFXLENBQUMsSUFBSSxDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forestadmin/mcp-server",
3
- "version": "1.5.0",
3
+ "version": "1.5.2",
4
4
  "description": "Model Context Protocol server for Forest Admin with OAuth authentication",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -16,8 +16,8 @@
16
16
  "directory": "packages/mcp-server"
17
17
  },
18
18
  "dependencies": {
19
- "@forestadmin/agent-client": "1.2.0",
20
- "@forestadmin/forestadmin-client": "1.37.0",
19
+ "@forestadmin/agent-client": "1.2.1",
20
+ "@forestadmin/forestadmin-client": "1.37.1",
21
21
  "@modelcontextprotocol/sdk": "^1.25.1",
22
22
  "cors": "^2.8.5",
23
23
  "express": "^5.2.1",