@grantex/sdk 0.2.6 → 0.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.
Files changed (229) hide show
  1. package/dist/client.d.ts +65 -0
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +248 -0
  4. package/dist/client.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/manifest.d.ts +126 -0
  10. package/dist/manifest.d.ts.map +1 -0
  11. package/dist/manifest.js +116 -0
  12. package/dist/manifest.js.map +1 -0
  13. package/dist/manifests/ahrefs.d.ts +3 -0
  14. package/dist/manifests/ahrefs.d.ts.map +1 -0
  15. package/dist/manifests/ahrefs.js +13 -0
  16. package/dist/manifests/ahrefs.js.map +1 -0
  17. package/dist/manifests/banking_aa.d.ts +3 -0
  18. package/dist/manifests/banking_aa.d.ts.map +1 -0
  19. package/dist/manifests/banking_aa.js +13 -0
  20. package/dist/manifests/banking_aa.js.map +1 -0
  21. package/dist/manifests/bombora.d.ts +3 -0
  22. package/dist/manifests/bombora.d.ts.map +1 -0
  23. package/dist/manifests/bombora.js +12 -0
  24. package/dist/manifests/bombora.js.map +1 -0
  25. package/dist/manifests/brandwatch.d.ts +3 -0
  26. package/dist/manifests/brandwatch.d.ts.map +1 -0
  27. package/dist/manifests/brandwatch.js +13 -0
  28. package/dist/manifests/brandwatch.js.map +1 -0
  29. package/dist/manifests/buffer.d.ts +3 -0
  30. package/dist/manifests/buffer.d.ts.map +1 -0
  31. package/dist/manifests/buffer.js +13 -0
  32. package/dist/manifests/buffer.js.map +1 -0
  33. package/dist/manifests/confluence.d.ts +3 -0
  34. package/dist/manifests/confluence.d.ts.map +1 -0
  35. package/dist/manifests/confluence.js +14 -0
  36. package/dist/manifests/confluence.js.map +1 -0
  37. package/dist/manifests/darwinbox.d.ts +3 -0
  38. package/dist/manifests/darwinbox.d.ts.map +1 -0
  39. package/dist/manifests/darwinbox.js +18 -0
  40. package/dist/manifests/darwinbox.js.map +1 -0
  41. package/dist/manifests/docusign.d.ts +3 -0
  42. package/dist/manifests/docusign.d.ts.map +1 -0
  43. package/dist/manifests/docusign.js +14 -0
  44. package/dist/manifests/docusign.js.map +1 -0
  45. package/dist/manifests/epfo.d.ts +3 -0
  46. package/dist/manifests/epfo.d.ts.map +1 -0
  47. package/dist/manifests/epfo.js +14 -0
  48. package/dist/manifests/epfo.js.map +1 -0
  49. package/dist/manifests/g2.d.ts +3 -0
  50. package/dist/manifests/g2.d.ts.map +1 -0
  51. package/dist/manifests/g2.js +12 -0
  52. package/dist/manifests/g2.js.map +1 -0
  53. package/dist/manifests/ga4.d.ts +3 -0
  54. package/dist/manifests/ga4.d.ts.map +1 -0
  55. package/dist/manifests/ga4.js +14 -0
  56. package/dist/manifests/ga4.js.map +1 -0
  57. package/dist/manifests/github.d.ts +3 -0
  58. package/dist/manifests/github.d.ts.map +1 -0
  59. package/dist/manifests/github.js +17 -0
  60. package/dist/manifests/github.js.map +1 -0
  61. package/dist/manifests/gmail.d.ts +3 -0
  62. package/dist/manifests/gmail.d.ts.map +1 -0
  63. package/dist/manifests/gmail.js +12 -0
  64. package/dist/manifests/gmail.js.map +1 -0
  65. package/dist/manifests/google_ads.d.ts +3 -0
  66. package/dist/manifests/google_ads.d.ts.map +1 -0
  67. package/dist/manifests/google_ads.js +13 -0
  68. package/dist/manifests/google_ads.js.map +1 -0
  69. package/dist/manifests/google_calendar.d.ts +3 -0
  70. package/dist/manifests/google_calendar.d.ts.map +1 -0
  71. package/dist/manifests/google_calendar.js +13 -0
  72. package/dist/manifests/google_calendar.js.map +1 -0
  73. package/dist/manifests/greenhouse.d.ts +3 -0
  74. package/dist/manifests/greenhouse.d.ts.map +1 -0
  75. package/dist/manifests/greenhouse.js +16 -0
  76. package/dist/manifests/greenhouse.js.map +1 -0
  77. package/dist/manifests/gstn.d.ts +3 -0
  78. package/dist/manifests/gstn.d.ts.map +1 -0
  79. package/dist/manifests/gstn.js +16 -0
  80. package/dist/manifests/gstn.js.map +1 -0
  81. package/dist/manifests/hubspot.d.ts +3 -0
  82. package/dist/manifests/hubspot.d.ts.map +1 -0
  83. package/dist/manifests/hubspot.js +21 -0
  84. package/dist/manifests/hubspot.js.map +1 -0
  85. package/dist/manifests/income_tax_india.d.ts +3 -0
  86. package/dist/manifests/income_tax_india.d.ts.map +1 -0
  87. package/dist/manifests/income_tax_india.js +15 -0
  88. package/dist/manifests/income_tax_india.js.map +1 -0
  89. package/dist/manifests/index.d.ts +54 -0
  90. package/dist/manifests/index.d.ts.map +1 -0
  91. package/dist/manifests/index.js +59 -0
  92. package/dist/manifests/index.js.map +1 -0
  93. package/dist/manifests/jira.d.ts +3 -0
  94. package/dist/manifests/jira.d.ts.map +1 -0
  95. package/dist/manifests/jira.js +19 -0
  96. package/dist/manifests/jira.js.map +1 -0
  97. package/dist/manifests/keka.d.ts +3 -0
  98. package/dist/manifests/keka.d.ts.map +1 -0
  99. package/dist/manifests/keka.js +14 -0
  100. package/dist/manifests/keka.js.map +1 -0
  101. package/dist/manifests/langsmith.d.ts +3 -0
  102. package/dist/manifests/langsmith.d.ts.map +1 -0
  103. package/dist/manifests/langsmith.js +13 -0
  104. package/dist/manifests/langsmith.js.map +1 -0
  105. package/dist/manifests/linkedin_ads.d.ts +3 -0
  106. package/dist/manifests/linkedin_ads.d.ts.map +1 -0
  107. package/dist/manifests/linkedin_ads.js +12 -0
  108. package/dist/manifests/linkedin_ads.js.map +1 -0
  109. package/dist/manifests/linkedin_talent.d.ts +3 -0
  110. package/dist/manifests/linkedin_talent.d.ts.map +1 -0
  111. package/dist/manifests/linkedin_talent.js +14 -0
  112. package/dist/manifests/linkedin_talent.js.map +1 -0
  113. package/dist/manifests/mailchimp.d.ts +3 -0
  114. package/dist/manifests/mailchimp.d.ts.map +1 -0
  115. package/dist/manifests/mailchimp.js +18 -0
  116. package/dist/manifests/mailchimp.js.map +1 -0
  117. package/dist/manifests/mca_portal.d.ts +3 -0
  118. package/dist/manifests/mca_portal.d.ts.map +1 -0
  119. package/dist/manifests/mca_portal.js +12 -0
  120. package/dist/manifests/mca_portal.js.map +1 -0
  121. package/dist/manifests/meta_ads.d.ts +3 -0
  122. package/dist/manifests/meta_ads.d.ts.map +1 -0
  123. package/dist/manifests/meta_ads.js +13 -0
  124. package/dist/manifests/meta_ads.js.map +1 -0
  125. package/dist/manifests/mixpanel.d.ts +3 -0
  126. package/dist/manifests/mixpanel.d.ts.map +1 -0
  127. package/dist/manifests/mixpanel.js +13 -0
  128. package/dist/manifests/mixpanel.js.map +1 -0
  129. package/dist/manifests/moengage.d.ts +3 -0
  130. package/dist/manifests/moengage.d.ts.map +1 -0
  131. package/dist/manifests/moengage.js +14 -0
  132. package/dist/manifests/moengage.js.map +1 -0
  133. package/dist/manifests/netsuite.d.ts +3 -0
  134. package/dist/manifests/netsuite.d.ts.map +1 -0
  135. package/dist/manifests/netsuite.js +16 -0
  136. package/dist/manifests/netsuite.js.map +1 -0
  137. package/dist/manifests/okta.d.ts +3 -0
  138. package/dist/manifests/okta.d.ts.map +1 -0
  139. package/dist/manifests/okta.js +16 -0
  140. package/dist/manifests/okta.js.map +1 -0
  141. package/dist/manifests/oracle_fusion.d.ts +3 -0
  142. package/dist/manifests/oracle_fusion.d.ts.map +1 -0
  143. package/dist/manifests/oracle_fusion.js +18 -0
  144. package/dist/manifests/oracle_fusion.js.map +1 -0
  145. package/dist/manifests/pagerduty.d.ts +3 -0
  146. package/dist/manifests/pagerduty.d.ts.map +1 -0
  147. package/dist/manifests/pagerduty.js +14 -0
  148. package/dist/manifests/pagerduty.js.map +1 -0
  149. package/dist/manifests/pinelabs_plural.d.ts +3 -0
  150. package/dist/manifests/pinelabs_plural.d.ts.map +1 -0
  151. package/dist/manifests/pinelabs_plural.js +14 -0
  152. package/dist/manifests/pinelabs_plural.js.map +1 -0
  153. package/dist/manifests/quickbooks.d.ts +3 -0
  154. package/dist/manifests/quickbooks.d.ts.map +1 -0
  155. package/dist/manifests/quickbooks.js +14 -0
  156. package/dist/manifests/quickbooks.js.map +1 -0
  157. package/dist/manifests/s3.d.ts +3 -0
  158. package/dist/manifests/s3.d.ts.map +1 -0
  159. package/dist/manifests/s3.js +14 -0
  160. package/dist/manifests/s3.js.map +1 -0
  161. package/dist/manifests/salesforce.d.ts +3 -0
  162. package/dist/manifests/salesforce.d.ts.map +1 -0
  163. package/dist/manifests/salesforce.js +14 -0
  164. package/dist/manifests/salesforce.js.map +1 -0
  165. package/dist/manifests/sanctions_api.d.ts +3 -0
  166. package/dist/manifests/sanctions_api.d.ts.map +1 -0
  167. package/dist/manifests/sanctions_api.js +13 -0
  168. package/dist/manifests/sanctions_api.js.map +1 -0
  169. package/dist/manifests/sap.d.ts +3 -0
  170. package/dist/manifests/sap.d.ts.map +1 -0
  171. package/dist/manifests/sap.js +15 -0
  172. package/dist/manifests/sap.js.map +1 -0
  173. package/dist/manifests/sendgrid.d.ts +3 -0
  174. package/dist/manifests/sendgrid.d.ts.map +1 -0
  175. package/dist/manifests/sendgrid.js +15 -0
  176. package/dist/manifests/sendgrid.js.map +1 -0
  177. package/dist/manifests/servicenow.d.ts +3 -0
  178. package/dist/manifests/servicenow.d.ts.map +1 -0
  179. package/dist/manifests/servicenow.js +14 -0
  180. package/dist/manifests/servicenow.js.map +1 -0
  181. package/dist/manifests/slack.d.ts +3 -0
  182. package/dist/manifests/slack.d.ts.map +1 -0
  183. package/dist/manifests/slack.js +15 -0
  184. package/dist/manifests/slack.js.map +1 -0
  185. package/dist/manifests/stripe.d.ts +3 -0
  186. package/dist/manifests/stripe.d.ts.map +1 -0
  187. package/dist/manifests/stripe.js +16 -0
  188. package/dist/manifests/stripe.js.map +1 -0
  189. package/dist/manifests/tally.d.ts +3 -0
  190. package/dist/manifests/tally.d.ts.map +1 -0
  191. package/dist/manifests/tally.js +14 -0
  192. package/dist/manifests/tally.js.map +1 -0
  193. package/dist/manifests/trustradius.d.ts +3 -0
  194. package/dist/manifests/trustradius.d.ts.map +1 -0
  195. package/dist/manifests/trustradius.js +12 -0
  196. package/dist/manifests/trustradius.js.map +1 -0
  197. package/dist/manifests/twilio.d.ts +3 -0
  198. package/dist/manifests/twilio.d.ts.map +1 -0
  199. package/dist/manifests/twilio.js +13 -0
  200. package/dist/manifests/twilio.js.map +1 -0
  201. package/dist/manifests/twitter.d.ts +3 -0
  202. package/dist/manifests/twitter.d.ts.map +1 -0
  203. package/dist/manifests/twitter.js +14 -0
  204. package/dist/manifests/twitter.js.map +1 -0
  205. package/dist/manifests/whatsapp.d.ts +3 -0
  206. package/dist/manifests/whatsapp.d.ts.map +1 -0
  207. package/dist/manifests/whatsapp.js +13 -0
  208. package/dist/manifests/whatsapp.js.map +1 -0
  209. package/dist/manifests/wordpress.d.ts +3 -0
  210. package/dist/manifests/wordpress.d.ts.map +1 -0
  211. package/dist/manifests/wordpress.js +15 -0
  212. package/dist/manifests/wordpress.js.map +1 -0
  213. package/dist/manifests/youtube.d.ts +3 -0
  214. package/dist/manifests/youtube.d.ts.map +1 -0
  215. package/dist/manifests/youtube.js +14 -0
  216. package/dist/manifests/youtube.js.map +1 -0
  217. package/dist/manifests/zendesk.d.ts +3 -0
  218. package/dist/manifests/zendesk.d.ts.map +1 -0
  219. package/dist/manifests/zendesk.js +16 -0
  220. package/dist/manifests/zendesk.js.map +1 -0
  221. package/dist/manifests/zoho_books.d.ts +3 -0
  222. package/dist/manifests/zoho_books.d.ts.map +1 -0
  223. package/dist/manifests/zoho_books.js +15 -0
  224. package/dist/manifests/zoho_books.js.map +1 -0
  225. package/dist/manifests/zoom.d.ts +3 -0
  226. package/dist/manifests/zoom.d.ts.map +1 -0
  227. package/dist/manifests/zoom.js +14 -0
  228. package/dist/manifests/zoom.js.map +1 -0
  229. package/package.json +1 -1
package/dist/client.d.ts CHANGED
@@ -18,6 +18,7 @@ import { DomainsClient } from './resources/domains.js';
18
18
  import { WebAuthnClient } from './resources/webauthn.js';
19
19
  import { CredentialsClient } from './resources/credentials.js';
20
20
  import { PassportsClient } from './resources/passports.js';
21
+ import { ToolManifest, type EnforceOptions, type EnforceResult, type WrapToolOptions, type EnforceMiddlewareOptions } from './manifest.js';
21
22
  import type { AuthorizationRequest, AuthorizeParams, GrantexClientOptions, RateLimit, RotateKeyResponse, SignupParams, SignupResponse, UpdateDeveloperSettingsParams, UpdateDeveloperSettingsResponse } from './types.js';
22
23
  export declare class Grantex {
23
24
  #private;
@@ -63,5 +64,69 @@ export declare class Grantex {
63
64
  * Update developer settings (e.g. FIDO/WebAuthn requirements).
64
65
  */
65
66
  updateSettings(params: UpdateDeveloperSettingsParams): Promise<UpdateDeveloperSettingsResponse>;
67
+ /**
68
+ * Load a tool manifest for scope enforcement.
69
+ * Manifests define what permission level each tool requires.
70
+ */
71
+ loadManifest(manifest: ToolManifest): void;
72
+ /**
73
+ * Load multiple tool manifests at once.
74
+ */
75
+ loadManifests(manifests: ToolManifest[]): void;
76
+ /**
77
+ * Enforce scope for a tool call.
78
+ *
79
+ * 1. Verifies the grant token JWT offline (JWKS cached, <1ms after first call)
80
+ * 2. Looks up the tool's required permission from loaded manifests
81
+ * 3. Checks if the granted scope level covers the required permission
82
+ *
83
+ * Fails closed: unknown connectors/tools are denied by default.
84
+ *
85
+ * @example
86
+ * ```ts
87
+ * const result = await grantex.enforce({
88
+ * grantToken: token,
89
+ * connector: 'salesforce',
90
+ * tool: 'delete_contact',
91
+ * });
92
+ * if (!result.allowed) throw new Error(result.reason);
93
+ * ```
94
+ */
95
+ enforce(options: EnforceOptions): Promise<EnforceResult>;
96
+ /**
97
+ * Wrap a LangChain StructuredTool with automatic Grantex scope enforcement.
98
+ * Before each tool invocation, the grant token is verified and scopes are checked.
99
+ *
100
+ * @param tool - The LangChain StructuredTool to wrap
101
+ * @param options - Connector name, tool name, and grant token (string or getter function)
102
+ * @returns A new StructuredTool that enforces scopes before calling the original
103
+ *
104
+ * @example
105
+ * ```ts
106
+ * const protectedTool = grantex.wrapTool(myTool, {
107
+ * connector: 'salesforce',
108
+ * tool: 'create_lead',
109
+ * grantToken: () => currentState.grant_token,
110
+ * });
111
+ * ```
112
+ */
113
+ wrapTool<T extends {
114
+ name: string;
115
+ description: string;
116
+ invoke: (...args: unknown[]) => Promise<unknown>;
117
+ }>(tool: T, options: WrapToolOptions): T;
118
+ /**
119
+ * Create Express/Fastify middleware that enforces Grantex scopes on every request.
120
+ *
121
+ * @example
122
+ * ```ts
123
+ * app.use('/api/tools/*', grantex.enforceMiddleware({
124
+ * extractToken: (req) => req.headers.authorization?.replace('Bearer ', ''),
125
+ * extractConnector: (req) => req.params.connector,
126
+ * extractTool: (req) => req.params.tool,
127
+ * }));
128
+ * ```
129
+ */
130
+ enforceMiddleware(options: EnforceMiddlewareOptions): (req: unknown, res: unknown, next: unknown) => void;
66
131
  }
67
132
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -19,9 +19,14 @@ import { DomainsClient } from './resources/domains.js';
19
19
  import { WebAuthnClient } from './resources/webauthn.js';
20
20
  import { CredentialsClient } from './resources/credentials.js';
21
21
  import { PassportsClient } from './resources/passports.js';
22
+ import { permissionCovers } from './manifest.js';
23
+ import { verifyGrantToken } from './verify.js';
22
24
  const DEFAULT_BASE_URL = 'https://api.grantex.dev';
23
25
  export class Grantex {
24
26
  #http;
27
+ #manifests = new Map();
28
+ #jwksUri;
29
+ #enforceMode;
25
30
  agents;
26
31
  grants;
27
32
  tokens;
@@ -75,6 +80,8 @@ export class Grantex {
75
80
  this.webauthn = new WebAuthnClient(this.#http);
76
81
  this.credentials = new CredentialsClient(this.#http);
77
82
  this.passports = new PassportsClient(this.#http);
83
+ this.#jwksUri = `${(options.baseUrl ?? DEFAULT_BASE_URL).replace(/\/$/, '')}/.well-known/jwks.json`;
84
+ this.#enforceMode = options['enforceMode'] ?? 'strict';
78
85
  }
79
86
  /**
80
87
  * Create a new developer account without an API key.
@@ -122,5 +129,246 @@ export class Grantex {
122
129
  updateSettings(params) {
123
130
  return this.#http.patch('/v1/me', params);
124
131
  }
132
+ /**
133
+ * Load a tool manifest for scope enforcement.
134
+ * Manifests define what permission level each tool requires.
135
+ */
136
+ loadManifest(manifest) {
137
+ this.#manifests.set(manifest.connector, manifest);
138
+ }
139
+ /**
140
+ * Load multiple tool manifests at once.
141
+ */
142
+ loadManifests(manifests) {
143
+ for (const m of manifests) {
144
+ this.#manifests.set(m.connector, m);
145
+ }
146
+ }
147
+ /**
148
+ * Enforce scope for a tool call.
149
+ *
150
+ * 1. Verifies the grant token JWT offline (JWKS cached, <1ms after first call)
151
+ * 2. Looks up the tool's required permission from loaded manifests
152
+ * 3. Checks if the granted scope level covers the required permission
153
+ *
154
+ * Fails closed: unknown connectors/tools are denied by default.
155
+ *
156
+ * @example
157
+ * ```ts
158
+ * const result = await grantex.enforce({
159
+ * grantToken: token,
160
+ * connector: 'salesforce',
161
+ * tool: 'delete_contact',
162
+ * });
163
+ * if (!result.allowed) throw new Error(result.reason);
164
+ * ```
165
+ */
166
+ async enforce(options) {
167
+ const { grantToken, connector, tool, amount } = options;
168
+ const base = {
169
+ grantId: '',
170
+ agentDid: '',
171
+ scopes: [],
172
+ permission: '',
173
+ connector,
174
+ tool,
175
+ };
176
+ // 1. Verify the token offline via JWKS
177
+ let grant;
178
+ try {
179
+ grant = await verifyGrantToken(grantToken, { jwksUri: this.#jwksUri });
180
+ }
181
+ catch (err) {
182
+ return this.#applyEnforceMode({
183
+ ...base,
184
+ allowed: false,
185
+ reason: `Token verification failed: ${err instanceof Error ? err.message : String(err)}`,
186
+ });
187
+ }
188
+ base.grantId = grant.grantId;
189
+ base.agentDid = grant.agentDid;
190
+ base.scopes = grant.scopes;
191
+ // 2. Look up manifest for the connector
192
+ const manifest = this.#manifests.get(connector);
193
+ if (!manifest) {
194
+ return this.#applyEnforceMode({
195
+ ...base,
196
+ allowed: false,
197
+ reason: `No manifest loaded for connector '${connector}'. Load a manifest first.`,
198
+ });
199
+ }
200
+ // 3. Look up tool permission from manifest
201
+ const requiredPermission = manifest.getPermission(tool);
202
+ if (!requiredPermission) {
203
+ return this.#applyEnforceMode({
204
+ ...base,
205
+ allowed: false,
206
+ reason: `Unknown tool '${tool}' on connector '${connector}'. Tool not found in manifest.`,
207
+ });
208
+ }
209
+ base.permission = requiredPermission;
210
+ // 4. Find the best matching scope for this connector
211
+ const grantedPermission = this.#resolveGrantedPermission(grant.scopes, connector);
212
+ if (!grantedPermission) {
213
+ return this.#applyEnforceMode({
214
+ ...base,
215
+ allowed: false,
216
+ reason: `No scope grants access to connector '${connector}'.`,
217
+ });
218
+ }
219
+ // 5. Check permission hierarchy
220
+ if (!permissionCovers(grantedPermission, requiredPermission)) {
221
+ return this.#applyEnforceMode({
222
+ ...base,
223
+ allowed: false,
224
+ reason: `${grantedPermission} scope does not permit ${requiredPermission} operations on ${connector}.`,
225
+ });
226
+ }
227
+ // 6. Check capped amount if provided
228
+ if (amount !== undefined) {
229
+ const cap = this.#extractCap(grant.scopes, connector);
230
+ if (cap !== undefined && amount > cap) {
231
+ return this.#applyEnforceMode({
232
+ ...base,
233
+ allowed: false,
234
+ reason: `Amount ${amount} exceeds budget cap of ${cap} on ${connector}.`,
235
+ });
236
+ }
237
+ }
238
+ return { ...base, allowed: true, reason: '' };
239
+ }
240
+ /**
241
+ * Resolve the highest granted permission level for a connector from scope strings.
242
+ * Scope format: `tool:{connector}:{permission}[:{resource}][:capped:{N}]`
243
+ */
244
+ #resolveGrantedPermission(scopes, connector) {
245
+ let best;
246
+ let bestLevel = -1;
247
+ const levels = { read: 0, write: 1, delete: 2, admin: 3 };
248
+ for (const scope of scopes) {
249
+ const parts = scope.split(':');
250
+ // Match: tool:{connector}:{permission}:...
251
+ if (parts[0] === 'tool' && parts[1] === connector && parts[2]) {
252
+ const level = levels[parts[2]] ?? -1;
253
+ if (level > bestLevel) {
254
+ bestLevel = level;
255
+ best = parts[2];
256
+ }
257
+ }
258
+ // Also match agenticorg:{connector}:{permission}
259
+ if (parts[0] === 'agenticorg' && parts[1] === connector && parts[2]) {
260
+ const level = levels[parts[2]] ?? -1;
261
+ if (level > bestLevel) {
262
+ bestLevel = level;
263
+ best = parts[2];
264
+ }
265
+ }
266
+ }
267
+ return best;
268
+ }
269
+ /**
270
+ * Extract the budget cap from capped scopes for a connector.
271
+ * Scope format: `tool:{connector}:{permission}:{resource}:capped:{N}`
272
+ */
273
+ #extractCap(scopes, connector) {
274
+ for (const scope of scopes) {
275
+ const parts = scope.split(':');
276
+ if (parts[0] === 'tool' && parts[1] === connector) {
277
+ const cappedIdx = parts.indexOf('capped');
278
+ if (cappedIdx !== -1 && parts[cappedIdx + 1]) {
279
+ return Number(parts[cappedIdx + 1]);
280
+ }
281
+ }
282
+ }
283
+ return undefined;
284
+ }
285
+ #applyEnforceMode(result) {
286
+ if (!result.allowed && this.#enforceMode === 'permissive') {
287
+ console.warn(`[grantex] PERMISSIVE MODE — would deny: ${result.reason} (connector=${result.connector}, tool=${result.tool})`);
288
+ return { ...result, allowed: true };
289
+ }
290
+ return result;
291
+ }
292
+ /**
293
+ * Wrap a LangChain StructuredTool with automatic Grantex scope enforcement.
294
+ * Before each tool invocation, the grant token is verified and scopes are checked.
295
+ *
296
+ * @param tool - The LangChain StructuredTool to wrap
297
+ * @param options - Connector name, tool name, and grant token (string or getter function)
298
+ * @returns A new StructuredTool that enforces scopes before calling the original
299
+ *
300
+ * @example
301
+ * ```ts
302
+ * const protectedTool = grantex.wrapTool(myTool, {
303
+ * connector: 'salesforce',
304
+ * tool: 'create_lead',
305
+ * grantToken: () => currentState.grant_token,
306
+ * });
307
+ * ```
308
+ */
309
+ wrapTool(tool, options) {
310
+ const self = this;
311
+ const originalInvoke = tool.invoke.bind(tool);
312
+ const wrapped = Object.create(tool);
313
+ wrapped.invoke = async function (...args) {
314
+ const token = typeof options.grantToken === 'function'
315
+ ? options.grantToken()
316
+ : options.grantToken;
317
+ const result = await self.enforce({
318
+ grantToken: token,
319
+ connector: options.connector,
320
+ tool: options.tool,
321
+ });
322
+ if (!result.allowed) {
323
+ throw new Error(`Grantex scope denied: ${result.reason}`);
324
+ }
325
+ return originalInvoke(...args);
326
+ };
327
+ return wrapped;
328
+ }
329
+ /**
330
+ * Create Express/Fastify middleware that enforces Grantex scopes on every request.
331
+ *
332
+ * @example
333
+ * ```ts
334
+ * app.use('/api/tools/*', grantex.enforceMiddleware({
335
+ * extractToken: (req) => req.headers.authorization?.replace('Bearer ', ''),
336
+ * extractConnector: (req) => req.params.connector,
337
+ * extractTool: (req) => req.params.tool,
338
+ * }));
339
+ * ```
340
+ */
341
+ enforceMiddleware(options) {
342
+ const self = this;
343
+ return function grantexEnforce(req, res, next) {
344
+ const request = req;
345
+ const response = res;
346
+ const nextFn = next;
347
+ const token = options.extractToken(request);
348
+ const connector = options.extractConnector(request);
349
+ const tool = options.extractTool(request);
350
+ if (!token) {
351
+ const statusFn = response['status'];
352
+ const jsonFn = statusFn.call(response, 401)['json'];
353
+ jsonFn.call(statusFn.call(response, 401), { error: { code: 'UNAUTHORIZED', message: 'Missing grant token' } });
354
+ return;
355
+ }
356
+ self.enforce({ grantToken: token, connector, tool })
357
+ .then((result) => {
358
+ if (!result.allowed) {
359
+ const statusFn = response['status'];
360
+ const jsonFn = statusFn.call(response, 403)['json'];
361
+ jsonFn.call(statusFn.call(response, 403), {
362
+ error: { code: 'SCOPE_DENIED', message: result.reason, connector, tool },
363
+ });
364
+ return;
365
+ }
366
+ // Attach enforce result to request for downstream use
367
+ request['grantexEnforce'] = result;
368
+ nextFn();
369
+ })
370
+ .catch((err) => nextFn(err));
371
+ };
372
+ }
125
373
  }
126
374
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -5,5 +5,6 @@ export { generatePkce, type PkceChallenge } from './pkce.js';
5
5
  export { GrantexError, GrantexApiError, GrantexAuthError, GrantexTokenError, GrantexNetworkError, } from './errors.js';
6
6
  export { EventsClient, type GrantexEvent as GrantexStreamEvent, type StreamOptions, type EventHandler } from './resources/events.js';
7
7
  export { PassportsClient, type IssuePassportParams, type IssuedPassportResponse, type GetPassportResponse, type RevokePassportResponse, type ListPassportsParams, } from './resources/passports.js';
8
+ export { ToolManifest, Permission, permissionCovers, type EnforceOptions, type EnforceResult, type ToolManifestOptions, type WrapToolOptions, type EnforceMiddlewareOptions } from './manifest.js';
8
9
  export type { RateLimit, GrantexClientOptions, SignupParams, SignupResponse, RotateKeyResponse, Agent, RegisterAgentParams, UpdateAgentParams, ListAgentsResponse, AuthorizeParams, AuthorizationRequest, Grant, ListGrantsParams, ListGrantsResponse, VerifiedGrant, DelegateParams, ExchangeTokenParams, ExchangeTokenResponse, RefreshTokenParams, VerifyTokenResponse, CreatePrincipalSessionParams, PrincipalSessionResponse, LogAuditParams, AuditEntry, ListAuditParams, ListAuditResponse, VerifyGrantTokenOptions, WebhookEventType, CreateWebhookParams, WebhookEndpoint, WebhookEndpointWithSecret, ListWebhooksResponse, SubscriptionStatus, CreateCheckoutParams, CheckoutResponse, CreatePortalParams, PortalResponse, Policy, CreatePolicyParams, UpdatePolicyParams, ListPoliciesResponse, AnomalyType, AnomalySeverity, Anomaly, DetectAnomaliesResponse, ListAnomaliesResponse, ScimEmail, ScimUserMeta, ScimUser, ScimListResponse, CreateScimUserParams, UpdateScimUserParams, ScimToken, ScimTokenWithSecret, CreateScimTokenParams, ListScimTokensResponse, SsoConfig, CreateSsoConfigParams, SsoLoginResponse, SsoCallbackResponse, StoreCredentialParams, StoreCredentialResponse, VaultCredential, ListVaultCredentialsParams, ListVaultCredentialsResponse, ExchangeCredentialParams, ExchangeCredentialResponse, AllocateBudgetParams, BudgetAllocation, DebitBudgetParams, DebitBudgetResponse, BudgetTransaction, BudgetTransactionsResponse, ComplianceSummary, ComplianceExportGrantsParams, ComplianceExportAuditParams, ComplianceGrantsExport, ComplianceAuditExport, EvidencePackParams, EvidencePack, ChainIntegrity, UsageResponse, UsageHistoryEntry, UsageHistoryResponse, CreateDomainParams, CreateDomainResponse, DomainEntry, ListDomainsResponse, VerifyDomainResponse, WebAuthnRegistrationOptions, WebAuthnRegistrationVerifyParams, WebAuthnCredential, ListWebAuthnCredentialsResponse, VerifiableCredentialRecord, ListCredentialsParams, ListCredentialsResponse, VCVerificationResult, SDJWTPresentParams, SDJWTPresentResult, UpdateDeveloperSettingsParams, UpdateDeveloperSettingsResponse, } from './types.js';
9
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,IAAI,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrI,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,YAAY,EACV,SAAS,EACT,oBAAoB,EAEpB,YAAY,EACZ,cAAc,EACd,iBAAiB,EAEjB,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAElB,eAAe,EACf,oBAAoB,EAEpB,KAAK,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EAEd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EAEnB,4BAA4B,EAC5B,wBAAwB,EAExB,cAAc,EACd,UAAU,EACV,eAAe,EACf,iBAAiB,EAEjB,uBAAuB,EAEvB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EAEpB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EAEd,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EAEpB,WAAW,EACX,eAAe,EACf,OAAO,EACP,uBAAuB,EACvB,qBAAqB,EAErB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EAEtB,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EAEnB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAE1B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAE1B,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EAEd,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EAEpB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EAEpB,2BAA2B,EAC3B,gCAAgC,EAChC,kBAAkB,EAClB,+BAA+B,EAE/B,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EAEpB,kBAAkB,EAClB,kBAAkB,EAElB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG/C,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAGtD,OAAO,EAAE,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAG7D,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAGrB,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,IAAI,kBAAkB,EAAE,KAAK,aAAa,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrI,OAAO,EACL,eAAe,EACf,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,KAAK,eAAe,EAAE,KAAK,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAGnM,YAAY,EACV,SAAS,EACT,oBAAoB,EAEpB,YAAY,EACZ,cAAc,EACd,iBAAiB,EAEjB,KAAK,EACL,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAElB,eAAe,EACf,oBAAoB,EAEpB,KAAK,EACL,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,cAAc,EAEd,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EAEnB,4BAA4B,EAC5B,wBAAwB,EAExB,cAAc,EACd,UAAU,EACV,eAAe,EACf,iBAAiB,EAEjB,uBAAuB,EAEvB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,oBAAoB,EAEpB,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EAEd,MAAM,EACN,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,EAEpB,WAAW,EACX,eAAe,EACf,OAAO,EACP,uBAAuB,EACvB,qBAAqB,EAErB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,EAEtB,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EAEnB,qBAAqB,EACrB,uBAAuB,EACvB,eAAe,EACf,0BAA0B,EAC1B,4BAA4B,EAC5B,wBAAwB,EACxB,0BAA0B,EAE1B,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,0BAA0B,EAE1B,iBAAiB,EACjB,4BAA4B,EAC5B,2BAA2B,EAC3B,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,cAAc,EAEd,aAAa,EACb,iBAAiB,EACjB,oBAAoB,EAEpB,kBAAkB,EAClB,oBAAoB,EACpB,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EAEpB,2BAA2B,EAC3B,gCAAgC,EAChC,kBAAkB,EAClB,+BAA+B,EAE/B,0BAA0B,EAC1B,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EAEpB,kBAAkB,EAClB,kBAAkB,EAElB,6BAA6B,EAC7B,+BAA+B,GAChC,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -12,4 +12,6 @@ export { GrantexError, GrantexApiError, GrantexAuthError, GrantexTokenError, Gra
12
12
  export { EventsClient } from './resources/events.js';
13
13
  // Passports (MPP Agent Identity)
14
14
  export { PassportsClient, } from './resources/passports.js';
15
+ // Scope enforcement
16
+ export { ToolManifest, Permission, permissionCovers } from './manifest.js';
15
17
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,iCAAiC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,cAAc;AACd,OAAO,EAAE,YAAY,EAAsB,MAAM,WAAW,CAAC;AAE7D,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAkF,MAAM,uBAAuB,CAAC;AAErI,iCAAiC;AACjC,OAAO,EACL,eAAe,GAMhB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc;AACd,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAEtC,4DAA4D;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C,iCAAiC;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,cAAc;AACd,OAAO,EAAE,YAAY,EAAsB,MAAM,WAAW,CAAC;AAE7D,gBAAgB;AAChB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,kBAAkB;AAClB,OAAO,EAAE,YAAY,EAAkF,MAAM,uBAAuB,CAAC;AAErI,iCAAiC;AACjC,OAAO,EACL,eAAe,GAMhB,MAAM,0BAA0B,CAAC;AAElC,oBAAoB;AACpB,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAA0H,MAAM,eAAe,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Tool Manifest & Permission — scope enforcement for AI agent tool calls.
3
+ *
4
+ * A ToolManifest declares the permission level (read/write/delete/admin)
5
+ * required for each tool on a connector. The `enforce()` method on the
6
+ * Grantex client uses loaded manifests to check whether a grant token's
7
+ * scopes allow a given tool call.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { ToolManifest, Permission } from '@grantex/sdk';
12
+ *
13
+ * const manifest = new ToolManifest({
14
+ * connector: 'salesforce',
15
+ * tools: {
16
+ * query: Permission.READ,
17
+ * create_lead: Permission.WRITE,
18
+ * delete_contact: Permission.DELETE,
19
+ * },
20
+ * });
21
+ * ```
22
+ */
23
+ /** Permission levels for tool operations. */
24
+ export declare enum Permission {
25
+ READ = "read",
26
+ WRITE = "write",
27
+ DELETE = "delete",
28
+ ADMIN = "admin"
29
+ }
30
+ /**
31
+ * Check whether a granted permission level covers the required level.
32
+ *
33
+ * Hierarchy: `admin > delete > write > read`
34
+ *
35
+ * - A `write` scope covers `read` + `write` tools.
36
+ * - A `delete` scope covers `read` + `write` + `delete` tools.
37
+ * - An `admin` scope covers everything.
38
+ */
39
+ export declare function permissionCovers(granted: string, required: string): boolean;
40
+ export interface ToolManifestOptions {
41
+ /** Connector name (e.g., "salesforce", "hubspot"). */
42
+ connector: string;
43
+ /** Tool name → Permission mapping. */
44
+ tools: Record<string, Permission>;
45
+ /** Manifest version (default "1.0.0"). */
46
+ version?: string;
47
+ /** Human-readable description. */
48
+ description?: string;
49
+ }
50
+ /**
51
+ * Declares the required permission level for each tool on a connector.
52
+ *
53
+ * Load manifests via `grantex.loadManifest()` and they will be used
54
+ * automatically by `grantex.enforce()`.
55
+ */
56
+ export declare class ToolManifest {
57
+ readonly connector: string;
58
+ readonly tools: Record<string, Permission>;
59
+ readonly version: string;
60
+ readonly description: string;
61
+ constructor(options: ToolManifestOptions);
62
+ /** Get the declared permission for a tool. Returns undefined if not found. */
63
+ getPermission(toolName: string): Permission | undefined;
64
+ /** Add or update a tool's permission in this manifest. */
65
+ addTool(toolName: string, permission: Permission): void;
66
+ /** Number of tools in this manifest. */
67
+ get toolCount(): number;
68
+ /**
69
+ * Create a ToolManifest from a JSON object (e.g., loaded from file).
70
+ *
71
+ * Expected shape:
72
+ * ```json
73
+ * { "connector": "salesforce", "tools": { "query": "read", ... } }
74
+ * ```
75
+ */
76
+ static fromJSON(data: Record<string, unknown>): ToolManifest;
77
+ }
78
+ /** Result of a `grantex.enforce()` call. */
79
+ export interface EnforceResult {
80
+ /** Whether the tool call is permitted. */
81
+ allowed: boolean;
82
+ /** Human-readable reason if denied. */
83
+ reason: string;
84
+ /** Grant ID from the JWT (empty if token invalid). */
85
+ grantId: string;
86
+ /** Agent DID from the JWT (empty if token invalid). */
87
+ agentDid: string;
88
+ /** All scopes from the grant token. */
89
+ scopes: string[];
90
+ /** Resolved permission for the requested tool. */
91
+ permission: string;
92
+ /** Connector name. */
93
+ connector: string;
94
+ /** Tool name. */
95
+ tool: string;
96
+ }
97
+ /** Options for `grantex.enforce()`. */
98
+ export interface EnforceOptions {
99
+ /** The Grantex grant token (JWT). */
100
+ grantToken: string;
101
+ /** Connector name (e.g., "salesforce"). */
102
+ connector: string;
103
+ /** Tool name (e.g., "delete_contact"). */
104
+ tool: string;
105
+ /** Amount for capped scope enforcement (optional). */
106
+ amount?: number;
107
+ }
108
+ /** Options for `grantex.wrapTool()`. */
109
+ export interface WrapToolOptions {
110
+ /** Connector name. */
111
+ connector: string;
112
+ /** Tool name. */
113
+ tool: string;
114
+ /** Grant token — static string or getter function for dynamic tokens. */
115
+ grantToken: string | (() => string);
116
+ }
117
+ /** Options for `grantex.enforceMiddleware()`. */
118
+ export interface EnforceMiddlewareOptions {
119
+ /** Extract the grant token from the request (e.g., from Authorization header). */
120
+ extractToken: (req: Record<string, unknown>) => string | undefined;
121
+ /** Extract the connector name from the request. */
122
+ extractConnector: (req: Record<string, unknown>) => string;
123
+ /** Extract the tool name from the request. */
124
+ extractTool: (req: Record<string, unknown>) => string;
125
+ }
126
+ //# sourceMappingURL=manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../src/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,6CAA6C;AAC7C,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,KAAK,UAAU;CAChB;AASD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAI3E;AAMD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAClC,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3C,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;gBAEjB,OAAO,EAAE,mBAAmB;IAqBxC,8EAA8E;IAC9E,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIvD,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,GAAG,IAAI;IAIvD,wCAAwC;IACxC,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;CAa7D;AAMD,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,OAAO,EAAE,OAAO,CAAC;IACjB,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,uCAAuC;IACvC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,UAAU,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;CACrC;AAED,iDAAiD;AACjD,MAAM,WAAW,wBAAwB;IACvC,kFAAkF;IAClF,YAAY,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,GAAG,SAAS,CAAC;IACnE,mDAAmD;IACnD,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;IAC3D,8CAA8C;IAC9C,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC;CACvD"}