fridayy 1.0.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.
- package/LICENSE +21 -0
- package/README.md +283 -0
- package/bin/fridayy.js +12 -0
- package/dist/adapters/base.d.ts +40 -0
- package/dist/adapters/base.d.ts.map +1 -0
- package/dist/adapters/base.js +7 -0
- package/dist/adapters/base.js.map +1 -0
- package/dist/adapters/manual/adapter.d.ts +18 -0
- package/dist/adapters/manual/adapter.d.ts.map +1 -0
- package/dist/adapters/manual/adapter.js +52 -0
- package/dist/adapters/manual/adapter.js.map +1 -0
- package/dist/adapters/nodejs/adapter.d.ts +19 -0
- package/dist/adapters/nodejs/adapter.d.ts.map +1 -0
- package/dist/adapters/nodejs/adapter.js +135 -0
- package/dist/adapters/nodejs/adapter.js.map +1 -0
- package/dist/adapters/nodejs/ast-scanner.d.ts +21 -0
- package/dist/adapters/nodejs/ast-scanner.d.ts.map +1 -0
- package/dist/adapters/nodejs/ast-scanner.js +102 -0
- package/dist/adapters/nodejs/ast-scanner.js.map +1 -0
- package/dist/adapters/openapi/adapter.d.ts +22 -0
- package/dist/adapters/openapi/adapter.d.ts.map +1 -0
- package/dist/adapters/openapi/adapter.js +271 -0
- package/dist/adapters/openapi/adapter.js.map +1 -0
- package/dist/adapters/openapi/parser.d.ts +30 -0
- package/dist/adapters/openapi/parser.d.ts.map +1 -0
- package/dist/adapters/openapi/parser.js +136 -0
- package/dist/adapters/openapi/parser.js.map +1 -0
- package/dist/adapters/openapi/request-builder.d.ts +13 -0
- package/dist/adapters/openapi/request-builder.d.ts.map +1 -0
- package/dist/adapters/openapi/request-builder.js +83 -0
- package/dist/adapters/openapi/request-builder.js.map +1 -0
- package/dist/adapters/registry.d.ts +28 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +46 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/rest/adapter.d.ts +18 -0
- package/dist/adapters/rest/adapter.d.ts.map +1 -0
- package/dist/adapters/rest/adapter.js +41 -0
- package/dist/adapters/rest/adapter.js.map +1 -0
- package/dist/adapters/rest/executor.d.ts +19 -0
- package/dist/adapters/rest/executor.d.ts.map +1 -0
- package/dist/adapters/rest/executor.js +101 -0
- package/dist/adapters/rest/executor.js.map +1 -0
- package/dist/cli/commands/config.d.ts +7 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +92 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +7 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +126 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +7 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +58 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/init.d.ts +7 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +54 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/review.d.ts +7 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +151 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +7 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +77 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/start.d.ts +7 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +54 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/tools.d.ts +7 -0
- package/dist/cli/commands/tools.d.ts.map +1 -0
- package/dist/cli/commands/tools.js +48 -0
- package/dist/cli/commands/tools.js.map +1 -0
- package/dist/cli/index.d.ts +8 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +42 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui/banner.d.ts +6 -0
- package/dist/cli/ui/banner.d.ts.map +1 -0
- package/dist/cli/ui/banner.js +20 -0
- package/dist/cli/ui/banner.js.map +1 -0
- package/dist/cli/ui/logger.d.ts +12 -0
- package/dist/cli/ui/logger.d.ts.map +1 -0
- package/dist/cli/ui/logger.js +13 -0
- package/dist/cli/ui/logger.js.map +1 -0
- package/dist/cli/ui/tables.d.ts +9 -0
- package/dist/cli/ui/tables.d.ts.map +1 -0
- package/dist/cli/ui/tables.js +72 -0
- package/dist/cli/ui/tables.js.map +1 -0
- package/dist/config/config-manager.d.ts +37 -0
- package/dist/config/config-manager.d.ts.map +1 -0
- package/dist/config/config-manager.js +129 -0
- package/dist/config/config-manager.js.map +1 -0
- package/dist/config/defaults.d.ts +8 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +37 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/core/authentication/manager.d.ts +20 -0
- package/dist/core/authentication/manager.d.ts.map +1 -0
- package/dist/core/authentication/manager.js +71 -0
- package/dist/core/authentication/manager.js.map +1 -0
- package/dist/core/authentication/secret-resolver.d.ts +39 -0
- package/dist/core/authentication/secret-resolver.d.ts.map +1 -0
- package/dist/core/authentication/secret-resolver.js +89 -0
- package/dist/core/authentication/secret-resolver.js.map +1 -0
- package/dist/core/discovery/index.d.ts +5 -0
- package/dist/core/discovery/index.d.ts.map +1 -0
- package/dist/core/discovery/index.js +5 -0
- package/dist/core/discovery/index.js.map +1 -0
- package/dist/core/discovery/project-scanner.d.ts +20 -0
- package/dist/core/discovery/project-scanner.d.ts.map +1 -0
- package/dist/core/discovery/project-scanner.js +174 -0
- package/dist/core/discovery/project-scanner.js.map +1 -0
- package/dist/core/permissions/classifier.d.ts +25 -0
- package/dist/core/permissions/classifier.d.ts.map +1 -0
- package/dist/core/permissions/classifier.js +92 -0
- package/dist/core/permissions/classifier.js.map +1 -0
- package/dist/core/permissions/enforcer.d.ts +24 -0
- package/dist/core/permissions/enforcer.d.ts.map +1 -0
- package/dist/core/permissions/enforcer.js +71 -0
- package/dist/core/permissions/enforcer.js.map +1 -0
- package/dist/core/schema/json-schema.d.ts +29 -0
- package/dist/core/schema/json-schema.d.ts.map +1 -0
- package/dist/core/schema/json-schema.js +129 -0
- package/dist/core/schema/json-schema.js.map +1 -0
- package/dist/core/schema/types.d.ts +187 -0
- package/dist/core/schema/types.d.ts.map +1 -0
- package/dist/core/schema/types.js +6 -0
- package/dist/core/schema/types.js.map +1 -0
- package/dist/core/tool-generator/description-builder.d.ts +15 -0
- package/dist/core/tool-generator/description-builder.d.ts.map +1 -0
- package/dist/core/tool-generator/description-builder.js +32 -0
- package/dist/core/tool-generator/description-builder.js.map +1 -0
- package/dist/core/tool-generator/generator.d.ts +21 -0
- package/dist/core/tool-generator/generator.d.ts.map +1 -0
- package/dist/core/tool-generator/generator.js +61 -0
- package/dist/core/tool-generator/generator.js.map +1 -0
- package/dist/core/tool-generator/name-sanitizer.d.ts +21 -0
- package/dist/core/tool-generator/name-sanitizer.d.ts.map +1 -0
- package/dist/core/tool-generator/name-sanitizer.js +84 -0
- package/dist/core/tool-generator/name-sanitizer.js.map +1 -0
- package/dist/core/validation/config-schema.d.ts +1458 -0
- package/dist/core/validation/config-schema.d.ts.map +1 -0
- package/dist/core/validation/config-schema.js +137 -0
- package/dist/core/validation/config-schema.js.map +1 -0
- package/dist/core/validation/validator.d.ts +28 -0
- package/dist/core/validation/validator.d.ts.map +1 -0
- package/dist/core/validation/validator.js +108 -0
- package/dist/core/validation/validator.js.map +1 -0
- package/dist/index.d.ts +38 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/prompts/prompt-registry.d.ts +28 -0
- package/dist/mcp/prompts/prompt-registry.d.ts.map +1 -0
- package/dist/mcp/prompts/prompt-registry.js +65 -0
- package/dist/mcp/prompts/prompt-registry.js.map +1 -0
- package/dist/mcp/resources/resource-registry.d.ts +26 -0
- package/dist/mcp/resources/resource-registry.d.ts.map +1 -0
- package/dist/mcp/resources/resource-registry.js +87 -0
- package/dist/mcp/resources/resource-registry.js.map +1 -0
- package/dist/mcp/server/fridayy-server.d.ts +38 -0
- package/dist/mcp/server/fridayy-server.d.ts.map +1 -0
- package/dist/mcp/server/fridayy-server.js +143 -0
- package/dist/mcp/server/fridayy-server.js.map +1 -0
- package/dist/mcp/tools/tool-handler.d.ts +29 -0
- package/dist/mcp/tools/tool-handler.d.ts.map +1 -0
- package/dist/mcp/tools/tool-handler.js +206 -0
- package/dist/mcp/tools/tool-handler.js.map +1 -0
- package/dist/mcp/tools/tool-registry.d.ts +20 -0
- package/dist/mcp/tools/tool-registry.d.ts.map +1 -0
- package/dist/mcp/tools/tool-registry.js +38 -0
- package/dist/mcp/tools/tool-registry.js.map +1 -0
- package/dist/security/allowlist.d.ts +10 -0
- package/dist/security/allowlist.d.ts.map +1 -0
- package/dist/security/allowlist.js +30 -0
- package/dist/security/allowlist.js.map +1 -0
- package/dist/security/audit-logger.d.ts +35 -0
- package/dist/security/audit-logger.d.ts.map +1 -0
- package/dist/security/audit-logger.js +52 -0
- package/dist/security/audit-logger.js.map +1 -0
- package/dist/security/rate-limiter.d.ts +28 -0
- package/dist/security/rate-limiter.d.ts.map +1 -0
- package/dist/security/rate-limiter.js +64 -0
- package/dist/security/rate-limiter.js.map +1 -0
- package/dist/security/sanitizer.d.ts +17 -0
- package/dist/security/sanitizer.d.ts.map +1 -0
- package/dist/security/sanitizer.js +70 -0
- package/dist/security/sanitizer.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,wBAAgB,SAAS,IAAI,MAAM,CAYlC;AAED,wBAAgB,WAAW,IAAI,IAAI,CAElC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - CLI Banner & Styling Helpers
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
export function getBanner() {
|
|
6
|
+
const logo = `
|
|
7
|
+
${chalk.cyan.bold('███████╗██████╗ ██╗██████╗ █████╗ ██╗ ██╗██╗ ██╗')}
|
|
8
|
+
${chalk.cyan.bold('██╔════╝██╔══██╗██║██╔══██╗██╔══██╗╚██╗ ██╔╝╚██╗ ██╔╝')}
|
|
9
|
+
${chalk.cyan.bold('█████╗ ██████╔╝██║██║ ██║███████║ ╚████╔╝ ╚████╔╝ ')}
|
|
10
|
+
${chalk.cyan.bold('██╔══╝ ██╔══██╗██║██║ ██║██╔══██║ ╚██╔╝ ╚██╔╝ ')}
|
|
11
|
+
${chalk.cyan.bold('██║ ██║ ██║██║██████╔╝██║ ██║ ██║ ██║ ')}
|
|
12
|
+
${chalk.cyan.bold('╚═╝ ╚═╝ ╚═╝╚═╝╚═════╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ')}
|
|
13
|
+
`;
|
|
14
|
+
const tagline = chalk.gray(' Universal Application-to-MCP Platform — Turn existing APIs into AI-ready tools\n');
|
|
15
|
+
return logo + '\n' + tagline;
|
|
16
|
+
}
|
|
17
|
+
export function printBanner() {
|
|
18
|
+
console.log(getBanner());
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=banner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"banner.js","sourceRoot":"","sources":["../../../src/cli/ui/banner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG;IACX,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC;GACzE,CAAC;IAEF,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;IACjH,OAAO,IAAI,GAAG,IAAI,GAAG,OAAO,CAAC;AAC/B,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - CLI Logger and Pretty Printer
|
|
3
|
+
*/
|
|
4
|
+
export declare const logger: {
|
|
5
|
+
info: (msg: string) => void;
|
|
6
|
+
success: (msg: string) => void;
|
|
7
|
+
warn: (msg: string) => void;
|
|
8
|
+
error: (msg: string) => void;
|
|
9
|
+
title: (msg: string) => void;
|
|
10
|
+
step: (step: number, total: number, msg: string) => void;
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,eAAO,MAAM,MAAM;gBACL,MAAM;mBACH,MAAM;gBACT,MAAM;iBACL,MAAM;iBACN,MAAM;iBACN,MAAM,SAAS,MAAM,OAAO,MAAM;CAEhD,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - CLI Logger and Pretty Printer
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
export const logger = {
|
|
6
|
+
info: (msg) => console.log(chalk.blue('ℹ'), msg),
|
|
7
|
+
success: (msg) => console.log(chalk.green('✓'), msg),
|
|
8
|
+
warn: (msg) => console.log(chalk.yellow('⚠'), msg),
|
|
9
|
+
error: (msg) => console.error(chalk.red('✖'), msg),
|
|
10
|
+
title: (msg) => console.log('\n' + chalk.bold.underline(msg) + '\n'),
|
|
11
|
+
step: (step, total, msg) => console.log(chalk.cyan(`[${step}/${total}]`), chalk.bold(msg))
|
|
12
|
+
};
|
|
13
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/cli/ui/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IACxD,OAAO,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC5D,IAAI,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC1D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC1D,KAAK,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC5E,IAAI,EAAE,CAAC,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,EAAE,CACjD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;CACjE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Table Formatters & Visual Helpers
|
|
3
|
+
*/
|
|
4
|
+
import { FridayyToolDefinition, ToolPermissionType, ToolApprovalStatus, ToolRiskLevel } from '../../core/schema/types.js';
|
|
5
|
+
export declare function formatPermissionBadge(type: ToolPermissionType): string;
|
|
6
|
+
export declare function formatStatusBadge(status: ToolApprovalStatus): string;
|
|
7
|
+
export declare function formatRiskBadge(risk: ToolRiskLevel): string;
|
|
8
|
+
export declare function createToolsTable(tools: FridayyToolDefinition[], verbose?: boolean): string;
|
|
9
|
+
//# sourceMappingURL=tables.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables.d.ts","sourceRoot":"","sources":["../../../src/cli/ui/tables.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE1H,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,CAWtE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAapE;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAW3D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,EAAE,EAAE,OAAO,UAAQ,GAAG,MAAM,CA8BxF"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Table Formatters & Visual Helpers
|
|
3
|
+
*/
|
|
4
|
+
import Table from 'cli-table3';
|
|
5
|
+
import chalk from 'chalk';
|
|
6
|
+
export function formatPermissionBadge(type) {
|
|
7
|
+
switch (type) {
|
|
8
|
+
case 'READ':
|
|
9
|
+
return chalk.bgGreen.black(' READ ');
|
|
10
|
+
case 'WRITE':
|
|
11
|
+
return chalk.bgYellow.black(' WRITE ');
|
|
12
|
+
case 'DESTRUCTIVE':
|
|
13
|
+
return chalk.bgRed.white.bold(' DESTRUCTIVE ');
|
|
14
|
+
default:
|
|
15
|
+
return chalk.bgGray.white(` ${type} `);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export function formatStatusBadge(status) {
|
|
19
|
+
switch (status) {
|
|
20
|
+
case 'APPROVED':
|
|
21
|
+
return chalk.green.bold('✓ APPROVED');
|
|
22
|
+
case 'PENDING':
|
|
23
|
+
return chalk.yellow('⏳ PENDING');
|
|
24
|
+
case 'BLOCKED':
|
|
25
|
+
return chalk.red.bold('🚫 BLOCKED');
|
|
26
|
+
case 'REJECTED':
|
|
27
|
+
return chalk.gray('✗ REJECTED');
|
|
28
|
+
default:
|
|
29
|
+
return chalk.white(status);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export function formatRiskBadge(risk) {
|
|
33
|
+
switch (risk) {
|
|
34
|
+
case 'low':
|
|
35
|
+
return chalk.green('low');
|
|
36
|
+
case 'medium':
|
|
37
|
+
return chalk.yellow('medium');
|
|
38
|
+
case 'high':
|
|
39
|
+
return chalk.red.bold('high');
|
|
40
|
+
default:
|
|
41
|
+
return risk;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
export function createToolsTable(tools, verbose = false) {
|
|
45
|
+
const table = new Table({
|
|
46
|
+
head: [
|
|
47
|
+
chalk.bold('Tool Name'),
|
|
48
|
+
chalk.bold('Type'),
|
|
49
|
+
chalk.bold('Risk'),
|
|
50
|
+
chalk.bold('Source Endpoint'),
|
|
51
|
+
chalk.bold('Status')
|
|
52
|
+
],
|
|
53
|
+
style: {
|
|
54
|
+
head: ['cyan'],
|
|
55
|
+
border: ['gray']
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
for (const tool of tools) {
|
|
59
|
+
const sourceInfo = tool.source.method
|
|
60
|
+
? `${chalk.cyan(tool.source.method)} ${tool.source.path || tool.source.url || '/'}`
|
|
61
|
+
: tool.source.type;
|
|
62
|
+
table.push([
|
|
63
|
+
chalk.bold(tool.name),
|
|
64
|
+
formatPermissionBadge(tool.permissions.type),
|
|
65
|
+
formatRiskBadge(tool.risk),
|
|
66
|
+
sourceInfo,
|
|
67
|
+
formatStatusBadge(tool.status)
|
|
68
|
+
]);
|
|
69
|
+
}
|
|
70
|
+
return table.toString();
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=tables.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tables.js","sourceRoot":"","sources":["../../../src/cli/ui/tables.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Configuration & Tools File Manager
|
|
3
|
+
* Handles loading, saving, and updating fridayy.config.json and fridayy.tools.json.
|
|
4
|
+
*/
|
|
5
|
+
import { FridayyConfig, FridayyToolDefinition, ToolApprovalStatus } from '../core/schema/types.js';
|
|
6
|
+
export declare class ConfigManager {
|
|
7
|
+
/**
|
|
8
|
+
* Loads and validates fridayy.config.json.
|
|
9
|
+
*/
|
|
10
|
+
loadConfig(rootDir?: string, customFile?: string): FridayyConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Saves fridayy.config.json.
|
|
13
|
+
*/
|
|
14
|
+
saveConfig(config: FridayyConfig, rootDir?: string, customFile?: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Checks if configuration exists.
|
|
17
|
+
*/
|
|
18
|
+
configExists(rootDir?: string, customFile?: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Loads fridayy.tools.json.
|
|
21
|
+
*/
|
|
22
|
+
loadTools(rootDir?: string, customFile?: string): FridayyToolDefinition[];
|
|
23
|
+
/**
|
|
24
|
+
* Saves tools to fridayy.tools.json.
|
|
25
|
+
*/
|
|
26
|
+
saveTools(tools: FridayyToolDefinition[], source?: string, rootDir?: string, customFile?: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Updates approval status of a single tool or multiple tools in fridayy.tools.json.
|
|
29
|
+
*/
|
|
30
|
+
updateToolStatus(toolName: string, status: ToolApprovalStatus, rootDir?: string, customFile?: string): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Updates multiple tools at once (e.g. approve all read tools, approve all).
|
|
33
|
+
*/
|
|
34
|
+
bulkUpdateStatus(filter: (tool: FridayyToolDefinition) => boolean, status: ToolApprovalStatus, rootDir?: string, customFile?: string): number;
|
|
35
|
+
}
|
|
36
|
+
export declare const defaultConfigManager: ConfigManager;
|
|
37
|
+
//# sourceMappingURL=config-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.d.ts","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACL,aAAa,EACb,qBAAqB,EAErB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAIjC,qBAAa,aAAa;IACxB;;OAEG;IACI,UAAU,CAAC,OAAO,GAAE,MAAsB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,aAAa;IAqBtF;;OAEG;IACI,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE,MAAsB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM;IAOtG;;OAEG;IACI,YAAY,CAAC,OAAO,GAAE,MAAsB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO;IAKlF;;OAEG;IACI,SAAS,CAAC,OAAO,GAAE,MAAsB,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,qBAAqB,EAAE;IAgB/F;;OAEG;IACI,SAAS,CACd,KAAK,EAAE,qBAAqB,EAAE,EAC9B,MAAM,GAAE,MAAkB,EAC1B,OAAO,GAAE,MAAsB,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM;IAaT;;OAEG;IACI,gBAAgB,CACrB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,MAAsB,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO;IAyBV;;OAEG;IACI,gBAAgB,CACrB,MAAM,EAAE,CAAC,IAAI,EAAE,qBAAqB,KAAK,OAAO,EAChD,MAAM,EAAE,kBAAkB,EAC1B,OAAO,GAAE,MAAsB,EAC/B,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM;CAwBV;AAED,eAAO,MAAM,oBAAoB,eAAsB,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Configuration & Tools File Manager
|
|
3
|
+
* Handles loading, saving, and updating fridayy.config.json and fridayy.tools.json.
|
|
4
|
+
*/
|
|
5
|
+
import fs from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { FridayyConfigSchema } from '../core/validation/config-schema.js';
|
|
8
|
+
import { DEFAULT_CONFIG_FILE, DEFAULT_TOOLS_FILE } from './defaults.js';
|
|
9
|
+
export class ConfigManager {
|
|
10
|
+
/**
|
|
11
|
+
* Loads and validates fridayy.config.json.
|
|
12
|
+
*/
|
|
13
|
+
loadConfig(rootDir = process.cwd(), customFile) {
|
|
14
|
+
const configPath = path.resolve(rootDir, customFile || DEFAULT_CONFIG_FILE);
|
|
15
|
+
if (!fs.existsSync(configPath)) {
|
|
16
|
+
throw new Error(`Configuration file not found: ${configPath}. Run 'fridayy init' to create one.`);
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const raw = fs.readFileSync(configPath, 'utf-8');
|
|
20
|
+
const parsed = JSON.parse(raw);
|
|
21
|
+
const validated = FridayyConfigSchema.parse(parsed);
|
|
22
|
+
return validated;
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
if (err.errors) {
|
|
26
|
+
const issues = err.errors.map((e) => `${e.path.join('.')}: ${e.message}`).join(', ');
|
|
27
|
+
throw new Error(`Invalid configuration in ${configPath}: ${issues}`);
|
|
28
|
+
}
|
|
29
|
+
throw new Error(`Failed to read configuration from ${configPath}: ${err.message}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Saves fridayy.config.json.
|
|
34
|
+
*/
|
|
35
|
+
saveConfig(config, rootDir = process.cwd(), customFile) {
|
|
36
|
+
const configPath = path.resolve(rootDir, customFile || DEFAULT_CONFIG_FILE);
|
|
37
|
+
const content = JSON.stringify(config, null, 2);
|
|
38
|
+
fs.writeFileSync(configPath, content, 'utf-8');
|
|
39
|
+
return configPath;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Checks if configuration exists.
|
|
43
|
+
*/
|
|
44
|
+
configExists(rootDir = process.cwd(), customFile) {
|
|
45
|
+
const configPath = path.resolve(rootDir, customFile || DEFAULT_CONFIG_FILE);
|
|
46
|
+
return fs.existsSync(configPath);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Loads fridayy.tools.json.
|
|
50
|
+
*/
|
|
51
|
+
loadTools(rootDir = process.cwd(), customFile) {
|
|
52
|
+
const toolsPath = path.resolve(rootDir, customFile || DEFAULT_TOOLS_FILE);
|
|
53
|
+
if (!fs.existsSync(toolsPath)) {
|
|
54
|
+
return [];
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const raw = fs.readFileSync(toolsPath, 'utf-8');
|
|
58
|
+
const parsed = JSON.parse(raw);
|
|
59
|
+
return parsed.tools || [];
|
|
60
|
+
}
|
|
61
|
+
catch (err) {
|
|
62
|
+
throw new Error(`Failed to load tools from ${toolsPath}: ${err.message}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Saves tools to fridayy.tools.json.
|
|
67
|
+
*/
|
|
68
|
+
saveTools(tools, source = 'openapi', rootDir = process.cwd(), customFile) {
|
|
69
|
+
const toolsPath = path.resolve(rootDir, customFile || DEFAULT_TOOLS_FILE);
|
|
70
|
+
const payload = {
|
|
71
|
+
version: '1.0.0',
|
|
72
|
+
generatedAt: new Date().toISOString(),
|
|
73
|
+
source,
|
|
74
|
+
tools
|
|
75
|
+
};
|
|
76
|
+
fs.writeFileSync(toolsPath, JSON.stringify(payload, null, 2), 'utf-8');
|
|
77
|
+
return toolsPath;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Updates approval status of a single tool or multiple tools in fridayy.tools.json.
|
|
81
|
+
*/
|
|
82
|
+
updateToolStatus(toolName, status, rootDir = process.cwd(), customFile) {
|
|
83
|
+
const tools = this.loadTools(rootDir, customFile);
|
|
84
|
+
let found = false;
|
|
85
|
+
for (const tool of tools) {
|
|
86
|
+
if (tool.name === toolName || tool.id === toolName) {
|
|
87
|
+
tool.status = status;
|
|
88
|
+
if (status === 'APPROVED') {
|
|
89
|
+
tool.metadata = {
|
|
90
|
+
...tool.metadata,
|
|
91
|
+
approvedAt: new Date().toISOString(),
|
|
92
|
+
approvedBy: 'developer'
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
found = true;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
if (found) {
|
|
99
|
+
this.saveTools(tools, 'updated', rootDir, customFile);
|
|
100
|
+
}
|
|
101
|
+
return found;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Updates multiple tools at once (e.g. approve all read tools, approve all).
|
|
105
|
+
*/
|
|
106
|
+
bulkUpdateStatus(filter, status, rootDir = process.cwd(), customFile) {
|
|
107
|
+
const tools = this.loadTools(rootDir, customFile);
|
|
108
|
+
let updatedCount = 0;
|
|
109
|
+
for (const tool of tools) {
|
|
110
|
+
if (filter(tool)) {
|
|
111
|
+
tool.status = status;
|
|
112
|
+
if (status === 'APPROVED') {
|
|
113
|
+
tool.metadata = {
|
|
114
|
+
...tool.metadata,
|
|
115
|
+
approvedAt: new Date().toISOString(),
|
|
116
|
+
approvedBy: 'developer'
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
updatedCount++;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (updatedCount > 0) {
|
|
123
|
+
this.saveTools(tools, 'bulk-update', rootDir, customFile);
|
|
124
|
+
}
|
|
125
|
+
return updatedCount;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export const defaultConfigManager = new ConfigManager();
|
|
129
|
+
//# sourceMappingURL=config-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-manager.js","sourceRoot":"","sources":["../../src/config/config-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAO7B,OAAO,EAAE,mBAAmB,EAAmB,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAAkB,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,OAAO,aAAa;IACxB;;OAEG;IACI,UAAU,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE,EAAE,UAAmB;QACpE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,mBAAmB,CAAC,CAAC;QAE5E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iCAAiC,UAAU,qCAAqC,CAAC,CAAC;QACpG,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC/B,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACpD,OAAO,SAA0B,CAAC;QACpC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC1F,MAAM,IAAI,KAAK,CAAC,4BAA4B,UAAU,KAAK,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,UAAU,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;OAEG;IACI,UAAU,CAAC,MAAqB,EAAE,UAAkB,OAAO,CAAC,GAAG,EAAE,EAAE,UAAmB;QAC3F,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,mBAAmB,CAAC,CAAC;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAChD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/C,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACI,YAAY,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE,EAAE,UAAmB;QACtE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,mBAAmB,CAAC,CAAC;QAC5E,OAAO,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACI,SAAS,CAAC,UAAkB,OAAO,CAAC,GAAG,EAAE,EAAE,UAAmB;QACnE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,kBAAkB,CAAC,CAAC;QAE1E,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC9B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAChD,MAAM,MAAM,GAAuB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnD,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5B,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,6BAA6B,SAAS,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED;;OAEG;IACI,SAAS,CACd,KAA8B,EAC9B,SAAiB,SAAS,EAC1B,UAAkB,OAAO,CAAC,GAAG,EAAE,EAC/B,UAAmB;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,IAAI,kBAAkB,CAAC,CAAC;QAC1E,MAAM,OAAO,GAAuB;YAClC,OAAO,EAAE,OAAO;YAChB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM;YACN,KAAK;SACN,CAAC;QAEF,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACvE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACI,gBAAgB,CACrB,QAAgB,EAChB,MAA0B,EAC1B,UAAkB,OAAO,CAAC,GAAG,EAAE,EAC/B,UAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,KAAK,GAAG,KAAK,CAAC;QAElB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;gBACnD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,QAAQ,GAAG;wBACd,GAAG,IAAI,CAAC,QAAQ;wBAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,UAAU,EAAE,WAAW;qBACxB,CAAC;gBACJ,CAAC;gBACD,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACI,gBAAgB,CACrB,MAAgD,EAChD,MAA0B,EAC1B,UAAkB,OAAO,CAAC,GAAG,EAAE,EAC/B,UAAmB;QAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,YAAY,GAAG,CAAC,CAAC;QAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBACrB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;oBAC1B,IAAI,CAAC,QAAQ,GAAG;wBACd,GAAG,IAAI,CAAC,QAAQ;wBAChB,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;wBACpC,UAAU,EAAE,WAAW;qBACxB,CAAC;gBACJ,CAAC;gBACD,YAAY,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;QAED,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAC5D,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Default Configuration Constants
|
|
3
|
+
*/
|
|
4
|
+
import { FridayyConfig } from '../core/schema/types.js';
|
|
5
|
+
export declare const DEFAULT_CONFIG_FILE = "fridayy.config.json";
|
|
6
|
+
export declare const DEFAULT_TOOLS_FILE = "fridayy.tools.json";
|
|
7
|
+
export declare const DEFAULT_CONFIG: FridayyConfig;
|
|
8
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,eAAO,MAAM,mBAAmB,wBAAwB,CAAC;AACzD,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AAEvD,eAAO,MAAM,cAAc,EAAE,aA8B5B,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Default Configuration Constants
|
|
3
|
+
*/
|
|
4
|
+
export const DEFAULT_CONFIG_FILE = 'fridayy.config.json';
|
|
5
|
+
export const DEFAULT_TOOLS_FILE = 'fridayy.tools.json';
|
|
6
|
+
export const DEFAULT_CONFIG = {
|
|
7
|
+
name: 'fridayy-app',
|
|
8
|
+
version: '1.0.0',
|
|
9
|
+
description: 'MCP Server generated by Fridayy',
|
|
10
|
+
source: {
|
|
11
|
+
type: 'openapi',
|
|
12
|
+
path: './openapi.yaml'
|
|
13
|
+
},
|
|
14
|
+
server: {
|
|
15
|
+
name: 'fridayy-mcp-server',
|
|
16
|
+
version: '1.0.0',
|
|
17
|
+
transport: 'stdio',
|
|
18
|
+
port: 3000,
|
|
19
|
+
host: 'localhost',
|
|
20
|
+
maxRequestsPerMinute: 60
|
|
21
|
+
},
|
|
22
|
+
security: {
|
|
23
|
+
requireApprovalForDestructive: true,
|
|
24
|
+
autoApproveRead: true,
|
|
25
|
+
autoApproveWrite: false,
|
|
26
|
+
secretEnvPrefix: 'FRIDAYY_'
|
|
27
|
+
},
|
|
28
|
+
logging: {
|
|
29
|
+
level: 'info',
|
|
30
|
+
maskSecrets: true
|
|
31
|
+
},
|
|
32
|
+
tools: {
|
|
33
|
+
autoGenerate: true,
|
|
34
|
+
toolsFile: `./${DEFAULT_TOOLS_FILE}`
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/config/defaults.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,qBAAqB,CAAC;AACzD,MAAM,CAAC,MAAM,kBAAkB,GAAG,oBAAoB,CAAC;AAEvD,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,iCAAiC;IAC9C,MAAM,EAAE;QACN,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,gBAAgB;KACvB;IACD,MAAM,EAAE;QACN,IAAI,EAAE,oBAAoB;QAC1B,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,OAAO;QAClB,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,WAAW;QACjB,oBAAoB,EAAE,EAAE;KACzB;IACD,QAAQ,EAAE;QACR,6BAA6B,EAAE,IAAI;QACnC,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,KAAK;QACvB,eAAe,EAAE,UAAU;KAC5B;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;QACb,WAAW,EAAE,IAAI;KAClB;IACD,KAAK,EAAE;QACL,YAAY,EAAE,IAAI;QAClB,SAAS,EAAE,KAAK,kBAAkB,EAAE;KACrC;CACF,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Authentication Manager
|
|
3
|
+
* Applies authentication headers, tokens, and query parameters to HTTP requests safely.
|
|
4
|
+
*/
|
|
5
|
+
import { ToolAuthentication, FridayyConfig } from '../schema/types.js';
|
|
6
|
+
import { SecretResolver } from './secret-resolver.js';
|
|
7
|
+
export interface AuthContext {
|
|
8
|
+
headers: Record<string, string>;
|
|
9
|
+
queryParams: Record<string, string>;
|
|
10
|
+
}
|
|
11
|
+
export declare class AuthenticationManager {
|
|
12
|
+
private secretResolver;
|
|
13
|
+
private config?;
|
|
14
|
+
constructor(config?: FridayyConfig, secretResolver?: SecretResolver);
|
|
15
|
+
/**
|
|
16
|
+
* Applies authentication credentials to request headers and query parameters.
|
|
17
|
+
*/
|
|
18
|
+
applyAuth(auth?: ToolAuthentication, target?: AuthContext): AuthContext;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/core/authentication/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAY,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,cAAc,EAAyB,MAAM,sBAAsB,CAAC;AAE7E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,qBAAa,qBAAqB;IAChC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAgB;gBAEnB,MAAM,CAAC,EAAE,aAAa,EAAE,cAAc,GAAE,cAAsC;IAK1F;;OAEG;IACI,SAAS,CAAC,IAAI,CAAC,EAAE,kBAAkB,EAAE,MAAM,GAAE,WAA8C,GAAG,WAAW;CAgEjH"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Authentication Manager
|
|
3
|
+
* Applies authentication headers, tokens, and query parameters to HTTP requests safely.
|
|
4
|
+
*/
|
|
5
|
+
import { defaultSecretResolver } from './secret-resolver.js';
|
|
6
|
+
export class AuthenticationManager {
|
|
7
|
+
secretResolver;
|
|
8
|
+
config;
|
|
9
|
+
constructor(config, secretResolver = defaultSecretResolver) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
this.secretResolver = secretResolver;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Applies authentication credentials to request headers and query parameters.
|
|
15
|
+
*/
|
|
16
|
+
applyAuth(auth, target = { headers: {}, queryParams: {} }) {
|
|
17
|
+
if (!auth || !auth.required || auth.type === 'none') {
|
|
18
|
+
return target;
|
|
19
|
+
}
|
|
20
|
+
// 1. Look up configured auth in fridayy.config.json if scheme matches
|
|
21
|
+
const schemeConfig = (auth.schemeName && this.config?.auth) ? this.config.auth[auth.schemeName] : undefined;
|
|
22
|
+
const authType = schemeConfig?.type || auth.type || 'apiKey';
|
|
23
|
+
const headerName = schemeConfig?.headerName || auth.headerName;
|
|
24
|
+
const queryParam = schemeConfig?.queryParam || auth.queryParam;
|
|
25
|
+
const envKey = schemeConfig?.envKey || auth.envKey;
|
|
26
|
+
// 2. Resolve secret token
|
|
27
|
+
const secret = schemeConfig?.value ||
|
|
28
|
+
this.secretResolver.resolveSecret(auth.schemeName || 'DEFAULT', {
|
|
29
|
+
envKey
|
|
30
|
+
});
|
|
31
|
+
if (!secret) {
|
|
32
|
+
// If secret is missing, do not crash outright but allow request or let downstream handle
|
|
33
|
+
return target;
|
|
34
|
+
}
|
|
35
|
+
// 3. Apply based on type
|
|
36
|
+
switch (authType) {
|
|
37
|
+
case 'bearer':
|
|
38
|
+
target.headers['Authorization'] = `Bearer ${secret.trim()}`;
|
|
39
|
+
break;
|
|
40
|
+
case 'apiKey':
|
|
41
|
+
if (queryParam) {
|
|
42
|
+
target.queryParams[queryParam] = secret.trim();
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
const finalHeader = headerName || 'x-api-key';
|
|
46
|
+
target.headers[finalHeader] = secret.trim();
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
case 'basic': {
|
|
50
|
+
const encoded = secret.includes(':') ? Buffer.from(secret).toString('base64') : secret;
|
|
51
|
+
target.headers['Authorization'] = `Basic ${encoded.trim()}`;
|
|
52
|
+
break;
|
|
53
|
+
}
|
|
54
|
+
case 'customHeader':
|
|
55
|
+
if (headerName) {
|
|
56
|
+
target.headers[headerName] = secret.trim();
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
case 'oauth2':
|
|
60
|
+
target.headers['Authorization'] = `Bearer ${secret.trim()}`;
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
if (headerName) {
|
|
64
|
+
target.headers[headerName] = secret.trim();
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
return target;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/core/authentication/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Secret Resolver & Isolation Engine
|
|
3
|
+
* Manages secret extraction from environment variables with zero leakage to LLM prompts/schemas.
|
|
4
|
+
*/
|
|
5
|
+
export interface SecretResolutionOptions {
|
|
6
|
+
envKey?: string;
|
|
7
|
+
prefix?: string;
|
|
8
|
+
fallbackValue?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class SecretResolver {
|
|
11
|
+
private customEnv;
|
|
12
|
+
constructor(customEnv?: Record<string, string>);
|
|
13
|
+
/**
|
|
14
|
+
* Resolves a secret value from process.env or custom config.
|
|
15
|
+
* Priority:
|
|
16
|
+
* 1. Direct envKey if specified in tool/auth definition
|
|
17
|
+
* 2. Standard FRIDAYY_<SCHEME>_KEY or FRIDAYY_<NAME>
|
|
18
|
+
* 3. customEnv lookup
|
|
19
|
+
*/
|
|
20
|
+
resolveSecret(keyOrScheme: string, options?: SecretResolutionOptions): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Resolves the target API base URL.
|
|
23
|
+
* Priority:
|
|
24
|
+
* 1. FRIDAYY_API_URL / FRIDAYY_BASE_URL env var
|
|
25
|
+
* 2. Config baseUrl
|
|
26
|
+
* 3. OpenAPI spec servers[0].url
|
|
27
|
+
*/
|
|
28
|
+
resolveBaseUrl(configuredUrl?: string): string | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Returns a list of required environment variables for the configured tools.
|
|
31
|
+
*/
|
|
32
|
+
getRequiredEnvVars(authSchemes: Array<{
|
|
33
|
+
schemeName?: string;
|
|
34
|
+
envKey?: string;
|
|
35
|
+
type?: string;
|
|
36
|
+
}>): string[];
|
|
37
|
+
}
|
|
38
|
+
export declare const defaultSecretResolver: SecretResolver;
|
|
39
|
+
//# sourceMappingURL=secret-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/authentication/secret-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,SAAS,CAAyB;gBAE9B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAIlD;;;;;;OAMG;IACI,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,MAAM,GAAG,SAAS;IAkCpG;;;;;;OAMG;IACI,cAAc,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAWjE;;OAEG;IACI,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,MAAM,EAAE;CAkBjH;AAED,eAAO,MAAM,qBAAqB,gBAAuB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Secret Resolver & Isolation Engine
|
|
3
|
+
* Manages secret extraction from environment variables with zero leakage to LLM prompts/schemas.
|
|
4
|
+
*/
|
|
5
|
+
import dotenv from 'dotenv';
|
|
6
|
+
// Load .env if present
|
|
7
|
+
dotenv.config();
|
|
8
|
+
export class SecretResolver {
|
|
9
|
+
customEnv;
|
|
10
|
+
constructor(customEnv = {}) {
|
|
11
|
+
this.customEnv = customEnv;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolves a secret value from process.env or custom config.
|
|
15
|
+
* Priority:
|
|
16
|
+
* 1. Direct envKey if specified in tool/auth definition
|
|
17
|
+
* 2. Standard FRIDAYY_<SCHEME>_KEY or FRIDAYY_<NAME>
|
|
18
|
+
* 3. customEnv lookup
|
|
19
|
+
*/
|
|
20
|
+
resolveSecret(keyOrScheme, options = {}) {
|
|
21
|
+
// 1. Check explicit envKey
|
|
22
|
+
if (options.envKey) {
|
|
23
|
+
const explicitVal = process.env[options.envKey] || this.customEnv[options.envKey];
|
|
24
|
+
if (explicitVal)
|
|
25
|
+
return explicitVal;
|
|
26
|
+
}
|
|
27
|
+
// 2. Sanitize scheme name to uppercase env variable format
|
|
28
|
+
const sanitizedKey = keyOrScheme.toUpperCase().replace(/[^A-Z0-9_]/g, '_');
|
|
29
|
+
const candidates = [
|
|
30
|
+
options.envKey,
|
|
31
|
+
`FRIDAYY_${sanitizedKey}`,
|
|
32
|
+
`FRIDAYY_API_${sanitizedKey}`,
|
|
33
|
+
`FRIDAYY_${sanitizedKey}_KEY`,
|
|
34
|
+
`FRIDAYY_${sanitizedKey}_TOKEN`,
|
|
35
|
+
`FRIDAYY_API_KEY`,
|
|
36
|
+
`FRIDAYY_BEARER_TOKEN`,
|
|
37
|
+
`FRIDAYY_AUTH_TOKEN`,
|
|
38
|
+
keyOrScheme
|
|
39
|
+
].filter(Boolean);
|
|
40
|
+
for (const cand of candidates) {
|
|
41
|
+
if (process.env[cand]) {
|
|
42
|
+
return process.env[cand];
|
|
43
|
+
}
|
|
44
|
+
if (this.customEnv[cand]) {
|
|
45
|
+
return this.customEnv[cand];
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return options.fallbackValue;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Resolves the target API base URL.
|
|
52
|
+
* Priority:
|
|
53
|
+
* 1. FRIDAYY_API_URL / FRIDAYY_BASE_URL env var
|
|
54
|
+
* 2. Config baseUrl
|
|
55
|
+
* 3. OpenAPI spec servers[0].url
|
|
56
|
+
*/
|
|
57
|
+
resolveBaseUrl(configuredUrl) {
|
|
58
|
+
return (process.env.FRIDAYY_API_URL ||
|
|
59
|
+
process.env.FRIDAYY_BASE_URL ||
|
|
60
|
+
process.env.API_URL ||
|
|
61
|
+
this.customEnv.FRIDAYY_API_URL ||
|
|
62
|
+
this.customEnv.FRIDAYY_BASE_URL ||
|
|
63
|
+
configuredUrl);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Returns a list of required environment variables for the configured tools.
|
|
67
|
+
*/
|
|
68
|
+
getRequiredEnvVars(authSchemes) {
|
|
69
|
+
const requiredVars = new Set();
|
|
70
|
+
for (const auth of authSchemes) {
|
|
71
|
+
if (auth.envKey) {
|
|
72
|
+
requiredVars.add(auth.envKey);
|
|
73
|
+
}
|
|
74
|
+
else if (auth.schemeName) {
|
|
75
|
+
const sanitized = auth.schemeName.toUpperCase().replace(/[^A-Z0-9_]/g, '_');
|
|
76
|
+
requiredVars.add(`FRIDAYY_${sanitized}`);
|
|
77
|
+
}
|
|
78
|
+
else if (auth.type === 'apiKey') {
|
|
79
|
+
requiredVars.add('FRIDAYY_API_KEY');
|
|
80
|
+
}
|
|
81
|
+
else if (auth.type === 'bearer') {
|
|
82
|
+
requiredVars.add('FRIDAYY_BEARER_TOKEN');
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return Array.from(requiredVars);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
export const defaultSecretResolver = new SecretResolver();
|
|
89
|
+
//# sourceMappingURL=secret-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-resolver.js","sourceRoot":"","sources":["../../../src/core/authentication/secret-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,uBAAuB;AACvB,MAAM,CAAC,MAAM,EAAE,CAAC;AAQhB,MAAM,OAAO,cAAc;IACjB,SAAS,CAAyB;IAE1C,YAAY,YAAoC,EAAE;QAChD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED;;;;;;OAMG;IACI,aAAa,CAAC,WAAmB,EAAE,UAAmC,EAAE;QAC7E,2BAA2B;QAC3B,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAClF,IAAI,WAAW;gBAAE,OAAO,WAAW,CAAC;QACtC,CAAC;QAED,2DAA2D;QAC3D,MAAM,YAAY,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAE3E,MAAM,UAAU,GAAG;YACjB,OAAO,CAAC,MAAM;YACd,WAAW,YAAY,EAAE;YACzB,eAAe,YAAY,EAAE;YAC7B,WAAW,YAAY,MAAM;YAC7B,WAAW,YAAY,QAAQ;YAC/B,iBAAiB;YACjB,sBAAsB;YACtB,oBAAoB;YACpB,WAAW;SACZ,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,aAAa,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACI,cAAc,CAAC,aAAsB;QAC1C,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,eAAe;YAC3B,OAAO,CAAC,GAAG,CAAC,gBAAgB;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO;YACnB,IAAI,CAAC,SAAS,CAAC,eAAe;YAC9B,IAAI,CAAC,SAAS,CAAC,gBAAgB;YAC/B,aAAa,CACd,CAAC;IACJ,CAAC;IAED;;OAEG;IACI,kBAAkB,CAAC,WAA2E;QACnG,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;QAEvC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAChB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;gBAC5E,YAAY,CAAC,GAAG,CAAC,WAAW,SAAS,EAAE,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACtC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAClC,YAAY,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;CACF;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,cAAc,EAAE,CAAC"}
|