@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.
Files changed (46) hide show
  1. package/approval/errors.d.ts +149 -0
  2. package/approval/errors.d.ts.map +1 -0
  3. package/approval/factories.d.ts +251 -0
  4. package/approval/factories.d.ts.map +1 -0
  5. package/approval/guards.d.ts +61 -0
  6. package/approval/guards.d.ts.map +1 -0
  7. package/approval/index.d.ts +43 -0
  8. package/approval/index.d.ts.map +1 -0
  9. package/approval/schemas.d.ts +179 -0
  10. package/approval/schemas.d.ts.map +1 -0
  11. package/approval/types.d.ts +252 -0
  12. package/approval/types.d.ts.map +1 -0
  13. package/approval.context-extension.d.ts +21 -0
  14. package/approval.context-extension.d.ts.map +1 -0
  15. package/approval.plugin.d.ts +128 -0
  16. package/approval.plugin.d.ts.map +1 -0
  17. package/approval.symbols.d.ts +22 -0
  18. package/approval.symbols.d.ts.map +1 -0
  19. package/esm/index.mjs +1228 -0
  20. package/esm/package.json +66 -0
  21. package/flows/index.d.ts +9 -0
  22. package/flows/index.d.ts.map +1 -0
  23. package/hooks/approval-check.hook.d.ts +25 -0
  24. package/hooks/approval-check.hook.d.ts.map +1 -0
  25. package/hooks/index.d.ts +7 -0
  26. package/hooks/index.d.ts.map +1 -0
  27. package/index.d.ts +44 -0
  28. package/index.d.ts.map +1 -0
  29. package/index.js +1279 -0
  30. package/package.json +1 -1
  31. package/services/approval.service.d.ts +85 -0
  32. package/services/approval.service.d.ts.map +1 -0
  33. package/services/challenge.service.d.ts +115 -0
  34. package/services/challenge.service.d.ts.map +1 -0
  35. package/services/index.d.ts +8 -0
  36. package/services/index.d.ts.map +1 -0
  37. package/stores/approval-storage.store.d.ts +71 -0
  38. package/stores/approval-storage.store.d.ts.map +1 -0
  39. package/stores/approval-store.interface.d.ts +121 -0
  40. package/stores/approval-store.interface.d.ts.map +1 -0
  41. package/stores/index.d.ts +8 -0
  42. package/stores/index.d.ts.map +1 -0
  43. package/types/approval.types.d.ts +98 -0
  44. package/types/approval.types.d.ts.map +1 -0
  45. package/types/index.d.ts +7 -0
  46. package/types/index.d.ts.map +1 -0
@@ -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
+ }
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Flow exports for ApprovalPlugin.
3
+ *
4
+ * Flows for webhook and recheck approval modes.
5
+ *
6
+ * @module @frontmcp/plugin-approval
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Hook exports for ApprovalPlugin.
3
+ *
4
+ * @module @frontmcp/plugin-approval
5
+ */
6
+ export { default as ApprovalCheckPlugin } from './approval-check.hook';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}