@agentuity/auth 0.0.108 → 0.0.110

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 (95) hide show
  1. package/AGENTS.md +82 -28
  2. package/README.md +259 -236
  3. package/dist/agentuity/config.d.ts +2386 -0
  4. package/dist/agentuity/config.d.ts.map +1 -0
  5. package/dist/agentuity/config.js +220 -0
  6. package/dist/agentuity/config.js.map +1 -0
  7. package/dist/agentuity/plugins/api-key.d.ts +152 -0
  8. package/dist/agentuity/plugins/api-key.d.ts.map +1 -0
  9. package/dist/agentuity/plugins/api-key.js +21 -0
  10. package/dist/agentuity/plugins/api-key.js.map +1 -0
  11. package/dist/agentuity/plugins/index.d.ts +23 -0
  12. package/dist/agentuity/plugins/index.d.ts.map +1 -0
  13. package/dist/agentuity/plugins/index.js +10 -0
  14. package/dist/agentuity/plugins/index.js.map +1 -0
  15. package/dist/agentuity/plugins/jwt.d.ts +34 -0
  16. package/dist/agentuity/plugins/jwt.d.ts.map +1 -0
  17. package/dist/agentuity/plugins/jwt.js +11 -0
  18. package/dist/agentuity/plugins/jwt.js.map +1 -0
  19. package/dist/agentuity/plugins/organization.d.ts +355 -0
  20. package/dist/agentuity/plugins/organization.d.ts.map +1 -0
  21. package/dist/agentuity/plugins/organization.js +12 -0
  22. package/dist/agentuity/plugins/organization.js.map +1 -0
  23. package/dist/agentuity/react.d.ts +1375 -0
  24. package/dist/agentuity/react.d.ts.map +1 -0
  25. package/dist/agentuity/react.js +206 -0
  26. package/dist/agentuity/react.js.map +1 -0
  27. package/dist/agentuity/server.d.ts +220 -0
  28. package/dist/agentuity/server.d.ts.map +1 -0
  29. package/dist/agentuity/server.js +505 -0
  30. package/dist/agentuity/server.js.map +1 -0
  31. package/dist/agentuity/types.d.ts +172 -0
  32. package/dist/agentuity/types.d.ts.map +1 -0
  33. package/dist/agentuity/types.js +7 -0
  34. package/dist/agentuity/types.js.map +1 -0
  35. package/dist/index.d.ts +31 -8
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +33 -8
  38. package/dist/index.js.map +1 -1
  39. package/dist/schema.d.ts +2922 -0
  40. package/dist/schema.d.ts.map +1 -0
  41. package/dist/schema.js +223 -0
  42. package/dist/schema.js.map +1 -0
  43. package/dist/types.d.ts +14 -18
  44. package/dist/types.d.ts.map +1 -1
  45. package/dist/types.js +1 -1
  46. package/package.json +15 -39
  47. package/src/agentuity/config.ts +401 -0
  48. package/src/agentuity/plugins/api-key.ts +158 -0
  49. package/src/agentuity/plugins/index.ts +35 -0
  50. package/src/agentuity/plugins/jwt.ts +30 -0
  51. package/src/agentuity/plugins/organization.ts +345 -0
  52. package/src/agentuity/react.tsx +328 -0
  53. package/src/agentuity/server.ts +734 -0
  54. package/src/agentuity/types.ts +201 -0
  55. package/src/index.ts +76 -8
  56. package/src/schema.ts +270 -0
  57. package/src/types.ts +14 -22
  58. package/test/agentuity/config.test.ts +621 -0
  59. package/test/agentuity/server.test.ts +537 -0
  60. package/test/schema.test.ts +147 -0
  61. package/tsconfig.json +3 -2
  62. package/tsconfig.tsbuildinfo +1 -1
  63. package/dist/auth0/client.d.ts +0 -44
  64. package/dist/auth0/client.d.ts.map +0 -1
  65. package/dist/auth0/client.js +0 -79
  66. package/dist/auth0/client.js.map +0 -1
  67. package/dist/auth0/index.d.ts +0 -35
  68. package/dist/auth0/index.d.ts.map +0 -1
  69. package/dist/auth0/index.js +0 -38
  70. package/dist/auth0/index.js.map +0 -1
  71. package/dist/auth0/server.d.ts +0 -91
  72. package/dist/auth0/server.d.ts.map +0 -1
  73. package/dist/auth0/server.js +0 -237
  74. package/dist/auth0/server.js.map +0 -1
  75. package/dist/clerk/client.d.ts +0 -42
  76. package/dist/clerk/client.d.ts.map +0 -1
  77. package/dist/clerk/client.js +0 -65
  78. package/dist/clerk/client.js.map +0 -1
  79. package/dist/clerk/index.d.ts +0 -37
  80. package/dist/clerk/index.d.ts.map +0 -1
  81. package/dist/clerk/index.js +0 -35
  82. package/dist/clerk/index.js.map +0 -1
  83. package/dist/clerk/server.d.ts +0 -55
  84. package/dist/clerk/server.d.ts.map +0 -1
  85. package/dist/clerk/server.js +0 -111
  86. package/dist/clerk/server.js.map +0 -1
  87. package/docs/adding-providers.md +0 -261
  88. package/src/auth0/client.tsx +0 -109
  89. package/src/auth0/index.ts +0 -40
  90. package/src/auth0/server.ts +0 -378
  91. package/src/clerk/client.tsx +0 -86
  92. package/src/clerk/index.ts +0 -37
  93. package/src/clerk/server.ts +0 -168
  94. package/test/clerk-client.test.tsx +0 -21
  95. package/test/clerk-server.test.ts +0 -51
package/AGENTS.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## Package Overview
4
4
 
5
- Authentication helpers for identity providers (Clerk, WorkOS, etc.). Provides React components and Hono middleware.
5
+ First-class authentication for Agentuity projects, powered by BetterAuth. Provides server middleware, React components, and Drizzle schema.
6
6
 
7
7
  ## Commands
8
8
 
@@ -14,50 +14,104 @@ Authentication helpers for identity providers (Clerk, WorkOS, etc.). Provides Re
14
14
  ## Architecture
15
15
 
16
16
  - **Runtime**: Dual-target (browser for client, Bun/Node for server)
17
- - **Dependencies**: `@agentuity/react` (client), `@agentuity/runtime` (server)
18
- - **Peer deps**: Provider SDKs are optional peers
17
+ - **Server**: Hono middleware with OpenTelemetry integration
18
+ - **Client**: React hooks via `@agentuity/react` context
19
+ - **Database**: Drizzle ORM schema with BetterAuth adapters
20
+ - **Engine**: BetterAuth (internal implementation detail)
19
21
 
20
22
  ## Structure
21
23
 
22
24
  ```
23
25
  src/
24
- ├── index.ts # Core type exports
25
- ├── types.ts # AgentuityAuth, AgentuityAuthUser interfaces
26
- └── clerk/ # (or other provider)
27
- ├── index.ts # Re-exports
28
- ├── client.tsx # React component
29
- └── server.ts # Hono middleware
26
+ ├── index.ts # Root package exports (server + client)
27
+ ├── types.ts # Generic AgentuityAuth interface
28
+ ├── schema.ts # Drizzle table definitions and relations
29
+ └── agentuity/
30
+ ├── index.tsx # Main exports (re-exports from submodules)
31
+ ├── config.ts # createAuth factory
32
+ ├── server.ts # Hono middleware (session, API key)
33
+ ├── client.tsx # AuthProvider React component
34
+ ├── react.ts # createAuthClient factory
35
+ └── types.ts # Agentuity-specific types (org, API key context)
30
36
  ```
31
37
 
32
38
  ## Code Conventions
33
39
 
34
- - **Naming**: `Agentuity<Provider>` for components, `createMiddleware()` for server
35
- - **Type safety**: Use generics `AgentuityAuth<TUser, TRaw>`
36
- - **Tree shaking**: Import paths like `@agentuity/auth/clerk`
37
- - **Env vars**: Support `AGENTUITY_PUBLIC_<PROVIDER>_*` and standard provider names
40
+ - **Naming**: All public APIs use "AgentuityAuth" prefix, not "BetterAuth"
41
+ - **Env vars**: Prefer `AGENTUITY_AUTH_SECRET` over `BETTER_AUTH_SECRET`
42
+ - **Defaults**: basePath `/api/auth`, emailAndPassword enabled
43
+ - **React imports**: All React code from `@agentuity/auth/react` (AuthProvider, createAuthClient, useAuth)
38
44
 
39
45
  ## Key Patterns
40
46
 
47
+ ### Server Setup
48
+
49
+ ```typescript
50
+ import { createAuth, createSessionMiddleware, mountAuthRoutes } from '@agentuity/auth';
51
+
52
+ const auth = createAuth({
53
+ connectionString: process.env.DATABASE_URL,
54
+ });
55
+
56
+ api.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth));
57
+ api.use('/api/*', createSessionMiddleware(auth));
58
+ ```
59
+
60
+ ### Agent Handler (ctx.auth is native)
61
+
41
62
  ```typescript
42
- // Hono module augmentation (required per provider)
43
- declare module 'hono' {
44
- interface ContextVariableMap {
45
- auth: AgentuityAuth<User, ClerkJWTPayload>;
46
- }
47
- }
48
-
49
- // Error handling - include setup instructions
50
- if (!secretKey) {
51
- console.error('[Provider] SECRET_KEY not set. Add to .env');
52
- throw new Error('Provider secret key required');
53
- }
63
+ export default createAgent('my-agent', {
64
+ handler: async (ctx, input) => {
65
+ if (!ctx.auth) return { error: 'Unauthorized' };
66
+ return { userId: ctx.auth.user.id };
67
+ },
68
+ });
54
69
  ```
55
70
 
56
- ## Adding New Providers
71
+ ### React Client
72
+
73
+ ```tsx
74
+ import { createAuthClient, AuthProvider } from '@agentuity/auth/react';
75
+
76
+ const authClient = createAuthClient();
77
+
78
+ <AuthProvider authClient={authClient}>
79
+ <App />
80
+ </AuthProvider>;
81
+ ```
82
+
83
+ ## Important Types
84
+
85
+ - `AuthInterface` - Full auth on `c.var.auth` (user + org + API key helpers)
86
+ - `AuthContext` - Auth context with user, session, org
87
+ - `AuthOrgContext` - Organization with role and membership
88
+ - `AuthApiKeyContext` - API key with permissions
89
+ - `AuthMethod` - 'session' | 'api-key' | 'bearer'
90
+
91
+ ## Database Options
92
+
93
+ 1. **connectionString** - Simplest: we create Bun SQL connection + drizzle internally
94
+ 2. **database** - Bring your own drizzle adapter or other BetterAuth adapter
95
+ 3. **@agentuity/auth/schema** - Export for merging with app schema
96
+
97
+ ## Default Plugins
98
+
99
+ - `organization` - Multi-tenancy
100
+ - `jwt` - Token generation
101
+ - `bearer` - Bearer token auth
102
+ - `apiKey` - API key management
103
+
104
+ Use `skipDefaultPlugins: true` to disable.
105
+
106
+ ## Testing
57
107
 
58
- See [docs/adding-providers.md](docs/adding-providers.md) for full implementation guide.
108
+ - Use `bun test` for all tests
109
+ - Mock auth context in route tests
110
+ - Test both session and API key middleware
111
+ - When running tests, prefer using a subagent (Task tool) to avoid context bloat
59
112
 
60
113
  ## Publishing
61
114
 
62
115
  1. Run build, typecheck, test
63
- 2. Publish **after** `@agentuity/react` and `@agentuity/runtime`
116
+ 2. Publish **after** `@agentuity/core` and `@agentuity/react`
117
+ 3. `@agentuity/runtime` depends on this package for types