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
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fridayy - Package Metadata Reader
|
|
3
|
+
* Reads the CLI's own version from package.json at runtime, so the version
|
|
4
|
+
* displayed by `--version` and the banner can never drift out of sync with a
|
|
5
|
+
* hardcoded string left behind after a release bump.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'node:fs';
|
|
8
|
+
import path from 'node:path';
|
|
9
|
+
import { fileURLToPath } from 'node:url';
|
|
10
|
+
let cachedVersion;
|
|
11
|
+
export function getPackageVersion() {
|
|
12
|
+
if (cachedVersion)
|
|
13
|
+
return cachedVersion;
|
|
14
|
+
const moduleDir = path.dirname(fileURLToPath(import.meta.url));
|
|
15
|
+
// This file lives at src/config/ (or dist/config/ once built), two levels
|
|
16
|
+
// below the repository/package root in both cases.
|
|
17
|
+
const pkgPath = path.resolve(moduleDir, '../../package.json');
|
|
18
|
+
try {
|
|
19
|
+
const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'));
|
|
20
|
+
cachedVersion = pkg.version || '0.0.0';
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
cachedVersion = '0.0.0';
|
|
24
|
+
}
|
|
25
|
+
return cachedVersion;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=package-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-info.js","sourceRoot":"","sources":["../../src/config/package-info.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,IAAI,aAAiC,CAAC;AAEtC,MAAM,UAAU,iBAAiB;IAC/B,IAAI,aAAa;QAAE,OAAO,aAAa,CAAC;IAExC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/D,0EAA0E;IAC1E,mDAAmD;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAE9D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QAC1D,aAAa,GAAI,GAAG,CAAC,OAAkB,IAAI,OAAO,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Fridayy - Secret Resolver & Isolation Engine
|
|
3
3
|
* Manages secret extraction from environment variables with zero leakage to LLM prompts/schemas.
|
|
4
4
|
*/
|
|
5
|
+
import { CredentialsStore } from '../../config/credentials-store.js';
|
|
5
6
|
export interface SecretResolutionOptions {
|
|
6
7
|
envKey?: string;
|
|
7
8
|
prefix?: string;
|
|
@@ -9,13 +10,21 @@ export interface SecretResolutionOptions {
|
|
|
9
10
|
}
|
|
10
11
|
export declare class SecretResolver {
|
|
11
12
|
private customEnv;
|
|
12
|
-
|
|
13
|
+
private credentialsStore;
|
|
14
|
+
constructor(customEnv?: Record<string, string>, credentialsStore?: CredentialsStore);
|
|
13
15
|
/**
|
|
14
|
-
* Resolves a secret value from process.env or
|
|
16
|
+
* Resolves a secret value from process.env, custom config, or the global
|
|
17
|
+
* per-device credentials store.
|
|
15
18
|
* Priority:
|
|
16
19
|
* 1. Direct envKey if specified in tool/auth definition
|
|
17
20
|
* 2. Standard FRIDAYY_<SCHEME>_KEY or FRIDAYY_<NAME>
|
|
18
21
|
* 3. customEnv lookup
|
|
22
|
+
* 4. Global credentials store (~/.config/fridayy/credentials.json or the
|
|
23
|
+
* OS-appropriate equivalent — see config/global-dir.ts), keyed by the same
|
|
24
|
+
* candidate env-var-shaped names. This lets a secret be configured once per
|
|
25
|
+
* device (`fridayy secrets set <NAME> <value>`) and reused by every project
|
|
26
|
+
* on that machine, instead of being duplicated in plaintext per-project
|
|
27
|
+
* config files.
|
|
19
28
|
*/
|
|
20
29
|
resolveSecret(keyOrScheme: string, options?: SecretResolutionOptions): string | undefined;
|
|
21
30
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/authentication/secret-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"secret-resolver.d.ts","sourceRoot":"","sources":["../../../src/core/authentication/secret-resolver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAA2B,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAK9F,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;IAC1C,OAAO,CAAC,gBAAgB,CAAmB;gBAE/B,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,EAAE,gBAAgB,GAAE,gBAA0C;IAKhH;;;;;;;;;;;;;OAaG;IACI,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,uBAA4B,GAAG,MAAM,GAAG,SAAS;IAwCpG;;;;;;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"}
|
|
@@ -3,24 +3,34 @@
|
|
|
3
3
|
* Manages secret extraction from environment variables with zero leakage to LLM prompts/schemas.
|
|
4
4
|
*/
|
|
5
5
|
import dotenv from 'dotenv';
|
|
6
|
+
import { defaultCredentialsStore } from '../../config/credentials-store.js';
|
|
6
7
|
// Load .env if present
|
|
7
8
|
dotenv.config();
|
|
8
9
|
export class SecretResolver {
|
|
9
10
|
customEnv;
|
|
10
|
-
|
|
11
|
+
credentialsStore;
|
|
12
|
+
constructor(customEnv = {}, credentialsStore = defaultCredentialsStore) {
|
|
11
13
|
this.customEnv = customEnv;
|
|
14
|
+
this.credentialsStore = credentialsStore;
|
|
12
15
|
}
|
|
13
16
|
/**
|
|
14
|
-
* Resolves a secret value from process.env or
|
|
17
|
+
* Resolves a secret value from process.env, custom config, or the global
|
|
18
|
+
* per-device credentials store.
|
|
15
19
|
* Priority:
|
|
16
20
|
* 1. Direct envKey if specified in tool/auth definition
|
|
17
21
|
* 2. Standard FRIDAYY_<SCHEME>_KEY or FRIDAYY_<NAME>
|
|
18
22
|
* 3. customEnv lookup
|
|
23
|
+
* 4. Global credentials store (~/.config/fridayy/credentials.json or the
|
|
24
|
+
* OS-appropriate equivalent — see config/global-dir.ts), keyed by the same
|
|
25
|
+
* candidate env-var-shaped names. This lets a secret be configured once per
|
|
26
|
+
* device (`fridayy secrets set <NAME> <value>`) and reused by every project
|
|
27
|
+
* on that machine, instead of being duplicated in plaintext per-project
|
|
28
|
+
* config files.
|
|
19
29
|
*/
|
|
20
30
|
resolveSecret(keyOrScheme, options = {}) {
|
|
21
31
|
// 1. Check explicit envKey
|
|
22
32
|
if (options.envKey) {
|
|
23
|
-
const explicitVal = process.env[options.envKey] || this.customEnv[options.envKey];
|
|
33
|
+
const explicitVal = process.env[options.envKey] || this.customEnv[options.envKey] || this.credentialsStore.get(options.envKey);
|
|
24
34
|
if (explicitVal)
|
|
25
35
|
return explicitVal;
|
|
26
36
|
}
|
|
@@ -45,6 +55,11 @@ export class SecretResolver {
|
|
|
45
55
|
return this.customEnv[cand];
|
|
46
56
|
}
|
|
47
57
|
}
|
|
58
|
+
for (const cand of candidates) {
|
|
59
|
+
const stored = this.credentialsStore.get(cand);
|
|
60
|
+
if (stored)
|
|
61
|
+
return stored;
|
|
62
|
+
}
|
|
48
63
|
return options.fallbackValue;
|
|
49
64
|
}
|
|
50
65
|
/**
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"secret-resolver.js","sourceRoot":"","sources":["../../../src/core/authentication/secret-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export declare class ProjectScanner {
|
|
|
8
8
|
private adapterRegistry;
|
|
9
9
|
private openApiParser;
|
|
10
10
|
private nodeJsScanner;
|
|
11
|
+
private laravelScanner;
|
|
11
12
|
constructor(adapterRegistry?: AdapterRegistry);
|
|
12
13
|
/**
|
|
13
14
|
* Scans a root directory and returns comprehensive capability detection results.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-scanner.d.ts","sourceRoot":"","sources":["../../../src/core/discovery/project-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"project-scanner.d.ts","sourceRoot":"","sources":["../../../src/core/discovery/project-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AAKrF,qBAAa,cAAc;IACzB,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,cAAc,CAA6B;gBAEvC,eAAe,GAAE,eAAwC;IAIrE;;OAEG;IACU,IAAI,CAAC,OAAO,GAAE,MAAsB,GAAG,OAAO,CAAC,UAAU,CAAC;IA2IvE,OAAO,CAAC,gBAAgB;IAyCxB,OAAO,CAAC,cAAc;CAcvB;AAED,eAAO,MAAM,qBAAqB,gBAAuB,CAAC"}
|
|
@@ -7,10 +7,12 @@ import path from 'node:path';
|
|
|
7
7
|
import { defaultAdapterRegistry } from '../../adapters/registry.js';
|
|
8
8
|
import { OpenApiParser } from '../../adapters/openapi/parser.js';
|
|
9
9
|
import { NodeJsScanner } from '../../adapters/nodejs/ast-scanner.js';
|
|
10
|
+
import { LaravelRouteScanner } from '../../adapters/laravel/route-scanner.js';
|
|
10
11
|
export class ProjectScanner {
|
|
11
12
|
adapterRegistry;
|
|
12
13
|
openApiParser = new OpenApiParser();
|
|
13
14
|
nodeJsScanner = new NodeJsScanner();
|
|
15
|
+
laravelScanner = new LaravelRouteScanner();
|
|
14
16
|
constructor(adapterRegistry = defaultAdapterRegistry) {
|
|
15
17
|
this.adapterRegistry = adapterRegistry;
|
|
16
18
|
}
|
|
@@ -77,6 +79,26 @@ export class ProjectScanner {
|
|
|
77
79
|
if (!hasOpenApi && discoveredRoutes.length > 0) {
|
|
78
80
|
totalEndpoints += discoveredRoutes.length;
|
|
79
81
|
}
|
|
82
|
+
// 2b. Scan for a Laravel project (artisan CLI, laravel/framework composer
|
|
83
|
+
// dependency, or an actual routes/*.php with Route:: declarations).
|
|
84
|
+
const hasArtisanFile = fs.existsSync(path.join(absRoot, 'artisan'));
|
|
85
|
+
let hasLaravelComposerDep = false;
|
|
86
|
+
const composerJsonPath = path.join(absRoot, 'composer.json');
|
|
87
|
+
if (fs.existsSync(composerJsonPath)) {
|
|
88
|
+
try {
|
|
89
|
+
const composer = JSON.parse(fs.readFileSync(composerJsonPath, 'utf-8'));
|
|
90
|
+
const allPhpDeps = { ...composer.require, ...composer['require-dev'] };
|
|
91
|
+
hasLaravelComposerDep = Boolean(allPhpDeps['laravel/framework'] || allPhpDeps['laravel/lumen-framework']);
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// ignore malformed composer.json
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const laravelRoutes = hasArtisanFile || hasLaravelComposerDep ? await this.laravelScanner.scanDirectory(absRoot) : [];
|
|
98
|
+
const hasLaravel = hasArtisanFile || hasLaravelComposerDep || laravelRoutes.length > 0;
|
|
99
|
+
if (!hasOpenApi && !hasNodeJs && laravelRoutes.length > 0) {
|
|
100
|
+
totalEndpoints += laravelRoutes.length;
|
|
101
|
+
}
|
|
80
102
|
// 3. Formulate recommended configuration
|
|
81
103
|
const projectName = path.basename(absRoot);
|
|
82
104
|
let recommendedSource;
|
|
@@ -86,6 +108,13 @@ export class ProjectScanner {
|
|
|
86
108
|
path: openApiFiles[0]
|
|
87
109
|
};
|
|
88
110
|
}
|
|
111
|
+
else if (hasLaravel) {
|
|
112
|
+
recommendedSource = {
|
|
113
|
+
type: 'laravel',
|
|
114
|
+
rootDir: './',
|
|
115
|
+
baseUrl: 'http://localhost:8000'
|
|
116
|
+
};
|
|
117
|
+
}
|
|
89
118
|
else if (hasNodeJs) {
|
|
90
119
|
recommendedSource = {
|
|
91
120
|
type: 'nodejs',
|
|
@@ -118,12 +147,13 @@ export class ProjectScanner {
|
|
|
118
147
|
openApiFiles,
|
|
119
148
|
hasNodeJs,
|
|
120
149
|
nodeJsFramework,
|
|
150
|
+
hasLaravel,
|
|
121
151
|
discoveredEndpointsCount: totalEndpoints,
|
|
122
152
|
authSchemesDetected: Array.from(authSchemesDetected),
|
|
123
153
|
recommendedConfig,
|
|
124
154
|
details: {
|
|
125
155
|
openApiSpecs: openApiSpecsDetails,
|
|
126
|
-
routes: discoveredRoutes
|
|
156
|
+
routes: hasLaravel && !hasOpenApi && !hasNodeJs ? laravelRoutes : discoveredRoutes
|
|
127
157
|
}
|
|
128
158
|
};
|
|
129
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-scanner.js","sourceRoot":"","sources":["../../../src/core/discovery/project-scanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAmB,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,kCAAkC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;
|
|
1
|
+
{"version":3,"file":"project-scanner.js","sourceRoot":"","sources":["../../../src/core/discovery/project-scanner.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,12 +36,12 @@ export function classifyOperation(ctx, config) {
|
|
|
36
36
|
.toLowerCase();
|
|
37
37
|
// 1. Check for DESTRUCTIVE operations
|
|
38
38
|
const isDeleteMethod = method === 'DELETE';
|
|
39
|
-
const
|
|
39
|
+
const matchedDestructiveKeyword = DESTRUCTIVE_KEYWORDS.find(kw => {
|
|
40
40
|
// Word boundary or underscore boundary check
|
|
41
41
|
const regex = new RegExp(`\\b${kw}\\b|_${kw}_|^${kw}_|_${kw}$`, 'i');
|
|
42
42
|
return regex.test(fullText);
|
|
43
43
|
});
|
|
44
|
-
if (isDeleteMethod ||
|
|
44
|
+
if (isDeleteMethod || matchedDestructiveKeyword) {
|
|
45
45
|
const isExplicitlyApproved = false;
|
|
46
46
|
return {
|
|
47
47
|
permissions: {
|
|
@@ -55,7 +55,7 @@ export function classifyOperation(ctx, config) {
|
|
|
55
55
|
status: isExplicitlyApproved ? 'APPROVED' : 'BLOCKED',
|
|
56
56
|
reason: isDeleteMethod
|
|
57
57
|
? 'DELETE HTTP method carries destructive risk.'
|
|
58
|
-
: `Operation contains destructive action keyword: "${
|
|
58
|
+
: `Operation contains destructive action keyword: "${matchedDestructiveKeyword}".`
|
|
59
59
|
};
|
|
60
60
|
}
|
|
61
61
|
// 2. Check for READ operations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/core/permissions/classifier.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,MAAM,oBAAoB,GAAG;IAC3B,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,OAAO;IACP,OAAO;IACP,MAAM;IACN,UAAU;IACV,MAAM;IACN,WAAW;IACX,MAAM;IACN,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,WAAW;IACX,QAAQ;IACR,OAAO;CACR,CAAC;AAmBF;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,GAA0B,EAC1B,MAAsB;IAEtB,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,QAAQ,GAAG;QACf,GAAG,CAAC,IAAI,IAAI,EAAE;QACd,GAAG,CAAC,WAAW,IAAI,EAAE;QACrB,GAAG,CAAC,IAAI,IAAI,EAAE;QACd,GAAG,CAAC,OAAO,IAAI,EAAE;QACjB,GAAG,CAAC,WAAW,IAAI,EAAE;KACtB;SACE,IAAI,CAAC,GAAG,CAAC;SACT,WAAW,EAAE,CAAC;IAEjB,sCAAsC;IACtC,MAAM,cAAc,GAAG,MAAM,KAAK,QAAQ,CAAC;IAC3C,MAAM,
|
|
1
|
+
{"version":3,"file":"classifier.js","sourceRoot":"","sources":["../../../src/core/permissions/classifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Enforces permission gates, status checks, and access rules for MCP tool invocation.
|
|
4
4
|
*/
|
|
5
5
|
import { FridayyToolDefinition, FridayyConfig } from '../schema/types.js';
|
|
6
|
+
import { ClassificationContext } from './classifier.js';
|
|
6
7
|
export declare class PermissionDeniedError extends Error {
|
|
7
8
|
readonly code: string;
|
|
8
9
|
readonly toolName: string;
|
|
@@ -20,5 +21,14 @@ export declare class PermissionEnforcer {
|
|
|
20
21
|
* Enforces permissions before executing a tool. Throws PermissionDeniedError if execution is not allowed.
|
|
21
22
|
*/
|
|
22
23
|
validateExecution(tool: FridayyToolDefinition): void;
|
|
24
|
+
/**
|
|
25
|
+
* Re-validates a tool whose actual HTTP method/path is decided at call time
|
|
26
|
+
* (e.g. a generic "call_api_endpoint"-style tool) rather than fixed at generation
|
|
27
|
+
* time. Without this, a tool statically classified as READ/WRITE could be invoked
|
|
28
|
+
* with a runtime method/path that is actually destructive (e.g. DELETE), bypassing
|
|
29
|
+
* the classifier's BLOCKED-by-default protection for destructive operations.
|
|
30
|
+
* Throws PermissionDeniedError if the effective operation is not APPROVED.
|
|
31
|
+
*/
|
|
32
|
+
validateDynamicOperation(tool: FridayyToolDefinition, ctx: ClassificationContext): void;
|
|
23
33
|
}
|
|
24
34
|
//# sourceMappingURL=enforcer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../../src/core/permissions/enforcer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"enforcer.d.ts","sourceRoot":"","sources":["../../../src/core/permissions/enforcer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAqB,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAE3E,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,QAAQ,EAAE,MAAM,CAAC;IACjC,SAAgB,OAAO,CAAC,EAAE,GAAG,CAAC;gBAElB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,SAAsB,EAAE,OAAO,CAAC,EAAE,GAAG;CAOzF;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,CAAgB;gBAEnB,MAAM,CAAC,EAAE,aAAa;IAIlC;;OAEG;IACI,aAAa,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO;IAsB1D;;OAEG;IACI,iBAAiB,CAAC,IAAI,EAAE,qBAAqB,GAAG,IAAI;IA8D3D;;;;;;;OAOG;IACI,wBAAwB,CAAC,IAAI,EAAE,qBAAqB,EAAE,GAAG,EAAE,qBAAqB,GAAG,IAAI;CAa/F"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Fridayy - Permission & Security Enforcer
|
|
3
3
|
* Enforces permission gates, status checks, and access rules for MCP tool invocation.
|
|
4
4
|
*/
|
|
5
|
+
import { classifyOperation } from './classifier.js';
|
|
5
6
|
export class PermissionDeniedError extends Error {
|
|
6
7
|
code;
|
|
7
8
|
toolName;
|
|
@@ -45,13 +46,17 @@ export class PermissionEnforcer {
|
|
|
45
46
|
validateExecution(tool) {
|
|
46
47
|
// Check status
|
|
47
48
|
if (tool.status === 'BLOCKED') {
|
|
48
|
-
throw new PermissionDeniedError(`Tool "${tool.name}" is BLOCKED. Destructive operations require explicit developer approval via
|
|
49
|
+
throw new PermissionDeniedError(`Tool "${tool.name}" is BLOCKED. Destructive operations require explicit developer approval via ` +
|
|
50
|
+
`'fridayy review'. Note: approving a tool only updates fridayy.tools.json — a running server does ` +
|
|
51
|
+
`not pick up the change until it is restarted ('fridayy start').`, tool.name, 'TOOL_BLOCKED', { status: tool.status, permissions: tool.permissions });
|
|
49
52
|
}
|
|
50
53
|
if (tool.status === 'REJECTED') {
|
|
51
54
|
throw new PermissionDeniedError(`Tool "${tool.name}" is REJECTED and cannot be executed.`, tool.name, 'TOOL_REJECTED', { status: tool.status });
|
|
52
55
|
}
|
|
53
56
|
if (tool.status === 'PENDING') {
|
|
54
|
-
throw new PermissionDeniedError(`Tool "${tool.name}" is PENDING developer review. Run 'fridayy review' to approve it
|
|
57
|
+
throw new PermissionDeniedError(`Tool "${tool.name}" is PENDING developer review. Run 'fridayy review' to approve it, then restart ` +
|
|
58
|
+
`the server ('fridayy start') — approving a tool only updates fridayy.tools.json and has no effect ` +
|
|
59
|
+
`on a server that is already running.`, tool.name, 'TOOL_PENDING_APPROVAL', { status: tool.status });
|
|
55
60
|
}
|
|
56
61
|
if (tool.status !== 'APPROVED') {
|
|
57
62
|
throw new PermissionDeniedError(`Tool "${tool.name}" has invalid status "${tool.status}" and cannot be executed.`, tool.name, 'TOOL_NOT_APPROVED');
|
|
@@ -67,5 +72,20 @@ export class PermissionEnforcer {
|
|
|
67
72
|
throw new PermissionDeniedError(`Tool "${tool.name}" is not included in the security allowlist.`, tool.name, 'TOOL_NOT_ALLOWLISTED');
|
|
68
73
|
}
|
|
69
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Re-validates a tool whose actual HTTP method/path is decided at call time
|
|
77
|
+
* (e.g. a generic "call_api_endpoint"-style tool) rather than fixed at generation
|
|
78
|
+
* time. Without this, a tool statically classified as READ/WRITE could be invoked
|
|
79
|
+
* with a runtime method/path that is actually destructive (e.g. DELETE), bypassing
|
|
80
|
+
* the classifier's BLOCKED-by-default protection for destructive operations.
|
|
81
|
+
* Throws PermissionDeniedError if the effective operation is not APPROVED.
|
|
82
|
+
*/
|
|
83
|
+
validateDynamicOperation(tool, ctx) {
|
|
84
|
+
const classification = classifyOperation(ctx, this.config);
|
|
85
|
+
if (classification.status !== 'APPROVED') {
|
|
86
|
+
throw new PermissionDeniedError(`Tool "${tool.name}" was invoked with an operation (${ctx.method || 'GET'} ${ctx.path || ''}) ` +
|
|
87
|
+
`that is classified as ${classification.permissions.type} and is not approved for execution. ${classification.reason}`, tool.name, classification.status === 'BLOCKED' ? 'DYNAMIC_OPERATION_BLOCKED' : 'DYNAMIC_OPERATION_NOT_APPROVED', { classification });
|
|
88
|
+
}
|
|
89
|
+
}
|
|
70
90
|
}
|
|
71
91
|
//# sourceMappingURL=enforcer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"enforcer.js","sourceRoot":"","sources":["../../../src/core/permissions/enforcer.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"enforcer.js","sourceRoot":"","sources":["../../../src/core/permissions/enforcer.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
export type ToolPermissionType = 'READ' | 'WRITE' | 'DESTRUCTIVE';
|
|
6
6
|
export type ToolRiskLevel = 'low' | 'medium' | 'high';
|
|
7
7
|
export type ToolApprovalStatus = 'APPROVED' | 'PENDING' | 'BLOCKED' | 'REJECTED';
|
|
8
|
-
export type SourceType = 'openapi' | 'rest' | 'nodejs' | 'manual' | 'graphql' | string;
|
|
8
|
+
export type SourceType = 'openapi' | 'rest' | 'nodejs' | 'laravel' | 'manual' | 'graphql' | string;
|
|
9
9
|
export type AuthType = 'apiKey' | 'bearer' | 'basic' | 'customHeader' | 'oauth2' | 'none';
|
|
10
10
|
export interface ParameterDefinition {
|
|
11
11
|
name: string;
|
|
@@ -93,7 +93,7 @@ export interface FridayyConfig {
|
|
|
93
93
|
version?: string;
|
|
94
94
|
description?: string;
|
|
95
95
|
source: {
|
|
96
|
-
type: 'openapi' | 'rest' | 'nodejs' | 'manual' | 'auto';
|
|
96
|
+
type: 'openapi' | 'rest' | 'nodejs' | 'laravel' | 'manual' | 'auto';
|
|
97
97
|
path?: string;
|
|
98
98
|
url?: string;
|
|
99
99
|
baseUrl?: string;
|
|
@@ -107,6 +107,8 @@ export interface FridayyConfig {
|
|
|
107
107
|
port?: number;
|
|
108
108
|
host?: string;
|
|
109
109
|
maxRequestsPerMinute?: number;
|
|
110
|
+
/** Name of the environment variable holding the API key required to access the SSE/HTTP transport. */
|
|
111
|
+
apiKeyEnvVar?: string;
|
|
110
112
|
};
|
|
111
113
|
security?: {
|
|
112
114
|
requireApprovalForDestructive?: boolean;
|
|
@@ -166,6 +168,7 @@ export interface ScanResult {
|
|
|
166
168
|
openApiFiles: string[];
|
|
167
169
|
hasNodeJs: boolean;
|
|
168
170
|
nodeJsFramework?: 'express' | 'fastify' | 'koa' | 'nestjs' | 'custom' | 'none';
|
|
171
|
+
hasLaravel: boolean;
|
|
169
172
|
discoveredEndpointsCount: number;
|
|
170
173
|
authSchemesDetected: string[];
|
|
171
174
|
recommendedConfig: Partial<FridayyConfig>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/schema/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,aAAa,CAAC;AAElE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEtD,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;AAEjF,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/core/schema/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -547,19 +547,19 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
547
547
|
version: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
548
548
|
description: z.ZodOptional<z.ZodString>;
|
|
549
549
|
source: z.ZodObject<{
|
|
550
|
-
type: z.ZodEnum<["openapi", "rest", "nodejs", "manual", "auto"]>;
|
|
550
|
+
type: z.ZodEnum<["openapi", "rest", "nodejs", "laravel", "manual", "auto"]>;
|
|
551
551
|
path: z.ZodOptional<z.ZodString>;
|
|
552
552
|
url: z.ZodOptional<z.ZodString>;
|
|
553
553
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
554
554
|
rootDir: z.ZodOptional<z.ZodString>;
|
|
555
555
|
}, "passthrough", z.ZodTypeAny, z.objectOutputType<{
|
|
556
|
-
type: z.ZodEnum<["openapi", "rest", "nodejs", "manual", "auto"]>;
|
|
556
|
+
type: z.ZodEnum<["openapi", "rest", "nodejs", "laravel", "manual", "auto"]>;
|
|
557
557
|
path: z.ZodOptional<z.ZodString>;
|
|
558
558
|
url: z.ZodOptional<z.ZodString>;
|
|
559
559
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
560
560
|
rootDir: z.ZodOptional<z.ZodString>;
|
|
561
561
|
}, z.ZodTypeAny, "passthrough">, z.objectInputType<{
|
|
562
|
-
type: z.ZodEnum<["openapi", "rest", "nodejs", "manual", "auto"]>;
|
|
562
|
+
type: z.ZodEnum<["openapi", "rest", "nodejs", "laravel", "manual", "auto"]>;
|
|
563
563
|
path: z.ZodOptional<z.ZodString>;
|
|
564
564
|
url: z.ZodOptional<z.ZodString>;
|
|
565
565
|
baseUrl: z.ZodOptional<z.ZodString>;
|
|
@@ -572,6 +572,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
572
572
|
port: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
573
573
|
host: z.ZodDefault<z.ZodOptional<z.ZodString>>;
|
|
574
574
|
maxRequestsPerMinute: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
575
|
+
apiKeyEnvVar: z.ZodOptional<z.ZodString>;
|
|
575
576
|
}, "strip", z.ZodTypeAny, {
|
|
576
577
|
transport: "stdio" | "sse";
|
|
577
578
|
port: number;
|
|
@@ -579,6 +580,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
579
580
|
maxRequestsPerMinute: number;
|
|
580
581
|
name?: string | undefined;
|
|
581
582
|
version?: string | undefined;
|
|
583
|
+
apiKeyEnvVar?: string | undefined;
|
|
582
584
|
}, {
|
|
583
585
|
name?: string | undefined;
|
|
584
586
|
version?: string | undefined;
|
|
@@ -586,6 +588,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
586
588
|
port?: number | undefined;
|
|
587
589
|
host?: string | undefined;
|
|
588
590
|
maxRequestsPerMinute?: number | undefined;
|
|
591
|
+
apiKeyEnvVar?: string | undefined;
|
|
589
592
|
}>>>;
|
|
590
593
|
security: z.ZodDefault<z.ZodOptional<z.ZodObject<{
|
|
591
594
|
requireApprovalForDestructive: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
@@ -696,7 +699,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
696
699
|
};
|
|
697
700
|
name: string;
|
|
698
701
|
source: {
|
|
699
|
-
type: "openapi" | "rest" | "nodejs" | "manual" | "auto";
|
|
702
|
+
type: "openapi" | "rest" | "nodejs" | "laravel" | "manual" | "auto";
|
|
700
703
|
path?: string | undefined;
|
|
701
704
|
url?: string | undefined;
|
|
702
705
|
baseUrl?: string | undefined;
|
|
@@ -712,6 +715,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
712
715
|
maxRequestsPerMinute: number;
|
|
713
716
|
name?: string | undefined;
|
|
714
717
|
version?: string | undefined;
|
|
718
|
+
apiKeyEnvVar?: string | undefined;
|
|
715
719
|
};
|
|
716
720
|
logging: {
|
|
717
721
|
level: "debug" | "info" | "warn" | "error";
|
|
@@ -737,7 +741,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
737
741
|
}, {
|
|
738
742
|
name: string;
|
|
739
743
|
source: {
|
|
740
|
-
type: "openapi" | "rest" | "nodejs" | "manual" | "auto";
|
|
744
|
+
type: "openapi" | "rest" | "nodejs" | "laravel" | "manual" | "auto";
|
|
741
745
|
path?: string | undefined;
|
|
742
746
|
url?: string | undefined;
|
|
743
747
|
baseUrl?: string | undefined;
|
|
@@ -773,6 +777,7 @@ export declare const FridayyConfigSchema: z.ZodObject<{
|
|
|
773
777
|
port?: number | undefined;
|
|
774
778
|
host?: string | undefined;
|
|
775
779
|
maxRequestsPerMinute?: number | undefined;
|
|
780
|
+
apiKeyEnvVar?: string | undefined;
|
|
776
781
|
} | undefined;
|
|
777
782
|
logging?: {
|
|
778
783
|
level?: "debug" | "info" | "warn" | "error" | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/core/validation/config-schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB,6CAA2C,CAAC;AACjF,eAAO,MAAM,mBAAmB,sCAAoC,CAAC;AACrE,eAAO,MAAM,wBAAwB,2DAAyD,CAAC;AAE/F,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAOpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMtC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;EAQnC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CtC,CAAC;AAEH,eAAO,MAAM,mBAAmB
|
|
1
|
+
{"version":3,"file":"config-schema.d.ts","sourceRoot":"","sources":["../../../src/core/validation/config-schema.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,wBAAwB,6CAA2C,CAAC;AACjF,eAAO,MAAM,mBAAmB,sCAAoC,CAAC;AACrE,eAAO,MAAM,wBAAwB,2DAAyD,CAAC;AAE/F,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAOpC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;EAMtC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;EAQnC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CtC,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoD9B,CAAC;AAEH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAK1B,CAAC"}
|
|
@@ -81,7 +81,7 @@ export const FridayyConfigSchema = z.object({
|
|
|
81
81
|
version: z.string().optional().default('1.0.0'),
|
|
82
82
|
description: z.string().optional(),
|
|
83
83
|
source: z.object({
|
|
84
|
-
type: z.enum(['openapi', 'rest', 'nodejs', 'manual', 'auto']),
|
|
84
|
+
type: z.enum(['openapi', 'rest', 'nodejs', 'laravel', 'manual', 'auto']),
|
|
85
85
|
path: z.string().optional(),
|
|
86
86
|
url: z.string().optional(),
|
|
87
87
|
baseUrl: z.string().optional(),
|
|
@@ -93,7 +93,8 @@ export const FridayyConfigSchema = z.object({
|
|
|
93
93
|
transport: z.enum(['stdio', 'sse']).optional().default('stdio'),
|
|
94
94
|
port: z.number().optional().default(3000),
|
|
95
95
|
host: z.string().optional().default('localhost'),
|
|
96
|
-
maxRequestsPerMinute: z.number().optional().default(60)
|
|
96
|
+
maxRequestsPerMinute: z.number().optional().default(60),
|
|
97
|
+
apiKeyEnvVar: z.string().optional()
|
|
97
98
|
}).optional().default({}),
|
|
98
99
|
security: z.object({
|
|
99
100
|
requireApprovalForDestructive: z.boolean().optional().default(true),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/core/validation/config-schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config-schema.js","sourceRoot":"","sources":["../../../src/core/validation/config-schema.ts"],"names":[],"mappings":"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"}
|