fridayy 1.2.1 → 1.3.1
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 +61 -3
- package/dist/adapters/laravel/adapter.d.ts +21 -0
- package/dist/adapters/laravel/adapter.d.ts.map +1 -0
- package/dist/adapters/laravel/adapter.js +130 -0
- package/dist/adapters/laravel/adapter.js.map +1 -0
- package/dist/adapters/laravel/route-scanner.d.ts +39 -0
- package/dist/adapters/laravel/route-scanner.d.ts.map +1 -0
- package/dist/adapters/laravel/route-scanner.js +238 -0
- package/dist/adapters/laravel/route-scanner.js.map +1 -0
- package/dist/adapters/manual/adapter.d.ts.map +1 -1
- package/dist/adapters/manual/adapter.js +2 -5
- package/dist/adapters/manual/adapter.js.map +1 -1
- package/dist/adapters/nodejs/adapter.d.ts.map +1 -1
- package/dist/adapters/nodejs/adapter.js +2 -5
- package/dist/adapters/nodejs/adapter.js.map +1 -1
- package/dist/adapters/openapi/adapter.d.ts.map +1 -1
- package/dist/adapters/openapi/adapter.js +2 -5
- package/dist/adapters/openapi/adapter.js.map +1 -1
- package/dist/adapters/openapi/request-builder.d.ts +20 -1
- package/dist/adapters/openapi/request-builder.d.ts.map +1 -1
- package/dist/adapters/openapi/request-builder.js +32 -0
- package/dist/adapters/openapi/request-builder.js.map +1 -1
- package/dist/adapters/registry.d.ts.map +1 -1
- package/dist/adapters/registry.js +2 -0
- package/dist/adapters/registry.js.map +1 -1
- package/dist/adapters/rest/adapter.d.ts.map +1 -1
- package/dist/adapters/rest/adapter.js +10 -10
- package/dist/adapters/rest/adapter.js.map +1 -1
- package/dist/adapters/rest/executor.d.ts.map +1 -1
- package/dist/adapters/rest/executor.js +1 -2
- package/dist/adapters/rest/executor.js.map +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +27 -3
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +61 -1
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +8 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/review.d.ts.map +1 -1
- package/dist/cli/commands/review.js +25 -0
- package/dist/cli/commands/review.js.map +1 -1
- package/dist/cli/commands/secrets.d.ts +9 -0
- package/dist/cli/commands/secrets.d.ts.map +1 -0
- package/dist/cli/commands/secrets.js +50 -0
- package/dist/cli/commands/secrets.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +14 -1
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +34 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/ui/banner.d.ts.map +1 -1
- package/dist/cli/ui/banner.js +2 -1
- package/dist/cli/ui/banner.js.map +1 -1
- package/dist/config/credentials-store.d.ts +24 -0
- package/dist/config/credentials-store.d.ts.map +1 -0
- package/dist/config/credentials-store.js +73 -0
- package/dist/config/credentials-store.js.map +1 -0
- package/dist/config/global-dir.d.ts +21 -0
- package/dist/config/global-dir.d.ts.map +1 -0
- package/dist/config/global-dir.js +34 -0
- package/dist/config/global-dir.js.map +1 -0
- package/dist/config/package-info.d.ts +8 -0
- package/dist/config/package-info.d.ts.map +1 -0
- package/dist/config/package-info.js +27 -0
- package/dist/config/package-info.js.map +1 -0
- package/dist/core/authentication/secret-resolver.d.ts +11 -2
- package/dist/core/authentication/secret-resolver.d.ts.map +1 -1
- package/dist/core/authentication/secret-resolver.js +18 -3
- package/dist/core/authentication/secret-resolver.js.map +1 -1
- package/dist/core/discovery/project-scanner.d.ts +1 -0
- package/dist/core/discovery/project-scanner.d.ts.map +1 -1
- package/dist/core/discovery/project-scanner.js +31 -1
- package/dist/core/discovery/project-scanner.js.map +1 -1
- package/dist/core/permissions/classifier.js +3 -3
- package/dist/core/permissions/classifier.js.map +1 -1
- package/dist/core/permissions/enforcer.d.ts +10 -0
- package/dist/core/permissions/enforcer.d.ts.map +1 -1
- package/dist/core/permissions/enforcer.js +22 -2
- package/dist/core/permissions/enforcer.js.map +1 -1
- package/dist/core/schema/types.d.ts +5 -2
- package/dist/core/schema/types.d.ts.map +1 -1
- package/dist/core/validation/config-schema.d.ts +10 -5
- package/dist/core/validation/config-schema.d.ts.map +1 -1
- package/dist/core/validation/config-schema.js +3 -2
- package/dist/core/validation/config-schema.js.map +1 -1
- package/dist/mcp/server/fridayy-server.d.ts +23 -1
- package/dist/mcp/server/fridayy-server.d.ts.map +1 -1
- package/dist/mcp/server/fridayy-server.js +87 -26
- package/dist/mcp/server/fridayy-server.js.map +1 -1
- package/dist/mcp/tools/tool-annotations.d.ts +21 -0
- package/dist/mcp/tools/tool-annotations.d.ts.map +1 -0
- package/dist/mcp/tools/tool-annotations.js +29 -0
- package/dist/mcp/tools/tool-annotations.js.map +1 -0
- package/dist/mcp/tools/tool-handler.d.ts.map +1 -1
- package/dist/mcp/tools/tool-handler.js +35 -0
- package/dist/mcp/tools/tool-handler.js.map +1 -1
- package/dist/security/audit-logger.d.ts.map +1 -1
- package/dist/security/audit-logger.js +4 -1
- package/dist/security/audit-logger.js.map +1 -1
- package/dist/security/sanitizer.d.ts.map +1 -1
- package/dist/security/sanitizer.js +26 -5
- package/dist/security/sanitizer.js.map +1 -1
- package/package.json +4 -2
|
@@ -14,12 +14,27 @@ export interface FridayyServerOptions {
|
|
|
14
14
|
export declare class FridayyMcpServer {
|
|
15
15
|
private server;
|
|
16
16
|
private config;
|
|
17
|
+
private serverName;
|
|
18
|
+
private serverVersion;
|
|
17
19
|
private toolRegistry;
|
|
18
20
|
private toolHandler;
|
|
19
21
|
private resourceRegistry;
|
|
20
22
|
private promptRegistry;
|
|
21
23
|
private sseTransports;
|
|
24
|
+
private sseServers;
|
|
22
25
|
constructor(options: FridayyServerOptions);
|
|
26
|
+
/**
|
|
27
|
+
* Builds a fresh MCP `Server` instance with the standard tool/resource/
|
|
28
|
+
* prompt handlers registered on it.
|
|
29
|
+
*
|
|
30
|
+
* The MCP SDK's `Server.connect()` only supports one connected transport
|
|
31
|
+
* at a time — calling it a second time on the same instance throws
|
|
32
|
+
* "Already connected to a transport." A single shared `Server` therefore
|
|
33
|
+
* cannot serve more than one SSE client concurrently, so `startSse()`
|
|
34
|
+
* calls this once per incoming `/sse` connection rather than reusing one
|
|
35
|
+
* instance across sessions.
|
|
36
|
+
*/
|
|
37
|
+
private createMcpServer;
|
|
23
38
|
private registerHandlers;
|
|
24
39
|
/**
|
|
25
40
|
* Starts the server on Stdio transport (default for Claude Desktop, Cursor, local tools).
|
|
@@ -27,8 +42,15 @@ export declare class FridayyMcpServer {
|
|
|
27
42
|
startStdio(): Promise<void>;
|
|
28
43
|
/**
|
|
29
44
|
* Starts the server on HTTP / SSE transport (for remote or network clients).
|
|
45
|
+
*
|
|
46
|
+
* If `apiKey` is provided, every request except `/health` must present it via
|
|
47
|
+
* an `Authorization: Bearer <key>` header, an `x-api-key` header, or (for the
|
|
48
|
+
* EventSource-based `/sse` GET request, which cannot always set headers) an
|
|
49
|
+
* `?apiKey=` query parameter. Without an apiKey, the transport has no
|
|
50
|
+
* authentication at all — callers exposing this beyond localhost are
|
|
51
|
+
* responsible for restricting network access themselves.
|
|
30
52
|
*/
|
|
31
|
-
startSse(port?: number, host?: string): Promise<{
|
|
53
|
+
startSse(port?: number, host?: string, apiKey?: string): Promise<{
|
|
32
54
|
app: any;
|
|
33
55
|
close: () => Promise<void>;
|
|
34
56
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fridayy-server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server/fridayy-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAYnE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"fridayy-server.d.ts","sourceRoot":"","sources":["../../../src/mcp/server/fridayy-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAYnE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAKzD,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AAErF,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAA8C;IACnE,OAAO,CAAC,UAAU,CAAkC;gBAExC,OAAO,EAAE,oBAAoB;IAmBzC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,eAAe;IAmBvB,OAAO,CAAC,gBAAgB;IA6CxB;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAKxC;;;;;;;;;OASG;IACU,QAAQ,CACnB,IAAI,SAAO,EACX,IAAI,SAAc,EAClB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;QAAE,GAAG,EAAE,GAAG,CAAC;QAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAyF7C,eAAe,IAAI,YAAY;IAI/B,mBAAmB,IAAI,MAAM;CAGrC"}
|
|
@@ -9,31 +9,25 @@ import { ListToolsRequestSchema, CallToolRequestSchema, ListResourcesRequestSche
|
|
|
9
9
|
import express from 'express';
|
|
10
10
|
import { ToolRegistry } from '../tools/tool-registry.js';
|
|
11
11
|
import { ToolHandler } from '../tools/tool-handler.js';
|
|
12
|
+
import { buildToolAnnotations } from '../tools/tool-annotations.js';
|
|
12
13
|
import { ResourceRegistry } from '../resources/resource-registry.js';
|
|
13
14
|
import { PromptRegistry } from '../prompts/prompt-registry.js';
|
|
14
15
|
import { defaultAdapterRegistry } from '../../adapters/registry.js';
|
|
15
16
|
export class FridayyMcpServer {
|
|
16
17
|
server;
|
|
17
18
|
config;
|
|
19
|
+
serverName;
|
|
20
|
+
serverVersion;
|
|
18
21
|
toolRegistry;
|
|
19
22
|
toolHandler;
|
|
20
23
|
resourceRegistry;
|
|
21
24
|
promptRegistry;
|
|
22
25
|
sseTransports = new Map();
|
|
26
|
+
sseServers = new Map();
|
|
23
27
|
constructor(options) {
|
|
24
28
|
this.config = options.config;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
this.server = new Server({
|
|
28
|
-
name: serverName,
|
|
29
|
-
version: serverVersion
|
|
30
|
-
}, {
|
|
31
|
-
capabilities: {
|
|
32
|
-
tools: {},
|
|
33
|
-
resources: {},
|
|
34
|
-
prompts: {}
|
|
35
|
-
}
|
|
36
|
-
});
|
|
29
|
+
this.serverName = options.config.server?.name || options.config.name || 'fridayy-mcp-server';
|
|
30
|
+
this.serverVersion = options.config.server?.version || options.config.version || '1.0.0';
|
|
37
31
|
this.toolRegistry = new ToolRegistry(options.tools, options.config);
|
|
38
32
|
this.toolHandler = new ToolHandler({
|
|
39
33
|
config: options.config,
|
|
@@ -41,43 +35,72 @@ export class FridayyMcpServer {
|
|
|
41
35
|
});
|
|
42
36
|
this.resourceRegistry = new ResourceRegistry(this.toolRegistry, options.config);
|
|
43
37
|
this.promptRegistry = new PromptRegistry();
|
|
44
|
-
|
|
38
|
+
// A single default Server instance, used by startStdio() (exactly one
|
|
39
|
+
// client ever connects over stdio) and returned by getUnderlyingServer()
|
|
40
|
+
// for direct in-process connections (e.g. tests using InMemoryTransport).
|
|
41
|
+
this.server = this.createMcpServer();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Builds a fresh MCP `Server` instance with the standard tool/resource/
|
|
45
|
+
* prompt handlers registered on it.
|
|
46
|
+
*
|
|
47
|
+
* The MCP SDK's `Server.connect()` only supports one connected transport
|
|
48
|
+
* at a time — calling it a second time on the same instance throws
|
|
49
|
+
* "Already connected to a transport." A single shared `Server` therefore
|
|
50
|
+
* cannot serve more than one SSE client concurrently, so `startSse()`
|
|
51
|
+
* calls this once per incoming `/sse` connection rather than reusing one
|
|
52
|
+
* instance across sessions.
|
|
53
|
+
*/
|
|
54
|
+
createMcpServer() {
|
|
55
|
+
const server = new Server({
|
|
56
|
+
name: this.serverName,
|
|
57
|
+
version: this.serverVersion
|
|
58
|
+
}, {
|
|
59
|
+
capabilities: {
|
|
60
|
+
tools: {},
|
|
61
|
+
resources: {},
|
|
62
|
+
prompts: {}
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
this.registerHandlers(server);
|
|
66
|
+
return server;
|
|
45
67
|
}
|
|
46
|
-
registerHandlers() {
|
|
68
|
+
registerHandlers(server) {
|
|
47
69
|
// 1. List Tools Handler
|
|
48
|
-
|
|
70
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
49
71
|
const exposedTools = this.toolRegistry.getExposedTools();
|
|
50
72
|
return {
|
|
51
73
|
tools: exposedTools.map(tool => ({
|
|
52
74
|
name: tool.name,
|
|
53
75
|
description: tool.description,
|
|
54
|
-
inputSchema: tool.inputSchema
|
|
76
|
+
inputSchema: tool.inputSchema,
|
|
77
|
+
annotations: buildToolAnnotations(tool)
|
|
55
78
|
}))
|
|
56
79
|
};
|
|
57
80
|
});
|
|
58
81
|
// 2. Call Tool Handler
|
|
59
|
-
|
|
82
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
60
83
|
const { name, arguments: args } = request.params;
|
|
61
84
|
return await this.toolHandler.handleCall(name, args || {}, this.toolRegistry);
|
|
62
85
|
});
|
|
63
86
|
// 3. List Resources Handler
|
|
64
|
-
|
|
87
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
65
88
|
return {
|
|
66
89
|
resources: this.resourceRegistry.listResources()
|
|
67
90
|
};
|
|
68
91
|
});
|
|
69
92
|
// 4. Read Resource Handler
|
|
70
|
-
|
|
93
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
71
94
|
return this.resourceRegistry.readResource(request.params.uri);
|
|
72
95
|
});
|
|
73
96
|
// 5. List Prompts Handler
|
|
74
|
-
|
|
97
|
+
server.setRequestHandler(ListPromptsRequestSchema, async () => {
|
|
75
98
|
return {
|
|
76
99
|
prompts: this.promptRegistry.listPrompts()
|
|
77
100
|
};
|
|
78
101
|
});
|
|
79
102
|
// 6. Get Prompt Handler
|
|
80
|
-
|
|
103
|
+
server.setRequestHandler(GetPromptRequestSchema, async (request) => {
|
|
81
104
|
return this.promptRegistry.getPrompt(request.params.name, request.params.arguments);
|
|
82
105
|
});
|
|
83
106
|
}
|
|
@@ -90,21 +113,59 @@ export class FridayyMcpServer {
|
|
|
90
113
|
}
|
|
91
114
|
/**
|
|
92
115
|
* Starts the server on HTTP / SSE transport (for remote or network clients).
|
|
116
|
+
*
|
|
117
|
+
* If `apiKey` is provided, every request except `/health` must present it via
|
|
118
|
+
* an `Authorization: Bearer <key>` header, an `x-api-key` header, or (for the
|
|
119
|
+
* EventSource-based `/sse` GET request, which cannot always set headers) an
|
|
120
|
+
* `?apiKey=` query parameter. Without an apiKey, the transport has no
|
|
121
|
+
* authentication at all — callers exposing this beyond localhost are
|
|
122
|
+
* responsible for restricting network access themselves.
|
|
93
123
|
*/
|
|
94
|
-
async startSse(port = 3000, host = 'localhost') {
|
|
124
|
+
async startSse(port = 3000, host = 'localhost', apiKey) {
|
|
95
125
|
const app = express();
|
|
96
126
|
app.use(express.json());
|
|
97
|
-
|
|
127
|
+
if (apiKey) {
|
|
128
|
+
app.use((req, res, next) => {
|
|
129
|
+
if (req.path === '/health') {
|
|
130
|
+
next();
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
const authHeader = req.headers['authorization'];
|
|
134
|
+
const bearerToken = typeof authHeader === 'string' && authHeader.startsWith('Bearer ')
|
|
135
|
+
? authHeader.slice(7)
|
|
136
|
+
: undefined;
|
|
137
|
+
const provided = bearerToken || req.headers['x-api-key'] || req.query.apiKey;
|
|
138
|
+
if (provided !== apiKey) {
|
|
139
|
+
res.status(401).json({
|
|
140
|
+
error: 'UNAUTHORIZED',
|
|
141
|
+
message: 'Missing or invalid API key. Provide it via Authorization: Bearer <key>, x-api-key header, or ?apiKey= query parameter.'
|
|
142
|
+
});
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
next();
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
// SSE endpoint. Each connection gets its own Server instance (see
|
|
149
|
+
// createMcpServer()) so concurrent clients don't fight over one
|
|
150
|
+
// single-transport-at-a-time Server.
|
|
98
151
|
app.get('/sse', async (req, res) => {
|
|
99
152
|
const transport = new SSEServerTransport('/messages', res);
|
|
100
153
|
const sessionId = transport.sessionId;
|
|
154
|
+
const sessionServer = this.createMcpServer();
|
|
101
155
|
this.sseTransports.set(sessionId, transport);
|
|
156
|
+
this.sseServers.set(sessionId, sessionServer);
|
|
102
157
|
req.on('close', () => {
|
|
103
158
|
this.sseTransports.delete(sessionId);
|
|
159
|
+
this.sseServers.delete(sessionId);
|
|
104
160
|
});
|
|
105
|
-
await
|
|
161
|
+
await sessionServer.connect(transport);
|
|
106
162
|
});
|
|
107
|
-
// Message receiver endpoint
|
|
163
|
+
// Message receiver endpoint. express.json() above has already consumed
|
|
164
|
+
// and parsed the request body, so the underlying stream is no longer
|
|
165
|
+
// readable — the SDK's handlePostMessage() must be given that parsed
|
|
166
|
+
// body directly (its optional third argument) rather than re-reading
|
|
167
|
+
// req itself, or every POST here fails with "stream is not readable"
|
|
168
|
+
// and the SSE handshake can never complete.
|
|
108
169
|
app.post('/messages', async (req, res) => {
|
|
109
170
|
const sessionId = req.query.sessionId;
|
|
110
171
|
const transport = this.sseTransports.get(sessionId);
|
|
@@ -112,7 +173,7 @@ export class FridayyMcpServer {
|
|
|
112
173
|
res.status(404).json({ error: 'Session not found' });
|
|
113
174
|
return;
|
|
114
175
|
}
|
|
115
|
-
await transport.handlePostMessage(req, res);
|
|
176
|
+
await transport.handlePostMessage(req, res, req.body);
|
|
116
177
|
});
|
|
117
178
|
// Health endpoint
|
|
118
179
|
app.get('/health', (req, res) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fridayy-server.js","sourceRoot":"","sources":["../../../src/mcp/server/fridayy-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,0BAA0B,EAC1B,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAmB,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAQrF,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAS;IACf,MAAM,CAAgB;IACtB,YAAY,CAAe;IAC3B,WAAW,CAAc;IACzB,gBAAgB,CAAmB;IACnC,cAAc,CAAiB;IAC/B,aAAa,GAAoC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"fridayy-server.js","sourceRoot":"","sources":["../../../src/mcp/server/fridayy-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - MCP Tool Annotations Builder
|
|
3
|
+
* Maps fridayy's own READ/WRITE/DESTRUCTIVE permission classification onto the
|
|
4
|
+
* standard MCP tool annotation hints (readOnlyHint, destructiveHint,
|
|
5
|
+
* idempotentHint, openWorldHint) that clients like Claude Desktop and Cursor
|
|
6
|
+
* use to decide what to auto-approve versus confirm with the user.
|
|
7
|
+
*
|
|
8
|
+
* fridayy already computes exactly this classification for every tool (see
|
|
9
|
+
* core/permissions/classifier.ts) — without this, that work stays invisible
|
|
10
|
+
* to the MCP client, which has no signal beyond the tool's name/description
|
|
11
|
+
* for whether a call is safe to run without asking.
|
|
12
|
+
*/
|
|
13
|
+
import { FridayyToolDefinition } from '../../core/schema/types.js';
|
|
14
|
+
export interface ToolAnnotations {
|
|
15
|
+
readOnlyHint: boolean;
|
|
16
|
+
destructiveHint: boolean;
|
|
17
|
+
idempotentHint: boolean;
|
|
18
|
+
openWorldHint: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function buildToolAnnotations(tool: FridayyToolDefinition): ToolAnnotations;
|
|
21
|
+
//# sourceMappingURL=tool-annotations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-annotations.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/tool-annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAEnE,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB;AAOD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,qBAAqB,GAAG,eAAe,CAYjF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - MCP Tool Annotations Builder
|
|
3
|
+
* Maps fridayy's own READ/WRITE/DESTRUCTIVE permission classification onto the
|
|
4
|
+
* standard MCP tool annotation hints (readOnlyHint, destructiveHint,
|
|
5
|
+
* idempotentHint, openWorldHint) that clients like Claude Desktop and Cursor
|
|
6
|
+
* use to decide what to auto-approve versus confirm with the user.
|
|
7
|
+
*
|
|
8
|
+
* fridayy already computes exactly this classification for every tool (see
|
|
9
|
+
* core/permissions/classifier.ts) — without this, that work stays invisible
|
|
10
|
+
* to the MCP client, which has no signal beyond the tool's name/description
|
|
11
|
+
* for whether a call is safe to run without asking.
|
|
12
|
+
*/
|
|
13
|
+
// PUT and DELETE are conventionally idempotent (repeating the same request
|
|
14
|
+
// has the same effect as doing it once); POST and PATCH conventionally are
|
|
15
|
+
// not. GET/HEAD/OPTIONS are read-only, which already implies idempotent.
|
|
16
|
+
const IDEMPOTENT_METHODS = new Set(['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE']);
|
|
17
|
+
export function buildToolAnnotations(tool) {
|
|
18
|
+
const method = (tool.source.method || 'GET').toUpperCase();
|
|
19
|
+
return {
|
|
20
|
+
readOnlyHint: tool.permissions.type === 'READ',
|
|
21
|
+
destructiveHint: tool.permissions.type === 'DESTRUCTIVE',
|
|
22
|
+
idempotentHint: IDEMPOTENT_METHODS.has(method),
|
|
23
|
+
// Every fridayy tool calls out to an external HTTP API rather than
|
|
24
|
+
// operating over a fixed, enumerable set of entities the client already
|
|
25
|
+
// knows about, so this is true for the whole tool surface.
|
|
26
|
+
openWorldHint: true
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=tool-annotations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-annotations.js","sourceRoot":"","sources":["../../../src/mcp/tools/tool-annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH,2EAA2E;AAC3E,2EAA2E;AAC3E,yEAAyE;AACzE,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEhF,MAAM,UAAU,oBAAoB,CAAC,IAA2B;IAC9D,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAE3D,OAAO;QACL,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,MAAM;QAC9C,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,aAAa;QACxD,cAAc,EAAE,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC;QAC9C,mEAAmE;QACnE,wEAAwE;QACxE,2DAA2D;QAC3D,aAAa,EAAE,IAAI;KACpB,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/tool-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAEL,aAAa,EAEd,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,GAAE,kBAAuB;IAe5C;;OAEG;IACU,UAAU,CACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAK,EAC9B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-handler.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/tool-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,EAEL,aAAa,EAEd,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAc;gBAErB,OAAO,GAAE,kBAAuB;IAe5C;;OAEG;IACU,UAAU,CACrB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,YAAK,EAC9B,YAAY,EAAE,YAAY,GACzB,OAAO,CAAC,cAAc,CAAC;CAyN3B"}
|
|
@@ -81,6 +81,41 @@ export class ToolHandler {
|
|
|
81
81
|
]
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
|
+
// 2b. Dynamic Operation Re-classification
|
|
85
|
+
// Some tools (e.g. a generic REST "call_api_endpoint") accept the HTTP method
|
|
86
|
+
// and path as call-time arguments rather than fixing them at generation time.
|
|
87
|
+
// Their static classification (computed with a placeholder method) must not be
|
|
88
|
+
// trusted for the actual call — re-classify using the real method/path so a
|
|
89
|
+
// destructive request (e.g. method: "DELETE") is still blocked/pending review.
|
|
90
|
+
if (tool.metadata?.dynamicExecution) {
|
|
91
|
+
try {
|
|
92
|
+
this.enforcer.validateDynamicOperation(tool, {
|
|
93
|
+
method: args.method,
|
|
94
|
+
path: args.path
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
catch (permErr) {
|
|
98
|
+
this.auditLogger.log({
|
|
99
|
+
timestamp: new Date().toISOString(),
|
|
100
|
+
toolName,
|
|
101
|
+
input: args,
|
|
102
|
+
result: { success: false, durationMs: Date.now() - startTime, error: permErr.code || permErr.message }
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
isError: true,
|
|
106
|
+
content: [
|
|
107
|
+
{
|
|
108
|
+
type: 'text',
|
|
109
|
+
text: JSON.stringify({
|
|
110
|
+
error: permErr.code || 'PERMISSION_DENIED',
|
|
111
|
+
message: permErr.message,
|
|
112
|
+
details: permErr.details
|
|
113
|
+
}, null, 2)
|
|
114
|
+
}
|
|
115
|
+
]
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
}
|
|
84
119
|
// 3. Rate Limit Check
|
|
85
120
|
const rateLimitCheck = this.rateLimiter.checkLimit(toolName, tool.rateLimit);
|
|
86
121
|
if (!rateLimitCheck.allowed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-handler.js","sourceRoot":"","sources":["../../../src/mcp/tools/tool-handler.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tool-handler.js","sourceRoot":"","sources":["../../../src/mcp/tools/tool-handler.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAmB,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAUrF,MAAM,OAAO,WAAW;IACd,MAAM,CAAiB;IACvB,QAAQ,CAAqB;IAC7B,eAAe,CAAkB;IACjC,WAAW,CAAc;IACzB,WAAW,CAAc;IAEjC,YAAY,UAA8B,EAAE;QAC1C,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvD,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,sBAAsB,CAAC;QACzE,IAAI,CAAC,WAAW;YACd,OAAO,CAAC,WAAW;gBACnB,IAAI,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,WAAW;YACd,OAAO,CAAC,WAAW;gBACnB,IAAI,WAAW,CAAC;oBACd,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY;oBAClD,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,IAAI,IAAI;iBAC1D,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU,CACrB,QAAgB,EAChB,OAA4B,EAAE,EAC9B,YAA0B;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAExC,0BAA0B;QAC1B,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ;gBACR,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,gBAAgB,EAAE;aACxF,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,gBAAgB;4BACvB,OAAO,EAAE,SAAS,QAAQ,iCAAiC;yBAC5D,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,OAAY,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ;gBACR,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;aACvG,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,mBAAmB;4BAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,UAAU,EAAE,IAAI,CAAC,MAAM;4BACvB,IAAI,EAAE,IAAI,CAAC,IAAI;4BACf,WAAW,EAAE,IAAI,CAAC,WAAW;yBAC9B,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,8EAA8E;QAC9E,8EAA8E;QAC9E,+EAA+E;QAC/E,4EAA4E;QAC5E,+EAA+E;QAC/E,IAAI,IAAI,CAAC,QAAQ,EAAE,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,wBAAwB,CAAC,IAAI,EAAE;oBAC3C,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,OAAY,EAAE,CAAC;gBACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;oBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,QAAQ;oBACR,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,EAAE;iBACvG,CAAC,CAAC;gBACH,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gCACnB,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI,mBAAmB;gCAC1C,OAAO,EAAE,OAAO,CAAC,OAAO;gCACxB,OAAO,EAAE,OAAO,CAAC,OAAO;6BACzB,EAAE,IAAI,EAAE,CAAC,CAAC;yBACZ;qBACF;iBACF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,sBAAsB;QACtB,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7E,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ;gBACR,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,qBAAqB,EAAE;aAC7F,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,qBAAqB;4BAC5B,OAAO,EAAE,iCAAiC,QAAQ,eAAe,cAAc,CAAC,iBAAiB,IAAI;yBACtG,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,sBAAsB;QACtB,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ;gBACR,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,eAAe,EAAE;aACvF,CAAC,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,eAAe;4BACtB,OAAO,EAAE,yCAAyC,QAAQ,GAAG;4BAC7D,OAAO,EAAE,UAAU,CAAC,MAAM;yBAC3B,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,oBAAoB;QACpB,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,mBAAmB;4BAC1B,OAAO,EAAE,0CAA0C,UAAU,GAAG;yBACjE,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC;YACH,MAAM,MAAM,GAAwB,MAAM,OAAO,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE;gBACxE,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAE1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ;gBACR,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE;oBACN,OAAO,EAAE,MAAM,CAAC,OAAO;oBACvB,UAAU,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU;oBACvC,UAAU;oBACV,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO;iBAC7B;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;yBAC/E;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;qBAC3F;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,OAAY,EAAE,CAAC;YACtB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;gBACnB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,QAAQ;gBACR,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,EAAE;aAC/D,CAAC,CAAC;YAEH,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,KAAK,EAAE,iBAAiB;4BACxB,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,+CAA+C;yBAC5E,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logger.d.ts","sourceRoot":"","sources":["../../src/security/audit-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,cAAc,CAAU;gBAEpB,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO;IAanG;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"audit-logger.d.ts","sourceRoot":"","sources":["../../src/security/audit-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,GAAG,CAAC;IACX,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAU;IAC7B,OAAO,CAAC,cAAc,CAAU;gBAEpB,OAAO,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAO;IAanG;;OAEG;IACI,GAAG,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI;CAkCvC"}
|
|
@@ -36,7 +36,10 @@ export class AuditLogger {
|
|
|
36
36
|
fs.appendFileSync(this.logFilePath, jsonString + '\n', 'utf-8');
|
|
37
37
|
}
|
|
38
38
|
catch (err) {
|
|
39
|
-
//
|
|
39
|
+
// Don't throw (a broken audit log must never break tool execution), but
|
|
40
|
+
// surface the failure once per occurrence so a full disk / bad permissions
|
|
41
|
+
// doesn't silently disable the audit trail without anyone noticing.
|
|
42
|
+
console.error(chalk.red(`[fridayy] Failed to write audit log entry to ${this.logFilePath}: ${err.message}`));
|
|
40
43
|
}
|
|
41
44
|
}
|
|
42
45
|
// Console log (if enabled or debug mode)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-logger.js","sourceRoot":"","sources":["../../src/security/audit-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmB9C,MAAM,OAAO,WAAW;IACd,WAAW,CAAU;IACrB,WAAW,CAAU;IACrB,cAAc,CAAU;IAEhC,YAAY,UAAqF,EAAE;QACjG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;QAEtD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAAoB;QAC7B,MAAM,cAAc,GAAkB;YACpC,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;SAClE,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAElD,WAAW;QACX,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"audit-logger.js","sourceRoot":"","sources":["../../src/security/audit-logger.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAmB9C,MAAM,OAAO,WAAW;IACd,WAAW,CAAU;IACrB,WAAW,CAAU;IACrB,cAAc,CAAU;IAEhC,YAAY,UAAqF,EAAE;QACjG,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,KAAK,CAAC;QAEtD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACI,GAAG,CAAC,KAAoB;QAC7B,MAAM,cAAc,GAAkB;YACpC,GAAG,KAAK;YACR,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;SAClE,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAElD,WAAW;QACX,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,IAAI,CAAC;gBACH,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,wEAAwE;gBACxE,2EAA2E;gBAC3E,oEAAoE;gBACpE,OAAO,CAAC,KAAK,CACX,KAAK,CAAC,GAAG,CAAC,gDAAgD,IAAI,CAAC,WAAW,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAC9F,CAAC;YACJ,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO;gBACtC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC;gBACxB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,eAAe,GAAG,CAAC,CAAC;YACpE,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAE5F,OAAO,CAAC,KAAK,CACX,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,UAAU,IAAI,QAAQ,EAAE,CACpH,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../src/security/sanitizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"sanitizer.d.ts","sourceRoot":"","sources":["../../src/security/sanitizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA8BH;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnD;AAiBD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CA0B3C;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAWvF"}
|
|
@@ -14,12 +14,37 @@ const SENSITIVE_KEY_PATTERNS = [
|
|
|
14
14
|
/cookie/i,
|
|
15
15
|
/session/i
|
|
16
16
|
];
|
|
17
|
+
// Matches JWTs (three dot-separated base64url segments) anywhere in a string.
|
|
18
|
+
const JWT_PATTERN = /\b[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}\b/g;
|
|
19
|
+
// Matches long hex-only tokens (session ids, hashes, many API secrets). Requiring
|
|
20
|
+
// pure hex (no separators, no other letters) keeps the false-positive rate on
|
|
21
|
+
// ordinary human-readable identifiers ("order-20250904-checkout") very low.
|
|
22
|
+
const HEX_TOKEN_PATTERN = /\b[0-9a-fA-F]{32,}\b/g;
|
|
23
|
+
// Common vendor API-key prefixes (Stripe, GitHub, Slack, Google, GitLab, npm,
|
|
24
|
+
// Shopify, AWS, ...). Deliberately prefix-anchored rather than a generic
|
|
25
|
+
// "long alphanumeric string" heuristic, which would also redact harmless
|
|
26
|
+
// identifiers, slugs, and order numbers that happen to be long.
|
|
27
|
+
const VENDOR_KEY_PATTERN = /\b(?:sk|pk|rk)_(?:live|test)_[A-Za-z0-9]{10,}|gh[pousr]_[A-Za-z0-9]{20,}|xox[baprs]-[A-Za-z0-9-]{10,}|AKIA[0-9A-Z]{12,}|ASIA[0-9A-Z]{12,}|AIza[0-9A-Za-z_-]{20,}|glpat-[A-Za-z0-9_-]{15,}|npm_[A-Za-z0-9]{20,}|shpat_[A-Za-z0-9]{20,}/g;
|
|
17
28
|
/**
|
|
18
29
|
* Checks if a key name matches common sensitive parameter naming patterns.
|
|
19
30
|
*/
|
|
20
31
|
export function isSensitiveKey(key) {
|
|
21
32
|
return SENSITIVE_KEY_PATTERNS.some(pattern => pattern.test(key));
|
|
22
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* Redacts secret-shaped substrings (JWTs, bearer tokens, long API-key-like
|
|
36
|
+
* tokens) from a string, independent of the field name it came from.
|
|
37
|
+
*/
|
|
38
|
+
function redactSecretShapes(value) {
|
|
39
|
+
let result = value;
|
|
40
|
+
if (/bearer\s+/i.test(result)) {
|
|
41
|
+
result = result.replace(/bearer\s+\S+/gi, 'Bearer [REDACTED]');
|
|
42
|
+
}
|
|
43
|
+
result = result.replace(JWT_PATTERN, '[REDACTED]');
|
|
44
|
+
result = result.replace(VENDOR_KEY_PATTERN, '[REDACTED]');
|
|
45
|
+
result = result.replace(HEX_TOKEN_PATTERN, '[REDACTED]');
|
|
46
|
+
return result;
|
|
47
|
+
}
|
|
23
48
|
/**
|
|
24
49
|
* Deeply sanitizes an object, replacing sensitive values with '[REDACTED]'.
|
|
25
50
|
*/
|
|
@@ -28,11 +53,7 @@ export function sanitizeData(data) {
|
|
|
28
53
|
return data;
|
|
29
54
|
}
|
|
30
55
|
if (typeof data === 'string') {
|
|
31
|
-
|
|
32
|
-
if (data.startsWith('Bearer ') || data.startsWith('bearer ')) {
|
|
33
|
-
return 'Bearer [REDACTED]';
|
|
34
|
-
}
|
|
35
|
-
return data;
|
|
56
|
+
return redactSecretShapes(data);
|
|
36
57
|
}
|
|
37
58
|
if (Array.isArray(data)) {
|
|
38
59
|
return data.map(item => sanitizeData(item));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../src/security/sanitizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,sBAAsB,GAAG;IAC7B,WAAW;IACX,SAAS;IACT,QAAQ;IACR,cAAc;IACd,OAAO;IACP,aAAa;IACb,kBAAkB;IAClB,SAAS;IACT,SAAS;IACT,UAAU;CACX,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"sanitizer.js","sourceRoot":"","sources":["../../src/security/sanitizer.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fridayy",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.3.1",
|
|
4
4
|
"description": "Universal Application-to-MCP Platform — Turn existing applications and APIs into AI-ready MCP tools",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"type": "module",
|
|
8
|
+
"engines": {
|
|
9
|
+
"node": ">=18.0.0"
|
|
10
|
+
},
|
|
8
11
|
"bin": {
|
|
9
12
|
"fridayy": "bin/fridayy.js"
|
|
10
13
|
},
|
|
@@ -63,7 +66,6 @@
|
|
|
63
66
|
"dotenv": "^16.4.7",
|
|
64
67
|
"express": "^4.21.2",
|
|
65
68
|
"ora": "^8.2.0",
|
|
66
|
-
"undici": "^7.4.0",
|
|
67
69
|
"yaml": "^2.7.0",
|
|
68
70
|
"zod": "^3.24.2",
|
|
69
71
|
"zod-to-json-schema": "^3.24.3"
|