@juspay/neurolink 9.31.2 → 9.32.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 (161) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/auth/AuthProviderFactory.d.ts +71 -0
  3. package/dist/auth/AuthProviderFactory.js +111 -0
  4. package/dist/auth/AuthProviderRegistry.d.ts +33 -0
  5. package/dist/auth/AuthProviderRegistry.js +190 -0
  6. package/dist/auth/RequestContext.d.ts +23 -0
  7. package/dist/auth/RequestContext.js +78 -0
  8. package/dist/auth/authContext.d.ts +198 -0
  9. package/dist/auth/authContext.js +314 -0
  10. package/dist/auth/errors.d.ts +63 -0
  11. package/dist/auth/errors.js +39 -0
  12. package/dist/auth/index.d.ts +20 -8
  13. package/dist/auth/index.js +35 -7
  14. package/dist/auth/middleware/AuthMiddleware.d.ts +181 -0
  15. package/dist/auth/middleware/AuthMiddleware.js +519 -0
  16. package/dist/auth/middleware/rateLimitByUser.d.ts +282 -0
  17. package/dist/auth/middleware/rateLimitByUser.js +554 -0
  18. package/dist/auth/providers/BaseAuthProvider.d.ts +259 -0
  19. package/dist/auth/providers/BaseAuthProvider.js +723 -0
  20. package/dist/auth/providers/CognitoProvider.d.ts +61 -0
  21. package/dist/auth/providers/CognitoProvider.js +304 -0
  22. package/dist/auth/providers/KeycloakProvider.d.ts +61 -0
  23. package/dist/auth/providers/KeycloakProvider.js +393 -0
  24. package/dist/auth/providers/auth0.d.ts +59 -0
  25. package/dist/auth/providers/auth0.js +274 -0
  26. package/dist/auth/providers/betterAuth.d.ts +51 -0
  27. package/dist/auth/providers/betterAuth.js +182 -0
  28. package/dist/auth/providers/clerk.d.ts +65 -0
  29. package/dist/auth/providers/clerk.js +317 -0
  30. package/dist/auth/providers/custom.d.ts +64 -0
  31. package/dist/auth/providers/custom.js +112 -0
  32. package/dist/auth/providers/firebase.d.ts +63 -0
  33. package/dist/auth/providers/firebase.js +226 -0
  34. package/dist/auth/providers/jwt.d.ts +68 -0
  35. package/dist/auth/providers/jwt.js +212 -0
  36. package/dist/auth/providers/oauth2.d.ts +73 -0
  37. package/dist/auth/providers/oauth2.js +303 -0
  38. package/dist/auth/providers/supabase.d.ts +63 -0
  39. package/dist/auth/providers/supabase.js +259 -0
  40. package/dist/auth/providers/workos.d.ts +61 -0
  41. package/dist/auth/providers/workos.js +284 -0
  42. package/dist/auth/serverBridge.d.ts +14 -0
  43. package/dist/auth/serverBridge.js +25 -0
  44. package/dist/auth/sessionManager.d.ts +142 -0
  45. package/dist/auth/sessionManager.js +437 -0
  46. package/dist/cli/commands/authProviders.d.ts +43 -0
  47. package/dist/cli/commands/authProviders.js +399 -0
  48. package/dist/cli/factories/authCommandFactory.d.ts +23 -5
  49. package/dist/cli/factories/authCommandFactory.js +108 -5
  50. package/dist/cli/parser.js +1 -1
  51. package/dist/client/auth/AuthProviderFactory.js +111 -0
  52. package/dist/client/auth/AuthProviderRegistry.js +190 -0
  53. package/dist/client/auth/RequestContext.js +78 -0
  54. package/dist/client/auth/accountPool.js +178 -0
  55. package/dist/client/auth/authContext.js +314 -0
  56. package/dist/client/auth/errors.js +39 -0
  57. package/dist/client/auth/index.js +61 -0
  58. package/dist/client/auth/middleware/AuthMiddleware.js +519 -0
  59. package/dist/client/auth/middleware/rateLimitByUser.js +554 -0
  60. package/dist/client/auth/providers/BaseAuthProvider.js +723 -0
  61. package/dist/client/auth/providers/CognitoProvider.js +304 -0
  62. package/dist/client/auth/providers/KeycloakProvider.js +393 -0
  63. package/dist/client/auth/providers/auth0.js +274 -0
  64. package/dist/client/auth/providers/betterAuth.js +182 -0
  65. package/dist/client/auth/providers/clerk.js +317 -0
  66. package/dist/client/auth/providers/custom.js +112 -0
  67. package/dist/client/auth/providers/firebase.js +226 -0
  68. package/dist/client/auth/providers/jwt.js +212 -0
  69. package/dist/client/auth/providers/oauth2.js +303 -0
  70. package/dist/client/auth/providers/supabase.js +259 -0
  71. package/dist/client/auth/providers/workos.js +284 -0
  72. package/dist/client/auth/serverBridge.js +25 -0
  73. package/dist/client/auth/sessionManager.js +437 -0
  74. package/dist/client/core/infrastructure/baseRegistry.js +5 -1
  75. package/dist/client/index.js +25 -0
  76. package/dist/client/mcp/toolRegistry.js +11 -1
  77. package/dist/client/neurolink.js +218 -0
  78. package/dist/client/rag/ChunkerRegistry.js +2 -2
  79. package/dist/client/rag/metadata/MetadataExtractorRegistry.js +2 -2
  80. package/dist/client/rag/reranker/RerankerRegistry.js +2 -2
  81. package/dist/client/server/routes/agentRoutes.js +20 -2
  82. package/dist/client/types/authTypes.js +2 -1
  83. package/dist/core/infrastructure/baseRegistry.d.ts +3 -1
  84. package/dist/core/infrastructure/baseRegistry.js +5 -1
  85. package/dist/index.d.ts +1 -0
  86. package/dist/index.js +25 -0
  87. package/dist/lib/auth/AuthProviderFactory.d.ts +71 -0
  88. package/dist/lib/auth/AuthProviderFactory.js +112 -0
  89. package/dist/lib/auth/AuthProviderRegistry.d.ts +33 -0
  90. package/dist/lib/auth/AuthProviderRegistry.js +191 -0
  91. package/dist/lib/auth/RequestContext.d.ts +23 -0
  92. package/dist/lib/auth/RequestContext.js +79 -0
  93. package/dist/lib/auth/authContext.d.ts +198 -0
  94. package/dist/lib/auth/authContext.js +315 -0
  95. package/dist/lib/auth/errors.d.ts +63 -0
  96. package/dist/lib/auth/errors.js +40 -0
  97. package/dist/lib/auth/index.d.ts +20 -8
  98. package/dist/lib/auth/index.js +35 -7
  99. package/dist/lib/auth/middleware/AuthMiddleware.d.ts +181 -0
  100. package/dist/lib/auth/middleware/AuthMiddleware.js +520 -0
  101. package/dist/lib/auth/middleware/rateLimitByUser.d.ts +282 -0
  102. package/dist/lib/auth/middleware/rateLimitByUser.js +555 -0
  103. package/dist/lib/auth/providers/BaseAuthProvider.d.ts +259 -0
  104. package/dist/lib/auth/providers/BaseAuthProvider.js +724 -0
  105. package/dist/lib/auth/providers/CognitoProvider.d.ts +61 -0
  106. package/dist/lib/auth/providers/CognitoProvider.js +305 -0
  107. package/dist/lib/auth/providers/KeycloakProvider.d.ts +61 -0
  108. package/dist/lib/auth/providers/KeycloakProvider.js +394 -0
  109. package/dist/lib/auth/providers/auth0.d.ts +59 -0
  110. package/dist/lib/auth/providers/auth0.js +275 -0
  111. package/dist/lib/auth/providers/betterAuth.d.ts +51 -0
  112. package/dist/lib/auth/providers/betterAuth.js +183 -0
  113. package/dist/lib/auth/providers/clerk.d.ts +65 -0
  114. package/dist/lib/auth/providers/clerk.js +318 -0
  115. package/dist/lib/auth/providers/custom.d.ts +64 -0
  116. package/dist/lib/auth/providers/custom.js +113 -0
  117. package/dist/lib/auth/providers/firebase.d.ts +63 -0
  118. package/dist/lib/auth/providers/firebase.js +227 -0
  119. package/dist/lib/auth/providers/jwt.d.ts +68 -0
  120. package/dist/lib/auth/providers/jwt.js +213 -0
  121. package/dist/lib/auth/providers/oauth2.d.ts +73 -0
  122. package/dist/lib/auth/providers/oauth2.js +304 -0
  123. package/dist/lib/auth/providers/supabase.d.ts +63 -0
  124. package/dist/lib/auth/providers/supabase.js +260 -0
  125. package/dist/lib/auth/providers/workos.d.ts +61 -0
  126. package/dist/lib/auth/providers/workos.js +285 -0
  127. package/dist/lib/auth/serverBridge.d.ts +14 -0
  128. package/dist/lib/auth/serverBridge.js +26 -0
  129. package/dist/lib/auth/sessionManager.d.ts +142 -0
  130. package/dist/lib/auth/sessionManager.js +438 -0
  131. package/dist/lib/core/infrastructure/baseRegistry.d.ts +3 -1
  132. package/dist/lib/core/infrastructure/baseRegistry.js +5 -1
  133. package/dist/lib/index.d.ts +1 -0
  134. package/dist/lib/index.js +25 -0
  135. package/dist/lib/mcp/toolRegistry.js +11 -1
  136. package/dist/lib/neurolink.d.ts +42 -1
  137. package/dist/lib/neurolink.js +218 -0
  138. package/dist/lib/rag/ChunkerRegistry.js +2 -2
  139. package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +2 -2
  140. package/dist/lib/rag/reranker/RerankerRegistry.js +2 -2
  141. package/dist/lib/server/routes/agentRoutes.js +20 -2
  142. package/dist/lib/types/authTypes.d.ts +937 -1
  143. package/dist/lib/types/authTypes.js +2 -1
  144. package/dist/lib/types/configTypes.d.ts +46 -0
  145. package/dist/lib/types/generateTypes.d.ts +6 -0
  146. package/dist/lib/types/index.d.ts +1 -0
  147. package/dist/lib/types/streamTypes.d.ts +6 -0
  148. package/dist/mcp/toolRegistry.js +11 -1
  149. package/dist/neurolink.d.ts +42 -1
  150. package/dist/neurolink.js +218 -0
  151. package/dist/rag/ChunkerRegistry.js +2 -2
  152. package/dist/rag/metadata/MetadataExtractorRegistry.js +2 -2
  153. package/dist/rag/reranker/RerankerRegistry.js +2 -2
  154. package/dist/server/routes/agentRoutes.js +20 -2
  155. package/dist/types/authTypes.d.ts +937 -1
  156. package/dist/types/authTypes.js +2 -1
  157. package/dist/types/configTypes.d.ts +46 -0
  158. package/dist/types/generateTypes.d.ts +6 -0
  159. package/dist/types/index.d.ts +1 -0
  160. package/dist/types/streamTypes.d.ts +6 -0
  161. package/package.json +2 -1
@@ -1,13 +1,14 @@
1
1
  /**
2
2
  * NeuroLink Authentication Module
3
3
  *
4
- * Provides OAuth 2.0 authentication support for Claude Pro/Max subscriptions
5
- * and secure token storage.
6
- *
7
- * Key components:
8
- * - AnthropicOAuth: OAuth 2.0 flow implementation with PKCE support
9
- * - TokenStore: Secure local storage for OAuth tokens
10
- * - Callback Server: Local HTTP server for OAuth redirects
4
+ * Exports the full multi-provider authentication system including:
5
+ * - Anthropic OAuth 2.0 flow (PKCE, token storage, callback server)
6
+ * - Multi-provider auth (Auth0, Clerk, Firebase, Supabase, Cognito,
7
+ * Keycloak, Better Auth, WorkOS, JWT, OAuth2, Custom)
8
+ * - AuthProviderFactory / AuthProviderRegistry for lazy-loaded provider creation
9
+ * - Auth middleware (token extraction, RBAC, rate limiting)
10
+ * - Session management (memory, Redis)
11
+ * - Auth context (AsyncLocalStorage-based request scoping)
11
12
  */
12
13
  // =============================================================================
13
14
  // ANTHROPIC OAUTH - OAuth 2.0 Authentication
@@ -31,3 +32,30 @@ export { TokenStoreError } from "../types/errors.js";
31
32
  // ACCOUNT POOL - Multi-account rotation with cooldowns
32
33
  // =============================================================================
33
34
  export { AccountPool } from "./accountPool.js";
35
+ // =============================================================================
36
+ // MULTI-PROVIDER AUTH SYSTEM
37
+ // =============================================================================
38
+ // Factory and Registry
39
+ export { AuthProviderFactory, createAuthProvider, } from "./AuthProviderFactory.js";
40
+ export { AuthProviderRegistry } from "./AuthProviderRegistry.js";
41
+ // Unified error factory
42
+ export { AuthError, AuthErrorCodes } from "./errors.js";
43
+ // Base Provider
44
+ export { AuthProviderError, BaseAuthProvider, InMemorySessionStorage, } from "./providers/BaseAuthProvider.js";
45
+ // Provider Implementations
46
+ // NOTE: Concrete provider classes are NOT re-exported here to preserve lazy
47
+ // loading via dynamic imports in AuthProviderFactory. Obtain provider
48
+ // instances through the factory instead:
49
+ // const provider = await AuthProviderFactory.create("auth0", config);
50
+ // Auth Middleware
51
+ export { AuthMiddlewareError, AuthMiddlewareErrorCodes, createAuthMiddleware, createExpressAuthMiddleware, createProtectedMiddleware, createRBACMiddleware, createRequestContext, extractToken, } from "./middleware/AuthMiddleware.js";
52
+ // Rate Limiting Middleware
53
+ export { createAuthenticatedRateLimitMiddleware, createRateLimitByUserMiddleware, createRateLimitStorage, MemoryRateLimitStorage, RedisRateLimitStorage, UserRateLimiter, } from "./middleware/rateLimitByUser.js";
54
+ // Session Management
55
+ export { createSessionStorage, MemorySessionStorage, RedisSessionStorage, SessionManager, } from "./sessionManager.js";
56
+ // Auth Context
57
+ export { AuthContextHolder, createAuthenticatedContext, getAuthContext, getCurrentSession, getCurrentUser, globalAuthContext, hasAllPermissions, hasAnyRole, hasPermission, hasRole, isAuthenticated, requireAuth, requirePermission, requireRole, requireUser, runWithAuthContext, } from "./authContext.js";
58
+ // Request Context
59
+ export { RequestContext, NEUROLINK_RESOURCE_ID_KEY, NEUROLINK_THREAD_ID_KEY, } from "./RequestContext.js";
60
+ // Server Bridge
61
+ export { createAuthValidatorFromProvider } from "./serverBridge.js";
@@ -0,0 +1,181 @@
1
+ /**
2
+ * AuthMiddleware - Authentication and authorization middleware
3
+ *
4
+ * Provides middleware factories for:
5
+ * - Token extraction and validation
6
+ * - User context propagation
7
+ * - RBAC enforcement
8
+ * - Public route handling
9
+ */
10
+ import type { AuthenticatedContext, AuthMiddlewareConfig, AuthRequestContext, AuthUser, RBACMiddlewareConfig, TokenExtractionConfig } from "../../types/authTypes.js";
11
+ /**
12
+ * Auth middleware error codes
13
+ */
14
+ export declare const AuthMiddlewareErrorCodes: {
15
+ readonly MISSING_TOKEN: "AUTH_MIDDLEWARE-001";
16
+ readonly INVALID_TOKEN: "AUTH_MIDDLEWARE-002";
17
+ readonly UNAUTHORIZED: "AUTH_MIDDLEWARE-003";
18
+ readonly FORBIDDEN: "AUTH_MIDDLEWARE-004";
19
+ readonly PROVIDER_ERROR: "AUTH_MIDDLEWARE-005";
20
+ readonly CONFIGURATION_ERROR: "AUTH_MIDDLEWARE-006";
21
+ };
22
+ /**
23
+ * Auth middleware error factory
24
+ */
25
+ export declare const AuthMiddlewareError: {
26
+ codes: {
27
+ readonly MISSING_TOKEN: "AUTH_MIDDLEWARE-001";
28
+ readonly INVALID_TOKEN: "AUTH_MIDDLEWARE-002";
29
+ readonly UNAUTHORIZED: "AUTH_MIDDLEWARE-003";
30
+ readonly FORBIDDEN: "AUTH_MIDDLEWARE-004";
31
+ readonly PROVIDER_ERROR: "AUTH_MIDDLEWARE-005";
32
+ readonly CONFIGURATION_ERROR: "AUTH_MIDDLEWARE-006";
33
+ };
34
+ create: (code: "INVALID_TOKEN" | "MISSING_TOKEN" | "PROVIDER_ERROR" | "CONFIGURATION_ERROR" | "FORBIDDEN" | "UNAUTHORIZED", message: string, options?: {
35
+ retryable?: boolean;
36
+ details?: Record<string, unknown>;
37
+ cause?: Error;
38
+ } | undefined) => import("../../core/infrastructure/baseError.js").NeuroLinkFeatureError;
39
+ };
40
+ /**
41
+ * Minimal request object accepted by {@link createRequestContext}.
42
+ *
43
+ * Avoids `any` for Express/Koa/Hono request objects while remaining
44
+ * compatible with any framework that exposes these standard fields.
45
+ */
46
+ export type IncomingRequest = {
47
+ method?: string;
48
+ url?: string;
49
+ path?: string;
50
+ headers?: Record<string, string | string[] | undefined>;
51
+ cookies?: Record<string, string>;
52
+ query?: Record<string, string | string[] | undefined>;
53
+ body?: unknown;
54
+ ip?: string;
55
+ /** Populated by auth middleware after successful authentication */
56
+ user?: AuthUser;
57
+ /** Populated by auth middleware after successful authentication */
58
+ authContext?: AuthenticatedContext;
59
+ };
60
+ /**
61
+ * Minimal response object for Express-style middleware.
62
+ */
63
+ export type OutgoingResponse = {
64
+ status(code: number): OutgoingResponse;
65
+ json(body: unknown): void;
66
+ };
67
+ /**
68
+ * Middleware handler function type
69
+ */
70
+ export type MiddlewareHandler<TContext = AuthRequestContext> = (context: TContext) => Promise<MiddlewareResult>;
71
+ /**
72
+ * Middleware result
73
+ */
74
+ export type MiddlewareResult = {
75
+ /** Whether to proceed to next handler */
76
+ proceed: boolean;
77
+ /** Updated context (if authenticated) */
78
+ context?: AuthenticatedContext;
79
+ /** Error response if not proceeding */
80
+ error?: {
81
+ statusCode: number;
82
+ message: string;
83
+ code?: string;
84
+ };
85
+ };
86
+ /**
87
+ * Next function for middleware chaining
88
+ */
89
+ export type NextFunction = () => Promise<void>;
90
+ /**
91
+ * Express-style middleware function
92
+ */
93
+ export type ExpressMiddleware = (req: IncomingRequest, res: OutgoingResponse, next: NextFunction) => Promise<void>;
94
+ /**
95
+ * Extract token from request context based on configuration
96
+ */
97
+ export declare function extractToken(context: AuthRequestContext, config?: TokenExtractionConfig): Promise<string | null>;
98
+ /**
99
+ * Create authentication middleware
100
+ *
101
+ * Validates tokens and attaches user context to requests.
102
+ *
103
+ * @example
104
+ * ```typescript
105
+ * const authMiddleware = await createAuthMiddleware({
106
+ * provider: 'auth0',
107
+ * providerConfig: {
108
+ * type: 'auth0',
109
+ * domain: 'your-tenant.auth0.com',
110
+ * clientId: 'your-client-id',
111
+ * },
112
+ * publicRoutes: ['/health', '/public/*'],
113
+ * });
114
+ *
115
+ * // Use in request handler
116
+ * const result = await authMiddleware(requestContext);
117
+ * if (result.proceed) {
118
+ * // Access authenticated context
119
+ * console.log('User:', result.context?.user);
120
+ * } else {
121
+ * // Return error response
122
+ * res.status(result.error.statusCode).json({ error: result.error.message });
123
+ * }
124
+ * ```
125
+ */
126
+ export declare function createAuthMiddleware(config: AuthMiddlewareConfig): Promise<MiddlewareHandler<AuthRequestContext>>;
127
+ /**
128
+ * Create RBAC (Role-Based Access Control) middleware
129
+ *
130
+ * Checks if authenticated user has required roles/permissions.
131
+ *
132
+ * @example
133
+ * ```typescript
134
+ * const rbacMiddleware = createRBACMiddleware({
135
+ * roles: ['admin', 'moderator'],
136
+ * permissions: ['read:users'],
137
+ * });
138
+ *
139
+ * // Use after auth middleware
140
+ * const authResult = await authMiddleware(context);
141
+ * if (authResult.proceed && authResult.context) {
142
+ * const rbacResult = await rbacMiddleware(authResult.context);
143
+ * if (!rbacResult.proceed) {
144
+ * res.status(403).json({ error: rbacResult.error.message });
145
+ * }
146
+ * }
147
+ * ```
148
+ */
149
+ export declare function createRBACMiddleware(config: RBACMiddlewareConfig): MiddlewareHandler<AuthenticatedContext>;
150
+ /**
151
+ * Create combined auth + RBAC middleware
152
+ *
153
+ * Convenience function that combines authentication and authorization.
154
+ *
155
+ * @example
156
+ * ```typescript
157
+ * const protectedMiddleware = await createProtectedMiddleware({
158
+ * auth: {
159
+ * provider: 'auth0',
160
+ * providerConfig: { type: 'auth0', domain: '...', clientId: '...' },
161
+ * },
162
+ * rbac: {
163
+ * roles: ['admin'],
164
+ * },
165
+ * });
166
+ *
167
+ * const result = await protectedMiddleware(context);
168
+ * ```
169
+ */
170
+ export declare function createProtectedMiddleware(config: {
171
+ auth: AuthMiddlewareConfig;
172
+ rbac?: RBACMiddlewareConfig;
173
+ }): Promise<MiddlewareHandler<AuthRequestContext>>;
174
+ /**
175
+ * Create request context from standard request object
176
+ */
177
+ export declare function createRequestContext(req: IncomingRequest): AuthRequestContext;
178
+ /**
179
+ * Create Express-compatible middleware
180
+ */
181
+ export declare function createExpressAuthMiddleware(config: AuthMiddlewareConfig): Promise<ExpressMiddleware>;