@agentuity/auth 0.0.109 → 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
@@ -0,0 +1,505 @@
1
+ /**
2
+ * Auth Hono middleware and handlers for @agentuity/auth.
3
+ *
4
+ * Provides session and API key authentication middleware for Hono applications.
5
+ *
6
+ * @module agentuity/server
7
+ */
8
+ import { context, trace, SpanStatusCode } from '@opentelemetry/api';
9
+ // =============================================================================
10
+ // Helpers
11
+ // =============================================================================
12
+ /**
13
+ * Derive minimal org context from session.
14
+ * Full org data is fetched lazily via getOrg().
15
+ */
16
+ function deriveOrgContext(session) {
17
+ if (!session?.activeOrganizationId)
18
+ return null;
19
+ return { id: session.activeOrganizationId };
20
+ }
21
+ /**
22
+ * Extract API key from request headers.
23
+ * Checks x-agentuity-auth-api-key header and Authorization: ApiKey header.
24
+ */
25
+ function getApiKeyFromRequest(c) {
26
+ const customHeader = c.req.header('x-agentuity-auth-api-key') ?? c.req.header('X-Agentuity-Auth-Api-Key');
27
+ if (customHeader)
28
+ return customHeader.trim();
29
+ const authHeader = c.req.header('Authorization');
30
+ if (!authHeader)
31
+ return null;
32
+ const lower = authHeader.toLowerCase();
33
+ if (lower.startsWith('apikey ')) {
34
+ return authHeader.slice('apikey '.length).trim() || null;
35
+ }
36
+ return null;
37
+ }
38
+ /**
39
+ * Determine auth method from request headers.
40
+ */
41
+ function getAuthMethod(c) {
42
+ const apiKey = getApiKeyFromRequest(c);
43
+ if (apiKey)
44
+ return 'api-key';
45
+ const authHeader = c.req.header('Authorization');
46
+ if (authHeader?.toLowerCase().startsWith('bearer '))
47
+ return 'bearer';
48
+ return 'session';
49
+ }
50
+ function buildAuthInterface(c, auth, user, session, org, authMethod, apiKeyContext) {
51
+ let cachedFullOrg = undefined;
52
+ const permissions = apiKeyContext?.permissions ?? null;
53
+ return {
54
+ async getUser() {
55
+ return user;
56
+ },
57
+ async getToken() {
58
+ const header = c.req.header('Authorization');
59
+ if (!header)
60
+ return null;
61
+ return header.replace(/^Bearer\s+/i, '') || null;
62
+ },
63
+ raw: {
64
+ user,
65
+ session,
66
+ org,
67
+ },
68
+ org,
69
+ async getOrg() {
70
+ if (cachedFullOrg !== undefined) {
71
+ return cachedFullOrg;
72
+ }
73
+ if (!org) {
74
+ cachedFullOrg = null;
75
+ return null;
76
+ }
77
+ // Fetch full org data lazily
78
+ try {
79
+ const fullOrg = await auth.api.getFullOrganization({
80
+ headers: c.req.raw.headers,
81
+ });
82
+ if (!fullOrg) {
83
+ cachedFullOrg = null;
84
+ return null;
85
+ }
86
+ // Find the current user's role in the org
87
+ const members = (fullOrg.members ?? []);
88
+ const currentMember = members.find((m) => m.userId === user.id);
89
+ cachedFullOrg = {
90
+ id: fullOrg.id,
91
+ slug: fullOrg.slug ?? null,
92
+ name: fullOrg.name ?? null,
93
+ role: currentMember?.role ?? null,
94
+ memberId: currentMember?.id ?? null,
95
+ metadata: fullOrg.metadata ?? null,
96
+ };
97
+ return cachedFullOrg;
98
+ }
99
+ catch {
100
+ cachedFullOrg = org;
101
+ return org;
102
+ }
103
+ },
104
+ async getOrgRole() {
105
+ const org = await this.getOrg();
106
+ return org?.role ?? null;
107
+ },
108
+ async hasOrgRole(...roles) {
109
+ const role = await this.getOrgRole();
110
+ return !!role && roles.includes(role);
111
+ },
112
+ // API key helpers
113
+ authMethod,
114
+ apiKey: apiKeyContext,
115
+ hasPermission(resource, ...actions) {
116
+ if (!permissions)
117
+ return false;
118
+ const resourcePerms = permissions[resource] ?? [];
119
+ if (actions.length === 0) {
120
+ return resourcePerms.length > 0;
121
+ }
122
+ return actions.every((action) => resourcePerms.includes(action) || resourcePerms.includes('*'));
123
+ },
124
+ };
125
+ }
126
+ /**
127
+ * Build a null/anonymous auth wrapper for optional middleware.
128
+ */
129
+ function buildAnonymousAuth() {
130
+ return {
131
+ async getUser() {
132
+ throw new Error('Not authenticated');
133
+ },
134
+ async getToken() {
135
+ return null;
136
+ },
137
+ raw: {
138
+ user: null,
139
+ session: null,
140
+ org: null,
141
+ },
142
+ org: null,
143
+ async getOrg() {
144
+ return null;
145
+ },
146
+ async getOrgRole() {
147
+ return null;
148
+ },
149
+ async hasOrgRole() {
150
+ return false;
151
+ },
152
+ authMethod: 'session',
153
+ apiKey: null,
154
+ hasPermission() {
155
+ return false;
156
+ },
157
+ };
158
+ }
159
+ // =============================================================================
160
+ // Session Middleware
161
+ // =============================================================================
162
+ /**
163
+ * Create Hono middleware that validates sessions.
164
+ *
165
+ * Sets context variables (`user`, `session`, `org`, `auth`) for authenticated requests.
166
+ *
167
+ * OpenTelemetry spans are automatically enriched with auth attributes:
168
+ * - `auth.user.id` - User ID (always included)
169
+ * - `auth.user.email` - User email (included by default, opt-out via `otelSpans.email: false`)
170
+ * - `auth.method` - 'session' or 'bearer' (always included)
171
+ * - `auth.provider` - 'Auth' (always included)
172
+ * - `auth.org.id` - Active organization ID (always included if set)
173
+ * - `auth.org.name` - Organization name (included by default, opt-out via `otelSpans.orgName: false`)
174
+ *
175
+ * @example Basic usage
176
+ * ```typescript
177
+ * import { createSessionMiddleware } from '@agentuity/auth';
178
+ * import { auth } from './auth';
179
+ *
180
+ * const app = new Hono();
181
+ * app.use('/api/*', createSessionMiddleware(auth));
182
+ *
183
+ * app.get('/api/me', (c) => {
184
+ * const user = c.var.user;
185
+ * if (!user) return c.json({ error: 'Unauthorized' }, 401);
186
+ * return c.json({ id: user.id });
187
+ * });
188
+ * ```
189
+ *
190
+ * @example Using auth wrapper with org role check
191
+ * ```typescript
192
+ * app.get('/api/admin', createSessionMiddleware(auth, { hasOrgRole: ['admin', 'owner'] }), async (c) => {
193
+ * const user = await c.var.auth.getUser();
194
+ * return c.json({ id: user.id, message: 'Welcome admin!' });
195
+ * });
196
+ * ```
197
+ */
198
+ export function createSessionMiddleware(auth, options = {}) {
199
+ const { optional = false, otelSpans = {}, hasOrgRole } = options;
200
+ const includeEmail = otelSpans.email !== false;
201
+ const includeOrgName = otelSpans.orgName !== false;
202
+ return async (c, next) => {
203
+ const span = trace.getSpan(context.active());
204
+ try {
205
+ const result = await auth.api.getSession({
206
+ headers: c.req.raw.headers,
207
+ });
208
+ if (!result) {
209
+ if (optional) {
210
+ c.set('user', null);
211
+ c.set('authSession', null);
212
+ c.set('org', null);
213
+ c.set('auth', buildAnonymousAuth());
214
+ span?.addEvent('auth.anonymous');
215
+ await next();
216
+ return;
217
+ }
218
+ span?.addEvent('auth.unauthorized', { reason: 'no_session' });
219
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'Unauthorized' });
220
+ return c.json({ error: 'Unauthorized' }, 401);
221
+ }
222
+ // Cast to full types - BetterAuth returns complete objects at runtime
223
+ const user = result.user;
224
+ const session = result.session;
225
+ const org = deriveOrgContext(session);
226
+ const authMethod = getAuthMethod(c);
227
+ c.set('user', user);
228
+ c.set('authSession', session);
229
+ c.set('org', org);
230
+ if (span) {
231
+ span.setAttributes({
232
+ 'auth.user.id': user.id ?? '',
233
+ 'auth.method': authMethod,
234
+ 'auth.provider': 'AgentuityAuth',
235
+ });
236
+ if (includeEmail && user.email) {
237
+ span.setAttribute('auth.user.email', user.email);
238
+ }
239
+ if (org) {
240
+ span.setAttribute('auth.org.id', org.id);
241
+ if (includeOrgName && org.name) {
242
+ span.setAttribute('auth.org.name', org.name);
243
+ }
244
+ }
245
+ }
246
+ c.set('auth', buildAuthInterface(c, auth, user, session, org, authMethod, null));
247
+ // Enforce org role if requested
248
+ if (hasOrgRole) {
249
+ const requiredRoles = Array.isArray(hasOrgRole) ? hasOrgRole : [hasOrgRole];
250
+ const hasRole = await c.var.auth.hasOrgRole(...requiredRoles);
251
+ if (!hasRole) {
252
+ span?.addEvent('auth.forbidden', {
253
+ reason: 'missing_org_role',
254
+ required_roles: requiredRoles,
255
+ });
256
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'Forbidden' });
257
+ return c.json({ error: 'Forbidden: insufficient organization role' }, 403);
258
+ }
259
+ }
260
+ await next();
261
+ }
262
+ catch (error) {
263
+ console.error('[Agentuity Auth] Session validation failed:', error);
264
+ span?.recordException(error);
265
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'Auth validation failed' });
266
+ if (optional) {
267
+ c.set('user', null);
268
+ c.set('authSession', null);
269
+ c.set('org', null);
270
+ c.set('auth', buildAnonymousAuth());
271
+ await next();
272
+ return;
273
+ }
274
+ return c.json({ error: 'Unauthorized' }, 401);
275
+ }
276
+ };
277
+ }
278
+ // =============================================================================
279
+ // API Key Middleware
280
+ // =============================================================================
281
+ /**
282
+ * Create Hono middleware that validates API keys.
283
+ *
284
+ * This middleware ONLY accepts API key authentication via:
285
+ * - `x-agentuity-auth-api-key` header (preferred)
286
+ * - `Authorization: ApiKey <key>` header
287
+ *
288
+ * It does NOT use sessions. For routes that accept both session and API key,
289
+ * compose with createSessionMiddleware using `{ optional: true }`.
290
+ *
291
+ * @example API key only route with permission check
292
+ * ```typescript
293
+ * import { createApiKeyMiddleware } from '@agentuity/auth';
294
+ *
295
+ * app.post('/webhooks/*', createApiKeyMiddleware(auth, {
296
+ * hasPermission: { webhook: 'write' }
297
+ * }));
298
+ *
299
+ * app.post('/webhooks/github', async (c) => {
300
+ * // Permission already verified by middleware
301
+ * return c.json({ success: true });
302
+ * });
303
+ * ```
304
+ *
305
+ * @example Either session OR API key (compose with optional)
306
+ * ```typescript
307
+ * app.use('/api/*', createSessionMiddleware(auth, { optional: true }));
308
+ * app.use('/api/*', createApiKeyMiddleware(auth, { optional: true }));
309
+ *
310
+ * app.get('/api/data', async (c) => {
311
+ * // Works with session OR API key
312
+ * if (!c.var.user) return c.json({ error: 'Unauthorized' }, 401);
313
+ * return c.json({ data: '...' });
314
+ * });
315
+ * ```
316
+ */
317
+ export function createApiKeyMiddleware(auth, options = {}) {
318
+ const { optional = false, otelSpans = {}, hasPermission } = options;
319
+ const includeEmail = otelSpans.email !== false;
320
+ return async (c, next) => {
321
+ const span = trace.getSpan(context.active());
322
+ const apiKeyToken = getApiKeyFromRequest(c);
323
+ if (!apiKeyToken) {
324
+ if (optional) {
325
+ await next();
326
+ return;
327
+ }
328
+ span?.addEvent('auth.unauthorized', { reason: 'no_api_key' });
329
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'Unauthorized' });
330
+ return c.json({ error: 'Unauthorized: API key required' }, 401);
331
+ }
332
+ try {
333
+ const result = await auth.api.verifyApiKey({
334
+ body: { key: apiKeyToken },
335
+ });
336
+ if (!result.valid || !result.key) {
337
+ if (optional) {
338
+ await next();
339
+ return;
340
+ }
341
+ span?.addEvent('auth.unauthorized', { reason: 'invalid_api_key' });
342
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'Unauthorized' });
343
+ return c.json({ error: 'Unauthorized: Invalid API key' }, 401);
344
+ }
345
+ const keyData = result.key;
346
+ const userId = keyData.userId;
347
+ const apiKeyContext = {
348
+ id: keyData.id,
349
+ name: keyData.name ?? null,
350
+ permissions: keyData.permissions ?? {},
351
+ userId: userId ?? null,
352
+ };
353
+ let user = null;
354
+ if (userId) {
355
+ try {
356
+ // NOTE: BetterAuth's API key plugin supports resolving a user by ID via
357
+ // `auth.api.getSession({ headers: { 'x-user-id': ... } })` without cookies.
358
+ // The API key itself is the primary authenticator; this call is only
359
+ // used to hydrate the user object for convenience (and is allowed to fail).
360
+ const sessionResult = await auth.api.getSession({
361
+ headers: new Headers({ 'x-user-id': userId }),
362
+ });
363
+ if (sessionResult?.user) {
364
+ // Cast to full type - BetterAuth returns complete objects at runtime
365
+ user = sessionResult.user;
366
+ }
367
+ }
368
+ catch {
369
+ // User fetch failed, continue with null user
370
+ }
371
+ }
372
+ c.set('user', user);
373
+ c.set('authSession', null);
374
+ c.set('org', null);
375
+ if (span) {
376
+ span.setAttributes({
377
+ 'auth.method': 'api-key',
378
+ 'auth.provider': 'AgentuityAuth',
379
+ 'auth.api_key.id': apiKeyContext.id,
380
+ });
381
+ if (user?.id) {
382
+ span.setAttribute('auth.user.id', user.id);
383
+ }
384
+ if (includeEmail && user?.email) {
385
+ span.setAttribute('auth.user.email', user.email);
386
+ }
387
+ }
388
+ if (user) {
389
+ c.set('auth', buildAuthInterface(c, auth, user, null, null, 'api-key', apiKeyContext));
390
+ }
391
+ else {
392
+ const anonAuth = buildAnonymousAuth();
393
+ c.set('auth', {
394
+ ...anonAuth,
395
+ authMethod: 'api-key',
396
+ apiKey: apiKeyContext,
397
+ hasPermission(resource, ...actions) {
398
+ const perms = apiKeyContext.permissions[resource] ?? [];
399
+ if (actions.length === 0)
400
+ return perms.length > 0;
401
+ return actions.every((a) => perms.includes(a) || perms.includes('*'));
402
+ },
403
+ });
404
+ }
405
+ // Enforce permissions if requested
406
+ if (hasPermission) {
407
+ for (const [resource, actions] of Object.entries(hasPermission)) {
408
+ const actionList = Array.isArray(actions) ? actions : [actions];
409
+ const hasPerm = c.var.auth.hasPermission(resource, ...actionList);
410
+ if (!hasPerm) {
411
+ span?.addEvent('auth.forbidden', {
412
+ reason: 'missing_permission',
413
+ resource,
414
+ actions: actionList,
415
+ });
416
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'Forbidden' });
417
+ return c.json({ error: 'Forbidden: insufficient API key permissions' }, 403);
418
+ }
419
+ }
420
+ }
421
+ await next();
422
+ }
423
+ catch (error) {
424
+ console.error('[Agentuity Auth] API key validation failed:', error);
425
+ span?.recordException(error);
426
+ span?.setStatus({ code: SpanStatusCode.ERROR, message: 'API key validation failed' });
427
+ if (optional) {
428
+ await next();
429
+ return;
430
+ }
431
+ return c.json({ error: 'Unauthorized: API key validation failed' }, 401);
432
+ }
433
+ };
434
+ }
435
+ // =============================================================================
436
+ // Auth Handler
437
+ // =============================================================================
438
+ /**
439
+ * Default headers to forward from BetterAuth responses.
440
+ * This prevents unintended headers from leaking through while preserving auth-essential ones.
441
+ */
442
+ const DEFAULT_FORWARDED_HEADERS = [
443
+ 'set-cookie',
444
+ 'content-type',
445
+ 'location',
446
+ 'cache-control',
447
+ 'pragma',
448
+ 'expires',
449
+ 'vary',
450
+ 'etag',
451
+ 'last-modified',
452
+ ];
453
+ /**
454
+ * Mount auth routes with proper cookie handling and header filtering.
455
+ *
456
+ * This wrapper handles cookie merging between auth responses and other middleware.
457
+ * It ensures both session cookies AND other cookies (like thread cookies)
458
+ * are preserved while preventing unintended headers from leaking through.
459
+ *
460
+ * @example Basic usage
461
+ * ```typescript
462
+ * import { mountAuthRoutes } from '@agentuity/auth';
463
+ * import { auth } from './auth';
464
+ *
465
+ * const api = createRouter();
466
+ *
467
+ * // Mount all auth routes (sign-in, sign-up, sign-out, session, etc.)
468
+ * api.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth));
469
+ * ```
470
+ *
471
+ * @example With custom header allowlist
472
+ * ```typescript
473
+ * api.on(['GET', 'POST'], '/api/auth/*', mountAuthRoutes(auth, {
474
+ * allowList: ['set-cookie', 'content-type', 'location', 'x-custom-header']
475
+ * }));
476
+ * ```
477
+ */
478
+ export function mountAuthRoutes(auth, options = {}) {
479
+ const allowList = new Set((options.allowList ?? DEFAULT_FORWARDED_HEADERS).map((h) => h.toLowerCase()));
480
+ // Always ensure set-cookie is in the allowlist
481
+ allowList.add('set-cookie');
482
+ return async (c) => {
483
+ const response = await auth.handler(c.req.raw);
484
+ response.headers.forEach((value, key) => {
485
+ const lower = key.toLowerCase();
486
+ // Only forward headers in the allowlist
487
+ if (!allowList.has(lower)) {
488
+ return;
489
+ }
490
+ if (lower === 'set-cookie') {
491
+ // Preserve existing cookies (e.g., Agentuity thread cookies)
492
+ c.header('set-cookie', value, { append: true });
493
+ }
494
+ else {
495
+ c.header(key, value);
496
+ }
497
+ });
498
+ const body = await response.text();
499
+ return new Response(body, {
500
+ status: response.status,
501
+ headers: c.res.headers,
502
+ });
503
+ };
504
+ }
505
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/agentuity/server.ts"],"names":[],"mappings":"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"}