air-mcp-server 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +90 -0
  2. package/bin/air-mcp-http.js +2 -0
  3. package/bin/air-mcp.js +10 -0
  4. package/dist/core/utils/air-home.d.ts +6 -0
  5. package/dist/core/utils/air-home.js +72 -0
  6. package/dist/http.js +12738 -0
  7. package/dist/http.js.map +7 -0
  8. package/dist/index.js +12571 -0
  9. package/dist/index.js.map +7 -0
  10. package/dist/packages/mcp-server/src/config.d.ts +17 -0
  11. package/dist/packages/mcp-server/src/config.js +105 -0
  12. package/dist/packages/mcp-server/src/context.d.ts +10 -0
  13. package/dist/packages/mcp-server/src/context.js +18 -0
  14. package/dist/packages/mcp-server/src/http.d.ts +1 -0
  15. package/dist/packages/mcp-server/src/http.js +189 -0
  16. package/dist/packages/mcp-server/src/index.d.ts +1 -0
  17. package/dist/packages/mcp-server/src/index.js +37 -0
  18. package/dist/packages/mcp-server/src/server.d.ts +18 -0
  19. package/dist/packages/mcp-server/src/server.js +35 -0
  20. package/dist/packages/mcp-server/src/tools/get-session-flow-review.d.ts +2 -0
  21. package/dist/packages/mcp-server/src/tools/get-session-flow-review.js +62 -0
  22. package/dist/packages/mcp-server/src/tools/get-session-generation-context.d.ts +2 -0
  23. package/dist/packages/mcp-server/src/tools/get-session-generation-context.js +118 -0
  24. package/dist/packages/mcp-server/src/tools/index.d.ts +2 -0
  25. package/dist/packages/mcp-server/src/tools/index.js +13 -0
  26. package/dist/packages/mcp-server/src/tools/list-recorded-sessions.d.ts +2 -0
  27. package/dist/packages/mcp-server/src/tools/list-recorded-sessions.js +57 -0
  28. package/dist/packages/mcp-server/src/utils/errors.d.ts +4 -0
  29. package/dist/packages/mcp-server/src/utils/errors.js +15 -0
  30. package/dist/packages/mcp-server/src/utils/privacy.d.ts +8 -0
  31. package/dist/packages/mcp-server/src/utils/privacy.js +15 -0
  32. package/package.json +46 -0
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.listRecordedSessionsTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const privacy_1 = require("../utils/privacy");
6
+ const errors_1 = require("../utils/errors");
7
+ const ListRecordedSessionsArgsSchema = zod_1.z.object({
8
+ limit: zod_1.z.number().optional(),
9
+ offset: zod_1.z.number().optional(),
10
+ recentDays: zod_1.z.number().optional(),
11
+ }).default({});
12
+ exports.listRecordedSessionsTool = {
13
+ definition: {
14
+ name: 'list_recorded_sessions',
15
+ description: 'List available AIR recorded sessions by recording start time, newest first.',
16
+ inputSchema: {
17
+ type: 'object',
18
+ properties: {
19
+ limit: {
20
+ type: 'number',
21
+ description: 'Maximum number of sessions to return. Default 10, max 50.'
22
+ },
23
+ offset: {
24
+ type: 'number',
25
+ description: 'Number of sessions to skip. Default 0.'
26
+ },
27
+ recentDays: {
28
+ type: 'number',
29
+ description: 'Optional filter for sessions started in the last N days. Max 365.'
30
+ }
31
+ },
32
+ additionalProperties: false
33
+ }
34
+ },
35
+ handle: async (args, context) => {
36
+ try {
37
+ const parsedArgs = ListRecordedSessionsArgsSchema.parse(args || {});
38
+ const service = context.getCodegenService();
39
+ const result = service.listRecordedSessions(parsedArgs);
40
+ const wrapped = (0, privacy_1.wrapWithPrivacy)(result);
41
+ return {
42
+ content: [
43
+ {
44
+ type: 'text',
45
+ text: JSON.stringify(wrapped, null, 2),
46
+ },
47
+ ],
48
+ };
49
+ }
50
+ catch (error) {
51
+ if (error instanceof zod_1.z.ZodError) {
52
+ throw (0, errors_1.createInvalidArgumentsError)(error.message);
53
+ }
54
+ throw (0, errors_1.createDatabaseUnavailableError)(error instanceof Error ? error.message : 'Unknown database error');
55
+ }
56
+ }
57
+ };
@@ -0,0 +1,4 @@
1
+ import { McpError } from '@modelcontextprotocol/sdk/types.js';
2
+ export declare function createSessionNotFoundError(sessionId: string): McpError;
3
+ export declare function createDatabaseUnavailableError(message: string): McpError;
4
+ export declare function createInvalidArgumentsError(message: string): McpError;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createSessionNotFoundError = createSessionNotFoundError;
4
+ exports.createDatabaseUnavailableError = createDatabaseUnavailableError;
5
+ exports.createInvalidArgumentsError = createInvalidArgumentsError;
6
+ const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
7
+ function createSessionNotFoundError(sessionId) {
8
+ return new types_js_1.McpError(types_js_1.ErrorCode.InvalidRequest, `Session not found: ${sessionId}`);
9
+ }
10
+ function createDatabaseUnavailableError(message) {
11
+ return new types_js_1.McpError(types_js_1.ErrorCode.InternalError, `Database unavailable: ${message}`);
12
+ }
13
+ function createInvalidArgumentsError(message) {
14
+ return new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Invalid arguments: ${message}`);
15
+ }
@@ -0,0 +1,8 @@
1
+ export interface PrivacyMeta {
2
+ privacy: string;
3
+ }
4
+ export declare function createPrivacyMeta(): PrivacyMeta;
5
+ export declare function wrapWithPrivacy<T>(data: T): {
6
+ _meta: PrivacyMeta;
7
+ data: T;
8
+ };
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPrivacyMeta = createPrivacyMeta;
4
+ exports.wrapWithPrivacy = wrapWithPrivacy;
5
+ function createPrivacyMeta() {
6
+ return {
7
+ privacy: "This context may contain local DOM excerpts or masked values. Do not leak sensitive PII."
8
+ };
9
+ }
10
+ function wrapWithPrivacy(data) {
11
+ return {
12
+ _meta: createPrivacyMeta(),
13
+ data
14
+ };
15
+ }
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "air-mcp-server",
3
+ "version": "0.1.0",
4
+ "description": "AIR MCP Server",
5
+ "engines": {
6
+ "node": ">=22.0.0"
7
+ },
8
+ "license": "MIT",
9
+ "keywords": [
10
+ "air",
11
+ "mcp",
12
+ "test-automation",
13
+ "playwright",
14
+ "recording"
15
+ ],
16
+ "main": "dist/index.js",
17
+ "files": [
18
+ "dist",
19
+ "bin"
20
+ ],
21
+ "bin": {
22
+ "air-mcp-server": "./bin/air-mcp.js",
23
+ "air-mcp": "./bin/air-mcp.js",
24
+ "air-mcp-http": "./bin/air-mcp-http.js"
25
+ },
26
+ "scripts": {
27
+ "build": "node build.mjs",
28
+ "dev": "node build.mjs --watch",
29
+ "start": "node dist/index.js",
30
+ "start:http": "node dist/http.js",
31
+ "start:dev:stdio": "tsx src/index.ts",
32
+ "start:dev:http": "tsx src/http.ts"
33
+ },
34
+ "dependencies": {
35
+ "@modelcontextprotocol/sdk": "^1.0.1",
36
+ "zod": "^3.23.0"
37
+ },
38
+ "devDependencies": {
39
+ "@types/node": "^20.0.0",
40
+ "esbuild": "^0.24.0",
41
+ "typescript": "5.6.3",
42
+ "@air/codegen": "0.1.0",
43
+ "@air/core": "*",
44
+ "@air/shared": "0.1.0"
45
+ }
46
+ }