@frontmcp/plugin-approval 0.0.1 → 0.7.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/approval/errors.d.ts +149 -0
- package/approval/errors.d.ts.map +1 -0
- package/approval/factories.d.ts +251 -0
- package/approval/factories.d.ts.map +1 -0
- package/approval/guards.d.ts +61 -0
- package/approval/guards.d.ts.map +1 -0
- package/approval/index.d.ts +43 -0
- package/approval/index.d.ts.map +1 -0
- package/approval/schemas.d.ts +179 -0
- package/approval/schemas.d.ts.map +1 -0
- package/approval/types.d.ts +252 -0
- package/approval/types.d.ts.map +1 -0
- package/approval.context-extension.d.ts +21 -0
- package/approval.context-extension.d.ts.map +1 -0
- package/approval.plugin.d.ts +128 -0
- package/approval.plugin.d.ts.map +1 -0
- package/approval.symbols.d.ts +22 -0
- package/approval.symbols.d.ts.map +1 -0
- package/esm/index.mjs +1228 -0
- package/esm/package.json +66 -0
- package/flows/index.d.ts +9 -0
- package/flows/index.d.ts.map +1 -0
- package/hooks/approval-check.hook.d.ts +25 -0
- package/hooks/approval-check.hook.d.ts.map +1 -0
- package/hooks/index.d.ts +7 -0
- package/hooks/index.d.ts.map +1 -0
- package/index.d.ts +44 -0
- package/index.d.ts.map +1 -0
- package/index.js +1279 -0
- package/package.json +1 -1
- package/services/approval.service.d.ts +85 -0
- package/services/approval.service.d.ts.map +1 -0
- package/services/challenge.service.d.ts +115 -0
- package/services/challenge.service.d.ts.map +1 -0
- package/services/index.d.ts +8 -0
- package/services/index.d.ts.map +1 -0
- package/stores/approval-storage.store.d.ts +71 -0
- package/stores/approval-storage.store.d.ts.map +1 -0
- package/stores/approval-store.interface.d.ts +121 -0
- package/stores/approval-store.interface.d.ts.map +1 -0
- package/stores/index.d.ts +8 -0
- package/stores/index.d.ts.map +1 -0
- package/types/approval.types.d.ts +98 -0
- package/types/approval.types.d.ts.map +1 -0
- package/types/index.d.ts +7 -0
- package/types/index.d.ts.map +1 -0
package/esm/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@frontmcp/plugin-approval",
|
|
3
|
+
"version": "0.7.0",
|
|
4
|
+
"description": "Approval plugin for FrontMCP - tool authorization workflow with PKCE webhook security",
|
|
5
|
+
"author": "AgentFront <info@agentfront.dev>",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"mcp",
|
|
9
|
+
"approval",
|
|
10
|
+
"authorization",
|
|
11
|
+
"pkce",
|
|
12
|
+
"webhook",
|
|
13
|
+
"plugin",
|
|
14
|
+
"frontmcp",
|
|
15
|
+
"agentfront"
|
|
16
|
+
],
|
|
17
|
+
"repository": {
|
|
18
|
+
"type": "git",
|
|
19
|
+
"url": "git+https://github.com/agentfront/frontmcp.git",
|
|
20
|
+
"directory": "plugins/plugin-approval"
|
|
21
|
+
},
|
|
22
|
+
"bugs": {
|
|
23
|
+
"url": "https://github.com/agentfront/frontmcp/issues"
|
|
24
|
+
},
|
|
25
|
+
"homepage": "https://github.com/agentfront/frontmcp/blob/main/plugins/plugin-approval/README.md",
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public",
|
|
28
|
+
"registry": "https://registry.npmjs.org/"
|
|
29
|
+
},
|
|
30
|
+
"type": "module",
|
|
31
|
+
"main": "../index.js",
|
|
32
|
+
"module": "./index.mjs",
|
|
33
|
+
"types": "../index.d.ts",
|
|
34
|
+
"sideEffects": false,
|
|
35
|
+
"exports": {
|
|
36
|
+
"./package.json": "../package.json",
|
|
37
|
+
".": {
|
|
38
|
+
"require": {
|
|
39
|
+
"types": "../index.d.ts",
|
|
40
|
+
"default": "../index.js"
|
|
41
|
+
},
|
|
42
|
+
"import": {
|
|
43
|
+
"types": "../index.d.ts",
|
|
44
|
+
"default": "./index.mjs"
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"ioredis": "^5.8.0",
|
|
50
|
+
"@frontmcp/sdk": "0.7.0",
|
|
51
|
+
"@frontmcp/utils": "0.7.0",
|
|
52
|
+
"reflect-metadata": "^0.2.2",
|
|
53
|
+
"zod": "^4.0.0"
|
|
54
|
+
},
|
|
55
|
+
"peerDependencies": {
|
|
56
|
+
"@vercel/kv": "^2.0.0 || ^3.0.0"
|
|
57
|
+
},
|
|
58
|
+
"peerDependenciesMeta": {
|
|
59
|
+
"@vercel/kv": {
|
|
60
|
+
"optional": true
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
"devDependencies": {
|
|
64
|
+
"reflect-metadata": "^0.2.2"
|
|
65
|
+
}
|
|
66
|
+
}
|
package/flows/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/flows/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook plugin that checks tool approval before execution.
|
|
3
|
+
*
|
|
4
|
+
* @module @frontmcp/plugin-approval
|
|
5
|
+
*/
|
|
6
|
+
import { DynamicPlugin, FlowCtxOf } from '@frontmcp/sdk';
|
|
7
|
+
/**
|
|
8
|
+
* Hook plugin that checks tool approval before execution.
|
|
9
|
+
*
|
|
10
|
+
* Priority 100 ensures this runs early (before cache at 1000).
|
|
11
|
+
*/
|
|
12
|
+
export default class ApprovalCheckPlugin extends DynamicPlugin<Record<string, never>> {
|
|
13
|
+
/**
|
|
14
|
+
* Check tool approval before execution.
|
|
15
|
+
*/
|
|
16
|
+
checkApproval(flowCtx: FlowCtxOf<'tools:call-tool'>): Promise<void>;
|
|
17
|
+
private resolveApprovalConfig;
|
|
18
|
+
private isExpired;
|
|
19
|
+
private getCurrentContext;
|
|
20
|
+
private isApprovalContext;
|
|
21
|
+
private getStringExtra;
|
|
22
|
+
private isPreApprovedContext;
|
|
23
|
+
private handleApprovalRequired;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=approval-check.hook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-check.hook.d.ts","sourceRoot":"","sources":["../../src/hooks/approval-check.hook.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAoB,SAAS,EAAE,MAAM,eAAe,CAAC;AAO3E;;;;GAIG;AAKH,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACnF;;OAEG;IAEG,aAAa,CAAC,OAAO,EAAE,SAAS,CAAC,iBAAiB,CAAC;IAwDzD,OAAO,CAAC,qBAAqB;IAc7B,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,cAAc;IAMtB,OAAO,CAAC,oBAAoB;YAUd,sBAAsB;CAsBrC"}
|
package/hooks/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
|
package/index.d.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @frontmcp/plugin-approval
|
|
3
|
+
*
|
|
4
|
+
* Tool authorization workflow with PKCE webhook security.
|
|
5
|
+
*
|
|
6
|
+
* @module @frontmcp/plugin-approval
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { ApprovalPlugin } from '@frontmcp/plugin-approval';
|
|
11
|
+
*
|
|
12
|
+
* // Basic usage with auto-detected storage
|
|
13
|
+
* const plugin = ApprovalPlugin.init();
|
|
14
|
+
*
|
|
15
|
+
* // With webhook mode
|
|
16
|
+
* const plugin = ApprovalPlugin.init({
|
|
17
|
+
* mode: 'webhook',
|
|
18
|
+
* webhook: {
|
|
19
|
+
* url: 'https://approval.example.com/webhook',
|
|
20
|
+
* challengeTtl: 300,
|
|
21
|
+
* },
|
|
22
|
+
* });
|
|
23
|
+
*
|
|
24
|
+
* // Install into scope
|
|
25
|
+
* await plugin.install(scope);
|
|
26
|
+
*
|
|
27
|
+
* // In tools, use this.approval
|
|
28
|
+
* class MyTool extends ToolContext {
|
|
29
|
+
* async execute() {
|
|
30
|
+
* const approved = await this.approval.isApproved('other-tool');
|
|
31
|
+
* await this.approval.grantSessionApproval('helper-tool');
|
|
32
|
+
* }
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export { default as ApprovalPlugin, ApprovalPlugin as ApprovalPluginClass, type ApprovalPluginOptions, } from './approval.plugin';
|
|
37
|
+
export { ApprovalStoreToken, ApprovalServiceToken, ChallengeServiceToken } from './approval.symbols';
|
|
38
|
+
export * from './types';
|
|
39
|
+
export { type ApprovalStore, type ApprovalQuery, type GrantApprovalOptions, type RevokeApprovalOptions, ApprovalStorageStore, type ApprovalStorageStoreOptions, createApprovalMemoryStore, } from './stores';
|
|
40
|
+
export { ApprovalService, createApprovalService, type GrantOptions, type RevokeOptions, ChallengeService, createMemoryChallengeService, type ChallengeServiceOptions, type CreateChallengeOptions, } from './services';
|
|
41
|
+
export { ApprovalCheckPlugin } from './hooks';
|
|
42
|
+
export { installApprovalContextExtension } from './approval.context-extension';
|
|
43
|
+
export { ApprovalError, ApprovalRequiredError, ApprovalOperationError, ApprovalScopeNotAllowedError, ApprovalExpiredError, ChallengeValidationError, userGrantor, adminGrantor, policyGrantor, systemGrantor, agentGrantor, apiGrantor, oauthGrantor, testGrantor, customGrantor, normalizeGrantor, userRevoker, adminRevoker, expiryRevoker, sessionEndRevoker, policyRevoker, normalizeRevoker, isGrantorSource, isHumanGrantor, isAutoGrantor, isDelegatedGrantor, isApiGrantor, } from './approval';
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
package/index.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAGH,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,cAAc,IAAI,mBAAmB,EACrC,KAAK,qBAAqB,GAC3B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAGrG,cAAc,SAAS,CAAC;AAGxB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,qBAAqB,EAC1B,oBAAoB,EACpB,KAAK,2BAA2B,EAChC,yBAAyB,GAC1B,MAAM,UAAU,CAAC;AAGlB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,gBAAgB,EAChB,4BAA4B,EAC5B,KAAK,uBAAuB,EAC5B,KAAK,sBAAsB,GAC5B,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAG/E,OAAO,EAEL,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,4BAA4B,EAC5B,oBAAoB,EACpB,wBAAwB,EAExB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,aAAa,EACb,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,WAAW,EACX,aAAa,EACb,gBAAgB,EAEhB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAEhB,eAAe,EACf,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,YAAY,GACb,MAAM,YAAY,CAAC"}
|