@rashidazarang/airtable-mcp 3.2.5 → 3.2.8
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.
- package/README.md +198 -360
- package/dist/typescript/airtable-mcp-server.js +2 -2
- package/dist/typescript/airtable-mcp-server.js.map +1 -1
- package/dist/typescript/app/airtable-client.js +24 -22
- package/dist/typescript/app/airtable-client.js.map +1 -1
- package/dist/typescript/app/config.js +11 -1
- package/dist/typescript/app/config.js.map +1 -1
- package/dist/typescript/app/logger.js +2 -2
- package/dist/typescript/app/logger.js.map +1 -1
- package/dist/typescript/app/sanitize.js +95 -0
- package/dist/typescript/app/sanitize.js.map +1 -0
- package/dist/typescript/app/tools/create.js +3 -2
- package/dist/typescript/app/tools/create.js.map +1 -1
- package/dist/typescript/app/tools/describe.js +65 -21
- package/dist/typescript/app/tools/describe.js.map +1 -1
- package/dist/typescript/app/tools/handleError.js +161 -10
- package/dist/typescript/app/tools/handleError.js.map +1 -1
- package/dist/typescript/app/tools/listBases.js +3 -8
- package/dist/typescript/app/tools/listBases.js.map +1 -1
- package/dist/typescript/app/tools/listExceptions.js +2 -4
- package/dist/typescript/app/tools/listExceptions.js.map +1 -1
- package/dist/typescript/app/tools/listGovernance.js +2 -4
- package/dist/typescript/app/tools/listGovernance.js.map +1 -1
- package/dist/typescript/app/tools/query.js +11 -4
- package/dist/typescript/app/tools/query.js.map +1 -1
- package/dist/typescript/app/tools/response.js +21 -0
- package/dist/typescript/app/tools/response.js.map +1 -0
- package/dist/typescript/app/tools/update.js +3 -2
- package/dist/typescript/app/tools/update.js.map +1 -1
- package/dist/typescript/app/tools/upsert.js +3 -2
- package/dist/typescript/app/tools/upsert.js.map +1 -1
- package/dist/typescript/app/tools/webhooks.js +4 -3
- package/dist/typescript/app/tools/webhooks.js.map +1 -1
- package/dist/typescript/app/types.js +18 -9
- package/dist/typescript/app/types.js.map +1 -1
- package/dist/typescript/app/validateApiKey.js +75 -0
- package/dist/typescript/app/validateApiKey.js.map +1 -0
- package/dist/typescript/errors.js.map +1 -1
- package/package.json +4 -5
- package/types/typescript/app/airtable-client.d.ts +2 -1
- package/types/typescript/app/config.d.ts +1 -0
- package/types/typescript/app/sanitize.d.ts +50 -0
- package/types/typescript/app/tools/create.d.ts +1 -1
- package/types/typescript/app/tools/describe.d.ts +1 -1
- package/types/typescript/app/tools/index.d.ts +1 -1
- package/types/typescript/app/tools/listBases.d.ts +3 -23
- package/types/typescript/app/tools/listExceptions.d.ts +1 -1
- package/types/typescript/app/tools/listGovernance.d.ts +1 -1
- package/types/typescript/app/tools/query.d.ts +1 -1
- package/types/typescript/app/tools/response.d.ts +20 -0
- package/types/typescript/app/tools/update.d.ts +1 -1
- package/types/typescript/app/tools/upsert.d.ts +1 -1
- package/types/typescript/app/tools/webhooks.d.ts +1 -1
- package/types/typescript/app/types.d.ts +149 -661
- package/types/typescript/app/validateApiKey.d.ts +25 -0
- package/types/typescript/errors.d.ts +2 -0
- package/dist/typescript/apps-sdk/mappers.js +0 -70
- package/dist/typescript/apps-sdk/mappers.js.map +0 -1
- package/types/typescript/apps-sdk/mappers.d.ts +0 -53
|
@@ -4,9 +4,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
4
4
|
exports.start = start;
|
|
5
5
|
// Import via require to avoid TS type resolution issues with deep subpath exports
|
|
6
6
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
7
|
-
const { McpServer } = require('@modelcontextprotocol/sdk/server/mcp');
|
|
7
|
+
const { McpServer } = require('@modelcontextprotocol/sdk/server/mcp.js');
|
|
8
8
|
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
9
|
-
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio');
|
|
9
|
+
const { StdioServerTransport } = require('@modelcontextprotocol/sdk/server/stdio.js');
|
|
10
10
|
const config_1 = require("./app/config");
|
|
11
11
|
const logger_1 = require("./app/logger");
|
|
12
12
|
const rateLimiter_1 = require("./app/rateLimiter");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airtable-mcp-server.js","sourceRoot":"","sources":["../../src/typescript/airtable-mcp-server.ts"],"names":[],"mappings":";;;AA0CA,sBA0CC;AAlFD,kFAAkF;AAClF,8DAA8D;AAC9D,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"airtable-mcp-server.js","sourceRoot":"","sources":["../../src/typescript/airtable-mcp-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -249,12 +249,15 @@ class AirtableClient {
|
|
|
249
249
|
}
|
|
250
250
|
toDomainError(response, request) {
|
|
251
251
|
const { status, body, headers } = response;
|
|
252
|
+
const { type: upstreamErrorType, message: upstreamErrorMessage } = this.safeExtractErrorInfo(body);
|
|
253
|
+
const requestId = this.extractRequestId(headers);
|
|
252
254
|
const baseContext = {
|
|
253
|
-
endpoint: request.path
|
|
255
|
+
endpoint: request.path,
|
|
256
|
+
...(request.baseId && { baseId: request.baseId }),
|
|
257
|
+
...(upstreamErrorType && { upstreamErrorType }),
|
|
258
|
+
...(upstreamErrorMessage && { upstreamErrorMessage }),
|
|
259
|
+
...(requestId && { upstreamRequestId: requestId })
|
|
254
260
|
};
|
|
255
|
-
if (request.baseId) {
|
|
256
|
-
baseContext.baseId = request.baseId;
|
|
257
|
-
}
|
|
258
261
|
if (status === 401 || status === 403) {
|
|
259
262
|
return new errors_1.AuthError('Authentication failed with Airtable', {
|
|
260
263
|
status,
|
|
@@ -274,14 +277,9 @@ class AirtableClient {
|
|
|
274
277
|
});
|
|
275
278
|
}
|
|
276
279
|
if (status === 400 || status === 422) {
|
|
277
|
-
const validationContext = { ...baseContext };
|
|
278
|
-
const upstreamErrorType = this.safeExtractErrorType(body);
|
|
279
|
-
if (upstreamErrorType) {
|
|
280
|
-
validationContext.upstreamErrorType = upstreamErrorType;
|
|
281
|
-
}
|
|
282
280
|
return new errors_1.AirtableValidationError('Airtable validation error', {
|
|
283
281
|
status,
|
|
284
|
-
context:
|
|
282
|
+
context: baseContext
|
|
285
283
|
});
|
|
286
284
|
}
|
|
287
285
|
if (status === 429) {
|
|
@@ -293,14 +291,9 @@ class AirtableClient {
|
|
|
293
291
|
});
|
|
294
292
|
}
|
|
295
293
|
if (status >= 500) {
|
|
296
|
-
const internalContext = { ...baseContext };
|
|
297
|
-
const upstreamErrorType = this.safeExtractErrorType(body);
|
|
298
|
-
if (upstreamErrorType) {
|
|
299
|
-
internalContext.upstreamErrorType = upstreamErrorType;
|
|
300
|
-
}
|
|
301
294
|
return new errors_1.InternalServerError('Airtable returned an internal error', {
|
|
302
295
|
status,
|
|
303
|
-
context:
|
|
296
|
+
context: baseContext
|
|
304
297
|
});
|
|
305
298
|
}
|
|
306
299
|
return new errors_1.InternalServerError('Unexpected Airtable response', {
|
|
@@ -308,17 +301,26 @@ class AirtableClient {
|
|
|
308
301
|
context: baseContext
|
|
309
302
|
});
|
|
310
303
|
}
|
|
311
|
-
|
|
304
|
+
safeExtractErrorInfo(body) {
|
|
312
305
|
if (body && typeof body === 'object' && 'error' in body) {
|
|
313
306
|
const error = body.error;
|
|
314
|
-
if (error && typeof error === 'object'
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
307
|
+
if (error && typeof error === 'object') {
|
|
308
|
+
const errorObj = error;
|
|
309
|
+
const result = {};
|
|
310
|
+
if (typeof errorObj.type === 'string') {
|
|
311
|
+
result.type = errorObj.type;
|
|
312
|
+
}
|
|
313
|
+
if (typeof errorObj.message === 'string') {
|
|
314
|
+
result.message = errorObj.message;
|
|
318
315
|
}
|
|
316
|
+
return result;
|
|
319
317
|
}
|
|
320
318
|
}
|
|
321
|
-
return
|
|
319
|
+
return {};
|
|
320
|
+
}
|
|
321
|
+
extractRequestId(headers) {
|
|
322
|
+
const requestId = headers['x-airtable-request-id'];
|
|
323
|
+
return typeof requestId === 'string' ? requestId : undefined;
|
|
322
324
|
}
|
|
323
325
|
}
|
|
324
326
|
exports.AirtableClient = AirtableClient;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"airtable-client.js","sourceRoot":"","sources":["../../../src/typescript/app/airtable-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"airtable-client.js","sourceRoot":"","sources":["../../../src/typescript/app/airtable-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ const node_crypto_1 = require("node:crypto");
|
|
|
10
10
|
const dotenv_1 = require("dotenv");
|
|
11
11
|
const types_1 = require("./types");
|
|
12
12
|
const errors_1 = require("../errors");
|
|
13
|
+
const validateApiKey_1 = require("./validateApiKey");
|
|
13
14
|
(0, dotenv_1.config)();
|
|
14
15
|
const DEFAULT_EXCEPTION_QUEUE_SIZE = 500;
|
|
15
16
|
function parseCsv(value) {
|
|
@@ -120,10 +121,19 @@ function loadConfig() {
|
|
|
120
121
|
const defaultBaseId = process.env.AIRTABLE_DEFAULT_BASE ?? process.env.AIRTABLE_BASE_ID ?? process.env.AIRTABLE_BASE;
|
|
121
122
|
const allowedBases = determineAllowedBases(defaultBaseId);
|
|
122
123
|
const governance = buildGovernanceSnapshot(allowedBases);
|
|
124
|
+
// Validate token format and collect warnings
|
|
125
|
+
const tokenValidation = (0, validateApiKey_1.validateApiKey)(personalAccessToken);
|
|
126
|
+
if (tokenValidation.warnings.length > 0) {
|
|
127
|
+
// Log warnings to stderr (will be visible in MCP server logs)
|
|
128
|
+
tokenValidation.warnings.forEach((warning) => {
|
|
129
|
+
console.error(`[airtable-mcp] Token warning: ${warning}`);
|
|
130
|
+
});
|
|
131
|
+
}
|
|
123
132
|
const auth = {
|
|
124
133
|
personalAccessToken,
|
|
125
134
|
patHash: hashSecret(personalAccessToken),
|
|
126
|
-
allowedBases
|
|
135
|
+
allowedBases,
|
|
136
|
+
tokenFormatWarnings: tokenValidation.warnings
|
|
127
137
|
};
|
|
128
138
|
if (defaultBaseId) {
|
|
129
139
|
auth.defaultBaseId = defaultBaseId;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/typescript/app/config.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/typescript/app/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -39,8 +39,8 @@ class Logger {
|
|
|
39
39
|
...this.context,
|
|
40
40
|
...(Object.keys(metadata).length > 0 ? { metadata } : {})
|
|
41
41
|
};
|
|
42
|
-
//
|
|
43
|
-
|
|
42
|
+
// Write logs to stderr so we don't corrupt the MCP stdio protocol stream.
|
|
43
|
+
process.stderr.write(`${JSON.stringify(output)}\n`);
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
exports.Logger = Logger;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/typescript/app/logger.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAA6B;IAC5C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAIF,MAAa,MAAM;IAIjB,YAAY,KAAe,EAAE,UAAuB,EAAE;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAoB;QACxB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC9C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC9C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,QAAqB;QACjE,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG;YACb,SAAS;YACT,KAAK;YACL,OAAO;YACP,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;QAEF,
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/typescript/app/logger.ts"],"names":[],"mappings":";;;AAEA,MAAM,WAAW,GAA6B;IAC5C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAIF,MAAa,MAAM;IAIjB,YAAY,KAAe,EAAE,UAAuB,EAAE;QACpD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAoB;QACxB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC9C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC9C,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,WAAwB,EAAE;QAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEO,GAAG,CAAC,KAAe,EAAE,OAAe,EAAE,QAAqB;QACjE,IAAI,WAAW,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,MAAM,GAAG;YACb,SAAS;YACT,KAAK;YACL,OAAO;YACP,GAAG,IAAI,CAAC,OAAO;YACf,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAC;QAEF,0EAA0E;QAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;CACF;AA9CD,wBA8CC"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Sanitization utilities for Airtable formula strings.
|
|
4
|
+
*
|
|
5
|
+
* Prevents formula injection attacks by escaping user-provided
|
|
6
|
+
* strings before they're interpolated into Airtable formulas.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.escapeFormulaString = escapeFormulaString;
|
|
10
|
+
exports.validateFormula = validateFormula;
|
|
11
|
+
exports.buildSafeFindFormula = buildSafeFindFormula;
|
|
12
|
+
exports.buildSafeEqualityFormula = buildSafeEqualityFormula;
|
|
13
|
+
/**
|
|
14
|
+
* Escapes a string for safe use within Airtable formula string literals.
|
|
15
|
+
*
|
|
16
|
+
* Airtable formulas use double quotes for strings. This function escapes:
|
|
17
|
+
* - Double quotes (") -> \"
|
|
18
|
+
* - Backslashes (\) -> \\
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* // Safe interpolation in formula:
|
|
22
|
+
* const formula = `Name = "${escapeFormulaString(userInput)}"`;
|
|
23
|
+
*
|
|
24
|
+
* @param input - The user-provided string to escape
|
|
25
|
+
* @returns The escaped string safe for use in formulas
|
|
26
|
+
*/
|
|
27
|
+
function escapeFormulaString(input) {
|
|
28
|
+
if (!input)
|
|
29
|
+
return '';
|
|
30
|
+
// Escape backslashes first, then quotes
|
|
31
|
+
return input
|
|
32
|
+
.replace(/\\/g, '\\\\')
|
|
33
|
+
.replace(/"/g, '\\"');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Validates that a formula string doesn't contain obvious injection attempts.
|
|
37
|
+
*
|
|
38
|
+
* This is a heuristic check - not foolproof, but catches common patterns.
|
|
39
|
+
* Should be used in addition to escapeFormulaString, not as a replacement.
|
|
40
|
+
*
|
|
41
|
+
* @param formula - The complete formula string to validate
|
|
42
|
+
* @returns Object with isValid flag and optional warning message
|
|
43
|
+
*/
|
|
44
|
+
function validateFormula(formula) {
|
|
45
|
+
if (!formula) {
|
|
46
|
+
return { isValid: true };
|
|
47
|
+
}
|
|
48
|
+
// Check for unbalanced quotes (simple heuristic)
|
|
49
|
+
const quoteCount = (formula.match(/(?<!\\)"/g) || []).length;
|
|
50
|
+
if (quoteCount % 2 !== 0) {
|
|
51
|
+
return {
|
|
52
|
+
isValid: false,
|
|
53
|
+
warning: 'Formula contains unbalanced quotes'
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
// Check for suspicious patterns that might indicate injection
|
|
57
|
+
const suspiciousPatterns = [
|
|
58
|
+
/"\s*\)\s*,/, // Closing quote followed by ) and comma - potential function breakout
|
|
59
|
+
/"\s*&\s*"/, // String concatenation that might be injection
|
|
60
|
+
];
|
|
61
|
+
for (const pattern of suspiciousPatterns) {
|
|
62
|
+
if (pattern.test(formula)) {
|
|
63
|
+
return {
|
|
64
|
+
isValid: false,
|
|
65
|
+
warning: 'Formula contains suspicious patterns'
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return { isValid: true };
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Builds a safe FIND formula for searching text in a field.
|
|
73
|
+
*
|
|
74
|
+
* @param searchTerm - The user-provided search term
|
|
75
|
+
* @param fieldName - The field name to search in
|
|
76
|
+
* @returns A safe FIND formula string
|
|
77
|
+
*/
|
|
78
|
+
function buildSafeFindFormula(searchTerm, fieldName) {
|
|
79
|
+
const escapedTerm = escapeFormulaString(searchTerm);
|
|
80
|
+
const escapedField = escapeFormulaString(fieldName);
|
|
81
|
+
return `FIND("${escapedTerm}", {${escapedField}})`;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Builds a safe equality comparison formula.
|
|
85
|
+
*
|
|
86
|
+
* @param fieldName - The field name to compare
|
|
87
|
+
* @param value - The user-provided value to compare against
|
|
88
|
+
* @returns A safe equality formula string
|
|
89
|
+
*/
|
|
90
|
+
function buildSafeEqualityFormula(fieldName, value) {
|
|
91
|
+
const escapedField = escapeFormulaString(fieldName);
|
|
92
|
+
const escapedValue = escapeFormulaString(value);
|
|
93
|
+
return `{${escapedField}} = "${escapedValue}"`;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../../src/typescript/app/sanitize.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAgBH,kDAOC;AAWD,0CA8BC;AASD,oDAIC;AASD,4DAIC;AAxFD;;;;;;;;;;;;;GAaG;AACH,SAAgB,mBAAmB,CAAC,KAAa;IAC/C,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,wCAAwC;IACxC,OAAO,KAAK;SACT,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe,CAAC,OAAe;IAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAED,iDAAiD;IACjD,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IAC7D,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,oCAAoC;SAC9C,CAAC;IACJ,CAAC;IAED,8DAA8D;IAC9D,MAAM,kBAAkB,GAAG;QACzB,YAAY,EAAG,sEAAsE;QACrF,WAAW,EAAI,+CAA+C;KAC/D,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,sCAAsC;aAChD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAAC,UAAkB,EAAE,SAAiB;IACxE,MAAM,WAAW,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,OAAO,SAAS,WAAW,OAAO,YAAY,IAAI,CAAC;AACrD,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,wBAAwB,CAAC,SAAiB,EAAE,KAAa;IACvE,MAAM,YAAY,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,YAAY,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAChD,OAAO,IAAI,YAAY,QAAQ,YAAY,GAAG,CAAC;AACjD,CAAC"}
|
|
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.registerCreateTool = registerCreateTool;
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const handleError_1 = require("./handleError");
|
|
6
|
+
const response_1 = require("./response");
|
|
6
7
|
function chunk(arr, size) {
|
|
7
8
|
const out = [];
|
|
8
9
|
for (let i = 0; i < arr.length; i += size)
|
|
@@ -27,7 +28,7 @@ function registerCreateTool(server, ctx) {
|
|
|
27
28
|
dryRun: true,
|
|
28
29
|
records: args.records.map((r) => ({ id: 'pending', fields: r.fields }))
|
|
29
30
|
};
|
|
30
|
-
return
|
|
31
|
+
return (0, response_1.createToolResponse)(structuredContent);
|
|
31
32
|
}
|
|
32
33
|
const chunks = chunk(args.records, 10);
|
|
33
34
|
const aggregated = [];
|
|
@@ -44,7 +45,7 @@ function registerCreateTool(server, ctx) {
|
|
|
44
45
|
dryRun: false
|
|
45
46
|
};
|
|
46
47
|
logger.info('Create completed', { added: aggregated.length });
|
|
47
|
-
return
|
|
48
|
+
return (0, response_1.createToolResponse)(structuredContent);
|
|
48
49
|
}
|
|
49
50
|
catch (error) {
|
|
50
51
|
return (0, handleError_1.handleToolError)('create', error, ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/typescript/app/tools/create.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../../src/typescript/app/tools/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,52 +4,89 @@ exports.registerDescribeTool = registerDescribeTool;
|
|
|
4
4
|
const types_1 = require("../types");
|
|
5
5
|
const errors_1 = require("../../errors");
|
|
6
6
|
const handleError_1 = require("./handleError");
|
|
7
|
-
|
|
7
|
+
const response_1 = require("./response");
|
|
8
|
+
/**
|
|
9
|
+
* Normalize field based on detail level:
|
|
10
|
+
* - identifiersOnly: only id and name
|
|
11
|
+
* - full: all details including type, description, options
|
|
12
|
+
*/
|
|
13
|
+
function normalizeField(raw, detailLevel) {
|
|
8
14
|
const source = raw;
|
|
9
15
|
const field = {
|
|
10
16
|
id: String(source?.id ?? ''),
|
|
11
17
|
name: String(source?.name ?? ''),
|
|
12
|
-
type: String(source?.type ?? '')
|
|
18
|
+
type: detailLevel === 'full' ? String(source?.type ?? '') : ''
|
|
13
19
|
};
|
|
14
|
-
|
|
15
|
-
|
|
20
|
+
// Only include full details in 'full' mode
|
|
21
|
+
if (detailLevel === 'full') {
|
|
22
|
+
if (source?.description && typeof source.description === 'string') {
|
|
23
|
+
field.description = source.description;
|
|
24
|
+
}
|
|
25
|
+
if (source?.options && typeof source.options === 'object') {
|
|
26
|
+
field.options = source.options;
|
|
27
|
+
}
|
|
16
28
|
}
|
|
17
|
-
|
|
18
|
-
|
|
29
|
+
// Remove empty type for identifiersOnly
|
|
30
|
+
if (detailLevel === 'identifiersOnly') {
|
|
31
|
+
delete field.type;
|
|
19
32
|
}
|
|
20
33
|
return field;
|
|
21
34
|
}
|
|
22
|
-
|
|
35
|
+
/**
|
|
36
|
+
* Normalize view based on detail level:
|
|
37
|
+
* - identifiersOnly: only id and name
|
|
38
|
+
* - full: includes type
|
|
39
|
+
*/
|
|
40
|
+
function normalizeView(raw, detailLevel) {
|
|
23
41
|
const source = raw;
|
|
24
42
|
const view = {
|
|
25
43
|
id: String(source?.id ?? ''),
|
|
26
44
|
name: String(source?.name ?? '')
|
|
27
45
|
};
|
|
28
|
-
if (source?.type && typeof source.type === 'string') {
|
|
46
|
+
if (detailLevel === 'full' && source?.type && typeof source.type === 'string') {
|
|
29
47
|
view.type = source.type;
|
|
30
48
|
}
|
|
31
49
|
return view;
|
|
32
50
|
}
|
|
33
|
-
|
|
51
|
+
/**
|
|
52
|
+
* Normalize table based on detail level:
|
|
53
|
+
* - tableIdentifiersOnly: only id and name
|
|
54
|
+
* - identifiersOnly: id, name, and field/view identifiers
|
|
55
|
+
* - full: complete details
|
|
56
|
+
*/
|
|
57
|
+
function normalizeTable(raw, options) {
|
|
58
|
+
const { detailLevel, includeFields, includeViews } = options;
|
|
34
59
|
const source = raw;
|
|
35
60
|
const table = {
|
|
36
61
|
id: String(source?.id ?? ''),
|
|
37
62
|
name: String(source?.name ?? '')
|
|
38
63
|
};
|
|
64
|
+
// tableIdentifiersOnly: stop here
|
|
65
|
+
if (detailLevel === 'tableIdentifiersOnly') {
|
|
66
|
+
return table;
|
|
67
|
+
}
|
|
68
|
+
// identifiersOnly and full: include primaryFieldId
|
|
39
69
|
if (source?.primaryFieldId && typeof source.primaryFieldId === 'string') {
|
|
40
70
|
table.primaryFieldId = source.primaryFieldId;
|
|
41
71
|
}
|
|
72
|
+
// Include fields based on settings
|
|
42
73
|
if (includeFields && Array.isArray(source?.fields)) {
|
|
43
|
-
table.fields = source.fields.map((field) => normalizeField(field));
|
|
74
|
+
table.fields = source.fields.map((field) => normalizeField(field, detailLevel));
|
|
44
75
|
}
|
|
76
|
+
// Include views based on settings
|
|
45
77
|
if (includeViews && Array.isArray(source?.views)) {
|
|
46
|
-
table.views = source.views.map((view) => normalizeView(view));
|
|
78
|
+
table.views = source.views.map((view) => normalizeView(view, detailLevel));
|
|
47
79
|
}
|
|
48
80
|
return table;
|
|
49
81
|
}
|
|
50
82
|
function registerDescribeTool(server, ctx) {
|
|
51
83
|
server.registerTool('describe', {
|
|
52
|
-
description:
|
|
84
|
+
description: `Describe Airtable base or table schema.
|
|
85
|
+
|
|
86
|
+
Use detailLevel to optimize context usage:
|
|
87
|
+
- tableIdentifiersOnly: Only table IDs and names (minimal)
|
|
88
|
+
- identifiersOnly: Table, field, and view IDs and names
|
|
89
|
+
- full: Complete details including field types and options (default)`,
|
|
53
90
|
inputSchema: types_1.describeInputShape,
|
|
54
91
|
outputSchema: types_1.describeOutputSchema.shape
|
|
55
92
|
}, async (args, _extra) => {
|
|
@@ -57,12 +94,22 @@ function registerDescribeTool(server, ctx) {
|
|
|
57
94
|
const input = types_1.describeInputSchema.parse(args);
|
|
58
95
|
ctx.governance.ensureOperationAllowed('describe');
|
|
59
96
|
ctx.governance.ensureBaseAllowed(input.baseId);
|
|
60
|
-
|
|
61
|
-
const
|
|
97
|
+
// Determine detail level and field/view inclusion
|
|
98
|
+
const detailLevel = input.detailLevel ?? 'full';
|
|
99
|
+
// For backward compatibility, respect includeFields/includeViews
|
|
100
|
+
// but detailLevel takes precedence for tableIdentifiersOnly
|
|
101
|
+
const includeFields = detailLevel !== 'tableIdentifiersOnly' && (input.includeFields ?? true);
|
|
102
|
+
const includeViews = detailLevel !== 'tableIdentifiersOnly' && (input.includeViews ?? false);
|
|
103
|
+
const normalizeOptions = {
|
|
104
|
+
detailLevel,
|
|
105
|
+
includeFields,
|
|
106
|
+
includeViews
|
|
107
|
+
};
|
|
62
108
|
const logger = ctx.logger.child({
|
|
63
109
|
tool: 'describe',
|
|
64
110
|
baseId: input.baseId,
|
|
65
|
-
scope: input.scope
|
|
111
|
+
scope: input.scope,
|
|
112
|
+
detailLevel
|
|
66
113
|
});
|
|
67
114
|
const [baseInfo, tableInfo] = await Promise.all([
|
|
68
115
|
ctx.airtable.getBase(input.baseId),
|
|
@@ -87,7 +134,7 @@ function registerDescribeTool(server, ctx) {
|
|
|
87
134
|
: false;
|
|
88
135
|
return idAllowed || nameAllowed;
|
|
89
136
|
})
|
|
90
|
-
.map((table) => normalizeTable(table,
|
|
137
|
+
.map((table) => normalizeTable(table, normalizeOptions));
|
|
91
138
|
let selectedTables = tables;
|
|
92
139
|
if (input.scope === 'table') {
|
|
93
140
|
const target = tables.find((tableRecord) => String(tableRecord.id) === input.table ||
|
|
@@ -128,15 +175,12 @@ function registerDescribeTool(server, ctx) {
|
|
|
128
175
|
const record = table;
|
|
129
176
|
return Array.isArray(record.views) ? record.views : [];
|
|
130
177
|
})
|
|
131
|
-
.map((view) => normalizeView(view));
|
|
178
|
+
.map((view) => normalizeView(view, detailLevel));
|
|
132
179
|
}
|
|
133
180
|
logger.debug('Describe completed', {
|
|
134
181
|
tableCount: selectedTables.length
|
|
135
182
|
});
|
|
136
|
-
return
|
|
137
|
-
structuredContent,
|
|
138
|
-
content: []
|
|
139
|
-
};
|
|
183
|
+
return (0, response_1.createToolResponse)(structuredContent);
|
|
140
184
|
}
|
|
141
185
|
catch (error) {
|
|
142
186
|
return (0, handleError_1.handleToolError)('describe', error, ctx);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../../src/typescript/app/tools/describe.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"describe.js","sourceRoot":"","sources":["../../../../src/typescript/app/tools/describe.ts"],"names":[],"mappings":"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"}
|